Deploy to GitHub pages
diff --git a/.lock b/.lock
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.lock
diff --git a/CNAME b/CNAME
new file mode 100644
index 0000000..c78b10a
--- /dev/null
+++ b/CNAME
@@ -0,0 +1 @@
+docs.quic.tech
\ No newline at end of file
diff --git a/crates.js b/crates.js
new file mode 100644
index 0000000..459de46
--- /dev/null
+++ b/crates.js
@@ -0,0 +1 @@
+window.ALL_CRATES = ["octets","qlog","quiche","quiche_apps","quiche_client","quiche_server"];
\ No newline at end of file
diff --git a/help.html b/help.html
new file mode 100644
index 0000000..1d043a3
--- /dev/null
+++ b/help.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Documentation for Rustdoc"><title>Help</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/${f}">`).join(""))</script><link rel="stylesheet" href="./static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="./static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="./" data-static-root-path="./static.files/" data-current-crate="quiche_server" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="./static.files/storage-e32f0c247825364d.js"></script><script defer src="./static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="./static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="./static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="./static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod sys"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button><a class="logo-container" href="./index.html"><img class="rust-logo" src="./static.files/rust-logo-151179464ae7ed46.svg" alt=""></a></nav><nav class="sidebar"><div class="sidebar-crate"><a class="logo-container" href="./index.html"><img class="rust-logo" src="./static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2><a href="./index.html">Rustdoc</a><span class="version">1.79.0-nightly</span></h2></div><div class="version">(0d8b3346a 2024-04-14)</div><h2 class="location">Help</h2><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="./quiche_server/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="./help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="./settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Rustdoc help</h1><span class="out-of-band"><a id="back" href="javascript:void(0)" onclick="history.back();">Back</a></span></div><noscript><section><p>You need to enable JavaScript to use keyboard commands or search.</p><p>For more information, browse the <a href="https://doc.rust-lang.org/rustdoc/">rustdoc handbook</a>.</p></section></noscript></section></div></main></body></html>
\ No newline at end of file
diff --git a/octets/all.html b/octets/all.html
new file mode 100644
index 0000000..d2b9e53
--- /dev/null
+++ b/octets/all.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="octets" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod sys"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../octets/index.html">octets</a><span class="version">0.3.0</span></h2></div><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#functions">Functions</a></li><li><a href="#types">Type Aliases</a></li></ul></section></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../octets/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><h1>List of all items</h1><h3 id="structs">Structs</h3><ul class="all-items"><li><a href="struct.BufferTooShortError.html">BufferTooShortError</a></li><li><a href="struct.Octets.html">Octets</a></li><li><a href="struct.OctetsMut.html">OctetsMut</a></li></ul><h3 id="functions">Functions</h3><ul class="all-items"><li><a href="fn.varint_len.html">varint_len</a></li><li><a href="fn.varint_parse_len.html">varint_parse_len</a></li></ul><h3 id="types">Type Aliases</h3><ul class="all-items"><li><a href="type.Result.html">Result</a></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/octets/fn.varint_len.html b/octets/fn.varint_len.html
new file mode 100644
index 0000000..94d174f
--- /dev/null
+++ b/octets/fn.varint_len.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Returns how many bytes it would take to encode `v` as a variable-length integer."><title>varint_len in octets - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="octets" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../octets/index.html">octets</a><span class="version">0.3.0</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../octets/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="index.html">octets</a>::<wbr><a class="fn" href="#">varint_len</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/octets/lib.rs.html#669-681">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub const fn varint_len(v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Returns how many bytes it would take to encode <code>v</code> as a variable-length
+integer.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/octets/fn.varint_parse_len.html b/octets/fn.varint_parse_len.html
new file mode 100644
index 0000000..d76865e
--- /dev/null
+++ b/octets/fn.varint_parse_len.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Returns how long the variable-length integer is, given its first byte."><title>varint_parse_len in octets - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="octets" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../octets/index.html">octets</a><span class="version">0.3.0</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../octets/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="index.html">octets</a>::<wbr><a class="fn" href="#">varint_parse_len</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/octets/lib.rs.html#684-692">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub const fn varint_parse_len(first: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Returns how long the variable-length integer is, given its first byte.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/octets/index.html b/octets/index.html
new file mode 100644
index 0000000..3d138b0
--- /dev/null
+++ b/octets/index.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `octets` crate."><title>octets - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="octets" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="../crates.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../octets/index.html">octets</a><span class="version">0.3.0</span></h2></div><div class="sidebar-elems"><ul class="block"><li><a id="all-types" href="all.html">All Items</a></li></ul><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#functions">Functions</a></li><li><a href="#types">Type Aliases</a></li></ul></section></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../octets/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Crate <a class="mod" href="#">octets</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/octets/lib.rs.html#27-1284">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a></div><div class="desc docblock-short">An error indicating that the provided <a href="struct.OctetsMut.html"><code>OctetsMut</code></a> is not big enough.</div></li><li><div class="item-name"><a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a></div><div class="desc docblock-short">A zero-copy immutable byte buffer.</div></li><li><div class="item-name"><a class="struct" href="struct.OctetsMut.html" title="struct octets::OctetsMut">OctetsMut</a></div><div class="desc docblock-short">A zero-copy mutable byte buffer.</div></li></ul><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="fn" href="fn.varint_len.html" title="fn octets::varint_len">varint_len</a></div><div class="desc docblock-short">Returns how many bytes it would take to encode <code>v</code> as a variable-length
+integer.</div></li><li><div class="item-name"><a class="fn" href="fn.varint_parse_len.html" title="fn octets::varint_parse_len">varint_parse_len</a></div><div class="desc docblock-short">Returns how long the variable-length integer is, given its first byte.</div></li></ul><h2 id="types" class="section-header">Type Aliases<a href="#types" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="type" href="type.Result.html" title="type octets::Result">Result</a></div><div class="desc docblock-short">A specialized <a href="https://doc.rust-lang.org/std/result/enum.Result.html"><code>Result</code></a> type for <a href="struct.OctetsMut.html"><code>OctetsMut</code></a> operations.</div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/octets/sidebar-items.js b/octets/sidebar-items.js
new file mode 100644
index 0000000..b382d50
--- /dev/null
+++ b/octets/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"fn":["varint_len","varint_parse_len"],"struct":["BufferTooShortError","Octets","OctetsMut"],"type":["Result"]};
\ No newline at end of file
diff --git a/octets/struct.BufferTooShortError.html b/octets/struct.BufferTooShortError.html
new file mode 100644
index 0000000..3e1e824
--- /dev/null
+++ b/octets/struct.BufferTooShortError.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An error indicating that the provided `OctetsMut` is not big enough."><title>BufferTooShortError in octets - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="octets" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../octets/index.html">octets</a><span class="version">0.3.0</span></h2></div><h2 class="location"><a href="#">BufferTooShortError</a></h2><div class="sidebar-elems"><section><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-BufferTooShortError">Clone</a></li><li><a href="#impl-Copy-for-BufferTooShortError">Copy</a></li><li><a href="#impl-Debug-for-BufferTooShortError">Debug</a></li><li><a href="#impl-Display-for-BufferTooShortError">Display</a></li><li><a href="#impl-Eq-for-BufferTooShortError">Eq</a></li><li><a href="#impl-Error-for-BufferTooShortError">Error</a></li><li><a href="#impl-PartialEq-for-BufferTooShortError">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-BufferTooShortError">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-BufferTooShortError">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-BufferTooShortError">RefUnwindSafe</a></li><li><a href="#impl-Send-for-BufferTooShortError">Send</a></li><li><a href="#impl-Sync-for-BufferTooShortError">Sync</a></li><li><a href="#impl-Unpin-for-BufferTooShortError">Unpin</a></li><li><a href="#impl-UnwindSafe-for-BufferTooShortError">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-ToString-for-T">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate octets</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../octets/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">octets</a>::<wbr><a class="struct" href="#">BufferTooShortError</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/octets/lib.rs.html#41">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct BufferTooShortError;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An error indicating that the provided <a href="struct.OctetsMut.html"><code>OctetsMut</code></a> is not big enough.</p>
+</div></details><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-BufferTooShortError" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#40">source</a><a href="#impl-Clone-for-BufferTooShortError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/octets/lib.rs.html#40">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-BufferTooShortError" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#40">source</a><a href="#impl-Debug-for-BufferTooShortError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/octets/lib.rs.html#40">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Display-for-BufferTooShortError" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#43-47">source</a><a href="#impl-Display-for-BufferTooShortError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl"><a class="src rightside" href="../src/octets/lib.rs.html#44-46">source</a><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Error-for-BufferTooShortError" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#49-53">source</a><a href="#impl-Error-for-BufferTooShortError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> for <a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.source" class="method trait-impl"><a class="src rightside" href="../src/octets/lib.rs.html#50-52">source</a><a href="#method.source" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source" class="fn">source</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + 'static)&gt;</h4></section></summary><div class='docblock'>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.description" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#110">source</a></span><a href="#method.description" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description" class="fn">description</a>(&amp;self) -&gt; &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.42.0: use the Display impl or to_string()</span></div></span><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.cause" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#120">source</a></span><a href="#method.cause" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.cause" class="fn">cause</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a>&gt;</h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.33.0: replaced by Error::source, which can support downcasting</span></div></span></details><details class="toggle method-toggle" open><summary><section id="method.provide" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#184">source</a><a href="#method.provide" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide" class="fn">provide</a>&lt;'a&gt;(&amp;'a self, request: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/error/struct.Request.html" title="struct core::error::Request">Request</a>&lt;'a&gt;)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>error_generic_member_access</code>)</span></div></span><div class='docblock'>Provides type based access to context intended for error reports. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-BufferTooShortError" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#40">source</a><a href="#impl-PartialEq-for-BufferTooShortError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/octets/lib.rs.html#40">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Copy-for-BufferTooShortError" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#40">source</a><a href="#impl-Copy-for-BufferTooShortError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a></h3></section><section id="impl-Eq-for-BufferTooShortError" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#40">source</a><a href="#impl-Eq-for-BufferTooShortError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a></h3></section><section id="impl-StructuralPartialEq-for-BufferTooShortError" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#40">source</a><a href="#impl-StructuralPartialEq-for-BufferTooShortError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-BufferTooShortError" class="impl"><a href="#impl-Freeze-for-BufferTooShortError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a></h3></section><section id="impl-RefUnwindSafe-for-BufferTooShortError" class="impl"><a href="#impl-RefUnwindSafe-for-BufferTooShortError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a></h3></section><section id="impl-Send-for-BufferTooShortError" class="impl"><a href="#impl-Send-for-BufferTooShortError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a></h3></section><section id="impl-Sync-for-BufferTooShortError" class="impl"><a href="#impl-Sync-for-BufferTooShortError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a></h3></section><section id="impl-Unpin-for-BufferTooShortError" class="impl"><a href="#impl-Unpin-for-BufferTooShortError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a></h3></section><section id="impl-UnwindSafe-for-BufferTooShortError" class="impl"><a href="#impl-UnwindSafe-for-BufferTooShortError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToString-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2546">source</a><a href="#impl-ToString-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2552">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/octets/struct.Octets.html b/octets/struct.Octets.html
new file mode 100644
index 0000000..554ef8c
--- /dev/null
+++ b/octets/struct.Octets.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A zero-copy immutable byte buffer."><title>Octets in octets - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="octets" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../octets/index.html">octets</a><span class="version">0.3.0</span></h2></div><h2 class="location"><a href="#">Octets</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.buf">buf</a></li><li><a href="#method.cap">cap</a></li><li><a href="#method.get_bytes">get_bytes</a></li><li><a href="#method.get_bytes_with_u16_length">get_bytes_with_u16_length</a></li><li><a href="#method.get_bytes_with_u8_length">get_bytes_with_u8_length</a></li><li><a href="#method.get_bytes_with_varint_length">get_bytes_with_varint_length</a></li><li><a href="#method.get_u16">get_u16</a></li><li><a href="#method.get_u24">get_u24</a></li><li><a href="#method.get_u32">get_u32</a></li><li><a href="#method.get_u64">get_u64</a></li><li><a href="#method.get_u8">get_u8</a></li><li><a href="#method.get_varint">get_varint</a></li><li><a href="#method.is_empty">is_empty</a></li><li><a href="#method.len">len</a></li><li><a href="#method.off">off</a></li><li><a href="#method.peek_bytes">peek_bytes</a></li><li><a href="#method.peek_u8">peek_u8</a></li><li><a href="#method.skip">skip</a></li><li><a href="#method.slice">slice</a></li><li><a href="#method.slice_last">slice_last</a></li><li><a href="#method.to_vec">to_vec</a></li><li><a href="#method.with_slice">with_slice</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-AsRef%3C%5Bu8%5D%3E-for-Octets%3C'a%3E">AsRef&lt;[u8]&gt;</a></li><li><a href="#impl-Debug-for-Octets%3C'a%3E">Debug</a></li><li><a href="#impl-Eq-for-Octets%3C'a%3E">Eq</a></li><li><a href="#impl-PartialEq-for-Octets%3C'a%3E">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-Octets%3C'a%3E">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Octets%3C'a%3E">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Octets%3C'a%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Octets%3C'a%3E">Send</a></li><li><a href="#impl-Sync-for-Octets%3C'a%3E">Sync</a></li><li><a href="#impl-Unpin-for-Octets%3C'a%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Octets%3C'a%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate octets</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../octets/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">octets</a>::<wbr><a class="struct" href="#">Octets</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/octets/lib.rs.html#122-125">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Octets&lt;'a&gt; { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A zero-copy immutable byte buffer.</p>
+<p><code>Octets</code> wraps an in-memory buffer of bytes and provides utility functions
+for manipulating it. The underlying buffer is provided by the user and is
+not copied when creating an <code>Octets</code>. Operations are panic-free and will
+avoid indexing the buffer past its end.</p>
+<p>Additionally, an offset (initially set to the start of the buffer) is
+incremented as bytes are read from / written to the buffer, to allow for
+sequential operations.</p>
+</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Octets%3C'a%3E" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#127-312">source</a><a href="#impl-Octets%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.with_slice" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#132-134">source</a><h4 class="code-header">pub fn <a href="#method.with_slice" class="fn">with_slice</a>(buf: &amp;'a [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; Self</h4></section></summary><div class="docblock"><p>Creates an <code>Octets</code> from the given slice, without copying.</p>
+<p>Since the <code>Octets</code> is immutable, the input slice needs to be
+immutable.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_u8" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#138-140">source</a><h4 class="code-header">pub fn <a href="#method.get_u8" class="fn">get_u8</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</h4></section></summary><div class="docblock"><p>Reads an unsigned 8-bit integer from the current offset and advances
+the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.peek_u8" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#144-146">source</a><h4 class="code-header">pub fn <a href="#method.peek_u8" class="fn">peek_u8</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</h4></section></summary><div class="docblock"><p>Reads an unsigned 8-bit integer from the current offset without
+advancing the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_u16" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#150-152">source</a><h4 class="code-header">pub fn <a href="#method.get_u16" class="fn">get_u16</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;</h4></section></summary><div class="docblock"><p>Reads an unsigned 16-bit integer in network byte-order from the current
+offset and advances the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_u24" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#156-158">source</a><h4 class="code-header">pub fn <a href="#method.get_u24" class="fn">get_u24</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</h4></section></summary><div class="docblock"><p>Reads an unsigned 24-bit integer in network byte-order from the current
+offset and advances the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_u32" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#162-164">source</a><h4 class="code-header">pub fn <a href="#method.get_u32" class="fn">get_u32</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</h4></section></summary><div class="docblock"><p>Reads an unsigned 32-bit integer in network byte-order from the current
+offset and advances the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_u64" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#168-170">source</a><h4 class="code-header">pub fn <a href="#method.get_u64" class="fn">get_u64</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</h4></section></summary><div class="docblock"><p>Reads an unsigned 64-bit integer in network byte-order from the current
+offset and advances the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_varint" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#174-196">source</a><h4 class="code-header">pub fn <a href="#method.get_varint" class="fn">get_varint</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</h4></section></summary><div class="docblock"><p>Reads an unsigned variable-length integer in network byte-order from
+the current offset and advances the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_bytes" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#200-213">source</a><h4 class="code-header">pub fn <a href="#method.get_bytes" class="fn">get_bytes</a>(&amp;mut self, len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'a&gt;&gt;</h4></section></summary><div class="docblock"><p>Reads <code>len</code> bytes from the current offset without copying and advances
+the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_bytes_with_u8_length" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#217-220">source</a><h4 class="code-header">pub fn <a href="#method.get_bytes_with_u8_length" class="fn">get_bytes_with_u8_length</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'a&gt;&gt;</h4></section></summary><div class="docblock"><p>Reads <code>len</code> bytes from the current offset without copying and advances
+the buffer, where <code>len</code> is an unsigned 8-bit integer prefix.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_bytes_with_u16_length" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#225-228">source</a><h4 class="code-header">pub fn <a href="#method.get_bytes_with_u16_length" class="fn">get_bytes_with_u16_length</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'a&gt;&gt;</h4></section></summary><div class="docblock"><p>Reads <code>len</code> bytes from the current offset without copying and advances
+the buffer, where <code>len</code> is an unsigned 16-bit integer prefix in network
+byte-order.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_bytes_with_varint_length" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#233-236">source</a><h4 class="code-header">pub fn <a href="#method.get_bytes_with_varint_length" class="fn">get_bytes_with_varint_length</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'a&gt;&gt;</h4></section></summary><div class="docblock"><p>Reads <code>len</code> bytes from the current offset without copying and advances
+the buffer, where <code>len</code> is an unsigned variable-length integer prefix
+in network byte-order.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.peek_bytes" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#240-251">source</a><h4 class="code-header">pub fn <a href="#method.peek_bytes" class="fn">peek_bytes</a>(&amp;self, len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'a&gt;&gt;</h4></section></summary><div class="docblock"><p>Reads <code>len</code> bytes from the current offset without copying and without
+advancing the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.slice" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#254-260">source</a><h4 class="code-header">pub fn <a href="#method.slice" class="fn">slice</a>(&amp;self, len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;&amp;'a [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;</h4></section></summary><div class="docblock"><p>Returns a slice of <code>len</code> elements from the current offset.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.slice_last" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#263-270">source</a><h4 class="code-header">pub fn <a href="#method.slice_last" class="fn">slice_last</a>(&amp;self, len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;&amp;'a [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;</h4></section></summary><div class="docblock"><p>Returns a slice of <code>len</code> elements from the end of the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.skip" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#273-281">source</a><h4 class="code-header">pub fn <a href="#method.skip" class="fn">skip</a>(&amp;mut self, skip: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Advances the buffer’s offset.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.cap" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#284-286">source</a><h4 class="code-header">pub fn <a href="#method.cap" class="fn">cap</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the remaining capacity in the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.len" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#289-291">source</a><h4 class="code-header">pub fn <a href="#method.len" class="fn">len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the total length of the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.is_empty" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#294-296">source</a><h4 class="code-header">pub fn <a href="#method.is_empty" class="fn">is_empty</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if the buffer is empty.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.off" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#299-301">source</a><h4 class="code-header">pub fn <a href="#method.off" class="fn">off</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the current offset of the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.buf" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#304-306">source</a><h4 class="code-header">pub fn <a href="#method.buf" class="fn">buf</a>(&amp;self) -&gt; &amp;'a [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;&#39;a [u8]">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns a reference to the internal buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.to_vec" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#309-311">source</a><h4 class="code-header">pub fn <a href="#method.to_vec" class="fn">to_vec</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</h4></section></summary><div class="docblock"><p>Copies the buffer from the current offset into a new <code>Vec&lt;u8&gt;</code>.</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AsRef%3C%5Bu8%5D%3E-for-Octets%3C'a%3E" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#314-318">source</a><a href="#impl-AsRef%3C%5Bu8%5D%3E-for-Octets%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt; for <a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.as_ref" class="method trait-impl"><a class="src rightside" href="../src/octets/lib.rs.html#315-317">source</a><a href="#method.as_ref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html#tymethod.as_ref" class="fn">as_ref</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></summary><div class='docblock'>Converts this type into a shared reference of the (usually inferred) input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Octets%3C'a%3E" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#121">source</a><a href="#impl-Debug-for-Octets%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/octets/lib.rs.html#121">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-Octets%3C'a%3E" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#121">source</a><a href="#impl-PartialEq-for-Octets%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/octets/lib.rs.html#121">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'a&gt;) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-Octets%3C'a%3E" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#121">source</a><a href="#impl-Eq-for-Octets%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'a&gt;</h3></section><section id="impl-StructuralPartialEq-for-Octets%3C'a%3E" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#121">source</a><a href="#impl-StructuralPartialEq-for-Octets%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'a&gt;</h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Octets%3C'a%3E" class="impl"><a href="#impl-Freeze-for-Octets%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'a&gt;</h3></section><section id="impl-RefUnwindSafe-for-Octets%3C'a%3E" class="impl"><a href="#impl-RefUnwindSafe-for-Octets%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'a&gt;</h3></section><section id="impl-Send-for-Octets%3C'a%3E" class="impl"><a href="#impl-Send-for-Octets%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'a&gt;</h3></section><section id="impl-Sync-for-Octets%3C'a%3E" class="impl"><a href="#impl-Sync-for-Octets%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'a&gt;</h3></section><section id="impl-Unpin-for-Octets%3C'a%3E" class="impl"><a href="#impl-Unpin-for-Octets%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'a&gt;</h3></section><section id="impl-UnwindSafe-for-Octets%3C'a%3E" class="impl"><a href="#impl-UnwindSafe-for-Octets%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'a&gt;</h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div><script type="text/json" id="notable-traits-data">{"&'a [u8]":"<h3>Notable traits for <code>&amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</div>","&[u8]":"<h3>Notable traits for <code>&amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</div>"}</script></section></div></main></body></html>
\ No newline at end of file
diff --git a/octets/struct.OctetsMut.html b/octets/struct.OctetsMut.html
new file mode 100644
index 0000000..23193d6
--- /dev/null
+++ b/octets/struct.OctetsMut.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A zero-copy mutable byte buffer."><title>OctetsMut in octets - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="octets" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../octets/index.html">octets</a><span class="version">0.3.0</span></h2></div><h2 class="location"><a href="#">OctetsMut</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.buf">buf</a></li><li><a href="#method.cap">cap</a></li><li><a href="#method.get_bytes">get_bytes</a></li><li><a href="#method.get_bytes_mut">get_bytes_mut</a></li><li><a href="#method.get_bytes_with_u16_length">get_bytes_with_u16_length</a></li><li><a href="#method.get_bytes_with_u8_length">get_bytes_with_u8_length</a></li><li><a href="#method.get_bytes_with_varint_length">get_bytes_with_varint_length</a></li><li><a href="#method.get_u16">get_u16</a></li><li><a href="#method.get_u24">get_u24</a></li><li><a href="#method.get_u32">get_u32</a></li><li><a href="#method.get_u64">get_u64</a></li><li><a href="#method.get_u8">get_u8</a></li><li><a href="#method.get_varint">get_varint</a></li><li><a href="#method.is_empty">is_empty</a></li><li><a href="#method.len">len</a></li><li><a href="#method.off">off</a></li><li><a href="#method.peek_bytes">peek_bytes</a></li><li><a href="#method.peek_bytes_mut">peek_bytes_mut</a></li><li><a href="#method.peek_u8">peek_u8</a></li><li><a href="#method.put_bytes">put_bytes</a></li><li><a href="#method.put_u16">put_u16</a></li><li><a href="#method.put_u24">put_u24</a></li><li><a href="#method.put_u32">put_u32</a></li><li><a href="#method.put_u64">put_u64</a></li><li><a href="#method.put_u8">put_u8</a></li><li><a href="#method.put_varint">put_varint</a></li><li><a href="#method.put_varint_with_len">put_varint_with_len</a></li><li><a href="#method.skip">skip</a></li><li><a href="#method.slice">slice</a></li><li><a href="#method.slice_last">slice_last</a></li><li><a href="#method.split_at">split_at</a></li><li><a href="#method.to_vec">to_vec</a></li><li><a href="#method.with_slice">with_slice</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-AsMut%3C%5Bu8%5D%3E-for-OctetsMut%3C'a%3E">AsMut&lt;[u8]&gt;</a></li><li><a href="#impl-AsRef%3C%5Bu8%5D%3E-for-OctetsMut%3C'a%3E">AsRef&lt;[u8]&gt;</a></li><li><a href="#impl-Debug-for-OctetsMut%3C'a%3E">Debug</a></li><li><a href="#impl-Eq-for-OctetsMut%3C'a%3E">Eq</a></li><li><a href="#impl-PartialEq-for-OctetsMut%3C'a%3E">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-OctetsMut%3C'a%3E">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-UnwindSafe-for-OctetsMut%3C'a%3E">!UnwindSafe</a></li><li><a href="#impl-Freeze-for-OctetsMut%3C'a%3E">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-OctetsMut%3C'a%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-OctetsMut%3C'a%3E">Send</a></li><li><a href="#impl-Sync-for-OctetsMut%3C'a%3E">Sync</a></li><li><a href="#impl-Unpin-for-OctetsMut%3C'a%3E">Unpin</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate octets</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../octets/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">octets</a>::<wbr><a class="struct" href="#">OctetsMut</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/octets/lib.rs.html#324-327">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct OctetsMut&lt;'a&gt; { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A zero-copy mutable byte buffer.</p>
+<p>Like <code>Octets</code> but mutable.</p>
+</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OctetsMut%3C'a%3E" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#329-653">source</a><a href="#impl-OctetsMut%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="struct" href="struct.OctetsMut.html" title="struct octets::OctetsMut">OctetsMut</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.with_slice" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#334-336">source</a><h4 class="code-header">pub fn <a href="#method.with_slice" class="fn">with_slice</a>(buf: &amp;'a mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; Self</h4></section></summary><div class="docblock"><p>Creates an <code>OctetsMut</code> from the given slice, without copying.</p>
+<p>Since there’s no copy, the input slice needs to be mutable to allow
+modifications.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_u8" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#340-342">source</a><h4 class="code-header">pub fn <a href="#method.get_u8" class="fn">get_u8</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</h4></section></summary><div class="docblock"><p>Reads an unsigned 8-bit integer from the current offset and advances
+the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.peek_u8" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#346-348">source</a><h4 class="code-header">pub fn <a href="#method.peek_u8" class="fn">peek_u8</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</h4></section></summary><div class="docblock"><p>Reads an unsigned 8-bit integer from the current offset without
+advancing the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.put_u8" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#352-354">source</a><h4 class="code-header">pub fn <a href="#method.put_u8" class="fn">put_u8</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;&amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;</h4></section></summary><div class="docblock"><p>Writes an unsigned 8-bit integer at the current offset and advances
+the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_u16" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#358-360">source</a><h4 class="code-header">pub fn <a href="#method.get_u16" class="fn">get_u16</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;</h4></section></summary><div class="docblock"><p>Reads an unsigned 16-bit integer in network byte-order from the current
+offset and advances the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.put_u16" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#364-366">source</a><h4 class="code-header">pub fn <a href="#method.put_u16" class="fn">put_u16</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;&amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;</h4></section></summary><div class="docblock"><p>Writes an unsigned 16-bit integer in network byte-order at the current
+offset and advances the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_u24" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#370-372">source</a><h4 class="code-header">pub fn <a href="#method.get_u24" class="fn">get_u24</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</h4></section></summary><div class="docblock"><p>Reads an unsigned 24-bit integer in network byte-order from the current
+offset and advances the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.put_u24" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#376-378">source</a><h4 class="code-header">pub fn <a href="#method.put_u24" class="fn">put_u24</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;&amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;</h4></section></summary><div class="docblock"><p>Writes an unsigned 24-bit integer in network byte-order at the current
+offset and advances the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_u32" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#382-384">source</a><h4 class="code-header">pub fn <a href="#method.get_u32" class="fn">get_u32</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</h4></section></summary><div class="docblock"><p>Reads an unsigned 32-bit integer in network byte-order from the current
+offset and advances the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.put_u32" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#388-390">source</a><h4 class="code-header">pub fn <a href="#method.put_u32" class="fn">put_u32</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;&amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;</h4></section></summary><div class="docblock"><p>Writes an unsigned 32-bit integer in network byte-order at the current
+offset and advances the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_u64" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#394-396">source</a><h4 class="code-header">pub fn <a href="#method.get_u64" class="fn">get_u64</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</h4></section></summary><div class="docblock"><p>Reads an unsigned 64-bit integer in network byte-order from the current
+offset and advances the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.put_u64" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#400-402">source</a><h4 class="code-header">pub fn <a href="#method.put_u64" class="fn">put_u64</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;&amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;</h4></section></summary><div class="docblock"><p>Writes an unsigned 64-bit integer in network byte-order at the current
+offset and advances the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_varint" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#406-428">source</a><h4 class="code-header">pub fn <a href="#method.get_varint" class="fn">get_varint</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</h4></section></summary><div class="docblock"><p>Reads an unsigned variable-length integer in network byte-order from
+the current offset and advances the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.put_varint" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#432-434">source</a><h4 class="code-header">pub fn <a href="#method.put_varint" class="fn">put_varint</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;&amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;</h4></section></summary><div class="docblock"><p>Writes an unsigned variable-length integer in network byte-order at the
+current offset and advances the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.put_varint_with_len" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#438-470">source</a><h4 class="code-header">pub fn <a href="#method.put_varint_with_len" class="fn">put_varint_with_len</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;&amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;</h4></section></summary><div class="docblock"><p>Writes an unsigned variable-length integer of the specified length, in
+network byte-order at the current offset and advances the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_bytes" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#474-487">source</a><h4 class="code-header">pub fn <a href="#method.get_bytes" class="fn">get_bytes</a>(&amp;mut self, len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'_&gt;&gt;</h4></section></summary><div class="docblock"><p>Reads <code>len</code> bytes from the current offset without copying and advances
+the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_bytes_mut" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#491-504">source</a><h4 class="code-header">pub fn <a href="#method.get_bytes_mut" class="fn">get_bytes_mut</a>(&amp;mut self, len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="struct" href="struct.OctetsMut.html" title="struct octets::OctetsMut">OctetsMut</a>&lt;'_&gt;&gt;</h4></section></summary><div class="docblock"><p>Reads <code>len</code> bytes from the current offset without copying and advances
+the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_bytes_with_u8_length" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#508-511">source</a><h4 class="code-header">pub fn <a href="#method.get_bytes_with_u8_length" class="fn">get_bytes_with_u8_length</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'_&gt;&gt;</h4></section></summary><div class="docblock"><p>Reads <code>len</code> bytes from the current offset without copying and advances
+the buffer, where <code>len</code> is an unsigned 8-bit integer prefix.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_bytes_with_u16_length" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#516-519">source</a><h4 class="code-header">pub fn <a href="#method.get_bytes_with_u16_length" class="fn">get_bytes_with_u16_length</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'_&gt;&gt;</h4></section></summary><div class="docblock"><p>Reads <code>len</code> bytes from the current offset without copying and advances
+the buffer, where <code>len</code> is an unsigned 16-bit integer prefix in network
+byte-order.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_bytes_with_varint_length" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#524-527">source</a><h4 class="code-header">pub fn <a href="#method.get_bytes_with_varint_length" class="fn">get_bytes_with_varint_length</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'_&gt;&gt;</h4></section></summary><div class="docblock"><p>Reads <code>len</code> bytes from the current offset without copying and advances
+the buffer, where <code>len</code> is an unsigned variable-length integer prefix
+in network byte-order.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.peek_bytes" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#531-542">source</a><h4 class="code-header">pub fn <a href="#method.peek_bytes" class="fn">peek_bytes</a>(&amp;mut self, len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="struct" href="struct.Octets.html" title="struct octets::Octets">Octets</a>&lt;'_&gt;&gt;</h4></section></summary><div class="docblock"><p>Reads <code>len</code> bytes from the current offset without copying and without
+advancing the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.peek_bytes_mut" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#546-557">source</a><h4 class="code-header">pub fn <a href="#method.peek_bytes_mut" class="fn">peek_bytes_mut</a>(&amp;mut self, len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="struct" href="struct.OctetsMut.html" title="struct octets::OctetsMut">OctetsMut</a>&lt;'_&gt;&gt;</h4></section></summary><div class="docblock"><p>Reads <code>len</code> bytes from the current offset without copying and without
+advancing the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.put_bytes" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#561-577">source</a><h4 class="code-header">pub fn <a href="#method.put_bytes" class="fn">put_bytes</a>(&amp;mut self, v: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Writes <code>len</code> bytes from the current offset without copying and advances
+the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.split_at" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#580-592">source</a><h4 class="code-header">pub fn <a href="#method.split_at" class="fn">split_at</a>(&amp;mut self, off: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;(<a class="struct" href="struct.OctetsMut.html" title="struct octets::OctetsMut">OctetsMut</a>&lt;'_&gt;, <a class="struct" href="struct.OctetsMut.html" title="struct octets::OctetsMut">OctetsMut</a>&lt;'_&gt;)&gt;</h4></section></summary><div class="docblock"><p>Splits the buffer in two at the given absolute offset.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.slice" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#595-601">source</a><h4 class="code-header">pub fn <a href="#method.slice" class="fn">slice</a>(&amp;'a mut self, len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;&amp;'a mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;</h4></section></summary><div class="docblock"><p>Returns a slice of <code>len</code> elements from the current offset.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.slice_last" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#604-611">source</a><h4 class="code-header">pub fn <a href="#method.slice_last" class="fn">slice_last</a>(&amp;'a mut self, len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;&amp;'a mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;</h4></section></summary><div class="docblock"><p>Returns a slice of <code>len</code> elements from the end of the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.skip" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#614-622">source</a><h4 class="code-header">pub fn <a href="#method.skip" class="fn">skip</a>(&amp;mut self, skip: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="type" href="type.Result.html" title="type octets::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Advances the buffer’s offset.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.cap" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#625-627">source</a><h4 class="code-header">pub fn <a href="#method.cap" class="fn">cap</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the remaining capacity in the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.len" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#630-632">source</a><h4 class="code-header">pub fn <a href="#method.len" class="fn">len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the total length of the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.is_empty" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#635-637">source</a><h4 class="code-header">pub fn <a href="#method.is_empty" class="fn">is_empty</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if the buffer is empty.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.off" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#640-642">source</a><h4 class="code-header">pub fn <a href="#method.off" class="fn">off</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the current offset of the buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.buf" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#645-647">source</a><h4 class="code-header">pub fn <a href="#method.buf" class="fn">buf</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns a reference to the internal buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.to_vec" class="method"><a class="src rightside" href="../src/octets/lib.rs.html#650-652">source</a><h4 class="code-header">pub fn <a href="#method.to_vec" class="fn">to_vec</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</h4></section></summary><div class="docblock"><p>Copies the buffer from the current offset into a new <code>Vec&lt;u8&gt;</code>.</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AsMut%3C%5Bu8%5D%3E-for-OctetsMut%3C'a%3E" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#661-665">source</a><a href="#impl-AsMut%3C%5Bu8%5D%3E-for-OctetsMut%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html" title="trait core::convert::AsMut">AsMut</a>&lt;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt; for <a class="struct" href="struct.OctetsMut.html" title="struct octets::OctetsMut">OctetsMut</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.as_mut" class="method trait-impl"><a class="src rightside" href="../src/octets/lib.rs.html#662-664">source</a><a href="#method.as_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html#tymethod.as_mut" class="fn">as_mut</a>(&amp;mut self) -&gt; &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;mut [u8]">ⓘ</a></h4></section></summary><div class='docblock'>Converts this type into a mutable reference of the (usually inferred) input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-AsRef%3C%5Bu8%5D%3E-for-OctetsMut%3C'a%3E" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#655-659">source</a><a href="#impl-AsRef%3C%5Bu8%5D%3E-for-OctetsMut%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt; for <a class="struct" href="struct.OctetsMut.html" title="struct octets::OctetsMut">OctetsMut</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.as_ref" class="method trait-impl"><a class="src rightside" href="../src/octets/lib.rs.html#656-658">source</a><a href="#method.as_ref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html#tymethod.as_ref" class="fn">as_ref</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></summary><div class='docblock'>Converts this type into a shared reference of the (usually inferred) input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-OctetsMut%3C'a%3E" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#323">source</a><a href="#impl-Debug-for-OctetsMut%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.OctetsMut.html" title="struct octets::OctetsMut">OctetsMut</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/octets/lib.rs.html#323">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-OctetsMut%3C'a%3E" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#323">source</a><a href="#impl-PartialEq-for-OctetsMut%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.OctetsMut.html" title="struct octets::OctetsMut">OctetsMut</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/octets/lib.rs.html#323">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.OctetsMut.html" title="struct octets::OctetsMut">OctetsMut</a>&lt;'a&gt;) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-OctetsMut%3C'a%3E" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#323">source</a><a href="#impl-Eq-for-OctetsMut%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.OctetsMut.html" title="struct octets::OctetsMut">OctetsMut</a>&lt;'a&gt;</h3></section><section id="impl-StructuralPartialEq-for-OctetsMut%3C'a%3E" class="impl"><a class="src rightside" href="../src/octets/lib.rs.html#323">source</a><a href="#impl-StructuralPartialEq-for-OctetsMut%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.OctetsMut.html" title="struct octets::OctetsMut">OctetsMut</a>&lt;'a&gt;</h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-OctetsMut%3C'a%3E" class="impl"><a href="#impl-Freeze-for-OctetsMut%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.OctetsMut.html" title="struct octets::OctetsMut">OctetsMut</a>&lt;'a&gt;</h3></section><section id="impl-RefUnwindSafe-for-OctetsMut%3C'a%3E" class="impl"><a href="#impl-RefUnwindSafe-for-OctetsMut%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.OctetsMut.html" title="struct octets::OctetsMut">OctetsMut</a>&lt;'a&gt;</h3></section><section id="impl-Send-for-OctetsMut%3C'a%3E" class="impl"><a href="#impl-Send-for-OctetsMut%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.OctetsMut.html" title="struct octets::OctetsMut">OctetsMut</a>&lt;'a&gt;</h3></section><section id="impl-Sync-for-OctetsMut%3C'a%3E" class="impl"><a href="#impl-Sync-for-OctetsMut%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.OctetsMut.html" title="struct octets::OctetsMut">OctetsMut</a>&lt;'a&gt;</h3></section><section id="impl-Unpin-for-OctetsMut%3C'a%3E" class="impl"><a href="#impl-Unpin-for-OctetsMut%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.OctetsMut.html" title="struct octets::OctetsMut">OctetsMut</a>&lt;'a&gt;</h3></section><section id="impl-UnwindSafe-for-OctetsMut%3C'a%3E" class="impl"><a href="#impl-UnwindSafe-for-OctetsMut%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.OctetsMut.html" title="struct octets::OctetsMut">OctetsMut</a>&lt;'a&gt;</h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div><script type="text/json" id="notable-traits-data">{"&[u8]":"<h3>Notable traits for <code>&amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</div>","&mut [u8]":"<h3>Notable traits for <code>&amp;mut [<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Write.html\" title=\"trait std::io::Write\">Write</a> for &amp;mut [<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</div>"}</script></section></div></main></body></html>
\ No newline at end of file
diff --git a/octets/type.Result.html b/octets/type.Result.html
new file mode 100644
index 0000000..bf4b058
--- /dev/null
+++ b/octets/type.Result.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A specialized `Result` type for `OctetsMut` operations."><title>Result in octets - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="octets" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../octets/index.html">octets</a><span class="version">0.3.0</span></h2></div><h2 class="location"><a href="#">Result</a></h2><div class="sidebar-elems"><section><h3><a href="#aliased-type">Aliased type</a></h3><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Err">Err</a></li><li><a href="#variant.Ok">Ok</a></li></ul></section><h2><a href="index.html">In crate octets</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../octets/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Type Alias <a href="index.html">octets</a>::<wbr><a class="type" href="#">Result</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/octets/lib.rs.html#35">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub type Result&lt;T&gt; = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, <a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a>&gt;;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A specialized <a href="https://doc.rust-lang.org/std/result/enum.Result.html"><code>Result</code></a> type for <a href="struct.OctetsMut.html"><code>OctetsMut</code></a> operations.</p>
+</div></details><h2 id="aliased-type" class="section-header">Aliased Type<a href="#aliased-type" class="anchor">§</a></h2><pre class="rust item-decl"><code>enum Result&lt;T&gt; {
+    Ok(T),
+    Err(<a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a>),
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Ok" class="variant"><a href="#variant.Ok" class="anchor">§</a><span class="since rightside" title="Stable since Rust version 1.0.0">1.0.0</span><h3 class="code-header">Ok(T)</h3></section><div class="docblock"><p>Contains the success value</p>
+</div><section id="variant.Err" class="variant"><a href="#variant.Err" class="anchor">§</a><span class="since rightside" title="Stable since Rust version 1.0.0">1.0.0</span><h3 class="code-header">Err(<a class="struct" href="struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a>)</h3></section><div class="docblock"><p>Contains the error value</p>
+</div></div><script src="../type.impl/core/result/enum.Result.js" data-self-path="octets::Result" async></script></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/all.html b/qlog/all.html
new file mode 100644
index 0000000..4fce4bc
--- /dev/null
+++ b/qlog/all.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod sys"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#constants">Constants</a></li><li><a href="#traits">Traits</a></li><li><a href="#types">Type Aliases</a></li></ul></section></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><h1>List of all items</h1><h3 id="structs">Structs</h3><ul class="all-items"><li><a href="struct.CommonFields.html">CommonFields</a></li><li><a href="struct.Configuration.html">Configuration</a></li><li><a href="struct.HexSlice.html">HexSlice</a></li><li><a href="struct.Qlog.html">Qlog</a></li><li><a href="struct.QlogSeq.html">QlogSeq</a></li><li><a href="struct.Token.html">Token</a></li><li><a href="struct.Trace.html">Trace</a></li><li><a href="struct.TraceSeq.html">TraceSeq</a></li><li><a href="struct.VantagePoint.html">VantagePoint</a></li><li><a href="events/struct.Event.html">events::Event</a></li><li><a href="events/struct.JsonEvent.html">events::JsonEvent</a></li><li><a href="events/struct.RawInfo.html">events::RawInfo</a></li><li><a href="events/connectivity/struct.ConnectionClosed.html">events::connectivity::ConnectionClosed</a></li><li><a href="events/connectivity/struct.ConnectionIdUpdated.html">events::connectivity::ConnectionIdUpdated</a></li><li><a href="events/connectivity/struct.ConnectionStarted.html">events::connectivity::ConnectionStarted</a></li><li><a href="events/connectivity/struct.ConnectionStateUpdated.html">events::connectivity::ConnectionStateUpdated</a></li><li><a href="events/connectivity/struct.MtuUpdated.html">events::connectivity::MtuUpdated</a></li><li><a href="events/connectivity/struct.ServerListening.html">events::connectivity::ServerListening</a></li><li><a href="events/connectivity/struct.SpinBitUpdated.html">events::connectivity::SpinBitUpdated</a></li><li><a href="events/h3/struct.H3FrameCreated.html">events::h3::H3FrameCreated</a></li><li><a href="events/h3/struct.H3FrameParsed.html">events::h3::H3FrameParsed</a></li><li><a href="events/h3/struct.H3ParametersRestored.html">events::h3::H3ParametersRestored</a></li><li><a href="events/h3/struct.H3ParametersSet.html">events::h3::H3ParametersSet</a></li><li><a href="events/h3/struct.H3PushResolved.html">events::h3::H3PushResolved</a></li><li><a href="events/h3/struct.H3StreamTypeSet.html">events::h3::H3StreamTypeSet</a></li><li><a href="events/h3/struct.HttpHeader.html">events::h3::HttpHeader</a></li><li><a href="events/h3/struct.Setting.html">events::h3::Setting</a></li><li><a href="events/qpack/struct.QpackDynamicTableEntry.html">events::qpack::QpackDynamicTableEntry</a></li><li><a href="events/qpack/struct.QpackDynamicTableUpdated.html">events::qpack::QpackDynamicTableUpdated</a></li><li><a href="events/qpack/struct.QpackHeaderBlockPrefix.html">events::qpack::QpackHeaderBlockPrefix</a></li><li><a href="events/qpack/struct.QpackHeadersDecoded.html">events::qpack::QpackHeadersDecoded</a></li><li><a href="events/qpack/struct.QpackHeadersEncoded.html">events::qpack::QpackHeadersEncoded</a></li><li><a href="events/qpack/struct.QpackInstructionCreated.html">events::qpack::QpackInstructionCreated</a></li><li><a href="events/qpack/struct.QpackInstructionParsed.html">events::qpack::QpackInstructionParsed</a></li><li><a href="events/qpack/struct.QpackStateUpdated.html">events::qpack::QpackStateUpdated</a></li><li><a href="events/qpack/struct.QpackStreamStateUpdated.html">events::qpack::QpackStreamStateUpdated</a></li><li><a href="events/quic/struct.AlpnInformation.html">events::quic::AlpnInformation</a></li><li><a href="events/quic/struct.CongestionStateUpdated.html">events::quic::CongestionStateUpdated</a></li><li><a href="events/quic/struct.DataMoved.html">events::quic::DataMoved</a></li><li><a href="events/quic/struct.DatagramDropped.html">events::quic::DatagramDropped</a></li><li><a href="events/quic/struct.DatagramsReceived.html">events::quic::DatagramsReceived</a></li><li><a href="events/quic/struct.DatagramsSent.html">events::quic::DatagramsSent</a></li><li><a href="events/quic/struct.FramesProcessed.html">events::quic::FramesProcessed</a></li><li><a href="events/quic/struct.LossTimerUpdated.html">events::quic::LossTimerUpdated</a></li><li><a href="events/quic/struct.MarkedForRetransmit.html">events::quic::MarkedForRetransmit</a></li><li><a href="events/quic/struct.MetricsUpdated.html">events::quic::MetricsUpdated</a></li><li><a href="events/quic/struct.PacketBuffered.html">events::quic::PacketBuffered</a></li><li><a href="events/quic/struct.PacketDropped.html">events::quic::PacketDropped</a></li><li><a href="events/quic/struct.PacketHeader.html">events::quic::PacketHeader</a></li><li><a href="events/quic/struct.PacketLost.html">events::quic::PacketLost</a></li><li><a href="events/quic/struct.PacketReceived.html">events::quic::PacketReceived</a></li><li><a href="events/quic/struct.PacketSent.html">events::quic::PacketSent</a></li><li><a href="events/quic/struct.PacketsAcked.html">events::quic::PacketsAcked</a></li><li><a href="events/quic/struct.PreferredAddress.html">events::quic::PreferredAddress</a></li><li><a href="events/quic/struct.RecoveryParametersSet.html">events::quic::RecoveryParametersSet</a></li><li><a href="events/quic/struct.StreamStateUpdated.html">events::quic::StreamStateUpdated</a></li><li><a href="events/quic/struct.TransportParametersRestored.html">events::quic::TransportParametersRestored</a></li><li><a href="events/quic/struct.TransportParametersSet.html">events::quic::TransportParametersSet</a></li><li><a href="events/quic/struct.VersionInformation.html">events::quic::VersionInformation</a></li><li><a href="events/security/struct.KeyDiscarded.html">events::security::KeyDiscarded</a></li><li><a href="events/security/struct.KeyUpdated.html">events::security::KeyUpdated</a></li><li><a href="reader/struct.QlogSeqReader.html">reader::QlogSeqReader</a></li><li><a href="streamer/struct.QlogStreamer.html">streamer::QlogStreamer</a></li></ul><h3 id="enums">Enums</h3><ul class="all-items"><li><a href="enum.Error.html">Error</a></li><li><a href="enum.ImportanceLogLevel.html">ImportanceLogLevel</a></li><li><a href="enum.TokenType.html">TokenType</a></li><li><a href="enum.VantagePointType.html">VantagePointType</a></li><li><a href="events/enum.ApplicationErrorCode.html">events::ApplicationErrorCode</a></li><li><a href="events/enum.ConnectionErrorCode.html">events::ConnectionErrorCode</a></li><li><a href="events/enum.CryptoError.html">events::CryptoError</a></li><li><a href="events/enum.DataRecipient.html">events::DataRecipient</a></li><li><a href="events/enum.EventCategory.html">events::EventCategory</a></li><li><a href="events/enum.EventData.html">events::EventData</a></li><li><a href="events/enum.EventImportance.html">events::EventImportance</a></li><li><a href="events/enum.EventType.html">events::EventType</a></li><li><a href="events/enum.GenericEventType.html">events::GenericEventType</a></li><li><a href="events/enum.TimeFormat.html">events::TimeFormat</a></li><li><a href="events/connectivity/enum.ConnectionClosedTrigger.html">events::connectivity::ConnectionClosedTrigger</a></li><li><a href="events/connectivity/enum.ConnectionState.html">events::connectivity::ConnectionState</a></li><li><a href="events/connectivity/enum.ConnectivityEventType.html">events::connectivity::ConnectivityEventType</a></li><li><a href="events/connectivity/enum.TransportOwner.html">events::connectivity::TransportOwner</a></li><li><a href="events/h3/enum.ApplicationError.html">events::h3::ApplicationError</a></li><li><a href="events/h3/enum.H3Owner.html">events::h3::H3Owner</a></li><li><a href="events/h3/enum.H3PriorityTargetStreamType.html">events::h3::H3PriorityTargetStreamType</a></li><li><a href="events/h3/enum.H3PushDecision.html">events::h3::H3PushDecision</a></li><li><a href="events/h3/enum.H3StreamType.html">events::h3::H3StreamType</a></li><li><a href="events/h3/enum.Http3EventType.html">events::h3::Http3EventType</a></li><li><a href="events/h3/enum.Http3Frame.html">events::h3::Http3Frame</a></li><li><a href="events/h3/enum.Http3FrameTypeName.html">events::h3::Http3FrameTypeName</a></li><li><a href="events/qpack/enum.QPackInstruction.html">events::qpack::QPackInstruction</a></li><li><a href="events/qpack/enum.QpackEventType.html">events::qpack::QpackEventType</a></li><li><a href="events/qpack/enum.QpackHeaderBlockRepresentation.html">events::qpack::QpackHeaderBlockRepresentation</a></li><li><a href="events/qpack/enum.QpackHeaderBlockRepresentationTypeName.html">events::qpack::QpackHeaderBlockRepresentationTypeName</a></li><li><a href="events/qpack/enum.QpackInstructionTypeName.html">events::qpack::QpackInstructionTypeName</a></li><li><a href="events/qpack/enum.QpackOwner.html">events::qpack::QpackOwner</a></li><li><a href="events/qpack/enum.QpackStreamState.html">events::qpack::QpackStreamState</a></li><li><a href="events/qpack/enum.QpackTableType.html">events::qpack::QpackTableType</a></li><li><a href="events/qpack/enum.QpackUpdateType.html">events::qpack::QpackUpdateType</a></li><li><a href="events/quic/enum.AckedRanges.html">events::quic::AckedRanges</a></li><li><a href="events/quic/enum.CongestionStateUpdatedTrigger.html">events::quic::CongestionStateUpdatedTrigger</a></li><li><a href="events/quic/enum.ErrorSpace.html">events::quic::ErrorSpace</a></li><li><a href="events/quic/enum.LossTimerEventType.html">events::quic::LossTimerEventType</a></li><li><a href="events/quic/enum.PacketBufferedTrigger.html">events::quic::PacketBufferedTrigger</a></li><li><a href="events/quic/enum.PacketDroppedTrigger.html">events::quic::PacketDroppedTrigger</a></li><li><a href="events/quic/enum.PacketLostTrigger.html">events::quic::PacketLostTrigger</a></li><li><a href="events/quic/enum.PacketNumberSpace.html">events::quic::PacketNumberSpace</a></li><li><a href="events/quic/enum.PacketReceivedTrigger.html">events::quic::PacketReceivedTrigger</a></li><li><a href="events/quic/enum.PacketSentTrigger.html">events::quic::PacketSentTrigger</a></li><li><a href="events/quic/enum.PacketType.html">events::quic::PacketType</a></li><li><a href="events/quic/enum.QuicFrame.html">events::quic::QuicFrame</a></li><li><a href="events/quic/enum.QuicFrameTypeName.html">events::quic::QuicFrameTypeName</a></li><li><a href="events/quic/enum.RecoveryEventType.html">events::quic::RecoveryEventType</a></li><li><a href="events/quic/enum.SecurityEventType.html">events::quic::SecurityEventType</a></li><li><a href="events/quic/enum.StreamSide.html">events::quic::StreamSide</a></li><li><a href="events/quic/enum.StreamState.html">events::quic::StreamState</a></li><li><a href="events/quic/enum.StreamType.html">events::quic::StreamType</a></li><li><a href="events/quic/enum.TimerType.html">events::quic::TimerType</a></li><li><a href="events/quic/enum.TransportError.html">events::quic::TransportError</a></li><li><a href="events/quic/enum.TransportEventType.html">events::quic::TransportEventType</a></li><li><a href="events/security/enum.KeyType.html">events::security::KeyType</a></li><li><a href="events/security/enum.KeyUpdateOrRetiredTrigger.html">events::security::KeyUpdateOrRetiredTrigger</a></li><li><a href="reader/enum.Event.html">reader::Event</a></li><li><a href="streamer/enum.StreamerState.html">streamer::StreamerState</a></li></ul><h3 id="traits">Traits</h3><ul class="all-items"><li><a href="events/trait.Eventable.html">events::Eventable</a></li></ul><h3 id="types">Type Aliases</h3><ul class="all-items"><li><a href="type.Bytes.html">Bytes</a></li><li><a href="type.Result.html">Result</a></li><li><a href="type.StatelessResetToken.html">StatelessResetToken</a></li><li><a href="events/type.ExData.html">events::ExData</a></li></ul><h3 id="constants">Constants</h3><ul class="all-items"><li><a href="constant.QLOG_VERSION.html">QLOG_VERSION</a></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/constant.QLOG_VERSION.html b/qlog/constant.QLOG_VERSION.html
new file mode 100644
index 0000000..a2376d7
--- /dev/null
+++ b/qlog/constant.QLOG_VERSION.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QLOG_VERSION` constant in crate `qlog`."><title>QLOG_VERSION in qlog - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc constant"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Constant <a href="index.html">qlog</a>::<wbr><a class="constant" href="#">QLOG_VERSION</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/qlog/lib.rs.html#457">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub const QLOG_VERSION: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a> = &quot;0.3&quot;;</code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/enum.Error.html b/qlog/enum.Error.html
new file mode 100644
index 0000000..e9e6bde
--- /dev/null
+++ b/qlog/enum.Error.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A quiche qlog error."><title>Error in qlog - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Error</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Done">Done</a></li><li><a href="#variant.InvalidFormat">InvalidFormat</a></li><li><a href="#variant.InvalidState">InvalidState</a></li><li><a href="#variant.IoError">IoError</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Debug-for-Error">Debug</a></li><li><a href="#impl-Display-for-Error">Display</a></li><li><a href="#impl-Error-for-Error">Error</a></li><li><a href="#impl-From%3CError%3E-for-Error">From&lt;Error&gt;</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-RefUnwindSafe-for-Error">!RefUnwindSafe</a></li><li><a href="#impl-UnwindSafe-for-Error">!UnwindSafe</a></li><li><a href="#impl-Freeze-for-Error">Freeze</a></li><li><a href="#impl-Send-for-Error">Send</a></li><li><a href="#impl-Sync-for-Error">Sync</a></li><li><a href="#impl-Unpin-for-Error">Unpin</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToString-for-T">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate qlog</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="index.html">qlog</a>::<wbr><a class="enum" href="#">Error</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/qlog/lib.rs.html#424-437">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum Error {
+    Done,
+    InvalidState,
+    InvalidFormat,
+    IoError(<a class="struct" href="https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html" title="struct std::io::error::Error">Error</a>),
+}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A quiche qlog error.</p>
+</div></details><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Done" class="variant"><a href="#variant.Done" class="anchor">§</a><h3 class="code-header">Done</h3></section><div class="docblock"><p>There is no more work to do.</p>
+</div><section id="variant.InvalidState" class="variant"><a href="#variant.InvalidState" class="anchor">§</a><h3 class="code-header">InvalidState</h3></section><div class="docblock"><p>The operation cannot be completed because it was attempted
+in an invalid state.</p>
+</div><section id="variant.InvalidFormat" class="variant"><a href="#variant.InvalidFormat" class="anchor">§</a><h3 class="code-header">InvalidFormat</h3></section><section id="variant.IoError" class="variant"><a href="#variant.IoError" class="anchor">§</a><h3 class="code-header">IoError(<a class="struct" href="https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html" title="struct std::io::error::Error">Error</a>)</h3></section><div class="docblock"><p>I/O error.</p>
+</div></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Error" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#423">source</a><a href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Error.html" title="enum qlog::Error">Error</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#423">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Display-for-Error" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#439-443">source</a><a href="#impl-Display-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.Error.html" title="enum qlog::Error">Error</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#440-442">source</a><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Error-for-Error" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#445-449">source</a><a href="#impl-Error-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> for <a class="enum" href="enum.Error.html" title="enum qlog::Error">Error</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.source" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#446-448">source</a><a href="#method.source" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source" class="fn">source</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + 'static)&gt;</h4></section></summary><div class='docblock'>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.description" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#110">source</a></span><a href="#method.description" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description" class="fn">description</a>(&amp;self) -&gt; &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.42.0: use the Display impl or to_string()</span></div></span><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.cause" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#120">source</a></span><a href="#method.cause" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.cause" class="fn">cause</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a>&gt;</h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.33.0: replaced by Error::source, which can support downcasting</span></div></span></details><details class="toggle method-toggle" open><summary><section id="method.provide" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#184">source</a><a href="#method.provide" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide" class="fn">provide</a>&lt;'a&gt;(&amp;'a self, request: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/error/struct.Request.html" title="struct core::error::Request">Request</a>&lt;'a&gt;)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>error_generic_member_access</code>)</span></div></span><div class='docblock'>Provides type based access to context intended for error reports. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#451-455">source</a><a href="#impl-From%3CError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html" title="struct std::io::error::Error">Error</a>&gt; for <a class="enum" href="enum.Error.html" title="enum qlog::Error">Error</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#452-454">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: <a class="struct" href="https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html" title="struct std::io::error::Error">Error</a>) -&gt; Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Error" class="impl"><a href="#impl-Freeze-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.Error.html" title="enum qlog::Error">Error</a></h3></section><section id="impl-RefUnwindSafe-for-Error" class="impl"><a href="#impl-RefUnwindSafe-for-Error" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Error.html" title="enum qlog::Error">Error</a></h3></section><section id="impl-Send-for-Error" class="impl"><a href="#impl-Send-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Error.html" title="enum qlog::Error">Error</a></h3></section><section id="impl-Sync-for-Error" class="impl"><a href="#impl-Sync-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Error.html" title="enum qlog::Error">Error</a></h3></section><section id="impl-Unpin-for-Error" class="impl"><a href="#impl-Unpin-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Error.html" title="enum qlog::Error">Error</a></h3></section><section id="impl-UnwindSafe-for-Error" class="impl"><a href="#impl-UnwindSafe-for-Error" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Error.html" title="enum qlog::Error">Error</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToString-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2546">source</a><a href="#impl-ToString-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2552">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/enum.ImportanceLogLevel.html b/qlog/enum.ImportanceLogLevel.html
new file mode 100644
index 0000000..c4c49d6
--- /dev/null
+++ b/qlog/enum.ImportanceLogLevel.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ImportanceLogLevel` enum in crate `qlog`."><title>ImportanceLogLevel in qlog - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">ImportanceLogLevel</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Base">Base</a></li><li><a href="#variant.Core">Core</a></li><li><a href="#variant.Extra">Extra</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-ImportanceLogLevel">Clone</a></li><li><a href="#impl-Copy-for-ImportanceLogLevel">Copy</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-ImportanceLogLevel">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-ImportanceLogLevel">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ImportanceLogLevel">Send</a></li><li><a href="#impl-Sync-for-ImportanceLogLevel">Sync</a></li><li><a href="#impl-Unpin-for-ImportanceLogLevel">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ImportanceLogLevel">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate qlog</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="index.html">qlog</a>::<wbr><a class="enum" href="#">ImportanceLogLevel</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/qlog/lib.rs.html#494-498">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum ImportanceLogLevel {
+    Core = 0,
+    Base = 1,
+    Extra = 2,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Core" class="variant"><a href="#variant.Core" class="anchor">§</a><h3 class="code-header">Core = 0</h3></section><section id="variant.Base" class="variant"><a href="#variant.Base" class="anchor">§</a><h3 class="code-header">Base = 1</h3></section><section id="variant.Extra" class="variant"><a href="#variant.Extra" class="anchor">§</a><h3 class="code-header">Extra = 2</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ImportanceLogLevel" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#493">source</a><a href="#impl-Clone-for-ImportanceLogLevel" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.ImportanceLogLevel.html" title="enum qlog::ImportanceLogLevel">ImportanceLogLevel</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#493">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.ImportanceLogLevel.html" title="enum qlog::ImportanceLogLevel">ImportanceLogLevel</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><section id="impl-Copy-for-ImportanceLogLevel" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#493">source</a><a href="#impl-Copy-for-ImportanceLogLevel" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.ImportanceLogLevel.html" title="enum qlog::ImportanceLogLevel">ImportanceLogLevel</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-ImportanceLogLevel" class="impl"><a href="#impl-Freeze-for-ImportanceLogLevel" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.ImportanceLogLevel.html" title="enum qlog::ImportanceLogLevel">ImportanceLogLevel</a></h3></section><section id="impl-RefUnwindSafe-for-ImportanceLogLevel" class="impl"><a href="#impl-RefUnwindSafe-for-ImportanceLogLevel" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.ImportanceLogLevel.html" title="enum qlog::ImportanceLogLevel">ImportanceLogLevel</a></h3></section><section id="impl-Send-for-ImportanceLogLevel" class="impl"><a href="#impl-Send-for-ImportanceLogLevel" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.ImportanceLogLevel.html" title="enum qlog::ImportanceLogLevel">ImportanceLogLevel</a></h3></section><section id="impl-Sync-for-ImportanceLogLevel" class="impl"><a href="#impl-Sync-for-ImportanceLogLevel" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.ImportanceLogLevel.html" title="enum qlog::ImportanceLogLevel">ImportanceLogLevel</a></h3></section><section id="impl-Unpin-for-ImportanceLogLevel" class="impl"><a href="#impl-Unpin-for-ImportanceLogLevel" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.ImportanceLogLevel.html" title="enum qlog::ImportanceLogLevel">ImportanceLogLevel</a></h3></section><section id="impl-UnwindSafe-for-ImportanceLogLevel" class="impl"><a href="#impl-UnwindSafe-for-ImportanceLogLevel" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.ImportanceLogLevel.html" title="enum qlog::ImportanceLogLevel">ImportanceLogLevel</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/enum.TokenType.html b/qlog/enum.TokenType.html
new file mode 100644
index 0000000..1bc2fe4
--- /dev/null
+++ b/qlog/enum.TokenType.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `TokenType` enum in crate `qlog`."><title>TokenType in qlog - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">TokenType</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Resumption">Resumption</a></li><li><a href="#variant.Retry">Retry</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-TokenType">Clone</a></li><li><a href="#impl-Debug-for-TokenType">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-TokenType">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-TokenType">Eq</a></li><li><a href="#impl-PartialEq-for-TokenType">PartialEq</a></li><li><a href="#impl-Serialize-for-TokenType">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-TokenType">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-TokenType">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-TokenType">RefUnwindSafe</a></li><li><a href="#impl-Send-for-TokenType">Send</a></li><li><a href="#impl-Sync-for-TokenType">Sync</a></li><li><a href="#impl-Unpin-for-TokenType">Unpin</a></li><li><a href="#impl-UnwindSafe-for-TokenType">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate qlog</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="index.html">qlog</a>::<wbr><a class="enum" href="#">TokenType</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/qlog/lib.rs.html#621-624">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum TokenType {
+    Retry,
+    Resumption,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Retry" class="variant"><a href="#variant.Retry" class="anchor">§</a><h3 class="code-header">Retry</h3></section><section id="variant.Resumption" class="variant"><a href="#variant.Resumption" class="anchor">§</a><h3 class="code-header">Resumption</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-TokenType" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#619">source</a><a href="#impl-Clone-for-TokenType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.TokenType.html" title="enum qlog::TokenType">TokenType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#619">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.TokenType.html" title="enum qlog::TokenType">TokenType</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-TokenType" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#619">source</a><a href="#impl-Debug-for-TokenType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.TokenType.html" title="enum qlog::TokenType">TokenType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#619">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-TokenType" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#619">source</a><a href="#impl-Deserialize%3C'de%3E-for-TokenType" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.TokenType.html" title="enum qlog::TokenType">TokenType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#619">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-TokenType" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#619">source</a><a href="#impl-PartialEq-for-TokenType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.TokenType.html" title="enum qlog::TokenType">TokenType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#619">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.TokenType.html" title="enum qlog::TokenType">TokenType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-TokenType" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#619">source</a><a href="#impl-Serialize-for-TokenType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.TokenType.html" title="enum qlog::TokenType">TokenType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#619">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-TokenType" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#619">source</a><a href="#impl-Eq-for-TokenType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.TokenType.html" title="enum qlog::TokenType">TokenType</a></h3></section><section id="impl-StructuralPartialEq-for-TokenType" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#619">source</a><a href="#impl-StructuralPartialEq-for-TokenType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.TokenType.html" title="enum qlog::TokenType">TokenType</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-TokenType" class="impl"><a href="#impl-Freeze-for-TokenType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.TokenType.html" title="enum qlog::TokenType">TokenType</a></h3></section><section id="impl-RefUnwindSafe-for-TokenType" class="impl"><a href="#impl-RefUnwindSafe-for-TokenType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.TokenType.html" title="enum qlog::TokenType">TokenType</a></h3></section><section id="impl-Send-for-TokenType" class="impl"><a href="#impl-Send-for-TokenType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.TokenType.html" title="enum qlog::TokenType">TokenType</a></h3></section><section id="impl-Sync-for-TokenType" class="impl"><a href="#impl-Sync-for-TokenType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.TokenType.html" title="enum qlog::TokenType">TokenType</a></h3></section><section id="impl-Unpin-for-TokenType" class="impl"><a href="#impl-Unpin-for-TokenType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.TokenType.html" title="enum qlog::TokenType">TokenType</a></h3></section><section id="impl-UnwindSafe-for-TokenType" class="impl"><a href="#impl-UnwindSafe-for-TokenType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.TokenType.html" title="enum qlog::TokenType">TokenType</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/enum.VantagePointType.html b/qlog/enum.VantagePointType.html
new file mode 100644
index 0000000..7c88eda
--- /dev/null
+++ b/qlog/enum.VantagePointType.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `VantagePointType` enum in crate `qlog`."><title>VantagePointType in qlog - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">VantagePointType</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Client">Client</a></li><li><a href="#variant.Network">Network</a></li><li><a href="#variant.Server">Server</a></li><li><a href="#variant.Unknown">Unknown</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-VantagePointType">Clone</a></li><li><a href="#impl-Debug-for-VantagePointType">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-VantagePointType">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-VantagePointType">Eq</a></li><li><a href="#impl-PartialEq-for-VantagePointType">PartialEq</a></li><li><a href="#impl-Serialize-for-VantagePointType">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-VantagePointType">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-VantagePointType">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-VantagePointType">RefUnwindSafe</a></li><li><a href="#impl-Send-for-VantagePointType">Send</a></li><li><a href="#impl-Sync-for-VantagePointType">Sync</a></li><li><a href="#impl-Unpin-for-VantagePointType">Unpin</a></li><li><a href="#impl-UnwindSafe-for-VantagePointType">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate qlog</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="index.html">qlog</a>::<wbr><a class="enum" href="#">VantagePointType</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/qlog/lib.rs.html#583-588">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum VantagePointType {
+    Client,
+    Server,
+    Network,
+    Unknown,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Client" class="variant"><a href="#variant.Client" class="anchor">§</a><h3 class="code-header">Client</h3></section><section id="variant.Server" class="variant"><a href="#variant.Server" class="anchor">§</a><h3 class="code-header">Server</h3></section><section id="variant.Network" class="variant"><a href="#variant.Network" class="anchor">§</a><h3 class="code-header">Network</h3></section><section id="variant.Unknown" class="variant"><a href="#variant.Unknown" class="anchor">§</a><h3 class="code-header">Unknown</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-VantagePointType" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#581">source</a><a href="#impl-Clone-for-VantagePointType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#581">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-VantagePointType" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#581">source</a><a href="#impl-Debug-for-VantagePointType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#581">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-VantagePointType" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#581">source</a><a href="#impl-Deserialize%3C'de%3E-for-VantagePointType" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#581">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-VantagePointType" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#581">source</a><a href="#impl-PartialEq-for-VantagePointType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#581">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-VantagePointType" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#581">source</a><a href="#impl-Serialize-for-VantagePointType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#581">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-VantagePointType" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#581">source</a><a href="#impl-Eq-for-VantagePointType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a></h3></section><section id="impl-StructuralPartialEq-for-VantagePointType" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#581">source</a><a href="#impl-StructuralPartialEq-for-VantagePointType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-VantagePointType" class="impl"><a href="#impl-Freeze-for-VantagePointType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a></h3></section><section id="impl-RefUnwindSafe-for-VantagePointType" class="impl"><a href="#impl-RefUnwindSafe-for-VantagePointType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a></h3></section><section id="impl-Send-for-VantagePointType" class="impl"><a href="#impl-Send-for-VantagePointType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a></h3></section><section id="impl-Sync-for-VantagePointType" class="impl"><a href="#impl-Sync-for-VantagePointType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a></h3></section><section id="impl-Unpin-for-VantagePointType" class="impl"><a href="#impl-Unpin-for-VantagePointType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a></h3></section><section id="impl-UnwindSafe-for-VantagePointType" class="impl"><a href="#impl-UnwindSafe-for-VantagePointType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/connectivity/enum.ConnectionClosedTrigger.html b/qlog/events/connectivity/enum.ConnectionClosedTrigger.html
new file mode 100644
index 0000000..681528f
--- /dev/null
+++ b/qlog/events/connectivity/enum.ConnectionClosedTrigger.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ConnectionClosedTrigger` enum in crate `qlog`."><title>ConnectionClosedTrigger in qlog::events::connectivity - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">ConnectionClosedTrigger</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Application">Application</a></li><li><a href="#variant.Clean">Clean</a></li><li><a href="#variant.Error">Error</a></li><li><a href="#variant.HandshakeTimeout">HandshakeTimeout</a></li><li><a href="#variant.IdleTimeout">IdleTimeout</a></li><li><a href="#variant.StatelessReset">StatelessReset</a></li><li><a href="#variant.VersionMismatch">VersionMismatch</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-ConnectionClosedTrigger">Clone</a></li><li><a href="#impl-Copy-for-ConnectionClosedTrigger">Copy</a></li><li><a href="#impl-Debug-for-ConnectionClosedTrigger">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-ConnectionClosedTrigger">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-ConnectionClosedTrigger">Eq</a></li><li><a href="#impl-PartialEq-for-ConnectionClosedTrigger">PartialEq</a></li><li><a href="#impl-Serialize-for-ConnectionClosedTrigger">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-ConnectionClosedTrigger">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-ConnectionClosedTrigger">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-ConnectionClosedTrigger">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ConnectionClosedTrigger">Send</a></li><li><a href="#impl-Sync-for-ConnectionClosedTrigger">Sync</a></li><li><a href="#impl-Unpin-for-ConnectionClosedTrigger">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ConnectionClosedTrigger">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::connectivity</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">connectivity</a>::<wbr><a class="enum" href="#">ConnectionClosedTrigger</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/connectivity.rs.html#69-77">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum ConnectionClosedTrigger {
+    Clean,
+    HandshakeTimeout,
+    IdleTimeout,
+    Error,
+    StatelessReset,
+    VersionMismatch,
+    Application,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Clean" class="variant"><a href="#variant.Clean" class="anchor">§</a><h3 class="code-header">Clean</h3></section><section id="variant.HandshakeTimeout" class="variant"><a href="#variant.HandshakeTimeout" class="anchor">§</a><h3 class="code-header">HandshakeTimeout</h3></section><section id="variant.IdleTimeout" class="variant"><a href="#variant.IdleTimeout" class="anchor">§</a><h3 class="code-header">IdleTimeout</h3></section><section id="variant.Error" class="variant"><a href="#variant.Error" class="anchor">§</a><h3 class="code-header">Error</h3></section><section id="variant.StatelessReset" class="variant"><a href="#variant.StatelessReset" class="anchor">§</a><h3 class="code-header">StatelessReset</h3></section><section id="variant.VersionMismatch" class="variant"><a href="#variant.VersionMismatch" class="anchor">§</a><h3 class="code-header">VersionMismatch</h3></section><section id="variant.Application" class="variant"><a href="#variant.Application" class="anchor">§</a><h3 class="code-header">Application</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ConnectionClosedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#67">source</a><a href="#impl-Clone-for-ConnectionClosedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.ConnectionClosedTrigger.html" title="enum qlog::events::connectivity::ConnectionClosedTrigger">ConnectionClosedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#67">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.ConnectionClosedTrigger.html" title="enum qlog::events::connectivity::ConnectionClosedTrigger">ConnectionClosedTrigger</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-ConnectionClosedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#67">source</a><a href="#impl-Debug-for-ConnectionClosedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.ConnectionClosedTrigger.html" title="enum qlog::events::connectivity::ConnectionClosedTrigger">ConnectionClosedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#67">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-ConnectionClosedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#67">source</a><a href="#impl-Deserialize%3C'de%3E-for-ConnectionClosedTrigger" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.ConnectionClosedTrigger.html" title="enum qlog::events::connectivity::ConnectionClosedTrigger">ConnectionClosedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#67">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-ConnectionClosedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#67">source</a><a href="#impl-PartialEq-for-ConnectionClosedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.ConnectionClosedTrigger.html" title="enum qlog::events::connectivity::ConnectionClosedTrigger">ConnectionClosedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#67">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.ConnectionClosedTrigger.html" title="enum qlog::events::connectivity::ConnectionClosedTrigger">ConnectionClosedTrigger</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-ConnectionClosedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#67">source</a><a href="#impl-Serialize-for-ConnectionClosedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.ConnectionClosedTrigger.html" title="enum qlog::events::connectivity::ConnectionClosedTrigger">ConnectionClosedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#67">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-ConnectionClosedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#67">source</a><a href="#impl-Copy-for-ConnectionClosedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.ConnectionClosedTrigger.html" title="enum qlog::events::connectivity::ConnectionClosedTrigger">ConnectionClosedTrigger</a></h3></section><section id="impl-Eq-for-ConnectionClosedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#67">source</a><a href="#impl-Eq-for-ConnectionClosedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.ConnectionClosedTrigger.html" title="enum qlog::events::connectivity::ConnectionClosedTrigger">ConnectionClosedTrigger</a></h3></section><section id="impl-StructuralPartialEq-for-ConnectionClosedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#67">source</a><a href="#impl-StructuralPartialEq-for-ConnectionClosedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.ConnectionClosedTrigger.html" title="enum qlog::events::connectivity::ConnectionClosedTrigger">ConnectionClosedTrigger</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-ConnectionClosedTrigger" class="impl"><a href="#impl-Freeze-for-ConnectionClosedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.ConnectionClosedTrigger.html" title="enum qlog::events::connectivity::ConnectionClosedTrigger">ConnectionClosedTrigger</a></h3></section><section id="impl-RefUnwindSafe-for-ConnectionClosedTrigger" class="impl"><a href="#impl-RefUnwindSafe-for-ConnectionClosedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.ConnectionClosedTrigger.html" title="enum qlog::events::connectivity::ConnectionClosedTrigger">ConnectionClosedTrigger</a></h3></section><section id="impl-Send-for-ConnectionClosedTrigger" class="impl"><a href="#impl-Send-for-ConnectionClosedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.ConnectionClosedTrigger.html" title="enum qlog::events::connectivity::ConnectionClosedTrigger">ConnectionClosedTrigger</a></h3></section><section id="impl-Sync-for-ConnectionClosedTrigger" class="impl"><a href="#impl-Sync-for-ConnectionClosedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.ConnectionClosedTrigger.html" title="enum qlog::events::connectivity::ConnectionClosedTrigger">ConnectionClosedTrigger</a></h3></section><section id="impl-Unpin-for-ConnectionClosedTrigger" class="impl"><a href="#impl-Unpin-for-ConnectionClosedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.ConnectionClosedTrigger.html" title="enum qlog::events::connectivity::ConnectionClosedTrigger">ConnectionClosedTrigger</a></h3></section><section id="impl-UnwindSafe-for-ConnectionClosedTrigger" class="impl"><a href="#impl-UnwindSafe-for-ConnectionClosedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.ConnectionClosedTrigger.html" title="enum qlog::events::connectivity::ConnectionClosedTrigger">ConnectionClosedTrigger</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/connectivity/enum.ConnectionState.html b/qlog/events/connectivity/enum.ConnectionState.html
new file mode 100644
index 0000000..b7babc7
--- /dev/null
+++ b/qlog/events/connectivity/enum.ConnectionState.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ConnectionState` enum in crate `qlog`."><title>ConnectionState in qlog::events::connectivity - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">ConnectionState</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Attempted">Attempted</a></li><li><a href="#variant.Closed">Closed</a></li><li><a href="#variant.Closing">Closing</a></li><li><a href="#variant.Draining">Draining</a></li><li><a href="#variant.EarlyWrite">EarlyWrite</a></li><li><a href="#variant.HandshakeCompleted">HandshakeCompleted</a></li><li><a href="#variant.HandshakeConfirmed">HandshakeConfirmed</a></li><li><a href="#variant.HandshakeStarted">HandshakeStarted</a></li><li><a href="#variant.PeerValidated">PeerValidated</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-ConnectionState">Clone</a></li><li><a href="#impl-Debug-for-ConnectionState">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-ConnectionState">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-ConnectionState">Eq</a></li><li><a href="#impl-PartialEq-for-ConnectionState">PartialEq</a></li><li><a href="#impl-Serialize-for-ConnectionState">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-ConnectionState">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-ConnectionState">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-ConnectionState">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ConnectionState">Send</a></li><li><a href="#impl-Sync-for-ConnectionState">Sync</a></li><li><a href="#impl-Unpin-for-ConnectionState">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ConnectionState">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::connectivity</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">connectivity</a>::<wbr><a class="enum" href="#">ConnectionState</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/connectivity.rs.html#43-53">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum ConnectionState {
+    Attempted,
+    PeerValidated,
+    HandshakeStarted,
+    EarlyWrite,
+    HandshakeCompleted,
+    HandshakeConfirmed,
+    Closing,
+    Draining,
+    Closed,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Attempted" class="variant"><a href="#variant.Attempted" class="anchor">§</a><h3 class="code-header">Attempted</h3></section><section id="variant.PeerValidated" class="variant"><a href="#variant.PeerValidated" class="anchor">§</a><h3 class="code-header">PeerValidated</h3></section><section id="variant.HandshakeStarted" class="variant"><a href="#variant.HandshakeStarted" class="anchor">§</a><h3 class="code-header">HandshakeStarted</h3></section><section id="variant.EarlyWrite" class="variant"><a href="#variant.EarlyWrite" class="anchor">§</a><h3 class="code-header">EarlyWrite</h3></section><section id="variant.HandshakeCompleted" class="variant"><a href="#variant.HandshakeCompleted" class="anchor">§</a><h3 class="code-header">HandshakeCompleted</h3></section><section id="variant.HandshakeConfirmed" class="variant"><a href="#variant.HandshakeConfirmed" class="anchor">§</a><h3 class="code-header">HandshakeConfirmed</h3></section><section id="variant.Closing" class="variant"><a href="#variant.Closing" class="anchor">§</a><h3 class="code-header">Closing</h3></section><section id="variant.Draining" class="variant"><a href="#variant.Draining" class="anchor">§</a><h3 class="code-header">Draining</h3></section><section id="variant.Closed" class="variant"><a href="#variant.Closed" class="anchor">§</a><h3 class="code-header">Closed</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ConnectionState" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#41">source</a><a href="#impl-Clone-for-ConnectionState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#41">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-ConnectionState" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#41">source</a><a href="#impl-Debug-for-ConnectionState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#41">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-ConnectionState" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#41">source</a><a href="#impl-Deserialize%3C'de%3E-for-ConnectionState" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#41">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-ConnectionState" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#41">source</a><a href="#impl-PartialEq-for-ConnectionState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#41">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-ConnectionState" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#41">source</a><a href="#impl-Serialize-for-ConnectionState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#41">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-ConnectionState" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#41">source</a><a href="#impl-Eq-for-ConnectionState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a></h3></section><section id="impl-StructuralPartialEq-for-ConnectionState" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#41">source</a><a href="#impl-StructuralPartialEq-for-ConnectionState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-ConnectionState" class="impl"><a href="#impl-Freeze-for-ConnectionState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a></h3></section><section id="impl-RefUnwindSafe-for-ConnectionState" class="impl"><a href="#impl-RefUnwindSafe-for-ConnectionState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a></h3></section><section id="impl-Send-for-ConnectionState" class="impl"><a href="#impl-Send-for-ConnectionState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a></h3></section><section id="impl-Sync-for-ConnectionState" class="impl"><a href="#impl-Sync-for-ConnectionState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a></h3></section><section id="impl-Unpin-for-ConnectionState" class="impl"><a href="#impl-Unpin-for-ConnectionState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a></h3></section><section id="impl-UnwindSafe-for-ConnectionState" class="impl"><a href="#impl-UnwindSafe-for-ConnectionState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/connectivity/enum.ConnectivityEventType.html b/qlog/events/connectivity/enum.ConnectivityEventType.html
new file mode 100644
index 0000000..49dfe0b
--- /dev/null
+++ b/qlog/events/connectivity/enum.ConnectivityEventType.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ConnectivityEventType` enum in crate `qlog`."><title>ConnectivityEventType in qlog::events::connectivity - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">ConnectivityEventType</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.ConnectionClosed">ConnectionClosed</a></li><li><a href="#variant.ConnectionIdUpdated">ConnectionIdUpdated</a></li><li><a href="#variant.ConnectionStarted">ConnectionStarted</a></li><li><a href="#variant.ConnectionStateUpdated">ConnectionStateUpdated</a></li><li><a href="#variant.MtuUpdated">MtuUpdated</a></li><li><a href="#variant.ServerListening">ServerListening</a></li><li><a href="#variant.SpinBitUpdated">SpinBitUpdated</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-ConnectivityEventType">Clone</a></li><li><a href="#impl-Copy-for-ConnectivityEventType">Copy</a></li><li><a href="#impl-Debug-for-ConnectivityEventType">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-ConnectivityEventType">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-ConnectivityEventType">Eq</a></li><li><a href="#impl-PartialEq-for-ConnectivityEventType">PartialEq</a></li><li><a href="#impl-Serialize-for-ConnectivityEventType">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-ConnectivityEventType">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-ConnectivityEventType">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-ConnectivityEventType">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ConnectivityEventType">Send</a></li><li><a href="#impl-Sync-for-ConnectivityEventType">Sync</a></li><li><a href="#impl-Unpin-for-ConnectivityEventType">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ConnectivityEventType">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::connectivity</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">connectivity</a>::<wbr><a class="enum" href="#">ConnectivityEventType</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/connectivity.rs.html#57-65">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum ConnectivityEventType {
+    ServerListening,
+    ConnectionStarted,
+    ConnectionClosed,
+    ConnectionIdUpdated,
+    SpinBitUpdated,
+    ConnectionStateUpdated,
+    MtuUpdated,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.ServerListening" class="variant"><a href="#variant.ServerListening" class="anchor">§</a><h3 class="code-header">ServerListening</h3></section><section id="variant.ConnectionStarted" class="variant"><a href="#variant.ConnectionStarted" class="anchor">§</a><h3 class="code-header">ConnectionStarted</h3></section><section id="variant.ConnectionClosed" class="variant"><a href="#variant.ConnectionClosed" class="anchor">§</a><h3 class="code-header">ConnectionClosed</h3></section><section id="variant.ConnectionIdUpdated" class="variant"><a href="#variant.ConnectionIdUpdated" class="anchor">§</a><h3 class="code-header">ConnectionIdUpdated</h3></section><section id="variant.SpinBitUpdated" class="variant"><a href="#variant.SpinBitUpdated" class="anchor">§</a><h3 class="code-header">SpinBitUpdated</h3></section><section id="variant.ConnectionStateUpdated" class="variant"><a href="#variant.ConnectionStateUpdated" class="anchor">§</a><h3 class="code-header">ConnectionStateUpdated</h3></section><section id="variant.MtuUpdated" class="variant"><a href="#variant.MtuUpdated" class="anchor">§</a><h3 class="code-header">MtuUpdated</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ConnectivityEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#55">source</a><a href="#impl-Clone-for-ConnectivityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.ConnectivityEventType.html" title="enum qlog::events::connectivity::ConnectivityEventType">ConnectivityEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#55">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.ConnectivityEventType.html" title="enum qlog::events::connectivity::ConnectivityEventType">ConnectivityEventType</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-ConnectivityEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#55">source</a><a href="#impl-Debug-for-ConnectivityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.ConnectivityEventType.html" title="enum qlog::events::connectivity::ConnectivityEventType">ConnectivityEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#55">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-ConnectivityEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#55">source</a><a href="#impl-Deserialize%3C'de%3E-for-ConnectivityEventType" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.ConnectivityEventType.html" title="enum qlog::events::connectivity::ConnectivityEventType">ConnectivityEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#55">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-ConnectivityEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#55">source</a><a href="#impl-PartialEq-for-ConnectivityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.ConnectivityEventType.html" title="enum qlog::events::connectivity::ConnectivityEventType">ConnectivityEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#55">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.ConnectivityEventType.html" title="enum qlog::events::connectivity::ConnectivityEventType">ConnectivityEventType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-ConnectivityEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#55">source</a><a href="#impl-Serialize-for-ConnectivityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.ConnectivityEventType.html" title="enum qlog::events::connectivity::ConnectivityEventType">ConnectivityEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#55">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-ConnectivityEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#55">source</a><a href="#impl-Copy-for-ConnectivityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.ConnectivityEventType.html" title="enum qlog::events::connectivity::ConnectivityEventType">ConnectivityEventType</a></h3></section><section id="impl-Eq-for-ConnectivityEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#55">source</a><a href="#impl-Eq-for-ConnectivityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.ConnectivityEventType.html" title="enum qlog::events::connectivity::ConnectivityEventType">ConnectivityEventType</a></h3></section><section id="impl-StructuralPartialEq-for-ConnectivityEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#55">source</a><a href="#impl-StructuralPartialEq-for-ConnectivityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.ConnectivityEventType.html" title="enum qlog::events::connectivity::ConnectivityEventType">ConnectivityEventType</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-ConnectivityEventType" class="impl"><a href="#impl-Freeze-for-ConnectivityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.ConnectivityEventType.html" title="enum qlog::events::connectivity::ConnectivityEventType">ConnectivityEventType</a></h3></section><section id="impl-RefUnwindSafe-for-ConnectivityEventType" class="impl"><a href="#impl-RefUnwindSafe-for-ConnectivityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.ConnectivityEventType.html" title="enum qlog::events::connectivity::ConnectivityEventType">ConnectivityEventType</a></h3></section><section id="impl-Send-for-ConnectivityEventType" class="impl"><a href="#impl-Send-for-ConnectivityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.ConnectivityEventType.html" title="enum qlog::events::connectivity::ConnectivityEventType">ConnectivityEventType</a></h3></section><section id="impl-Sync-for-ConnectivityEventType" class="impl"><a href="#impl-Sync-for-ConnectivityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.ConnectivityEventType.html" title="enum qlog::events::connectivity::ConnectivityEventType">ConnectivityEventType</a></h3></section><section id="impl-Unpin-for-ConnectivityEventType" class="impl"><a href="#impl-Unpin-for-ConnectivityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.ConnectivityEventType.html" title="enum qlog::events::connectivity::ConnectivityEventType">ConnectivityEventType</a></h3></section><section id="impl-UnwindSafe-for-ConnectivityEventType" class="impl"><a href="#impl-UnwindSafe-for-ConnectivityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.ConnectivityEventType.html" title="enum qlog::events::connectivity::ConnectivityEventType">ConnectivityEventType</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/connectivity/enum.TransportOwner.html b/qlog/events/connectivity/enum.TransportOwner.html
new file mode 100644
index 0000000..1192bd7
--- /dev/null
+++ b/qlog/events/connectivity/enum.TransportOwner.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `TransportOwner` enum in crate `qlog`."><title>TransportOwner in qlog::events::connectivity - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">TransportOwner</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Local">Local</a></li><li><a href="#variant.Remote">Remote</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-TransportOwner">Clone</a></li><li><a href="#impl-Debug-for-TransportOwner">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-TransportOwner">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-TransportOwner">Eq</a></li><li><a href="#impl-PartialEq-for-TransportOwner">PartialEq</a></li><li><a href="#impl-Serialize-for-TransportOwner">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-TransportOwner">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-TransportOwner">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-TransportOwner">RefUnwindSafe</a></li><li><a href="#impl-Send-for-TransportOwner">Send</a></li><li><a href="#impl-Sync-for-TransportOwner">Sync</a></li><li><a href="#impl-Unpin-for-TransportOwner">Unpin</a></li><li><a href="#impl-UnwindSafe-for-TransportOwner">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::connectivity</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">connectivity</a>::<wbr><a class="enum" href="#">TransportOwner</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/connectivity.rs.html#36-39">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum TransportOwner {
+    Local,
+    Remote,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Local" class="variant"><a href="#variant.Local" class="anchor">§</a><h3 class="code-header">Local</h3></section><section id="variant.Remote" class="variant"><a href="#variant.Remote" class="anchor">§</a><h3 class="code-header">Remote</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-TransportOwner" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#34">source</a><a href="#impl-Clone-for-TransportOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#34">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-TransportOwner" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#34">source</a><a href="#impl-Debug-for-TransportOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#34">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-TransportOwner" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#34">source</a><a href="#impl-Deserialize%3C'de%3E-for-TransportOwner" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#34">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-TransportOwner" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#34">source</a><a href="#impl-PartialEq-for-TransportOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#34">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-TransportOwner" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#34">source</a><a href="#impl-Serialize-for-TransportOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#34">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-TransportOwner" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#34">source</a><a href="#impl-Eq-for-TransportOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a></h3></section><section id="impl-StructuralPartialEq-for-TransportOwner" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#34">source</a><a href="#impl-StructuralPartialEq-for-TransportOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-TransportOwner" class="impl"><a href="#impl-Freeze-for-TransportOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a></h3></section><section id="impl-RefUnwindSafe-for-TransportOwner" class="impl"><a href="#impl-RefUnwindSafe-for-TransportOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a></h3></section><section id="impl-Send-for-TransportOwner" class="impl"><a href="#impl-Send-for-TransportOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a></h3></section><section id="impl-Sync-for-TransportOwner" class="impl"><a href="#impl-Sync-for-TransportOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a></h3></section><section id="impl-Unpin-for-TransportOwner" class="impl"><a href="#impl-Unpin-for-TransportOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a></h3></section><section id="impl-UnwindSafe-for-TransportOwner" class="impl"><a href="#impl-UnwindSafe-for-TransportOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/connectivity/index.html b/qlog/events/connectivity/index.html
new file mode 100644
index 0000000..a82b2da
--- /dev/null
+++ b/qlog/events/connectivity/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `connectivity` mod in crate `qlog`."><title>qlog::events::connectivity - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Module connectivity</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></section><h2><a href="../index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a class="mod" href="#">connectivity</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/connectivity.rs.html#27-147">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.ConnectionClosed.html" title="struct qlog::events::connectivity::ConnectionClosed">ConnectionClosed</a></div></li><li><div class="item-name"><a class="struct" href="struct.ConnectionIdUpdated.html" title="struct qlog::events::connectivity::ConnectionIdUpdated">ConnectionIdUpdated</a></div></li><li><div class="item-name"><a class="struct" href="struct.ConnectionStarted.html" title="struct qlog::events::connectivity::ConnectionStarted">ConnectionStarted</a></div></li><li><div class="item-name"><a class="struct" href="struct.ConnectionStateUpdated.html" title="struct qlog::events::connectivity::ConnectionStateUpdated">ConnectionStateUpdated</a></div></li><li><div class="item-name"><a class="struct" href="struct.MtuUpdated.html" title="struct qlog::events::connectivity::MtuUpdated">MtuUpdated</a></div></li><li><div class="item-name"><a class="struct" href="struct.ServerListening.html" title="struct qlog::events::connectivity::ServerListening">ServerListening</a></div></li><li><div class="item-name"><a class="struct" href="struct.SpinBitUpdated.html" title="struct qlog::events::connectivity::SpinBitUpdated">SpinBitUpdated</a></div></li></ul><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="enum" href="enum.ConnectionClosedTrigger.html" title="enum qlog::events::connectivity::ConnectionClosedTrigger">ConnectionClosedTrigger</a></div></li><li><div class="item-name"><a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a></div></li><li><div class="item-name"><a class="enum" href="enum.ConnectivityEventType.html" title="enum qlog::events::connectivity::ConnectivityEventType">ConnectivityEventType</a></div></li><li><div class="item-name"><a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a></div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/connectivity/sidebar-items.js b/qlog/events/connectivity/sidebar-items.js
new file mode 100644
index 0000000..f43dfba
--- /dev/null
+++ b/qlog/events/connectivity/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"enum":["ConnectionClosedTrigger","ConnectionState","ConnectivityEventType","TransportOwner"],"struct":["ConnectionClosed","ConnectionIdUpdated","ConnectionStarted","ConnectionStateUpdated","MtuUpdated","ServerListening","SpinBitUpdated"]};
\ No newline at end of file
diff --git a/qlog/events/connectivity/struct.ConnectionClosed.html b/qlog/events/connectivity/struct.ConnectionClosed.html
new file mode 100644
index 0000000..eb69ff5
--- /dev/null
+++ b/qlog/events/connectivity/struct.ConnectionClosed.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ConnectionClosed` struct in crate `qlog`."><title>ConnectionClosed in qlog::events::connectivity - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">ConnectionClosed</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.application_code">application_code</a></li><li><a href="#structfield.connection_code">connection_code</a></li><li><a href="#structfield.internal_code">internal_code</a></li><li><a href="#structfield.owner">owner</a></li><li><a href="#structfield.reason">reason</a></li><li><a href="#structfield.trigger">trigger</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-ConnectionClosed">Clone</a></li><li><a href="#impl-Debug-for-ConnectionClosed">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-ConnectionClosed">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-ConnectionClosed">Eq</a></li><li><a href="#impl-PartialEq-for-ConnectionClosed">PartialEq</a></li><li><a href="#impl-Serialize-for-ConnectionClosed">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-ConnectionClosed">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-ConnectionClosed">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-ConnectionClosed">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ConnectionClosed">Send</a></li><li><a href="#impl-Sync-for-ConnectionClosed">Sync</a></li><li><a href="#impl-Unpin-for-ConnectionClosed">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ConnectionClosed">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::connectivity</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">connectivity</a>::<wbr><a class="struct" href="#">ConnectionClosed</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/connectivity.rs.html#107-117">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct ConnectionClosed {
+    pub owner: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a>&gt;,
+    pub connection_code: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="../enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a>&gt;,
+    pub application_code: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="../enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a>&gt;,
+    pub internal_code: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+    pub reason: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub trigger: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.ConnectionClosedTrigger.html" title="enum qlog::events::connectivity::ConnectionClosedTrigger">ConnectionClosedTrigger</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.owner" class="structfield section-header"><a href="#structfield.owner" class="anchor field">§</a><code>owner: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a>&gt;</code></span><span id="structfield.connection_code" class="structfield section-header"><a href="#structfield.connection_code" class="anchor field">§</a><code>connection_code: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="../enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a>&gt;</code></span><span id="structfield.application_code" class="structfield section-header"><a href="#structfield.application_code" class="anchor field">§</a><code>application_code: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="../enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a>&gt;</code></span><span id="structfield.internal_code" class="structfield section-header"><a href="#structfield.internal_code" class="anchor field">§</a><code>internal_code: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span><span id="structfield.reason" class="structfield section-header"><a href="#structfield.reason" class="anchor field">§</a><code>reason: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.trigger" class="structfield section-header"><a href="#structfield.trigger" class="anchor field">§</a><code>trigger: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.ConnectionClosedTrigger.html" title="enum qlog::events::connectivity::ConnectionClosedTrigger">ConnectionClosedTrigger</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ConnectionClosed" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#106">source</a><a href="#impl-Clone-for-ConnectionClosed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.ConnectionClosed.html" title="struct qlog::events::connectivity::ConnectionClosed">ConnectionClosed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#106">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.ConnectionClosed.html" title="struct qlog::events::connectivity::ConnectionClosed">ConnectionClosed</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-ConnectionClosed" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#106">source</a><a href="#impl-Debug-for-ConnectionClosed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.ConnectionClosed.html" title="struct qlog::events::connectivity::ConnectionClosed">ConnectionClosed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#106">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-ConnectionClosed" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#106">source</a><a href="#impl-Deserialize%3C'de%3E-for-ConnectionClosed" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.ConnectionClosed.html" title="struct qlog::events::connectivity::ConnectionClosed">ConnectionClosed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#106">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-ConnectionClosed" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#106">source</a><a href="#impl-PartialEq-for-ConnectionClosed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.ConnectionClosed.html" title="struct qlog::events::connectivity::ConnectionClosed">ConnectionClosed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#106">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.ConnectionClosed.html" title="struct qlog::events::connectivity::ConnectionClosed">ConnectionClosed</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-ConnectionClosed" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#106">source</a><a href="#impl-Serialize-for-ConnectionClosed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.ConnectionClosed.html" title="struct qlog::events::connectivity::ConnectionClosed">ConnectionClosed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#106">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-ConnectionClosed" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#106">source</a><a href="#impl-Eq-for-ConnectionClosed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.ConnectionClosed.html" title="struct qlog::events::connectivity::ConnectionClosed">ConnectionClosed</a></h3></section><section id="impl-StructuralPartialEq-for-ConnectionClosed" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#106">source</a><a href="#impl-StructuralPartialEq-for-ConnectionClosed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.ConnectionClosed.html" title="struct qlog::events::connectivity::ConnectionClosed">ConnectionClosed</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-ConnectionClosed" class="impl"><a href="#impl-Freeze-for-ConnectionClosed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.ConnectionClosed.html" title="struct qlog::events::connectivity::ConnectionClosed">ConnectionClosed</a></h3></section><section id="impl-RefUnwindSafe-for-ConnectionClosed" class="impl"><a href="#impl-RefUnwindSafe-for-ConnectionClosed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.ConnectionClosed.html" title="struct qlog::events::connectivity::ConnectionClosed">ConnectionClosed</a></h3></section><section id="impl-Send-for-ConnectionClosed" class="impl"><a href="#impl-Send-for-ConnectionClosed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.ConnectionClosed.html" title="struct qlog::events::connectivity::ConnectionClosed">ConnectionClosed</a></h3></section><section id="impl-Sync-for-ConnectionClosed" class="impl"><a href="#impl-Sync-for-ConnectionClosed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.ConnectionClosed.html" title="struct qlog::events::connectivity::ConnectionClosed">ConnectionClosed</a></h3></section><section id="impl-Unpin-for-ConnectionClosed" class="impl"><a href="#impl-Unpin-for-ConnectionClosed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.ConnectionClosed.html" title="struct qlog::events::connectivity::ConnectionClosed">ConnectionClosed</a></h3></section><section id="impl-UnwindSafe-for-ConnectionClosed" class="impl"><a href="#impl-UnwindSafe-for-ConnectionClosed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.ConnectionClosed.html" title="struct qlog::events::connectivity::ConnectionClosed">ConnectionClosed</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/connectivity/struct.ConnectionIdUpdated.html b/qlog/events/connectivity/struct.ConnectionIdUpdated.html
new file mode 100644
index 0000000..298027f
--- /dev/null
+++ b/qlog/events/connectivity/struct.ConnectionIdUpdated.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ConnectionIdUpdated` struct in crate `qlog`."><title>ConnectionIdUpdated in qlog::events::connectivity - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">ConnectionIdUpdated</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.new">new</a></li><li><a href="#structfield.old">old</a></li><li><a href="#structfield.owner">owner</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-ConnectionIdUpdated">Clone</a></li><li><a href="#impl-Debug-for-ConnectionIdUpdated">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-ConnectionIdUpdated">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-ConnectionIdUpdated">Eq</a></li><li><a href="#impl-PartialEq-for-ConnectionIdUpdated">PartialEq</a></li><li><a href="#impl-Serialize-for-ConnectionIdUpdated">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-ConnectionIdUpdated">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-ConnectionIdUpdated">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-ConnectionIdUpdated">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ConnectionIdUpdated">Send</a></li><li><a href="#impl-Sync-for-ConnectionIdUpdated">Sync</a></li><li><a href="#impl-Unpin-for-ConnectionIdUpdated">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ConnectionIdUpdated">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::connectivity</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">connectivity</a>::<wbr><a class="struct" href="#">ConnectionIdUpdated</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/connectivity.rs.html#121-126">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct ConnectionIdUpdated {
+    pub owner: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a>&gt;,
+    pub old: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;,
+    pub new: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.owner" class="structfield section-header"><a href="#structfield.owner" class="anchor field">§</a><code>owner: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a>&gt;</code></span><span id="structfield.old" class="structfield section-header"><a href="#structfield.old" class="anchor field">§</a><code>old: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;</code></span><span id="structfield.new" class="structfield section-header"><a href="#structfield.new" class="anchor field">§</a><code>new: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ConnectionIdUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#120">source</a><a href="#impl-Clone-for-ConnectionIdUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.ConnectionIdUpdated.html" title="struct qlog::events::connectivity::ConnectionIdUpdated">ConnectionIdUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#120">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.ConnectionIdUpdated.html" title="struct qlog::events::connectivity::ConnectionIdUpdated">ConnectionIdUpdated</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-ConnectionIdUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#120">source</a><a href="#impl-Debug-for-ConnectionIdUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.ConnectionIdUpdated.html" title="struct qlog::events::connectivity::ConnectionIdUpdated">ConnectionIdUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#120">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-ConnectionIdUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#120">source</a><a href="#impl-Deserialize%3C'de%3E-for-ConnectionIdUpdated" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.ConnectionIdUpdated.html" title="struct qlog::events::connectivity::ConnectionIdUpdated">ConnectionIdUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#120">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-ConnectionIdUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#120">source</a><a href="#impl-PartialEq-for-ConnectionIdUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.ConnectionIdUpdated.html" title="struct qlog::events::connectivity::ConnectionIdUpdated">ConnectionIdUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#120">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.ConnectionIdUpdated.html" title="struct qlog::events::connectivity::ConnectionIdUpdated">ConnectionIdUpdated</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-ConnectionIdUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#120">source</a><a href="#impl-Serialize-for-ConnectionIdUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.ConnectionIdUpdated.html" title="struct qlog::events::connectivity::ConnectionIdUpdated">ConnectionIdUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#120">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-ConnectionIdUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#120">source</a><a href="#impl-Eq-for-ConnectionIdUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.ConnectionIdUpdated.html" title="struct qlog::events::connectivity::ConnectionIdUpdated">ConnectionIdUpdated</a></h3></section><section id="impl-StructuralPartialEq-for-ConnectionIdUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#120">source</a><a href="#impl-StructuralPartialEq-for-ConnectionIdUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.ConnectionIdUpdated.html" title="struct qlog::events::connectivity::ConnectionIdUpdated">ConnectionIdUpdated</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-ConnectionIdUpdated" class="impl"><a href="#impl-Freeze-for-ConnectionIdUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.ConnectionIdUpdated.html" title="struct qlog::events::connectivity::ConnectionIdUpdated">ConnectionIdUpdated</a></h3></section><section id="impl-RefUnwindSafe-for-ConnectionIdUpdated" class="impl"><a href="#impl-RefUnwindSafe-for-ConnectionIdUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.ConnectionIdUpdated.html" title="struct qlog::events::connectivity::ConnectionIdUpdated">ConnectionIdUpdated</a></h3></section><section id="impl-Send-for-ConnectionIdUpdated" class="impl"><a href="#impl-Send-for-ConnectionIdUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.ConnectionIdUpdated.html" title="struct qlog::events::connectivity::ConnectionIdUpdated">ConnectionIdUpdated</a></h3></section><section id="impl-Sync-for-ConnectionIdUpdated" class="impl"><a href="#impl-Sync-for-ConnectionIdUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.ConnectionIdUpdated.html" title="struct qlog::events::connectivity::ConnectionIdUpdated">ConnectionIdUpdated</a></h3></section><section id="impl-Unpin-for-ConnectionIdUpdated" class="impl"><a href="#impl-Unpin-for-ConnectionIdUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.ConnectionIdUpdated.html" title="struct qlog::events::connectivity::ConnectionIdUpdated">ConnectionIdUpdated</a></h3></section><section id="impl-UnwindSafe-for-ConnectionIdUpdated" class="impl"><a href="#impl-UnwindSafe-for-ConnectionIdUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.ConnectionIdUpdated.html" title="struct qlog::events::connectivity::ConnectionIdUpdated">ConnectionIdUpdated</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/connectivity/struct.ConnectionStarted.html b/qlog/events/connectivity/struct.ConnectionStarted.html
new file mode 100644
index 0000000..c8886b5
--- /dev/null
+++ b/qlog/events/connectivity/struct.ConnectionStarted.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ConnectionStarted` struct in crate `qlog`."><title>ConnectionStarted in qlog::events::connectivity - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">ConnectionStarted</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.dst_cid">dst_cid</a></li><li><a href="#structfield.dst_ip">dst_ip</a></li><li><a href="#structfield.dst_port">dst_port</a></li><li><a href="#structfield.ip_version">ip_version</a></li><li><a href="#structfield.protocol">protocol</a></li><li><a href="#structfield.src_cid">src_cid</a></li><li><a href="#structfield.src_ip">src_ip</a></li><li><a href="#structfield.src_port">src_port</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-ConnectionStarted">Clone</a></li><li><a href="#impl-Debug-for-ConnectionStarted">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-ConnectionStarted">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-ConnectionStarted">Eq</a></li><li><a href="#impl-PartialEq-for-ConnectionStarted">PartialEq</a></li><li><a href="#impl-Serialize-for-ConnectionStarted">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-ConnectionStarted">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-ConnectionStarted">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-ConnectionStarted">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ConnectionStarted">Send</a></li><li><a href="#impl-Sync-for-ConnectionStarted">Sync</a></li><li><a href="#impl-Unpin-for-ConnectionStarted">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ConnectionStarted">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::connectivity</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">connectivity</a>::<wbr><a class="struct" href="#">ConnectionStarted</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/connectivity.rs.html#92-103">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct ConnectionStarted {
+    pub ip_version: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub src_ip: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub dst_ip: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub protocol: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub src_port: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;,
+    pub dst_port: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;,
+    pub src_cid: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;,
+    pub dst_cid: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.ip_version" class="structfield section-header"><a href="#structfield.ip_version" class="anchor field">§</a><code>ip_version: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.src_ip" class="structfield section-header"><a href="#structfield.src_ip" class="anchor field">§</a><code>src_ip: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.dst_ip" class="structfield section-header"><a href="#structfield.dst_ip" class="anchor field">§</a><code>dst_ip: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.protocol" class="structfield section-header"><a href="#structfield.protocol" class="anchor field">§</a><code>protocol: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.src_port" class="structfield section-header"><a href="#structfield.src_port" class="anchor field">§</a><code>src_port: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;</code></span><span id="structfield.dst_port" class="structfield section-header"><a href="#structfield.dst_port" class="anchor field">§</a><code>dst_port: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;</code></span><span id="structfield.src_cid" class="structfield section-header"><a href="#structfield.src_cid" class="anchor field">§</a><code>src_cid: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;</code></span><span id="structfield.dst_cid" class="structfield section-header"><a href="#structfield.dst_cid" class="anchor field">§</a><code>dst_cid: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ConnectionStarted" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#91">source</a><a href="#impl-Clone-for-ConnectionStarted" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.ConnectionStarted.html" title="struct qlog::events::connectivity::ConnectionStarted">ConnectionStarted</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#91">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.ConnectionStarted.html" title="struct qlog::events::connectivity::ConnectionStarted">ConnectionStarted</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-ConnectionStarted" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#91">source</a><a href="#impl-Debug-for-ConnectionStarted" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.ConnectionStarted.html" title="struct qlog::events::connectivity::ConnectionStarted">ConnectionStarted</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#91">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-ConnectionStarted" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#91">source</a><a href="#impl-Deserialize%3C'de%3E-for-ConnectionStarted" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.ConnectionStarted.html" title="struct qlog::events::connectivity::ConnectionStarted">ConnectionStarted</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#91">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-ConnectionStarted" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#91">source</a><a href="#impl-PartialEq-for-ConnectionStarted" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.ConnectionStarted.html" title="struct qlog::events::connectivity::ConnectionStarted">ConnectionStarted</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#91">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.ConnectionStarted.html" title="struct qlog::events::connectivity::ConnectionStarted">ConnectionStarted</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-ConnectionStarted" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#91">source</a><a href="#impl-Serialize-for-ConnectionStarted" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.ConnectionStarted.html" title="struct qlog::events::connectivity::ConnectionStarted">ConnectionStarted</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#91">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-ConnectionStarted" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#91">source</a><a href="#impl-Eq-for-ConnectionStarted" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.ConnectionStarted.html" title="struct qlog::events::connectivity::ConnectionStarted">ConnectionStarted</a></h3></section><section id="impl-StructuralPartialEq-for-ConnectionStarted" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#91">source</a><a href="#impl-StructuralPartialEq-for-ConnectionStarted" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.ConnectionStarted.html" title="struct qlog::events::connectivity::ConnectionStarted">ConnectionStarted</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-ConnectionStarted" class="impl"><a href="#impl-Freeze-for-ConnectionStarted" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.ConnectionStarted.html" title="struct qlog::events::connectivity::ConnectionStarted">ConnectionStarted</a></h3></section><section id="impl-RefUnwindSafe-for-ConnectionStarted" class="impl"><a href="#impl-RefUnwindSafe-for-ConnectionStarted" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.ConnectionStarted.html" title="struct qlog::events::connectivity::ConnectionStarted">ConnectionStarted</a></h3></section><section id="impl-Send-for-ConnectionStarted" class="impl"><a href="#impl-Send-for-ConnectionStarted" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.ConnectionStarted.html" title="struct qlog::events::connectivity::ConnectionStarted">ConnectionStarted</a></h3></section><section id="impl-Sync-for-ConnectionStarted" class="impl"><a href="#impl-Sync-for-ConnectionStarted" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.ConnectionStarted.html" title="struct qlog::events::connectivity::ConnectionStarted">ConnectionStarted</a></h3></section><section id="impl-Unpin-for-ConnectionStarted" class="impl"><a href="#impl-Unpin-for-ConnectionStarted" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.ConnectionStarted.html" title="struct qlog::events::connectivity::ConnectionStarted">ConnectionStarted</a></h3></section><section id="impl-UnwindSafe-for-ConnectionStarted" class="impl"><a href="#impl-UnwindSafe-for-ConnectionStarted" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.ConnectionStarted.html" title="struct qlog::events::connectivity::ConnectionStarted">ConnectionStarted</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/connectivity/struct.ConnectionStateUpdated.html b/qlog/events/connectivity/struct.ConnectionStateUpdated.html
new file mode 100644
index 0000000..0215d01
--- /dev/null
+++ b/qlog/events/connectivity/struct.ConnectionStateUpdated.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ConnectionStateUpdated` struct in crate `qlog`."><title>ConnectionStateUpdated in qlog::events::connectivity - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">ConnectionStateUpdated</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.new">new</a></li><li><a href="#structfield.old">old</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-ConnectionStateUpdated">Clone</a></li><li><a href="#impl-Debug-for-ConnectionStateUpdated">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-ConnectionStateUpdated">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-ConnectionStateUpdated">Eq</a></li><li><a href="#impl-PartialEq-for-ConnectionStateUpdated">PartialEq</a></li><li><a href="#impl-Serialize-for-ConnectionStateUpdated">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-ConnectionStateUpdated">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-ConnectionStateUpdated">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-ConnectionStateUpdated">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ConnectionStateUpdated">Send</a></li><li><a href="#impl-Sync-for-ConnectionStateUpdated">Sync</a></li><li><a href="#impl-Unpin-for-ConnectionStateUpdated">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ConnectionStateUpdated">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::connectivity</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">connectivity</a>::<wbr><a class="struct" href="#">ConnectionStateUpdated</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/connectivity.rs.html#136-139">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct ConnectionStateUpdated {
+    pub old: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a>&gt;,
+    pub new: <a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a>,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.old" class="structfield section-header"><a href="#structfield.old" class="anchor field">§</a><code>old: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a>&gt;</code></span><span id="structfield.new" class="structfield section-header"><a href="#structfield.new" class="anchor field">§</a><code>new: <a class="enum" href="enum.ConnectionState.html" title="enum qlog::events::connectivity::ConnectionState">ConnectionState</a></code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ConnectionStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#135">source</a><a href="#impl-Clone-for-ConnectionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.ConnectionStateUpdated.html" title="struct qlog::events::connectivity::ConnectionStateUpdated">ConnectionStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#135">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.ConnectionStateUpdated.html" title="struct qlog::events::connectivity::ConnectionStateUpdated">ConnectionStateUpdated</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-ConnectionStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#135">source</a><a href="#impl-Debug-for-ConnectionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.ConnectionStateUpdated.html" title="struct qlog::events::connectivity::ConnectionStateUpdated">ConnectionStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#135">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-ConnectionStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#135">source</a><a href="#impl-Deserialize%3C'de%3E-for-ConnectionStateUpdated" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.ConnectionStateUpdated.html" title="struct qlog::events::connectivity::ConnectionStateUpdated">ConnectionStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#135">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-ConnectionStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#135">source</a><a href="#impl-PartialEq-for-ConnectionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.ConnectionStateUpdated.html" title="struct qlog::events::connectivity::ConnectionStateUpdated">ConnectionStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#135">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.ConnectionStateUpdated.html" title="struct qlog::events::connectivity::ConnectionStateUpdated">ConnectionStateUpdated</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-ConnectionStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#135">source</a><a href="#impl-Serialize-for-ConnectionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.ConnectionStateUpdated.html" title="struct qlog::events::connectivity::ConnectionStateUpdated">ConnectionStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#135">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-ConnectionStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#135">source</a><a href="#impl-Eq-for-ConnectionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.ConnectionStateUpdated.html" title="struct qlog::events::connectivity::ConnectionStateUpdated">ConnectionStateUpdated</a></h3></section><section id="impl-StructuralPartialEq-for-ConnectionStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#135">source</a><a href="#impl-StructuralPartialEq-for-ConnectionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.ConnectionStateUpdated.html" title="struct qlog::events::connectivity::ConnectionStateUpdated">ConnectionStateUpdated</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-ConnectionStateUpdated" class="impl"><a href="#impl-Freeze-for-ConnectionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.ConnectionStateUpdated.html" title="struct qlog::events::connectivity::ConnectionStateUpdated">ConnectionStateUpdated</a></h3></section><section id="impl-RefUnwindSafe-for-ConnectionStateUpdated" class="impl"><a href="#impl-RefUnwindSafe-for-ConnectionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.ConnectionStateUpdated.html" title="struct qlog::events::connectivity::ConnectionStateUpdated">ConnectionStateUpdated</a></h3></section><section id="impl-Send-for-ConnectionStateUpdated" class="impl"><a href="#impl-Send-for-ConnectionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.ConnectionStateUpdated.html" title="struct qlog::events::connectivity::ConnectionStateUpdated">ConnectionStateUpdated</a></h3></section><section id="impl-Sync-for-ConnectionStateUpdated" class="impl"><a href="#impl-Sync-for-ConnectionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.ConnectionStateUpdated.html" title="struct qlog::events::connectivity::ConnectionStateUpdated">ConnectionStateUpdated</a></h3></section><section id="impl-Unpin-for-ConnectionStateUpdated" class="impl"><a href="#impl-Unpin-for-ConnectionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.ConnectionStateUpdated.html" title="struct qlog::events::connectivity::ConnectionStateUpdated">ConnectionStateUpdated</a></h3></section><section id="impl-UnwindSafe-for-ConnectionStateUpdated" class="impl"><a href="#impl-UnwindSafe-for-ConnectionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.ConnectionStateUpdated.html" title="struct qlog::events::connectivity::ConnectionStateUpdated">ConnectionStateUpdated</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/connectivity/struct.MtuUpdated.html b/qlog/events/connectivity/struct.MtuUpdated.html
new file mode 100644
index 0000000..14a0a95
--- /dev/null
+++ b/qlog/events/connectivity/struct.MtuUpdated.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `MtuUpdated` struct in crate `qlog`."><title>MtuUpdated in qlog::events::connectivity - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">MtuUpdated</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.done">done</a></li><li><a href="#structfield.new">new</a></li><li><a href="#structfield.old">old</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-MtuUpdated">Clone</a></li><li><a href="#impl-Debug-for-MtuUpdated">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-MtuUpdated">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-MtuUpdated">Eq</a></li><li><a href="#impl-PartialEq-for-MtuUpdated">PartialEq</a></li><li><a href="#impl-Serialize-for-MtuUpdated">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-MtuUpdated">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-MtuUpdated">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-MtuUpdated">RefUnwindSafe</a></li><li><a href="#impl-Send-for-MtuUpdated">Send</a></li><li><a href="#impl-Sync-for-MtuUpdated">Sync</a></li><li><a href="#impl-Unpin-for-MtuUpdated">Unpin</a></li><li><a href="#impl-UnwindSafe-for-MtuUpdated">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::connectivity</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">connectivity</a>::<wbr><a class="struct" href="#">MtuUpdated</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/connectivity.rs.html#143-147">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct MtuUpdated {
+    pub old: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;,
+    pub new: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>,
+    pub done: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.old" class="structfield section-header"><a href="#structfield.old" class="anchor field">§</a><code>old: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;</code></span><span id="structfield.new" class="structfield section-header"><a href="#structfield.new" class="anchor field">§</a><code>new: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a></code></span><span id="structfield.done" class="structfield section-header"><a href="#structfield.done" class="anchor field">§</a><code>done: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-MtuUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#142">source</a><a href="#impl-Clone-for-MtuUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.MtuUpdated.html" title="struct qlog::events::connectivity::MtuUpdated">MtuUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#142">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.MtuUpdated.html" title="struct qlog::events::connectivity::MtuUpdated">MtuUpdated</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-MtuUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#142">source</a><a href="#impl-Debug-for-MtuUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.MtuUpdated.html" title="struct qlog::events::connectivity::MtuUpdated">MtuUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#142">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-MtuUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#142">source</a><a href="#impl-Deserialize%3C'de%3E-for-MtuUpdated" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.MtuUpdated.html" title="struct qlog::events::connectivity::MtuUpdated">MtuUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#142">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-MtuUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#142">source</a><a href="#impl-PartialEq-for-MtuUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.MtuUpdated.html" title="struct qlog::events::connectivity::MtuUpdated">MtuUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#142">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.MtuUpdated.html" title="struct qlog::events::connectivity::MtuUpdated">MtuUpdated</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-MtuUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#142">source</a><a href="#impl-Serialize-for-MtuUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.MtuUpdated.html" title="struct qlog::events::connectivity::MtuUpdated">MtuUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#142">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-MtuUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#142">source</a><a href="#impl-Eq-for-MtuUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.MtuUpdated.html" title="struct qlog::events::connectivity::MtuUpdated">MtuUpdated</a></h3></section><section id="impl-StructuralPartialEq-for-MtuUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#142">source</a><a href="#impl-StructuralPartialEq-for-MtuUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.MtuUpdated.html" title="struct qlog::events::connectivity::MtuUpdated">MtuUpdated</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-MtuUpdated" class="impl"><a href="#impl-Freeze-for-MtuUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.MtuUpdated.html" title="struct qlog::events::connectivity::MtuUpdated">MtuUpdated</a></h3></section><section id="impl-RefUnwindSafe-for-MtuUpdated" class="impl"><a href="#impl-RefUnwindSafe-for-MtuUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.MtuUpdated.html" title="struct qlog::events::connectivity::MtuUpdated">MtuUpdated</a></h3></section><section id="impl-Send-for-MtuUpdated" class="impl"><a href="#impl-Send-for-MtuUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.MtuUpdated.html" title="struct qlog::events::connectivity::MtuUpdated">MtuUpdated</a></h3></section><section id="impl-Sync-for-MtuUpdated" class="impl"><a href="#impl-Sync-for-MtuUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.MtuUpdated.html" title="struct qlog::events::connectivity::MtuUpdated">MtuUpdated</a></h3></section><section id="impl-Unpin-for-MtuUpdated" class="impl"><a href="#impl-Unpin-for-MtuUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.MtuUpdated.html" title="struct qlog::events::connectivity::MtuUpdated">MtuUpdated</a></h3></section><section id="impl-UnwindSafe-for-MtuUpdated" class="impl"><a href="#impl-UnwindSafe-for-MtuUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.MtuUpdated.html" title="struct qlog::events::connectivity::MtuUpdated">MtuUpdated</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/connectivity/struct.ServerListening.html b/qlog/events/connectivity/struct.ServerListening.html
new file mode 100644
index 0000000..67683f5
--- /dev/null
+++ b/qlog/events/connectivity/struct.ServerListening.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ServerListening` struct in crate `qlog`."><title>ServerListening in qlog::events::connectivity - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">ServerListening</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.ip_v4">ip_v4</a></li><li><a href="#structfield.ip_v6">ip_v6</a></li><li><a href="#structfield.port_v4">port_v4</a></li><li><a href="#structfield.port_v6">port_v6</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-ServerListening">Clone</a></li><li><a href="#impl-Debug-for-ServerListening">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-ServerListening">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-ServerListening">Eq</a></li><li><a href="#impl-PartialEq-for-ServerListening">PartialEq</a></li><li><a href="#impl-Serialize-for-ServerListening">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-ServerListening">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-ServerListening">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-ServerListening">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ServerListening">Send</a></li><li><a href="#impl-Sync-for-ServerListening">Sync</a></li><li><a href="#impl-Unpin-for-ServerListening">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ServerListening">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::connectivity</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">connectivity</a>::<wbr><a class="struct" href="#">ServerListening</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/connectivity.rs.html#81-88">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct ServerListening {
+    pub ip_v4: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub ip_v6: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub port_v4: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;,
+    pub port_v6: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;,
+    <span class="comment">/* private fields */</span>
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.ip_v4" class="structfield section-header"><a href="#structfield.ip_v4" class="anchor field">§</a><code>ip_v4: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.ip_v6" class="structfield section-header"><a href="#structfield.ip_v6" class="anchor field">§</a><code>ip_v6: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.port_v4" class="structfield section-header"><a href="#structfield.port_v4" class="anchor field">§</a><code>port_v4: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;</code></span><span id="structfield.port_v6" class="structfield section-header"><a href="#structfield.port_v6" class="anchor field">§</a><code>port_v6: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ServerListening" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#80">source</a><a href="#impl-Clone-for-ServerListening" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.ServerListening.html" title="struct qlog::events::connectivity::ServerListening">ServerListening</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#80">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.ServerListening.html" title="struct qlog::events::connectivity::ServerListening">ServerListening</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-ServerListening" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#80">source</a><a href="#impl-Debug-for-ServerListening" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.ServerListening.html" title="struct qlog::events::connectivity::ServerListening">ServerListening</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#80">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-ServerListening" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#80">source</a><a href="#impl-Deserialize%3C'de%3E-for-ServerListening" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.ServerListening.html" title="struct qlog::events::connectivity::ServerListening">ServerListening</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#80">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-ServerListening" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#80">source</a><a href="#impl-PartialEq-for-ServerListening" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.ServerListening.html" title="struct qlog::events::connectivity::ServerListening">ServerListening</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#80">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.ServerListening.html" title="struct qlog::events::connectivity::ServerListening">ServerListening</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-ServerListening" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#80">source</a><a href="#impl-Serialize-for-ServerListening" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.ServerListening.html" title="struct qlog::events::connectivity::ServerListening">ServerListening</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#80">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-ServerListening" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#80">source</a><a href="#impl-Eq-for-ServerListening" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.ServerListening.html" title="struct qlog::events::connectivity::ServerListening">ServerListening</a></h3></section><section id="impl-StructuralPartialEq-for-ServerListening" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#80">source</a><a href="#impl-StructuralPartialEq-for-ServerListening" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.ServerListening.html" title="struct qlog::events::connectivity::ServerListening">ServerListening</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-ServerListening" class="impl"><a href="#impl-Freeze-for-ServerListening" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.ServerListening.html" title="struct qlog::events::connectivity::ServerListening">ServerListening</a></h3></section><section id="impl-RefUnwindSafe-for-ServerListening" class="impl"><a href="#impl-RefUnwindSafe-for-ServerListening" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.ServerListening.html" title="struct qlog::events::connectivity::ServerListening">ServerListening</a></h3></section><section id="impl-Send-for-ServerListening" class="impl"><a href="#impl-Send-for-ServerListening" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.ServerListening.html" title="struct qlog::events::connectivity::ServerListening">ServerListening</a></h3></section><section id="impl-Sync-for-ServerListening" class="impl"><a href="#impl-Sync-for-ServerListening" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.ServerListening.html" title="struct qlog::events::connectivity::ServerListening">ServerListening</a></h3></section><section id="impl-Unpin-for-ServerListening" class="impl"><a href="#impl-Unpin-for-ServerListening" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.ServerListening.html" title="struct qlog::events::connectivity::ServerListening">ServerListening</a></h3></section><section id="impl-UnwindSafe-for-ServerListening" class="impl"><a href="#impl-UnwindSafe-for-ServerListening" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.ServerListening.html" title="struct qlog::events::connectivity::ServerListening">ServerListening</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/connectivity/struct.SpinBitUpdated.html b/qlog/events/connectivity/struct.SpinBitUpdated.html
new file mode 100644
index 0000000..e00f510
--- /dev/null
+++ b/qlog/events/connectivity/struct.SpinBitUpdated.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `SpinBitUpdated` struct in crate `qlog`."><title>SpinBitUpdated in qlog::events::connectivity - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">SpinBitUpdated</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.state">state</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-SpinBitUpdated">Clone</a></li><li><a href="#impl-Debug-for-SpinBitUpdated">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-SpinBitUpdated">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-SpinBitUpdated">Eq</a></li><li><a href="#impl-PartialEq-for-SpinBitUpdated">PartialEq</a></li><li><a href="#impl-Serialize-for-SpinBitUpdated">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-SpinBitUpdated">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-SpinBitUpdated">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-SpinBitUpdated">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SpinBitUpdated">Send</a></li><li><a href="#impl-Sync-for-SpinBitUpdated">Sync</a></li><li><a href="#impl-Unpin-for-SpinBitUpdated">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SpinBitUpdated">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::connectivity</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">connectivity</a>::<wbr><a class="struct" href="#">SpinBitUpdated</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/connectivity.rs.html#130-132">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct SpinBitUpdated {
+    pub state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.state" class="structfield section-header"><a href="#structfield.state" class="anchor field">§</a><code>state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-SpinBitUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#129">source</a><a href="#impl-Clone-for-SpinBitUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.SpinBitUpdated.html" title="struct qlog::events::connectivity::SpinBitUpdated">SpinBitUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#129">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.SpinBitUpdated.html" title="struct qlog::events::connectivity::SpinBitUpdated">SpinBitUpdated</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-SpinBitUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#129">source</a><a href="#impl-Debug-for-SpinBitUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SpinBitUpdated.html" title="struct qlog::events::connectivity::SpinBitUpdated">SpinBitUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#129">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-SpinBitUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#129">source</a><a href="#impl-Deserialize%3C'de%3E-for-SpinBitUpdated" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.SpinBitUpdated.html" title="struct qlog::events::connectivity::SpinBitUpdated">SpinBitUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#129">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-SpinBitUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#129">source</a><a href="#impl-PartialEq-for-SpinBitUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.SpinBitUpdated.html" title="struct qlog::events::connectivity::SpinBitUpdated">SpinBitUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#129">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.SpinBitUpdated.html" title="struct qlog::events::connectivity::SpinBitUpdated">SpinBitUpdated</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-SpinBitUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#129">source</a><a href="#impl-Serialize-for-SpinBitUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.SpinBitUpdated.html" title="struct qlog::events::connectivity::SpinBitUpdated">SpinBitUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#129">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-SpinBitUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#129">source</a><a href="#impl-Eq-for-SpinBitUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.SpinBitUpdated.html" title="struct qlog::events::connectivity::SpinBitUpdated">SpinBitUpdated</a></h3></section><section id="impl-StructuralPartialEq-for-SpinBitUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/connectivity.rs.html#129">source</a><a href="#impl-StructuralPartialEq-for-SpinBitUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.SpinBitUpdated.html" title="struct qlog::events::connectivity::SpinBitUpdated">SpinBitUpdated</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-SpinBitUpdated" class="impl"><a href="#impl-Freeze-for-SpinBitUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.SpinBitUpdated.html" title="struct qlog::events::connectivity::SpinBitUpdated">SpinBitUpdated</a></h3></section><section id="impl-RefUnwindSafe-for-SpinBitUpdated" class="impl"><a href="#impl-RefUnwindSafe-for-SpinBitUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SpinBitUpdated.html" title="struct qlog::events::connectivity::SpinBitUpdated">SpinBitUpdated</a></h3></section><section id="impl-Send-for-SpinBitUpdated" class="impl"><a href="#impl-Send-for-SpinBitUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SpinBitUpdated.html" title="struct qlog::events::connectivity::SpinBitUpdated">SpinBitUpdated</a></h3></section><section id="impl-Sync-for-SpinBitUpdated" class="impl"><a href="#impl-Sync-for-SpinBitUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SpinBitUpdated.html" title="struct qlog::events::connectivity::SpinBitUpdated">SpinBitUpdated</a></h3></section><section id="impl-Unpin-for-SpinBitUpdated" class="impl"><a href="#impl-Unpin-for-SpinBitUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SpinBitUpdated.html" title="struct qlog::events::connectivity::SpinBitUpdated">SpinBitUpdated</a></h3></section><section id="impl-UnwindSafe-for-SpinBitUpdated" class="impl"><a href="#impl-UnwindSafe-for-SpinBitUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SpinBitUpdated.html" title="struct qlog::events::connectivity::SpinBitUpdated">SpinBitUpdated</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/enum.ApplicationErrorCode.html b/qlog/events/enum.ApplicationErrorCode.html
new file mode 100644
index 0000000..6592374
--- /dev/null
+++ b/qlog/events/enum.ApplicationErrorCode.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ApplicationErrorCode` enum in crate `qlog`."><title>ApplicationErrorCode in qlog::events - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">ApplicationErrorCode</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.ApplicationError">ApplicationError</a></li><li><a href="#variant.Value">Value</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-ApplicationErrorCode">Clone</a></li><li><a href="#impl-Debug-for-ApplicationErrorCode">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-ApplicationErrorCode">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-ApplicationErrorCode">Eq</a></li><li><a href="#impl-PartialEq-for-ApplicationErrorCode">PartialEq</a></li><li><a href="#impl-Serialize-for-ApplicationErrorCode">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-ApplicationErrorCode">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-ApplicationErrorCode">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-ApplicationErrorCode">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ApplicationErrorCode">Send</a></li><li><a href="#impl-Sync-for-ApplicationErrorCode">Sync</a></li><li><a href="#impl-Unpin-for-ApplicationErrorCode">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ApplicationErrorCode">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../index.html">qlog</a>::<wbr><a href="index.html">events</a>::<wbr><a class="enum" href="#">ApplicationErrorCode</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/events/mod.rs.html#741-744">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum ApplicationErrorCode {
+    ApplicationError(<a class="enum" href="h3/enum.ApplicationError.html" title="enum qlog::events::h3::ApplicationError">ApplicationError</a>),
+    Value(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>),
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.ApplicationError" class="variant"><a href="#variant.ApplicationError" class="anchor">§</a><h3 class="code-header">ApplicationError(<a class="enum" href="h3/enum.ApplicationError.html" title="enum qlog::events::h3::ApplicationError">ApplicationError</a>)</h3></section><section id="variant.Value" class="variant"><a href="#variant.Value" class="anchor">§</a><h3 class="code-header">Value(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ApplicationErrorCode" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#739">source</a><a href="#impl-Clone-for-ApplicationErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#739">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-ApplicationErrorCode" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#739">source</a><a href="#impl-Debug-for-ApplicationErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#739">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-ApplicationErrorCode" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#739">source</a><a href="#impl-Deserialize%3C'de%3E-for-ApplicationErrorCode" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#739">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-ApplicationErrorCode" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#739">source</a><a href="#impl-PartialEq-for-ApplicationErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#739">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-ApplicationErrorCode" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#739">source</a><a href="#impl-Serialize-for-ApplicationErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#739">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-ApplicationErrorCode" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#739">source</a><a href="#impl-Eq-for-ApplicationErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a></h3></section><section id="impl-StructuralPartialEq-for-ApplicationErrorCode" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#739">source</a><a href="#impl-StructuralPartialEq-for-ApplicationErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-ApplicationErrorCode" class="impl"><a href="#impl-Freeze-for-ApplicationErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a></h3></section><section id="impl-RefUnwindSafe-for-ApplicationErrorCode" class="impl"><a href="#impl-RefUnwindSafe-for-ApplicationErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a></h3></section><section id="impl-Send-for-ApplicationErrorCode" class="impl"><a href="#impl-Send-for-ApplicationErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a></h3></section><section id="impl-Sync-for-ApplicationErrorCode" class="impl"><a href="#impl-Sync-for-ApplicationErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a></h3></section><section id="impl-Unpin-for-ApplicationErrorCode" class="impl"><a href="#impl-Unpin-for-ApplicationErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a></h3></section><section id="impl-UnwindSafe-for-ApplicationErrorCode" class="impl"><a href="#impl-UnwindSafe-for-ApplicationErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/enum.ConnectionErrorCode.html b/qlog/events/enum.ConnectionErrorCode.html
new file mode 100644
index 0000000..753c320
--- /dev/null
+++ b/qlog/events/enum.ConnectionErrorCode.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ConnectionErrorCode` enum in crate `qlog`."><title>ConnectionErrorCode in qlog::events - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">ConnectionErrorCode</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.CryptoError">CryptoError</a></li><li><a href="#variant.TransportError">TransportError</a></li><li><a href="#variant.Value">Value</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-ConnectionErrorCode">Clone</a></li><li><a href="#impl-Debug-for-ConnectionErrorCode">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-ConnectionErrorCode">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-ConnectionErrorCode">Eq</a></li><li><a href="#impl-PartialEq-for-ConnectionErrorCode">PartialEq</a></li><li><a href="#impl-Serialize-for-ConnectionErrorCode">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-ConnectionErrorCode">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-ConnectionErrorCode">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-ConnectionErrorCode">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ConnectionErrorCode">Send</a></li><li><a href="#impl-Sync-for-ConnectionErrorCode">Sync</a></li><li><a href="#impl-Unpin-for-ConnectionErrorCode">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ConnectionErrorCode">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../index.html">qlog</a>::<wbr><a href="index.html">events</a>::<wbr><a class="enum" href="#">ConnectionErrorCode</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/events/mod.rs.html#733-737">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum ConnectionErrorCode {
+    TransportError(<a class="enum" href="quic/enum.TransportError.html" title="enum qlog::events::quic::TransportError">TransportError</a>),
+    CryptoError(<a class="enum" href="enum.CryptoError.html" title="enum qlog::events::CryptoError">CryptoError</a>),
+    Value(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>),
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.TransportError" class="variant"><a href="#variant.TransportError" class="anchor">§</a><h3 class="code-header">TransportError(<a class="enum" href="quic/enum.TransportError.html" title="enum qlog::events::quic::TransportError">TransportError</a>)</h3></section><section id="variant.CryptoError" class="variant"><a href="#variant.CryptoError" class="anchor">§</a><h3 class="code-header">CryptoError(<a class="enum" href="enum.CryptoError.html" title="enum qlog::events::CryptoError">CryptoError</a>)</h3></section><section id="variant.Value" class="variant"><a href="#variant.Value" class="anchor">§</a><h3 class="code-header">Value(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ConnectionErrorCode" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#731">source</a><a href="#impl-Clone-for-ConnectionErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#731">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-ConnectionErrorCode" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#731">source</a><a href="#impl-Debug-for-ConnectionErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#731">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-ConnectionErrorCode" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#731">source</a><a href="#impl-Deserialize%3C'de%3E-for-ConnectionErrorCode" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#731">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-ConnectionErrorCode" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#731">source</a><a href="#impl-PartialEq-for-ConnectionErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#731">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-ConnectionErrorCode" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#731">source</a><a href="#impl-Serialize-for-ConnectionErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#731">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-ConnectionErrorCode" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#731">source</a><a href="#impl-Eq-for-ConnectionErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a></h3></section><section id="impl-StructuralPartialEq-for-ConnectionErrorCode" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#731">source</a><a href="#impl-StructuralPartialEq-for-ConnectionErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-ConnectionErrorCode" class="impl"><a href="#impl-Freeze-for-ConnectionErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a></h3></section><section id="impl-RefUnwindSafe-for-ConnectionErrorCode" class="impl"><a href="#impl-RefUnwindSafe-for-ConnectionErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a></h3></section><section id="impl-Send-for-ConnectionErrorCode" class="impl"><a href="#impl-Send-for-ConnectionErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a></h3></section><section id="impl-Sync-for-ConnectionErrorCode" class="impl"><a href="#impl-Sync-for-ConnectionErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a></h3></section><section id="impl-Unpin-for-ConnectionErrorCode" class="impl"><a href="#impl-Unpin-for-ConnectionErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a></h3></section><section id="impl-UnwindSafe-for-ConnectionErrorCode" class="impl"><a href="#impl-UnwindSafe-for-ConnectionErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/enum.CryptoError.html b/qlog/events/enum.CryptoError.html
new file mode 100644
index 0000000..78d9e35
--- /dev/null
+++ b/qlog/events/enum.CryptoError.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `CryptoError` enum in crate `qlog`."><title>CryptoError in qlog::events - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">CryptoError</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Prefix">Prefix</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-CryptoError">Clone</a></li><li><a href="#impl-Debug-for-CryptoError">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-CryptoError">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-CryptoError">Eq</a></li><li><a href="#impl-PartialEq-for-CryptoError">PartialEq</a></li><li><a href="#impl-Serialize-for-CryptoError">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-CryptoError">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-CryptoError">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-CryptoError">RefUnwindSafe</a></li><li><a href="#impl-Send-for-CryptoError">Send</a></li><li><a href="#impl-Sync-for-CryptoError">Sync</a></li><li><a href="#impl-Unpin-for-CryptoError">Unpin</a></li><li><a href="#impl-UnwindSafe-for-CryptoError">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../index.html">qlog</a>::<wbr><a href="index.html">events</a>::<wbr><a class="enum" href="#">CryptoError</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/events/mod.rs.html#749-751">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum CryptoError {
+    Prefix,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Prefix" class="variant"><a href="#variant.Prefix" class="anchor">§</a><h3 class="code-header">Prefix</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-CryptoError" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#747">source</a><a href="#impl-Clone-for-CryptoError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.CryptoError.html" title="enum qlog::events::CryptoError">CryptoError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#747">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.CryptoError.html" title="enum qlog::events::CryptoError">CryptoError</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-CryptoError" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#747">source</a><a href="#impl-Debug-for-CryptoError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.CryptoError.html" title="enum qlog::events::CryptoError">CryptoError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#747">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-CryptoError" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#747">source</a><a href="#impl-Deserialize%3C'de%3E-for-CryptoError" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.CryptoError.html" title="enum qlog::events::CryptoError">CryptoError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#747">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-CryptoError" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#747">source</a><a href="#impl-PartialEq-for-CryptoError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.CryptoError.html" title="enum qlog::events::CryptoError">CryptoError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#747">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.CryptoError.html" title="enum qlog::events::CryptoError">CryptoError</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-CryptoError" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#747">source</a><a href="#impl-Serialize-for-CryptoError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.CryptoError.html" title="enum qlog::events::CryptoError">CryptoError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#747">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-CryptoError" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#747">source</a><a href="#impl-Eq-for-CryptoError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.CryptoError.html" title="enum qlog::events::CryptoError">CryptoError</a></h3></section><section id="impl-StructuralPartialEq-for-CryptoError" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#747">source</a><a href="#impl-StructuralPartialEq-for-CryptoError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.CryptoError.html" title="enum qlog::events::CryptoError">CryptoError</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-CryptoError" class="impl"><a href="#impl-Freeze-for-CryptoError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.CryptoError.html" title="enum qlog::events::CryptoError">CryptoError</a></h3></section><section id="impl-RefUnwindSafe-for-CryptoError" class="impl"><a href="#impl-RefUnwindSafe-for-CryptoError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.CryptoError.html" title="enum qlog::events::CryptoError">CryptoError</a></h3></section><section id="impl-Send-for-CryptoError" class="impl"><a href="#impl-Send-for-CryptoError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.CryptoError.html" title="enum qlog::events::CryptoError">CryptoError</a></h3></section><section id="impl-Sync-for-CryptoError" class="impl"><a href="#impl-Sync-for-CryptoError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.CryptoError.html" title="enum qlog::events::CryptoError">CryptoError</a></h3></section><section id="impl-Unpin-for-CryptoError" class="impl"><a href="#impl-Unpin-for-CryptoError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.CryptoError.html" title="enum qlog::events::CryptoError">CryptoError</a></h3></section><section id="impl-UnwindSafe-for-CryptoError" class="impl"><a href="#impl-UnwindSafe-for-CryptoError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.CryptoError.html" title="enum qlog::events::CryptoError">CryptoError</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/enum.DataRecipient.html b/qlog/events/enum.DataRecipient.html
new file mode 100644
index 0000000..a53d234
--- /dev/null
+++ b/qlog/events/enum.DataRecipient.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `DataRecipient` enum in crate `qlog`."><title>DataRecipient in qlog::events - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">DataRecipient</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Application">Application</a></li><li><a href="#variant.Dropped">Dropped</a></li><li><a href="#variant.Network">Network</a></li><li><a href="#variant.Transport">Transport</a></li><li><a href="#variant.User">User</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-DataRecipient">Clone</a></li><li><a href="#impl-Debug-for-DataRecipient">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-DataRecipient">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-DataRecipient">Eq</a></li><li><a href="#impl-PartialEq-for-DataRecipient">PartialEq</a></li><li><a href="#impl-Serialize-for-DataRecipient">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-DataRecipient">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-DataRecipient">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-DataRecipient">RefUnwindSafe</a></li><li><a href="#impl-Send-for-DataRecipient">Send</a></li><li><a href="#impl-Sync-for-DataRecipient">Sync</a></li><li><a href="#impl-Unpin-for-DataRecipient">Unpin</a></li><li><a href="#impl-UnwindSafe-for-DataRecipient">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../index.html">qlog</a>::<wbr><a href="index.html">events</a>::<wbr><a class="enum" href="#">DataRecipient</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/events/mod.rs.html#506-512">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum DataRecipient {
+    User,
+    Application,
+    Transport,
+    Network,
+    Dropped,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.User" class="variant"><a href="#variant.User" class="anchor">§</a><h3 class="code-header">User</h3></section><section id="variant.Application" class="variant"><a href="#variant.Application" class="anchor">§</a><h3 class="code-header">Application</h3></section><section id="variant.Transport" class="variant"><a href="#variant.Transport" class="anchor">§</a><h3 class="code-header">Transport</h3></section><section id="variant.Network" class="variant"><a href="#variant.Network" class="anchor">§</a><h3 class="code-header">Network</h3></section><section id="variant.Dropped" class="variant"><a href="#variant.Dropped" class="anchor">§</a><h3 class="code-header">Dropped</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-DataRecipient" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#504">source</a><a href="#impl-Clone-for-DataRecipient" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#504">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-DataRecipient" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#504">source</a><a href="#impl-Debug-for-DataRecipient" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#504">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-DataRecipient" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#504">source</a><a href="#impl-Deserialize%3C'de%3E-for-DataRecipient" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#504">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-DataRecipient" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#504">source</a><a href="#impl-PartialEq-for-DataRecipient" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#504">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-DataRecipient" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#504">source</a><a href="#impl-Serialize-for-DataRecipient" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#504">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-DataRecipient" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#504">source</a><a href="#impl-Eq-for-DataRecipient" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a></h3></section><section id="impl-StructuralPartialEq-for-DataRecipient" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#504">source</a><a href="#impl-StructuralPartialEq-for-DataRecipient" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-DataRecipient" class="impl"><a href="#impl-Freeze-for-DataRecipient" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a></h3></section><section id="impl-RefUnwindSafe-for-DataRecipient" class="impl"><a href="#impl-RefUnwindSafe-for-DataRecipient" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a></h3></section><section id="impl-Send-for-DataRecipient" class="impl"><a href="#impl-Send-for-DataRecipient" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a></h3></section><section id="impl-Sync-for-DataRecipient" class="impl"><a href="#impl-Sync-for-DataRecipient" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a></h3></section><section id="impl-Unpin-for-DataRecipient" class="impl"><a href="#impl-Unpin-for-DataRecipient" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a></h3></section><section id="impl-UnwindSafe-for-DataRecipient" class="impl"><a href="#impl-UnwindSafe-for-DataRecipient" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/enum.EventCategory.html b/qlog/events/enum.EventCategory.html
new file mode 100644
index 0000000..f0ff415
--- /dev/null
+++ b/qlog/events/enum.EventCategory.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `EventCategory` enum in crate `qlog`."><title>EventCategory in qlog::events - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">EventCategory</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Connectivity">Connectivity</a></li><li><a href="#variant.Debug">Debug</a></li><li><a href="#variant.Error">Error</a></li><li><a href="#variant.Http">Http</a></li><li><a href="#variant.Info">Info</a></li><li><a href="#variant.Qpack">Qpack</a></li><li><a href="#variant.Recovery">Recovery</a></li><li><a href="#variant.Security">Security</a></li><li><a href="#variant.Simulation">Simulation</a></li><li><a href="#variant.Transport">Transport</a></li><li><a href="#variant.Verbose">Verbose</a></li><li><a href="#variant.Warning">Warning</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-EventCategory">Clone</a></li><li><a href="#impl-Debug-for-EventCategory">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-EventCategory">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Display-for-EventCategory">Display</a></li><li><a href="#impl-From%3CEventType%3E-for-EventCategory">From&lt;EventType&gt;</a></li><li><a href="#impl-Serialize-for-EventCategory">Serialize</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-EventCategory">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-EventCategory">RefUnwindSafe</a></li><li><a href="#impl-Send-for-EventCategory">Send</a></li><li><a href="#impl-Sync-for-EventCategory">Sync</a></li><li><a href="#impl-Unpin-for-EventCategory">Unpin</a></li><li><a href="#impl-UnwindSafe-for-EventCategory">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-ToString-for-T">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../index.html">qlog</a>::<wbr><a href="index.html">events</a>::<wbr><a class="enum" href="#">EventCategory</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/events/mod.rs.html#318-332">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum EventCategory {
+    Connectivity,
+    Security,
+    Transport,
+    Recovery,
+    Http,
+    Qpack,
+    Error,
+    Warning,
+    Info,
+    Debug,
+    Verbose,
+    Simulation,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Connectivity" class="variant"><a href="#variant.Connectivity" class="anchor">§</a><h3 class="code-header">Connectivity</h3></section><section id="variant.Security" class="variant"><a href="#variant.Security" class="anchor">§</a><h3 class="code-header">Security</h3></section><section id="variant.Transport" class="variant"><a href="#variant.Transport" class="anchor">§</a><h3 class="code-header">Transport</h3></section><section id="variant.Recovery" class="variant"><a href="#variant.Recovery" class="anchor">§</a><h3 class="code-header">Recovery</h3></section><section id="variant.Http" class="variant"><a href="#variant.Http" class="anchor">§</a><h3 class="code-header">Http</h3></section><section id="variant.Qpack" class="variant"><a href="#variant.Qpack" class="anchor">§</a><h3 class="code-header">Qpack</h3></section><section id="variant.Error" class="variant"><a href="#variant.Error" class="anchor">§</a><h3 class="code-header">Error</h3></section><section id="variant.Warning" class="variant"><a href="#variant.Warning" class="anchor">§</a><h3 class="code-header">Warning</h3></section><section id="variant.Info" class="variant"><a href="#variant.Info" class="anchor">§</a><h3 class="code-header">Info</h3></section><section id="variant.Debug" class="variant"><a href="#variant.Debug" class="anchor">§</a><h3 class="code-header">Debug</h3></section><section id="variant.Verbose" class="variant"><a href="#variant.Verbose" class="anchor">§</a><h3 class="code-header">Verbose</h3></section><section id="variant.Simulation" class="variant"><a href="#variant.Simulation" class="anchor">§</a><h3 class="code-header">Simulation</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-EventCategory" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#316">source</a><a href="#impl-Clone-for-EventCategory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.EventCategory.html" title="enum qlog::events::EventCategory">EventCategory</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#316">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.EventCategory.html" title="enum qlog::events::EventCategory">EventCategory</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-EventCategory" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#316">source</a><a href="#impl-Debug-for-EventCategory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.EventCategory.html" title="enum qlog::events::EventCategory">EventCategory</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#316">source</a><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-EventCategory" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#316">source</a><a href="#impl-Deserialize%3C'de%3E-for-EventCategory" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.EventCategory.html" title="enum qlog::events::EventCategory">EventCategory</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#316">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Display-for-EventCategory" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#334-353">source</a><a href="#impl-Display-for-EventCategory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.EventCategory.html" title="enum qlog::events::EventCategory">EventCategory</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#335-352">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-From%3CEventType%3E-for-EventCategory" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#355-368">source</a><a href="#impl-From%3CEventType%3E-for-EventCategory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;<a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a>&gt; for <a class="enum" href="enum.EventCategory.html" title="enum qlog::events::EventCategory">EventCategory</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#356-367">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(ty: <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a>) -&gt; Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-EventCategory" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#316">source</a><a href="#impl-Serialize-for-EventCategory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.EventCategory.html" title="enum qlog::events::EventCategory">EventCategory</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#316">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-EventCategory" class="impl"><a href="#impl-Freeze-for-EventCategory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.EventCategory.html" title="enum qlog::events::EventCategory">EventCategory</a></h3></section><section id="impl-RefUnwindSafe-for-EventCategory" class="impl"><a href="#impl-RefUnwindSafe-for-EventCategory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.EventCategory.html" title="enum qlog::events::EventCategory">EventCategory</a></h3></section><section id="impl-Send-for-EventCategory" class="impl"><a href="#impl-Send-for-EventCategory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.EventCategory.html" title="enum qlog::events::EventCategory">EventCategory</a></h3></section><section id="impl-Sync-for-EventCategory" class="impl"><a href="#impl-Sync-for-EventCategory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.EventCategory.html" title="enum qlog::events::EventCategory">EventCategory</a></h3></section><section id="impl-Unpin-for-EventCategory" class="impl"><a href="#impl-Unpin-for-EventCategory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.EventCategory.html" title="enum qlog::events::EventCategory">EventCategory</a></h3></section><section id="impl-UnwindSafe-for-EventCategory" class="impl"><a href="#impl-UnwindSafe-for-EventCategory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.EventCategory.html" title="enum qlog::events::EventCategory">EventCategory</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToString-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2546">source</a><a href="#impl-ToString-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2552">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/enum.EventData.html b/qlog/events/enum.EventData.html
new file mode 100644
index 0000000..50729c7
--- /dev/null
+++ b/qlog/events/enum.EventData.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `EventData` enum in crate `qlog`."><title>EventData in qlog::events - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">EventData</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.AlpnInformation">AlpnInformation</a></li><li><a href="#variant.ApplicationError">ApplicationError</a></li><li><a href="#variant.CongestionStateUpdated">CongestionStateUpdated</a></li><li><a href="#variant.ConnectionClosed">ConnectionClosed</a></li><li><a href="#variant.ConnectionError">ConnectionError</a></li><li><a href="#variant.ConnectionIdUpdated">ConnectionIdUpdated</a></li><li><a href="#variant.ConnectionStarted">ConnectionStarted</a></li><li><a href="#variant.ConnectionStateUpdated">ConnectionStateUpdated</a></li><li><a href="#variant.DataMoved">DataMoved</a></li><li><a href="#variant.DatagramDropped">DatagramDropped</a></li><li><a href="#variant.DatagramsReceived">DatagramsReceived</a></li><li><a href="#variant.DatagramsSent">DatagramsSent</a></li><li><a href="#variant.FramesProcessed">FramesProcessed</a></li><li><a href="#variant.H3FrameCreated">H3FrameCreated</a></li><li><a href="#variant.H3FrameParsed">H3FrameParsed</a></li><li><a href="#variant.H3ParametersRestored">H3ParametersRestored</a></li><li><a href="#variant.H3ParametersSet">H3ParametersSet</a></li><li><a href="#variant.H3PushResolved">H3PushResolved</a></li><li><a href="#variant.H3StreamTypeSet">H3StreamTypeSet</a></li><li><a href="#variant.InternalError">InternalError</a></li><li><a href="#variant.InternalWarning">InternalWarning</a></li><li><a href="#variant.KeyDiscarded">KeyDiscarded</a></li><li><a href="#variant.KeyUpdated">KeyUpdated</a></li><li><a href="#variant.LossTimerUpdated">LossTimerUpdated</a></li><li><a href="#variant.MarkedForRetransmit">MarkedForRetransmit</a></li><li><a href="#variant.Marker">Marker</a></li><li><a href="#variant.Message">Message</a></li><li><a href="#variant.MetricsUpdated">MetricsUpdated</a></li><li><a href="#variant.MtuUpdated">MtuUpdated</a></li><li><a href="#variant.PacketBuffered">PacketBuffered</a></li><li><a href="#variant.PacketDropped">PacketDropped</a></li><li><a href="#variant.PacketLost">PacketLost</a></li><li><a href="#variant.PacketReceived">PacketReceived</a></li><li><a href="#variant.PacketSent">PacketSent</a></li><li><a href="#variant.PacketsAcked">PacketsAcked</a></li><li><a href="#variant.QpackDynamicTableUpdated">QpackDynamicTableUpdated</a></li><li><a href="#variant.QpackHeadersDecoded">QpackHeadersDecoded</a></li><li><a href="#variant.QpackHeadersEncoded">QpackHeadersEncoded</a></li><li><a href="#variant.QpackInstructionCreated">QpackInstructionCreated</a></li><li><a href="#variant.QpackInstructionParsed">QpackInstructionParsed</a></li><li><a href="#variant.QpackStateUpdated">QpackStateUpdated</a></li><li><a href="#variant.QpackStreamStateUpdated">QpackStreamStateUpdated</a></li><li><a href="#variant.RecoveryParametersSet">RecoveryParametersSet</a></li><li><a href="#variant.ServerListening">ServerListening</a></li><li><a href="#variant.SpinBitUpdated">SpinBitUpdated</a></li><li><a href="#variant.StreamStateUpdated">StreamStateUpdated</a></li><li><a href="#variant.TransportParametersRestored">TransportParametersRestored</a></li><li><a href="#variant.TransportParametersSet">TransportParametersSet</a></li><li><a href="#variant.VersionInformation">VersionInformation</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.contains_quic_frames">contains_quic_frames</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-EventData">Clone</a></li><li><a href="#impl-Debug-for-EventData">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-EventData">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-From%3C%26EventData%3E-for-EventType">From&lt;&amp;EventData&gt;</a></li><li><a href="#impl-PartialEq-for-EventData">PartialEq</a></li><li><a href="#impl-Serialize-for-EventData">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-EventData">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-EventData">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-EventData">RefUnwindSafe</a></li><li><a href="#impl-Send-for-EventData">Send</a></li><li><a href="#impl-Sync-for-EventData">Sync</a></li><li><a href="#impl-Unpin-for-EventData">Unpin</a></li><li><a href="#impl-UnwindSafe-for-EventData">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../index.html">qlog</a>::<wbr><a href="index.html">events</a>::<wbr><a class="enum" href="#">EventData</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/events/mod.rs.html#527-696">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum EventData {
+<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 49 variants</span></summary>    ServerListening(<a class="struct" href="connectivity/struct.ServerListening.html" title="struct qlog::events::connectivity::ServerListening">ServerListening</a>),
+    ConnectionStarted(<a class="struct" href="connectivity/struct.ConnectionStarted.html" title="struct qlog::events::connectivity::ConnectionStarted">ConnectionStarted</a>),
+    ConnectionClosed(<a class="struct" href="connectivity/struct.ConnectionClosed.html" title="struct qlog::events::connectivity::ConnectionClosed">ConnectionClosed</a>),
+    ConnectionIdUpdated(<a class="struct" href="connectivity/struct.ConnectionIdUpdated.html" title="struct qlog::events::connectivity::ConnectionIdUpdated">ConnectionIdUpdated</a>),
+    SpinBitUpdated(<a class="struct" href="connectivity/struct.SpinBitUpdated.html" title="struct qlog::events::connectivity::SpinBitUpdated">SpinBitUpdated</a>),
+    ConnectionStateUpdated(<a class="struct" href="connectivity/struct.ConnectionStateUpdated.html" title="struct qlog::events::connectivity::ConnectionStateUpdated">ConnectionStateUpdated</a>),
+    MtuUpdated(<a class="struct" href="connectivity/struct.MtuUpdated.html" title="struct qlog::events::connectivity::MtuUpdated">MtuUpdated</a>),
+    KeyUpdated(<a class="struct" href="security/struct.KeyUpdated.html" title="struct qlog::events::security::KeyUpdated">KeyUpdated</a>),
+    KeyDiscarded(<a class="struct" href="security/struct.KeyDiscarded.html" title="struct qlog::events::security::KeyDiscarded">KeyDiscarded</a>),
+    VersionInformation(<a class="struct" href="quic/struct.VersionInformation.html" title="struct qlog::events::quic::VersionInformation">VersionInformation</a>),
+    AlpnInformation(<a class="struct" href="quic/struct.AlpnInformation.html" title="struct qlog::events::quic::AlpnInformation">AlpnInformation</a>),
+    TransportParametersSet(<a class="struct" href="quic/struct.TransportParametersSet.html" title="struct qlog::events::quic::TransportParametersSet">TransportParametersSet</a>),
+    TransportParametersRestored(<a class="struct" href="quic/struct.TransportParametersRestored.html" title="struct qlog::events::quic::TransportParametersRestored">TransportParametersRestored</a>),
+    DatagramsReceived(<a class="struct" href="quic/struct.DatagramsReceived.html" title="struct qlog::events::quic::DatagramsReceived">DatagramsReceived</a>),
+    DatagramsSent(<a class="struct" href="quic/struct.DatagramsSent.html" title="struct qlog::events::quic::DatagramsSent">DatagramsSent</a>),
+    DatagramDropped(<a class="struct" href="quic/struct.DatagramDropped.html" title="struct qlog::events::quic::DatagramDropped">DatagramDropped</a>),
+    PacketReceived(<a class="struct" href="quic/struct.PacketReceived.html" title="struct qlog::events::quic::PacketReceived">PacketReceived</a>),
+    PacketSent(<a class="struct" href="quic/struct.PacketSent.html" title="struct qlog::events::quic::PacketSent">PacketSent</a>),
+    PacketDropped(<a class="struct" href="quic/struct.PacketDropped.html" title="struct qlog::events::quic::PacketDropped">PacketDropped</a>),
+    PacketBuffered(<a class="struct" href="quic/struct.PacketBuffered.html" title="struct qlog::events::quic::PacketBuffered">PacketBuffered</a>),
+    PacketsAcked(<a class="struct" href="quic/struct.PacketsAcked.html" title="struct qlog::events::quic::PacketsAcked">PacketsAcked</a>),
+    StreamStateUpdated(<a class="struct" href="quic/struct.StreamStateUpdated.html" title="struct qlog::events::quic::StreamStateUpdated">StreamStateUpdated</a>),
+    FramesProcessed(<a class="struct" href="quic/struct.FramesProcessed.html" title="struct qlog::events::quic::FramesProcessed">FramesProcessed</a>),
+    DataMoved(<a class="struct" href="quic/struct.DataMoved.html" title="struct qlog::events::quic::DataMoved">DataMoved</a>),
+    RecoveryParametersSet(<a class="struct" href="quic/struct.RecoveryParametersSet.html" title="struct qlog::events::quic::RecoveryParametersSet">RecoveryParametersSet</a>),
+    MetricsUpdated(<a class="struct" href="quic/struct.MetricsUpdated.html" title="struct qlog::events::quic::MetricsUpdated">MetricsUpdated</a>),
+    CongestionStateUpdated(<a class="struct" href="quic/struct.CongestionStateUpdated.html" title="struct qlog::events::quic::CongestionStateUpdated">CongestionStateUpdated</a>),
+    LossTimerUpdated(<a class="struct" href="quic/struct.LossTimerUpdated.html" title="struct qlog::events::quic::LossTimerUpdated">LossTimerUpdated</a>),
+    PacketLost(<a class="struct" href="quic/struct.PacketLost.html" title="struct qlog::events::quic::PacketLost">PacketLost</a>),
+    MarkedForRetransmit(<a class="struct" href="quic/struct.MarkedForRetransmit.html" title="struct qlog::events::quic::MarkedForRetransmit">MarkedForRetransmit</a>),
+    H3ParametersSet(<a class="struct" href="h3/struct.H3ParametersSet.html" title="struct qlog::events::h3::H3ParametersSet">H3ParametersSet</a>),
+    H3ParametersRestored(<a class="struct" href="h3/struct.H3ParametersRestored.html" title="struct qlog::events::h3::H3ParametersRestored">H3ParametersRestored</a>),
+    H3StreamTypeSet(<a class="struct" href="h3/struct.H3StreamTypeSet.html" title="struct qlog::events::h3::H3StreamTypeSet">H3StreamTypeSet</a>),
+    H3FrameCreated(<a class="struct" href="h3/struct.H3FrameCreated.html" title="struct qlog::events::h3::H3FrameCreated">H3FrameCreated</a>),
+    H3FrameParsed(<a class="struct" href="h3/struct.H3FrameParsed.html" title="struct qlog::events::h3::H3FrameParsed">H3FrameParsed</a>),
+    H3PushResolved(<a class="struct" href="h3/struct.H3PushResolved.html" title="struct qlog::events::h3::H3PushResolved">H3PushResolved</a>),
+    QpackStateUpdated(<a class="struct" href="qpack/struct.QpackStateUpdated.html" title="struct qlog::events::qpack::QpackStateUpdated">QpackStateUpdated</a>),
+    QpackStreamStateUpdated(<a class="struct" href="qpack/struct.QpackStreamStateUpdated.html" title="struct qlog::events::qpack::QpackStreamStateUpdated">QpackStreamStateUpdated</a>),
+    QpackDynamicTableUpdated(<a class="struct" href="qpack/struct.QpackDynamicTableUpdated.html" title="struct qlog::events::qpack::QpackDynamicTableUpdated">QpackDynamicTableUpdated</a>),
+    QpackHeadersEncoded(<a class="struct" href="qpack/struct.QpackHeadersEncoded.html" title="struct qlog::events::qpack::QpackHeadersEncoded">QpackHeadersEncoded</a>),
+    QpackHeadersDecoded(<a class="struct" href="qpack/struct.QpackHeadersDecoded.html" title="struct qlog::events::qpack::QpackHeadersDecoded">QpackHeadersDecoded</a>),
+    QpackInstructionCreated(<a class="struct" href="qpack/struct.QpackInstructionCreated.html" title="struct qlog::events::qpack::QpackInstructionCreated">QpackInstructionCreated</a>),
+    QpackInstructionParsed(<a class="struct" href="qpack/struct.QpackInstructionParsed.html" title="struct qlog::events::qpack::QpackInstructionParsed">QpackInstructionParsed</a>),
+    ConnectionError {
+        code: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a>&gt;,
+        description: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    },
+    ApplicationError {
+        code: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a>&gt;,
+        description: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    },
+    InternalError {
+        code: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+        description: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    },
+    InternalWarning {
+        code: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+        description: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    },
+    Message {
+        message: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    },
+    Marker {
+        marker_type: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+        message: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    },
+</details>}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.ServerListening" class="variant"><a href="#variant.ServerListening" class="anchor">§</a><h3 class="code-header">ServerListening(<a class="struct" href="connectivity/struct.ServerListening.html" title="struct qlog::events::connectivity::ServerListening">ServerListening</a>)</h3></section><section id="variant.ConnectionStarted" class="variant"><a href="#variant.ConnectionStarted" class="anchor">§</a><h3 class="code-header">ConnectionStarted(<a class="struct" href="connectivity/struct.ConnectionStarted.html" title="struct qlog::events::connectivity::ConnectionStarted">ConnectionStarted</a>)</h3></section><section id="variant.ConnectionClosed" class="variant"><a href="#variant.ConnectionClosed" class="anchor">§</a><h3 class="code-header">ConnectionClosed(<a class="struct" href="connectivity/struct.ConnectionClosed.html" title="struct qlog::events::connectivity::ConnectionClosed">ConnectionClosed</a>)</h3></section><section id="variant.ConnectionIdUpdated" class="variant"><a href="#variant.ConnectionIdUpdated" class="anchor">§</a><h3 class="code-header">ConnectionIdUpdated(<a class="struct" href="connectivity/struct.ConnectionIdUpdated.html" title="struct qlog::events::connectivity::ConnectionIdUpdated">ConnectionIdUpdated</a>)</h3></section><section id="variant.SpinBitUpdated" class="variant"><a href="#variant.SpinBitUpdated" class="anchor">§</a><h3 class="code-header">SpinBitUpdated(<a class="struct" href="connectivity/struct.SpinBitUpdated.html" title="struct qlog::events::connectivity::SpinBitUpdated">SpinBitUpdated</a>)</h3></section><section id="variant.ConnectionStateUpdated" class="variant"><a href="#variant.ConnectionStateUpdated" class="anchor">§</a><h3 class="code-header">ConnectionStateUpdated(<a class="struct" href="connectivity/struct.ConnectionStateUpdated.html" title="struct qlog::events::connectivity::ConnectionStateUpdated">ConnectionStateUpdated</a>)</h3></section><section id="variant.MtuUpdated" class="variant"><a href="#variant.MtuUpdated" class="anchor">§</a><h3 class="code-header">MtuUpdated(<a class="struct" href="connectivity/struct.MtuUpdated.html" title="struct qlog::events::connectivity::MtuUpdated">MtuUpdated</a>)</h3></section><section id="variant.KeyUpdated" class="variant"><a href="#variant.KeyUpdated" class="anchor">§</a><h3 class="code-header">KeyUpdated(<a class="struct" href="security/struct.KeyUpdated.html" title="struct qlog::events::security::KeyUpdated">KeyUpdated</a>)</h3></section><section id="variant.KeyDiscarded" class="variant"><a href="#variant.KeyDiscarded" class="anchor">§</a><h3 class="code-header">KeyDiscarded(<a class="struct" href="security/struct.KeyDiscarded.html" title="struct qlog::events::security::KeyDiscarded">KeyDiscarded</a>)</h3></section><section id="variant.VersionInformation" class="variant"><a href="#variant.VersionInformation" class="anchor">§</a><h3 class="code-header">VersionInformation(<a class="struct" href="quic/struct.VersionInformation.html" title="struct qlog::events::quic::VersionInformation">VersionInformation</a>)</h3></section><section id="variant.AlpnInformation" class="variant"><a href="#variant.AlpnInformation" class="anchor">§</a><h3 class="code-header">AlpnInformation(<a class="struct" href="quic/struct.AlpnInformation.html" title="struct qlog::events::quic::AlpnInformation">AlpnInformation</a>)</h3></section><section id="variant.TransportParametersSet" class="variant"><a href="#variant.TransportParametersSet" class="anchor">§</a><h3 class="code-header">TransportParametersSet(<a class="struct" href="quic/struct.TransportParametersSet.html" title="struct qlog::events::quic::TransportParametersSet">TransportParametersSet</a>)</h3></section><section id="variant.TransportParametersRestored" class="variant"><a href="#variant.TransportParametersRestored" class="anchor">§</a><h3 class="code-header">TransportParametersRestored(<a class="struct" href="quic/struct.TransportParametersRestored.html" title="struct qlog::events::quic::TransportParametersRestored">TransportParametersRestored</a>)</h3></section><section id="variant.DatagramsReceived" class="variant"><a href="#variant.DatagramsReceived" class="anchor">§</a><h3 class="code-header">DatagramsReceived(<a class="struct" href="quic/struct.DatagramsReceived.html" title="struct qlog::events::quic::DatagramsReceived">DatagramsReceived</a>)</h3></section><section id="variant.DatagramsSent" class="variant"><a href="#variant.DatagramsSent" class="anchor">§</a><h3 class="code-header">DatagramsSent(<a class="struct" href="quic/struct.DatagramsSent.html" title="struct qlog::events::quic::DatagramsSent">DatagramsSent</a>)</h3></section><section id="variant.DatagramDropped" class="variant"><a href="#variant.DatagramDropped" class="anchor">§</a><h3 class="code-header">DatagramDropped(<a class="struct" href="quic/struct.DatagramDropped.html" title="struct qlog::events::quic::DatagramDropped">DatagramDropped</a>)</h3></section><section id="variant.PacketReceived" class="variant"><a href="#variant.PacketReceived" class="anchor">§</a><h3 class="code-header">PacketReceived(<a class="struct" href="quic/struct.PacketReceived.html" title="struct qlog::events::quic::PacketReceived">PacketReceived</a>)</h3></section><section id="variant.PacketSent" class="variant"><a href="#variant.PacketSent" class="anchor">§</a><h3 class="code-header">PacketSent(<a class="struct" href="quic/struct.PacketSent.html" title="struct qlog::events::quic::PacketSent">PacketSent</a>)</h3></section><section id="variant.PacketDropped" class="variant"><a href="#variant.PacketDropped" class="anchor">§</a><h3 class="code-header">PacketDropped(<a class="struct" href="quic/struct.PacketDropped.html" title="struct qlog::events::quic::PacketDropped">PacketDropped</a>)</h3></section><section id="variant.PacketBuffered" class="variant"><a href="#variant.PacketBuffered" class="anchor">§</a><h3 class="code-header">PacketBuffered(<a class="struct" href="quic/struct.PacketBuffered.html" title="struct qlog::events::quic::PacketBuffered">PacketBuffered</a>)</h3></section><section id="variant.PacketsAcked" class="variant"><a href="#variant.PacketsAcked" class="anchor">§</a><h3 class="code-header">PacketsAcked(<a class="struct" href="quic/struct.PacketsAcked.html" title="struct qlog::events::quic::PacketsAcked">PacketsAcked</a>)</h3></section><section id="variant.StreamStateUpdated" class="variant"><a href="#variant.StreamStateUpdated" class="anchor">§</a><h3 class="code-header">StreamStateUpdated(<a class="struct" href="quic/struct.StreamStateUpdated.html" title="struct qlog::events::quic::StreamStateUpdated">StreamStateUpdated</a>)</h3></section><section id="variant.FramesProcessed" class="variant"><a href="#variant.FramesProcessed" class="anchor">§</a><h3 class="code-header">FramesProcessed(<a class="struct" href="quic/struct.FramesProcessed.html" title="struct qlog::events::quic::FramesProcessed">FramesProcessed</a>)</h3></section><section id="variant.DataMoved" class="variant"><a href="#variant.DataMoved" class="anchor">§</a><h3 class="code-header">DataMoved(<a class="struct" href="quic/struct.DataMoved.html" title="struct qlog::events::quic::DataMoved">DataMoved</a>)</h3></section><section id="variant.RecoveryParametersSet" class="variant"><a href="#variant.RecoveryParametersSet" class="anchor">§</a><h3 class="code-header">RecoveryParametersSet(<a class="struct" href="quic/struct.RecoveryParametersSet.html" title="struct qlog::events::quic::RecoveryParametersSet">RecoveryParametersSet</a>)</h3></section><section id="variant.MetricsUpdated" class="variant"><a href="#variant.MetricsUpdated" class="anchor">§</a><h3 class="code-header">MetricsUpdated(<a class="struct" href="quic/struct.MetricsUpdated.html" title="struct qlog::events::quic::MetricsUpdated">MetricsUpdated</a>)</h3></section><section id="variant.CongestionStateUpdated" class="variant"><a href="#variant.CongestionStateUpdated" class="anchor">§</a><h3 class="code-header">CongestionStateUpdated(<a class="struct" href="quic/struct.CongestionStateUpdated.html" title="struct qlog::events::quic::CongestionStateUpdated">CongestionStateUpdated</a>)</h3></section><section id="variant.LossTimerUpdated" class="variant"><a href="#variant.LossTimerUpdated" class="anchor">§</a><h3 class="code-header">LossTimerUpdated(<a class="struct" href="quic/struct.LossTimerUpdated.html" title="struct qlog::events::quic::LossTimerUpdated">LossTimerUpdated</a>)</h3></section><section id="variant.PacketLost" class="variant"><a href="#variant.PacketLost" class="anchor">§</a><h3 class="code-header">PacketLost(<a class="struct" href="quic/struct.PacketLost.html" title="struct qlog::events::quic::PacketLost">PacketLost</a>)</h3></section><section id="variant.MarkedForRetransmit" class="variant"><a href="#variant.MarkedForRetransmit" class="anchor">§</a><h3 class="code-header">MarkedForRetransmit(<a class="struct" href="quic/struct.MarkedForRetransmit.html" title="struct qlog::events::quic::MarkedForRetransmit">MarkedForRetransmit</a>)</h3></section><section id="variant.H3ParametersSet" class="variant"><a href="#variant.H3ParametersSet" class="anchor">§</a><h3 class="code-header">H3ParametersSet(<a class="struct" href="h3/struct.H3ParametersSet.html" title="struct qlog::events::h3::H3ParametersSet">H3ParametersSet</a>)</h3></section><section id="variant.H3ParametersRestored" class="variant"><a href="#variant.H3ParametersRestored" class="anchor">§</a><h3 class="code-header">H3ParametersRestored(<a class="struct" href="h3/struct.H3ParametersRestored.html" title="struct qlog::events::h3::H3ParametersRestored">H3ParametersRestored</a>)</h3></section><section id="variant.H3StreamTypeSet" class="variant"><a href="#variant.H3StreamTypeSet" class="anchor">§</a><h3 class="code-header">H3StreamTypeSet(<a class="struct" href="h3/struct.H3StreamTypeSet.html" title="struct qlog::events::h3::H3StreamTypeSet">H3StreamTypeSet</a>)</h3></section><section id="variant.H3FrameCreated" class="variant"><a href="#variant.H3FrameCreated" class="anchor">§</a><h3 class="code-header">H3FrameCreated(<a class="struct" href="h3/struct.H3FrameCreated.html" title="struct qlog::events::h3::H3FrameCreated">H3FrameCreated</a>)</h3></section><section id="variant.H3FrameParsed" class="variant"><a href="#variant.H3FrameParsed" class="anchor">§</a><h3 class="code-header">H3FrameParsed(<a class="struct" href="h3/struct.H3FrameParsed.html" title="struct qlog::events::h3::H3FrameParsed">H3FrameParsed</a>)</h3></section><section id="variant.H3PushResolved" class="variant"><a href="#variant.H3PushResolved" class="anchor">§</a><h3 class="code-header">H3PushResolved(<a class="struct" href="h3/struct.H3PushResolved.html" title="struct qlog::events::h3::H3PushResolved">H3PushResolved</a>)</h3></section><section id="variant.QpackStateUpdated" class="variant"><a href="#variant.QpackStateUpdated" class="anchor">§</a><h3 class="code-header">QpackStateUpdated(<a class="struct" href="qpack/struct.QpackStateUpdated.html" title="struct qlog::events::qpack::QpackStateUpdated">QpackStateUpdated</a>)</h3></section><section id="variant.QpackStreamStateUpdated" class="variant"><a href="#variant.QpackStreamStateUpdated" class="anchor">§</a><h3 class="code-header">QpackStreamStateUpdated(<a class="struct" href="qpack/struct.QpackStreamStateUpdated.html" title="struct qlog::events::qpack::QpackStreamStateUpdated">QpackStreamStateUpdated</a>)</h3></section><section id="variant.QpackDynamicTableUpdated" class="variant"><a href="#variant.QpackDynamicTableUpdated" class="anchor">§</a><h3 class="code-header">QpackDynamicTableUpdated(<a class="struct" href="qpack/struct.QpackDynamicTableUpdated.html" title="struct qlog::events::qpack::QpackDynamicTableUpdated">QpackDynamicTableUpdated</a>)</h3></section><section id="variant.QpackHeadersEncoded" class="variant"><a href="#variant.QpackHeadersEncoded" class="anchor">§</a><h3 class="code-header">QpackHeadersEncoded(<a class="struct" href="qpack/struct.QpackHeadersEncoded.html" title="struct qlog::events::qpack::QpackHeadersEncoded">QpackHeadersEncoded</a>)</h3></section><section id="variant.QpackHeadersDecoded" class="variant"><a href="#variant.QpackHeadersDecoded" class="anchor">§</a><h3 class="code-header">QpackHeadersDecoded(<a class="struct" href="qpack/struct.QpackHeadersDecoded.html" title="struct qlog::events::qpack::QpackHeadersDecoded">QpackHeadersDecoded</a>)</h3></section><section id="variant.QpackInstructionCreated" class="variant"><a href="#variant.QpackInstructionCreated" class="anchor">§</a><h3 class="code-header">QpackInstructionCreated(<a class="struct" href="qpack/struct.QpackInstructionCreated.html" title="struct qlog::events::qpack::QpackInstructionCreated">QpackInstructionCreated</a>)</h3></section><section id="variant.QpackInstructionParsed" class="variant"><a href="#variant.QpackInstructionParsed" class="anchor">§</a><h3 class="code-header">QpackInstructionParsed(<a class="struct" href="qpack/struct.QpackInstructionParsed.html" title="struct qlog::events::qpack::QpackInstructionParsed">QpackInstructionParsed</a>)</h3></section><section id="variant.ConnectionError" class="variant"><a href="#variant.ConnectionError" class="anchor">§</a><h3 class="code-header">ConnectionError</h3></section><div class="sub-variant" id="variant.ConnectionError.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.ConnectionError.field.code" class="section-header"><a href="#variant.ConnectionError.field.code" class="anchor field">§</a><code>code: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.ConnectionError.field.description" class="section-header"><a href="#variant.ConnectionError.field.description" class="anchor field">§</a><code>description: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span></div></div><section id="variant.ApplicationError" class="variant"><a href="#variant.ApplicationError" class="anchor">§</a><h3 class="code-header">ApplicationError</h3></section><div class="sub-variant" id="variant.ApplicationError.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.ApplicationError.field.code" class="section-header"><a href="#variant.ApplicationError.field.code" class="anchor field">§</a><code>code: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.ApplicationError.field.description" class="section-header"><a href="#variant.ApplicationError.field.description" class="anchor field">§</a><code>description: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span></div></div><section id="variant.InternalError" class="variant"><a href="#variant.InternalError" class="anchor">§</a><h3 class="code-header">InternalError</h3></section><div class="sub-variant" id="variant.InternalError.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.InternalError.field.code" class="section-header"><a href="#variant.InternalError.field.code" class="anchor field">§</a><code>code: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.InternalError.field.description" class="section-header"><a href="#variant.InternalError.field.description" class="anchor field">§</a><code>description: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span></div></div><section id="variant.InternalWarning" class="variant"><a href="#variant.InternalWarning" class="anchor">§</a><h3 class="code-header">InternalWarning</h3></section><div class="sub-variant" id="variant.InternalWarning.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.InternalWarning.field.code" class="section-header"><a href="#variant.InternalWarning.field.code" class="anchor field">§</a><code>code: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.InternalWarning.field.description" class="section-header"><a href="#variant.InternalWarning.field.description" class="anchor field">§</a><code>description: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span></div></div><section id="variant.Message" class="variant"><a href="#variant.Message" class="anchor">§</a><h3 class="code-header">Message</h3></section><div class="sub-variant" id="variant.Message.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Message.field.message" class="section-header"><a href="#variant.Message.field.message" class="anchor field">§</a><code>message: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span></div></div><section id="variant.Marker" class="variant"><a href="#variant.Marker" class="anchor">§</a><h3 class="code-header">Marker</h3></section><div class="sub-variant" id="variant.Marker.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Marker.field.marker_type" class="section-header"><a href="#variant.Marker.field.marker_type" class="anchor field">§</a><code>marker_type: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span></div><div class="sub-variant-field"><span id="variant.Marker.field.message" class="section-header"><a href="#variant.Marker.field.message" class="anchor field">§</a><code>message: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span></div></div></div><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-EventData" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#698-717">source</a><a href="#impl-EventData" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.contains_quic_frames" class="method"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#700-716">source</a><h4 class="code-header">pub fn <a href="#method.contains_quic_frames" class="fn">contains_quic_frames</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</h4></section></summary><div class="docblock"><p>Returns size of <code>EventData</code> array of <code>QuicFrame</code>s if it exists.</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-EventData" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#524">source</a><a href="#impl-Clone-for-EventData" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#524">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-EventData" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#524">source</a><a href="#impl-Debug-for-EventData" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#524">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-EventData" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#524">source</a><a href="#impl-Deserialize%3C'de%3E-for-EventData" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#524">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-From%3C%26EventData%3E-for-EventType" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#370-502">source</a><a href="#impl-From%3C%26EventData%3E-for-EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;&amp;<a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a>&gt; for <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#371-501">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(event_data: &amp;<a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a>) -&gt; Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-EventData" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#524">source</a><a href="#impl-PartialEq-for-EventData" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#524">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-EventData" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#524">source</a><a href="#impl-Serialize-for-EventData" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#524">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-StructuralPartialEq-for-EventData" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#524">source</a><a href="#impl-StructuralPartialEq-for-EventData" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-EventData" class="impl"><a href="#impl-Freeze-for-EventData" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a></h3></section><section id="impl-RefUnwindSafe-for-EventData" class="impl"><a href="#impl-RefUnwindSafe-for-EventData" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a></h3></section><section id="impl-Send-for-EventData" class="impl"><a href="#impl-Send-for-EventData" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a></h3></section><section id="impl-Sync-for-EventData" class="impl"><a href="#impl-Sync-for-EventData" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a></h3></section><section id="impl-Unpin-for-EventData" class="impl"><a href="#impl-Unpin-for-EventData" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a></h3></section><section id="impl-UnwindSafe-for-EventData" class="impl"><a href="#impl-UnwindSafe-for-EventData" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/enum.EventImportance.html b/qlog/events/enum.EventImportance.html
new file mode 100644
index 0000000..c712c8b
--- /dev/null
+++ b/qlog/events/enum.EventImportance.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `EventImportance` enum in crate `qlog`."><title>EventImportance in qlog::events - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">EventImportance</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Base">Base</a></li><li><a href="#variant.Core">Core</a></li><li><a href="#variant.Extra">Extra</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.is_contained_in">is_contained_in</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-EventImportance">Clone</a></li><li><a href="#impl-Copy-for-EventImportance">Copy</a></li><li><a href="#impl-Debug-for-EventImportance">Debug</a></li><li><a href="#impl-Default-for-EventImportance">Default</a></li><li><a href="#impl-From%3CEventType%3E-for-EventImportance">From&lt;EventType&gt;</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-EventImportance">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-EventImportance">RefUnwindSafe</a></li><li><a href="#impl-Send-for-EventImportance">Send</a></li><li><a href="#impl-Sync-for-EventImportance">Sync</a></li><li><a href="#impl-Unpin-for-EventImportance">Unpin</a></li><li><a href="#impl-UnwindSafe-for-EventImportance">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../index.html">qlog</a>::<wbr><a href="index.html">events</a>::<wbr><a class="enum" href="#">EventImportance</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/events/mod.rs.html#171-176">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum EventImportance {
+    Core,
+    Base,
+    Extra,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Core" class="variant"><a href="#variant.Core" class="anchor">§</a><h3 class="code-header">Core</h3></section><section id="variant.Base" class="variant"><a href="#variant.Base" class="anchor">§</a><h3 class="code-header">Base</h3></section><section id="variant.Extra" class="variant"><a href="#variant.Extra" class="anchor">§</a><h3 class="code-header">Extra</h3></section></div><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-EventImportance" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#178-194">source</a><a href="#impl-EventImportance" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.is_contained_in" class="method"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#180-193">source</a><h4 class="code-header">pub fn <a href="#method.is_contained_in" class="fn">is_contained_in</a>(&amp;self, other: &amp;<a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if this importance level is included by <code>other</code>.</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-EventImportance" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#170">source</a><a href="#impl-Clone-for-EventImportance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#170">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-EventImportance" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#170">source</a><a href="#impl-Debug-for-EventImportance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#170">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-EventImportance" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#170">source</a><a href="#impl-Default-for-EventImportance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#170">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -&gt; <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-From%3CEventType%3E-for-EventImportance" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#196-308">source</a><a href="#impl-From%3CEventType%3E-for-EventImportance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;<a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a>&gt; for <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#197-307">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(ty: <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a>) -&gt; Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><section id="impl-Copy-for-EventImportance" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#170">source</a><a href="#impl-Copy-for-EventImportance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-EventImportance" class="impl"><a href="#impl-Freeze-for-EventImportance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></h3></section><section id="impl-RefUnwindSafe-for-EventImportance" class="impl"><a href="#impl-RefUnwindSafe-for-EventImportance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></h3></section><section id="impl-Send-for-EventImportance" class="impl"><a href="#impl-Send-for-EventImportance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></h3></section><section id="impl-Sync-for-EventImportance" class="impl"><a href="#impl-Sync-for-EventImportance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></h3></section><section id="impl-Unpin-for-EventImportance" class="impl"><a href="#impl-Unpin-for-EventImportance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></h3></section><section id="impl-UnwindSafe-for-EventImportance" class="impl"><a href="#impl-UnwindSafe-for-EventImportance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/enum.EventType.html b/qlog/events/enum.EventType.html
new file mode 100644
index 0000000..32a6f23
--- /dev/null
+++ b/qlog/events/enum.EventType.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `EventType` enum in crate `qlog`."><title>EventType in qlog::events - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">EventType</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.ConnectivityEventType">ConnectivityEventType</a></li><li><a href="#variant.GenericEventType">GenericEventType</a></li><li><a href="#variant.Http3EventType">Http3EventType</a></li><li><a href="#variant.None">None</a></li><li><a href="#variant.QpackEventType">QpackEventType</a></li><li><a href="#variant.RecoveryEventType">RecoveryEventType</a></li><li><a href="#variant.SecurityEventType">SecurityEventType</a></li><li><a href="#variant.TransportEventType">TransportEventType</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-EventType">Clone</a></li><li><a href="#impl-Copy-for-EventType">Copy</a></li><li><a href="#impl-Debug-for-EventType">Debug</a></li><li><a href="#impl-Default-for-EventType">Default</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-EventType">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-EventType">Eq</a></li><li><a href="#impl-From%3C%26EventData%3E-for-EventType">From&lt;&amp;EventData&gt;</a></li><li><a href="#impl-From%3CEventType%3E-for-EventCategory">From&lt;EventType&gt;</a></li><li><a href="#impl-From%3CEventType%3E-for-EventImportance">From&lt;EventType&gt;</a></li><li><a href="#impl-PartialEq-for-EventType">PartialEq</a></li><li><a href="#impl-Serialize-for-EventType">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-EventType">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-EventType">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-EventType">RefUnwindSafe</a></li><li><a href="#impl-Send-for-EventType">Send</a></li><li><a href="#impl-Sync-for-EventType">Sync</a></li><li><a href="#impl-Unpin-for-EventType">Unpin</a></li><li><a href="#impl-UnwindSafe-for-EventType">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../index.html">qlog</a>::<wbr><a href="index.html">events</a>::<wbr><a class="enum" href="#">EventType</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/events/mod.rs.html#44-61">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum EventType {
+    ConnectivityEventType(<a class="enum" href="connectivity/enum.ConnectivityEventType.html" title="enum qlog::events::connectivity::ConnectivityEventType">ConnectivityEventType</a>),
+    TransportEventType(<a class="enum" href="quic/enum.TransportEventType.html" title="enum qlog::events::quic::TransportEventType">TransportEventType</a>),
+    SecurityEventType(<a class="enum" href="quic/enum.SecurityEventType.html" title="enum qlog::events::quic::SecurityEventType">SecurityEventType</a>),
+    RecoveryEventType(<a class="enum" href="quic/enum.RecoveryEventType.html" title="enum qlog::events::quic::RecoveryEventType">RecoveryEventType</a>),
+    Http3EventType(<a class="enum" href="h3/enum.Http3EventType.html" title="enum qlog::events::h3::Http3EventType">Http3EventType</a>),
+    QpackEventType(<a class="enum" href="qpack/enum.QpackEventType.html" title="enum qlog::events::qpack::QpackEventType">QpackEventType</a>),
+    GenericEventType(<a class="enum" href="enum.GenericEventType.html" title="enum qlog::events::GenericEventType">GenericEventType</a>),
+    None,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.ConnectivityEventType" class="variant"><a href="#variant.ConnectivityEventType" class="anchor">§</a><h3 class="code-header">ConnectivityEventType(<a class="enum" href="connectivity/enum.ConnectivityEventType.html" title="enum qlog::events::connectivity::ConnectivityEventType">ConnectivityEventType</a>)</h3></section><section id="variant.TransportEventType" class="variant"><a href="#variant.TransportEventType" class="anchor">§</a><h3 class="code-header">TransportEventType(<a class="enum" href="quic/enum.TransportEventType.html" title="enum qlog::events::quic::TransportEventType">TransportEventType</a>)</h3></section><section id="variant.SecurityEventType" class="variant"><a href="#variant.SecurityEventType" class="anchor">§</a><h3 class="code-header">SecurityEventType(<a class="enum" href="quic/enum.SecurityEventType.html" title="enum qlog::events::quic::SecurityEventType">SecurityEventType</a>)</h3></section><section id="variant.RecoveryEventType" class="variant"><a href="#variant.RecoveryEventType" class="anchor">§</a><h3 class="code-header">RecoveryEventType(<a class="enum" href="quic/enum.RecoveryEventType.html" title="enum qlog::events::quic::RecoveryEventType">RecoveryEventType</a>)</h3></section><section id="variant.Http3EventType" class="variant"><a href="#variant.Http3EventType" class="anchor">§</a><h3 class="code-header">Http3EventType(<a class="enum" href="h3/enum.Http3EventType.html" title="enum qlog::events::h3::Http3EventType">Http3EventType</a>)</h3></section><section id="variant.QpackEventType" class="variant"><a href="#variant.QpackEventType" class="anchor">§</a><h3 class="code-header">QpackEventType(<a class="enum" href="qpack/enum.QpackEventType.html" title="enum qlog::events::qpack::QpackEventType">QpackEventType</a>)</h3></section><section id="variant.GenericEventType" class="variant"><a href="#variant.GenericEventType" class="anchor">§</a><h3 class="code-header">GenericEventType(<a class="enum" href="enum.GenericEventType.html" title="enum qlog::events::GenericEventType">GenericEventType</a>)</h3></section><section id="variant.None" class="variant"><a href="#variant.None" class="anchor">§</a><h3 class="code-header">None</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-EventType" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#42">source</a><a href="#impl-Clone-for-EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#42">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-EventType" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#42">source</a><a href="#impl-Debug-for-EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#42">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-EventType" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#42">source</a><a href="#impl-Default-for-EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#42">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -&gt; <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-EventType" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#42">source</a><a href="#impl-Deserialize%3C'de%3E-for-EventType" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#42">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-From%3C%26EventData%3E-for-EventType" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#370-502">source</a><a href="#impl-From%3C%26EventData%3E-for-EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;&amp;<a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a>&gt; for <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#371-501">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(event_data: &amp;<a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a>) -&gt; Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-From%3CEventType%3E-for-EventCategory" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#355-368">source</a><a href="#impl-From%3CEventType%3E-for-EventCategory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;<a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a>&gt; for <a class="enum" href="enum.EventCategory.html" title="enum qlog::events::EventCategory">EventCategory</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#356-367">source</a><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(ty: <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a>) -&gt; Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-From%3CEventType%3E-for-EventImportance" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#196-308">source</a><a href="#impl-From%3CEventType%3E-for-EventImportance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;<a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a>&gt; for <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#197-307">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(ty: <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a>) -&gt; Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-EventType" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#42">source</a><a href="#impl-PartialEq-for-EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#42">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-EventType" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#42">source</a><a href="#impl-Serialize-for-EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#42">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-EventType" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#42">source</a><a href="#impl-Copy-for-EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></h3></section><section id="impl-Eq-for-EventType" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#42">source</a><a href="#impl-Eq-for-EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></h3></section><section id="impl-StructuralPartialEq-for-EventType" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#42">source</a><a href="#impl-StructuralPartialEq-for-EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-EventType" class="impl"><a href="#impl-Freeze-for-EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></h3></section><section id="impl-RefUnwindSafe-for-EventType" class="impl"><a href="#impl-RefUnwindSafe-for-EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></h3></section><section id="impl-Send-for-EventType" class="impl"><a href="#impl-Send-for-EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></h3></section><section id="impl-Sync-for-EventType" class="impl"><a href="#impl-Sync-for-EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></h3></section><section id="impl-Unpin-for-EventType" class="impl"><a href="#impl-Unpin-for-EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></h3></section><section id="impl-UnwindSafe-for-EventType" class="impl"><a href="#impl-UnwindSafe-for-EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from-3" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from-3" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/enum.GenericEventType.html b/qlog/events/enum.GenericEventType.html
new file mode 100644
index 0000000..4219ee4
--- /dev/null
+++ b/qlog/events/enum.GenericEventType.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `GenericEventType` enum in crate `qlog`."><title>GenericEventType in qlog::events - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">GenericEventType</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.ApplicationError">ApplicationError</a></li><li><a href="#variant.ConnectionError">ConnectionError</a></li><li><a href="#variant.InternalError">InternalError</a></li><li><a href="#variant.InternalWarning">InternalWarning</a></li><li><a href="#variant.Marker">Marker</a></li><li><a href="#variant.Message">Message</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-GenericEventType">Clone</a></li><li><a href="#impl-Copy-for-GenericEventType">Copy</a></li><li><a href="#impl-Debug-for-GenericEventType">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-GenericEventType">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-GenericEventType">Eq</a></li><li><a href="#impl-PartialEq-for-GenericEventType">PartialEq</a></li><li><a href="#impl-Serialize-for-GenericEventType">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-GenericEventType">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-GenericEventType">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-GenericEventType">RefUnwindSafe</a></li><li><a href="#impl-Send-for-GenericEventType">Send</a></li><li><a href="#impl-Sync-for-GenericEventType">Sync</a></li><li><a href="#impl-Unpin-for-GenericEventType">Unpin</a></li><li><a href="#impl-UnwindSafe-for-GenericEventType">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../index.html">qlog</a>::<wbr><a href="index.html">events</a>::<wbr><a class="enum" href="#">GenericEventType</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/events/mod.rs.html#721-729">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum GenericEventType {
+    ConnectionError,
+    ApplicationError,
+    InternalError,
+    InternalWarning,
+    Message,
+    Marker,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.ConnectionError" class="variant"><a href="#variant.ConnectionError" class="anchor">§</a><h3 class="code-header">ConnectionError</h3></section><section id="variant.ApplicationError" class="variant"><a href="#variant.ApplicationError" class="anchor">§</a><h3 class="code-header">ApplicationError</h3></section><section id="variant.InternalError" class="variant"><a href="#variant.InternalError" class="anchor">§</a><h3 class="code-header">InternalError</h3></section><section id="variant.InternalWarning" class="variant"><a href="#variant.InternalWarning" class="anchor">§</a><h3 class="code-header">InternalWarning</h3></section><section id="variant.Message" class="variant"><a href="#variant.Message" class="anchor">§</a><h3 class="code-header">Message</h3></section><section id="variant.Marker" class="variant"><a href="#variant.Marker" class="anchor">§</a><h3 class="code-header">Marker</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-GenericEventType" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#719">source</a><a href="#impl-Clone-for-GenericEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.GenericEventType.html" title="enum qlog::events::GenericEventType">GenericEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#719">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.GenericEventType.html" title="enum qlog::events::GenericEventType">GenericEventType</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-GenericEventType" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#719">source</a><a href="#impl-Debug-for-GenericEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.GenericEventType.html" title="enum qlog::events::GenericEventType">GenericEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#719">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-GenericEventType" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#719">source</a><a href="#impl-Deserialize%3C'de%3E-for-GenericEventType" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.GenericEventType.html" title="enum qlog::events::GenericEventType">GenericEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#719">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-GenericEventType" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#719">source</a><a href="#impl-PartialEq-for-GenericEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.GenericEventType.html" title="enum qlog::events::GenericEventType">GenericEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#719">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.GenericEventType.html" title="enum qlog::events::GenericEventType">GenericEventType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-GenericEventType" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#719">source</a><a href="#impl-Serialize-for-GenericEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.GenericEventType.html" title="enum qlog::events::GenericEventType">GenericEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#719">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-GenericEventType" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#719">source</a><a href="#impl-Copy-for-GenericEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.GenericEventType.html" title="enum qlog::events::GenericEventType">GenericEventType</a></h3></section><section id="impl-Eq-for-GenericEventType" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#719">source</a><a href="#impl-Eq-for-GenericEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.GenericEventType.html" title="enum qlog::events::GenericEventType">GenericEventType</a></h3></section><section id="impl-StructuralPartialEq-for-GenericEventType" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#719">source</a><a href="#impl-StructuralPartialEq-for-GenericEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.GenericEventType.html" title="enum qlog::events::GenericEventType">GenericEventType</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-GenericEventType" class="impl"><a href="#impl-Freeze-for-GenericEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.GenericEventType.html" title="enum qlog::events::GenericEventType">GenericEventType</a></h3></section><section id="impl-RefUnwindSafe-for-GenericEventType" class="impl"><a href="#impl-RefUnwindSafe-for-GenericEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.GenericEventType.html" title="enum qlog::events::GenericEventType">GenericEventType</a></h3></section><section id="impl-Send-for-GenericEventType" class="impl"><a href="#impl-Send-for-GenericEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.GenericEventType.html" title="enum qlog::events::GenericEventType">GenericEventType</a></h3></section><section id="impl-Sync-for-GenericEventType" class="impl"><a href="#impl-Sync-for-GenericEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.GenericEventType.html" title="enum qlog::events::GenericEventType">GenericEventType</a></h3></section><section id="impl-Unpin-for-GenericEventType" class="impl"><a href="#impl-Unpin-for-GenericEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.GenericEventType.html" title="enum qlog::events::GenericEventType">GenericEventType</a></h3></section><section id="impl-UnwindSafe-for-GenericEventType" class="impl"><a href="#impl-UnwindSafe-for-GenericEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.GenericEventType.html" title="enum qlog::events::GenericEventType">GenericEventType</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/enum.TimeFormat.html b/qlog/events/enum.TimeFormat.html
new file mode 100644
index 0000000..32d12c2
--- /dev/null
+++ b/qlog/events/enum.TimeFormat.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `TimeFormat` enum in crate `qlog`."><title>TimeFormat in qlog::events - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">TimeFormat</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Absolute">Absolute</a></li><li><a href="#variant.Delta">Delta</a></li><li><a href="#variant.Relative">Relative</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-TimeFormat">Clone</a></li><li><a href="#impl-Debug-for-TimeFormat">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-TimeFormat">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-TimeFormat">Eq</a></li><li><a href="#impl-PartialEq-for-TimeFormat">PartialEq</a></li><li><a href="#impl-Serialize-for-TimeFormat">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-TimeFormat">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-TimeFormat">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-TimeFormat">RefUnwindSafe</a></li><li><a href="#impl-Send-for-TimeFormat">Send</a></li><li><a href="#impl-Sync-for-TimeFormat">Sync</a></li><li><a href="#impl-Unpin-for-TimeFormat">Unpin</a></li><li><a href="#impl-UnwindSafe-for-TimeFormat">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../index.html">qlog</a>::<wbr><a href="index.html">events</a>::<wbr><a class="enum" href="#">TimeFormat</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/events/mod.rs.html#64-68">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum TimeFormat {
+    Absolute,
+    Delta,
+    Relative,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Absolute" class="variant"><a href="#variant.Absolute" class="anchor">§</a><h3 class="code-header">Absolute</h3></section><section id="variant.Delta" class="variant"><a href="#variant.Delta" class="anchor">§</a><h3 class="code-header">Delta</h3></section><section id="variant.Relative" class="variant"><a href="#variant.Relative" class="anchor">§</a><h3 class="code-header">Relative</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-TimeFormat" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#63">source</a><a href="#impl-Clone-for-TimeFormat" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.TimeFormat.html" title="enum qlog::events::TimeFormat">TimeFormat</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#63">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.TimeFormat.html" title="enum qlog::events::TimeFormat">TimeFormat</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-TimeFormat" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#63">source</a><a href="#impl-Debug-for-TimeFormat" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.TimeFormat.html" title="enum qlog::events::TimeFormat">TimeFormat</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#63">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-TimeFormat" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#63">source</a><a href="#impl-Deserialize%3C'de%3E-for-TimeFormat" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.TimeFormat.html" title="enum qlog::events::TimeFormat">TimeFormat</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#63">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-TimeFormat" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#63">source</a><a href="#impl-PartialEq-for-TimeFormat" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.TimeFormat.html" title="enum qlog::events::TimeFormat">TimeFormat</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#63">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.TimeFormat.html" title="enum qlog::events::TimeFormat">TimeFormat</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-TimeFormat" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#63">source</a><a href="#impl-Serialize-for-TimeFormat" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.TimeFormat.html" title="enum qlog::events::TimeFormat">TimeFormat</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#63">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-TimeFormat" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#63">source</a><a href="#impl-Eq-for-TimeFormat" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.TimeFormat.html" title="enum qlog::events::TimeFormat">TimeFormat</a></h3></section><section id="impl-StructuralPartialEq-for-TimeFormat" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#63">source</a><a href="#impl-StructuralPartialEq-for-TimeFormat" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.TimeFormat.html" title="enum qlog::events::TimeFormat">TimeFormat</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-TimeFormat" class="impl"><a href="#impl-Freeze-for-TimeFormat" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.TimeFormat.html" title="enum qlog::events::TimeFormat">TimeFormat</a></h3></section><section id="impl-RefUnwindSafe-for-TimeFormat" class="impl"><a href="#impl-RefUnwindSafe-for-TimeFormat" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.TimeFormat.html" title="enum qlog::events::TimeFormat">TimeFormat</a></h3></section><section id="impl-Send-for-TimeFormat" class="impl"><a href="#impl-Send-for-TimeFormat" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.TimeFormat.html" title="enum qlog::events::TimeFormat">TimeFormat</a></h3></section><section id="impl-Sync-for-TimeFormat" class="impl"><a href="#impl-Sync-for-TimeFormat" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.TimeFormat.html" title="enum qlog::events::TimeFormat">TimeFormat</a></h3></section><section id="impl-Unpin-for-TimeFormat" class="impl"><a href="#impl-Unpin-for-TimeFormat" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.TimeFormat.html" title="enum qlog::events::TimeFormat">TimeFormat</a></h3></section><section id="impl-UnwindSafe-for-TimeFormat" class="impl"><a href="#impl-UnwindSafe-for-TimeFormat" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.TimeFormat.html" title="enum qlog::events::TimeFormat">TimeFormat</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/h3/enum.ApplicationError.html b/qlog/events/h3/enum.ApplicationError.html
new file mode 100644
index 0000000..b726bb5
--- /dev/null
+++ b/qlog/events/h3/enum.ApplicationError.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ApplicationError` enum in crate `qlog`."><title>ApplicationError in qlog::events::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">ApplicationError</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.HttpClosedCriticalStream">HttpClosedCriticalStream</a></li><li><a href="#variant.HttpConnectError">HttpConnectError</a></li><li><a href="#variant.HttpEarlyResponse">HttpEarlyResponse</a></li><li><a href="#variant.HttpExcessiveLoad">HttpExcessiveLoad</a></li><li><a href="#variant.HttpFrameError">HttpFrameError</a></li><li><a href="#variant.HttpGeneralProtocolError">HttpGeneralProtocolError</a></li><li><a href="#variant.HttpIdError">HttpIdError</a></li><li><a href="#variant.HttpIncompleteRequest">HttpIncompleteRequest</a></li><li><a href="#variant.HttpInternalError">HttpInternalError</a></li><li><a href="#variant.HttpMissingSettings">HttpMissingSettings</a></li><li><a href="#variant.HttpNoError">HttpNoError</a></li><li><a href="#variant.HttpRequestCancelled">HttpRequestCancelled</a></li><li><a href="#variant.HttpRequestRejection">HttpRequestRejection</a></li><li><a href="#variant.HttpSettingsError">HttpSettingsError</a></li><li><a href="#variant.HttpStreamCreationError">HttpStreamCreationError</a></li><li><a href="#variant.HttpUnexpectedFrame">HttpUnexpectedFrame</a></li><li><a href="#variant.HttpVersionFallback">HttpVersionFallback</a></li><li><a href="#variant.Unknown">Unknown</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-ApplicationError">Clone</a></li><li><a href="#impl-Debug-for-ApplicationError">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-ApplicationError">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-ApplicationError">Eq</a></li><li><a href="#impl-PartialEq-for-ApplicationError">PartialEq</a></li><li><a href="#impl-Serialize-for-ApplicationError">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-ApplicationError">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-ApplicationError">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-ApplicationError">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ApplicationError">Send</a></li><li><a href="#impl-Sync-for-ApplicationError">Sync</a></li><li><a href="#impl-Unpin-for-ApplicationError">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ApplicationError">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="enum" href="#">ApplicationError</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/h3.rs.html#78-97">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum ApplicationError {
+<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 18 variants</span></summary>    HttpNoError,
+    HttpGeneralProtocolError,
+    HttpInternalError,
+    HttpRequestCancelled,
+    HttpIncompleteRequest,
+    HttpConnectError,
+    HttpFrameError,
+    HttpExcessiveLoad,
+    HttpVersionFallback,
+    HttpIdError,
+    HttpStreamCreationError,
+    HttpClosedCriticalStream,
+    HttpEarlyResponse,
+    HttpMissingSettings,
+    HttpUnexpectedFrame,
+    HttpRequestRejection,
+    HttpSettingsError,
+    Unknown,
+</details>}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.HttpNoError" class="variant"><a href="#variant.HttpNoError" class="anchor">§</a><h3 class="code-header">HttpNoError</h3></section><section id="variant.HttpGeneralProtocolError" class="variant"><a href="#variant.HttpGeneralProtocolError" class="anchor">§</a><h3 class="code-header">HttpGeneralProtocolError</h3></section><section id="variant.HttpInternalError" class="variant"><a href="#variant.HttpInternalError" class="anchor">§</a><h3 class="code-header">HttpInternalError</h3></section><section id="variant.HttpRequestCancelled" class="variant"><a href="#variant.HttpRequestCancelled" class="anchor">§</a><h3 class="code-header">HttpRequestCancelled</h3></section><section id="variant.HttpIncompleteRequest" class="variant"><a href="#variant.HttpIncompleteRequest" class="anchor">§</a><h3 class="code-header">HttpIncompleteRequest</h3></section><section id="variant.HttpConnectError" class="variant"><a href="#variant.HttpConnectError" class="anchor">§</a><h3 class="code-header">HttpConnectError</h3></section><section id="variant.HttpFrameError" class="variant"><a href="#variant.HttpFrameError" class="anchor">§</a><h3 class="code-header">HttpFrameError</h3></section><section id="variant.HttpExcessiveLoad" class="variant"><a href="#variant.HttpExcessiveLoad" class="anchor">§</a><h3 class="code-header">HttpExcessiveLoad</h3></section><section id="variant.HttpVersionFallback" class="variant"><a href="#variant.HttpVersionFallback" class="anchor">§</a><h3 class="code-header">HttpVersionFallback</h3></section><section id="variant.HttpIdError" class="variant"><a href="#variant.HttpIdError" class="anchor">§</a><h3 class="code-header">HttpIdError</h3></section><section id="variant.HttpStreamCreationError" class="variant"><a href="#variant.HttpStreamCreationError" class="anchor">§</a><h3 class="code-header">HttpStreamCreationError</h3></section><section id="variant.HttpClosedCriticalStream" class="variant"><a href="#variant.HttpClosedCriticalStream" class="anchor">§</a><h3 class="code-header">HttpClosedCriticalStream</h3></section><section id="variant.HttpEarlyResponse" class="variant"><a href="#variant.HttpEarlyResponse" class="anchor">§</a><h3 class="code-header">HttpEarlyResponse</h3></section><section id="variant.HttpMissingSettings" class="variant"><a href="#variant.HttpMissingSettings" class="anchor">§</a><h3 class="code-header">HttpMissingSettings</h3></section><section id="variant.HttpUnexpectedFrame" class="variant"><a href="#variant.HttpUnexpectedFrame" class="anchor">§</a><h3 class="code-header">HttpUnexpectedFrame</h3></section><section id="variant.HttpRequestRejection" class="variant"><a href="#variant.HttpRequestRejection" class="anchor">§</a><h3 class="code-header">HttpRequestRejection</h3></section><section id="variant.HttpSettingsError" class="variant"><a href="#variant.HttpSettingsError" class="anchor">§</a><h3 class="code-header">HttpSettingsError</h3></section><section id="variant.Unknown" class="variant"><a href="#variant.Unknown" class="anchor">§</a><h3 class="code-header">Unknown</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ApplicationError" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#76">source</a><a href="#impl-Clone-for-ApplicationError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.ApplicationError.html" title="enum qlog::events::h3::ApplicationError">ApplicationError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#76">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.ApplicationError.html" title="enum qlog::events::h3::ApplicationError">ApplicationError</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-ApplicationError" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#76">source</a><a href="#impl-Debug-for-ApplicationError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.ApplicationError.html" title="enum qlog::events::h3::ApplicationError">ApplicationError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#76">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-ApplicationError" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#76">source</a><a href="#impl-Deserialize%3C'de%3E-for-ApplicationError" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.ApplicationError.html" title="enum qlog::events::h3::ApplicationError">ApplicationError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#76">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-ApplicationError" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#76">source</a><a href="#impl-PartialEq-for-ApplicationError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.ApplicationError.html" title="enum qlog::events::h3::ApplicationError">ApplicationError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#76">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.ApplicationError.html" title="enum qlog::events::h3::ApplicationError">ApplicationError</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-ApplicationError" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#76">source</a><a href="#impl-Serialize-for-ApplicationError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.ApplicationError.html" title="enum qlog::events::h3::ApplicationError">ApplicationError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#76">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-ApplicationError" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#76">source</a><a href="#impl-Eq-for-ApplicationError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.ApplicationError.html" title="enum qlog::events::h3::ApplicationError">ApplicationError</a></h3></section><section id="impl-StructuralPartialEq-for-ApplicationError" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#76">source</a><a href="#impl-StructuralPartialEq-for-ApplicationError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.ApplicationError.html" title="enum qlog::events::h3::ApplicationError">ApplicationError</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-ApplicationError" class="impl"><a href="#impl-Freeze-for-ApplicationError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.ApplicationError.html" title="enum qlog::events::h3::ApplicationError">ApplicationError</a></h3></section><section id="impl-RefUnwindSafe-for-ApplicationError" class="impl"><a href="#impl-RefUnwindSafe-for-ApplicationError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.ApplicationError.html" title="enum qlog::events::h3::ApplicationError">ApplicationError</a></h3></section><section id="impl-Send-for-ApplicationError" class="impl"><a href="#impl-Send-for-ApplicationError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.ApplicationError.html" title="enum qlog::events::h3::ApplicationError">ApplicationError</a></h3></section><section id="impl-Sync-for-ApplicationError" class="impl"><a href="#impl-Sync-for-ApplicationError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.ApplicationError.html" title="enum qlog::events::h3::ApplicationError">ApplicationError</a></h3></section><section id="impl-Unpin-for-ApplicationError" class="impl"><a href="#impl-Unpin-for-ApplicationError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.ApplicationError.html" title="enum qlog::events::h3::ApplicationError">ApplicationError</a></h3></section><section id="impl-UnwindSafe-for-ApplicationError" class="impl"><a href="#impl-UnwindSafe-for-ApplicationError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.ApplicationError.html" title="enum qlog::events::h3::ApplicationError">ApplicationError</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/h3/enum.H3Owner.html b/qlog/events/h3/enum.H3Owner.html
new file mode 100644
index 0000000..d7de47c
--- /dev/null
+++ b/qlog/events/h3/enum.H3Owner.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `H3Owner` enum in crate `qlog`."><title>H3Owner in qlog::events::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">H3Owner</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Local">Local</a></li><li><a href="#variant.Remote">Remote</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-H3Owner">Clone</a></li><li><a href="#impl-Debug-for-H3Owner">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-H3Owner">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-H3Owner">Eq</a></li><li><a href="#impl-PartialEq-for-H3Owner">PartialEq</a></li><li><a href="#impl-Serialize-for-H3Owner">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-H3Owner">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-H3Owner">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-H3Owner">RefUnwindSafe</a></li><li><a href="#impl-Send-for-H3Owner">Send</a></li><li><a href="#impl-Sync-for-H3Owner">Sync</a></li><li><a href="#impl-Unpin-for-H3Owner">Unpin</a></li><li><a href="#impl-UnwindSafe-for-H3Owner">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="enum" href="#">H3Owner</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/h3.rs.html#34-37">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum H3Owner {
+    Local,
+    Remote,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Local" class="variant"><a href="#variant.Local" class="anchor">§</a><h3 class="code-header">Local</h3></section><section id="variant.Remote" class="variant"><a href="#variant.Remote" class="anchor">§</a><h3 class="code-header">Remote</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-H3Owner" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#32">source</a><a href="#impl-Clone-for-H3Owner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#32">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-H3Owner" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#32">source</a><a href="#impl-Debug-for-H3Owner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#32">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-H3Owner" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#32">source</a><a href="#impl-Deserialize%3C'de%3E-for-H3Owner" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#32">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-H3Owner" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#32">source</a><a href="#impl-PartialEq-for-H3Owner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#32">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-H3Owner" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#32">source</a><a href="#impl-Serialize-for-H3Owner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#32">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-H3Owner" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#32">source</a><a href="#impl-Eq-for-H3Owner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a></h3></section><section id="impl-StructuralPartialEq-for-H3Owner" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#32">source</a><a href="#impl-StructuralPartialEq-for-H3Owner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-H3Owner" class="impl"><a href="#impl-Freeze-for-H3Owner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a></h3></section><section id="impl-RefUnwindSafe-for-H3Owner" class="impl"><a href="#impl-RefUnwindSafe-for-H3Owner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a></h3></section><section id="impl-Send-for-H3Owner" class="impl"><a href="#impl-Send-for-H3Owner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a></h3></section><section id="impl-Sync-for-H3Owner" class="impl"><a href="#impl-Sync-for-H3Owner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a></h3></section><section id="impl-Unpin-for-H3Owner" class="impl"><a href="#impl-Unpin-for-H3Owner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a></h3></section><section id="impl-UnwindSafe-for-H3Owner" class="impl"><a href="#impl-UnwindSafe-for-H3Owner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/h3/enum.H3PriorityTargetStreamType.html b/qlog/events/h3/enum.H3PriorityTargetStreamType.html
new file mode 100644
index 0000000..6375a3a
--- /dev/null
+++ b/qlog/events/h3/enum.H3PriorityTargetStreamType.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `H3PriorityTargetStreamType` enum in crate `qlog`."><title>H3PriorityTargetStreamType in qlog::events::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">H3PriorityTargetStreamType</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Push">Push</a></li><li><a href="#variant.Request">Request</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-H3PriorityTargetStreamType">Clone</a></li><li><a href="#impl-Debug-for-H3PriorityTargetStreamType">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-H3PriorityTargetStreamType">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-H3PriorityTargetStreamType">Eq</a></li><li><a href="#impl-PartialEq-for-H3PriorityTargetStreamType">PartialEq</a></li><li><a href="#impl-Serialize-for-H3PriorityTargetStreamType">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-H3PriorityTargetStreamType">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-H3PriorityTargetStreamType">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-H3PriorityTargetStreamType">RefUnwindSafe</a></li><li><a href="#impl-Send-for-H3PriorityTargetStreamType">Send</a></li><li><a href="#impl-Sync-for-H3PriorityTargetStreamType">Sync</a></li><li><a href="#impl-Unpin-for-H3PriorityTargetStreamType">Unpin</a></li><li><a href="#impl-UnwindSafe-for-H3PriorityTargetStreamType">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="enum" href="#">H3PriorityTargetStreamType</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/h3.rs.html#60-63">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum H3PriorityTargetStreamType {
+    Request,
+    Push,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Request" class="variant"><a href="#variant.Request" class="anchor">§</a><h3 class="code-header">Request</h3></section><section id="variant.Push" class="variant"><a href="#variant.Push" class="anchor">§</a><h3 class="code-header">Push</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-H3PriorityTargetStreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#58">source</a><a href="#impl-Clone-for-H3PriorityTargetStreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.H3PriorityTargetStreamType.html" title="enum qlog::events::h3::H3PriorityTargetStreamType">H3PriorityTargetStreamType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#58">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.H3PriorityTargetStreamType.html" title="enum qlog::events::h3::H3PriorityTargetStreamType">H3PriorityTargetStreamType</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-H3PriorityTargetStreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#58">source</a><a href="#impl-Debug-for-H3PriorityTargetStreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.H3PriorityTargetStreamType.html" title="enum qlog::events::h3::H3PriorityTargetStreamType">H3PriorityTargetStreamType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#58">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-H3PriorityTargetStreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#58">source</a><a href="#impl-Deserialize%3C'de%3E-for-H3PriorityTargetStreamType" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.H3PriorityTargetStreamType.html" title="enum qlog::events::h3::H3PriorityTargetStreamType">H3PriorityTargetStreamType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#58">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-H3PriorityTargetStreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#58">source</a><a href="#impl-PartialEq-for-H3PriorityTargetStreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.H3PriorityTargetStreamType.html" title="enum qlog::events::h3::H3PriorityTargetStreamType">H3PriorityTargetStreamType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#58">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.H3PriorityTargetStreamType.html" title="enum qlog::events::h3::H3PriorityTargetStreamType">H3PriorityTargetStreamType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-H3PriorityTargetStreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#58">source</a><a href="#impl-Serialize-for-H3PriorityTargetStreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.H3PriorityTargetStreamType.html" title="enum qlog::events::h3::H3PriorityTargetStreamType">H3PriorityTargetStreamType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#58">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-H3PriorityTargetStreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#58">source</a><a href="#impl-Eq-for-H3PriorityTargetStreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.H3PriorityTargetStreamType.html" title="enum qlog::events::h3::H3PriorityTargetStreamType">H3PriorityTargetStreamType</a></h3></section><section id="impl-StructuralPartialEq-for-H3PriorityTargetStreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#58">source</a><a href="#impl-StructuralPartialEq-for-H3PriorityTargetStreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.H3PriorityTargetStreamType.html" title="enum qlog::events::h3::H3PriorityTargetStreamType">H3PriorityTargetStreamType</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-H3PriorityTargetStreamType" class="impl"><a href="#impl-Freeze-for-H3PriorityTargetStreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.H3PriorityTargetStreamType.html" title="enum qlog::events::h3::H3PriorityTargetStreamType">H3PriorityTargetStreamType</a></h3></section><section id="impl-RefUnwindSafe-for-H3PriorityTargetStreamType" class="impl"><a href="#impl-RefUnwindSafe-for-H3PriorityTargetStreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.H3PriorityTargetStreamType.html" title="enum qlog::events::h3::H3PriorityTargetStreamType">H3PriorityTargetStreamType</a></h3></section><section id="impl-Send-for-H3PriorityTargetStreamType" class="impl"><a href="#impl-Send-for-H3PriorityTargetStreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.H3PriorityTargetStreamType.html" title="enum qlog::events::h3::H3PriorityTargetStreamType">H3PriorityTargetStreamType</a></h3></section><section id="impl-Sync-for-H3PriorityTargetStreamType" class="impl"><a href="#impl-Sync-for-H3PriorityTargetStreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.H3PriorityTargetStreamType.html" title="enum qlog::events::h3::H3PriorityTargetStreamType">H3PriorityTargetStreamType</a></h3></section><section id="impl-Unpin-for-H3PriorityTargetStreamType" class="impl"><a href="#impl-Unpin-for-H3PriorityTargetStreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.H3PriorityTargetStreamType.html" title="enum qlog::events::h3::H3PriorityTargetStreamType">H3PriorityTargetStreamType</a></h3></section><section id="impl-UnwindSafe-for-H3PriorityTargetStreamType" class="impl"><a href="#impl-UnwindSafe-for-H3PriorityTargetStreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.H3PriorityTargetStreamType.html" title="enum qlog::events::h3::H3PriorityTargetStreamType">H3PriorityTargetStreamType</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/h3/enum.H3PushDecision.html b/qlog/events/h3/enum.H3PushDecision.html
new file mode 100644
index 0000000..bca7802
--- /dev/null
+++ b/qlog/events/h3/enum.H3PushDecision.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `H3PushDecision` enum in crate `qlog`."><title>H3PushDecision in qlog::events::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">H3PushDecision</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Abandoned">Abandoned</a></li><li><a href="#variant.Claimed">Claimed</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-H3PushDecision">Clone</a></li><li><a href="#impl-Debug-for-H3PushDecision">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-H3PushDecision">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-H3PushDecision">Eq</a></li><li><a href="#impl-PartialEq-for-H3PushDecision">PartialEq</a></li><li><a href="#impl-Serialize-for-H3PushDecision">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-H3PushDecision">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-H3PushDecision">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-H3PushDecision">RefUnwindSafe</a></li><li><a href="#impl-Send-for-H3PushDecision">Send</a></li><li><a href="#impl-Sync-for-H3PushDecision">Sync</a></li><li><a href="#impl-Unpin-for-H3PushDecision">Unpin</a></li><li><a href="#impl-UnwindSafe-for-H3PushDecision">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="enum" href="#">H3PushDecision</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/h3.rs.html#53-56">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum H3PushDecision {
+    Claimed,
+    Abandoned,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Claimed" class="variant"><a href="#variant.Claimed" class="anchor">§</a><h3 class="code-header">Claimed</h3></section><section id="variant.Abandoned" class="variant"><a href="#variant.Abandoned" class="anchor">§</a><h3 class="code-header">Abandoned</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-H3PushDecision" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#51">source</a><a href="#impl-Clone-for-H3PushDecision" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.H3PushDecision.html" title="enum qlog::events::h3::H3PushDecision">H3PushDecision</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#51">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.H3PushDecision.html" title="enum qlog::events::h3::H3PushDecision">H3PushDecision</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-H3PushDecision" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#51">source</a><a href="#impl-Debug-for-H3PushDecision" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.H3PushDecision.html" title="enum qlog::events::h3::H3PushDecision">H3PushDecision</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#51">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-H3PushDecision" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#51">source</a><a href="#impl-Deserialize%3C'de%3E-for-H3PushDecision" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.H3PushDecision.html" title="enum qlog::events::h3::H3PushDecision">H3PushDecision</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#51">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-H3PushDecision" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#51">source</a><a href="#impl-PartialEq-for-H3PushDecision" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.H3PushDecision.html" title="enum qlog::events::h3::H3PushDecision">H3PushDecision</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#51">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.H3PushDecision.html" title="enum qlog::events::h3::H3PushDecision">H3PushDecision</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-H3PushDecision" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#51">source</a><a href="#impl-Serialize-for-H3PushDecision" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.H3PushDecision.html" title="enum qlog::events::h3::H3PushDecision">H3PushDecision</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#51">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-H3PushDecision" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#51">source</a><a href="#impl-Eq-for-H3PushDecision" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.H3PushDecision.html" title="enum qlog::events::h3::H3PushDecision">H3PushDecision</a></h3></section><section id="impl-StructuralPartialEq-for-H3PushDecision" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#51">source</a><a href="#impl-StructuralPartialEq-for-H3PushDecision" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.H3PushDecision.html" title="enum qlog::events::h3::H3PushDecision">H3PushDecision</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-H3PushDecision" class="impl"><a href="#impl-Freeze-for-H3PushDecision" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.H3PushDecision.html" title="enum qlog::events::h3::H3PushDecision">H3PushDecision</a></h3></section><section id="impl-RefUnwindSafe-for-H3PushDecision" class="impl"><a href="#impl-RefUnwindSafe-for-H3PushDecision" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.H3PushDecision.html" title="enum qlog::events::h3::H3PushDecision">H3PushDecision</a></h3></section><section id="impl-Send-for-H3PushDecision" class="impl"><a href="#impl-Send-for-H3PushDecision" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.H3PushDecision.html" title="enum qlog::events::h3::H3PushDecision">H3PushDecision</a></h3></section><section id="impl-Sync-for-H3PushDecision" class="impl"><a href="#impl-Sync-for-H3PushDecision" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.H3PushDecision.html" title="enum qlog::events::h3::H3PushDecision">H3PushDecision</a></h3></section><section id="impl-Unpin-for-H3PushDecision" class="impl"><a href="#impl-Unpin-for-H3PushDecision" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.H3PushDecision.html" title="enum qlog::events::h3::H3PushDecision">H3PushDecision</a></h3></section><section id="impl-UnwindSafe-for-H3PushDecision" class="impl"><a href="#impl-UnwindSafe-for-H3PushDecision" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.H3PushDecision.html" title="enum qlog::events::h3::H3PushDecision">H3PushDecision</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/h3/enum.H3StreamType.html b/qlog/events/h3/enum.H3StreamType.html
new file mode 100644
index 0000000..43677eb
--- /dev/null
+++ b/qlog/events/h3/enum.H3StreamType.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `H3StreamType` enum in crate `qlog`."><title>H3StreamType in qlog::events::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">H3StreamType</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Control">Control</a></li><li><a href="#variant.Push">Push</a></li><li><a href="#variant.QpackDecode">QpackDecode</a></li><li><a href="#variant.QpackEncode">QpackEncode</a></li><li><a href="#variant.Request">Request</a></li><li><a href="#variant.Reserved">Reserved</a></li><li><a href="#variant.Unknown">Unknown</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-H3StreamType">Clone</a></li><li><a href="#impl-Debug-for-H3StreamType">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-H3StreamType">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-H3StreamType">Eq</a></li><li><a href="#impl-PartialEq-for-H3StreamType">PartialEq</a></li><li><a href="#impl-Serialize-for-H3StreamType">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-H3StreamType">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-H3StreamType">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-H3StreamType">RefUnwindSafe</a></li><li><a href="#impl-Send-for-H3StreamType">Send</a></li><li><a href="#impl-Sync-for-H3StreamType">Sync</a></li><li><a href="#impl-Unpin-for-H3StreamType">Unpin</a></li><li><a href="#impl-UnwindSafe-for-H3StreamType">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="enum" href="#">H3StreamType</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/h3.rs.html#41-49">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum H3StreamType {
+    Request,
+    Control,
+    Push,
+    Reserved,
+    Unknown,
+    QpackEncode,
+    QpackDecode,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Request" class="variant"><a href="#variant.Request" class="anchor">§</a><h3 class="code-header">Request</h3></section><section id="variant.Control" class="variant"><a href="#variant.Control" class="anchor">§</a><h3 class="code-header">Control</h3></section><section id="variant.Push" class="variant"><a href="#variant.Push" class="anchor">§</a><h3 class="code-header">Push</h3></section><section id="variant.Reserved" class="variant"><a href="#variant.Reserved" class="anchor">§</a><h3 class="code-header">Reserved</h3></section><section id="variant.Unknown" class="variant"><a href="#variant.Unknown" class="anchor">§</a><h3 class="code-header">Unknown</h3></section><section id="variant.QpackEncode" class="variant"><a href="#variant.QpackEncode" class="anchor">§</a><h3 class="code-header">QpackEncode</h3></section><section id="variant.QpackDecode" class="variant"><a href="#variant.QpackDecode" class="anchor">§</a><h3 class="code-header">QpackDecode</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-H3StreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#39">source</a><a href="#impl-Clone-for-H3StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.H3StreamType.html" title="enum qlog::events::h3::H3StreamType">H3StreamType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#39">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.H3StreamType.html" title="enum qlog::events::h3::H3StreamType">H3StreamType</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-H3StreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#39">source</a><a href="#impl-Debug-for-H3StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.H3StreamType.html" title="enum qlog::events::h3::H3StreamType">H3StreamType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#39">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-H3StreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#39">source</a><a href="#impl-Deserialize%3C'de%3E-for-H3StreamType" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.H3StreamType.html" title="enum qlog::events::h3::H3StreamType">H3StreamType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#39">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-H3StreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#39">source</a><a href="#impl-PartialEq-for-H3StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.H3StreamType.html" title="enum qlog::events::h3::H3StreamType">H3StreamType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#39">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.H3StreamType.html" title="enum qlog::events::h3::H3StreamType">H3StreamType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-H3StreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#39">source</a><a href="#impl-Serialize-for-H3StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.H3StreamType.html" title="enum qlog::events::h3::H3StreamType">H3StreamType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#39">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-H3StreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#39">source</a><a href="#impl-Eq-for-H3StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.H3StreamType.html" title="enum qlog::events::h3::H3StreamType">H3StreamType</a></h3></section><section id="impl-StructuralPartialEq-for-H3StreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#39">source</a><a href="#impl-StructuralPartialEq-for-H3StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.H3StreamType.html" title="enum qlog::events::h3::H3StreamType">H3StreamType</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-H3StreamType" class="impl"><a href="#impl-Freeze-for-H3StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.H3StreamType.html" title="enum qlog::events::h3::H3StreamType">H3StreamType</a></h3></section><section id="impl-RefUnwindSafe-for-H3StreamType" class="impl"><a href="#impl-RefUnwindSafe-for-H3StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.H3StreamType.html" title="enum qlog::events::h3::H3StreamType">H3StreamType</a></h3></section><section id="impl-Send-for-H3StreamType" class="impl"><a href="#impl-Send-for-H3StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.H3StreamType.html" title="enum qlog::events::h3::H3StreamType">H3StreamType</a></h3></section><section id="impl-Sync-for-H3StreamType" class="impl"><a href="#impl-Sync-for-H3StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.H3StreamType.html" title="enum qlog::events::h3::H3StreamType">H3StreamType</a></h3></section><section id="impl-Unpin-for-H3StreamType" class="impl"><a href="#impl-Unpin-for-H3StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.H3StreamType.html" title="enum qlog::events::h3::H3StreamType">H3StreamType</a></h3></section><section id="impl-UnwindSafe-for-H3StreamType" class="impl"><a href="#impl-UnwindSafe-for-H3StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.H3StreamType.html" title="enum qlog::events::h3::H3StreamType">H3StreamType</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/h3/enum.Http3EventType.html b/qlog/events/h3/enum.Http3EventType.html
new file mode 100644
index 0000000..a213c0e
--- /dev/null
+++ b/qlog/events/h3/enum.Http3EventType.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `Http3EventType` enum in crate `qlog`."><title>Http3EventType in qlog::events::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Http3EventType</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.FrameCreated">FrameCreated</a></li><li><a href="#variant.FrameParsed">FrameParsed</a></li><li><a href="#variant.ParametersRestored">ParametersRestored</a></li><li><a href="#variant.ParametersSet">ParametersSet</a></li><li><a href="#variant.PushResolved">PushResolved</a></li><li><a href="#variant.StreamTypeSet">StreamTypeSet</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-Http3EventType">Clone</a></li><li><a href="#impl-Copy-for-Http3EventType">Copy</a></li><li><a href="#impl-Debug-for-Http3EventType">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-Http3EventType">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-Http3EventType">Eq</a></li><li><a href="#impl-PartialEq-for-Http3EventType">PartialEq</a></li><li><a href="#impl-Serialize-for-Http3EventType">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-Http3EventType">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Http3EventType">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Http3EventType">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Http3EventType">Send</a></li><li><a href="#impl-Sync-for-Http3EventType">Sync</a></li><li><a href="#impl-Unpin-for-Http3EventType">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Http3EventType">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="enum" href="#">Http3EventType</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/h3.rs.html#67-74">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum Http3EventType {
+    ParametersSet,
+    ParametersRestored,
+    StreamTypeSet,
+    FrameCreated,
+    FrameParsed,
+    PushResolved,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.ParametersSet" class="variant"><a href="#variant.ParametersSet" class="anchor">§</a><h3 class="code-header">ParametersSet</h3></section><section id="variant.ParametersRestored" class="variant"><a href="#variant.ParametersRestored" class="anchor">§</a><h3 class="code-header">ParametersRestored</h3></section><section id="variant.StreamTypeSet" class="variant"><a href="#variant.StreamTypeSet" class="anchor">§</a><h3 class="code-header">StreamTypeSet</h3></section><section id="variant.FrameCreated" class="variant"><a href="#variant.FrameCreated" class="anchor">§</a><h3 class="code-header">FrameCreated</h3></section><section id="variant.FrameParsed" class="variant"><a href="#variant.FrameParsed" class="anchor">§</a><h3 class="code-header">FrameParsed</h3></section><section id="variant.PushResolved" class="variant"><a href="#variant.PushResolved" class="anchor">§</a><h3 class="code-header">PushResolved</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Http3EventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#65">source</a><a href="#impl-Clone-for-Http3EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Http3EventType.html" title="enum qlog::events::h3::Http3EventType">Http3EventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#65">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.Http3EventType.html" title="enum qlog::events::h3::Http3EventType">Http3EventType</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Http3EventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#65">source</a><a href="#impl-Debug-for-Http3EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Http3EventType.html" title="enum qlog::events::h3::Http3EventType">Http3EventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#65">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-Http3EventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#65">source</a><a href="#impl-Deserialize%3C'de%3E-for-Http3EventType" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.Http3EventType.html" title="enum qlog::events::h3::Http3EventType">Http3EventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#65">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-Http3EventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#65">source</a><a href="#impl-PartialEq-for-Http3EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.Http3EventType.html" title="enum qlog::events::h3::Http3EventType">Http3EventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#65">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.Http3EventType.html" title="enum qlog::events::h3::Http3EventType">Http3EventType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-Http3EventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#65">source</a><a href="#impl-Serialize-for-Http3EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.Http3EventType.html" title="enum qlog::events::h3::Http3EventType">Http3EventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#65">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-Http3EventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#65">source</a><a href="#impl-Copy-for-Http3EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.Http3EventType.html" title="enum qlog::events::h3::Http3EventType">Http3EventType</a></h3></section><section id="impl-Eq-for-Http3EventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#65">source</a><a href="#impl-Eq-for-Http3EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Http3EventType.html" title="enum qlog::events::h3::Http3EventType">Http3EventType</a></h3></section><section id="impl-StructuralPartialEq-for-Http3EventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#65">source</a><a href="#impl-StructuralPartialEq-for-Http3EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Http3EventType.html" title="enum qlog::events::h3::Http3EventType">Http3EventType</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Http3EventType" class="impl"><a href="#impl-Freeze-for-Http3EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.Http3EventType.html" title="enum qlog::events::h3::Http3EventType">Http3EventType</a></h3></section><section id="impl-RefUnwindSafe-for-Http3EventType" class="impl"><a href="#impl-RefUnwindSafe-for-Http3EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Http3EventType.html" title="enum qlog::events::h3::Http3EventType">Http3EventType</a></h3></section><section id="impl-Send-for-Http3EventType" class="impl"><a href="#impl-Send-for-Http3EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Http3EventType.html" title="enum qlog::events::h3::Http3EventType">Http3EventType</a></h3></section><section id="impl-Sync-for-Http3EventType" class="impl"><a href="#impl-Sync-for-Http3EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Http3EventType.html" title="enum qlog::events::h3::Http3EventType">Http3EventType</a></h3></section><section id="impl-Unpin-for-Http3EventType" class="impl"><a href="#impl-Unpin-for-Http3EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Http3EventType.html" title="enum qlog::events::h3::Http3EventType">Http3EventType</a></h3></section><section id="impl-UnwindSafe-for-Http3EventType" class="impl"><a href="#impl-UnwindSafe-for-Http3EventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Http3EventType.html" title="enum qlog::events::h3::Http3EventType">Http3EventType</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/h3/enum.Http3Frame.html b/qlog/events/h3/enum.Http3Frame.html
new file mode 100644
index 0000000..cb52336
--- /dev/null
+++ b/qlog/events/h3/enum.Http3Frame.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `Http3Frame` enum in crate `qlog`."><title>Http3Frame in qlog::events::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Http3Frame</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.CancelPush">CancelPush</a></li><li><a href="#variant.Data">Data</a></li><li><a href="#variant.Goaway">Goaway</a></li><li><a href="#variant.Headers">Headers</a></li><li><a href="#variant.MaxPushId">MaxPushId</a></li><li><a href="#variant.PriorityUpdate">PriorityUpdate</a></li><li><a href="#variant.PushPromise">PushPromise</a></li><li><a href="#variant.Reserved">Reserved</a></li><li><a href="#variant.Settings">Settings</a></li><li><a href="#variant.Unknown">Unknown</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-Http3Frame">Clone</a></li><li><a href="#impl-Debug-for-Http3Frame">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-Http3Frame">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-Http3Frame">Eq</a></li><li><a href="#impl-PartialEq-for-Http3Frame">PartialEq</a></li><li><a href="#impl-Serialize-for-Http3Frame">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-Http3Frame">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Http3Frame">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Http3Frame">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Http3Frame">Send</a></li><li><a href="#impl-Sync-for-Http3Frame">Sync</a></li><li><a href="#impl-Unpin-for-Http3Frame">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Http3Frame">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="enum" href="#">Http3Frame</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/h3.rs.html#134-178">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum Http3Frame {
+    Data {
+        raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;,
+    },
+    Headers {
+        headers: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a>&gt;,
+    },
+    CancelPush {
+        push_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    },
+    Settings {
+        settings: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.Setting.html" title="struct qlog::events::h3::Setting">Setting</a>&gt;,
+    },
+    PushPromise {
+        push_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        headers: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a>&gt;,
+    },
+    Goaway {
+        id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    },
+    MaxPushId {
+        push_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    },
+    PriorityUpdate {
+        target_stream_type: <a class="enum" href="enum.H3PriorityTargetStreamType.html" title="enum qlog::events::h3::H3PriorityTargetStreamType">H3PriorityTargetStreamType</a>,
+        prioritized_element_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        priority_field_value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    },
+    Reserved {
+        length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    },
+    Unknown {
+        frame_type_value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;,
+    },
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Data" class="variant"><a href="#variant.Data" class="anchor">§</a><h3 class="code-header">Data</h3></section><div class="sub-variant" id="variant.Data.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Data.field.raw" class="section-header"><a href="#variant.Data.field.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;</code></span></div></div><section id="variant.Headers" class="variant"><a href="#variant.Headers" class="anchor">§</a><h3 class="code-header">Headers</h3></section><div class="sub-variant" id="variant.Headers.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Headers.field.headers" class="section-header"><a href="#variant.Headers.field.headers" class="anchor field">§</a><code>headers: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a>&gt;</code></span></div></div><section id="variant.CancelPush" class="variant"><a href="#variant.CancelPush" class="anchor">§</a><h3 class="code-header">CancelPush</h3></section><div class="sub-variant" id="variant.CancelPush.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.CancelPush.field.push_id" class="section-header"><a href="#variant.CancelPush.field.push_id" class="anchor field">§</a><code>push_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div></div><section id="variant.Settings" class="variant"><a href="#variant.Settings" class="anchor">§</a><h3 class="code-header">Settings</h3></section><div class="sub-variant" id="variant.Settings.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Settings.field.settings" class="section-header"><a href="#variant.Settings.field.settings" class="anchor field">§</a><code>settings: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.Setting.html" title="struct qlog::events::h3::Setting">Setting</a>&gt;</code></span></div></div><section id="variant.PushPromise" class="variant"><a href="#variant.PushPromise" class="anchor">§</a><h3 class="code-header">PushPromise</h3></section><div class="sub-variant" id="variant.PushPromise.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.PushPromise.field.push_id" class="section-header"><a href="#variant.PushPromise.field.push_id" class="anchor field">§</a><code>push_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.PushPromise.field.headers" class="section-header"><a href="#variant.PushPromise.field.headers" class="anchor field">§</a><code>headers: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a>&gt;</code></span></div></div><section id="variant.Goaway" class="variant"><a href="#variant.Goaway" class="anchor">§</a><h3 class="code-header">Goaway</h3></section><div class="sub-variant" id="variant.Goaway.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Goaway.field.id" class="section-header"><a href="#variant.Goaway.field.id" class="anchor field">§</a><code>id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div></div><section id="variant.MaxPushId" class="variant"><a href="#variant.MaxPushId" class="anchor">§</a><h3 class="code-header">MaxPushId</h3></section><div class="sub-variant" id="variant.MaxPushId.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.MaxPushId.field.push_id" class="section-header"><a href="#variant.MaxPushId.field.push_id" class="anchor field">§</a><code>push_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div></div><section id="variant.PriorityUpdate" class="variant"><a href="#variant.PriorityUpdate" class="anchor">§</a><h3 class="code-header">PriorityUpdate</h3></section><div class="sub-variant" id="variant.PriorityUpdate.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.PriorityUpdate.field.target_stream_type" class="section-header"><a href="#variant.PriorityUpdate.field.target_stream_type" class="anchor field">§</a><code>target_stream_type: <a class="enum" href="enum.H3PriorityTargetStreamType.html" title="enum qlog::events::h3::H3PriorityTargetStreamType">H3PriorityTargetStreamType</a></code></span></div><div class="sub-variant-field"><span id="variant.PriorityUpdate.field.prioritized_element_id" class="section-header"><a href="#variant.PriorityUpdate.field.prioritized_element_id" class="anchor field">§</a><code>prioritized_element_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.PriorityUpdate.field.priority_field_value" class="section-header"><a href="#variant.PriorityUpdate.field.priority_field_value" class="anchor field">§</a><code>priority_field_value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span></div></div><section id="variant.Reserved" class="variant"><a href="#variant.Reserved" class="anchor">§</a><h3 class="code-header">Reserved</h3></section><div class="sub-variant" id="variant.Reserved.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Reserved.field.length" class="section-header"><a href="#variant.Reserved.field.length" class="anchor field">§</a><code>length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span></div></div><section id="variant.Unknown" class="variant"><a href="#variant.Unknown" class="anchor">§</a><h3 class="code-header">Unknown</h3></section><div class="sub-variant" id="variant.Unknown.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Unknown.field.frame_type_value" class="section-header"><a href="#variant.Unknown.field.frame_type_value" class="anchor field">§</a><code>frame_type_value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.Unknown.field.raw" class="section-header"><a href="#variant.Unknown.field.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;</code></span></div></div></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Http3Frame" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#127">source</a><a href="#impl-Clone-for-Http3Frame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#127">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Http3Frame" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#127">source</a><a href="#impl-Debug-for-Http3Frame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#127">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-Http3Frame" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#127">source</a><a href="#impl-Deserialize%3C'de%3E-for-Http3Frame" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#127">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-Http3Frame" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#127">source</a><a href="#impl-PartialEq-for-Http3Frame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#127">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-Http3Frame" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#127">source</a><a href="#impl-Serialize-for-Http3Frame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#127">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-Http3Frame" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#127">source</a><a href="#impl-Eq-for-Http3Frame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a></h3></section><section id="impl-StructuralPartialEq-for-Http3Frame" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#127">source</a><a href="#impl-StructuralPartialEq-for-Http3Frame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Http3Frame" class="impl"><a href="#impl-Freeze-for-Http3Frame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a></h3></section><section id="impl-RefUnwindSafe-for-Http3Frame" class="impl"><a href="#impl-RefUnwindSafe-for-Http3Frame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a></h3></section><section id="impl-Send-for-Http3Frame" class="impl"><a href="#impl-Send-for-Http3Frame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a></h3></section><section id="impl-Sync-for-Http3Frame" class="impl"><a href="#impl-Sync-for-Http3Frame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a></h3></section><section id="impl-Unpin-for-Http3Frame" class="impl"><a href="#impl-Unpin-for-Http3Frame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a></h3></section><section id="impl-UnwindSafe-for-Http3Frame" class="impl"><a href="#impl-UnwindSafe-for-Http3Frame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/h3/enum.Http3FrameTypeName.html b/qlog/events/h3/enum.Http3FrameTypeName.html
new file mode 100644
index 0000000..4232302
--- /dev/null
+++ b/qlog/events/h3/enum.Http3FrameTypeName.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `Http3FrameTypeName` enum in crate `qlog`."><title>Http3FrameTypeName in qlog::events::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Http3FrameTypeName</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.CancelPush">CancelPush</a></li><li><a href="#variant.Data">Data</a></li><li><a href="#variant.DuplicatePush">DuplicatePush</a></li><li><a href="#variant.Goaway">Goaway</a></li><li><a href="#variant.Headers">Headers</a></li><li><a href="#variant.MaxPushId">MaxPushId</a></li><li><a href="#variant.PushPromise">PushPromise</a></li><li><a href="#variant.Reserved">Reserved</a></li><li><a href="#variant.Settings">Settings</a></li><li><a href="#variant.Unknown">Unknown</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-Http3FrameTypeName">Clone</a></li><li><a href="#impl-Debug-for-Http3FrameTypeName">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-Http3FrameTypeName">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-Http3FrameTypeName">Eq</a></li><li><a href="#impl-PartialEq-for-Http3FrameTypeName">PartialEq</a></li><li><a href="#impl-Serialize-for-Http3FrameTypeName">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-Http3FrameTypeName">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Http3FrameTypeName">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Http3FrameTypeName">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Http3FrameTypeName">Send</a></li><li><a href="#impl-Sync-for-Http3FrameTypeName">Sync</a></li><li><a href="#impl-Unpin-for-Http3FrameTypeName">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Http3FrameTypeName">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="enum" href="#">Http3FrameTypeName</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/h3.rs.html#113-124">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum Http3FrameTypeName {
+    Data,
+    Headers,
+    CancelPush,
+    Settings,
+    PushPromise,
+    Goaway,
+    MaxPushId,
+    DuplicatePush,
+    Reserved,
+    Unknown,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Data" class="variant"><a href="#variant.Data" class="anchor">§</a><h3 class="code-header">Data</h3></section><section id="variant.Headers" class="variant"><a href="#variant.Headers" class="anchor">§</a><h3 class="code-header">Headers</h3></section><section id="variant.CancelPush" class="variant"><a href="#variant.CancelPush" class="anchor">§</a><h3 class="code-header">CancelPush</h3></section><section id="variant.Settings" class="variant"><a href="#variant.Settings" class="anchor">§</a><h3 class="code-header">Settings</h3></section><section id="variant.PushPromise" class="variant"><a href="#variant.PushPromise" class="anchor">§</a><h3 class="code-header">PushPromise</h3></section><section id="variant.Goaway" class="variant"><a href="#variant.Goaway" class="anchor">§</a><h3 class="code-header">Goaway</h3></section><section id="variant.MaxPushId" class="variant"><a href="#variant.MaxPushId" class="anchor">§</a><h3 class="code-header">MaxPushId</h3></section><section id="variant.DuplicatePush" class="variant"><a href="#variant.DuplicatePush" class="anchor">§</a><h3 class="code-header">DuplicatePush</h3></section><section id="variant.Reserved" class="variant"><a href="#variant.Reserved" class="anchor">§</a><h3 class="code-header">Reserved</h3></section><section id="variant.Unknown" class="variant"><a href="#variant.Unknown" class="anchor">§</a><h3 class="code-header">Unknown</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Http3FrameTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#111">source</a><a href="#impl-Clone-for-Http3FrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Http3FrameTypeName.html" title="enum qlog::events::h3::Http3FrameTypeName">Http3FrameTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#111">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.Http3FrameTypeName.html" title="enum qlog::events::h3::Http3FrameTypeName">Http3FrameTypeName</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Http3FrameTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#111">source</a><a href="#impl-Debug-for-Http3FrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Http3FrameTypeName.html" title="enum qlog::events::h3::Http3FrameTypeName">Http3FrameTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#111">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-Http3FrameTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#111">source</a><a href="#impl-Deserialize%3C'de%3E-for-Http3FrameTypeName" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.Http3FrameTypeName.html" title="enum qlog::events::h3::Http3FrameTypeName">Http3FrameTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#111">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-Http3FrameTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#111">source</a><a href="#impl-PartialEq-for-Http3FrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.Http3FrameTypeName.html" title="enum qlog::events::h3::Http3FrameTypeName">Http3FrameTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#111">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.Http3FrameTypeName.html" title="enum qlog::events::h3::Http3FrameTypeName">Http3FrameTypeName</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-Http3FrameTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#111">source</a><a href="#impl-Serialize-for-Http3FrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.Http3FrameTypeName.html" title="enum qlog::events::h3::Http3FrameTypeName">Http3FrameTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#111">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-Http3FrameTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#111">source</a><a href="#impl-Eq-for-Http3FrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Http3FrameTypeName.html" title="enum qlog::events::h3::Http3FrameTypeName">Http3FrameTypeName</a></h3></section><section id="impl-StructuralPartialEq-for-Http3FrameTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#111">source</a><a href="#impl-StructuralPartialEq-for-Http3FrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Http3FrameTypeName.html" title="enum qlog::events::h3::Http3FrameTypeName">Http3FrameTypeName</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Http3FrameTypeName" class="impl"><a href="#impl-Freeze-for-Http3FrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.Http3FrameTypeName.html" title="enum qlog::events::h3::Http3FrameTypeName">Http3FrameTypeName</a></h3></section><section id="impl-RefUnwindSafe-for-Http3FrameTypeName" class="impl"><a href="#impl-RefUnwindSafe-for-Http3FrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Http3FrameTypeName.html" title="enum qlog::events::h3::Http3FrameTypeName">Http3FrameTypeName</a></h3></section><section id="impl-Send-for-Http3FrameTypeName" class="impl"><a href="#impl-Send-for-Http3FrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Http3FrameTypeName.html" title="enum qlog::events::h3::Http3FrameTypeName">Http3FrameTypeName</a></h3></section><section id="impl-Sync-for-Http3FrameTypeName" class="impl"><a href="#impl-Sync-for-Http3FrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Http3FrameTypeName.html" title="enum qlog::events::h3::Http3FrameTypeName">Http3FrameTypeName</a></h3></section><section id="impl-Unpin-for-Http3FrameTypeName" class="impl"><a href="#impl-Unpin-for-Http3FrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Http3FrameTypeName.html" title="enum qlog::events::h3::Http3FrameTypeName">Http3FrameTypeName</a></h3></section><section id="impl-UnwindSafe-for-Http3FrameTypeName" class="impl"><a href="#impl-UnwindSafe-for-Http3FrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Http3FrameTypeName.html" title="enum qlog::events::h3::Http3FrameTypeName">Http3FrameTypeName</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/h3/index.html b/qlog/events/h3/index.html
new file mode 100644
index 0000000..6036c38
--- /dev/null
+++ b/qlog/events/h3/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `h3` mod in crate `qlog`."><title>qlog::events::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Module h3</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></section><h2><a href="../index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a class="mod" href="#">h3</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/h3.rs.html#27-244">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.H3FrameCreated.html" title="struct qlog::events::h3::H3FrameCreated">H3FrameCreated</a></div></li><li><div class="item-name"><a class="struct" href="struct.H3FrameParsed.html" title="struct qlog::events::h3::H3FrameParsed">H3FrameParsed</a></div></li><li><div class="item-name"><a class="struct" href="struct.H3ParametersRestored.html" title="struct qlog::events::h3::H3ParametersRestored">H3ParametersRestored</a></div></li><li><div class="item-name"><a class="struct" href="struct.H3ParametersSet.html" title="struct qlog::events::h3::H3ParametersSet">H3ParametersSet</a></div></li><li><div class="item-name"><a class="struct" href="struct.H3PushResolved.html" title="struct qlog::events::h3::H3PushResolved">H3PushResolved</a></div></li><li><div class="item-name"><a class="struct" href="struct.H3StreamTypeSet.html" title="struct qlog::events::h3::H3StreamTypeSet">H3StreamTypeSet</a></div></li><li><div class="item-name"><a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a></div></li><li><div class="item-name"><a class="struct" href="struct.Setting.html" title="struct qlog::events::h3::Setting">Setting</a></div></li></ul><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="enum" href="enum.ApplicationError.html" title="enum qlog::events::h3::ApplicationError">ApplicationError</a></div></li><li><div class="item-name"><a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a></div></li><li><div class="item-name"><a class="enum" href="enum.H3PriorityTargetStreamType.html" title="enum qlog::events::h3::H3PriorityTargetStreamType">H3PriorityTargetStreamType</a></div></li><li><div class="item-name"><a class="enum" href="enum.H3PushDecision.html" title="enum qlog::events::h3::H3PushDecision">H3PushDecision</a></div></li><li><div class="item-name"><a class="enum" href="enum.H3StreamType.html" title="enum qlog::events::h3::H3StreamType">H3StreamType</a></div></li><li><div class="item-name"><a class="enum" href="enum.Http3EventType.html" title="enum qlog::events::h3::Http3EventType">Http3EventType</a></div></li><li><div class="item-name"><a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a></div></li><li><div class="item-name"><a class="enum" href="enum.Http3FrameTypeName.html" title="enum qlog::events::h3::Http3FrameTypeName">Http3FrameTypeName</a></div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/h3/sidebar-items.js b/qlog/events/h3/sidebar-items.js
new file mode 100644
index 0000000..f9eaa07
--- /dev/null
+++ b/qlog/events/h3/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"enum":["ApplicationError","H3Owner","H3PriorityTargetStreamType","H3PushDecision","H3StreamType","Http3EventType","Http3Frame","Http3FrameTypeName"],"struct":["H3FrameCreated","H3FrameParsed","H3ParametersRestored","H3ParametersSet","H3PushResolved","H3StreamTypeSet","HttpHeader","Setting"]};
\ No newline at end of file
diff --git a/qlog/events/h3/struct.H3FrameCreated.html b/qlog/events/h3/struct.H3FrameCreated.html
new file mode 100644
index 0000000..8467016
--- /dev/null
+++ b/qlog/events/h3/struct.H3FrameCreated.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `H3FrameCreated` struct in crate `qlog`."><title>H3FrameCreated in qlog::events::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">H3FrameCreated</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.frame">frame</a></li><li><a href="#structfield.length">length</a></li><li><a href="#structfield.raw">raw</a></li><li><a href="#structfield.stream_id">stream_id</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-H3FrameCreated">Clone</a></li><li><a href="#impl-Debug-for-H3FrameCreated">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-H3FrameCreated">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-H3FrameCreated">Eq</a></li><li><a href="#impl-PartialEq-for-H3FrameCreated">PartialEq</a></li><li><a href="#impl-Serialize-for-H3FrameCreated">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-H3FrameCreated">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-H3FrameCreated">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-H3FrameCreated">RefUnwindSafe</a></li><li><a href="#impl-Send-for-H3FrameCreated">Send</a></li><li><a href="#impl-Sync-for-H3FrameCreated">Sync</a></li><li><a href="#impl-Unpin-for-H3FrameCreated">Unpin</a></li><li><a href="#impl-UnwindSafe-for-H3FrameCreated">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="struct" href="#">H3FrameCreated</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/h3.rs.html#219-225">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct H3FrameCreated {
+    pub stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub frame: <a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a>,
+    pub raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.stream_id" class="structfield section-header"><a href="#structfield.stream_id" class="anchor field">§</a><code>stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span id="structfield.length" class="structfield section-header"><a href="#structfield.length" class="anchor field">§</a><code>length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.frame" class="structfield section-header"><a href="#structfield.frame" class="anchor field">§</a><code>frame: <a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a></code></span><span id="structfield.raw" class="structfield section-header"><a href="#structfield.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-H3FrameCreated" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#218">source</a><a href="#impl-Clone-for-H3FrameCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.H3FrameCreated.html" title="struct qlog::events::h3::H3FrameCreated">H3FrameCreated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#218">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.H3FrameCreated.html" title="struct qlog::events::h3::H3FrameCreated">H3FrameCreated</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-H3FrameCreated" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#218">source</a><a href="#impl-Debug-for-H3FrameCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.H3FrameCreated.html" title="struct qlog::events::h3::H3FrameCreated">H3FrameCreated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#218">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-H3FrameCreated" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#218">source</a><a href="#impl-Deserialize%3C'de%3E-for-H3FrameCreated" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.H3FrameCreated.html" title="struct qlog::events::h3::H3FrameCreated">H3FrameCreated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#218">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-H3FrameCreated" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#218">source</a><a href="#impl-PartialEq-for-H3FrameCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.H3FrameCreated.html" title="struct qlog::events::h3::H3FrameCreated">H3FrameCreated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#218">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.H3FrameCreated.html" title="struct qlog::events::h3::H3FrameCreated">H3FrameCreated</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-H3FrameCreated" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#218">source</a><a href="#impl-Serialize-for-H3FrameCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.H3FrameCreated.html" title="struct qlog::events::h3::H3FrameCreated">H3FrameCreated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#218">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-H3FrameCreated" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#218">source</a><a href="#impl-Eq-for-H3FrameCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.H3FrameCreated.html" title="struct qlog::events::h3::H3FrameCreated">H3FrameCreated</a></h3></section><section id="impl-StructuralPartialEq-for-H3FrameCreated" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#218">source</a><a href="#impl-StructuralPartialEq-for-H3FrameCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.H3FrameCreated.html" title="struct qlog::events::h3::H3FrameCreated">H3FrameCreated</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-H3FrameCreated" class="impl"><a href="#impl-Freeze-for-H3FrameCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.H3FrameCreated.html" title="struct qlog::events::h3::H3FrameCreated">H3FrameCreated</a></h3></section><section id="impl-RefUnwindSafe-for-H3FrameCreated" class="impl"><a href="#impl-RefUnwindSafe-for-H3FrameCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.H3FrameCreated.html" title="struct qlog::events::h3::H3FrameCreated">H3FrameCreated</a></h3></section><section id="impl-Send-for-H3FrameCreated" class="impl"><a href="#impl-Send-for-H3FrameCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.H3FrameCreated.html" title="struct qlog::events::h3::H3FrameCreated">H3FrameCreated</a></h3></section><section id="impl-Sync-for-H3FrameCreated" class="impl"><a href="#impl-Sync-for-H3FrameCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.H3FrameCreated.html" title="struct qlog::events::h3::H3FrameCreated">H3FrameCreated</a></h3></section><section id="impl-Unpin-for-H3FrameCreated" class="impl"><a href="#impl-Unpin-for-H3FrameCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.H3FrameCreated.html" title="struct qlog::events::h3::H3FrameCreated">H3FrameCreated</a></h3></section><section id="impl-UnwindSafe-for-H3FrameCreated" class="impl"><a href="#impl-UnwindSafe-for-H3FrameCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.H3FrameCreated.html" title="struct qlog::events::h3::H3FrameCreated">H3FrameCreated</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/h3/struct.H3FrameParsed.html b/qlog/events/h3/struct.H3FrameParsed.html
new file mode 100644
index 0000000..6a2250e
--- /dev/null
+++ b/qlog/events/h3/struct.H3FrameParsed.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `H3FrameParsed` struct in crate `qlog`."><title>H3FrameParsed in qlog::events::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">H3FrameParsed</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.frame">frame</a></li><li><a href="#structfield.length">length</a></li><li><a href="#structfield.raw">raw</a></li><li><a href="#structfield.stream_id">stream_id</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-H3FrameParsed">Clone</a></li><li><a href="#impl-Debug-for-H3FrameParsed">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-H3FrameParsed">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-H3FrameParsed">Eq</a></li><li><a href="#impl-PartialEq-for-H3FrameParsed">PartialEq</a></li><li><a href="#impl-Serialize-for-H3FrameParsed">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-H3FrameParsed">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-H3FrameParsed">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-H3FrameParsed">RefUnwindSafe</a></li><li><a href="#impl-Send-for-H3FrameParsed">Send</a></li><li><a href="#impl-Sync-for-H3FrameParsed">Sync</a></li><li><a href="#impl-Unpin-for-H3FrameParsed">Unpin</a></li><li><a href="#impl-UnwindSafe-for-H3FrameParsed">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="struct" href="#">H3FrameParsed</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/h3.rs.html#229-235">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct H3FrameParsed {
+    pub stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub frame: <a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a>,
+    pub raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.stream_id" class="structfield section-header"><a href="#structfield.stream_id" class="anchor field">§</a><code>stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span id="structfield.length" class="structfield section-header"><a href="#structfield.length" class="anchor field">§</a><code>length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.frame" class="structfield section-header"><a href="#structfield.frame" class="anchor field">§</a><code>frame: <a class="enum" href="enum.Http3Frame.html" title="enum qlog::events::h3::Http3Frame">Http3Frame</a></code></span><span id="structfield.raw" class="structfield section-header"><a href="#structfield.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-H3FrameParsed" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#228">source</a><a href="#impl-Clone-for-H3FrameParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.H3FrameParsed.html" title="struct qlog::events::h3::H3FrameParsed">H3FrameParsed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#228">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.H3FrameParsed.html" title="struct qlog::events::h3::H3FrameParsed">H3FrameParsed</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-H3FrameParsed" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#228">source</a><a href="#impl-Debug-for-H3FrameParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.H3FrameParsed.html" title="struct qlog::events::h3::H3FrameParsed">H3FrameParsed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#228">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-H3FrameParsed" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#228">source</a><a href="#impl-Deserialize%3C'de%3E-for-H3FrameParsed" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.H3FrameParsed.html" title="struct qlog::events::h3::H3FrameParsed">H3FrameParsed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#228">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-H3FrameParsed" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#228">source</a><a href="#impl-PartialEq-for-H3FrameParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.H3FrameParsed.html" title="struct qlog::events::h3::H3FrameParsed">H3FrameParsed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#228">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.H3FrameParsed.html" title="struct qlog::events::h3::H3FrameParsed">H3FrameParsed</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-H3FrameParsed" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#228">source</a><a href="#impl-Serialize-for-H3FrameParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.H3FrameParsed.html" title="struct qlog::events::h3::H3FrameParsed">H3FrameParsed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#228">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-H3FrameParsed" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#228">source</a><a href="#impl-Eq-for-H3FrameParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.H3FrameParsed.html" title="struct qlog::events::h3::H3FrameParsed">H3FrameParsed</a></h3></section><section id="impl-StructuralPartialEq-for-H3FrameParsed" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#228">source</a><a href="#impl-StructuralPartialEq-for-H3FrameParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.H3FrameParsed.html" title="struct qlog::events::h3::H3FrameParsed">H3FrameParsed</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-H3FrameParsed" class="impl"><a href="#impl-Freeze-for-H3FrameParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.H3FrameParsed.html" title="struct qlog::events::h3::H3FrameParsed">H3FrameParsed</a></h3></section><section id="impl-RefUnwindSafe-for-H3FrameParsed" class="impl"><a href="#impl-RefUnwindSafe-for-H3FrameParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.H3FrameParsed.html" title="struct qlog::events::h3::H3FrameParsed">H3FrameParsed</a></h3></section><section id="impl-Send-for-H3FrameParsed" class="impl"><a href="#impl-Send-for-H3FrameParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.H3FrameParsed.html" title="struct qlog::events::h3::H3FrameParsed">H3FrameParsed</a></h3></section><section id="impl-Sync-for-H3FrameParsed" class="impl"><a href="#impl-Sync-for-H3FrameParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.H3FrameParsed.html" title="struct qlog::events::h3::H3FrameParsed">H3FrameParsed</a></h3></section><section id="impl-Unpin-for-H3FrameParsed" class="impl"><a href="#impl-Unpin-for-H3FrameParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.H3FrameParsed.html" title="struct qlog::events::h3::H3FrameParsed">H3FrameParsed</a></h3></section><section id="impl-UnwindSafe-for-H3FrameParsed" class="impl"><a href="#impl-UnwindSafe-for-H3FrameParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.H3FrameParsed.html" title="struct qlog::events::h3::H3FrameParsed">H3FrameParsed</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/h3/struct.H3ParametersRestored.html b/qlog/events/h3/struct.H3ParametersRestored.html
new file mode 100644
index 0000000..b51a503
--- /dev/null
+++ b/qlog/events/h3/struct.H3ParametersRestored.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `H3ParametersRestored` struct in crate `qlog`."><title>H3ParametersRestored in qlog::events::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">H3ParametersRestored</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.blocked_streams_count">blocked_streams_count</a></li><li><a href="#structfield.enable_connect_protocol">enable_connect_protocol</a></li><li><a href="#structfield.h3_datagram">h3_datagram</a></li><li><a href="#structfield.max_field_section_size">max_field_section_size</a></li><li><a href="#structfield.max_table_capacity">max_table_capacity</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-H3ParametersRestored">Clone</a></li><li><a href="#impl-Debug-for-H3ParametersRestored">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-H3ParametersRestored">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-H3ParametersRestored">Eq</a></li><li><a href="#impl-PartialEq-for-H3ParametersRestored">PartialEq</a></li><li><a href="#impl-Serialize-for-H3ParametersRestored">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-H3ParametersRestored">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-H3ParametersRestored">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-H3ParametersRestored">RefUnwindSafe</a></li><li><a href="#impl-Send-for-H3ParametersRestored">Send</a></li><li><a href="#impl-Sync-for-H3ParametersRestored">Sync</a></li><li><a href="#impl-Unpin-for-H3ParametersRestored">Unpin</a></li><li><a href="#impl-UnwindSafe-for-H3ParametersRestored">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="struct" href="#">H3ParametersRestored</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/h3.rs.html#198-205">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct H3ParametersRestored {
+    pub max_field_section_size: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub max_table_capacity: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub blocked_streams_count: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub enable_connect_protocol: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub h3_datagram: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.max_field_section_size" class="structfield section-header"><a href="#structfield.max_field_section_size" class="anchor field">§</a><code>max_field_section_size: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.max_table_capacity" class="structfield section-header"><a href="#structfield.max_table_capacity" class="anchor field">§</a><code>max_table_capacity: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.blocked_streams_count" class="structfield section-header"><a href="#structfield.blocked_streams_count" class="anchor field">§</a><code>blocked_streams_count: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.enable_connect_protocol" class="structfield section-header"><a href="#structfield.enable_connect_protocol" class="anchor field">§</a><code>enable_connect_protocol: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.h3_datagram" class="structfield section-header"><a href="#structfield.h3_datagram" class="anchor field">§</a><code>h3_datagram: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-H3ParametersRestored" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#197">source</a><a href="#impl-Clone-for-H3ParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.H3ParametersRestored.html" title="struct qlog::events::h3::H3ParametersRestored">H3ParametersRestored</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#197">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.H3ParametersRestored.html" title="struct qlog::events::h3::H3ParametersRestored">H3ParametersRestored</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-H3ParametersRestored" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#197">source</a><a href="#impl-Debug-for-H3ParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.H3ParametersRestored.html" title="struct qlog::events::h3::H3ParametersRestored">H3ParametersRestored</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#197">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-H3ParametersRestored" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#197">source</a><a href="#impl-Deserialize%3C'de%3E-for-H3ParametersRestored" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.H3ParametersRestored.html" title="struct qlog::events::h3::H3ParametersRestored">H3ParametersRestored</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#197">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-H3ParametersRestored" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#197">source</a><a href="#impl-PartialEq-for-H3ParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.H3ParametersRestored.html" title="struct qlog::events::h3::H3ParametersRestored">H3ParametersRestored</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#197">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.H3ParametersRestored.html" title="struct qlog::events::h3::H3ParametersRestored">H3ParametersRestored</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-H3ParametersRestored" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#197">source</a><a href="#impl-Serialize-for-H3ParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.H3ParametersRestored.html" title="struct qlog::events::h3::H3ParametersRestored">H3ParametersRestored</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#197">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-H3ParametersRestored" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#197">source</a><a href="#impl-Eq-for-H3ParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.H3ParametersRestored.html" title="struct qlog::events::h3::H3ParametersRestored">H3ParametersRestored</a></h3></section><section id="impl-StructuralPartialEq-for-H3ParametersRestored" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#197">source</a><a href="#impl-StructuralPartialEq-for-H3ParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.H3ParametersRestored.html" title="struct qlog::events::h3::H3ParametersRestored">H3ParametersRestored</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-H3ParametersRestored" class="impl"><a href="#impl-Freeze-for-H3ParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.H3ParametersRestored.html" title="struct qlog::events::h3::H3ParametersRestored">H3ParametersRestored</a></h3></section><section id="impl-RefUnwindSafe-for-H3ParametersRestored" class="impl"><a href="#impl-RefUnwindSafe-for-H3ParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.H3ParametersRestored.html" title="struct qlog::events::h3::H3ParametersRestored">H3ParametersRestored</a></h3></section><section id="impl-Send-for-H3ParametersRestored" class="impl"><a href="#impl-Send-for-H3ParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.H3ParametersRestored.html" title="struct qlog::events::h3::H3ParametersRestored">H3ParametersRestored</a></h3></section><section id="impl-Sync-for-H3ParametersRestored" class="impl"><a href="#impl-Sync-for-H3ParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.H3ParametersRestored.html" title="struct qlog::events::h3::H3ParametersRestored">H3ParametersRestored</a></h3></section><section id="impl-Unpin-for-H3ParametersRestored" class="impl"><a href="#impl-Unpin-for-H3ParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.H3ParametersRestored.html" title="struct qlog::events::h3::H3ParametersRestored">H3ParametersRestored</a></h3></section><section id="impl-UnwindSafe-for-H3ParametersRestored" class="impl"><a href="#impl-UnwindSafe-for-H3ParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.H3ParametersRestored.html" title="struct qlog::events::h3::H3ParametersRestored">H3ParametersRestored</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/h3/struct.H3ParametersSet.html b/qlog/events/h3/struct.H3ParametersSet.html
new file mode 100644
index 0000000..88e7551
--- /dev/null
+++ b/qlog/events/h3/struct.H3ParametersSet.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `H3ParametersSet` struct in crate `qlog`."><title>H3ParametersSet in qlog::events::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">H3ParametersSet</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.blocked_streams_count">blocked_streams_count</a></li><li><a href="#structfield.enable_connect_protocol">enable_connect_protocol</a></li><li><a href="#structfield.h3_datagram">h3_datagram</a></li><li><a href="#structfield.max_field_section_size">max_field_section_size</a></li><li><a href="#structfield.max_table_capacity">max_table_capacity</a></li><li><a href="#structfield.owner">owner</a></li><li><a href="#structfield.waits_for_settings">waits_for_settings</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-H3ParametersSet">Clone</a></li><li><a href="#impl-Debug-for-H3ParametersSet">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-H3ParametersSet">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-H3ParametersSet">Eq</a></li><li><a href="#impl-PartialEq-for-H3ParametersSet">PartialEq</a></li><li><a href="#impl-Serialize-for-H3ParametersSet">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-H3ParametersSet">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-H3ParametersSet">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-H3ParametersSet">RefUnwindSafe</a></li><li><a href="#impl-Send-for-H3ParametersSet">Send</a></li><li><a href="#impl-Sync-for-H3ParametersSet">Sync</a></li><li><a href="#impl-Unpin-for-H3ParametersSet">Unpin</a></li><li><a href="#impl-UnwindSafe-for-H3ParametersSet">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="struct" href="#">H3ParametersSet</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/h3.rs.html#182-194">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct H3ParametersSet {
+    pub owner: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a>&gt;,
+    pub max_field_section_size: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub max_table_capacity: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub blocked_streams_count: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub enable_connect_protocol: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub h3_datagram: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub waits_for_settings: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.owner" class="structfield section-header"><a href="#structfield.owner" class="anchor field">§</a><code>owner: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a>&gt;</code></span><span id="structfield.max_field_section_size" class="structfield section-header"><a href="#structfield.max_field_section_size" class="anchor field">§</a><code>max_field_section_size: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.max_table_capacity" class="structfield section-header"><a href="#structfield.max_table_capacity" class="anchor field">§</a><code>max_table_capacity: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.blocked_streams_count" class="structfield section-header"><a href="#structfield.blocked_streams_count" class="anchor field">§</a><code>blocked_streams_count: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.enable_connect_protocol" class="structfield section-header"><a href="#structfield.enable_connect_protocol" class="anchor field">§</a><code>enable_connect_protocol: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.h3_datagram" class="structfield section-header"><a href="#structfield.h3_datagram" class="anchor field">§</a><code>h3_datagram: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.waits_for_settings" class="structfield section-header"><a href="#structfield.waits_for_settings" class="anchor field">§</a><code>waits_for_settings: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-H3ParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#181">source</a><a href="#impl-Clone-for-H3ParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.H3ParametersSet.html" title="struct qlog::events::h3::H3ParametersSet">H3ParametersSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#181">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.H3ParametersSet.html" title="struct qlog::events::h3::H3ParametersSet">H3ParametersSet</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-H3ParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#181">source</a><a href="#impl-Debug-for-H3ParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.H3ParametersSet.html" title="struct qlog::events::h3::H3ParametersSet">H3ParametersSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#181">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-H3ParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#181">source</a><a href="#impl-Deserialize%3C'de%3E-for-H3ParametersSet" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.H3ParametersSet.html" title="struct qlog::events::h3::H3ParametersSet">H3ParametersSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#181">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-H3ParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#181">source</a><a href="#impl-PartialEq-for-H3ParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.H3ParametersSet.html" title="struct qlog::events::h3::H3ParametersSet">H3ParametersSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#181">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.H3ParametersSet.html" title="struct qlog::events::h3::H3ParametersSet">H3ParametersSet</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-H3ParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#181">source</a><a href="#impl-Serialize-for-H3ParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.H3ParametersSet.html" title="struct qlog::events::h3::H3ParametersSet">H3ParametersSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#181">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-H3ParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#181">source</a><a href="#impl-Eq-for-H3ParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.H3ParametersSet.html" title="struct qlog::events::h3::H3ParametersSet">H3ParametersSet</a></h3></section><section id="impl-StructuralPartialEq-for-H3ParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#181">source</a><a href="#impl-StructuralPartialEq-for-H3ParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.H3ParametersSet.html" title="struct qlog::events::h3::H3ParametersSet">H3ParametersSet</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-H3ParametersSet" class="impl"><a href="#impl-Freeze-for-H3ParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.H3ParametersSet.html" title="struct qlog::events::h3::H3ParametersSet">H3ParametersSet</a></h3></section><section id="impl-RefUnwindSafe-for-H3ParametersSet" class="impl"><a href="#impl-RefUnwindSafe-for-H3ParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.H3ParametersSet.html" title="struct qlog::events::h3::H3ParametersSet">H3ParametersSet</a></h3></section><section id="impl-Send-for-H3ParametersSet" class="impl"><a href="#impl-Send-for-H3ParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.H3ParametersSet.html" title="struct qlog::events::h3::H3ParametersSet">H3ParametersSet</a></h3></section><section id="impl-Sync-for-H3ParametersSet" class="impl"><a href="#impl-Sync-for-H3ParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.H3ParametersSet.html" title="struct qlog::events::h3::H3ParametersSet">H3ParametersSet</a></h3></section><section id="impl-Unpin-for-H3ParametersSet" class="impl"><a href="#impl-Unpin-for-H3ParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.H3ParametersSet.html" title="struct qlog::events::h3::H3ParametersSet">H3ParametersSet</a></h3></section><section id="impl-UnwindSafe-for-H3ParametersSet" class="impl"><a href="#impl-UnwindSafe-for-H3ParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.H3ParametersSet.html" title="struct qlog::events::h3::H3ParametersSet">H3ParametersSet</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/h3/struct.H3PushResolved.html b/qlog/events/h3/struct.H3PushResolved.html
new file mode 100644
index 0000000..b0907fa
--- /dev/null
+++ b/qlog/events/h3/struct.H3PushResolved.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `H3PushResolved` struct in crate `qlog`."><title>H3PushResolved in qlog::events::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">H3PushResolved</a></h2><div class="sidebar-elems"><section><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-H3PushResolved">Clone</a></li><li><a href="#impl-Debug-for-H3PushResolved">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-H3PushResolved">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-H3PushResolved">Eq</a></li><li><a href="#impl-PartialEq-for-H3PushResolved">PartialEq</a></li><li><a href="#impl-Serialize-for-H3PushResolved">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-H3PushResolved">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-H3PushResolved">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-H3PushResolved">RefUnwindSafe</a></li><li><a href="#impl-Send-for-H3PushResolved">Send</a></li><li><a href="#impl-Sync-for-H3PushResolved">Sync</a></li><li><a href="#impl-Unpin-for-H3PushResolved">Unpin</a></li><li><a href="#impl-UnwindSafe-for-H3PushResolved">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="struct" href="#">H3PushResolved</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/h3.rs.html#239-244">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct H3PushResolved { <span class="comment">/* private fields */</span> }</code></pre><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-H3PushResolved" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#238">source</a><a href="#impl-Clone-for-H3PushResolved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.H3PushResolved.html" title="struct qlog::events::h3::H3PushResolved">H3PushResolved</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#238">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.H3PushResolved.html" title="struct qlog::events::h3::H3PushResolved">H3PushResolved</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-H3PushResolved" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#238">source</a><a href="#impl-Debug-for-H3PushResolved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.H3PushResolved.html" title="struct qlog::events::h3::H3PushResolved">H3PushResolved</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#238">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-H3PushResolved" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#238">source</a><a href="#impl-Deserialize%3C'de%3E-for-H3PushResolved" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.H3PushResolved.html" title="struct qlog::events::h3::H3PushResolved">H3PushResolved</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#238">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-H3PushResolved" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#238">source</a><a href="#impl-PartialEq-for-H3PushResolved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.H3PushResolved.html" title="struct qlog::events::h3::H3PushResolved">H3PushResolved</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#238">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.H3PushResolved.html" title="struct qlog::events::h3::H3PushResolved">H3PushResolved</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-H3PushResolved" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#238">source</a><a href="#impl-Serialize-for-H3PushResolved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.H3PushResolved.html" title="struct qlog::events::h3::H3PushResolved">H3PushResolved</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#238">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-H3PushResolved" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#238">source</a><a href="#impl-Eq-for-H3PushResolved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.H3PushResolved.html" title="struct qlog::events::h3::H3PushResolved">H3PushResolved</a></h3></section><section id="impl-StructuralPartialEq-for-H3PushResolved" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#238">source</a><a href="#impl-StructuralPartialEq-for-H3PushResolved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.H3PushResolved.html" title="struct qlog::events::h3::H3PushResolved">H3PushResolved</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-H3PushResolved" class="impl"><a href="#impl-Freeze-for-H3PushResolved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.H3PushResolved.html" title="struct qlog::events::h3::H3PushResolved">H3PushResolved</a></h3></section><section id="impl-RefUnwindSafe-for-H3PushResolved" class="impl"><a href="#impl-RefUnwindSafe-for-H3PushResolved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.H3PushResolved.html" title="struct qlog::events::h3::H3PushResolved">H3PushResolved</a></h3></section><section id="impl-Send-for-H3PushResolved" class="impl"><a href="#impl-Send-for-H3PushResolved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.H3PushResolved.html" title="struct qlog::events::h3::H3PushResolved">H3PushResolved</a></h3></section><section id="impl-Sync-for-H3PushResolved" class="impl"><a href="#impl-Sync-for-H3PushResolved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.H3PushResolved.html" title="struct qlog::events::h3::H3PushResolved">H3PushResolved</a></h3></section><section id="impl-Unpin-for-H3PushResolved" class="impl"><a href="#impl-Unpin-for-H3PushResolved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.H3PushResolved.html" title="struct qlog::events::h3::H3PushResolved">H3PushResolved</a></h3></section><section id="impl-UnwindSafe-for-H3PushResolved" class="impl"><a href="#impl-UnwindSafe-for-H3PushResolved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.H3PushResolved.html" title="struct qlog::events::h3::H3PushResolved">H3PushResolved</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/h3/struct.H3StreamTypeSet.html b/qlog/events/h3/struct.H3StreamTypeSet.html
new file mode 100644
index 0000000..5a04037
--- /dev/null
+++ b/qlog/events/h3/struct.H3StreamTypeSet.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `H3StreamTypeSet` struct in crate `qlog`."><title>H3StreamTypeSet in qlog::events::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">H3StreamTypeSet</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.associated_push_id">associated_push_id</a></li><li><a href="#structfield.owner">owner</a></li><li><a href="#structfield.stream_id">stream_id</a></li><li><a href="#structfield.stream_type">stream_type</a></li><li><a href="#structfield.stream_type_value">stream_type_value</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-H3StreamTypeSet">Clone</a></li><li><a href="#impl-Debug-for-H3StreamTypeSet">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-H3StreamTypeSet">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-H3StreamTypeSet">Eq</a></li><li><a href="#impl-PartialEq-for-H3StreamTypeSet">PartialEq</a></li><li><a href="#impl-Serialize-for-H3StreamTypeSet">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-H3StreamTypeSet">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-H3StreamTypeSet">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-H3StreamTypeSet">RefUnwindSafe</a></li><li><a href="#impl-Send-for-H3StreamTypeSet">Send</a></li><li><a href="#impl-Sync-for-H3StreamTypeSet">Sync</a></li><li><a href="#impl-Unpin-for-H3StreamTypeSet">Unpin</a></li><li><a href="#impl-UnwindSafe-for-H3StreamTypeSet">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="struct" href="#">H3StreamTypeSet</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/h3.rs.html#209-215">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct H3StreamTypeSet {
+    pub owner: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a>&gt;,
+    pub stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub stream_type: <a class="enum" href="enum.H3StreamType.html" title="enum qlog::events::h3::H3StreamType">H3StreamType</a>,
+    pub stream_type_value: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub associated_push_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.owner" class="structfield section-header"><a href="#structfield.owner" class="anchor field">§</a><code>owner: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.H3Owner.html" title="enum qlog::events::h3::H3Owner">H3Owner</a>&gt;</code></span><span id="structfield.stream_id" class="structfield section-header"><a href="#structfield.stream_id" class="anchor field">§</a><code>stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span id="structfield.stream_type" class="structfield section-header"><a href="#structfield.stream_type" class="anchor field">§</a><code>stream_type: <a class="enum" href="enum.H3StreamType.html" title="enum qlog::events::h3::H3StreamType">H3StreamType</a></code></span><span id="structfield.stream_type_value" class="structfield section-header"><a href="#structfield.stream_type_value" class="anchor field">§</a><code>stream_type_value: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.associated_push_id" class="structfield section-header"><a href="#structfield.associated_push_id" class="anchor field">§</a><code>associated_push_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-H3StreamTypeSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#208">source</a><a href="#impl-Clone-for-H3StreamTypeSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.H3StreamTypeSet.html" title="struct qlog::events::h3::H3StreamTypeSet">H3StreamTypeSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#208">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.H3StreamTypeSet.html" title="struct qlog::events::h3::H3StreamTypeSet">H3StreamTypeSet</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-H3StreamTypeSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#208">source</a><a href="#impl-Debug-for-H3StreamTypeSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.H3StreamTypeSet.html" title="struct qlog::events::h3::H3StreamTypeSet">H3StreamTypeSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#208">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-H3StreamTypeSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#208">source</a><a href="#impl-Deserialize%3C'de%3E-for-H3StreamTypeSet" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.H3StreamTypeSet.html" title="struct qlog::events::h3::H3StreamTypeSet">H3StreamTypeSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#208">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-H3StreamTypeSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#208">source</a><a href="#impl-PartialEq-for-H3StreamTypeSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.H3StreamTypeSet.html" title="struct qlog::events::h3::H3StreamTypeSet">H3StreamTypeSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#208">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.H3StreamTypeSet.html" title="struct qlog::events::h3::H3StreamTypeSet">H3StreamTypeSet</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-H3StreamTypeSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#208">source</a><a href="#impl-Serialize-for-H3StreamTypeSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.H3StreamTypeSet.html" title="struct qlog::events::h3::H3StreamTypeSet">H3StreamTypeSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#208">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-H3StreamTypeSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#208">source</a><a href="#impl-Eq-for-H3StreamTypeSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.H3StreamTypeSet.html" title="struct qlog::events::h3::H3StreamTypeSet">H3StreamTypeSet</a></h3></section><section id="impl-StructuralPartialEq-for-H3StreamTypeSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#208">source</a><a href="#impl-StructuralPartialEq-for-H3StreamTypeSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.H3StreamTypeSet.html" title="struct qlog::events::h3::H3StreamTypeSet">H3StreamTypeSet</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-H3StreamTypeSet" class="impl"><a href="#impl-Freeze-for-H3StreamTypeSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.H3StreamTypeSet.html" title="struct qlog::events::h3::H3StreamTypeSet">H3StreamTypeSet</a></h3></section><section id="impl-RefUnwindSafe-for-H3StreamTypeSet" class="impl"><a href="#impl-RefUnwindSafe-for-H3StreamTypeSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.H3StreamTypeSet.html" title="struct qlog::events::h3::H3StreamTypeSet">H3StreamTypeSet</a></h3></section><section id="impl-Send-for-H3StreamTypeSet" class="impl"><a href="#impl-Send-for-H3StreamTypeSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.H3StreamTypeSet.html" title="struct qlog::events::h3::H3StreamTypeSet">H3StreamTypeSet</a></h3></section><section id="impl-Sync-for-H3StreamTypeSet" class="impl"><a href="#impl-Sync-for-H3StreamTypeSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.H3StreamTypeSet.html" title="struct qlog::events::h3::H3StreamTypeSet">H3StreamTypeSet</a></h3></section><section id="impl-Unpin-for-H3StreamTypeSet" class="impl"><a href="#impl-Unpin-for-H3StreamTypeSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.H3StreamTypeSet.html" title="struct qlog::events::h3::H3StreamTypeSet">H3StreamTypeSet</a></h3></section><section id="impl-UnwindSafe-for-H3StreamTypeSet" class="impl"><a href="#impl-UnwindSafe-for-H3StreamTypeSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.H3StreamTypeSet.html" title="struct qlog::events::h3::H3StreamTypeSet">H3StreamTypeSet</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/h3/struct.HttpHeader.html b/qlog/events/h3/struct.HttpHeader.html
new file mode 100644
index 0000000..17b814c
--- /dev/null
+++ b/qlog/events/h3/struct.HttpHeader.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `HttpHeader` struct in crate `qlog`."><title>HttpHeader in qlog::events::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">HttpHeader</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.name">name</a></li><li><a href="#structfield.value">value</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-HttpHeader">Clone</a></li><li><a href="#impl-Debug-for-HttpHeader">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-HttpHeader">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-HttpHeader">Eq</a></li><li><a href="#impl-PartialEq-for-HttpHeader">PartialEq</a></li><li><a href="#impl-Serialize-for-HttpHeader">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-HttpHeader">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-HttpHeader">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-HttpHeader">RefUnwindSafe</a></li><li><a href="#impl-Send-for-HttpHeader">Send</a></li><li><a href="#impl-Sync-for-HttpHeader">Sync</a></li><li><a href="#impl-Unpin-for-HttpHeader">Unpin</a></li><li><a href="#impl-UnwindSafe-for-HttpHeader">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="struct" href="#">HttpHeader</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/h3.rs.html#100-103">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct HttpHeader {
+    pub name: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.name" class="structfield section-header"><a href="#structfield.name" class="anchor field">§</a><code>name: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.value" class="structfield section-header"><a href="#structfield.value" class="anchor field">§</a><code>value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-HttpHeader" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#99">source</a><a href="#impl-Clone-for-HttpHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#99">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-HttpHeader" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#99">source</a><a href="#impl-Debug-for-HttpHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#99">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-HttpHeader" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#99">source</a><a href="#impl-Deserialize%3C'de%3E-for-HttpHeader" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#99">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-HttpHeader" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#99">source</a><a href="#impl-PartialEq-for-HttpHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#99">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-HttpHeader" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#99">source</a><a href="#impl-Serialize-for-HttpHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#99">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-HttpHeader" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#99">source</a><a href="#impl-Eq-for-HttpHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a></h3></section><section id="impl-StructuralPartialEq-for-HttpHeader" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#99">source</a><a href="#impl-StructuralPartialEq-for-HttpHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-HttpHeader" class="impl"><a href="#impl-Freeze-for-HttpHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a></h3></section><section id="impl-RefUnwindSafe-for-HttpHeader" class="impl"><a href="#impl-RefUnwindSafe-for-HttpHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a></h3></section><section id="impl-Send-for-HttpHeader" class="impl"><a href="#impl-Send-for-HttpHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a></h3></section><section id="impl-Sync-for-HttpHeader" class="impl"><a href="#impl-Sync-for-HttpHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a></h3></section><section id="impl-Unpin-for-HttpHeader" class="impl"><a href="#impl-Unpin-for-HttpHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a></h3></section><section id="impl-UnwindSafe-for-HttpHeader" class="impl"><a href="#impl-UnwindSafe-for-HttpHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/h3/struct.Setting.html b/qlog/events/h3/struct.Setting.html
new file mode 100644
index 0000000..19f32e7
--- /dev/null
+++ b/qlog/events/h3/struct.Setting.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `Setting` struct in crate `qlog`."><title>Setting in qlog::events::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Setting</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.name">name</a></li><li><a href="#structfield.value">value</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-Setting">Clone</a></li><li><a href="#impl-Debug-for-Setting">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-Setting">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-Setting">Eq</a></li><li><a href="#impl-PartialEq-for-Setting">PartialEq</a></li><li><a href="#impl-Serialize-for-Setting">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-Setting">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Setting">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Setting">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Setting">Send</a></li><li><a href="#impl-Sync-for-Setting">Sync</a></li><li><a href="#impl-Unpin-for-Setting">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Setting">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="struct" href="#">Setting</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/h3.rs.html#106-109">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Setting {
+    pub name: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.name" class="structfield section-header"><a href="#structfield.name" class="anchor field">§</a><code>name: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.value" class="structfield section-header"><a href="#structfield.value" class="anchor field">§</a><code>value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Setting" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#105">source</a><a href="#impl-Clone-for-Setting" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Setting.html" title="struct qlog::events::h3::Setting">Setting</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#105">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.Setting.html" title="struct qlog::events::h3::Setting">Setting</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Setting" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#105">source</a><a href="#impl-Debug-for-Setting" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Setting.html" title="struct qlog::events::h3::Setting">Setting</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#105">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-Setting" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#105">source</a><a href="#impl-Deserialize%3C'de%3E-for-Setting" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.Setting.html" title="struct qlog::events::h3::Setting">Setting</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#105">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-Setting" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#105">source</a><a href="#impl-PartialEq-for-Setting" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.Setting.html" title="struct qlog::events::h3::Setting">Setting</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#105">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.Setting.html" title="struct qlog::events::h3::Setting">Setting</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-Setting" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#105">source</a><a href="#impl-Serialize-for-Setting" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.Setting.html" title="struct qlog::events::h3::Setting">Setting</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#105">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-Setting" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#105">source</a><a href="#impl-Eq-for-Setting" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Setting.html" title="struct qlog::events::h3::Setting">Setting</a></h3></section><section id="impl-StructuralPartialEq-for-Setting" class="impl"><a class="src rightside" href="../../../src/qlog/events/h3.rs.html#105">source</a><a href="#impl-StructuralPartialEq-for-Setting" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.Setting.html" title="struct qlog::events::h3::Setting">Setting</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Setting" class="impl"><a href="#impl-Freeze-for-Setting" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Setting.html" title="struct qlog::events::h3::Setting">Setting</a></h3></section><section id="impl-RefUnwindSafe-for-Setting" class="impl"><a href="#impl-RefUnwindSafe-for-Setting" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Setting.html" title="struct qlog::events::h3::Setting">Setting</a></h3></section><section id="impl-Send-for-Setting" class="impl"><a href="#impl-Send-for-Setting" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Setting.html" title="struct qlog::events::h3::Setting">Setting</a></h3></section><section id="impl-Sync-for-Setting" class="impl"><a href="#impl-Sync-for-Setting" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Setting.html" title="struct qlog::events::h3::Setting">Setting</a></h3></section><section id="impl-Unpin-for-Setting" class="impl"><a href="#impl-Unpin-for-Setting" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Setting.html" title="struct qlog::events::h3::Setting">Setting</a></h3></section><section id="impl-UnwindSafe-for-Setting" class="impl"><a href="#impl-UnwindSafe-for-Setting" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Setting.html" title="struct qlog::events::h3::Setting">Setting</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/index.html b/qlog/events/index.html
new file mode 100644
index 0000000..227a607
--- /dev/null
+++ b/qlog/events/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `events` mod in crate `qlog`."><title>qlog::events - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Module events</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li><li><a href="#types">Type Aliases</a></li></ul></section><h2><a href="../index.html">In crate qlog</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../index.html">qlog</a>::<wbr><a class="mod" href="#">events</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/events/mod.rs.html#27-758">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><h2 id="modules" class="section-header">Modules<a href="#modules" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="mod" href="connectivity/index.html" title="mod qlog::events::connectivity">connectivity</a></div></li><li><div class="item-name"><a class="mod" href="h3/index.html" title="mod qlog::events::h3">h3</a></div></li><li><div class="item-name"><a class="mod" href="qpack/index.html" title="mod qlog::events::qpack">qpack</a></div></li><li><div class="item-name"><a class="mod" href="quic/index.html" title="mod qlog::events::quic">quic</a></div></li><li><div class="item-name"><a class="mod" href="security/index.html" title="mod qlog::events::security">security</a></div></li></ul><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.Event.html" title="struct qlog::events::Event">Event</a></div></li><li><div class="item-name"><a class="struct" href="struct.JsonEvent.html" title="struct qlog::events::JsonEvent">JsonEvent</a></div></li><li><div class="item-name"><a class="struct" href="struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a></div></li></ul><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="enum" href="enum.ApplicationErrorCode.html" title="enum qlog::events::ApplicationErrorCode">ApplicationErrorCode</a></div></li><li><div class="item-name"><a class="enum" href="enum.ConnectionErrorCode.html" title="enum qlog::events::ConnectionErrorCode">ConnectionErrorCode</a></div></li><li><div class="item-name"><a class="enum" href="enum.CryptoError.html" title="enum qlog::events::CryptoError">CryptoError</a></div></li><li><div class="item-name"><a class="enum" href="enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a></div></li><li><div class="item-name"><a class="enum" href="enum.EventCategory.html" title="enum qlog::events::EventCategory">EventCategory</a></div></li><li><div class="item-name"><a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a></div></li><li><div class="item-name"><a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></div></li><li><div class="item-name"><a class="enum" href="enum.EventType.html" title="enum qlog::events::EventType">EventType</a></div></li><li><div class="item-name"><a class="enum" href="enum.GenericEventType.html" title="enum qlog::events::GenericEventType">GenericEventType</a></div></li><li><div class="item-name"><a class="enum" href="enum.TimeFormat.html" title="enum qlog::events::TimeFormat">TimeFormat</a></div></li></ul><h2 id="traits" class="section-header">Traits<a href="#traits" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="trait" href="trait.Eventable.html" title="trait qlog::events::Eventable">Eventable</a></div></li></ul><h2 id="types" class="section-header">Type Aliases<a href="#types" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="type" href="type.ExData.html" title="type qlog::events::ExData">ExData</a></div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/qpack/enum.QPackInstruction.html b/qlog/events/qpack/enum.QPackInstruction.html
new file mode 100644
index 0000000..dbb6a8b
--- /dev/null
+++ b/qlog/events/qpack/enum.QPackInstruction.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QPackInstruction` enum in crate `qlog`."><title>QPackInstruction in qlog::events::qpack - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QPackInstruction</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.DuplicateInstruction">DuplicateInstruction</a></li><li><a href="#variant.HeaderAcknowledgementInstruction">HeaderAcknowledgementInstruction</a></li><li><a href="#variant.InsertCountIncrementInstruction">InsertCountIncrementInstruction</a></li><li><a href="#variant.InsertWithNameReferenceInstruction">InsertWithNameReferenceInstruction</a></li><li><a href="#variant.InsertWithoutNameReferenceInstruction">InsertWithoutNameReferenceInstruction</a></li><li><a href="#variant.SetDynamicTableCapacityInstruction">SetDynamicTableCapacityInstruction</a></li><li><a href="#variant.StreamCancellationInstruction">StreamCancellationInstruction</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QPackInstruction">Clone</a></li><li><a href="#impl-Debug-for-QPackInstruction">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QPackInstruction">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-QPackInstruction">Eq</a></li><li><a href="#impl-PartialEq-for-QPackInstruction">PartialEq</a></li><li><a href="#impl-Serialize-for-QPackInstruction">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QPackInstruction">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QPackInstruction">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QPackInstruction">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QPackInstruction">Send</a></li><li><a href="#impl-Sync-for-QPackInstruction">Sync</a></li><li><a href="#impl-Unpin-for-QPackInstruction">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QPackInstruction">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::qpack</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">qpack</a>::<wbr><a class="enum" href="#">QPackInstruction</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/qpack.rs.html#100-154">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum QPackInstruction {
+    SetDynamicTableCapacityInstruction {
+        instruction_type: <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a>,
+        capacity: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    },
+    InsertWithNameReferenceInstruction {
+        instruction_type: <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a>,
+        table_type: <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a>,
+        name_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        huffman_encoded_value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+        value_length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    },
+    InsertWithoutNameReferenceInstruction {
+        instruction_type: <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a>,
+        huffman_encoded_name: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+        name_length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        name: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+        huffman_encoded_value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+        value_length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    },
+    DuplicateInstruction {
+        instruction_type: <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a>,
+        index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    },
+    HeaderAcknowledgementInstruction {
+        instruction_type: <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a>,
+        stream_id: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    },
+    StreamCancellationInstruction {
+        instruction_type: <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a>,
+        stream_id: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    },
+    InsertCountIncrementInstruction {
+        instruction_type: <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a>,
+        increment: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    },
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.SetDynamicTableCapacityInstruction" class="variant"><a href="#variant.SetDynamicTableCapacityInstruction" class="anchor">§</a><h3 class="code-header">SetDynamicTableCapacityInstruction</h3></section><div class="sub-variant" id="variant.SetDynamicTableCapacityInstruction.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.SetDynamicTableCapacityInstruction.field.instruction_type" class="section-header"><a href="#variant.SetDynamicTableCapacityInstruction.field.instruction_type" class="anchor field">§</a><code>instruction_type: <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></code></span></div><div class="sub-variant-field"><span id="variant.SetDynamicTableCapacityInstruction.field.capacity" class="section-header"><a href="#variant.SetDynamicTableCapacityInstruction.field.capacity" class="anchor field">§</a><code>capacity: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div></div><section id="variant.InsertWithNameReferenceInstruction" class="variant"><a href="#variant.InsertWithNameReferenceInstruction" class="anchor">§</a><h3 class="code-header">InsertWithNameReferenceInstruction</h3></section><div class="sub-variant" id="variant.InsertWithNameReferenceInstruction.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.InsertWithNameReferenceInstruction.field.instruction_type" class="section-header"><a href="#variant.InsertWithNameReferenceInstruction.field.instruction_type" class="anchor field">§</a><code>instruction_type: <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></code></span></div><div class="sub-variant-field"><span id="variant.InsertWithNameReferenceInstruction.field.table_type" class="section-header"><a href="#variant.InsertWithNameReferenceInstruction.field.table_type" class="anchor field">§</a><code>table_type: <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a></code></span></div><div class="sub-variant-field"><span id="variant.InsertWithNameReferenceInstruction.field.name_index" class="section-header"><a href="#variant.InsertWithNameReferenceInstruction.field.name_index" class="anchor field">§</a><code>name_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.InsertWithNameReferenceInstruction.field.huffman_encoded_value" class="section-header"><a href="#variant.InsertWithNameReferenceInstruction.field.huffman_encoded_value" class="anchor field">§</a><code>huffman_encoded_value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span></div><div class="sub-variant-field"><span id="variant.InsertWithNameReferenceInstruction.field.value_length" class="section-header"><a href="#variant.InsertWithNameReferenceInstruction.field.value_length" class="anchor field">§</a><code>value_length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.InsertWithNameReferenceInstruction.field.value" class="section-header"><a href="#variant.InsertWithNameReferenceInstruction.field.value" class="anchor field">§</a><code>value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span></div></div><section id="variant.InsertWithoutNameReferenceInstruction" class="variant"><a href="#variant.InsertWithoutNameReferenceInstruction" class="anchor">§</a><h3 class="code-header">InsertWithoutNameReferenceInstruction</h3></section><div class="sub-variant" id="variant.InsertWithoutNameReferenceInstruction.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.InsertWithoutNameReferenceInstruction.field.instruction_type" class="section-header"><a href="#variant.InsertWithoutNameReferenceInstruction.field.instruction_type" class="anchor field">§</a><code>instruction_type: <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></code></span></div><div class="sub-variant-field"><span id="variant.InsertWithoutNameReferenceInstruction.field.huffman_encoded_name" class="section-header"><a href="#variant.InsertWithoutNameReferenceInstruction.field.huffman_encoded_name" class="anchor field">§</a><code>huffman_encoded_name: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span></div><div class="sub-variant-field"><span id="variant.InsertWithoutNameReferenceInstruction.field.name_length" class="section-header"><a href="#variant.InsertWithoutNameReferenceInstruction.field.name_length" class="anchor field">§</a><code>name_length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.InsertWithoutNameReferenceInstruction.field.name" class="section-header"><a href="#variant.InsertWithoutNameReferenceInstruction.field.name" class="anchor field">§</a><code>name: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span></div><div class="sub-variant-field"><span id="variant.InsertWithoutNameReferenceInstruction.field.huffman_encoded_value" class="section-header"><a href="#variant.InsertWithoutNameReferenceInstruction.field.huffman_encoded_value" class="anchor field">§</a><code>huffman_encoded_value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span></div><div class="sub-variant-field"><span id="variant.InsertWithoutNameReferenceInstruction.field.value_length" class="section-header"><a href="#variant.InsertWithoutNameReferenceInstruction.field.value_length" class="anchor field">§</a><code>value_length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.InsertWithoutNameReferenceInstruction.field.value" class="section-header"><a href="#variant.InsertWithoutNameReferenceInstruction.field.value" class="anchor field">§</a><code>value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span></div></div><section id="variant.DuplicateInstruction" class="variant"><a href="#variant.DuplicateInstruction" class="anchor">§</a><h3 class="code-header">DuplicateInstruction</h3></section><div class="sub-variant" id="variant.DuplicateInstruction.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.DuplicateInstruction.field.instruction_type" class="section-header"><a href="#variant.DuplicateInstruction.field.instruction_type" class="anchor field">§</a><code>instruction_type: <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></code></span></div><div class="sub-variant-field"><span id="variant.DuplicateInstruction.field.index" class="section-header"><a href="#variant.DuplicateInstruction.field.index" class="anchor field">§</a><code>index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div></div><section id="variant.HeaderAcknowledgementInstruction" class="variant"><a href="#variant.HeaderAcknowledgementInstruction" class="anchor">§</a><h3 class="code-header">HeaderAcknowledgementInstruction</h3></section><div class="sub-variant" id="variant.HeaderAcknowledgementInstruction.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.HeaderAcknowledgementInstruction.field.instruction_type" class="section-header"><a href="#variant.HeaderAcknowledgementInstruction.field.instruction_type" class="anchor field">§</a><code>instruction_type: <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></code></span></div><div class="sub-variant-field"><span id="variant.HeaderAcknowledgementInstruction.field.stream_id" class="section-header"><a href="#variant.HeaderAcknowledgementInstruction.field.stream_id" class="anchor field">§</a><code>stream_id: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span></div></div><section id="variant.StreamCancellationInstruction" class="variant"><a href="#variant.StreamCancellationInstruction" class="anchor">§</a><h3 class="code-header">StreamCancellationInstruction</h3></section><div class="sub-variant" id="variant.StreamCancellationInstruction.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.StreamCancellationInstruction.field.instruction_type" class="section-header"><a href="#variant.StreamCancellationInstruction.field.instruction_type" class="anchor field">§</a><code>instruction_type: <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></code></span></div><div class="sub-variant-field"><span id="variant.StreamCancellationInstruction.field.stream_id" class="section-header"><a href="#variant.StreamCancellationInstruction.field.stream_id" class="anchor field">§</a><code>stream_id: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span></div></div><section id="variant.InsertCountIncrementInstruction" class="variant"><a href="#variant.InsertCountIncrementInstruction" class="anchor">§</a><h3 class="code-header">InsertCountIncrementInstruction</h3></section><div class="sub-variant" id="variant.InsertCountIncrementInstruction.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.InsertCountIncrementInstruction.field.instruction_type" class="section-header"><a href="#variant.InsertCountIncrementInstruction.field.instruction_type" class="anchor field">§</a><code>instruction_type: <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></code></span></div><div class="sub-variant-field"><span id="variant.InsertCountIncrementInstruction.field.increment" class="section-header"><a href="#variant.InsertCountIncrementInstruction.field.increment" class="anchor field">§</a><code>increment: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div></div></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QPackInstruction" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#99">source</a><a href="#impl-Clone-for-QPackInstruction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#99">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QPackInstruction" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#99">source</a><a href="#impl-Debug-for-QPackInstruction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#99">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QPackInstruction" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#99">source</a><a href="#impl-Deserialize%3C'de%3E-for-QPackInstruction" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#99">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QPackInstruction" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#99">source</a><a href="#impl-PartialEq-for-QPackInstruction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#99">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QPackInstruction" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#99">source</a><a href="#impl-Serialize-for-QPackInstruction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#99">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-QPackInstruction" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#99">source</a><a href="#impl-Eq-for-QPackInstruction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a></h3></section><section id="impl-StructuralPartialEq-for-QPackInstruction" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#99">source</a><a href="#impl-StructuralPartialEq-for-QPackInstruction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QPackInstruction" class="impl"><a href="#impl-Freeze-for-QPackInstruction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a></h3></section><section id="impl-RefUnwindSafe-for-QPackInstruction" class="impl"><a href="#impl-RefUnwindSafe-for-QPackInstruction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a></h3></section><section id="impl-Send-for-QPackInstruction" class="impl"><a href="#impl-Send-for-QPackInstruction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a></h3></section><section id="impl-Sync-for-QPackInstruction" class="impl"><a href="#impl-Sync-for-QPackInstruction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a></h3></section><section id="impl-Unpin-for-QPackInstruction" class="impl"><a href="#impl-Unpin-for-QPackInstruction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a></h3></section><section id="impl-UnwindSafe-for-QPackInstruction" class="impl"><a href="#impl-UnwindSafe-for-QPackInstruction" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/qpack/enum.QpackEventType.html b/qlog/events/qpack/enum.QpackEventType.html
new file mode 100644
index 0000000..70c07da
--- /dev/null
+++ b/qlog/events/qpack/enum.QpackEventType.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QpackEventType` enum in crate `qlog`."><title>QpackEventType in qlog::events::qpack - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QpackEventType</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.DynamicTableUpdated">DynamicTableUpdated</a></li><li><a href="#variant.HeadersDecoded">HeadersDecoded</a></li><li><a href="#variant.HeadersEncoded">HeadersEncoded</a></li><li><a href="#variant.InstructionCreated">InstructionCreated</a></li><li><a href="#variant.InstructionParsed">InstructionParsed</a></li><li><a href="#variant.StateUpdated">StateUpdated</a></li><li><a href="#variant.StreamStateUpdated">StreamStateUpdated</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QpackEventType">Clone</a></li><li><a href="#impl-Copy-for-QpackEventType">Copy</a></li><li><a href="#impl-Debug-for-QpackEventType">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QpackEventType">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-QpackEventType">Eq</a></li><li><a href="#impl-PartialEq-for-QpackEventType">PartialEq</a></li><li><a href="#impl-Serialize-for-QpackEventType">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QpackEventType">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QpackEventType">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QpackEventType">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QpackEventType">Send</a></li><li><a href="#impl-Sync-for-QpackEventType">Sync</a></li><li><a href="#impl-Unpin-for-QpackEventType">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QpackEventType">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::qpack</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">qpack</a>::<wbr><a class="enum" href="#">QpackEventType</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/qpack.rs.html#35-43">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum QpackEventType {
+    StateUpdated,
+    StreamStateUpdated,
+    DynamicTableUpdated,
+    HeadersEncoded,
+    HeadersDecoded,
+    InstructionCreated,
+    InstructionParsed,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.StateUpdated" class="variant"><a href="#variant.StateUpdated" class="anchor">§</a><h3 class="code-header">StateUpdated</h3></section><section id="variant.StreamStateUpdated" class="variant"><a href="#variant.StreamStateUpdated" class="anchor">§</a><h3 class="code-header">StreamStateUpdated</h3></section><section id="variant.DynamicTableUpdated" class="variant"><a href="#variant.DynamicTableUpdated" class="anchor">§</a><h3 class="code-header">DynamicTableUpdated</h3></section><section id="variant.HeadersEncoded" class="variant"><a href="#variant.HeadersEncoded" class="anchor">§</a><h3 class="code-header">HeadersEncoded</h3></section><section id="variant.HeadersDecoded" class="variant"><a href="#variant.HeadersDecoded" class="anchor">§</a><h3 class="code-header">HeadersDecoded</h3></section><section id="variant.InstructionCreated" class="variant"><a href="#variant.InstructionCreated" class="anchor">§</a><h3 class="code-header">InstructionCreated</h3></section><section id="variant.InstructionParsed" class="variant"><a href="#variant.InstructionParsed" class="anchor">§</a><h3 class="code-header">InstructionParsed</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QpackEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#33">source</a><a href="#impl-Clone-for-QpackEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.QpackEventType.html" title="enum qlog::events::qpack::QpackEventType">QpackEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#33">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.QpackEventType.html" title="enum qlog::events::qpack::QpackEventType">QpackEventType</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QpackEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#33">source</a><a href="#impl-Debug-for-QpackEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.QpackEventType.html" title="enum qlog::events::qpack::QpackEventType">QpackEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#33">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QpackEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#33">source</a><a href="#impl-Deserialize%3C'de%3E-for-QpackEventType" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.QpackEventType.html" title="enum qlog::events::qpack::QpackEventType">QpackEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#33">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QpackEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#33">source</a><a href="#impl-PartialEq-for-QpackEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.QpackEventType.html" title="enum qlog::events::qpack::QpackEventType">QpackEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#33">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.QpackEventType.html" title="enum qlog::events::qpack::QpackEventType">QpackEventType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QpackEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#33">source</a><a href="#impl-Serialize-for-QpackEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.QpackEventType.html" title="enum qlog::events::qpack::QpackEventType">QpackEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#33">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-QpackEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#33">source</a><a href="#impl-Copy-for-QpackEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.QpackEventType.html" title="enum qlog::events::qpack::QpackEventType">QpackEventType</a></h3></section><section id="impl-Eq-for-QpackEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#33">source</a><a href="#impl-Eq-for-QpackEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.QpackEventType.html" title="enum qlog::events::qpack::QpackEventType">QpackEventType</a></h3></section><section id="impl-StructuralPartialEq-for-QpackEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#33">source</a><a href="#impl-StructuralPartialEq-for-QpackEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.QpackEventType.html" title="enum qlog::events::qpack::QpackEventType">QpackEventType</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QpackEventType" class="impl"><a href="#impl-Freeze-for-QpackEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.QpackEventType.html" title="enum qlog::events::qpack::QpackEventType">QpackEventType</a></h3></section><section id="impl-RefUnwindSafe-for-QpackEventType" class="impl"><a href="#impl-RefUnwindSafe-for-QpackEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.QpackEventType.html" title="enum qlog::events::qpack::QpackEventType">QpackEventType</a></h3></section><section id="impl-Send-for-QpackEventType" class="impl"><a href="#impl-Send-for-QpackEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.QpackEventType.html" title="enum qlog::events::qpack::QpackEventType">QpackEventType</a></h3></section><section id="impl-Sync-for-QpackEventType" class="impl"><a href="#impl-Sync-for-QpackEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.QpackEventType.html" title="enum qlog::events::qpack::QpackEventType">QpackEventType</a></h3></section><section id="impl-Unpin-for-QpackEventType" class="impl"><a href="#impl-Unpin-for-QpackEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.QpackEventType.html" title="enum qlog::events::qpack::QpackEventType">QpackEventType</a></h3></section><section id="impl-UnwindSafe-for-QpackEventType" class="impl"><a href="#impl-UnwindSafe-for-QpackEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.QpackEventType.html" title="enum qlog::events::qpack::QpackEventType">QpackEventType</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/qpack/enum.QpackHeaderBlockRepresentation.html b/qlog/events/qpack/enum.QpackHeaderBlockRepresentation.html
new file mode 100644
index 0000000..c2647b9
--- /dev/null
+++ b/qlog/events/qpack/enum.QpackHeaderBlockRepresentation.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QpackHeaderBlockRepresentation` enum in crate `qlog`."><title>QpackHeaderBlockRepresentation in qlog::events::qpack - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QpackHeaderBlockRepresentation</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.IndexedHeaderField">IndexedHeaderField</a></li><li><a href="#variant.LiteralHeaderFieldWithName">LiteralHeaderFieldWithName</a></li><li><a href="#variant.LiteralHeaderFieldWithoutName">LiteralHeaderFieldWithoutName</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QpackHeaderBlockRepresentation">Clone</a></li><li><a href="#impl-Debug-for-QpackHeaderBlockRepresentation">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QpackHeaderBlockRepresentation">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-QpackHeaderBlockRepresentation">Eq</a></li><li><a href="#impl-PartialEq-for-QpackHeaderBlockRepresentation">PartialEq</a></li><li><a href="#impl-Serialize-for-QpackHeaderBlockRepresentation">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QpackHeaderBlockRepresentation">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QpackHeaderBlockRepresentation">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QpackHeaderBlockRepresentation">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QpackHeaderBlockRepresentation">Send</a></li><li><a href="#impl-Sync-for-QpackHeaderBlockRepresentation">Sync</a></li><li><a href="#impl-Unpin-for-QpackHeaderBlockRepresentation">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QpackHeaderBlockRepresentation">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::qpack</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">qpack</a>::<wbr><a class="enum" href="#">QpackHeaderBlockRepresentation</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/qpack.rs.html#165-206">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum QpackHeaderBlockRepresentation {
+    IndexedHeaderField {
+        header_field_type: <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a>,
+        table_type: <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a>,
+        index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        is_post_base: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;,
+    },
+    LiteralHeaderFieldWithName {
+        header_field_type: <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a>,
+        preserve_literal: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+        table_type: <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a>,
+        name_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        huffman_encoded_value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+        value_length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+        is_post_base: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;,
+    },
+    LiteralHeaderFieldWithoutName {
+        header_field_type: <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a>,
+        preserve_literal: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+        table_type: <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a>,
+        name_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        huffman_encoded_name: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+        name_length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        name: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+        huffman_encoded_value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+        value_length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+        is_post_base: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;,
+    },
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.IndexedHeaderField" class="variant"><a href="#variant.IndexedHeaderField" class="anchor">§</a><h3 class="code-header">IndexedHeaderField</h3></section><div class="sub-variant" id="variant.IndexedHeaderField.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.IndexedHeaderField.field.header_field_type" class="section-header"><a href="#variant.IndexedHeaderField.field.header_field_type" class="anchor field">§</a><code>header_field_type: <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a></code></span></div><div class="sub-variant-field"><span id="variant.IndexedHeaderField.field.table_type" class="section-header"><a href="#variant.IndexedHeaderField.field.table_type" class="anchor field">§</a><code>table_type: <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a></code></span></div><div class="sub-variant-field"><span id="variant.IndexedHeaderField.field.index" class="section-header"><a href="#variant.IndexedHeaderField.field.index" class="anchor field">§</a><code>index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.IndexedHeaderField.field.is_post_base" class="section-header"><a href="#variant.IndexedHeaderField.field.is_post_base" class="anchor field">§</a><code>is_post_base: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</code></span></div></div><section id="variant.LiteralHeaderFieldWithName" class="variant"><a href="#variant.LiteralHeaderFieldWithName" class="anchor">§</a><h3 class="code-header">LiteralHeaderFieldWithName</h3></section><div class="sub-variant" id="variant.LiteralHeaderFieldWithName.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.LiteralHeaderFieldWithName.field.header_field_type" class="section-header"><a href="#variant.LiteralHeaderFieldWithName.field.header_field_type" class="anchor field">§</a><code>header_field_type: <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a></code></span></div><div class="sub-variant-field"><span id="variant.LiteralHeaderFieldWithName.field.preserve_literal" class="section-header"><a href="#variant.LiteralHeaderFieldWithName.field.preserve_literal" class="anchor field">§</a><code>preserve_literal: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span></div><div class="sub-variant-field"><span id="variant.LiteralHeaderFieldWithName.field.table_type" class="section-header"><a href="#variant.LiteralHeaderFieldWithName.field.table_type" class="anchor field">§</a><code>table_type: <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a></code></span></div><div class="sub-variant-field"><span id="variant.LiteralHeaderFieldWithName.field.name_index" class="section-header"><a href="#variant.LiteralHeaderFieldWithName.field.name_index" class="anchor field">§</a><code>name_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.LiteralHeaderFieldWithName.field.huffman_encoded_value" class="section-header"><a href="#variant.LiteralHeaderFieldWithName.field.huffman_encoded_value" class="anchor field">§</a><code>huffman_encoded_value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span></div><div class="sub-variant-field"><span id="variant.LiteralHeaderFieldWithName.field.value_length" class="section-header"><a href="#variant.LiteralHeaderFieldWithName.field.value_length" class="anchor field">§</a><code>value_length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.LiteralHeaderFieldWithName.field.value" class="section-header"><a href="#variant.LiteralHeaderFieldWithName.field.value" class="anchor field">§</a><code>value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span></div><div class="sub-variant-field"><span id="variant.LiteralHeaderFieldWithName.field.is_post_base" class="section-header"><a href="#variant.LiteralHeaderFieldWithName.field.is_post_base" class="anchor field">§</a><code>is_post_base: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</code></span></div></div><section id="variant.LiteralHeaderFieldWithoutName" class="variant"><a href="#variant.LiteralHeaderFieldWithoutName" class="anchor">§</a><h3 class="code-header">LiteralHeaderFieldWithoutName</h3></section><div class="sub-variant" id="variant.LiteralHeaderFieldWithoutName.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.LiteralHeaderFieldWithoutName.field.header_field_type" class="section-header"><a href="#variant.LiteralHeaderFieldWithoutName.field.header_field_type" class="anchor field">§</a><code>header_field_type: <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a></code></span></div><div class="sub-variant-field"><span id="variant.LiteralHeaderFieldWithoutName.field.preserve_literal" class="section-header"><a href="#variant.LiteralHeaderFieldWithoutName.field.preserve_literal" class="anchor field">§</a><code>preserve_literal: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span></div><div class="sub-variant-field"><span id="variant.LiteralHeaderFieldWithoutName.field.table_type" class="section-header"><a href="#variant.LiteralHeaderFieldWithoutName.field.table_type" class="anchor field">§</a><code>table_type: <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a></code></span></div><div class="sub-variant-field"><span id="variant.LiteralHeaderFieldWithoutName.field.name_index" class="section-header"><a href="#variant.LiteralHeaderFieldWithoutName.field.name_index" class="anchor field">§</a><code>name_index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.LiteralHeaderFieldWithoutName.field.huffman_encoded_name" class="section-header"><a href="#variant.LiteralHeaderFieldWithoutName.field.huffman_encoded_name" class="anchor field">§</a><code>huffman_encoded_name: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span></div><div class="sub-variant-field"><span id="variant.LiteralHeaderFieldWithoutName.field.name_length" class="section-header"><a href="#variant.LiteralHeaderFieldWithoutName.field.name_length" class="anchor field">§</a><code>name_length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.LiteralHeaderFieldWithoutName.field.name" class="section-header"><a href="#variant.LiteralHeaderFieldWithoutName.field.name" class="anchor field">§</a><code>name: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span></div><div class="sub-variant-field"><span id="variant.LiteralHeaderFieldWithoutName.field.huffman_encoded_value" class="section-header"><a href="#variant.LiteralHeaderFieldWithoutName.field.huffman_encoded_value" class="anchor field">§</a><code>huffman_encoded_value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span></div><div class="sub-variant-field"><span id="variant.LiteralHeaderFieldWithoutName.field.value_length" class="section-header"><a href="#variant.LiteralHeaderFieldWithoutName.field.value_length" class="anchor field">§</a><code>value_length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.LiteralHeaderFieldWithoutName.field.value" class="section-header"><a href="#variant.LiteralHeaderFieldWithoutName.field.value" class="anchor field">§</a><code>value: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span></div><div class="sub-variant-field"><span id="variant.LiteralHeaderFieldWithoutName.field.is_post_base" class="section-header"><a href="#variant.LiteralHeaderFieldWithoutName.field.is_post_base" class="anchor field">§</a><code>is_post_base: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</code></span></div></div></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QpackHeaderBlockRepresentation" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#164">source</a><a href="#impl-Clone-for-QpackHeaderBlockRepresentation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#164">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QpackHeaderBlockRepresentation" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#164">source</a><a href="#impl-Debug-for-QpackHeaderBlockRepresentation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#164">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QpackHeaderBlockRepresentation" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#164">source</a><a href="#impl-Deserialize%3C'de%3E-for-QpackHeaderBlockRepresentation" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#164">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QpackHeaderBlockRepresentation" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#164">source</a><a href="#impl-PartialEq-for-QpackHeaderBlockRepresentation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#164">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QpackHeaderBlockRepresentation" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#164">source</a><a href="#impl-Serialize-for-QpackHeaderBlockRepresentation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#164">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-QpackHeaderBlockRepresentation" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#164">source</a><a href="#impl-Eq-for-QpackHeaderBlockRepresentation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a></h3></section><section id="impl-StructuralPartialEq-for-QpackHeaderBlockRepresentation" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#164">source</a><a href="#impl-StructuralPartialEq-for-QpackHeaderBlockRepresentation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QpackHeaderBlockRepresentation" class="impl"><a href="#impl-Freeze-for-QpackHeaderBlockRepresentation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a></h3></section><section id="impl-RefUnwindSafe-for-QpackHeaderBlockRepresentation" class="impl"><a href="#impl-RefUnwindSafe-for-QpackHeaderBlockRepresentation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a></h3></section><section id="impl-Send-for-QpackHeaderBlockRepresentation" class="impl"><a href="#impl-Send-for-QpackHeaderBlockRepresentation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a></h3></section><section id="impl-Sync-for-QpackHeaderBlockRepresentation" class="impl"><a href="#impl-Sync-for-QpackHeaderBlockRepresentation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a></h3></section><section id="impl-Unpin-for-QpackHeaderBlockRepresentation" class="impl"><a href="#impl-Unpin-for-QpackHeaderBlockRepresentation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a></h3></section><section id="impl-UnwindSafe-for-QpackHeaderBlockRepresentation" class="impl"><a href="#impl-UnwindSafe-for-QpackHeaderBlockRepresentation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/qpack/enum.QpackHeaderBlockRepresentationTypeName.html b/qlog/events/qpack/enum.QpackHeaderBlockRepresentationTypeName.html
new file mode 100644
index 0000000..2878d5d
--- /dev/null
+++ b/qlog/events/qpack/enum.QpackHeaderBlockRepresentationTypeName.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QpackHeaderBlockRepresentationTypeName` enum in crate `qlog`."><title>QpackHeaderBlockRepresentationTypeName in qlog::events::qpack - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QpackHeaderBlockRepresentationTypeName</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.IndexedHeaderField">IndexedHeaderField</a></li><li><a href="#variant.LiteralHeaderFieldWithName">LiteralHeaderFieldWithName</a></li><li><a href="#variant.LiteralHeaderFieldWithoutName">LiteralHeaderFieldWithoutName</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QpackHeaderBlockRepresentationTypeName">Clone</a></li><li><a href="#impl-Debug-for-QpackHeaderBlockRepresentationTypeName">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QpackHeaderBlockRepresentationTypeName">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-QpackHeaderBlockRepresentationTypeName">Eq</a></li><li><a href="#impl-PartialEq-for-QpackHeaderBlockRepresentationTypeName">PartialEq</a></li><li><a href="#impl-Serialize-for-QpackHeaderBlockRepresentationTypeName">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QpackHeaderBlockRepresentationTypeName">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QpackHeaderBlockRepresentationTypeName">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QpackHeaderBlockRepresentationTypeName">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QpackHeaderBlockRepresentationTypeName">Send</a></li><li><a href="#impl-Sync-for-QpackHeaderBlockRepresentationTypeName">Sync</a></li><li><a href="#impl-Unpin-for-QpackHeaderBlockRepresentationTypeName">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QpackHeaderBlockRepresentationTypeName">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::qpack</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">qpack</a>::<wbr><a class="enum" href="#">QpackHeaderBlockRepresentationTypeName</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/qpack.rs.html#158-162">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum QpackHeaderBlockRepresentationTypeName {
+    IndexedHeaderField,
+    LiteralHeaderFieldWithName,
+    LiteralHeaderFieldWithoutName,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.IndexedHeaderField" class="variant"><a href="#variant.IndexedHeaderField" class="anchor">§</a><h3 class="code-header">IndexedHeaderField</h3></section><section id="variant.LiteralHeaderFieldWithName" class="variant"><a href="#variant.LiteralHeaderFieldWithName" class="anchor">§</a><h3 class="code-header">LiteralHeaderFieldWithName</h3></section><section id="variant.LiteralHeaderFieldWithoutName" class="variant"><a href="#variant.LiteralHeaderFieldWithoutName" class="anchor">§</a><h3 class="code-header">LiteralHeaderFieldWithoutName</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QpackHeaderBlockRepresentationTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#156">source</a><a href="#impl-Clone-for-QpackHeaderBlockRepresentationTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#156">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QpackHeaderBlockRepresentationTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#156">source</a><a href="#impl-Debug-for-QpackHeaderBlockRepresentationTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#156">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QpackHeaderBlockRepresentationTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#156">source</a><a href="#impl-Deserialize%3C'de%3E-for-QpackHeaderBlockRepresentationTypeName" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#156">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QpackHeaderBlockRepresentationTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#156">source</a><a href="#impl-PartialEq-for-QpackHeaderBlockRepresentationTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#156">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QpackHeaderBlockRepresentationTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#156">source</a><a href="#impl-Serialize-for-QpackHeaderBlockRepresentationTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#156">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-QpackHeaderBlockRepresentationTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#156">source</a><a href="#impl-Eq-for-QpackHeaderBlockRepresentationTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a></h3></section><section id="impl-StructuralPartialEq-for-QpackHeaderBlockRepresentationTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#156">source</a><a href="#impl-StructuralPartialEq-for-QpackHeaderBlockRepresentationTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QpackHeaderBlockRepresentationTypeName" class="impl"><a href="#impl-Freeze-for-QpackHeaderBlockRepresentationTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a></h3></section><section id="impl-RefUnwindSafe-for-QpackHeaderBlockRepresentationTypeName" class="impl"><a href="#impl-RefUnwindSafe-for-QpackHeaderBlockRepresentationTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a></h3></section><section id="impl-Send-for-QpackHeaderBlockRepresentationTypeName" class="impl"><a href="#impl-Send-for-QpackHeaderBlockRepresentationTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a></h3></section><section id="impl-Sync-for-QpackHeaderBlockRepresentationTypeName" class="impl"><a href="#impl-Sync-for-QpackHeaderBlockRepresentationTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a></h3></section><section id="impl-Unpin-for-QpackHeaderBlockRepresentationTypeName" class="impl"><a href="#impl-Unpin-for-QpackHeaderBlockRepresentationTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a></h3></section><section id="impl-UnwindSafe-for-QpackHeaderBlockRepresentationTypeName" class="impl"><a href="#impl-UnwindSafe-for-QpackHeaderBlockRepresentationTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/qpack/enum.QpackInstructionTypeName.html b/qlog/events/qpack/enum.QpackInstructionTypeName.html
new file mode 100644
index 0000000..00411e3
--- /dev/null
+++ b/qlog/events/qpack/enum.QpackInstructionTypeName.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QpackInstructionTypeName` enum in crate `qlog`."><title>QpackInstructionTypeName in qlog::events::qpack - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QpackInstructionTypeName</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.DuplicateInstruction">DuplicateInstruction</a></li><li><a href="#variant.HeaderAcknowledgementInstruction">HeaderAcknowledgementInstruction</a></li><li><a href="#variant.InsertCountIncrementInstruction">InsertCountIncrementInstruction</a></li><li><a href="#variant.InsertWithNameReferenceInstruction">InsertWithNameReferenceInstruction</a></li><li><a href="#variant.InsertWithoutNameReferenceInstruction">InsertWithoutNameReferenceInstruction</a></li><li><a href="#variant.SetDynamicTableCapacityInstruction">SetDynamicTableCapacityInstruction</a></li><li><a href="#variant.StreamCancellationInstruction">StreamCancellationInstruction</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QpackInstructionTypeName">Clone</a></li><li><a href="#impl-Debug-for-QpackInstructionTypeName">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QpackInstructionTypeName">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-QpackInstructionTypeName">Eq</a></li><li><a href="#impl-PartialEq-for-QpackInstructionTypeName">PartialEq</a></li><li><a href="#impl-Serialize-for-QpackInstructionTypeName">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QpackInstructionTypeName">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QpackInstructionTypeName">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QpackInstructionTypeName">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QpackInstructionTypeName">Send</a></li><li><a href="#impl-Sync-for-QpackInstructionTypeName">Sync</a></li><li><a href="#impl-Unpin-for-QpackInstructionTypeName">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QpackInstructionTypeName">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::qpack</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">qpack</a>::<wbr><a class="enum" href="#">QpackInstructionTypeName</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/qpack.rs.html#82-90">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum QpackInstructionTypeName {
+    SetDynamicTableCapacityInstruction,
+    InsertWithNameReferenceInstruction,
+    InsertWithoutNameReferenceInstruction,
+    DuplicateInstruction,
+    HeaderAcknowledgementInstruction,
+    StreamCancellationInstruction,
+    InsertCountIncrementInstruction,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.SetDynamicTableCapacityInstruction" class="variant"><a href="#variant.SetDynamicTableCapacityInstruction" class="anchor">§</a><h3 class="code-header">SetDynamicTableCapacityInstruction</h3></section><section id="variant.InsertWithNameReferenceInstruction" class="variant"><a href="#variant.InsertWithNameReferenceInstruction" class="anchor">§</a><h3 class="code-header">InsertWithNameReferenceInstruction</h3></section><section id="variant.InsertWithoutNameReferenceInstruction" class="variant"><a href="#variant.InsertWithoutNameReferenceInstruction" class="anchor">§</a><h3 class="code-header">InsertWithoutNameReferenceInstruction</h3></section><section id="variant.DuplicateInstruction" class="variant"><a href="#variant.DuplicateInstruction" class="anchor">§</a><h3 class="code-header">DuplicateInstruction</h3></section><section id="variant.HeaderAcknowledgementInstruction" class="variant"><a href="#variant.HeaderAcknowledgementInstruction" class="anchor">§</a><h3 class="code-header">HeaderAcknowledgementInstruction</h3></section><section id="variant.StreamCancellationInstruction" class="variant"><a href="#variant.StreamCancellationInstruction" class="anchor">§</a><h3 class="code-header">StreamCancellationInstruction</h3></section><section id="variant.InsertCountIncrementInstruction" class="variant"><a href="#variant.InsertCountIncrementInstruction" class="anchor">§</a><h3 class="code-header">InsertCountIncrementInstruction</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QpackInstructionTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#80">source</a><a href="#impl-Clone-for-QpackInstructionTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#80">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QpackInstructionTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#80">source</a><a href="#impl-Debug-for-QpackInstructionTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#80">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QpackInstructionTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#80">source</a><a href="#impl-Deserialize%3C'de%3E-for-QpackInstructionTypeName" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#80">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QpackInstructionTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#80">source</a><a href="#impl-PartialEq-for-QpackInstructionTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#80">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QpackInstructionTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#80">source</a><a href="#impl-Serialize-for-QpackInstructionTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#80">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-QpackInstructionTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#80">source</a><a href="#impl-Eq-for-QpackInstructionTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></h3></section><section id="impl-StructuralPartialEq-for-QpackInstructionTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#80">source</a><a href="#impl-StructuralPartialEq-for-QpackInstructionTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QpackInstructionTypeName" class="impl"><a href="#impl-Freeze-for-QpackInstructionTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></h3></section><section id="impl-RefUnwindSafe-for-QpackInstructionTypeName" class="impl"><a href="#impl-RefUnwindSafe-for-QpackInstructionTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></h3></section><section id="impl-Send-for-QpackInstructionTypeName" class="impl"><a href="#impl-Send-for-QpackInstructionTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></h3></section><section id="impl-Sync-for-QpackInstructionTypeName" class="impl"><a href="#impl-Sync-for-QpackInstructionTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></h3></section><section id="impl-Unpin-for-QpackInstructionTypeName" class="impl"><a href="#impl-Unpin-for-QpackInstructionTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></h3></section><section id="impl-UnwindSafe-for-QpackInstructionTypeName" class="impl"><a href="#impl-UnwindSafe-for-QpackInstructionTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/qpack/enum.QpackOwner.html b/qlog/events/qpack/enum.QpackOwner.html
new file mode 100644
index 0000000..a223dda
--- /dev/null
+++ b/qlog/events/qpack/enum.QpackOwner.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QpackOwner` enum in crate `qlog`."><title>QpackOwner in qlog::events::qpack - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QpackOwner</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Local">Local</a></li><li><a href="#variant.Remote">Remote</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QpackOwner">Clone</a></li><li><a href="#impl-Debug-for-QpackOwner">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QpackOwner">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-QpackOwner">Eq</a></li><li><a href="#impl-PartialEq-for-QpackOwner">PartialEq</a></li><li><a href="#impl-Serialize-for-QpackOwner">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QpackOwner">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QpackOwner">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QpackOwner">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QpackOwner">Send</a></li><li><a href="#impl-Sync-for-QpackOwner">Sync</a></li><li><a href="#impl-Unpin-for-QpackOwner">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QpackOwner">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::qpack</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">qpack</a>::<wbr><a class="enum" href="#">QpackOwner</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/qpack.rs.html#47-50">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum QpackOwner {
+    Local,
+    Remote,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Local" class="variant"><a href="#variant.Local" class="anchor">§</a><h3 class="code-header">Local</h3></section><section id="variant.Remote" class="variant"><a href="#variant.Remote" class="anchor">§</a><h3 class="code-header">Remote</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QpackOwner" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#45">source</a><a href="#impl-Clone-for-QpackOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.QpackOwner.html" title="enum qlog::events::qpack::QpackOwner">QpackOwner</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#45">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.QpackOwner.html" title="enum qlog::events::qpack::QpackOwner">QpackOwner</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QpackOwner" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#45">source</a><a href="#impl-Debug-for-QpackOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.QpackOwner.html" title="enum qlog::events::qpack::QpackOwner">QpackOwner</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#45">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QpackOwner" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#45">source</a><a href="#impl-Deserialize%3C'de%3E-for-QpackOwner" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.QpackOwner.html" title="enum qlog::events::qpack::QpackOwner">QpackOwner</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#45">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QpackOwner" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#45">source</a><a href="#impl-PartialEq-for-QpackOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.QpackOwner.html" title="enum qlog::events::qpack::QpackOwner">QpackOwner</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#45">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.QpackOwner.html" title="enum qlog::events::qpack::QpackOwner">QpackOwner</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QpackOwner" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#45">source</a><a href="#impl-Serialize-for-QpackOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.QpackOwner.html" title="enum qlog::events::qpack::QpackOwner">QpackOwner</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#45">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-QpackOwner" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#45">source</a><a href="#impl-Eq-for-QpackOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.QpackOwner.html" title="enum qlog::events::qpack::QpackOwner">QpackOwner</a></h3></section><section id="impl-StructuralPartialEq-for-QpackOwner" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#45">source</a><a href="#impl-StructuralPartialEq-for-QpackOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.QpackOwner.html" title="enum qlog::events::qpack::QpackOwner">QpackOwner</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QpackOwner" class="impl"><a href="#impl-Freeze-for-QpackOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.QpackOwner.html" title="enum qlog::events::qpack::QpackOwner">QpackOwner</a></h3></section><section id="impl-RefUnwindSafe-for-QpackOwner" class="impl"><a href="#impl-RefUnwindSafe-for-QpackOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.QpackOwner.html" title="enum qlog::events::qpack::QpackOwner">QpackOwner</a></h3></section><section id="impl-Send-for-QpackOwner" class="impl"><a href="#impl-Send-for-QpackOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.QpackOwner.html" title="enum qlog::events::qpack::QpackOwner">QpackOwner</a></h3></section><section id="impl-Sync-for-QpackOwner" class="impl"><a href="#impl-Sync-for-QpackOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.QpackOwner.html" title="enum qlog::events::qpack::QpackOwner">QpackOwner</a></h3></section><section id="impl-Unpin-for-QpackOwner" class="impl"><a href="#impl-Unpin-for-QpackOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.QpackOwner.html" title="enum qlog::events::qpack::QpackOwner">QpackOwner</a></h3></section><section id="impl-UnwindSafe-for-QpackOwner" class="impl"><a href="#impl-UnwindSafe-for-QpackOwner" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.QpackOwner.html" title="enum qlog::events::qpack::QpackOwner">QpackOwner</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/qpack/enum.QpackStreamState.html b/qlog/events/qpack/enum.QpackStreamState.html
new file mode 100644
index 0000000..7b24f93
--- /dev/null
+++ b/qlog/events/qpack/enum.QpackStreamState.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QpackStreamState` enum in crate `qlog`."><title>QpackStreamState in qlog::events::qpack - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QpackStreamState</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Blocked">Blocked</a></li><li><a href="#variant.Unblocked">Unblocked</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QpackStreamState">Clone</a></li><li><a href="#impl-Debug-for-QpackStreamState">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QpackStreamState">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-QpackStreamState">Eq</a></li><li><a href="#impl-PartialEq-for-QpackStreamState">PartialEq</a></li><li><a href="#impl-Serialize-for-QpackStreamState">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QpackStreamState">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QpackStreamState">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QpackStreamState">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QpackStreamState">Send</a></li><li><a href="#impl-Sync-for-QpackStreamState">Sync</a></li><li><a href="#impl-Unpin-for-QpackStreamState">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QpackStreamState">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::qpack</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">qpack</a>::<wbr><a class="enum" href="#">QpackStreamState</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/qpack.rs.html#54-57">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum QpackStreamState {
+    Blocked,
+    Unblocked,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Blocked" class="variant"><a href="#variant.Blocked" class="anchor">§</a><h3 class="code-header">Blocked</h3></section><section id="variant.Unblocked" class="variant"><a href="#variant.Unblocked" class="anchor">§</a><h3 class="code-header">Unblocked</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QpackStreamState" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#52">source</a><a href="#impl-Clone-for-QpackStreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.QpackStreamState.html" title="enum qlog::events::qpack::QpackStreamState">QpackStreamState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#52">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.QpackStreamState.html" title="enum qlog::events::qpack::QpackStreamState">QpackStreamState</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QpackStreamState" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#52">source</a><a href="#impl-Debug-for-QpackStreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.QpackStreamState.html" title="enum qlog::events::qpack::QpackStreamState">QpackStreamState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#52">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QpackStreamState" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#52">source</a><a href="#impl-Deserialize%3C'de%3E-for-QpackStreamState" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.QpackStreamState.html" title="enum qlog::events::qpack::QpackStreamState">QpackStreamState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#52">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QpackStreamState" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#52">source</a><a href="#impl-PartialEq-for-QpackStreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.QpackStreamState.html" title="enum qlog::events::qpack::QpackStreamState">QpackStreamState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#52">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.QpackStreamState.html" title="enum qlog::events::qpack::QpackStreamState">QpackStreamState</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QpackStreamState" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#52">source</a><a href="#impl-Serialize-for-QpackStreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.QpackStreamState.html" title="enum qlog::events::qpack::QpackStreamState">QpackStreamState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#52">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-QpackStreamState" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#52">source</a><a href="#impl-Eq-for-QpackStreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.QpackStreamState.html" title="enum qlog::events::qpack::QpackStreamState">QpackStreamState</a></h3></section><section id="impl-StructuralPartialEq-for-QpackStreamState" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#52">source</a><a href="#impl-StructuralPartialEq-for-QpackStreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.QpackStreamState.html" title="enum qlog::events::qpack::QpackStreamState">QpackStreamState</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QpackStreamState" class="impl"><a href="#impl-Freeze-for-QpackStreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.QpackStreamState.html" title="enum qlog::events::qpack::QpackStreamState">QpackStreamState</a></h3></section><section id="impl-RefUnwindSafe-for-QpackStreamState" class="impl"><a href="#impl-RefUnwindSafe-for-QpackStreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.QpackStreamState.html" title="enum qlog::events::qpack::QpackStreamState">QpackStreamState</a></h3></section><section id="impl-Send-for-QpackStreamState" class="impl"><a href="#impl-Send-for-QpackStreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.QpackStreamState.html" title="enum qlog::events::qpack::QpackStreamState">QpackStreamState</a></h3></section><section id="impl-Sync-for-QpackStreamState" class="impl"><a href="#impl-Sync-for-QpackStreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.QpackStreamState.html" title="enum qlog::events::qpack::QpackStreamState">QpackStreamState</a></h3></section><section id="impl-Unpin-for-QpackStreamState" class="impl"><a href="#impl-Unpin-for-QpackStreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.QpackStreamState.html" title="enum qlog::events::qpack::QpackStreamState">QpackStreamState</a></h3></section><section id="impl-UnwindSafe-for-QpackStreamState" class="impl"><a href="#impl-UnwindSafe-for-QpackStreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.QpackStreamState.html" title="enum qlog::events::qpack::QpackStreamState">QpackStreamState</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/qpack/enum.QpackTableType.html b/qlog/events/qpack/enum.QpackTableType.html
new file mode 100644
index 0000000..c9eb126
--- /dev/null
+++ b/qlog/events/qpack/enum.QpackTableType.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QpackTableType` enum in crate `qlog`."><title>QpackTableType in qlog::events::qpack - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QpackTableType</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Dynamic">Dynamic</a></li><li><a href="#variant.Static">Static</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QpackTableType">Clone</a></li><li><a href="#impl-Debug-for-QpackTableType">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QpackTableType">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-QpackTableType">Eq</a></li><li><a href="#impl-PartialEq-for-QpackTableType">PartialEq</a></li><li><a href="#impl-Serialize-for-QpackTableType">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QpackTableType">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QpackTableType">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QpackTableType">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QpackTableType">Send</a></li><li><a href="#impl-Sync-for-QpackTableType">Sync</a></li><li><a href="#impl-Unpin-for-QpackTableType">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QpackTableType">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::qpack</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">qpack</a>::<wbr><a class="enum" href="#">QpackTableType</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/qpack.rs.html#94-97">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum QpackTableType {
+    Static,
+    Dynamic,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Static" class="variant"><a href="#variant.Static" class="anchor">§</a><h3 class="code-header">Static</h3></section><section id="variant.Dynamic" class="variant"><a href="#variant.Dynamic" class="anchor">§</a><h3 class="code-header">Dynamic</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QpackTableType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#92">source</a><a href="#impl-Clone-for-QpackTableType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#92">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QpackTableType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#92">source</a><a href="#impl-Debug-for-QpackTableType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#92">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QpackTableType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#92">source</a><a href="#impl-Deserialize%3C'de%3E-for-QpackTableType" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#92">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QpackTableType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#92">source</a><a href="#impl-PartialEq-for-QpackTableType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#92">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QpackTableType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#92">source</a><a href="#impl-Serialize-for-QpackTableType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#92">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-QpackTableType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#92">source</a><a href="#impl-Eq-for-QpackTableType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a></h3></section><section id="impl-StructuralPartialEq-for-QpackTableType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#92">source</a><a href="#impl-StructuralPartialEq-for-QpackTableType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QpackTableType" class="impl"><a href="#impl-Freeze-for-QpackTableType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a></h3></section><section id="impl-RefUnwindSafe-for-QpackTableType" class="impl"><a href="#impl-RefUnwindSafe-for-QpackTableType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a></h3></section><section id="impl-Send-for-QpackTableType" class="impl"><a href="#impl-Send-for-QpackTableType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a></h3></section><section id="impl-Sync-for-QpackTableType" class="impl"><a href="#impl-Sync-for-QpackTableType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a></h3></section><section id="impl-Unpin-for-QpackTableType" class="impl"><a href="#impl-Unpin-for-QpackTableType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a></h3></section><section id="impl-UnwindSafe-for-QpackTableType" class="impl"><a href="#impl-UnwindSafe-for-QpackTableType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/qpack/enum.QpackUpdateType.html b/qlog/events/qpack/enum.QpackUpdateType.html
new file mode 100644
index 0000000..509f414
--- /dev/null
+++ b/qlog/events/qpack/enum.QpackUpdateType.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QpackUpdateType` enum in crate `qlog`."><title>QpackUpdateType in qlog::events::qpack - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QpackUpdateType</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Added">Added</a></li><li><a href="#variant.Evicted">Evicted</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QpackUpdateType">Clone</a></li><li><a href="#impl-Debug-for-QpackUpdateType">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QpackUpdateType">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-QpackUpdateType">Eq</a></li><li><a href="#impl-PartialEq-for-QpackUpdateType">PartialEq</a></li><li><a href="#impl-Serialize-for-QpackUpdateType">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QpackUpdateType">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QpackUpdateType">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QpackUpdateType">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QpackUpdateType">Send</a></li><li><a href="#impl-Sync-for-QpackUpdateType">Sync</a></li><li><a href="#impl-Unpin-for-QpackUpdateType">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QpackUpdateType">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::qpack</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">qpack</a>::<wbr><a class="enum" href="#">QpackUpdateType</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/qpack.rs.html#61-64">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum QpackUpdateType {
+    Added,
+    Evicted,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Added" class="variant"><a href="#variant.Added" class="anchor">§</a><h3 class="code-header">Added</h3></section><section id="variant.Evicted" class="variant"><a href="#variant.Evicted" class="anchor">§</a><h3 class="code-header">Evicted</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QpackUpdateType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#59">source</a><a href="#impl-Clone-for-QpackUpdateType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.QpackUpdateType.html" title="enum qlog::events::qpack::QpackUpdateType">QpackUpdateType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#59">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.QpackUpdateType.html" title="enum qlog::events::qpack::QpackUpdateType">QpackUpdateType</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QpackUpdateType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#59">source</a><a href="#impl-Debug-for-QpackUpdateType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.QpackUpdateType.html" title="enum qlog::events::qpack::QpackUpdateType">QpackUpdateType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#59">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QpackUpdateType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#59">source</a><a href="#impl-Deserialize%3C'de%3E-for-QpackUpdateType" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.QpackUpdateType.html" title="enum qlog::events::qpack::QpackUpdateType">QpackUpdateType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#59">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QpackUpdateType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#59">source</a><a href="#impl-PartialEq-for-QpackUpdateType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.QpackUpdateType.html" title="enum qlog::events::qpack::QpackUpdateType">QpackUpdateType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#59">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.QpackUpdateType.html" title="enum qlog::events::qpack::QpackUpdateType">QpackUpdateType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QpackUpdateType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#59">source</a><a href="#impl-Serialize-for-QpackUpdateType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.QpackUpdateType.html" title="enum qlog::events::qpack::QpackUpdateType">QpackUpdateType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#59">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-QpackUpdateType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#59">source</a><a href="#impl-Eq-for-QpackUpdateType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.QpackUpdateType.html" title="enum qlog::events::qpack::QpackUpdateType">QpackUpdateType</a></h3></section><section id="impl-StructuralPartialEq-for-QpackUpdateType" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#59">source</a><a href="#impl-StructuralPartialEq-for-QpackUpdateType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.QpackUpdateType.html" title="enum qlog::events::qpack::QpackUpdateType">QpackUpdateType</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QpackUpdateType" class="impl"><a href="#impl-Freeze-for-QpackUpdateType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.QpackUpdateType.html" title="enum qlog::events::qpack::QpackUpdateType">QpackUpdateType</a></h3></section><section id="impl-RefUnwindSafe-for-QpackUpdateType" class="impl"><a href="#impl-RefUnwindSafe-for-QpackUpdateType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.QpackUpdateType.html" title="enum qlog::events::qpack::QpackUpdateType">QpackUpdateType</a></h3></section><section id="impl-Send-for-QpackUpdateType" class="impl"><a href="#impl-Send-for-QpackUpdateType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.QpackUpdateType.html" title="enum qlog::events::qpack::QpackUpdateType">QpackUpdateType</a></h3></section><section id="impl-Sync-for-QpackUpdateType" class="impl"><a href="#impl-Sync-for-QpackUpdateType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.QpackUpdateType.html" title="enum qlog::events::qpack::QpackUpdateType">QpackUpdateType</a></h3></section><section id="impl-Unpin-for-QpackUpdateType" class="impl"><a href="#impl-Unpin-for-QpackUpdateType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.QpackUpdateType.html" title="enum qlog::events::qpack::QpackUpdateType">QpackUpdateType</a></h3></section><section id="impl-UnwindSafe-for-QpackUpdateType" class="impl"><a href="#impl-UnwindSafe-for-QpackUpdateType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.QpackUpdateType.html" title="enum qlog::events::qpack::QpackUpdateType">QpackUpdateType</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/qpack/index.html b/qlog/events/qpack/index.html
new file mode 100644
index 0000000..21c7436
--- /dev/null
+++ b/qlog/events/qpack/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `qpack` mod in crate `qlog`."><title>qlog::events::qpack - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Module qpack</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></section><h2><a href="../index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a class="mod" href="#">qpack</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/qpack.rs.html#27-276">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.QpackDynamicTableEntry.html" title="struct qlog::events::qpack::QpackDynamicTableEntry">QpackDynamicTableEntry</a></div></li><li><div class="item-name"><a class="struct" href="struct.QpackDynamicTableUpdated.html" title="struct qlog::events::qpack::QpackDynamicTableUpdated">QpackDynamicTableUpdated</a></div></li><li><div class="item-name"><a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a></div></li><li><div class="item-name"><a class="struct" href="struct.QpackHeadersDecoded.html" title="struct qlog::events::qpack::QpackHeadersDecoded">QpackHeadersDecoded</a></div></li><li><div class="item-name"><a class="struct" href="struct.QpackHeadersEncoded.html" title="struct qlog::events::qpack::QpackHeadersEncoded">QpackHeadersEncoded</a></div></li><li><div class="item-name"><a class="struct" href="struct.QpackInstructionCreated.html" title="struct qlog::events::qpack::QpackInstructionCreated">QpackInstructionCreated</a></div></li><li><div class="item-name"><a class="struct" href="struct.QpackInstructionParsed.html" title="struct qlog::events::qpack::QpackInstructionParsed">QpackInstructionParsed</a></div></li><li><div class="item-name"><a class="struct" href="struct.QpackStateUpdated.html" title="struct qlog::events::qpack::QpackStateUpdated">QpackStateUpdated</a></div></li><li><div class="item-name"><a class="struct" href="struct.QpackStreamStateUpdated.html" title="struct qlog::events::qpack::QpackStreamStateUpdated">QpackStreamStateUpdated</a></div></li></ul><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a></div></li><li><div class="item-name"><a class="enum" href="enum.QpackEventType.html" title="enum qlog::events::qpack::QpackEventType">QpackEventType</a></div></li><li><div class="item-name"><a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a></div></li><li><div class="item-name"><a class="enum" href="enum.QpackHeaderBlockRepresentationTypeName.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName">QpackHeaderBlockRepresentationTypeName</a></div></li><li><div class="item-name"><a class="enum" href="enum.QpackInstructionTypeName.html" title="enum qlog::events::qpack::QpackInstructionTypeName">QpackInstructionTypeName</a></div></li><li><div class="item-name"><a class="enum" href="enum.QpackOwner.html" title="enum qlog::events::qpack::QpackOwner">QpackOwner</a></div></li><li><div class="item-name"><a class="enum" href="enum.QpackStreamState.html" title="enum qlog::events::qpack::QpackStreamState">QpackStreamState</a></div></li><li><div class="item-name"><a class="enum" href="enum.QpackTableType.html" title="enum qlog::events::qpack::QpackTableType">QpackTableType</a></div></li><li><div class="item-name"><a class="enum" href="enum.QpackUpdateType.html" title="enum qlog::events::qpack::QpackUpdateType">QpackUpdateType</a></div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/qpack/sidebar-items.js b/qlog/events/qpack/sidebar-items.js
new file mode 100644
index 0000000..b324886
--- /dev/null
+++ b/qlog/events/qpack/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"enum":["QPackInstruction","QpackEventType","QpackHeaderBlockRepresentation","QpackHeaderBlockRepresentationTypeName","QpackInstructionTypeName","QpackOwner","QpackStreamState","QpackTableType","QpackUpdateType"],"struct":["QpackDynamicTableEntry","QpackDynamicTableUpdated","QpackHeaderBlockPrefix","QpackHeadersDecoded","QpackHeadersEncoded","QpackInstructionCreated","QpackInstructionParsed","QpackStateUpdated","QpackStreamStateUpdated"]};
\ No newline at end of file
diff --git a/qlog/events/qpack/struct.QpackDynamicTableEntry.html b/qlog/events/qpack/struct.QpackDynamicTableEntry.html
new file mode 100644
index 0000000..93bb733
--- /dev/null
+++ b/qlog/events/qpack/struct.QpackDynamicTableEntry.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QpackDynamicTableEntry` struct in crate `qlog`."><title>QpackDynamicTableEntry in qlog::events::qpack - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QpackDynamicTableEntry</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.index">index</a></li><li><a href="#structfield.name">name</a></li><li><a href="#structfield.value">value</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QpackDynamicTableEntry">Clone</a></li><li><a href="#impl-Debug-for-QpackDynamicTableEntry">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QpackDynamicTableEntry">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-QpackDynamicTableEntry">Eq</a></li><li><a href="#impl-PartialEq-for-QpackDynamicTableEntry">PartialEq</a></li><li><a href="#impl-Serialize-for-QpackDynamicTableEntry">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QpackDynamicTableEntry">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QpackDynamicTableEntry">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QpackDynamicTableEntry">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QpackDynamicTableEntry">Send</a></li><li><a href="#impl-Sync-for-QpackDynamicTableEntry">Sync</a></li><li><a href="#impl-Unpin-for-QpackDynamicTableEntry">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QpackDynamicTableEntry">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::qpack</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">qpack</a>::<wbr><a class="struct" href="#">QpackDynamicTableEntry</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/qpack.rs.html#67-71">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct QpackDynamicTableEntry {
+    pub index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub name: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub value: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.index" class="structfield section-header"><a href="#structfield.index" class="anchor field">§</a><code>index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span id="structfield.name" class="structfield section-header"><a href="#structfield.name" class="anchor field">§</a><code>name: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.value" class="structfield section-header"><a href="#structfield.value" class="anchor field">§</a><code>value: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QpackDynamicTableEntry" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#66">source</a><a href="#impl-Clone-for-QpackDynamicTableEntry" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.QpackDynamicTableEntry.html" title="struct qlog::events::qpack::QpackDynamicTableEntry">QpackDynamicTableEntry</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#66">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.QpackDynamicTableEntry.html" title="struct qlog::events::qpack::QpackDynamicTableEntry">QpackDynamicTableEntry</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QpackDynamicTableEntry" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#66">source</a><a href="#impl-Debug-for-QpackDynamicTableEntry" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.QpackDynamicTableEntry.html" title="struct qlog::events::qpack::QpackDynamicTableEntry">QpackDynamicTableEntry</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#66">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QpackDynamicTableEntry" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#66">source</a><a href="#impl-Deserialize%3C'de%3E-for-QpackDynamicTableEntry" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.QpackDynamicTableEntry.html" title="struct qlog::events::qpack::QpackDynamicTableEntry">QpackDynamicTableEntry</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#66">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QpackDynamicTableEntry" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#66">source</a><a href="#impl-PartialEq-for-QpackDynamicTableEntry" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.QpackDynamicTableEntry.html" title="struct qlog::events::qpack::QpackDynamicTableEntry">QpackDynamicTableEntry</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#66">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.QpackDynamicTableEntry.html" title="struct qlog::events::qpack::QpackDynamicTableEntry">QpackDynamicTableEntry</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QpackDynamicTableEntry" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#66">source</a><a href="#impl-Serialize-for-QpackDynamicTableEntry" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.QpackDynamicTableEntry.html" title="struct qlog::events::qpack::QpackDynamicTableEntry">QpackDynamicTableEntry</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#66">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-QpackDynamicTableEntry" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#66">source</a><a href="#impl-Eq-for-QpackDynamicTableEntry" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.QpackDynamicTableEntry.html" title="struct qlog::events::qpack::QpackDynamicTableEntry">QpackDynamicTableEntry</a></h3></section><section id="impl-StructuralPartialEq-for-QpackDynamicTableEntry" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#66">source</a><a href="#impl-StructuralPartialEq-for-QpackDynamicTableEntry" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.QpackDynamicTableEntry.html" title="struct qlog::events::qpack::QpackDynamicTableEntry">QpackDynamicTableEntry</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QpackDynamicTableEntry" class="impl"><a href="#impl-Freeze-for-QpackDynamicTableEntry" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.QpackDynamicTableEntry.html" title="struct qlog::events::qpack::QpackDynamicTableEntry">QpackDynamicTableEntry</a></h3></section><section id="impl-RefUnwindSafe-for-QpackDynamicTableEntry" class="impl"><a href="#impl-RefUnwindSafe-for-QpackDynamicTableEntry" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.QpackDynamicTableEntry.html" title="struct qlog::events::qpack::QpackDynamicTableEntry">QpackDynamicTableEntry</a></h3></section><section id="impl-Send-for-QpackDynamicTableEntry" class="impl"><a href="#impl-Send-for-QpackDynamicTableEntry" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.QpackDynamicTableEntry.html" title="struct qlog::events::qpack::QpackDynamicTableEntry">QpackDynamicTableEntry</a></h3></section><section id="impl-Sync-for-QpackDynamicTableEntry" class="impl"><a href="#impl-Sync-for-QpackDynamicTableEntry" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.QpackDynamicTableEntry.html" title="struct qlog::events::qpack::QpackDynamicTableEntry">QpackDynamicTableEntry</a></h3></section><section id="impl-Unpin-for-QpackDynamicTableEntry" class="impl"><a href="#impl-Unpin-for-QpackDynamicTableEntry" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.QpackDynamicTableEntry.html" title="struct qlog::events::qpack::QpackDynamicTableEntry">QpackDynamicTableEntry</a></h3></section><section id="impl-UnwindSafe-for-QpackDynamicTableEntry" class="impl"><a href="#impl-UnwindSafe-for-QpackDynamicTableEntry" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.QpackDynamicTableEntry.html" title="struct qlog::events::qpack::QpackDynamicTableEntry">QpackDynamicTableEntry</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/qpack/struct.QpackDynamicTableUpdated.html b/qlog/events/qpack/struct.QpackDynamicTableUpdated.html
new file mode 100644
index 0000000..26ec6d8
--- /dev/null
+++ b/qlog/events/qpack/struct.QpackDynamicTableUpdated.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QpackDynamicTableUpdated` struct in crate `qlog`."><title>QpackDynamicTableUpdated in qlog::events::qpack - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QpackDynamicTableUpdated</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.entries">entries</a></li><li><a href="#structfield.update_type">update_type</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QpackDynamicTableUpdated">Clone</a></li><li><a href="#impl-Debug-for-QpackDynamicTableUpdated">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QpackDynamicTableUpdated">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-QpackDynamicTableUpdated">Eq</a></li><li><a href="#impl-PartialEq-for-QpackDynamicTableUpdated">PartialEq</a></li><li><a href="#impl-Serialize-for-QpackDynamicTableUpdated">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QpackDynamicTableUpdated">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QpackDynamicTableUpdated">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QpackDynamicTableUpdated">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QpackDynamicTableUpdated">Send</a></li><li><a href="#impl-Sync-for-QpackDynamicTableUpdated">Sync</a></li><li><a href="#impl-Unpin-for-QpackDynamicTableUpdated">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QpackDynamicTableUpdated">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::qpack</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">qpack</a>::<wbr><a class="struct" href="#">QpackDynamicTableUpdated</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/qpack.rs.html#230-234">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct QpackDynamicTableUpdated {
+    pub update_type: <a class="enum" href="enum.QpackUpdateType.html" title="enum qlog::events::qpack::QpackUpdateType">QpackUpdateType</a>,
+    pub entries: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.QpackDynamicTableEntry.html" title="struct qlog::events::qpack::QpackDynamicTableEntry">QpackDynamicTableEntry</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.update_type" class="structfield section-header"><a href="#structfield.update_type" class="anchor field">§</a><code>update_type: <a class="enum" href="enum.QpackUpdateType.html" title="enum qlog::events::qpack::QpackUpdateType">QpackUpdateType</a></code></span><span id="structfield.entries" class="structfield section-header"><a href="#structfield.entries" class="anchor field">§</a><code>entries: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.QpackDynamicTableEntry.html" title="struct qlog::events::qpack::QpackDynamicTableEntry">QpackDynamicTableEntry</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QpackDynamicTableUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#229">source</a><a href="#impl-Clone-for-QpackDynamicTableUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.QpackDynamicTableUpdated.html" title="struct qlog::events::qpack::QpackDynamicTableUpdated">QpackDynamicTableUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#229">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.QpackDynamicTableUpdated.html" title="struct qlog::events::qpack::QpackDynamicTableUpdated">QpackDynamicTableUpdated</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QpackDynamicTableUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#229">source</a><a href="#impl-Debug-for-QpackDynamicTableUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.QpackDynamicTableUpdated.html" title="struct qlog::events::qpack::QpackDynamicTableUpdated">QpackDynamicTableUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#229">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QpackDynamicTableUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#229">source</a><a href="#impl-Deserialize%3C'de%3E-for-QpackDynamicTableUpdated" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.QpackDynamicTableUpdated.html" title="struct qlog::events::qpack::QpackDynamicTableUpdated">QpackDynamicTableUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#229">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QpackDynamicTableUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#229">source</a><a href="#impl-PartialEq-for-QpackDynamicTableUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.QpackDynamicTableUpdated.html" title="struct qlog::events::qpack::QpackDynamicTableUpdated">QpackDynamicTableUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#229">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.QpackDynamicTableUpdated.html" title="struct qlog::events::qpack::QpackDynamicTableUpdated">QpackDynamicTableUpdated</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QpackDynamicTableUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#229">source</a><a href="#impl-Serialize-for-QpackDynamicTableUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.QpackDynamicTableUpdated.html" title="struct qlog::events::qpack::QpackDynamicTableUpdated">QpackDynamicTableUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#229">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-QpackDynamicTableUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#229">source</a><a href="#impl-Eq-for-QpackDynamicTableUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.QpackDynamicTableUpdated.html" title="struct qlog::events::qpack::QpackDynamicTableUpdated">QpackDynamicTableUpdated</a></h3></section><section id="impl-StructuralPartialEq-for-QpackDynamicTableUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#229">source</a><a href="#impl-StructuralPartialEq-for-QpackDynamicTableUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.QpackDynamicTableUpdated.html" title="struct qlog::events::qpack::QpackDynamicTableUpdated">QpackDynamicTableUpdated</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QpackDynamicTableUpdated" class="impl"><a href="#impl-Freeze-for-QpackDynamicTableUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.QpackDynamicTableUpdated.html" title="struct qlog::events::qpack::QpackDynamicTableUpdated">QpackDynamicTableUpdated</a></h3></section><section id="impl-RefUnwindSafe-for-QpackDynamicTableUpdated" class="impl"><a href="#impl-RefUnwindSafe-for-QpackDynamicTableUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.QpackDynamicTableUpdated.html" title="struct qlog::events::qpack::QpackDynamicTableUpdated">QpackDynamicTableUpdated</a></h3></section><section id="impl-Send-for-QpackDynamicTableUpdated" class="impl"><a href="#impl-Send-for-QpackDynamicTableUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.QpackDynamicTableUpdated.html" title="struct qlog::events::qpack::QpackDynamicTableUpdated">QpackDynamicTableUpdated</a></h3></section><section id="impl-Sync-for-QpackDynamicTableUpdated" class="impl"><a href="#impl-Sync-for-QpackDynamicTableUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.QpackDynamicTableUpdated.html" title="struct qlog::events::qpack::QpackDynamicTableUpdated">QpackDynamicTableUpdated</a></h3></section><section id="impl-Unpin-for-QpackDynamicTableUpdated" class="impl"><a href="#impl-Unpin-for-QpackDynamicTableUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.QpackDynamicTableUpdated.html" title="struct qlog::events::qpack::QpackDynamicTableUpdated">QpackDynamicTableUpdated</a></h3></section><section id="impl-UnwindSafe-for-QpackDynamicTableUpdated" class="impl"><a href="#impl-UnwindSafe-for-QpackDynamicTableUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.QpackDynamicTableUpdated.html" title="struct qlog::events::qpack::QpackDynamicTableUpdated">QpackDynamicTableUpdated</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/qpack/struct.QpackHeaderBlockPrefix.html b/qlog/events/qpack/struct.QpackHeaderBlockPrefix.html
new file mode 100644
index 0000000..fef1629
--- /dev/null
+++ b/qlog/events/qpack/struct.QpackHeaderBlockPrefix.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QpackHeaderBlockPrefix` struct in crate `qlog`."><title>QpackHeaderBlockPrefix in qlog::events::qpack - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QpackHeaderBlockPrefix</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.delta_base">delta_base</a></li><li><a href="#structfield.required_insert_count">required_insert_count</a></li><li><a href="#structfield.sign_bit">sign_bit</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QpackHeaderBlockPrefix">Clone</a></li><li><a href="#impl-Debug-for-QpackHeaderBlockPrefix">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QpackHeaderBlockPrefix">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-QpackHeaderBlockPrefix">Eq</a></li><li><a href="#impl-PartialEq-for-QpackHeaderBlockPrefix">PartialEq</a></li><li><a href="#impl-Serialize-for-QpackHeaderBlockPrefix">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QpackHeaderBlockPrefix">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QpackHeaderBlockPrefix">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QpackHeaderBlockPrefix">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QpackHeaderBlockPrefix">Send</a></li><li><a href="#impl-Sync-for-QpackHeaderBlockPrefix">Sync</a></li><li><a href="#impl-Unpin-for-QpackHeaderBlockPrefix">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QpackHeaderBlockPrefix">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::qpack</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">qpack</a>::<wbr><a class="struct" href="#">QpackHeaderBlockPrefix</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/qpack.rs.html#74-78">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct QpackHeaderBlockPrefix {
+    pub required_insert_count: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub sign_bit: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    pub delta_base: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.required_insert_count" class="structfield section-header"><a href="#structfield.required_insert_count" class="anchor field">§</a><code>required_insert_count: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span id="structfield.sign_bit" class="structfield section-header"><a href="#structfield.sign_bit" class="anchor field">§</a><code>sign_bit: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><span id="structfield.delta_base" class="structfield section-header"><a href="#structfield.delta_base" class="anchor field">§</a><code>delta_base: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QpackHeaderBlockPrefix" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#73">source</a><a href="#impl-Clone-for-QpackHeaderBlockPrefix" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#73">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QpackHeaderBlockPrefix" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#73">source</a><a href="#impl-Debug-for-QpackHeaderBlockPrefix" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#73">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QpackHeaderBlockPrefix" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#73">source</a><a href="#impl-Deserialize%3C'de%3E-for-QpackHeaderBlockPrefix" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#73">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QpackHeaderBlockPrefix" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#73">source</a><a href="#impl-PartialEq-for-QpackHeaderBlockPrefix" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#73">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QpackHeaderBlockPrefix" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#73">source</a><a href="#impl-Serialize-for-QpackHeaderBlockPrefix" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#73">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-QpackHeaderBlockPrefix" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#73">source</a><a href="#impl-Eq-for-QpackHeaderBlockPrefix" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a></h3></section><section id="impl-StructuralPartialEq-for-QpackHeaderBlockPrefix" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#73">source</a><a href="#impl-StructuralPartialEq-for-QpackHeaderBlockPrefix" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QpackHeaderBlockPrefix" class="impl"><a href="#impl-Freeze-for-QpackHeaderBlockPrefix" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a></h3></section><section id="impl-RefUnwindSafe-for-QpackHeaderBlockPrefix" class="impl"><a href="#impl-RefUnwindSafe-for-QpackHeaderBlockPrefix" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a></h3></section><section id="impl-Send-for-QpackHeaderBlockPrefix" class="impl"><a href="#impl-Send-for-QpackHeaderBlockPrefix" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a></h3></section><section id="impl-Sync-for-QpackHeaderBlockPrefix" class="impl"><a href="#impl-Sync-for-QpackHeaderBlockPrefix" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a></h3></section><section id="impl-Unpin-for-QpackHeaderBlockPrefix" class="impl"><a href="#impl-Unpin-for-QpackHeaderBlockPrefix" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a></h3></section><section id="impl-UnwindSafe-for-QpackHeaderBlockPrefix" class="impl"><a href="#impl-UnwindSafe-for-QpackHeaderBlockPrefix" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/qpack/struct.QpackHeadersDecoded.html b/qlog/events/qpack/struct.QpackHeadersDecoded.html
new file mode 100644
index 0000000..23bd33a
--- /dev/null
+++ b/qlog/events/qpack/struct.QpackHeadersDecoded.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QpackHeadersDecoded` struct in crate `qlog`."><title>QpackHeadersDecoded in qlog::events::qpack - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QpackHeadersDecoded</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.block_prefix">block_prefix</a></li><li><a href="#structfield.header_block">header_block</a></li><li><a href="#structfield.headers">headers</a></li><li><a href="#structfield.raw">raw</a></li><li><a href="#structfield.stream_id">stream_id</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QpackHeadersDecoded">Clone</a></li><li><a href="#impl-Debug-for-QpackHeadersDecoded">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QpackHeadersDecoded">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-QpackHeadersDecoded">Eq</a></li><li><a href="#impl-PartialEq-for-QpackHeadersDecoded">PartialEq</a></li><li><a href="#impl-Serialize-for-QpackHeadersDecoded">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QpackHeadersDecoded">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QpackHeadersDecoded">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QpackHeadersDecoded">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QpackHeadersDecoded">Send</a></li><li><a href="#impl-Sync-for-QpackHeadersDecoded">Sync</a></li><li><a href="#impl-Unpin-for-QpackHeadersDecoded">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QpackHeadersDecoded">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::qpack</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">qpack</a>::<wbr><a class="struct" href="#">QpackHeadersDecoded</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/qpack.rs.html#251-260">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct QpackHeadersDecoded {
+    pub stream_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub headers: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../h3/struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a>&gt;,
+    pub block_prefix: <a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a>,
+    pub header_block: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a>&gt;,
+    pub raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.stream_id" class="structfield section-header"><a href="#structfield.stream_id" class="anchor field">§</a><code>stream_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.headers" class="structfield section-header"><a href="#structfield.headers" class="anchor field">§</a><code>headers: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../h3/struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a>&gt;</code></span><span id="structfield.block_prefix" class="structfield section-header"><a href="#structfield.block_prefix" class="anchor field">§</a><code>block_prefix: <a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a></code></span><span id="structfield.header_block" class="structfield section-header"><a href="#structfield.header_block" class="anchor field">§</a><code>header_block: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a>&gt;</code></span><span id="structfield.raw" class="structfield section-header"><a href="#structfield.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QpackHeadersDecoded" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#250">source</a><a href="#impl-Clone-for-QpackHeadersDecoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.QpackHeadersDecoded.html" title="struct qlog::events::qpack::QpackHeadersDecoded">QpackHeadersDecoded</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#250">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.QpackHeadersDecoded.html" title="struct qlog::events::qpack::QpackHeadersDecoded">QpackHeadersDecoded</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QpackHeadersDecoded" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#250">source</a><a href="#impl-Debug-for-QpackHeadersDecoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.QpackHeadersDecoded.html" title="struct qlog::events::qpack::QpackHeadersDecoded">QpackHeadersDecoded</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#250">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QpackHeadersDecoded" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#250">source</a><a href="#impl-Deserialize%3C'de%3E-for-QpackHeadersDecoded" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.QpackHeadersDecoded.html" title="struct qlog::events::qpack::QpackHeadersDecoded">QpackHeadersDecoded</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#250">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QpackHeadersDecoded" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#250">source</a><a href="#impl-PartialEq-for-QpackHeadersDecoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.QpackHeadersDecoded.html" title="struct qlog::events::qpack::QpackHeadersDecoded">QpackHeadersDecoded</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#250">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.QpackHeadersDecoded.html" title="struct qlog::events::qpack::QpackHeadersDecoded">QpackHeadersDecoded</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QpackHeadersDecoded" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#250">source</a><a href="#impl-Serialize-for-QpackHeadersDecoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.QpackHeadersDecoded.html" title="struct qlog::events::qpack::QpackHeadersDecoded">QpackHeadersDecoded</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#250">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-QpackHeadersDecoded" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#250">source</a><a href="#impl-Eq-for-QpackHeadersDecoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.QpackHeadersDecoded.html" title="struct qlog::events::qpack::QpackHeadersDecoded">QpackHeadersDecoded</a></h3></section><section id="impl-StructuralPartialEq-for-QpackHeadersDecoded" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#250">source</a><a href="#impl-StructuralPartialEq-for-QpackHeadersDecoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.QpackHeadersDecoded.html" title="struct qlog::events::qpack::QpackHeadersDecoded">QpackHeadersDecoded</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QpackHeadersDecoded" class="impl"><a href="#impl-Freeze-for-QpackHeadersDecoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.QpackHeadersDecoded.html" title="struct qlog::events::qpack::QpackHeadersDecoded">QpackHeadersDecoded</a></h3></section><section id="impl-RefUnwindSafe-for-QpackHeadersDecoded" class="impl"><a href="#impl-RefUnwindSafe-for-QpackHeadersDecoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.QpackHeadersDecoded.html" title="struct qlog::events::qpack::QpackHeadersDecoded">QpackHeadersDecoded</a></h3></section><section id="impl-Send-for-QpackHeadersDecoded" class="impl"><a href="#impl-Send-for-QpackHeadersDecoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.QpackHeadersDecoded.html" title="struct qlog::events::qpack::QpackHeadersDecoded">QpackHeadersDecoded</a></h3></section><section id="impl-Sync-for-QpackHeadersDecoded" class="impl"><a href="#impl-Sync-for-QpackHeadersDecoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.QpackHeadersDecoded.html" title="struct qlog::events::qpack::QpackHeadersDecoded">QpackHeadersDecoded</a></h3></section><section id="impl-Unpin-for-QpackHeadersDecoded" class="impl"><a href="#impl-Unpin-for-QpackHeadersDecoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.QpackHeadersDecoded.html" title="struct qlog::events::qpack::QpackHeadersDecoded">QpackHeadersDecoded</a></h3></section><section id="impl-UnwindSafe-for-QpackHeadersDecoded" class="impl"><a href="#impl-UnwindSafe-for-QpackHeadersDecoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.QpackHeadersDecoded.html" title="struct qlog::events::qpack::QpackHeadersDecoded">QpackHeadersDecoded</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/qpack/struct.QpackHeadersEncoded.html b/qlog/events/qpack/struct.QpackHeadersEncoded.html
new file mode 100644
index 0000000..850c6c1
--- /dev/null
+++ b/qlog/events/qpack/struct.QpackHeadersEncoded.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QpackHeadersEncoded` struct in crate `qlog`."><title>QpackHeadersEncoded in qlog::events::qpack - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QpackHeadersEncoded</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.block_prefix">block_prefix</a></li><li><a href="#structfield.header_block">header_block</a></li><li><a href="#structfield.headers">headers</a></li><li><a href="#structfield.raw">raw</a></li><li><a href="#structfield.stream_id">stream_id</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QpackHeadersEncoded">Clone</a></li><li><a href="#impl-Debug-for-QpackHeadersEncoded">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QpackHeadersEncoded">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-QpackHeadersEncoded">Eq</a></li><li><a href="#impl-PartialEq-for-QpackHeadersEncoded">PartialEq</a></li><li><a href="#impl-Serialize-for-QpackHeadersEncoded">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QpackHeadersEncoded">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QpackHeadersEncoded">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QpackHeadersEncoded">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QpackHeadersEncoded">Send</a></li><li><a href="#impl-Sync-for-QpackHeadersEncoded">Sync</a></li><li><a href="#impl-Unpin-for-QpackHeadersEncoded">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QpackHeadersEncoded">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::qpack</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">qpack</a>::<wbr><a class="struct" href="#">QpackHeadersEncoded</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/qpack.rs.html#238-247">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct QpackHeadersEncoded {
+    pub stream_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub headers: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../h3/struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a>&gt;,
+    pub block_prefix: <a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a>,
+    pub header_block: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a>&gt;,
+    pub raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.stream_id" class="structfield section-header"><a href="#structfield.stream_id" class="anchor field">§</a><code>stream_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.headers" class="structfield section-header"><a href="#structfield.headers" class="anchor field">§</a><code>headers: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../h3/struct.HttpHeader.html" title="struct qlog::events::h3::HttpHeader">HttpHeader</a>&gt;</code></span><span id="structfield.block_prefix" class="structfield section-header"><a href="#structfield.block_prefix" class="anchor field">§</a><code>block_prefix: <a class="struct" href="struct.QpackHeaderBlockPrefix.html" title="struct qlog::events::qpack::QpackHeaderBlockPrefix">QpackHeaderBlockPrefix</a></code></span><span id="structfield.header_block" class="structfield section-header"><a href="#structfield.header_block" class="anchor field">§</a><code>header_block: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="enum" href="enum.QpackHeaderBlockRepresentation.html" title="enum qlog::events::qpack::QpackHeaderBlockRepresentation">QpackHeaderBlockRepresentation</a>&gt;</code></span><span id="structfield.raw" class="structfield section-header"><a href="#structfield.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QpackHeadersEncoded" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#237">source</a><a href="#impl-Clone-for-QpackHeadersEncoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.QpackHeadersEncoded.html" title="struct qlog::events::qpack::QpackHeadersEncoded">QpackHeadersEncoded</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#237">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.QpackHeadersEncoded.html" title="struct qlog::events::qpack::QpackHeadersEncoded">QpackHeadersEncoded</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QpackHeadersEncoded" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#237">source</a><a href="#impl-Debug-for-QpackHeadersEncoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.QpackHeadersEncoded.html" title="struct qlog::events::qpack::QpackHeadersEncoded">QpackHeadersEncoded</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#237">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QpackHeadersEncoded" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#237">source</a><a href="#impl-Deserialize%3C'de%3E-for-QpackHeadersEncoded" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.QpackHeadersEncoded.html" title="struct qlog::events::qpack::QpackHeadersEncoded">QpackHeadersEncoded</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#237">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QpackHeadersEncoded" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#237">source</a><a href="#impl-PartialEq-for-QpackHeadersEncoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.QpackHeadersEncoded.html" title="struct qlog::events::qpack::QpackHeadersEncoded">QpackHeadersEncoded</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#237">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.QpackHeadersEncoded.html" title="struct qlog::events::qpack::QpackHeadersEncoded">QpackHeadersEncoded</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QpackHeadersEncoded" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#237">source</a><a href="#impl-Serialize-for-QpackHeadersEncoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.QpackHeadersEncoded.html" title="struct qlog::events::qpack::QpackHeadersEncoded">QpackHeadersEncoded</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#237">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-QpackHeadersEncoded" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#237">source</a><a href="#impl-Eq-for-QpackHeadersEncoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.QpackHeadersEncoded.html" title="struct qlog::events::qpack::QpackHeadersEncoded">QpackHeadersEncoded</a></h3></section><section id="impl-StructuralPartialEq-for-QpackHeadersEncoded" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#237">source</a><a href="#impl-StructuralPartialEq-for-QpackHeadersEncoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.QpackHeadersEncoded.html" title="struct qlog::events::qpack::QpackHeadersEncoded">QpackHeadersEncoded</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QpackHeadersEncoded" class="impl"><a href="#impl-Freeze-for-QpackHeadersEncoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.QpackHeadersEncoded.html" title="struct qlog::events::qpack::QpackHeadersEncoded">QpackHeadersEncoded</a></h3></section><section id="impl-RefUnwindSafe-for-QpackHeadersEncoded" class="impl"><a href="#impl-RefUnwindSafe-for-QpackHeadersEncoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.QpackHeadersEncoded.html" title="struct qlog::events::qpack::QpackHeadersEncoded">QpackHeadersEncoded</a></h3></section><section id="impl-Send-for-QpackHeadersEncoded" class="impl"><a href="#impl-Send-for-QpackHeadersEncoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.QpackHeadersEncoded.html" title="struct qlog::events::qpack::QpackHeadersEncoded">QpackHeadersEncoded</a></h3></section><section id="impl-Sync-for-QpackHeadersEncoded" class="impl"><a href="#impl-Sync-for-QpackHeadersEncoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.QpackHeadersEncoded.html" title="struct qlog::events::qpack::QpackHeadersEncoded">QpackHeadersEncoded</a></h3></section><section id="impl-Unpin-for-QpackHeadersEncoded" class="impl"><a href="#impl-Unpin-for-QpackHeadersEncoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.QpackHeadersEncoded.html" title="struct qlog::events::qpack::QpackHeadersEncoded">QpackHeadersEncoded</a></h3></section><section id="impl-UnwindSafe-for-QpackHeadersEncoded" class="impl"><a href="#impl-UnwindSafe-for-QpackHeadersEncoded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.QpackHeadersEncoded.html" title="struct qlog::events::qpack::QpackHeadersEncoded">QpackHeadersEncoded</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/qpack/struct.QpackInstructionCreated.html b/qlog/events/qpack/struct.QpackInstructionCreated.html
new file mode 100644
index 0000000..47a6c4c
--- /dev/null
+++ b/qlog/events/qpack/struct.QpackInstructionCreated.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QpackInstructionCreated` struct in crate `qlog`."><title>QpackInstructionCreated in qlog::events::qpack - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QpackInstructionCreated</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.instruction">instruction</a></li><li><a href="#structfield.raw">raw</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QpackInstructionCreated">Clone</a></li><li><a href="#impl-Debug-for-QpackInstructionCreated">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QpackInstructionCreated">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-QpackInstructionCreated">Eq</a></li><li><a href="#impl-PartialEq-for-QpackInstructionCreated">PartialEq</a></li><li><a href="#impl-Serialize-for-QpackInstructionCreated">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QpackInstructionCreated">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QpackInstructionCreated">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QpackInstructionCreated">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QpackInstructionCreated">Send</a></li><li><a href="#impl-Sync-for-QpackInstructionCreated">Sync</a></li><li><a href="#impl-Unpin-for-QpackInstructionCreated">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QpackInstructionCreated">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::qpack</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">qpack</a>::<wbr><a class="struct" href="#">QpackInstructionCreated</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/qpack.rs.html#264-268">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct QpackInstructionCreated {
+    pub instruction: <a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a>,
+    pub raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.instruction" class="structfield section-header"><a href="#structfield.instruction" class="anchor field">§</a><code>instruction: <a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a></code></span><span id="structfield.raw" class="structfield section-header"><a href="#structfield.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QpackInstructionCreated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#263">source</a><a href="#impl-Clone-for-QpackInstructionCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.QpackInstructionCreated.html" title="struct qlog::events::qpack::QpackInstructionCreated">QpackInstructionCreated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#263">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.QpackInstructionCreated.html" title="struct qlog::events::qpack::QpackInstructionCreated">QpackInstructionCreated</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QpackInstructionCreated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#263">source</a><a href="#impl-Debug-for-QpackInstructionCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.QpackInstructionCreated.html" title="struct qlog::events::qpack::QpackInstructionCreated">QpackInstructionCreated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#263">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QpackInstructionCreated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#263">source</a><a href="#impl-Deserialize%3C'de%3E-for-QpackInstructionCreated" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.QpackInstructionCreated.html" title="struct qlog::events::qpack::QpackInstructionCreated">QpackInstructionCreated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#263">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QpackInstructionCreated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#263">source</a><a href="#impl-PartialEq-for-QpackInstructionCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.QpackInstructionCreated.html" title="struct qlog::events::qpack::QpackInstructionCreated">QpackInstructionCreated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#263">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.QpackInstructionCreated.html" title="struct qlog::events::qpack::QpackInstructionCreated">QpackInstructionCreated</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QpackInstructionCreated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#263">source</a><a href="#impl-Serialize-for-QpackInstructionCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.QpackInstructionCreated.html" title="struct qlog::events::qpack::QpackInstructionCreated">QpackInstructionCreated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#263">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-QpackInstructionCreated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#263">source</a><a href="#impl-Eq-for-QpackInstructionCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.QpackInstructionCreated.html" title="struct qlog::events::qpack::QpackInstructionCreated">QpackInstructionCreated</a></h3></section><section id="impl-StructuralPartialEq-for-QpackInstructionCreated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#263">source</a><a href="#impl-StructuralPartialEq-for-QpackInstructionCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.QpackInstructionCreated.html" title="struct qlog::events::qpack::QpackInstructionCreated">QpackInstructionCreated</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QpackInstructionCreated" class="impl"><a href="#impl-Freeze-for-QpackInstructionCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.QpackInstructionCreated.html" title="struct qlog::events::qpack::QpackInstructionCreated">QpackInstructionCreated</a></h3></section><section id="impl-RefUnwindSafe-for-QpackInstructionCreated" class="impl"><a href="#impl-RefUnwindSafe-for-QpackInstructionCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.QpackInstructionCreated.html" title="struct qlog::events::qpack::QpackInstructionCreated">QpackInstructionCreated</a></h3></section><section id="impl-Send-for-QpackInstructionCreated" class="impl"><a href="#impl-Send-for-QpackInstructionCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.QpackInstructionCreated.html" title="struct qlog::events::qpack::QpackInstructionCreated">QpackInstructionCreated</a></h3></section><section id="impl-Sync-for-QpackInstructionCreated" class="impl"><a href="#impl-Sync-for-QpackInstructionCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.QpackInstructionCreated.html" title="struct qlog::events::qpack::QpackInstructionCreated">QpackInstructionCreated</a></h3></section><section id="impl-Unpin-for-QpackInstructionCreated" class="impl"><a href="#impl-Unpin-for-QpackInstructionCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.QpackInstructionCreated.html" title="struct qlog::events::qpack::QpackInstructionCreated">QpackInstructionCreated</a></h3></section><section id="impl-UnwindSafe-for-QpackInstructionCreated" class="impl"><a href="#impl-UnwindSafe-for-QpackInstructionCreated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.QpackInstructionCreated.html" title="struct qlog::events::qpack::QpackInstructionCreated">QpackInstructionCreated</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/qpack/struct.QpackInstructionParsed.html b/qlog/events/qpack/struct.QpackInstructionParsed.html
new file mode 100644
index 0000000..5475f13
--- /dev/null
+++ b/qlog/events/qpack/struct.QpackInstructionParsed.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QpackInstructionParsed` struct in crate `qlog`."><title>QpackInstructionParsed in qlog::events::qpack - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QpackInstructionParsed</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.instruction">instruction</a></li><li><a href="#structfield.raw">raw</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QpackInstructionParsed">Clone</a></li><li><a href="#impl-Debug-for-QpackInstructionParsed">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QpackInstructionParsed">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-QpackInstructionParsed">Eq</a></li><li><a href="#impl-PartialEq-for-QpackInstructionParsed">PartialEq</a></li><li><a href="#impl-Serialize-for-QpackInstructionParsed">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QpackInstructionParsed">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QpackInstructionParsed">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QpackInstructionParsed">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QpackInstructionParsed">Send</a></li><li><a href="#impl-Sync-for-QpackInstructionParsed">Sync</a></li><li><a href="#impl-Unpin-for-QpackInstructionParsed">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QpackInstructionParsed">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::qpack</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">qpack</a>::<wbr><a class="struct" href="#">QpackInstructionParsed</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/qpack.rs.html#272-276">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct QpackInstructionParsed {
+    pub instruction: <a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a>,
+    pub raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.instruction" class="structfield section-header"><a href="#structfield.instruction" class="anchor field">§</a><code>instruction: <a class="enum" href="enum.QPackInstruction.html" title="enum qlog::events::qpack::QPackInstruction">QPackInstruction</a></code></span><span id="structfield.raw" class="structfield section-header"><a href="#structfield.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QpackInstructionParsed" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#271">source</a><a href="#impl-Clone-for-QpackInstructionParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.QpackInstructionParsed.html" title="struct qlog::events::qpack::QpackInstructionParsed">QpackInstructionParsed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#271">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.QpackInstructionParsed.html" title="struct qlog::events::qpack::QpackInstructionParsed">QpackInstructionParsed</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QpackInstructionParsed" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#271">source</a><a href="#impl-Debug-for-QpackInstructionParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.QpackInstructionParsed.html" title="struct qlog::events::qpack::QpackInstructionParsed">QpackInstructionParsed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#271">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QpackInstructionParsed" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#271">source</a><a href="#impl-Deserialize%3C'de%3E-for-QpackInstructionParsed" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.QpackInstructionParsed.html" title="struct qlog::events::qpack::QpackInstructionParsed">QpackInstructionParsed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#271">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QpackInstructionParsed" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#271">source</a><a href="#impl-PartialEq-for-QpackInstructionParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.QpackInstructionParsed.html" title="struct qlog::events::qpack::QpackInstructionParsed">QpackInstructionParsed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#271">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.QpackInstructionParsed.html" title="struct qlog::events::qpack::QpackInstructionParsed">QpackInstructionParsed</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QpackInstructionParsed" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#271">source</a><a href="#impl-Serialize-for-QpackInstructionParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.QpackInstructionParsed.html" title="struct qlog::events::qpack::QpackInstructionParsed">QpackInstructionParsed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#271">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-QpackInstructionParsed" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#271">source</a><a href="#impl-Eq-for-QpackInstructionParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.QpackInstructionParsed.html" title="struct qlog::events::qpack::QpackInstructionParsed">QpackInstructionParsed</a></h3></section><section id="impl-StructuralPartialEq-for-QpackInstructionParsed" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#271">source</a><a href="#impl-StructuralPartialEq-for-QpackInstructionParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.QpackInstructionParsed.html" title="struct qlog::events::qpack::QpackInstructionParsed">QpackInstructionParsed</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QpackInstructionParsed" class="impl"><a href="#impl-Freeze-for-QpackInstructionParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.QpackInstructionParsed.html" title="struct qlog::events::qpack::QpackInstructionParsed">QpackInstructionParsed</a></h3></section><section id="impl-RefUnwindSafe-for-QpackInstructionParsed" class="impl"><a href="#impl-RefUnwindSafe-for-QpackInstructionParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.QpackInstructionParsed.html" title="struct qlog::events::qpack::QpackInstructionParsed">QpackInstructionParsed</a></h3></section><section id="impl-Send-for-QpackInstructionParsed" class="impl"><a href="#impl-Send-for-QpackInstructionParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.QpackInstructionParsed.html" title="struct qlog::events::qpack::QpackInstructionParsed">QpackInstructionParsed</a></h3></section><section id="impl-Sync-for-QpackInstructionParsed" class="impl"><a href="#impl-Sync-for-QpackInstructionParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.QpackInstructionParsed.html" title="struct qlog::events::qpack::QpackInstructionParsed">QpackInstructionParsed</a></h3></section><section id="impl-Unpin-for-QpackInstructionParsed" class="impl"><a href="#impl-Unpin-for-QpackInstructionParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.QpackInstructionParsed.html" title="struct qlog::events::qpack::QpackInstructionParsed">QpackInstructionParsed</a></h3></section><section id="impl-UnwindSafe-for-QpackInstructionParsed" class="impl"><a href="#impl-UnwindSafe-for-QpackInstructionParsed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.QpackInstructionParsed.html" title="struct qlog::events::qpack::QpackInstructionParsed">QpackInstructionParsed</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/qpack/struct.QpackStateUpdated.html b/qlog/events/qpack/struct.QpackStateUpdated.html
new file mode 100644
index 0000000..90bdfee
--- /dev/null
+++ b/qlog/events/qpack/struct.QpackStateUpdated.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QpackStateUpdated` struct in crate `qlog`."><title>QpackStateUpdated in qlog::events::qpack - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QpackStateUpdated</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.current_insert_count">current_insert_count</a></li><li><a href="#structfield.dynamic_table_capacity">dynamic_table_capacity</a></li><li><a href="#structfield.dynamic_table_size">dynamic_table_size</a></li><li><a href="#structfield.known_received_count">known_received_count</a></li><li><a href="#structfield.owner">owner</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QpackStateUpdated">Clone</a></li><li><a href="#impl-Debug-for-QpackStateUpdated">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QpackStateUpdated">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-QpackStateUpdated">Eq</a></li><li><a href="#impl-PartialEq-for-QpackStateUpdated">PartialEq</a></li><li><a href="#impl-Serialize-for-QpackStateUpdated">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QpackStateUpdated">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QpackStateUpdated">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QpackStateUpdated">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QpackStateUpdated">Send</a></li><li><a href="#impl-Sync-for-QpackStateUpdated">Sync</a></li><li><a href="#impl-Unpin-for-QpackStateUpdated">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QpackStateUpdated">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::qpack</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">qpack</a>::<wbr><a class="struct" href="#">QpackStateUpdated</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/qpack.rs.html#210-218">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct QpackStateUpdated {
+    pub owner: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.QpackOwner.html" title="enum qlog::events::qpack::QpackOwner">QpackOwner</a>&gt;,
+    pub dynamic_table_capacity: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub dynamic_table_size: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub known_received_count: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub current_insert_count: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.owner" class="structfield section-header"><a href="#structfield.owner" class="anchor field">§</a><code>owner: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.QpackOwner.html" title="enum qlog::events::qpack::QpackOwner">QpackOwner</a>&gt;</code></span><span id="structfield.dynamic_table_capacity" class="structfield section-header"><a href="#structfield.dynamic_table_capacity" class="anchor field">§</a><code>dynamic_table_capacity: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.dynamic_table_size" class="structfield section-header"><a href="#structfield.dynamic_table_size" class="anchor field">§</a><code>dynamic_table_size: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.known_received_count" class="structfield section-header"><a href="#structfield.known_received_count" class="anchor field">§</a><code>known_received_count: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.current_insert_count" class="structfield section-header"><a href="#structfield.current_insert_count" class="anchor field">§</a><code>current_insert_count: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QpackStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#209">source</a><a href="#impl-Clone-for-QpackStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.QpackStateUpdated.html" title="struct qlog::events::qpack::QpackStateUpdated">QpackStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#209">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.QpackStateUpdated.html" title="struct qlog::events::qpack::QpackStateUpdated">QpackStateUpdated</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QpackStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#209">source</a><a href="#impl-Debug-for-QpackStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.QpackStateUpdated.html" title="struct qlog::events::qpack::QpackStateUpdated">QpackStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#209">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QpackStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#209">source</a><a href="#impl-Deserialize%3C'de%3E-for-QpackStateUpdated" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.QpackStateUpdated.html" title="struct qlog::events::qpack::QpackStateUpdated">QpackStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#209">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QpackStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#209">source</a><a href="#impl-PartialEq-for-QpackStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.QpackStateUpdated.html" title="struct qlog::events::qpack::QpackStateUpdated">QpackStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#209">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.QpackStateUpdated.html" title="struct qlog::events::qpack::QpackStateUpdated">QpackStateUpdated</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QpackStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#209">source</a><a href="#impl-Serialize-for-QpackStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.QpackStateUpdated.html" title="struct qlog::events::qpack::QpackStateUpdated">QpackStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#209">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-QpackStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#209">source</a><a href="#impl-Eq-for-QpackStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.QpackStateUpdated.html" title="struct qlog::events::qpack::QpackStateUpdated">QpackStateUpdated</a></h3></section><section id="impl-StructuralPartialEq-for-QpackStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#209">source</a><a href="#impl-StructuralPartialEq-for-QpackStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.QpackStateUpdated.html" title="struct qlog::events::qpack::QpackStateUpdated">QpackStateUpdated</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QpackStateUpdated" class="impl"><a href="#impl-Freeze-for-QpackStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.QpackStateUpdated.html" title="struct qlog::events::qpack::QpackStateUpdated">QpackStateUpdated</a></h3></section><section id="impl-RefUnwindSafe-for-QpackStateUpdated" class="impl"><a href="#impl-RefUnwindSafe-for-QpackStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.QpackStateUpdated.html" title="struct qlog::events::qpack::QpackStateUpdated">QpackStateUpdated</a></h3></section><section id="impl-Send-for-QpackStateUpdated" class="impl"><a href="#impl-Send-for-QpackStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.QpackStateUpdated.html" title="struct qlog::events::qpack::QpackStateUpdated">QpackStateUpdated</a></h3></section><section id="impl-Sync-for-QpackStateUpdated" class="impl"><a href="#impl-Sync-for-QpackStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.QpackStateUpdated.html" title="struct qlog::events::qpack::QpackStateUpdated">QpackStateUpdated</a></h3></section><section id="impl-Unpin-for-QpackStateUpdated" class="impl"><a href="#impl-Unpin-for-QpackStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.QpackStateUpdated.html" title="struct qlog::events::qpack::QpackStateUpdated">QpackStateUpdated</a></h3></section><section id="impl-UnwindSafe-for-QpackStateUpdated" class="impl"><a href="#impl-UnwindSafe-for-QpackStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.QpackStateUpdated.html" title="struct qlog::events::qpack::QpackStateUpdated">QpackStateUpdated</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/qpack/struct.QpackStreamStateUpdated.html b/qlog/events/qpack/struct.QpackStreamStateUpdated.html
new file mode 100644
index 0000000..a641ade
--- /dev/null
+++ b/qlog/events/qpack/struct.QpackStreamStateUpdated.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QpackStreamStateUpdated` struct in crate `qlog`."><title>QpackStreamStateUpdated in qlog::events::qpack - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QpackStreamStateUpdated</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.state">state</a></li><li><a href="#structfield.stream_id">stream_id</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QpackStreamStateUpdated">Clone</a></li><li><a href="#impl-Debug-for-QpackStreamStateUpdated">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QpackStreamStateUpdated">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-QpackStreamStateUpdated">Eq</a></li><li><a href="#impl-PartialEq-for-QpackStreamStateUpdated">PartialEq</a></li><li><a href="#impl-Serialize-for-QpackStreamStateUpdated">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QpackStreamStateUpdated">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QpackStreamStateUpdated">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QpackStreamStateUpdated">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QpackStreamStateUpdated">Send</a></li><li><a href="#impl-Sync-for-QpackStreamStateUpdated">Sync</a></li><li><a href="#impl-Unpin-for-QpackStreamStateUpdated">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QpackStreamStateUpdated">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::qpack</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">qpack</a>::<wbr><a class="struct" href="#">QpackStreamStateUpdated</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/qpack.rs.html#222-226">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct QpackStreamStateUpdated {
+    pub stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub state: <a class="enum" href="enum.QpackStreamState.html" title="enum qlog::events::qpack::QpackStreamState">QpackStreamState</a>,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.stream_id" class="structfield section-header"><a href="#structfield.stream_id" class="anchor field">§</a><code>stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span id="structfield.state" class="structfield section-header"><a href="#structfield.state" class="anchor field">§</a><code>state: <a class="enum" href="enum.QpackStreamState.html" title="enum qlog::events::qpack::QpackStreamState">QpackStreamState</a></code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QpackStreamStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#221">source</a><a href="#impl-Clone-for-QpackStreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.QpackStreamStateUpdated.html" title="struct qlog::events::qpack::QpackStreamStateUpdated">QpackStreamStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#221">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.QpackStreamStateUpdated.html" title="struct qlog::events::qpack::QpackStreamStateUpdated">QpackStreamStateUpdated</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QpackStreamStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#221">source</a><a href="#impl-Debug-for-QpackStreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.QpackStreamStateUpdated.html" title="struct qlog::events::qpack::QpackStreamStateUpdated">QpackStreamStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#221">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QpackStreamStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#221">source</a><a href="#impl-Deserialize%3C'de%3E-for-QpackStreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.QpackStreamStateUpdated.html" title="struct qlog::events::qpack::QpackStreamStateUpdated">QpackStreamStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#221">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QpackStreamStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#221">source</a><a href="#impl-PartialEq-for-QpackStreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.QpackStreamStateUpdated.html" title="struct qlog::events::qpack::QpackStreamStateUpdated">QpackStreamStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#221">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.QpackStreamStateUpdated.html" title="struct qlog::events::qpack::QpackStreamStateUpdated">QpackStreamStateUpdated</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QpackStreamStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#221">source</a><a href="#impl-Serialize-for-QpackStreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.QpackStreamStateUpdated.html" title="struct qlog::events::qpack::QpackStreamStateUpdated">QpackStreamStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#221">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-QpackStreamStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#221">source</a><a href="#impl-Eq-for-QpackStreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.QpackStreamStateUpdated.html" title="struct qlog::events::qpack::QpackStreamStateUpdated">QpackStreamStateUpdated</a></h3></section><section id="impl-StructuralPartialEq-for-QpackStreamStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/qpack.rs.html#221">source</a><a href="#impl-StructuralPartialEq-for-QpackStreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.QpackStreamStateUpdated.html" title="struct qlog::events::qpack::QpackStreamStateUpdated">QpackStreamStateUpdated</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QpackStreamStateUpdated" class="impl"><a href="#impl-Freeze-for-QpackStreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.QpackStreamStateUpdated.html" title="struct qlog::events::qpack::QpackStreamStateUpdated">QpackStreamStateUpdated</a></h3></section><section id="impl-RefUnwindSafe-for-QpackStreamStateUpdated" class="impl"><a href="#impl-RefUnwindSafe-for-QpackStreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.QpackStreamStateUpdated.html" title="struct qlog::events::qpack::QpackStreamStateUpdated">QpackStreamStateUpdated</a></h3></section><section id="impl-Send-for-QpackStreamStateUpdated" class="impl"><a href="#impl-Send-for-QpackStreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.QpackStreamStateUpdated.html" title="struct qlog::events::qpack::QpackStreamStateUpdated">QpackStreamStateUpdated</a></h3></section><section id="impl-Sync-for-QpackStreamStateUpdated" class="impl"><a href="#impl-Sync-for-QpackStreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.QpackStreamStateUpdated.html" title="struct qlog::events::qpack::QpackStreamStateUpdated">QpackStreamStateUpdated</a></h3></section><section id="impl-Unpin-for-QpackStreamStateUpdated" class="impl"><a href="#impl-Unpin-for-QpackStreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.QpackStreamStateUpdated.html" title="struct qlog::events::qpack::QpackStreamStateUpdated">QpackStreamStateUpdated</a></h3></section><section id="impl-UnwindSafe-for-QpackStreamStateUpdated" class="impl"><a href="#impl-UnwindSafe-for-QpackStreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.QpackStreamStateUpdated.html" title="struct qlog::events::qpack::QpackStreamStateUpdated">QpackStreamStateUpdated</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.AckedRanges.html b/qlog/events/quic/enum.AckedRanges.html
new file mode 100644
index 0000000..a50255e
--- /dev/null
+++ b/qlog/events/quic/enum.AckedRanges.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `AckedRanges` enum in crate `qlog`."><title>AckedRanges in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">AckedRanges</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Double">Double</a></li><li><a href="#variant.Single">Single</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-AckedRanges">Clone</a></li><li><a href="#impl-Debug-for-AckedRanges">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-AckedRanges">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-AckedRanges">Eq</a></li><li><a href="#impl-PartialEq-for-AckedRanges">PartialEq</a></li><li><a href="#impl-Serialize-for-AckedRanges">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-AckedRanges">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-AckedRanges">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-AckedRanges">RefUnwindSafe</a></li><li><a href="#impl-Send-for-AckedRanges">Send</a></li><li><a href="#impl-Sync-for-AckedRanges">Sync</a></li><li><a href="#impl-Unpin-for-AckedRanges">Unpin</a></li><li><a href="#impl-UnwindSafe-for-AckedRanges">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">AckedRanges</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#345-348">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum AckedRanges {
+    Single(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;&gt;),
+    Double(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)&gt;),
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Single" class="variant"><a href="#variant.Single" class="anchor">§</a><h3 class="code-header">Single(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;&gt;)</h3></section><section id="variant.Double" class="variant"><a href="#variant.Double" class="anchor">§</a><h3 class="code-header">Double(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)&gt;)</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-AckedRanges" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#343">source</a><a href="#impl-Clone-for-AckedRanges" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.AckedRanges.html" title="enum qlog::events::quic::AckedRanges">AckedRanges</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#343">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.AckedRanges.html" title="enum qlog::events::quic::AckedRanges">AckedRanges</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-AckedRanges" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#343">source</a><a href="#impl-Debug-for-AckedRanges" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.AckedRanges.html" title="enum qlog::events::quic::AckedRanges">AckedRanges</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#343">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-AckedRanges" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#343">source</a><a href="#impl-Deserialize%3C'de%3E-for-AckedRanges" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.AckedRanges.html" title="enum qlog::events::quic::AckedRanges">AckedRanges</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#343">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-AckedRanges" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#343">source</a><a href="#impl-PartialEq-for-AckedRanges" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.AckedRanges.html" title="enum qlog::events::quic::AckedRanges">AckedRanges</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#343">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.AckedRanges.html" title="enum qlog::events::quic::AckedRanges">AckedRanges</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-AckedRanges" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#343">source</a><a href="#impl-Serialize-for-AckedRanges" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.AckedRanges.html" title="enum qlog::events::quic::AckedRanges">AckedRanges</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#343">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-AckedRanges" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#343">source</a><a href="#impl-Eq-for-AckedRanges" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.AckedRanges.html" title="enum qlog::events::quic::AckedRanges">AckedRanges</a></h3></section><section id="impl-StructuralPartialEq-for-AckedRanges" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#343">source</a><a href="#impl-StructuralPartialEq-for-AckedRanges" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.AckedRanges.html" title="enum qlog::events::quic::AckedRanges">AckedRanges</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-AckedRanges" class="impl"><a href="#impl-Freeze-for-AckedRanges" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.AckedRanges.html" title="enum qlog::events::quic::AckedRanges">AckedRanges</a></h3></section><section id="impl-RefUnwindSafe-for-AckedRanges" class="impl"><a href="#impl-RefUnwindSafe-for-AckedRanges" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.AckedRanges.html" title="enum qlog::events::quic::AckedRanges">AckedRanges</a></h3></section><section id="impl-Send-for-AckedRanges" class="impl"><a href="#impl-Send-for-AckedRanges" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.AckedRanges.html" title="enum qlog::events::quic::AckedRanges">AckedRanges</a></h3></section><section id="impl-Sync-for-AckedRanges" class="impl"><a href="#impl-Sync-for-AckedRanges" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.AckedRanges.html" title="enum qlog::events::quic::AckedRanges">AckedRanges</a></h3></section><section id="impl-Unpin-for-AckedRanges" class="impl"><a href="#impl-Unpin-for-AckedRanges" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.AckedRanges.html" title="enum qlog::events::quic::AckedRanges">AckedRanges</a></h3></section><section id="impl-UnwindSafe-for-AckedRanges" class="impl"><a href="#impl-UnwindSafe-for-AckedRanges" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.AckedRanges.html" title="enum qlog::events::quic::AckedRanges">AckedRanges</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.CongestionStateUpdatedTrigger.html b/qlog/events/quic/enum.CongestionStateUpdatedTrigger.html
new file mode 100644
index 0000000..97d51c5
--- /dev/null
+++ b/qlog/events/quic/enum.CongestionStateUpdatedTrigger.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `CongestionStateUpdatedTrigger` enum in crate `qlog`."><title>CongestionStateUpdatedTrigger in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">CongestionStateUpdatedTrigger</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Ecn">Ecn</a></li><li><a href="#variant.PersistentCongestion">PersistentCongestion</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-CongestionStateUpdatedTrigger">Clone</a></li><li><a href="#impl-Copy-for-CongestionStateUpdatedTrigger">Copy</a></li><li><a href="#impl-Debug-for-CongestionStateUpdatedTrigger">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-CongestionStateUpdatedTrigger">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-CongestionStateUpdatedTrigger">Eq</a></li><li><a href="#impl-PartialEq-for-CongestionStateUpdatedTrigger">PartialEq</a></li><li><a href="#impl-Serialize-for-CongestionStateUpdatedTrigger">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-CongestionStateUpdatedTrigger">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-CongestionStateUpdatedTrigger">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-CongestionStateUpdatedTrigger">RefUnwindSafe</a></li><li><a href="#impl-Send-for-CongestionStateUpdatedTrigger">Send</a></li><li><a href="#impl-Sync-for-CongestionStateUpdatedTrigger">Sync</a></li><li><a href="#impl-Unpin-for-CongestionStateUpdatedTrigger">Unpin</a></li><li><a href="#impl-UnwindSafe-for-CongestionStateUpdatedTrigger">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">CongestionStateUpdatedTrigger</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#315-318">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum CongestionStateUpdatedTrigger {
+    PersistentCongestion,
+    Ecn,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.PersistentCongestion" class="variant"><a href="#variant.PersistentCongestion" class="anchor">§</a><h3 class="code-header">PersistentCongestion</h3></section><section id="variant.Ecn" class="variant"><a href="#variant.Ecn" class="anchor">§</a><h3 class="code-header">Ecn</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-CongestionStateUpdatedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#313">source</a><a href="#impl-Clone-for-CongestionStateUpdatedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.CongestionStateUpdatedTrigger.html" title="enum qlog::events::quic::CongestionStateUpdatedTrigger">CongestionStateUpdatedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#313">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.CongestionStateUpdatedTrigger.html" title="enum qlog::events::quic::CongestionStateUpdatedTrigger">CongestionStateUpdatedTrigger</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-CongestionStateUpdatedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#313">source</a><a href="#impl-Debug-for-CongestionStateUpdatedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.CongestionStateUpdatedTrigger.html" title="enum qlog::events::quic::CongestionStateUpdatedTrigger">CongestionStateUpdatedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#313">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-CongestionStateUpdatedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#313">source</a><a href="#impl-Deserialize%3C'de%3E-for-CongestionStateUpdatedTrigger" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.CongestionStateUpdatedTrigger.html" title="enum qlog::events::quic::CongestionStateUpdatedTrigger">CongestionStateUpdatedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#313">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-CongestionStateUpdatedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#313">source</a><a href="#impl-PartialEq-for-CongestionStateUpdatedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.CongestionStateUpdatedTrigger.html" title="enum qlog::events::quic::CongestionStateUpdatedTrigger">CongestionStateUpdatedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#313">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.CongestionStateUpdatedTrigger.html" title="enum qlog::events::quic::CongestionStateUpdatedTrigger">CongestionStateUpdatedTrigger</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-CongestionStateUpdatedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#313">source</a><a href="#impl-Serialize-for-CongestionStateUpdatedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.CongestionStateUpdatedTrigger.html" title="enum qlog::events::quic::CongestionStateUpdatedTrigger">CongestionStateUpdatedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#313">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-CongestionStateUpdatedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#313">source</a><a href="#impl-Copy-for-CongestionStateUpdatedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.CongestionStateUpdatedTrigger.html" title="enum qlog::events::quic::CongestionStateUpdatedTrigger">CongestionStateUpdatedTrigger</a></h3></section><section id="impl-Eq-for-CongestionStateUpdatedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#313">source</a><a href="#impl-Eq-for-CongestionStateUpdatedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.CongestionStateUpdatedTrigger.html" title="enum qlog::events::quic::CongestionStateUpdatedTrigger">CongestionStateUpdatedTrigger</a></h3></section><section id="impl-StructuralPartialEq-for-CongestionStateUpdatedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#313">source</a><a href="#impl-StructuralPartialEq-for-CongestionStateUpdatedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.CongestionStateUpdatedTrigger.html" title="enum qlog::events::quic::CongestionStateUpdatedTrigger">CongestionStateUpdatedTrigger</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-CongestionStateUpdatedTrigger" class="impl"><a href="#impl-Freeze-for-CongestionStateUpdatedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.CongestionStateUpdatedTrigger.html" title="enum qlog::events::quic::CongestionStateUpdatedTrigger">CongestionStateUpdatedTrigger</a></h3></section><section id="impl-RefUnwindSafe-for-CongestionStateUpdatedTrigger" class="impl"><a href="#impl-RefUnwindSafe-for-CongestionStateUpdatedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.CongestionStateUpdatedTrigger.html" title="enum qlog::events::quic::CongestionStateUpdatedTrigger">CongestionStateUpdatedTrigger</a></h3></section><section id="impl-Send-for-CongestionStateUpdatedTrigger" class="impl"><a href="#impl-Send-for-CongestionStateUpdatedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.CongestionStateUpdatedTrigger.html" title="enum qlog::events::quic::CongestionStateUpdatedTrigger">CongestionStateUpdatedTrigger</a></h3></section><section id="impl-Sync-for-CongestionStateUpdatedTrigger" class="impl"><a href="#impl-Sync-for-CongestionStateUpdatedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.CongestionStateUpdatedTrigger.html" title="enum qlog::events::quic::CongestionStateUpdatedTrigger">CongestionStateUpdatedTrigger</a></h3></section><section id="impl-Unpin-for-CongestionStateUpdatedTrigger" class="impl"><a href="#impl-Unpin-for-CongestionStateUpdatedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.CongestionStateUpdatedTrigger.html" title="enum qlog::events::quic::CongestionStateUpdatedTrigger">CongestionStateUpdatedTrigger</a></h3></section><section id="impl-UnwindSafe-for-CongestionStateUpdatedTrigger" class="impl"><a href="#impl-UnwindSafe-for-CongestionStateUpdatedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.CongestionStateUpdatedTrigger.html" title="enum qlog::events::quic::CongestionStateUpdatedTrigger">CongestionStateUpdatedTrigger</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.ErrorSpace.html b/qlog/events/quic/enum.ErrorSpace.html
new file mode 100644
index 0000000..d088b9b
--- /dev/null
+++ b/qlog/events/quic/enum.ErrorSpace.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ErrorSpace` enum in crate `qlog`."><title>ErrorSpace in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">ErrorSpace</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.ApplicationError">ApplicationError</a></li><li><a href="#variant.TransportError">TransportError</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-ErrorSpace">Clone</a></li><li><a href="#impl-Debug-for-ErrorSpace">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-ErrorSpace">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-ErrorSpace">Eq</a></li><li><a href="#impl-PartialEq-for-ErrorSpace">PartialEq</a></li><li><a href="#impl-Serialize-for-ErrorSpace">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-ErrorSpace">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-ErrorSpace">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-ErrorSpace">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ErrorSpace">Send</a></li><li><a href="#impl-Sync-for-ErrorSpace">Sync</a></li><li><a href="#impl-Unpin-for-ErrorSpace">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ErrorSpace">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">ErrorSpace</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#207-210">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum ErrorSpace {
+    TransportError,
+    ApplicationError,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.TransportError" class="variant"><a href="#variant.TransportError" class="anchor">§</a><h3 class="code-header">TransportError</h3></section><section id="variant.ApplicationError" class="variant"><a href="#variant.ApplicationError" class="anchor">§</a><h3 class="code-header">ApplicationError</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ErrorSpace" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#205">source</a><a href="#impl-Clone-for-ErrorSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.ErrorSpace.html" title="enum qlog::events::quic::ErrorSpace">ErrorSpace</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#205">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.ErrorSpace.html" title="enum qlog::events::quic::ErrorSpace">ErrorSpace</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-ErrorSpace" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#205">source</a><a href="#impl-Debug-for-ErrorSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.ErrorSpace.html" title="enum qlog::events::quic::ErrorSpace">ErrorSpace</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#205">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-ErrorSpace" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#205">source</a><a href="#impl-Deserialize%3C'de%3E-for-ErrorSpace" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.ErrorSpace.html" title="enum qlog::events::quic::ErrorSpace">ErrorSpace</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#205">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-ErrorSpace" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#205">source</a><a href="#impl-PartialEq-for-ErrorSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.ErrorSpace.html" title="enum qlog::events::quic::ErrorSpace">ErrorSpace</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#205">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.ErrorSpace.html" title="enum qlog::events::quic::ErrorSpace">ErrorSpace</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-ErrorSpace" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#205">source</a><a href="#impl-Serialize-for-ErrorSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.ErrorSpace.html" title="enum qlog::events::quic::ErrorSpace">ErrorSpace</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#205">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-ErrorSpace" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#205">source</a><a href="#impl-Eq-for-ErrorSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.ErrorSpace.html" title="enum qlog::events::quic::ErrorSpace">ErrorSpace</a></h3></section><section id="impl-StructuralPartialEq-for-ErrorSpace" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#205">source</a><a href="#impl-StructuralPartialEq-for-ErrorSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.ErrorSpace.html" title="enum qlog::events::quic::ErrorSpace">ErrorSpace</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-ErrorSpace" class="impl"><a href="#impl-Freeze-for-ErrorSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.ErrorSpace.html" title="enum qlog::events::quic::ErrorSpace">ErrorSpace</a></h3></section><section id="impl-RefUnwindSafe-for-ErrorSpace" class="impl"><a href="#impl-RefUnwindSafe-for-ErrorSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.ErrorSpace.html" title="enum qlog::events::quic::ErrorSpace">ErrorSpace</a></h3></section><section id="impl-Send-for-ErrorSpace" class="impl"><a href="#impl-Send-for-ErrorSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.ErrorSpace.html" title="enum qlog::events::quic::ErrorSpace">ErrorSpace</a></h3></section><section id="impl-Sync-for-ErrorSpace" class="impl"><a href="#impl-Sync-for-ErrorSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.ErrorSpace.html" title="enum qlog::events::quic::ErrorSpace">ErrorSpace</a></h3></section><section id="impl-Unpin-for-ErrorSpace" class="impl"><a href="#impl-Unpin-for-ErrorSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.ErrorSpace.html" title="enum qlog::events::quic::ErrorSpace">ErrorSpace</a></h3></section><section id="impl-UnwindSafe-for-ErrorSpace" class="impl"><a href="#impl-UnwindSafe-for-ErrorSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.ErrorSpace.html" title="enum qlog::events::quic::ErrorSpace">ErrorSpace</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.LossTimerEventType.html b/qlog/events/quic/enum.LossTimerEventType.html
new file mode 100644
index 0000000..4b0a4c7
--- /dev/null
+++ b/qlog/events/quic/enum.LossTimerEventType.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `LossTimerEventType` enum in crate `qlog`."><title>LossTimerEventType in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">LossTimerEventType</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Cancelled">Cancelled</a></li><li><a href="#variant.Expired">Expired</a></li><li><a href="#variant.Set">Set</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-LossTimerEventType">Clone</a></li><li><a href="#impl-Debug-for-LossTimerEventType">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-LossTimerEventType">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-LossTimerEventType">Eq</a></li><li><a href="#impl-PartialEq-for-LossTimerEventType">PartialEq</a></li><li><a href="#impl-Serialize-for-LossTimerEventType">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-LossTimerEventType">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-LossTimerEventType">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-LossTimerEventType">RefUnwindSafe</a></li><li><a href="#impl-Send-for-LossTimerEventType">Send</a></li><li><a href="#impl-Sync-for-LossTimerEventType">Sync</a></li><li><a href="#impl-Unpin-for-LossTimerEventType">Unpin</a></li><li><a href="#impl-UnwindSafe-for-LossTimerEventType">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">LossTimerEventType</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#330-334">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum LossTimerEventType {
+    Set,
+    Expired,
+    Cancelled,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Set" class="variant"><a href="#variant.Set" class="anchor">§</a><h3 class="code-header">Set</h3></section><section id="variant.Expired" class="variant"><a href="#variant.Expired" class="anchor">§</a><h3 class="code-header">Expired</h3></section><section id="variant.Cancelled" class="variant"><a href="#variant.Cancelled" class="anchor">§</a><h3 class="code-header">Cancelled</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-LossTimerEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#328">source</a><a href="#impl-Clone-for-LossTimerEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.LossTimerEventType.html" title="enum qlog::events::quic::LossTimerEventType">LossTimerEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#328">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.LossTimerEventType.html" title="enum qlog::events::quic::LossTimerEventType">LossTimerEventType</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-LossTimerEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#328">source</a><a href="#impl-Debug-for-LossTimerEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.LossTimerEventType.html" title="enum qlog::events::quic::LossTimerEventType">LossTimerEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#328">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-LossTimerEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#328">source</a><a href="#impl-Deserialize%3C'de%3E-for-LossTimerEventType" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.LossTimerEventType.html" title="enum qlog::events::quic::LossTimerEventType">LossTimerEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#328">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-LossTimerEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#328">source</a><a href="#impl-PartialEq-for-LossTimerEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.LossTimerEventType.html" title="enum qlog::events::quic::LossTimerEventType">LossTimerEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#328">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.LossTimerEventType.html" title="enum qlog::events::quic::LossTimerEventType">LossTimerEventType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-LossTimerEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#328">source</a><a href="#impl-Serialize-for-LossTimerEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.LossTimerEventType.html" title="enum qlog::events::quic::LossTimerEventType">LossTimerEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#328">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-LossTimerEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#328">source</a><a href="#impl-Eq-for-LossTimerEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.LossTimerEventType.html" title="enum qlog::events::quic::LossTimerEventType">LossTimerEventType</a></h3></section><section id="impl-StructuralPartialEq-for-LossTimerEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#328">source</a><a href="#impl-StructuralPartialEq-for-LossTimerEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.LossTimerEventType.html" title="enum qlog::events::quic::LossTimerEventType">LossTimerEventType</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-LossTimerEventType" class="impl"><a href="#impl-Freeze-for-LossTimerEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.LossTimerEventType.html" title="enum qlog::events::quic::LossTimerEventType">LossTimerEventType</a></h3></section><section id="impl-RefUnwindSafe-for-LossTimerEventType" class="impl"><a href="#impl-RefUnwindSafe-for-LossTimerEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.LossTimerEventType.html" title="enum qlog::events::quic::LossTimerEventType">LossTimerEventType</a></h3></section><section id="impl-Send-for-LossTimerEventType" class="impl"><a href="#impl-Send-for-LossTimerEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.LossTimerEventType.html" title="enum qlog::events::quic::LossTimerEventType">LossTimerEventType</a></h3></section><section id="impl-Sync-for-LossTimerEventType" class="impl"><a href="#impl-Sync-for-LossTimerEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.LossTimerEventType.html" title="enum qlog::events::quic::LossTimerEventType">LossTimerEventType</a></h3></section><section id="impl-Unpin-for-LossTimerEventType" class="impl"><a href="#impl-Unpin-for-LossTimerEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.LossTimerEventType.html" title="enum qlog::events::quic::LossTimerEventType">LossTimerEventType</a></h3></section><section id="impl-UnwindSafe-for-LossTimerEventType" class="impl"><a href="#impl-UnwindSafe-for-LossTimerEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.LossTimerEventType.html" title="enum qlog::events::quic::LossTimerEventType">LossTimerEventType</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.PacketBufferedTrigger.html b/qlog/events/quic/enum.PacketBufferedTrigger.html
new file mode 100644
index 0000000..ff75dc0
--- /dev/null
+++ b/qlog/events/quic/enum.PacketBufferedTrigger.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `PacketBufferedTrigger` enum in crate `qlog`."><title>PacketBufferedTrigger in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">PacketBufferedTrigger</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Backpressure">Backpressure</a></li><li><a href="#variant.KeysUnavailable">KeysUnavailable</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-PacketBufferedTrigger">Clone</a></li><li><a href="#impl-Copy-for-PacketBufferedTrigger">Copy</a></li><li><a href="#impl-Debug-for-PacketBufferedTrigger">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-PacketBufferedTrigger">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-PacketBufferedTrigger">Eq</a></li><li><a href="#impl-PartialEq-for-PacketBufferedTrigger">PartialEq</a></li><li><a href="#impl-Serialize-for-PacketBufferedTrigger">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-PacketBufferedTrigger">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-PacketBufferedTrigger">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-PacketBufferedTrigger">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PacketBufferedTrigger">Send</a></li><li><a href="#impl-Sync-for-PacketBufferedTrigger">Sync</a></li><li><a href="#impl-Unpin-for-PacketBufferedTrigger">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PacketBufferedTrigger">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">PacketBufferedTrigger</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#290-293">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum PacketBufferedTrigger {
+    Backpressure,
+    KeysUnavailable,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Backpressure" class="variant"><a href="#variant.Backpressure" class="anchor">§</a><h3 class="code-header">Backpressure</h3></section><section id="variant.KeysUnavailable" class="variant"><a href="#variant.KeysUnavailable" class="anchor">§</a><h3 class="code-header">KeysUnavailable</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PacketBufferedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#288">source</a><a href="#impl-Clone-for-PacketBufferedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.PacketBufferedTrigger.html" title="enum qlog::events::quic::PacketBufferedTrigger">PacketBufferedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#288">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.PacketBufferedTrigger.html" title="enum qlog::events::quic::PacketBufferedTrigger">PacketBufferedTrigger</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-PacketBufferedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#288">source</a><a href="#impl-Debug-for-PacketBufferedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.PacketBufferedTrigger.html" title="enum qlog::events::quic::PacketBufferedTrigger">PacketBufferedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#288">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-PacketBufferedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#288">source</a><a href="#impl-Deserialize%3C'de%3E-for-PacketBufferedTrigger" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.PacketBufferedTrigger.html" title="enum qlog::events::quic::PacketBufferedTrigger">PacketBufferedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#288">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-PacketBufferedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#288">source</a><a href="#impl-PartialEq-for-PacketBufferedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.PacketBufferedTrigger.html" title="enum qlog::events::quic::PacketBufferedTrigger">PacketBufferedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#288">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.PacketBufferedTrigger.html" title="enum qlog::events::quic::PacketBufferedTrigger">PacketBufferedTrigger</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-PacketBufferedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#288">source</a><a href="#impl-Serialize-for-PacketBufferedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.PacketBufferedTrigger.html" title="enum qlog::events::quic::PacketBufferedTrigger">PacketBufferedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#288">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-PacketBufferedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#288">source</a><a href="#impl-Copy-for-PacketBufferedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.PacketBufferedTrigger.html" title="enum qlog::events::quic::PacketBufferedTrigger">PacketBufferedTrigger</a></h3></section><section id="impl-Eq-for-PacketBufferedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#288">source</a><a href="#impl-Eq-for-PacketBufferedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.PacketBufferedTrigger.html" title="enum qlog::events::quic::PacketBufferedTrigger">PacketBufferedTrigger</a></h3></section><section id="impl-StructuralPartialEq-for-PacketBufferedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#288">source</a><a href="#impl-StructuralPartialEq-for-PacketBufferedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.PacketBufferedTrigger.html" title="enum qlog::events::quic::PacketBufferedTrigger">PacketBufferedTrigger</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-PacketBufferedTrigger" class="impl"><a href="#impl-Freeze-for-PacketBufferedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.PacketBufferedTrigger.html" title="enum qlog::events::quic::PacketBufferedTrigger">PacketBufferedTrigger</a></h3></section><section id="impl-RefUnwindSafe-for-PacketBufferedTrigger" class="impl"><a href="#impl-RefUnwindSafe-for-PacketBufferedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.PacketBufferedTrigger.html" title="enum qlog::events::quic::PacketBufferedTrigger">PacketBufferedTrigger</a></h3></section><section id="impl-Send-for-PacketBufferedTrigger" class="impl"><a href="#impl-Send-for-PacketBufferedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.PacketBufferedTrigger.html" title="enum qlog::events::quic::PacketBufferedTrigger">PacketBufferedTrigger</a></h3></section><section id="impl-Sync-for-PacketBufferedTrigger" class="impl"><a href="#impl-Sync-for-PacketBufferedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.PacketBufferedTrigger.html" title="enum qlog::events::quic::PacketBufferedTrigger">PacketBufferedTrigger</a></h3></section><section id="impl-Unpin-for-PacketBufferedTrigger" class="impl"><a href="#impl-Unpin-for-PacketBufferedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.PacketBufferedTrigger.html" title="enum qlog::events::quic::PacketBufferedTrigger">PacketBufferedTrigger</a></h3></section><section id="impl-UnwindSafe-for-PacketBufferedTrigger" class="impl"><a href="#impl-UnwindSafe-for-PacketBufferedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.PacketBufferedTrigger.html" title="enum qlog::events::quic::PacketBufferedTrigger">PacketBufferedTrigger</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.PacketDroppedTrigger.html b/qlog/events/quic/enum.PacketDroppedTrigger.html
new file mode 100644
index 0000000..e23d5bc
--- /dev/null
+++ b/qlog/events/quic/enum.PacketDroppedTrigger.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `PacketDroppedTrigger` enum in crate `qlog`."><title>PacketDroppedTrigger in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">PacketDroppedTrigger</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.ConnectionUnknown">ConnectionUnknown</a></li><li><a href="#variant.DecryptionFailure">DecryptionFailure</a></li><li><a href="#variant.General">General</a></li><li><a href="#variant.InternalError">InternalError</a></li><li><a href="#variant.Invalid">Invalid</a></li><li><a href="#variant.Rejected">Rejected</a></li><li><a href="#variant.Unsupported">Unsupported</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-PacketDroppedTrigger">Clone</a></li><li><a href="#impl-Copy-for-PacketDroppedTrigger">Copy</a></li><li><a href="#impl-Debug-for-PacketDroppedTrigger">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-PacketDroppedTrigger">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-PacketDroppedTrigger">Eq</a></li><li><a href="#impl-PartialEq-for-PacketDroppedTrigger">PartialEq</a></li><li><a href="#impl-Serialize-for-PacketDroppedTrigger">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-PacketDroppedTrigger">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-PacketDroppedTrigger">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-PacketDroppedTrigger">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PacketDroppedTrigger">Send</a></li><li><a href="#impl-Sync-for-PacketDroppedTrigger">Sync</a></li><li><a href="#impl-Unpin-for-PacketDroppedTrigger">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PacketDroppedTrigger">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">PacketDroppedTrigger</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#278-286">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum PacketDroppedTrigger {
+    InternalError,
+    Rejected,
+    Unsupported,
+    Invalid,
+    ConnectionUnknown,
+    DecryptionFailure,
+    General,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.InternalError" class="variant"><a href="#variant.InternalError" class="anchor">§</a><h3 class="code-header">InternalError</h3></section><section id="variant.Rejected" class="variant"><a href="#variant.Rejected" class="anchor">§</a><h3 class="code-header">Rejected</h3></section><section id="variant.Unsupported" class="variant"><a href="#variant.Unsupported" class="anchor">§</a><h3 class="code-header">Unsupported</h3></section><section id="variant.Invalid" class="variant"><a href="#variant.Invalid" class="anchor">§</a><h3 class="code-header">Invalid</h3></section><section id="variant.ConnectionUnknown" class="variant"><a href="#variant.ConnectionUnknown" class="anchor">§</a><h3 class="code-header">ConnectionUnknown</h3></section><section id="variant.DecryptionFailure" class="variant"><a href="#variant.DecryptionFailure" class="anchor">§</a><h3 class="code-header">DecryptionFailure</h3></section><section id="variant.General" class="variant"><a href="#variant.General" class="anchor">§</a><h3 class="code-header">General</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PacketDroppedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#276">source</a><a href="#impl-Clone-for-PacketDroppedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.PacketDroppedTrigger.html" title="enum qlog::events::quic::PacketDroppedTrigger">PacketDroppedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#276">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.PacketDroppedTrigger.html" title="enum qlog::events::quic::PacketDroppedTrigger">PacketDroppedTrigger</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-PacketDroppedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#276">source</a><a href="#impl-Debug-for-PacketDroppedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.PacketDroppedTrigger.html" title="enum qlog::events::quic::PacketDroppedTrigger">PacketDroppedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#276">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-PacketDroppedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#276">source</a><a href="#impl-Deserialize%3C'de%3E-for-PacketDroppedTrigger" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.PacketDroppedTrigger.html" title="enum qlog::events::quic::PacketDroppedTrigger">PacketDroppedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#276">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-PacketDroppedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#276">source</a><a href="#impl-PartialEq-for-PacketDroppedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.PacketDroppedTrigger.html" title="enum qlog::events::quic::PacketDroppedTrigger">PacketDroppedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#276">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.PacketDroppedTrigger.html" title="enum qlog::events::quic::PacketDroppedTrigger">PacketDroppedTrigger</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-PacketDroppedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#276">source</a><a href="#impl-Serialize-for-PacketDroppedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.PacketDroppedTrigger.html" title="enum qlog::events::quic::PacketDroppedTrigger">PacketDroppedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#276">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-PacketDroppedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#276">source</a><a href="#impl-Copy-for-PacketDroppedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.PacketDroppedTrigger.html" title="enum qlog::events::quic::PacketDroppedTrigger">PacketDroppedTrigger</a></h3></section><section id="impl-Eq-for-PacketDroppedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#276">source</a><a href="#impl-Eq-for-PacketDroppedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.PacketDroppedTrigger.html" title="enum qlog::events::quic::PacketDroppedTrigger">PacketDroppedTrigger</a></h3></section><section id="impl-StructuralPartialEq-for-PacketDroppedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#276">source</a><a href="#impl-StructuralPartialEq-for-PacketDroppedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.PacketDroppedTrigger.html" title="enum qlog::events::quic::PacketDroppedTrigger">PacketDroppedTrigger</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-PacketDroppedTrigger" class="impl"><a href="#impl-Freeze-for-PacketDroppedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.PacketDroppedTrigger.html" title="enum qlog::events::quic::PacketDroppedTrigger">PacketDroppedTrigger</a></h3></section><section id="impl-RefUnwindSafe-for-PacketDroppedTrigger" class="impl"><a href="#impl-RefUnwindSafe-for-PacketDroppedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.PacketDroppedTrigger.html" title="enum qlog::events::quic::PacketDroppedTrigger">PacketDroppedTrigger</a></h3></section><section id="impl-Send-for-PacketDroppedTrigger" class="impl"><a href="#impl-Send-for-PacketDroppedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.PacketDroppedTrigger.html" title="enum qlog::events::quic::PacketDroppedTrigger">PacketDroppedTrigger</a></h3></section><section id="impl-Sync-for-PacketDroppedTrigger" class="impl"><a href="#impl-Sync-for-PacketDroppedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.PacketDroppedTrigger.html" title="enum qlog::events::quic::PacketDroppedTrigger">PacketDroppedTrigger</a></h3></section><section id="impl-Unpin-for-PacketDroppedTrigger" class="impl"><a href="#impl-Unpin-for-PacketDroppedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.PacketDroppedTrigger.html" title="enum qlog::events::quic::PacketDroppedTrigger">PacketDroppedTrigger</a></h3></section><section id="impl-UnwindSafe-for-PacketDroppedTrigger" class="impl"><a href="#impl-UnwindSafe-for-PacketDroppedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.PacketDroppedTrigger.html" title="enum qlog::events::quic::PacketDroppedTrigger">PacketDroppedTrigger</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.PacketLostTrigger.html b/qlog/events/quic/enum.PacketLostTrigger.html
new file mode 100644
index 0000000..b6ea448
--- /dev/null
+++ b/qlog/events/quic/enum.PacketLostTrigger.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `PacketLostTrigger` enum in crate `qlog`."><title>PacketLostTrigger in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">PacketLostTrigger</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.PtoExpired">PtoExpired</a></li><li><a href="#variant.ReorderingThreshold">ReorderingThreshold</a></li><li><a href="#variant.TimeThreshold">TimeThreshold</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-PacketLostTrigger">Clone</a></li><li><a href="#impl-Copy-for-PacketLostTrigger">Copy</a></li><li><a href="#impl-Debug-for-PacketLostTrigger">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-PacketLostTrigger">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-PacketLostTrigger">Eq</a></li><li><a href="#impl-PartialEq-for-PacketLostTrigger">PartialEq</a></li><li><a href="#impl-Serialize-for-PacketLostTrigger">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-PacketLostTrigger">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-PacketLostTrigger">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-PacketLostTrigger">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PacketLostTrigger">Send</a></li><li><a href="#impl-Sync-for-PacketLostTrigger">Sync</a></li><li><a href="#impl-Unpin-for-PacketLostTrigger">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PacketLostTrigger">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">PacketLostTrigger</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#322-326">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum PacketLostTrigger {
+    ReorderingThreshold,
+    TimeThreshold,
+    PtoExpired,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.ReorderingThreshold" class="variant"><a href="#variant.ReorderingThreshold" class="anchor">§</a><h3 class="code-header">ReorderingThreshold</h3></section><section id="variant.TimeThreshold" class="variant"><a href="#variant.TimeThreshold" class="anchor">§</a><h3 class="code-header">TimeThreshold</h3></section><section id="variant.PtoExpired" class="variant"><a href="#variant.PtoExpired" class="anchor">§</a><h3 class="code-header">PtoExpired</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PacketLostTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#320">source</a><a href="#impl-Clone-for-PacketLostTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.PacketLostTrigger.html" title="enum qlog::events::quic::PacketLostTrigger">PacketLostTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#320">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.PacketLostTrigger.html" title="enum qlog::events::quic::PacketLostTrigger">PacketLostTrigger</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-PacketLostTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#320">source</a><a href="#impl-Debug-for-PacketLostTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.PacketLostTrigger.html" title="enum qlog::events::quic::PacketLostTrigger">PacketLostTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#320">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-PacketLostTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#320">source</a><a href="#impl-Deserialize%3C'de%3E-for-PacketLostTrigger" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.PacketLostTrigger.html" title="enum qlog::events::quic::PacketLostTrigger">PacketLostTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#320">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-PacketLostTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#320">source</a><a href="#impl-PartialEq-for-PacketLostTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.PacketLostTrigger.html" title="enum qlog::events::quic::PacketLostTrigger">PacketLostTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#320">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.PacketLostTrigger.html" title="enum qlog::events::quic::PacketLostTrigger">PacketLostTrigger</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-PacketLostTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#320">source</a><a href="#impl-Serialize-for-PacketLostTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.PacketLostTrigger.html" title="enum qlog::events::quic::PacketLostTrigger">PacketLostTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#320">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-PacketLostTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#320">source</a><a href="#impl-Copy-for-PacketLostTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.PacketLostTrigger.html" title="enum qlog::events::quic::PacketLostTrigger">PacketLostTrigger</a></h3></section><section id="impl-Eq-for-PacketLostTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#320">source</a><a href="#impl-Eq-for-PacketLostTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.PacketLostTrigger.html" title="enum qlog::events::quic::PacketLostTrigger">PacketLostTrigger</a></h3></section><section id="impl-StructuralPartialEq-for-PacketLostTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#320">source</a><a href="#impl-StructuralPartialEq-for-PacketLostTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.PacketLostTrigger.html" title="enum qlog::events::quic::PacketLostTrigger">PacketLostTrigger</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-PacketLostTrigger" class="impl"><a href="#impl-Freeze-for-PacketLostTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.PacketLostTrigger.html" title="enum qlog::events::quic::PacketLostTrigger">PacketLostTrigger</a></h3></section><section id="impl-RefUnwindSafe-for-PacketLostTrigger" class="impl"><a href="#impl-RefUnwindSafe-for-PacketLostTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.PacketLostTrigger.html" title="enum qlog::events::quic::PacketLostTrigger">PacketLostTrigger</a></h3></section><section id="impl-Send-for-PacketLostTrigger" class="impl"><a href="#impl-Send-for-PacketLostTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.PacketLostTrigger.html" title="enum qlog::events::quic::PacketLostTrigger">PacketLostTrigger</a></h3></section><section id="impl-Sync-for-PacketLostTrigger" class="impl"><a href="#impl-Sync-for-PacketLostTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.PacketLostTrigger.html" title="enum qlog::events::quic::PacketLostTrigger">PacketLostTrigger</a></h3></section><section id="impl-Unpin-for-PacketLostTrigger" class="impl"><a href="#impl-Unpin-for-PacketLostTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.PacketLostTrigger.html" title="enum qlog::events::quic::PacketLostTrigger">PacketLostTrigger</a></h3></section><section id="impl-UnwindSafe-for-PacketLostTrigger" class="impl"><a href="#impl-UnwindSafe-for-PacketLostTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.PacketLostTrigger.html" title="enum qlog::events::quic::PacketLostTrigger">PacketLostTrigger</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.PacketNumberSpace.html b/qlog/events/quic/enum.PacketNumberSpace.html
new file mode 100644
index 0000000..da65f39
--- /dev/null
+++ b/qlog/events/quic/enum.PacketNumberSpace.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `PacketNumberSpace` enum in crate `qlog`."><title>PacketNumberSpace in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">PacketNumberSpace</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.ApplicationData">ApplicationData</a></li><li><a href="#variant.Handshake">Handshake</a></li><li><a href="#variant.Initial">Initial</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-PacketNumberSpace">Clone</a></li><li><a href="#impl-Debug-for-PacketNumberSpace">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-PacketNumberSpace">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-PacketNumberSpace">Eq</a></li><li><a href="#impl-PartialEq-for-PacketNumberSpace">PartialEq</a></li><li><a href="#impl-Serialize-for-PacketNumberSpace">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-PacketNumberSpace">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-PacketNumberSpace">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-PacketNumberSpace">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PacketNumberSpace">Send</a></li><li><a href="#impl-Sync-for-PacketNumberSpace">Sync</a></li><li><a href="#impl-Unpin-for-PacketNumberSpace">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PacketNumberSpace">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">PacketNumberSpace</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#59-63">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum PacketNumberSpace {
+    Initial,
+    Handshake,
+    ApplicationData,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Initial" class="variant"><a href="#variant.Initial" class="anchor">§</a><h3 class="code-header">Initial</h3></section><section id="variant.Handshake" class="variant"><a href="#variant.Handshake" class="anchor">§</a><h3 class="code-header">Handshake</h3></section><section id="variant.ApplicationData" class="variant"><a href="#variant.ApplicationData" class="anchor">§</a><h3 class="code-header">ApplicationData</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PacketNumberSpace" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#57">source</a><a href="#impl-Clone-for-PacketNumberSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#57">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-PacketNumberSpace" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#57">source</a><a href="#impl-Debug-for-PacketNumberSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#57">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-PacketNumberSpace" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#57">source</a><a href="#impl-Deserialize%3C'de%3E-for-PacketNumberSpace" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#57">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-PacketNumberSpace" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#57">source</a><a href="#impl-PartialEq-for-PacketNumberSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#57">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-PacketNumberSpace" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#57">source</a><a href="#impl-Serialize-for-PacketNumberSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#57">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-PacketNumberSpace" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#57">source</a><a href="#impl-Eq-for-PacketNumberSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a></h3></section><section id="impl-StructuralPartialEq-for-PacketNumberSpace" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#57">source</a><a href="#impl-StructuralPartialEq-for-PacketNumberSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-PacketNumberSpace" class="impl"><a href="#impl-Freeze-for-PacketNumberSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a></h3></section><section id="impl-RefUnwindSafe-for-PacketNumberSpace" class="impl"><a href="#impl-RefUnwindSafe-for-PacketNumberSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a></h3></section><section id="impl-Send-for-PacketNumberSpace" class="impl"><a href="#impl-Send-for-PacketNumberSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a></h3></section><section id="impl-Sync-for-PacketNumberSpace" class="impl"><a href="#impl-Sync-for-PacketNumberSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a></h3></section><section id="impl-Unpin-for-PacketNumberSpace" class="impl"><a href="#impl-Unpin-for-PacketNumberSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a></h3></section><section id="impl-UnwindSafe-for-PacketNumberSpace" class="impl"><a href="#impl-UnwindSafe-for-PacketNumberSpace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.PacketReceivedTrigger.html b/qlog/events/quic/enum.PacketReceivedTrigger.html
new file mode 100644
index 0000000..0c62691
--- /dev/null
+++ b/qlog/events/quic/enum.PacketReceivedTrigger.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `PacketReceivedTrigger` enum in crate `qlog`."><title>PacketReceivedTrigger in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">PacketReceivedTrigger</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.KeysUnavailable">KeysUnavailable</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-PacketReceivedTrigger">Clone</a></li><li><a href="#impl-Copy-for-PacketReceivedTrigger">Copy</a></li><li><a href="#impl-Debug-for-PacketReceivedTrigger">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-PacketReceivedTrigger">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-PacketReceivedTrigger">Eq</a></li><li><a href="#impl-PartialEq-for-PacketReceivedTrigger">PartialEq</a></li><li><a href="#impl-Serialize-for-PacketReceivedTrigger">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-PacketReceivedTrigger">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-PacketReceivedTrigger">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-PacketReceivedTrigger">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PacketReceivedTrigger">Send</a></li><li><a href="#impl-Sync-for-PacketReceivedTrigger">Sync</a></li><li><a href="#impl-Unpin-for-PacketReceivedTrigger">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PacketReceivedTrigger">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">PacketReceivedTrigger</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#272-274">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum PacketReceivedTrigger {
+    KeysUnavailable,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.KeysUnavailable" class="variant"><a href="#variant.KeysUnavailable" class="anchor">§</a><h3 class="code-header">KeysUnavailable</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PacketReceivedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#270">source</a><a href="#impl-Clone-for-PacketReceivedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.PacketReceivedTrigger.html" title="enum qlog::events::quic::PacketReceivedTrigger">PacketReceivedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#270">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.PacketReceivedTrigger.html" title="enum qlog::events::quic::PacketReceivedTrigger">PacketReceivedTrigger</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-PacketReceivedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#270">source</a><a href="#impl-Debug-for-PacketReceivedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.PacketReceivedTrigger.html" title="enum qlog::events::quic::PacketReceivedTrigger">PacketReceivedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#270">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-PacketReceivedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#270">source</a><a href="#impl-Deserialize%3C'de%3E-for-PacketReceivedTrigger" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.PacketReceivedTrigger.html" title="enum qlog::events::quic::PacketReceivedTrigger">PacketReceivedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#270">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-PacketReceivedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#270">source</a><a href="#impl-PartialEq-for-PacketReceivedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.PacketReceivedTrigger.html" title="enum qlog::events::quic::PacketReceivedTrigger">PacketReceivedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#270">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.PacketReceivedTrigger.html" title="enum qlog::events::quic::PacketReceivedTrigger">PacketReceivedTrigger</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-PacketReceivedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#270">source</a><a href="#impl-Serialize-for-PacketReceivedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.PacketReceivedTrigger.html" title="enum qlog::events::quic::PacketReceivedTrigger">PacketReceivedTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#270">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-PacketReceivedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#270">source</a><a href="#impl-Copy-for-PacketReceivedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.PacketReceivedTrigger.html" title="enum qlog::events::quic::PacketReceivedTrigger">PacketReceivedTrigger</a></h3></section><section id="impl-Eq-for-PacketReceivedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#270">source</a><a href="#impl-Eq-for-PacketReceivedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.PacketReceivedTrigger.html" title="enum qlog::events::quic::PacketReceivedTrigger">PacketReceivedTrigger</a></h3></section><section id="impl-StructuralPartialEq-for-PacketReceivedTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#270">source</a><a href="#impl-StructuralPartialEq-for-PacketReceivedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.PacketReceivedTrigger.html" title="enum qlog::events::quic::PacketReceivedTrigger">PacketReceivedTrigger</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-PacketReceivedTrigger" class="impl"><a href="#impl-Freeze-for-PacketReceivedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.PacketReceivedTrigger.html" title="enum qlog::events::quic::PacketReceivedTrigger">PacketReceivedTrigger</a></h3></section><section id="impl-RefUnwindSafe-for-PacketReceivedTrigger" class="impl"><a href="#impl-RefUnwindSafe-for-PacketReceivedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.PacketReceivedTrigger.html" title="enum qlog::events::quic::PacketReceivedTrigger">PacketReceivedTrigger</a></h3></section><section id="impl-Send-for-PacketReceivedTrigger" class="impl"><a href="#impl-Send-for-PacketReceivedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.PacketReceivedTrigger.html" title="enum qlog::events::quic::PacketReceivedTrigger">PacketReceivedTrigger</a></h3></section><section id="impl-Sync-for-PacketReceivedTrigger" class="impl"><a href="#impl-Sync-for-PacketReceivedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.PacketReceivedTrigger.html" title="enum qlog::events::quic::PacketReceivedTrigger">PacketReceivedTrigger</a></h3></section><section id="impl-Unpin-for-PacketReceivedTrigger" class="impl"><a href="#impl-Unpin-for-PacketReceivedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.PacketReceivedTrigger.html" title="enum qlog::events::quic::PacketReceivedTrigger">PacketReceivedTrigger</a></h3></section><section id="impl-UnwindSafe-for-PacketReceivedTrigger" class="impl"><a href="#impl-UnwindSafe-for-PacketReceivedTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.PacketReceivedTrigger.html" title="enum qlog::events::quic::PacketReceivedTrigger">PacketReceivedTrigger</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.PacketSentTrigger.html b/qlog/events/quic/enum.PacketSentTrigger.html
new file mode 100644
index 0000000..067af86
--- /dev/null
+++ b/qlog/events/quic/enum.PacketSentTrigger.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `PacketSentTrigger` enum in crate `qlog`."><title>PacketSentTrigger in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">PacketSentTrigger</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.CcBandwidthProbe">CcBandwidthProbe</a></li><li><a href="#variant.PtoProbe">PtoProbe</a></li><li><a href="#variant.RetransmitCrypto">RetransmitCrypto</a></li><li><a href="#variant.RetransmitReordered">RetransmitReordered</a></li><li><a href="#variant.RetransmitTimeout">RetransmitTimeout</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-PacketSentTrigger">Clone</a></li><li><a href="#impl-Copy-for-PacketSentTrigger">Copy</a></li><li><a href="#impl-Debug-for-PacketSentTrigger">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-PacketSentTrigger">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-PacketSentTrigger">Eq</a></li><li><a href="#impl-PartialEq-for-PacketSentTrigger">PartialEq</a></li><li><a href="#impl-Serialize-for-PacketSentTrigger">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-PacketSentTrigger">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-PacketSentTrigger">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-PacketSentTrigger">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PacketSentTrigger">Send</a></li><li><a href="#impl-Sync-for-PacketSentTrigger">Sync</a></li><li><a href="#impl-Unpin-for-PacketSentTrigger">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PacketSentTrigger">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">PacketSentTrigger</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#262-268">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum PacketSentTrigger {
+    RetransmitReordered,
+    RetransmitTimeout,
+    PtoProbe,
+    RetransmitCrypto,
+    CcBandwidthProbe,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.RetransmitReordered" class="variant"><a href="#variant.RetransmitReordered" class="anchor">§</a><h3 class="code-header">RetransmitReordered</h3></section><section id="variant.RetransmitTimeout" class="variant"><a href="#variant.RetransmitTimeout" class="anchor">§</a><h3 class="code-header">RetransmitTimeout</h3></section><section id="variant.PtoProbe" class="variant"><a href="#variant.PtoProbe" class="anchor">§</a><h3 class="code-header">PtoProbe</h3></section><section id="variant.RetransmitCrypto" class="variant"><a href="#variant.RetransmitCrypto" class="anchor">§</a><h3 class="code-header">RetransmitCrypto</h3></section><section id="variant.CcBandwidthProbe" class="variant"><a href="#variant.CcBandwidthProbe" class="anchor">§</a><h3 class="code-header">CcBandwidthProbe</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PacketSentTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#260">source</a><a href="#impl-Clone-for-PacketSentTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.PacketSentTrigger.html" title="enum qlog::events::quic::PacketSentTrigger">PacketSentTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#260">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.PacketSentTrigger.html" title="enum qlog::events::quic::PacketSentTrigger">PacketSentTrigger</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-PacketSentTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#260">source</a><a href="#impl-Debug-for-PacketSentTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.PacketSentTrigger.html" title="enum qlog::events::quic::PacketSentTrigger">PacketSentTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#260">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-PacketSentTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#260">source</a><a href="#impl-Deserialize%3C'de%3E-for-PacketSentTrigger" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.PacketSentTrigger.html" title="enum qlog::events::quic::PacketSentTrigger">PacketSentTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#260">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-PacketSentTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#260">source</a><a href="#impl-PartialEq-for-PacketSentTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.PacketSentTrigger.html" title="enum qlog::events::quic::PacketSentTrigger">PacketSentTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#260">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.PacketSentTrigger.html" title="enum qlog::events::quic::PacketSentTrigger">PacketSentTrigger</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-PacketSentTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#260">source</a><a href="#impl-Serialize-for-PacketSentTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.PacketSentTrigger.html" title="enum qlog::events::quic::PacketSentTrigger">PacketSentTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#260">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-PacketSentTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#260">source</a><a href="#impl-Copy-for-PacketSentTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.PacketSentTrigger.html" title="enum qlog::events::quic::PacketSentTrigger">PacketSentTrigger</a></h3></section><section id="impl-Eq-for-PacketSentTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#260">source</a><a href="#impl-Eq-for-PacketSentTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.PacketSentTrigger.html" title="enum qlog::events::quic::PacketSentTrigger">PacketSentTrigger</a></h3></section><section id="impl-StructuralPartialEq-for-PacketSentTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#260">source</a><a href="#impl-StructuralPartialEq-for-PacketSentTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.PacketSentTrigger.html" title="enum qlog::events::quic::PacketSentTrigger">PacketSentTrigger</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-PacketSentTrigger" class="impl"><a href="#impl-Freeze-for-PacketSentTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.PacketSentTrigger.html" title="enum qlog::events::quic::PacketSentTrigger">PacketSentTrigger</a></h3></section><section id="impl-RefUnwindSafe-for-PacketSentTrigger" class="impl"><a href="#impl-RefUnwindSafe-for-PacketSentTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.PacketSentTrigger.html" title="enum qlog::events::quic::PacketSentTrigger">PacketSentTrigger</a></h3></section><section id="impl-Send-for-PacketSentTrigger" class="impl"><a href="#impl-Send-for-PacketSentTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.PacketSentTrigger.html" title="enum qlog::events::quic::PacketSentTrigger">PacketSentTrigger</a></h3></section><section id="impl-Sync-for-PacketSentTrigger" class="impl"><a href="#impl-Sync-for-PacketSentTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.PacketSentTrigger.html" title="enum qlog::events::quic::PacketSentTrigger">PacketSentTrigger</a></h3></section><section id="impl-Unpin-for-PacketSentTrigger" class="impl"><a href="#impl-Unpin-for-PacketSentTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.PacketSentTrigger.html" title="enum qlog::events::quic::PacketSentTrigger">PacketSentTrigger</a></h3></section><section id="impl-UnwindSafe-for-PacketSentTrigger" class="impl"><a href="#impl-UnwindSafe-for-PacketSentTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.PacketSentTrigger.html" title="enum qlog::events::quic::PacketSentTrigger">PacketSentTrigger</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.PacketType.html b/qlog/events/quic/enum.PacketType.html
new file mode 100644
index 0000000..48426fb
--- /dev/null
+++ b/qlog/events/quic/enum.PacketType.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `PacketType` enum in crate `qlog`."><title>PacketType in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">PacketType</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Handshake">Handshake</a></li><li><a href="#variant.Initial">Initial</a></li><li><a href="#variant.OneRtt">OneRtt</a></li><li><a href="#variant.Retry">Retry</a></li><li><a href="#variant.Unknown">Unknown</a></li><li><a href="#variant.VersionNegotiation">VersionNegotiation</a></li><li><a href="#variant.ZeroRtt">ZeroRtt</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-PacketType">Clone</a></li><li><a href="#impl-Debug-for-PacketType">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-PacketType">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-PacketType">Eq</a></li><li><a href="#impl-PartialEq-for-PacketType">PartialEq</a></li><li><a href="#impl-Serialize-for-PacketType">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-PacketType">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-PacketType">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-PacketType">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PacketType">Send</a></li><li><a href="#impl-Sync-for-PacketType">Sync</a></li><li><a href="#impl-Unpin-for-PacketType">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PacketType">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">PacketType</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#42-55">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum PacketType {
+    Initial,
+    Handshake,
+    ZeroRtt,
+    OneRtt,
+    Retry,
+    VersionNegotiation,
+    Unknown,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Initial" class="variant"><a href="#variant.Initial" class="anchor">§</a><h3 class="code-header">Initial</h3></section><section id="variant.Handshake" class="variant"><a href="#variant.Handshake" class="anchor">§</a><h3 class="code-header">Handshake</h3></section><section id="variant.ZeroRtt" class="variant"><a href="#variant.ZeroRtt" class="anchor">§</a><h3 class="code-header">ZeroRtt</h3></section><section id="variant.OneRtt" class="variant"><a href="#variant.OneRtt" class="anchor">§</a><h3 class="code-header">OneRtt</h3></section><section id="variant.Retry" class="variant"><a href="#variant.Retry" class="anchor">§</a><h3 class="code-header">Retry</h3></section><section id="variant.VersionNegotiation" class="variant"><a href="#variant.VersionNegotiation" class="anchor">§</a><h3 class="code-header">VersionNegotiation</h3></section><section id="variant.Unknown" class="variant"><a href="#variant.Unknown" class="anchor">§</a><h3 class="code-header">Unknown</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PacketType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#40">source</a><a href="#impl-Clone-for-PacketType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#40">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-PacketType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#40">source</a><a href="#impl-Debug-for-PacketType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#40">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-PacketType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#40">source</a><a href="#impl-Deserialize%3C'de%3E-for-PacketType" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#40">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-PacketType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#40">source</a><a href="#impl-PartialEq-for-PacketType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#40">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-PacketType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#40">source</a><a href="#impl-Serialize-for-PacketType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#40">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-PacketType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#40">source</a><a href="#impl-Eq-for-PacketType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a></h3></section><section id="impl-StructuralPartialEq-for-PacketType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#40">source</a><a href="#impl-StructuralPartialEq-for-PacketType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-PacketType" class="impl"><a href="#impl-Freeze-for-PacketType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a></h3></section><section id="impl-RefUnwindSafe-for-PacketType" class="impl"><a href="#impl-RefUnwindSafe-for-PacketType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a></h3></section><section id="impl-Send-for-PacketType" class="impl"><a href="#impl-Send-for-PacketType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a></h3></section><section id="impl-Sync-for-PacketType" class="impl"><a href="#impl-Sync-for-PacketType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a></h3></section><section id="impl-Unpin-for-PacketType" class="impl"><a href="#impl-Unpin-for-PacketType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a></h3></section><section id="impl-UnwindSafe-for-PacketType" class="impl"><a href="#impl-UnwindSafe-for-PacketType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.QuicFrame.html b/qlog/events/quic/enum.QuicFrame.html
new file mode 100644
index 0000000..eb94d87
--- /dev/null
+++ b/qlog/events/quic/enum.QuicFrame.html
@@ -0,0 +1,117 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QuicFrame` enum in crate `qlog`."><title>QuicFrame in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QuicFrame</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Ack">Ack</a></li><li><a href="#variant.ConnectionClose">ConnectionClose</a></li><li><a href="#variant.Crypto">Crypto</a></li><li><a href="#variant.DataBlocked">DataBlocked</a></li><li><a href="#variant.Datagram">Datagram</a></li><li><a href="#variant.HandshakeDone">HandshakeDone</a></li><li><a href="#variant.MaxData">MaxData</a></li><li><a href="#variant.MaxStreamData">MaxStreamData</a></li><li><a href="#variant.MaxStreams">MaxStreams</a></li><li><a href="#variant.NewConnectionId">NewConnectionId</a></li><li><a href="#variant.NewToken">NewToken</a></li><li><a href="#variant.Padding">Padding</a></li><li><a href="#variant.PathChallenge">PathChallenge</a></li><li><a href="#variant.PathResponse">PathResponse</a></li><li><a href="#variant.Ping">Ping</a></li><li><a href="#variant.ResetStream">ResetStream</a></li><li><a href="#variant.RetireConnectionId">RetireConnectionId</a></li><li><a href="#variant.StopSending">StopSending</a></li><li><a href="#variant.Stream">Stream</a></li><li><a href="#variant.StreamDataBlocked">StreamDataBlocked</a></li><li><a href="#variant.StreamsBlocked">StreamsBlocked</a></li><li><a href="#variant.Unknown">Unknown</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QuicFrame">Clone</a></li><li><a href="#impl-Debug-for-QuicFrame">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QuicFrame">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-PartialEq-for-QuicFrame">PartialEq</a></li><li><a href="#impl-Serialize-for-QuicFrame">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QuicFrame">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QuicFrame">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QuicFrame">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QuicFrame">Send</a></li><li><a href="#impl-Sync-for-QuicFrame">Sync</a></li><li><a href="#impl-Unpin-for-QuicFrame">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QuicFrame">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">QuicFrame</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#386-514">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum QuicFrame {
+<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 22 variants</span></summary>    Padding {
+        length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+        payload_length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
+    },
+    Ping {
+        length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+        payload_length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+    },
+    Ack {
+        ack_delay: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;,
+        acked_ranges: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.AckedRanges.html" title="enum qlog::events::quic::AckedRanges">AckedRanges</a>&gt;,
+        ect1: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+        ect0: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+        ce: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+        length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+        payload_length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+    },
+    ResetStream {
+        stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        error_code: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        final_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+        payload_length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+    },
+    StopSending {
+        stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        error_code: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+        payload_length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+    },
+    Crypto {
+        offset: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    },
+    NewToken {
+        token: <a class="struct" href="../../struct.Token.html" title="struct qlog::Token">Token</a>,
+    },
+    Stream {
+        stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        offset: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        fin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;,
+        raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;,
+    },
+    MaxData {
+        maximum: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    },
+    MaxStreamData {
+        stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        maximum: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    },
+    MaxStreams {
+        stream_type: <a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a>,
+        maximum: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    },
+    DataBlocked {
+        limit: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    },
+    StreamDataBlocked {
+        stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        limit: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    },
+    StreamsBlocked {
+        stream_type: <a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a>,
+        limit: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    },
+    NewConnectionId {
+        sequence_number: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
+        retire_prior_to: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
+        connection_id_length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;,
+        connection_id: <a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>,
+        stateless_reset_token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.StatelessResetToken.html" title="type qlog::StatelessResetToken">StatelessResetToken</a>&gt;,
+    },
+    RetireConnectionId {
+        sequence_number: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
+    },
+    PathChallenge {
+        data: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;,
+    },
+    PathResponse {
+        data: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;,
+    },
+    ConnectionClose {
+        error_space: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.ErrorSpace.html" title="enum qlog::events::quic::ErrorSpace">ErrorSpace</a>&gt;,
+        error_code: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+        error_code_value: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+        reason: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+        trigger_frame_type: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    },
+    HandshakeDone,
+    Datagram {
+        length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;,
+    },
+    Unknown {
+        raw_frame_type: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+        frame_type_value: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+        raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;,
+    },
+</details>}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Padding" class="variant"><a href="#variant.Padding" class="anchor">§</a><h3 class="code-header">Padding</h3></section><div class="sub-variant" id="variant.Padding.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Padding.field.length" class="section-header"><a href="#variant.Padding.field.length" class="anchor field">§</a><code>length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.Padding.field.payload_length" class="section-header"><a href="#variant.Padding.field.payload_length" class="anchor field">§</a><code>payload_length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a></code></span></div></div><section id="variant.Ping" class="variant"><a href="#variant.Ping" class="anchor">§</a><h3 class="code-header">Ping</h3></section><div class="sub-variant" id="variant.Ping.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Ping.field.length" class="section-header"><a href="#variant.Ping.field.length" class="anchor field">§</a><code>length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.Ping.field.payload_length" class="section-header"><a href="#variant.Ping.field.payload_length" class="anchor field">§</a><code>payload_length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span></div></div><section id="variant.Ack" class="variant"><a href="#variant.Ack" class="anchor">§</a><h3 class="code-header">Ack</h3></section><div class="sub-variant" id="variant.Ack.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Ack.field.ack_delay" class="section-header"><a href="#variant.Ack.field.ack_delay" class="anchor field">§</a><code>ack_delay: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.Ack.field.acked_ranges" class="section-header"><a href="#variant.Ack.field.acked_ranges" class="anchor field">§</a><code>acked_ranges: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.AckedRanges.html" title="enum qlog::events::quic::AckedRanges">AckedRanges</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.Ack.field.ect1" class="section-header"><a href="#variant.Ack.field.ect1" class="anchor field">§</a><code>ect1: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.Ack.field.ect0" class="section-header"><a href="#variant.Ack.field.ect0" class="anchor field">§</a><code>ect0: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.Ack.field.ce" class="section-header"><a href="#variant.Ack.field.ce" class="anchor field">§</a><code>ce: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.Ack.field.length" class="section-header"><a href="#variant.Ack.field.length" class="anchor field">§</a><code>length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.Ack.field.payload_length" class="section-header"><a href="#variant.Ack.field.payload_length" class="anchor field">§</a><code>payload_length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span></div></div><section id="variant.ResetStream" class="variant"><a href="#variant.ResetStream" class="anchor">§</a><h3 class="code-header">ResetStream</h3></section><div class="sub-variant" id="variant.ResetStream.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.ResetStream.field.stream_id" class="section-header"><a href="#variant.ResetStream.field.stream_id" class="anchor field">§</a><code>stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.ResetStream.field.error_code" class="section-header"><a href="#variant.ResetStream.field.error_code" class="anchor field">§</a><code>error_code: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.ResetStream.field.final_size" class="section-header"><a href="#variant.ResetStream.field.final_size" class="anchor field">§</a><code>final_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.ResetStream.field.length" class="section-header"><a href="#variant.ResetStream.field.length" class="anchor field">§</a><code>length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.ResetStream.field.payload_length" class="section-header"><a href="#variant.ResetStream.field.payload_length" class="anchor field">§</a><code>payload_length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span></div></div><section id="variant.StopSending" class="variant"><a href="#variant.StopSending" class="anchor">§</a><h3 class="code-header">StopSending</h3></section><div class="sub-variant" id="variant.StopSending.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.StopSending.field.stream_id" class="section-header"><a href="#variant.StopSending.field.stream_id" class="anchor field">§</a><code>stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.StopSending.field.error_code" class="section-header"><a href="#variant.StopSending.field.error_code" class="anchor field">§</a><code>error_code: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.StopSending.field.length" class="section-header"><a href="#variant.StopSending.field.length" class="anchor field">§</a><code>length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.StopSending.field.payload_length" class="section-header"><a href="#variant.StopSending.field.payload_length" class="anchor field">§</a><code>payload_length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span></div></div><section id="variant.Crypto" class="variant"><a href="#variant.Crypto" class="anchor">§</a><h3 class="code-header">Crypto</h3></section><div class="sub-variant" id="variant.Crypto.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Crypto.field.offset" class="section-header"><a href="#variant.Crypto.field.offset" class="anchor field">§</a><code>offset: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.Crypto.field.length" class="section-header"><a href="#variant.Crypto.field.length" class="anchor field">§</a><code>length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div></div><section id="variant.NewToken" class="variant"><a href="#variant.NewToken" class="anchor">§</a><h3 class="code-header">NewToken</h3></section><div class="sub-variant" id="variant.NewToken.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.NewToken.field.token" class="section-header"><a href="#variant.NewToken.field.token" class="anchor field">§</a><code>token: <a class="struct" href="../../struct.Token.html" title="struct qlog::Token">Token</a></code></span></div></div><section id="variant.Stream" class="variant"><a href="#variant.Stream" class="anchor">§</a><h3 class="code-header">Stream</h3></section><div class="sub-variant" id="variant.Stream.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Stream.field.stream_id" class="section-header"><a href="#variant.Stream.field.stream_id" class="anchor field">§</a><code>stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.Stream.field.offset" class="section-header"><a href="#variant.Stream.field.offset" class="anchor field">§</a><code>offset: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.Stream.field.length" class="section-header"><a href="#variant.Stream.field.length" class="anchor field">§</a><code>length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.Stream.field.fin" class="section-header"><a href="#variant.Stream.field.fin" class="anchor field">§</a><code>fin: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.Stream.field.raw" class="section-header"><a href="#variant.Stream.field.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;</code></span></div></div><section id="variant.MaxData" class="variant"><a href="#variant.MaxData" class="anchor">§</a><h3 class="code-header">MaxData</h3></section><div class="sub-variant" id="variant.MaxData.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.MaxData.field.maximum" class="section-header"><a href="#variant.MaxData.field.maximum" class="anchor field">§</a><code>maximum: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div></div><section id="variant.MaxStreamData" class="variant"><a href="#variant.MaxStreamData" class="anchor">§</a><h3 class="code-header">MaxStreamData</h3></section><div class="sub-variant" id="variant.MaxStreamData.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.MaxStreamData.field.stream_id" class="section-header"><a href="#variant.MaxStreamData.field.stream_id" class="anchor field">§</a><code>stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.MaxStreamData.field.maximum" class="section-header"><a href="#variant.MaxStreamData.field.maximum" class="anchor field">§</a><code>maximum: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div></div><section id="variant.MaxStreams" class="variant"><a href="#variant.MaxStreams" class="anchor">§</a><h3 class="code-header">MaxStreams</h3></section><div class="sub-variant" id="variant.MaxStreams.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.MaxStreams.field.stream_type" class="section-header"><a href="#variant.MaxStreams.field.stream_type" class="anchor field">§</a><code>stream_type: <a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a></code></span></div><div class="sub-variant-field"><span id="variant.MaxStreams.field.maximum" class="section-header"><a href="#variant.MaxStreams.field.maximum" class="anchor field">§</a><code>maximum: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div></div><section id="variant.DataBlocked" class="variant"><a href="#variant.DataBlocked" class="anchor">§</a><h3 class="code-header">DataBlocked</h3></section><div class="sub-variant" id="variant.DataBlocked.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.DataBlocked.field.limit" class="section-header"><a href="#variant.DataBlocked.field.limit" class="anchor field">§</a><code>limit: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div></div><section id="variant.StreamDataBlocked" class="variant"><a href="#variant.StreamDataBlocked" class="anchor">§</a><h3 class="code-header">StreamDataBlocked</h3></section><div class="sub-variant" id="variant.StreamDataBlocked.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.StreamDataBlocked.field.stream_id" class="section-header"><a href="#variant.StreamDataBlocked.field.stream_id" class="anchor field">§</a><code>stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.StreamDataBlocked.field.limit" class="section-header"><a href="#variant.StreamDataBlocked.field.limit" class="anchor field">§</a><code>limit: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div></div><section id="variant.StreamsBlocked" class="variant"><a href="#variant.StreamsBlocked" class="anchor">§</a><h3 class="code-header">StreamsBlocked</h3></section><div class="sub-variant" id="variant.StreamsBlocked.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.StreamsBlocked.field.stream_type" class="section-header"><a href="#variant.StreamsBlocked.field.stream_type" class="anchor field">§</a><code>stream_type: <a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a></code></span></div><div class="sub-variant-field"><span id="variant.StreamsBlocked.field.limit" class="section-header"><a href="#variant.StreamsBlocked.field.limit" class="anchor field">§</a><code>limit: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div></div><section id="variant.NewConnectionId" class="variant"><a href="#variant.NewConnectionId" class="anchor">§</a><h3 class="code-header">NewConnectionId</h3></section><div class="sub-variant" id="variant.NewConnectionId.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.NewConnectionId.field.sequence_number" class="section-header"><a href="#variant.NewConnectionId.field.sequence_number" class="anchor field">§</a><code>sequence_number: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a></code></span></div><div class="sub-variant-field"><span id="variant.NewConnectionId.field.retire_prior_to" class="section-header"><a href="#variant.NewConnectionId.field.retire_prior_to" class="anchor field">§</a><code>retire_prior_to: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a></code></span></div><div class="sub-variant-field"><span id="variant.NewConnectionId.field.connection_id_length" class="section-header"><a href="#variant.NewConnectionId.field.connection_id_length" class="anchor field">§</a><code>connection_id_length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.NewConnectionId.field.connection_id" class="section-header"><a href="#variant.NewConnectionId.field.connection_id" class="anchor field">§</a><code>connection_id: <a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a></code></span></div><div class="sub-variant-field"><span id="variant.NewConnectionId.field.stateless_reset_token" class="section-header"><a href="#variant.NewConnectionId.field.stateless_reset_token" class="anchor field">§</a><code>stateless_reset_token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.StatelessResetToken.html" title="type qlog::StatelessResetToken">StatelessResetToken</a>&gt;</code></span></div></div><section id="variant.RetireConnectionId" class="variant"><a href="#variant.RetireConnectionId" class="anchor">§</a><h3 class="code-header">RetireConnectionId</h3></section><div class="sub-variant" id="variant.RetireConnectionId.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.RetireConnectionId.field.sequence_number" class="section-header"><a href="#variant.RetireConnectionId.field.sequence_number" class="anchor field">§</a><code>sequence_number: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a></code></span></div></div><section id="variant.PathChallenge" class="variant"><a href="#variant.PathChallenge" class="anchor">§</a><h3 class="code-header">PathChallenge</h3></section><div class="sub-variant" id="variant.PathChallenge.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.PathChallenge.field.data" class="section-header"><a href="#variant.PathChallenge.field.data" class="anchor field">§</a><code>data: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;</code></span></div></div><section id="variant.PathResponse" class="variant"><a href="#variant.PathResponse" class="anchor">§</a><h3 class="code-header">PathResponse</h3></section><div class="sub-variant" id="variant.PathResponse.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.PathResponse.field.data" class="section-header"><a href="#variant.PathResponse.field.data" class="anchor field">§</a><code>data: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;</code></span></div></div><section id="variant.ConnectionClose" class="variant"><a href="#variant.ConnectionClose" class="anchor">§</a><h3 class="code-header">ConnectionClose</h3></section><div class="sub-variant" id="variant.ConnectionClose.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.ConnectionClose.field.error_space" class="section-header"><a href="#variant.ConnectionClose.field.error_space" class="anchor field">§</a><code>error_space: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.ErrorSpace.html" title="enum qlog::events::quic::ErrorSpace">ErrorSpace</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.ConnectionClose.field.error_code" class="section-header"><a href="#variant.ConnectionClose.field.error_code" class="anchor field">§</a><code>error_code: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.ConnectionClose.field.error_code_value" class="section-header"><a href="#variant.ConnectionClose.field.error_code_value" class="anchor field">§</a><code>error_code_value: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.ConnectionClose.field.reason" class="section-header"><a href="#variant.ConnectionClose.field.reason" class="anchor field">§</a><code>reason: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.ConnectionClose.field.trigger_frame_type" class="section-header"><a href="#variant.ConnectionClose.field.trigger_frame_type" class="anchor field">§</a><code>trigger_frame_type: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span></div></div><section id="variant.HandshakeDone" class="variant"><a href="#variant.HandshakeDone" class="anchor">§</a><h3 class="code-header">HandshakeDone</h3></section><section id="variant.Datagram" class="variant"><a href="#variant.Datagram" class="anchor">§</a><h3 class="code-header">Datagram</h3></section><div class="sub-variant" id="variant.Datagram.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Datagram.field.length" class="section-header"><a href="#variant.Datagram.field.length" class="anchor field">§</a><code>length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.Datagram.field.raw" class="section-header"><a href="#variant.Datagram.field.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;</code></span></div></div><section id="variant.Unknown" class="variant"><a href="#variant.Unknown" class="anchor">§</a><h3 class="code-header">Unknown</h3></section><div class="sub-variant" id="variant.Unknown.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Unknown.field.raw_frame_type" class="section-header"><a href="#variant.Unknown.field.raw_frame_type" class="anchor field">§</a><code>raw_frame_type: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></div><div class="sub-variant-field"><span id="variant.Unknown.field.frame_type_value" class="section-header"><a href="#variant.Unknown.field.frame_type_value" class="anchor field">§</a><code>frame_type_value: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span></div><div class="sub-variant-field"><span id="variant.Unknown.field.raw" class="section-header"><a href="#variant.Unknown.field.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;</code></span></div></div></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QuicFrame" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#379">source</a><a href="#impl-Clone-for-QuicFrame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#379">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QuicFrame" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#379">source</a><a href="#impl-Debug-for-QuicFrame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#379">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QuicFrame" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#379">source</a><a href="#impl-Deserialize%3C'de%3E-for-QuicFrame" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#379">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QuicFrame" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#379">source</a><a href="#impl-PartialEq-for-QuicFrame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#379">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QuicFrame" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#379">source</a><a href="#impl-Serialize-for-QuicFrame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#379">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-StructuralPartialEq-for-QuicFrame" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#379">source</a><a href="#impl-StructuralPartialEq-for-QuicFrame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QuicFrame" class="impl"><a href="#impl-Freeze-for-QuicFrame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a></h3></section><section id="impl-RefUnwindSafe-for-QuicFrame" class="impl"><a href="#impl-RefUnwindSafe-for-QuicFrame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a></h3></section><section id="impl-Send-for-QuicFrame" class="impl"><a href="#impl-Send-for-QuicFrame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a></h3></section><section id="impl-Sync-for-QuicFrame" class="impl"><a href="#impl-Sync-for-QuicFrame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a></h3></section><section id="impl-Unpin-for-QuicFrame" class="impl"><a href="#impl-Unpin-for-QuicFrame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a></h3></section><section id="impl-UnwindSafe-for-QuicFrame" class="impl"><a href="#impl-UnwindSafe-for-QuicFrame" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.QuicFrameTypeName.html b/qlog/events/quic/enum.QuicFrameTypeName.html
new file mode 100644
index 0000000..a92b231
--- /dev/null
+++ b/qlog/events/quic/enum.QuicFrameTypeName.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QuicFrameTypeName` enum in crate `qlog`."><title>QuicFrameTypeName in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QuicFrameTypeName</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Ack">Ack</a></li><li><a href="#variant.ApplicationClose">ApplicationClose</a></li><li><a href="#variant.ConnectionClose">ConnectionClose</a></li><li><a href="#variant.Crypto">Crypto</a></li><li><a href="#variant.DataBlocked">DataBlocked</a></li><li><a href="#variant.Datagram">Datagram</a></li><li><a href="#variant.HandshakeDone">HandshakeDone</a></li><li><a href="#variant.MaxData">MaxData</a></li><li><a href="#variant.MaxStreamData">MaxStreamData</a></li><li><a href="#variant.MaxStreams">MaxStreams</a></li><li><a href="#variant.NewConnectionId">NewConnectionId</a></li><li><a href="#variant.NewToken">NewToken</a></li><li><a href="#variant.Padding">Padding</a></li><li><a href="#variant.PathChallenge">PathChallenge</a></li><li><a href="#variant.PathResponse">PathResponse</a></li><li><a href="#variant.Ping">Ping</a></li><li><a href="#variant.ResetStream">ResetStream</a></li><li><a href="#variant.RetireConnectionId">RetireConnectionId</a></li><li><a href="#variant.StopSending">StopSending</a></li><li><a href="#variant.Stream">Stream</a></li><li><a href="#variant.StreamDataBlocked">StreamDataBlocked</a></li><li><a href="#variant.StreamsBlocked">StreamsBlocked</a></li><li><a href="#variant.Unknown">Unknown</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QuicFrameTypeName">Clone</a></li><li><a href="#impl-Debug-for-QuicFrameTypeName">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QuicFrameTypeName">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-QuicFrameTypeName">Eq</a></li><li><a href="#impl-PartialEq-for-QuicFrameTypeName">PartialEq</a></li><li><a href="#impl-Serialize-for-QuicFrameTypeName">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-QuicFrameTypeName">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QuicFrameTypeName">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QuicFrameTypeName">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QuicFrameTypeName">Send</a></li><li><a href="#impl-Sync-for-QuicFrameTypeName">Sync</a></li><li><a href="#impl-Unpin-for-QuicFrameTypeName">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QuicFrameTypeName">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">QuicFrameTypeName</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#352-376">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum QuicFrameTypeName {
+<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 23 variants</span></summary>    Padding,
+    Ping,
+    Ack,
+    ResetStream,
+    StopSending,
+    Crypto,
+    NewToken,
+    Stream,
+    MaxData,
+    MaxStreamData,
+    MaxStreams,
+    DataBlocked,
+    StreamDataBlocked,
+    StreamsBlocked,
+    NewConnectionId,
+    RetireConnectionId,
+    PathChallenge,
+    PathResponse,
+    ConnectionClose,
+    ApplicationClose,
+    HandshakeDone,
+    Datagram,
+    Unknown,
+</details>}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Padding" class="variant"><a href="#variant.Padding" class="anchor">§</a><h3 class="code-header">Padding</h3></section><section id="variant.Ping" class="variant"><a href="#variant.Ping" class="anchor">§</a><h3 class="code-header">Ping</h3></section><section id="variant.Ack" class="variant"><a href="#variant.Ack" class="anchor">§</a><h3 class="code-header">Ack</h3></section><section id="variant.ResetStream" class="variant"><a href="#variant.ResetStream" class="anchor">§</a><h3 class="code-header">ResetStream</h3></section><section id="variant.StopSending" class="variant"><a href="#variant.StopSending" class="anchor">§</a><h3 class="code-header">StopSending</h3></section><section id="variant.Crypto" class="variant"><a href="#variant.Crypto" class="anchor">§</a><h3 class="code-header">Crypto</h3></section><section id="variant.NewToken" class="variant"><a href="#variant.NewToken" class="anchor">§</a><h3 class="code-header">NewToken</h3></section><section id="variant.Stream" class="variant"><a href="#variant.Stream" class="anchor">§</a><h3 class="code-header">Stream</h3></section><section id="variant.MaxData" class="variant"><a href="#variant.MaxData" class="anchor">§</a><h3 class="code-header">MaxData</h3></section><section id="variant.MaxStreamData" class="variant"><a href="#variant.MaxStreamData" class="anchor">§</a><h3 class="code-header">MaxStreamData</h3></section><section id="variant.MaxStreams" class="variant"><a href="#variant.MaxStreams" class="anchor">§</a><h3 class="code-header">MaxStreams</h3></section><section id="variant.DataBlocked" class="variant"><a href="#variant.DataBlocked" class="anchor">§</a><h3 class="code-header">DataBlocked</h3></section><section id="variant.StreamDataBlocked" class="variant"><a href="#variant.StreamDataBlocked" class="anchor">§</a><h3 class="code-header">StreamDataBlocked</h3></section><section id="variant.StreamsBlocked" class="variant"><a href="#variant.StreamsBlocked" class="anchor">§</a><h3 class="code-header">StreamsBlocked</h3></section><section id="variant.NewConnectionId" class="variant"><a href="#variant.NewConnectionId" class="anchor">§</a><h3 class="code-header">NewConnectionId</h3></section><section id="variant.RetireConnectionId" class="variant"><a href="#variant.RetireConnectionId" class="anchor">§</a><h3 class="code-header">RetireConnectionId</h3></section><section id="variant.PathChallenge" class="variant"><a href="#variant.PathChallenge" class="anchor">§</a><h3 class="code-header">PathChallenge</h3></section><section id="variant.PathResponse" class="variant"><a href="#variant.PathResponse" class="anchor">§</a><h3 class="code-header">PathResponse</h3></section><section id="variant.ConnectionClose" class="variant"><a href="#variant.ConnectionClose" class="anchor">§</a><h3 class="code-header">ConnectionClose</h3></section><section id="variant.ApplicationClose" class="variant"><a href="#variant.ApplicationClose" class="anchor">§</a><h3 class="code-header">ApplicationClose</h3></section><section id="variant.HandshakeDone" class="variant"><a href="#variant.HandshakeDone" class="anchor">§</a><h3 class="code-header">HandshakeDone</h3></section><section id="variant.Datagram" class="variant"><a href="#variant.Datagram" class="anchor">§</a><h3 class="code-header">Datagram</h3></section><section id="variant.Unknown" class="variant"><a href="#variant.Unknown" class="anchor">§</a><h3 class="code-header">Unknown</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QuicFrameTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#350">source</a><a href="#impl-Clone-for-QuicFrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.QuicFrameTypeName.html" title="enum qlog::events::quic::QuicFrameTypeName">QuicFrameTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#350">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.QuicFrameTypeName.html" title="enum qlog::events::quic::QuicFrameTypeName">QuicFrameTypeName</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QuicFrameTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#350">source</a><a href="#impl-Debug-for-QuicFrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.QuicFrameTypeName.html" title="enum qlog::events::quic::QuicFrameTypeName">QuicFrameTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#350">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QuicFrameTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#350">source</a><a href="#impl-Deserialize%3C'de%3E-for-QuicFrameTypeName" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.QuicFrameTypeName.html" title="enum qlog::events::quic::QuicFrameTypeName">QuicFrameTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#350">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-QuicFrameTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#350">source</a><a href="#impl-PartialEq-for-QuicFrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.QuicFrameTypeName.html" title="enum qlog::events::quic::QuicFrameTypeName">QuicFrameTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#350">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.QuicFrameTypeName.html" title="enum qlog::events::quic::QuicFrameTypeName">QuicFrameTypeName</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QuicFrameTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#350">source</a><a href="#impl-Serialize-for-QuicFrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.QuicFrameTypeName.html" title="enum qlog::events::quic::QuicFrameTypeName">QuicFrameTypeName</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#350">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-QuicFrameTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#350">source</a><a href="#impl-Eq-for-QuicFrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.QuicFrameTypeName.html" title="enum qlog::events::quic::QuicFrameTypeName">QuicFrameTypeName</a></h3></section><section id="impl-StructuralPartialEq-for-QuicFrameTypeName" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#350">source</a><a href="#impl-StructuralPartialEq-for-QuicFrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.QuicFrameTypeName.html" title="enum qlog::events::quic::QuicFrameTypeName">QuicFrameTypeName</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QuicFrameTypeName" class="impl"><a href="#impl-Freeze-for-QuicFrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.QuicFrameTypeName.html" title="enum qlog::events::quic::QuicFrameTypeName">QuicFrameTypeName</a></h3></section><section id="impl-RefUnwindSafe-for-QuicFrameTypeName" class="impl"><a href="#impl-RefUnwindSafe-for-QuicFrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.QuicFrameTypeName.html" title="enum qlog::events::quic::QuicFrameTypeName">QuicFrameTypeName</a></h3></section><section id="impl-Send-for-QuicFrameTypeName" class="impl"><a href="#impl-Send-for-QuicFrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.QuicFrameTypeName.html" title="enum qlog::events::quic::QuicFrameTypeName">QuicFrameTypeName</a></h3></section><section id="impl-Sync-for-QuicFrameTypeName" class="impl"><a href="#impl-Sync-for-QuicFrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.QuicFrameTypeName.html" title="enum qlog::events::quic::QuicFrameTypeName">QuicFrameTypeName</a></h3></section><section id="impl-Unpin-for-QuicFrameTypeName" class="impl"><a href="#impl-Unpin-for-QuicFrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.QuicFrameTypeName.html" title="enum qlog::events::quic::QuicFrameTypeName">QuicFrameTypeName</a></h3></section><section id="impl-UnwindSafe-for-QuicFrameTypeName" class="impl"><a href="#impl-UnwindSafe-for-QuicFrameTypeName" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.QuicFrameTypeName.html" title="enum qlog::events::quic::QuicFrameTypeName">QuicFrameTypeName</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.RecoveryEventType.html b/qlog/events/quic/enum.RecoveryEventType.html
new file mode 100644
index 0000000..fe39652
--- /dev/null
+++ b/qlog/events/quic/enum.RecoveryEventType.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `RecoveryEventType` enum in crate `qlog`."><title>RecoveryEventType in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">RecoveryEventType</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.CongestionStateUpdated">CongestionStateUpdated</a></li><li><a href="#variant.LossTimerUpdated">LossTimerUpdated</a></li><li><a href="#variant.MarkedForRetransmit">MarkedForRetransmit</a></li><li><a href="#variant.MetricsUpdated">MetricsUpdated</a></li><li><a href="#variant.PacketLost">PacketLost</a></li><li><a href="#variant.ParametersSet">ParametersSet</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-RecoveryEventType">Clone</a></li><li><a href="#impl-Copy-for-RecoveryEventType">Copy</a></li><li><a href="#impl-Debug-for-RecoveryEventType">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-RecoveryEventType">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-RecoveryEventType">Eq</a></li><li><a href="#impl-PartialEq-for-RecoveryEventType">PartialEq</a></li><li><a href="#impl-Serialize-for-RecoveryEventType">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-RecoveryEventType">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-RecoveryEventType">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-RecoveryEventType">RefUnwindSafe</a></li><li><a href="#impl-Send-for-RecoveryEventType">Send</a></li><li><a href="#impl-Sync-for-RecoveryEventType">Sync</a></li><li><a href="#impl-Unpin-for-RecoveryEventType">Unpin</a></li><li><a href="#impl-UnwindSafe-for-RecoveryEventType">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">RecoveryEventType</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#304-311">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum RecoveryEventType {
+    ParametersSet,
+    MetricsUpdated,
+    CongestionStateUpdated,
+    LossTimerUpdated,
+    PacketLost,
+    MarkedForRetransmit,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.ParametersSet" class="variant"><a href="#variant.ParametersSet" class="anchor">§</a><h3 class="code-header">ParametersSet</h3></section><section id="variant.MetricsUpdated" class="variant"><a href="#variant.MetricsUpdated" class="anchor">§</a><h3 class="code-header">MetricsUpdated</h3></section><section id="variant.CongestionStateUpdated" class="variant"><a href="#variant.CongestionStateUpdated" class="anchor">§</a><h3 class="code-header">CongestionStateUpdated</h3></section><section id="variant.LossTimerUpdated" class="variant"><a href="#variant.LossTimerUpdated" class="anchor">§</a><h3 class="code-header">LossTimerUpdated</h3></section><section id="variant.PacketLost" class="variant"><a href="#variant.PacketLost" class="anchor">§</a><h3 class="code-header">PacketLost</h3></section><section id="variant.MarkedForRetransmit" class="variant"><a href="#variant.MarkedForRetransmit" class="anchor">§</a><h3 class="code-header">MarkedForRetransmit</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-RecoveryEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#302">source</a><a href="#impl-Clone-for-RecoveryEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.RecoveryEventType.html" title="enum qlog::events::quic::RecoveryEventType">RecoveryEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#302">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.RecoveryEventType.html" title="enum qlog::events::quic::RecoveryEventType">RecoveryEventType</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-RecoveryEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#302">source</a><a href="#impl-Debug-for-RecoveryEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.RecoveryEventType.html" title="enum qlog::events::quic::RecoveryEventType">RecoveryEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#302">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-RecoveryEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#302">source</a><a href="#impl-Deserialize%3C'de%3E-for-RecoveryEventType" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.RecoveryEventType.html" title="enum qlog::events::quic::RecoveryEventType">RecoveryEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#302">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-RecoveryEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#302">source</a><a href="#impl-PartialEq-for-RecoveryEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.RecoveryEventType.html" title="enum qlog::events::quic::RecoveryEventType">RecoveryEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#302">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.RecoveryEventType.html" title="enum qlog::events::quic::RecoveryEventType">RecoveryEventType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-RecoveryEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#302">source</a><a href="#impl-Serialize-for-RecoveryEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.RecoveryEventType.html" title="enum qlog::events::quic::RecoveryEventType">RecoveryEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#302">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-RecoveryEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#302">source</a><a href="#impl-Copy-for-RecoveryEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.RecoveryEventType.html" title="enum qlog::events::quic::RecoveryEventType">RecoveryEventType</a></h3></section><section id="impl-Eq-for-RecoveryEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#302">source</a><a href="#impl-Eq-for-RecoveryEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.RecoveryEventType.html" title="enum qlog::events::quic::RecoveryEventType">RecoveryEventType</a></h3></section><section id="impl-StructuralPartialEq-for-RecoveryEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#302">source</a><a href="#impl-StructuralPartialEq-for-RecoveryEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.RecoveryEventType.html" title="enum qlog::events::quic::RecoveryEventType">RecoveryEventType</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-RecoveryEventType" class="impl"><a href="#impl-Freeze-for-RecoveryEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.RecoveryEventType.html" title="enum qlog::events::quic::RecoveryEventType">RecoveryEventType</a></h3></section><section id="impl-RefUnwindSafe-for-RecoveryEventType" class="impl"><a href="#impl-RefUnwindSafe-for-RecoveryEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.RecoveryEventType.html" title="enum qlog::events::quic::RecoveryEventType">RecoveryEventType</a></h3></section><section id="impl-Send-for-RecoveryEventType" class="impl"><a href="#impl-Send-for-RecoveryEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.RecoveryEventType.html" title="enum qlog::events::quic::RecoveryEventType">RecoveryEventType</a></h3></section><section id="impl-Sync-for-RecoveryEventType" class="impl"><a href="#impl-Sync-for-RecoveryEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.RecoveryEventType.html" title="enum qlog::events::quic::RecoveryEventType">RecoveryEventType</a></h3></section><section id="impl-Unpin-for-RecoveryEventType" class="impl"><a href="#impl-Unpin-for-RecoveryEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.RecoveryEventType.html" title="enum qlog::events::quic::RecoveryEventType">RecoveryEventType</a></h3></section><section id="impl-UnwindSafe-for-RecoveryEventType" class="impl"><a href="#impl-UnwindSafe-for-RecoveryEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.RecoveryEventType.html" title="enum qlog::events::quic::RecoveryEventType">RecoveryEventType</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.SecurityEventType.html b/qlog/events/quic/enum.SecurityEventType.html
new file mode 100644
index 0000000..8aae49f
--- /dev/null
+++ b/qlog/events/quic/enum.SecurityEventType.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `SecurityEventType` enum in crate `qlog`."><title>SecurityEventType in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">SecurityEventType</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.KeyDiscarded">KeyDiscarded</a></li><li><a href="#variant.KeyUpdated">KeyUpdated</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-SecurityEventType">Clone</a></li><li><a href="#impl-Copy-for-SecurityEventType">Copy</a></li><li><a href="#impl-Debug-for-SecurityEventType">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-SecurityEventType">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-SecurityEventType">Eq</a></li><li><a href="#impl-PartialEq-for-SecurityEventType">PartialEq</a></li><li><a href="#impl-Serialize-for-SecurityEventType">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-SecurityEventType">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-SecurityEventType">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-SecurityEventType">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SecurityEventType">Send</a></li><li><a href="#impl-Sync-for-SecurityEventType">Sync</a></li><li><a href="#impl-Unpin-for-SecurityEventType">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SecurityEventType">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">SecurityEventType</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#297-300">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum SecurityEventType {
+    KeyUpdated,
+    KeyDiscarded,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.KeyUpdated" class="variant"><a href="#variant.KeyUpdated" class="anchor">§</a><h3 class="code-header">KeyUpdated</h3></section><section id="variant.KeyDiscarded" class="variant"><a href="#variant.KeyDiscarded" class="anchor">§</a><h3 class="code-header">KeyDiscarded</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-SecurityEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#295">source</a><a href="#impl-Clone-for-SecurityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.SecurityEventType.html" title="enum qlog::events::quic::SecurityEventType">SecurityEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#295">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.SecurityEventType.html" title="enum qlog::events::quic::SecurityEventType">SecurityEventType</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-SecurityEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#295">source</a><a href="#impl-Debug-for-SecurityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.SecurityEventType.html" title="enum qlog::events::quic::SecurityEventType">SecurityEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#295">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-SecurityEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#295">source</a><a href="#impl-Deserialize%3C'de%3E-for-SecurityEventType" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.SecurityEventType.html" title="enum qlog::events::quic::SecurityEventType">SecurityEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#295">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-SecurityEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#295">source</a><a href="#impl-PartialEq-for-SecurityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.SecurityEventType.html" title="enum qlog::events::quic::SecurityEventType">SecurityEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#295">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.SecurityEventType.html" title="enum qlog::events::quic::SecurityEventType">SecurityEventType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-SecurityEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#295">source</a><a href="#impl-Serialize-for-SecurityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.SecurityEventType.html" title="enum qlog::events::quic::SecurityEventType">SecurityEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#295">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-SecurityEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#295">source</a><a href="#impl-Copy-for-SecurityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.SecurityEventType.html" title="enum qlog::events::quic::SecurityEventType">SecurityEventType</a></h3></section><section id="impl-Eq-for-SecurityEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#295">source</a><a href="#impl-Eq-for-SecurityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.SecurityEventType.html" title="enum qlog::events::quic::SecurityEventType">SecurityEventType</a></h3></section><section id="impl-StructuralPartialEq-for-SecurityEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#295">source</a><a href="#impl-StructuralPartialEq-for-SecurityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.SecurityEventType.html" title="enum qlog::events::quic::SecurityEventType">SecurityEventType</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-SecurityEventType" class="impl"><a href="#impl-Freeze-for-SecurityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.SecurityEventType.html" title="enum qlog::events::quic::SecurityEventType">SecurityEventType</a></h3></section><section id="impl-RefUnwindSafe-for-SecurityEventType" class="impl"><a href="#impl-RefUnwindSafe-for-SecurityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.SecurityEventType.html" title="enum qlog::events::quic::SecurityEventType">SecurityEventType</a></h3></section><section id="impl-Send-for-SecurityEventType" class="impl"><a href="#impl-Send-for-SecurityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.SecurityEventType.html" title="enum qlog::events::quic::SecurityEventType">SecurityEventType</a></h3></section><section id="impl-Sync-for-SecurityEventType" class="impl"><a href="#impl-Sync-for-SecurityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.SecurityEventType.html" title="enum qlog::events::quic::SecurityEventType">SecurityEventType</a></h3></section><section id="impl-Unpin-for-SecurityEventType" class="impl"><a href="#impl-Unpin-for-SecurityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.SecurityEventType.html" title="enum qlog::events::quic::SecurityEventType">SecurityEventType</a></h3></section><section id="impl-UnwindSafe-for-SecurityEventType" class="impl"><a href="#impl-UnwindSafe-for-SecurityEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.SecurityEventType.html" title="enum qlog::events::quic::SecurityEventType">SecurityEventType</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.StreamSide.html b/qlog/events/quic/enum.StreamSide.html
new file mode 100644
index 0000000..15375c7
--- /dev/null
+++ b/qlog/events/quic/enum.StreamSide.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `StreamSide` enum in crate `qlog`."><title>StreamSide in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">StreamSide</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Receiving">Receiving</a></li><li><a href="#variant.Sending">Sending</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-StreamSide">Clone</a></li><li><a href="#impl-Debug-for-StreamSide">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-StreamSide">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-StreamSide">Eq</a></li><li><a href="#impl-PartialEq-for-StreamSide">PartialEq</a></li><li><a href="#impl-Serialize-for-StreamSide">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-StreamSide">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-StreamSide">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-StreamSide">RefUnwindSafe</a></li><li><a href="#impl-Send-for-StreamSide">Send</a></li><li><a href="#impl-Sync-for-StreamSide">Sync</a></li><li><a href="#impl-Unpin-for-StreamSide">Unpin</a></li><li><a href="#impl-UnwindSafe-for-StreamSide">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">StreamSide</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#170-173">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum StreamSide {
+    Sending,
+    Receiving,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Sending" class="variant"><a href="#variant.Sending" class="anchor">§</a><h3 class="code-header">Sending</h3></section><section id="variant.Receiving" class="variant"><a href="#variant.Receiving" class="anchor">§</a><h3 class="code-header">Receiving</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-StreamSide" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#168">source</a><a href="#impl-Clone-for-StreamSide" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.StreamSide.html" title="enum qlog::events::quic::StreamSide">StreamSide</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#168">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.StreamSide.html" title="enum qlog::events::quic::StreamSide">StreamSide</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-StreamSide" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#168">source</a><a href="#impl-Debug-for-StreamSide" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.StreamSide.html" title="enum qlog::events::quic::StreamSide">StreamSide</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#168">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-StreamSide" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#168">source</a><a href="#impl-Deserialize%3C'de%3E-for-StreamSide" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.StreamSide.html" title="enum qlog::events::quic::StreamSide">StreamSide</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#168">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-StreamSide" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#168">source</a><a href="#impl-PartialEq-for-StreamSide" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.StreamSide.html" title="enum qlog::events::quic::StreamSide">StreamSide</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#168">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.StreamSide.html" title="enum qlog::events::quic::StreamSide">StreamSide</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-StreamSide" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#168">source</a><a href="#impl-Serialize-for-StreamSide" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.StreamSide.html" title="enum qlog::events::quic::StreamSide">StreamSide</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#168">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-StreamSide" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#168">source</a><a href="#impl-Eq-for-StreamSide" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.StreamSide.html" title="enum qlog::events::quic::StreamSide">StreamSide</a></h3></section><section id="impl-StructuralPartialEq-for-StreamSide" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#168">source</a><a href="#impl-StructuralPartialEq-for-StreamSide" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.StreamSide.html" title="enum qlog::events::quic::StreamSide">StreamSide</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-StreamSide" class="impl"><a href="#impl-Freeze-for-StreamSide" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.StreamSide.html" title="enum qlog::events::quic::StreamSide">StreamSide</a></h3></section><section id="impl-RefUnwindSafe-for-StreamSide" class="impl"><a href="#impl-RefUnwindSafe-for-StreamSide" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.StreamSide.html" title="enum qlog::events::quic::StreamSide">StreamSide</a></h3></section><section id="impl-Send-for-StreamSide" class="impl"><a href="#impl-Send-for-StreamSide" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.StreamSide.html" title="enum qlog::events::quic::StreamSide">StreamSide</a></h3></section><section id="impl-Sync-for-StreamSide" class="impl"><a href="#impl-Sync-for-StreamSide" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.StreamSide.html" title="enum qlog::events::quic::StreamSide">StreamSide</a></h3></section><section id="impl-Unpin-for-StreamSide" class="impl"><a href="#impl-Unpin-for-StreamSide" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.StreamSide.html" title="enum qlog::events::quic::StreamSide">StreamSide</a></h3></section><section id="impl-UnwindSafe-for-StreamSide" class="impl"><a href="#impl-UnwindSafe-for-StreamSide" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.StreamSide.html" title="enum qlog::events::quic::StreamSide">StreamSide</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.StreamState.html b/qlog/events/quic/enum.StreamState.html
new file mode 100644
index 0000000..a33447f
--- /dev/null
+++ b/qlog/events/quic/enum.StreamState.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `StreamState` enum in crate `qlog`."><title>StreamState in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">StreamState</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Closed">Closed</a></li><li><a href="#variant.DataRead">DataRead</a></li><li><a href="#variant.DataReceived">DataReceived</a></li><li><a href="#variant.DataSent">DataSent</a></li><li><a href="#variant.Destroyed">Destroyed</a></li><li><a href="#variant.HalfClosedLocal">HalfClosedLocal</a></li><li><a href="#variant.HalfClosedRemote">HalfClosedRemote</a></li><li><a href="#variant.Idle">Idle</a></li><li><a href="#variant.Open">Open</a></li><li><a href="#variant.Ready">Ready</a></li><li><a href="#variant.Receive">Receive</a></li><li><a href="#variant.ResetRead">ResetRead</a></li><li><a href="#variant.ResetReceived">ResetReceived</a></li><li><a href="#variant.ResetSent">ResetSent</a></li><li><a href="#variant.Send">Send</a></li><li><a href="#variant.SizeKnown">SizeKnown</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-StreamState">Clone</a></li><li><a href="#impl-Debug-for-StreamState">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-StreamState">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-StreamState">Eq</a></li><li><a href="#impl-PartialEq-for-StreamState">PartialEq</a></li><li><a href="#impl-Serialize-for-StreamState">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-StreamState">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-StreamState">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-StreamState">RefUnwindSafe</a></li><li><a href="#impl-Send-for-StreamState">Send</a></li><li><a href="#impl-Sync-for-StreamState">Sync</a></li><li><a href="#impl-Unpin-for-StreamState">Unpin</a></li><li><a href="#impl-UnwindSafe-for-StreamState">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">StreamState</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#177-203">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum StreamState {
+<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 16 variants</span></summary>    Idle,
+    Open,
+    HalfClosedLocal,
+    HalfClosedRemote,
+    Closed,
+    Ready,
+    Send,
+    DataSent,
+    ResetSent,
+    ResetReceived,
+    Receive,
+    SizeKnown,
+    DataRead,
+    ResetRead,
+    DataReceived,
+    Destroyed,
+</details>}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Idle" class="variant"><a href="#variant.Idle" class="anchor">§</a><h3 class="code-header">Idle</h3></section><section id="variant.Open" class="variant"><a href="#variant.Open" class="anchor">§</a><h3 class="code-header">Open</h3></section><section id="variant.HalfClosedLocal" class="variant"><a href="#variant.HalfClosedLocal" class="anchor">§</a><h3 class="code-header">HalfClosedLocal</h3></section><section id="variant.HalfClosedRemote" class="variant"><a href="#variant.HalfClosedRemote" class="anchor">§</a><h3 class="code-header">HalfClosedRemote</h3></section><section id="variant.Closed" class="variant"><a href="#variant.Closed" class="anchor">§</a><h3 class="code-header">Closed</h3></section><section id="variant.Ready" class="variant"><a href="#variant.Ready" class="anchor">§</a><h3 class="code-header">Ready</h3></section><section id="variant.Send" class="variant"><a href="#variant.Send" class="anchor">§</a><h3 class="code-header">Send</h3></section><section id="variant.DataSent" class="variant"><a href="#variant.DataSent" class="anchor">§</a><h3 class="code-header">DataSent</h3></section><section id="variant.ResetSent" class="variant"><a href="#variant.ResetSent" class="anchor">§</a><h3 class="code-header">ResetSent</h3></section><section id="variant.ResetReceived" class="variant"><a href="#variant.ResetReceived" class="anchor">§</a><h3 class="code-header">ResetReceived</h3></section><section id="variant.Receive" class="variant"><a href="#variant.Receive" class="anchor">§</a><h3 class="code-header">Receive</h3></section><section id="variant.SizeKnown" class="variant"><a href="#variant.SizeKnown" class="anchor">§</a><h3 class="code-header">SizeKnown</h3></section><section id="variant.DataRead" class="variant"><a href="#variant.DataRead" class="anchor">§</a><h3 class="code-header">DataRead</h3></section><section id="variant.ResetRead" class="variant"><a href="#variant.ResetRead" class="anchor">§</a><h3 class="code-header">ResetRead</h3></section><section id="variant.DataReceived" class="variant"><a href="#variant.DataReceived" class="anchor">§</a><h3 class="code-header">DataReceived</h3></section><section id="variant.Destroyed" class="variant"><a href="#variant.Destroyed" class="anchor">§</a><h3 class="code-header">Destroyed</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-StreamState" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#175">source</a><a href="#impl-Clone-for-StreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#175">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-StreamState" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#175">source</a><a href="#impl-Debug-for-StreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#175">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-StreamState" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#175">source</a><a href="#impl-Deserialize%3C'de%3E-for-StreamState" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#175">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-StreamState" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#175">source</a><a href="#impl-PartialEq-for-StreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#175">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-StreamState" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#175">source</a><a href="#impl-Serialize-for-StreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#175">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-StreamState" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#175">source</a><a href="#impl-Eq-for-StreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a></h3></section><section id="impl-StructuralPartialEq-for-StreamState" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#175">source</a><a href="#impl-StructuralPartialEq-for-StreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-StreamState" class="impl"><a href="#impl-Freeze-for-StreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a></h3></section><section id="impl-RefUnwindSafe-for-StreamState" class="impl"><a href="#impl-RefUnwindSafe-for-StreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a></h3></section><section id="impl-Send-for-StreamState" class="impl"><a href="#impl-Send-for-StreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a></h3></section><section id="impl-Sync-for-StreamState" class="impl"><a href="#impl-Sync-for-StreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a></h3></section><section id="impl-Unpin-for-StreamState" class="impl"><a href="#impl-Unpin-for-StreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a></h3></section><section id="impl-UnwindSafe-for-StreamState" class="impl"><a href="#impl-UnwindSafe-for-StreamState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.StreamType.html b/qlog/events/quic/enum.StreamType.html
new file mode 100644
index 0000000..52c7955
--- /dev/null
+++ b/qlog/events/quic/enum.StreamType.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `StreamType` enum in crate `qlog`."><title>StreamType in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">StreamType</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Bidirectional">Bidirectional</a></li><li><a href="#variant.Unidirectional">Unidirectional</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-StreamType">Clone</a></li><li><a href="#impl-Debug-for-StreamType">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-StreamType">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-StreamType">Eq</a></li><li><a href="#impl-PartialEq-for-StreamType">PartialEq</a></li><li><a href="#impl-Serialize-for-StreamType">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-StreamType">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-StreamType">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-StreamType">RefUnwindSafe</a></li><li><a href="#impl-Send-for-StreamType">Send</a></li><li><a href="#impl-Sync-for-StreamType">Sync</a></li><li><a href="#impl-Unpin-for-StreamType">Unpin</a></li><li><a href="#impl-UnwindSafe-for-StreamType">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">StreamType</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#163-166">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum StreamType {
+    Bidirectional,
+    Unidirectional,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Bidirectional" class="variant"><a href="#variant.Bidirectional" class="anchor">§</a><h3 class="code-header">Bidirectional</h3></section><section id="variant.Unidirectional" class="variant"><a href="#variant.Unidirectional" class="anchor">§</a><h3 class="code-header">Unidirectional</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-StreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#161">source</a><a href="#impl-Clone-for-StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#161">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-StreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#161">source</a><a href="#impl-Debug-for-StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#161">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-StreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#161">source</a><a href="#impl-Deserialize%3C'de%3E-for-StreamType" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#161">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-StreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#161">source</a><a href="#impl-PartialEq-for-StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#161">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-StreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#161">source</a><a href="#impl-Serialize-for-StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#161">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-StreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#161">source</a><a href="#impl-Eq-for-StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a></h3></section><section id="impl-StructuralPartialEq-for-StreamType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#161">source</a><a href="#impl-StructuralPartialEq-for-StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-StreamType" class="impl"><a href="#impl-Freeze-for-StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a></h3></section><section id="impl-RefUnwindSafe-for-StreamType" class="impl"><a href="#impl-RefUnwindSafe-for-StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a></h3></section><section id="impl-Send-for-StreamType" class="impl"><a href="#impl-Send-for-StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a></h3></section><section id="impl-Sync-for-StreamType" class="impl"><a href="#impl-Sync-for-StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a></h3></section><section id="impl-Unpin-for-StreamType" class="impl"><a href="#impl-Unpin-for-StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a></h3></section><section id="impl-UnwindSafe-for-StreamType" class="impl"><a href="#impl-UnwindSafe-for-StreamType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.TimerType.html b/qlog/events/quic/enum.TimerType.html
new file mode 100644
index 0000000..2ee5695
--- /dev/null
+++ b/qlog/events/quic/enum.TimerType.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `TimerType` enum in crate `qlog`."><title>TimerType in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">TimerType</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Ack">Ack</a></li><li><a href="#variant.Pto">Pto</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-TimerType">Clone</a></li><li><a href="#impl-Debug-for-TimerType">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-TimerType">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-TimerType">Eq</a></li><li><a href="#impl-PartialEq-for-TimerType">PartialEq</a></li><li><a href="#impl-Serialize-for-TimerType">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-TimerType">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-TimerType">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-TimerType">RefUnwindSafe</a></li><li><a href="#impl-Send-for-TimerType">Send</a></li><li><a href="#impl-Sync-for-TimerType">Sync</a></li><li><a href="#impl-Unpin-for-TimerType">Unpin</a></li><li><a href="#impl-UnwindSafe-for-TimerType">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">TimerType</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#338-341">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum TimerType {
+    Ack,
+    Pto,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Ack" class="variant"><a href="#variant.Ack" class="anchor">§</a><h3 class="code-header">Ack</h3></section><section id="variant.Pto" class="variant"><a href="#variant.Pto" class="anchor">§</a><h3 class="code-header">Pto</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-TimerType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#336">source</a><a href="#impl-Clone-for-TimerType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.TimerType.html" title="enum qlog::events::quic::TimerType">TimerType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#336">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.TimerType.html" title="enum qlog::events::quic::TimerType">TimerType</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-TimerType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#336">source</a><a href="#impl-Debug-for-TimerType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.TimerType.html" title="enum qlog::events::quic::TimerType">TimerType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#336">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-TimerType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#336">source</a><a href="#impl-Deserialize%3C'de%3E-for-TimerType" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.TimerType.html" title="enum qlog::events::quic::TimerType">TimerType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#336">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-TimerType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#336">source</a><a href="#impl-PartialEq-for-TimerType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.TimerType.html" title="enum qlog::events::quic::TimerType">TimerType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#336">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.TimerType.html" title="enum qlog::events::quic::TimerType">TimerType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-TimerType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#336">source</a><a href="#impl-Serialize-for-TimerType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.TimerType.html" title="enum qlog::events::quic::TimerType">TimerType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#336">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-TimerType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#336">source</a><a href="#impl-Eq-for-TimerType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.TimerType.html" title="enum qlog::events::quic::TimerType">TimerType</a></h3></section><section id="impl-StructuralPartialEq-for-TimerType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#336">source</a><a href="#impl-StructuralPartialEq-for-TimerType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.TimerType.html" title="enum qlog::events::quic::TimerType">TimerType</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-TimerType" class="impl"><a href="#impl-Freeze-for-TimerType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.TimerType.html" title="enum qlog::events::quic::TimerType">TimerType</a></h3></section><section id="impl-RefUnwindSafe-for-TimerType" class="impl"><a href="#impl-RefUnwindSafe-for-TimerType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.TimerType.html" title="enum qlog::events::quic::TimerType">TimerType</a></h3></section><section id="impl-Send-for-TimerType" class="impl"><a href="#impl-Send-for-TimerType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.TimerType.html" title="enum qlog::events::quic::TimerType">TimerType</a></h3></section><section id="impl-Sync-for-TimerType" class="impl"><a href="#impl-Sync-for-TimerType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.TimerType.html" title="enum qlog::events::quic::TimerType">TimerType</a></h3></section><section id="impl-Unpin-for-TimerType" class="impl"><a href="#impl-Unpin-for-TimerType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.TimerType.html" title="enum qlog::events::quic::TimerType">TimerType</a></h3></section><section id="impl-UnwindSafe-for-TimerType" class="impl"><a href="#impl-UnwindSafe-for-TimerType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.TimerType.html" title="enum qlog::events::quic::TimerType">TimerType</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.TransportError.html b/qlog/events/quic/enum.TransportError.html
new file mode 100644
index 0000000..ce0cd42
--- /dev/null
+++ b/qlog/events/quic/enum.TransportError.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `TransportError` enum in crate `qlog`."><title>TransportError in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">TransportError</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.AeadLimitReached">AeadLimitReached</a></li><li><a href="#variant.ApplicationError">ApplicationError</a></li><li><a href="#variant.ConnectionIdLimitError">ConnectionIdLimitError</a></li><li><a href="#variant.ConnectionRefused">ConnectionRefused</a></li><li><a href="#variant.CryptoBufferExceeded">CryptoBufferExceeded</a></li><li><a href="#variant.FinalSizeError">FinalSizeError</a></li><li><a href="#variant.FlowControlError">FlowControlError</a></li><li><a href="#variant.FrameEncodingError">FrameEncodingError</a></li><li><a href="#variant.InternalError">InternalError</a></li><li><a href="#variant.InvalidToken">InvalidToken</a></li><li><a href="#variant.KeyUpdateError">KeyUpdateError</a></li><li><a href="#variant.NoError">NoError</a></li><li><a href="#variant.NoViablePath">NoViablePath</a></li><li><a href="#variant.ProtocolViolation">ProtocolViolation</a></li><li><a href="#variant.StreamLimitError">StreamLimitError</a></li><li><a href="#variant.StreamStateError">StreamStateError</a></li><li><a href="#variant.TransportParameterError">TransportParameterError</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-TransportError">Clone</a></li><li><a href="#impl-Debug-for-TransportError">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-TransportError">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-TransportError">Eq</a></li><li><a href="#impl-PartialEq-for-TransportError">PartialEq</a></li><li><a href="#impl-Serialize-for-TransportError">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-TransportError">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-TransportError">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-TransportError">RefUnwindSafe</a></li><li><a href="#impl-Send-for-TransportError">Send</a></li><li><a href="#impl-Sync-for-TransportError">Sync</a></li><li><a href="#impl-Unpin-for-TransportError">Unpin</a></li><li><a href="#impl-UnwindSafe-for-TransportError">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">TransportError</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#214-232">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum TransportError {
+<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 17 variants</span></summary>    NoError,
+    InternalError,
+    ConnectionRefused,
+    FlowControlError,
+    StreamLimitError,
+    StreamStateError,
+    FinalSizeError,
+    FrameEncodingError,
+    TransportParameterError,
+    ConnectionIdLimitError,
+    ProtocolViolation,
+    InvalidToken,
+    ApplicationError,
+    CryptoBufferExceeded,
+    KeyUpdateError,
+    AeadLimitReached,
+    NoViablePath,
+</details>}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.NoError" class="variant"><a href="#variant.NoError" class="anchor">§</a><h3 class="code-header">NoError</h3></section><section id="variant.InternalError" class="variant"><a href="#variant.InternalError" class="anchor">§</a><h3 class="code-header">InternalError</h3></section><section id="variant.ConnectionRefused" class="variant"><a href="#variant.ConnectionRefused" class="anchor">§</a><h3 class="code-header">ConnectionRefused</h3></section><section id="variant.FlowControlError" class="variant"><a href="#variant.FlowControlError" class="anchor">§</a><h3 class="code-header">FlowControlError</h3></section><section id="variant.StreamLimitError" class="variant"><a href="#variant.StreamLimitError" class="anchor">§</a><h3 class="code-header">StreamLimitError</h3></section><section id="variant.StreamStateError" class="variant"><a href="#variant.StreamStateError" class="anchor">§</a><h3 class="code-header">StreamStateError</h3></section><section id="variant.FinalSizeError" class="variant"><a href="#variant.FinalSizeError" class="anchor">§</a><h3 class="code-header">FinalSizeError</h3></section><section id="variant.FrameEncodingError" class="variant"><a href="#variant.FrameEncodingError" class="anchor">§</a><h3 class="code-header">FrameEncodingError</h3></section><section id="variant.TransportParameterError" class="variant"><a href="#variant.TransportParameterError" class="anchor">§</a><h3 class="code-header">TransportParameterError</h3></section><section id="variant.ConnectionIdLimitError" class="variant"><a href="#variant.ConnectionIdLimitError" class="anchor">§</a><h3 class="code-header">ConnectionIdLimitError</h3></section><section id="variant.ProtocolViolation" class="variant"><a href="#variant.ProtocolViolation" class="anchor">§</a><h3 class="code-header">ProtocolViolation</h3></section><section id="variant.InvalidToken" class="variant"><a href="#variant.InvalidToken" class="anchor">§</a><h3 class="code-header">InvalidToken</h3></section><section id="variant.ApplicationError" class="variant"><a href="#variant.ApplicationError" class="anchor">§</a><h3 class="code-header">ApplicationError</h3></section><section id="variant.CryptoBufferExceeded" class="variant"><a href="#variant.CryptoBufferExceeded" class="anchor">§</a><h3 class="code-header">CryptoBufferExceeded</h3></section><section id="variant.KeyUpdateError" class="variant"><a href="#variant.KeyUpdateError" class="anchor">§</a><h3 class="code-header">KeyUpdateError</h3></section><section id="variant.AeadLimitReached" class="variant"><a href="#variant.AeadLimitReached" class="anchor">§</a><h3 class="code-header">AeadLimitReached</h3></section><section id="variant.NoViablePath" class="variant"><a href="#variant.NoViablePath" class="anchor">§</a><h3 class="code-header">NoViablePath</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-TransportError" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#212">source</a><a href="#impl-Clone-for-TransportError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.TransportError.html" title="enum qlog::events::quic::TransportError">TransportError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#212">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.TransportError.html" title="enum qlog::events::quic::TransportError">TransportError</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-TransportError" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#212">source</a><a href="#impl-Debug-for-TransportError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.TransportError.html" title="enum qlog::events::quic::TransportError">TransportError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#212">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-TransportError" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#212">source</a><a href="#impl-Deserialize%3C'de%3E-for-TransportError" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.TransportError.html" title="enum qlog::events::quic::TransportError">TransportError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#212">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-TransportError" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#212">source</a><a href="#impl-PartialEq-for-TransportError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.TransportError.html" title="enum qlog::events::quic::TransportError">TransportError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#212">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.TransportError.html" title="enum qlog::events::quic::TransportError">TransportError</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-TransportError" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#212">source</a><a href="#impl-Serialize-for-TransportError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.TransportError.html" title="enum qlog::events::quic::TransportError">TransportError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#212">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-TransportError" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#212">source</a><a href="#impl-Eq-for-TransportError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.TransportError.html" title="enum qlog::events::quic::TransportError">TransportError</a></h3></section><section id="impl-StructuralPartialEq-for-TransportError" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#212">source</a><a href="#impl-StructuralPartialEq-for-TransportError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.TransportError.html" title="enum qlog::events::quic::TransportError">TransportError</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-TransportError" class="impl"><a href="#impl-Freeze-for-TransportError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.TransportError.html" title="enum qlog::events::quic::TransportError">TransportError</a></h3></section><section id="impl-RefUnwindSafe-for-TransportError" class="impl"><a href="#impl-RefUnwindSafe-for-TransportError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.TransportError.html" title="enum qlog::events::quic::TransportError">TransportError</a></h3></section><section id="impl-Send-for-TransportError" class="impl"><a href="#impl-Send-for-TransportError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.TransportError.html" title="enum qlog::events::quic::TransportError">TransportError</a></h3></section><section id="impl-Sync-for-TransportError" class="impl"><a href="#impl-Sync-for-TransportError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.TransportError.html" title="enum qlog::events::quic::TransportError">TransportError</a></h3></section><section id="impl-Unpin-for-TransportError" class="impl"><a href="#impl-Unpin-for-TransportError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.TransportError.html" title="enum qlog::events::quic::TransportError">TransportError</a></h3></section><section id="impl-UnwindSafe-for-TransportError" class="impl"><a href="#impl-UnwindSafe-for-TransportError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.TransportError.html" title="enum qlog::events::quic::TransportError">TransportError</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/enum.TransportEventType.html b/qlog/events/quic/enum.TransportEventType.html
new file mode 100644
index 0000000..f14ddad
--- /dev/null
+++ b/qlog/events/quic/enum.TransportEventType.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `TransportEventType` enum in crate `qlog`."><title>TransportEventType in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">TransportEventType</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.AlpnInformation">AlpnInformation</a></li><li><a href="#variant.DataMoved">DataMoved</a></li><li><a href="#variant.DatagramDropped">DatagramDropped</a></li><li><a href="#variant.DatagramsReceived">DatagramsReceived</a></li><li><a href="#variant.DatagramsSent">DatagramsSent</a></li><li><a href="#variant.FramesProcessed">FramesProcessed</a></li><li><a href="#variant.PacketBuffered">PacketBuffered</a></li><li><a href="#variant.PacketDropped">PacketDropped</a></li><li><a href="#variant.PacketReceived">PacketReceived</a></li><li><a href="#variant.PacketSent">PacketSent</a></li><li><a href="#variant.PacketsAcked">PacketsAcked</a></li><li><a href="#variant.ParametersRestored">ParametersRestored</a></li><li><a href="#variant.ParametersSet">ParametersSet</a></li><li><a href="#variant.StreamStateUpdated">StreamStateUpdated</a></li><li><a href="#variant.VersionInformation">VersionInformation</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-TransportEventType">Clone</a></li><li><a href="#impl-Copy-for-TransportEventType">Copy</a></li><li><a href="#impl-Debug-for-TransportEventType">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-TransportEventType">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-TransportEventType">Eq</a></li><li><a href="#impl-PartialEq-for-TransportEventType">PartialEq</a></li><li><a href="#impl-Serialize-for-TransportEventType">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-TransportEventType">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-TransportEventType">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-TransportEventType">RefUnwindSafe</a></li><li><a href="#impl-Send-for-TransportEventType">Send</a></li><li><a href="#impl-Sync-for-TransportEventType">Sync</a></li><li><a href="#impl-Unpin-for-TransportEventType">Unpin</a></li><li><a href="#impl-UnwindSafe-for-TransportEventType">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="enum" href="#">TransportEventType</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#236-258">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum TransportEventType {
+<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 15 variants</span></summary>    VersionInformation,
+    AlpnInformation,
+    ParametersSet,
+    ParametersRestored,
+    DatagramsSent,
+    DatagramsReceived,
+    DatagramDropped,
+    PacketSent,
+    PacketReceived,
+    PacketDropped,
+    PacketBuffered,
+    PacketsAcked,
+    FramesProcessed,
+    StreamStateUpdated,
+    DataMoved,
+</details>}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.VersionInformation" class="variant"><a href="#variant.VersionInformation" class="anchor">§</a><h3 class="code-header">VersionInformation</h3></section><section id="variant.AlpnInformation" class="variant"><a href="#variant.AlpnInformation" class="anchor">§</a><h3 class="code-header">AlpnInformation</h3></section><section id="variant.ParametersSet" class="variant"><a href="#variant.ParametersSet" class="anchor">§</a><h3 class="code-header">ParametersSet</h3></section><section id="variant.ParametersRestored" class="variant"><a href="#variant.ParametersRestored" class="anchor">§</a><h3 class="code-header">ParametersRestored</h3></section><section id="variant.DatagramsSent" class="variant"><a href="#variant.DatagramsSent" class="anchor">§</a><h3 class="code-header">DatagramsSent</h3></section><section id="variant.DatagramsReceived" class="variant"><a href="#variant.DatagramsReceived" class="anchor">§</a><h3 class="code-header">DatagramsReceived</h3></section><section id="variant.DatagramDropped" class="variant"><a href="#variant.DatagramDropped" class="anchor">§</a><h3 class="code-header">DatagramDropped</h3></section><section id="variant.PacketSent" class="variant"><a href="#variant.PacketSent" class="anchor">§</a><h3 class="code-header">PacketSent</h3></section><section id="variant.PacketReceived" class="variant"><a href="#variant.PacketReceived" class="anchor">§</a><h3 class="code-header">PacketReceived</h3></section><section id="variant.PacketDropped" class="variant"><a href="#variant.PacketDropped" class="anchor">§</a><h3 class="code-header">PacketDropped</h3></section><section id="variant.PacketBuffered" class="variant"><a href="#variant.PacketBuffered" class="anchor">§</a><h3 class="code-header">PacketBuffered</h3></section><section id="variant.PacketsAcked" class="variant"><a href="#variant.PacketsAcked" class="anchor">§</a><h3 class="code-header">PacketsAcked</h3></section><section id="variant.FramesProcessed" class="variant"><a href="#variant.FramesProcessed" class="anchor">§</a><h3 class="code-header">FramesProcessed</h3></section><section id="variant.StreamStateUpdated" class="variant"><a href="#variant.StreamStateUpdated" class="anchor">§</a><h3 class="code-header">StreamStateUpdated</h3></section><section id="variant.DataMoved" class="variant"><a href="#variant.DataMoved" class="anchor">§</a><h3 class="code-header">DataMoved</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-TransportEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#234">source</a><a href="#impl-Clone-for-TransportEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.TransportEventType.html" title="enum qlog::events::quic::TransportEventType">TransportEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#234">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.TransportEventType.html" title="enum qlog::events::quic::TransportEventType">TransportEventType</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-TransportEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#234">source</a><a href="#impl-Debug-for-TransportEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.TransportEventType.html" title="enum qlog::events::quic::TransportEventType">TransportEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#234">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-TransportEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#234">source</a><a href="#impl-Deserialize%3C'de%3E-for-TransportEventType" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.TransportEventType.html" title="enum qlog::events::quic::TransportEventType">TransportEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#234">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-TransportEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#234">source</a><a href="#impl-PartialEq-for-TransportEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.TransportEventType.html" title="enum qlog::events::quic::TransportEventType">TransportEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#234">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.TransportEventType.html" title="enum qlog::events::quic::TransportEventType">TransportEventType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-TransportEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#234">source</a><a href="#impl-Serialize-for-TransportEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.TransportEventType.html" title="enum qlog::events::quic::TransportEventType">TransportEventType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#234">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-TransportEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#234">source</a><a href="#impl-Copy-for-TransportEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.TransportEventType.html" title="enum qlog::events::quic::TransportEventType">TransportEventType</a></h3></section><section id="impl-Eq-for-TransportEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#234">source</a><a href="#impl-Eq-for-TransportEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.TransportEventType.html" title="enum qlog::events::quic::TransportEventType">TransportEventType</a></h3></section><section id="impl-StructuralPartialEq-for-TransportEventType" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#234">source</a><a href="#impl-StructuralPartialEq-for-TransportEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.TransportEventType.html" title="enum qlog::events::quic::TransportEventType">TransportEventType</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-TransportEventType" class="impl"><a href="#impl-Freeze-for-TransportEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.TransportEventType.html" title="enum qlog::events::quic::TransportEventType">TransportEventType</a></h3></section><section id="impl-RefUnwindSafe-for-TransportEventType" class="impl"><a href="#impl-RefUnwindSafe-for-TransportEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.TransportEventType.html" title="enum qlog::events::quic::TransportEventType">TransportEventType</a></h3></section><section id="impl-Send-for-TransportEventType" class="impl"><a href="#impl-Send-for-TransportEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.TransportEventType.html" title="enum qlog::events::quic::TransportEventType">TransportEventType</a></h3></section><section id="impl-Sync-for-TransportEventType" class="impl"><a href="#impl-Sync-for-TransportEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.TransportEventType.html" title="enum qlog::events::quic::TransportEventType">TransportEventType</a></h3></section><section id="impl-Unpin-for-TransportEventType" class="impl"><a href="#impl-Unpin-for-TransportEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.TransportEventType.html" title="enum qlog::events::quic::TransportEventType">TransportEventType</a></h3></section><section id="impl-UnwindSafe-for-TransportEventType" class="impl"><a href="#impl-UnwindSafe-for-TransportEventType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.TransportEventType.html" title="enum qlog::events::quic::TransportEventType">TransportEventType</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/index.html b/qlog/events/quic/index.html
new file mode 100644
index 0000000..a772551
--- /dev/null
+++ b/qlog/events/quic/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `quic` mod in crate `qlog`."><title>qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Module quic</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></section><h2><a href="../index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a class="mod" href="#">quic</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#27-824">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.AlpnInformation.html" title="struct qlog::events::quic::AlpnInformation">AlpnInformation</a></div></li><li><div class="item-name"><a class="struct" href="struct.CongestionStateUpdated.html" title="struct qlog::events::quic::CongestionStateUpdated">CongestionStateUpdated</a></div></li><li><div class="item-name"><a class="struct" href="struct.DataMoved.html" title="struct qlog::events::quic::DataMoved">DataMoved</a></div></li><li><div class="item-name"><a class="struct" href="struct.DatagramDropped.html" title="struct qlog::events::quic::DatagramDropped">DatagramDropped</a></div></li><li><div class="item-name"><a class="struct" href="struct.DatagramsReceived.html" title="struct qlog::events::quic::DatagramsReceived">DatagramsReceived</a></div></li><li><div class="item-name"><a class="struct" href="struct.DatagramsSent.html" title="struct qlog::events::quic::DatagramsSent">DatagramsSent</a></div></li><li><div class="item-name"><a class="struct" href="struct.FramesProcessed.html" title="struct qlog::events::quic::FramesProcessed">FramesProcessed</a></div></li><li><div class="item-name"><a class="struct" href="struct.LossTimerUpdated.html" title="struct qlog::events::quic::LossTimerUpdated">LossTimerUpdated</a></div></li><li><div class="item-name"><a class="struct" href="struct.MarkedForRetransmit.html" title="struct qlog::events::quic::MarkedForRetransmit">MarkedForRetransmit</a></div></li><li><div class="item-name"><a class="struct" href="struct.MetricsUpdated.html" title="struct qlog::events::quic::MetricsUpdated">MetricsUpdated</a></div></li><li><div class="item-name"><a class="struct" href="struct.PacketBuffered.html" title="struct qlog::events::quic::PacketBuffered">PacketBuffered</a></div></li><li><div class="item-name"><a class="struct" href="struct.PacketDropped.html" title="struct qlog::events::quic::PacketDropped">PacketDropped</a></div></li><li><div class="item-name"><a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a></div></li><li><div class="item-name"><a class="struct" href="struct.PacketLost.html" title="struct qlog::events::quic::PacketLost">PacketLost</a></div></li><li><div class="item-name"><a class="struct" href="struct.PacketReceived.html" title="struct qlog::events::quic::PacketReceived">PacketReceived</a></div></li><li><div class="item-name"><a class="struct" href="struct.PacketSent.html" title="struct qlog::events::quic::PacketSent">PacketSent</a></div></li><li><div class="item-name"><a class="struct" href="struct.PacketsAcked.html" title="struct qlog::events::quic::PacketsAcked">PacketsAcked</a></div></li><li><div class="item-name"><a class="struct" href="struct.PreferredAddress.html" title="struct qlog::events::quic::PreferredAddress">PreferredAddress</a></div></li><li><div class="item-name"><a class="struct" href="struct.RecoveryParametersSet.html" title="struct qlog::events::quic::RecoveryParametersSet">RecoveryParametersSet</a></div></li><li><div class="item-name"><a class="struct" href="struct.StreamStateUpdated.html" title="struct qlog::events::quic::StreamStateUpdated">StreamStateUpdated</a></div></li><li><div class="item-name"><a class="struct" href="struct.TransportParametersRestored.html" title="struct qlog::events::quic::TransportParametersRestored">TransportParametersRestored</a></div></li><li><div class="item-name"><a class="struct" href="struct.TransportParametersSet.html" title="struct qlog::events::quic::TransportParametersSet">TransportParametersSet</a></div></li><li><div class="item-name"><a class="struct" href="struct.VersionInformation.html" title="struct qlog::events::quic::VersionInformation">VersionInformation</a></div></li></ul><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="enum" href="enum.AckedRanges.html" title="enum qlog::events::quic::AckedRanges">AckedRanges</a></div></li><li><div class="item-name"><a class="enum" href="enum.CongestionStateUpdatedTrigger.html" title="enum qlog::events::quic::CongestionStateUpdatedTrigger">CongestionStateUpdatedTrigger</a></div></li><li><div class="item-name"><a class="enum" href="enum.ErrorSpace.html" title="enum qlog::events::quic::ErrorSpace">ErrorSpace</a></div></li><li><div class="item-name"><a class="enum" href="enum.LossTimerEventType.html" title="enum qlog::events::quic::LossTimerEventType">LossTimerEventType</a></div></li><li><div class="item-name"><a class="enum" href="enum.PacketBufferedTrigger.html" title="enum qlog::events::quic::PacketBufferedTrigger">PacketBufferedTrigger</a></div></li><li><div class="item-name"><a class="enum" href="enum.PacketDroppedTrigger.html" title="enum qlog::events::quic::PacketDroppedTrigger">PacketDroppedTrigger</a></div></li><li><div class="item-name"><a class="enum" href="enum.PacketLostTrigger.html" title="enum qlog::events::quic::PacketLostTrigger">PacketLostTrigger</a></div></li><li><div class="item-name"><a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a></div></li><li><div class="item-name"><a class="enum" href="enum.PacketReceivedTrigger.html" title="enum qlog::events::quic::PacketReceivedTrigger">PacketReceivedTrigger</a></div></li><li><div class="item-name"><a class="enum" href="enum.PacketSentTrigger.html" title="enum qlog::events::quic::PacketSentTrigger">PacketSentTrigger</a></div></li><li><div class="item-name"><a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a></div></li><li><div class="item-name"><a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a></div></li><li><div class="item-name"><a class="enum" href="enum.QuicFrameTypeName.html" title="enum qlog::events::quic::QuicFrameTypeName">QuicFrameTypeName</a></div></li><li><div class="item-name"><a class="enum" href="enum.RecoveryEventType.html" title="enum qlog::events::quic::RecoveryEventType">RecoveryEventType</a></div></li><li><div class="item-name"><a class="enum" href="enum.SecurityEventType.html" title="enum qlog::events::quic::SecurityEventType">SecurityEventType</a></div></li><li><div class="item-name"><a class="enum" href="enum.StreamSide.html" title="enum qlog::events::quic::StreamSide">StreamSide</a></div></li><li><div class="item-name"><a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a></div></li><li><div class="item-name"><a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a></div></li><li><div class="item-name"><a class="enum" href="enum.TimerType.html" title="enum qlog::events::quic::TimerType">TimerType</a></div></li><li><div class="item-name"><a class="enum" href="enum.TransportError.html" title="enum qlog::events::quic::TransportError">TransportError</a></div></li><li><div class="item-name"><a class="enum" href="enum.TransportEventType.html" title="enum qlog::events::quic::TransportEventType">TransportEventType</a></div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/sidebar-items.js b/qlog/events/quic/sidebar-items.js
new file mode 100644
index 0000000..332d457
--- /dev/null
+++ b/qlog/events/quic/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"enum":["AckedRanges","CongestionStateUpdatedTrigger","ErrorSpace","LossTimerEventType","PacketBufferedTrigger","PacketDroppedTrigger","PacketLostTrigger","PacketNumberSpace","PacketReceivedTrigger","PacketSentTrigger","PacketType","QuicFrame","QuicFrameTypeName","RecoveryEventType","SecurityEventType","StreamSide","StreamState","StreamType","TimerType","TransportError","TransportEventType"],"struct":["AlpnInformation","CongestionStateUpdated","DataMoved","DatagramDropped","DatagramsReceived","DatagramsSent","FramesProcessed","LossTimerUpdated","MarkedForRetransmit","MetricsUpdated","PacketBuffered","PacketDropped","PacketHeader","PacketLost","PacketReceived","PacketSent","PacketsAcked","PreferredAddress","RecoveryParametersSet","StreamStateUpdated","TransportParametersRestored","TransportParametersSet","VersionInformation"]};
\ No newline at end of file
diff --git a/qlog/events/quic/struct.AlpnInformation.html b/qlog/events/quic/struct.AlpnInformation.html
new file mode 100644
index 0000000..b3b9f92
--- /dev/null
+++ b/qlog/events/quic/struct.AlpnInformation.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `AlpnInformation` struct in crate `qlog`."><title>AlpnInformation in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">AlpnInformation</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.chosen_alpn">chosen_alpn</a></li><li><a href="#structfield.client_alpns">client_alpns</a></li><li><a href="#structfield.server_alpns">server_alpns</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-AlpnInformation">Clone</a></li><li><a href="#impl-Debug-for-AlpnInformation">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-AlpnInformation">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-AlpnInformation">Eq</a></li><li><a href="#impl-PartialEq-for-AlpnInformation">PartialEq</a></li><li><a href="#impl-Serialize-for-AlpnInformation">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-AlpnInformation">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-AlpnInformation">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-AlpnInformation">RefUnwindSafe</a></li><li><a href="#impl-Send-for-AlpnInformation">Send</a></li><li><a href="#impl-Sync-for-AlpnInformation">Sync</a></li><li><a href="#impl-Unpin-for-AlpnInformation">Unpin</a></li><li><a href="#impl-UnwindSafe-for-AlpnInformation">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">AlpnInformation</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#538-542">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct AlpnInformation {
+    pub server_alpns: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;&gt;,
+    pub client_alpns: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;&gt;,
+    pub chosen_alpn: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.server_alpns" class="structfield section-header"><a href="#structfield.server_alpns" class="anchor field">§</a><code>server_alpns: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;&gt;</code></span><span id="structfield.client_alpns" class="structfield section-header"><a href="#structfield.client_alpns" class="anchor field">§</a><code>client_alpns: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;&gt;</code></span><span id="structfield.chosen_alpn" class="structfield section-header"><a href="#structfield.chosen_alpn" class="anchor field">§</a><code>chosen_alpn: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-AlpnInformation" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#537">source</a><a href="#impl-Clone-for-AlpnInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.AlpnInformation.html" title="struct qlog::events::quic::AlpnInformation">AlpnInformation</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#537">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.AlpnInformation.html" title="struct qlog::events::quic::AlpnInformation">AlpnInformation</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-AlpnInformation" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#537">source</a><a href="#impl-Debug-for-AlpnInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.AlpnInformation.html" title="struct qlog::events::quic::AlpnInformation">AlpnInformation</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#537">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-AlpnInformation" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#537">source</a><a href="#impl-Deserialize%3C'de%3E-for-AlpnInformation" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.AlpnInformation.html" title="struct qlog::events::quic::AlpnInformation">AlpnInformation</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#537">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-AlpnInformation" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#537">source</a><a href="#impl-PartialEq-for-AlpnInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.AlpnInformation.html" title="struct qlog::events::quic::AlpnInformation">AlpnInformation</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#537">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.AlpnInformation.html" title="struct qlog::events::quic::AlpnInformation">AlpnInformation</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-AlpnInformation" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#537">source</a><a href="#impl-Serialize-for-AlpnInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.AlpnInformation.html" title="struct qlog::events::quic::AlpnInformation">AlpnInformation</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#537">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-AlpnInformation" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#537">source</a><a href="#impl-Eq-for-AlpnInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.AlpnInformation.html" title="struct qlog::events::quic::AlpnInformation">AlpnInformation</a></h3></section><section id="impl-StructuralPartialEq-for-AlpnInformation" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#537">source</a><a href="#impl-StructuralPartialEq-for-AlpnInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.AlpnInformation.html" title="struct qlog::events::quic::AlpnInformation">AlpnInformation</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-AlpnInformation" class="impl"><a href="#impl-Freeze-for-AlpnInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.AlpnInformation.html" title="struct qlog::events::quic::AlpnInformation">AlpnInformation</a></h3></section><section id="impl-RefUnwindSafe-for-AlpnInformation" class="impl"><a href="#impl-RefUnwindSafe-for-AlpnInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.AlpnInformation.html" title="struct qlog::events::quic::AlpnInformation">AlpnInformation</a></h3></section><section id="impl-Send-for-AlpnInformation" class="impl"><a href="#impl-Send-for-AlpnInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.AlpnInformation.html" title="struct qlog::events::quic::AlpnInformation">AlpnInformation</a></h3></section><section id="impl-Sync-for-AlpnInformation" class="impl"><a href="#impl-Sync-for-AlpnInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.AlpnInformation.html" title="struct qlog::events::quic::AlpnInformation">AlpnInformation</a></h3></section><section id="impl-Unpin-for-AlpnInformation" class="impl"><a href="#impl-Unpin-for-AlpnInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.AlpnInformation.html" title="struct qlog::events::quic::AlpnInformation">AlpnInformation</a></h3></section><section id="impl-UnwindSafe-for-AlpnInformation" class="impl"><a href="#impl-UnwindSafe-for-AlpnInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.AlpnInformation.html" title="struct qlog::events::quic::AlpnInformation">AlpnInformation</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.CongestionStateUpdated.html b/qlog/events/quic/struct.CongestionStateUpdated.html
new file mode 100644
index 0000000..5afa018
--- /dev/null
+++ b/qlog/events/quic/struct.CongestionStateUpdated.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `CongestionStateUpdated` struct in crate `qlog`."><title>CongestionStateUpdated in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">CongestionStateUpdated</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.new">new</a></li><li><a href="#structfield.old">old</a></li><li><a href="#structfield.trigger">trigger</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-CongestionStateUpdated">Clone</a></li><li><a href="#impl-Debug-for-CongestionStateUpdated">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-CongestionStateUpdated">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-CongestionStateUpdated">Eq</a></li><li><a href="#impl-PartialEq-for-CongestionStateUpdated">PartialEq</a></li><li><a href="#impl-Serialize-for-CongestionStateUpdated">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-CongestionStateUpdated">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-CongestionStateUpdated">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-CongestionStateUpdated">RefUnwindSafe</a></li><li><a href="#impl-Send-for-CongestionStateUpdated">Send</a></li><li><a href="#impl-Sync-for-CongestionStateUpdated">Sync</a></li><li><a href="#impl-Unpin-for-CongestionStateUpdated">Unpin</a></li><li><a href="#impl-UnwindSafe-for-CongestionStateUpdated">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">CongestionStateUpdated</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#769-774">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct CongestionStateUpdated {
+    pub old: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub new: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub trigger: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.CongestionStateUpdatedTrigger.html" title="enum qlog::events::quic::CongestionStateUpdatedTrigger">CongestionStateUpdatedTrigger</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.old" class="structfield section-header"><a href="#structfield.old" class="anchor field">§</a><code>old: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.new" class="structfield section-header"><a href="#structfield.new" class="anchor field">§</a><code>new: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.trigger" class="structfield section-header"><a href="#structfield.trigger" class="anchor field">§</a><code>trigger: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.CongestionStateUpdatedTrigger.html" title="enum qlog::events::quic::CongestionStateUpdatedTrigger">CongestionStateUpdatedTrigger</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-CongestionStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#768">source</a><a href="#impl-Clone-for-CongestionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.CongestionStateUpdated.html" title="struct qlog::events::quic::CongestionStateUpdated">CongestionStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#768">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.CongestionStateUpdated.html" title="struct qlog::events::quic::CongestionStateUpdated">CongestionStateUpdated</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-CongestionStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#768">source</a><a href="#impl-Debug-for-CongestionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.CongestionStateUpdated.html" title="struct qlog::events::quic::CongestionStateUpdated">CongestionStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#768">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-CongestionStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#768">source</a><a href="#impl-Deserialize%3C'de%3E-for-CongestionStateUpdated" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.CongestionStateUpdated.html" title="struct qlog::events::quic::CongestionStateUpdated">CongestionStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#768">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-CongestionStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#768">source</a><a href="#impl-PartialEq-for-CongestionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.CongestionStateUpdated.html" title="struct qlog::events::quic::CongestionStateUpdated">CongestionStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#768">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.CongestionStateUpdated.html" title="struct qlog::events::quic::CongestionStateUpdated">CongestionStateUpdated</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-CongestionStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#768">source</a><a href="#impl-Serialize-for-CongestionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.CongestionStateUpdated.html" title="struct qlog::events::quic::CongestionStateUpdated">CongestionStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#768">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-CongestionStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#768">source</a><a href="#impl-Eq-for-CongestionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.CongestionStateUpdated.html" title="struct qlog::events::quic::CongestionStateUpdated">CongestionStateUpdated</a></h3></section><section id="impl-StructuralPartialEq-for-CongestionStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#768">source</a><a href="#impl-StructuralPartialEq-for-CongestionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.CongestionStateUpdated.html" title="struct qlog::events::quic::CongestionStateUpdated">CongestionStateUpdated</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-CongestionStateUpdated" class="impl"><a href="#impl-Freeze-for-CongestionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.CongestionStateUpdated.html" title="struct qlog::events::quic::CongestionStateUpdated">CongestionStateUpdated</a></h3></section><section id="impl-RefUnwindSafe-for-CongestionStateUpdated" class="impl"><a href="#impl-RefUnwindSafe-for-CongestionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.CongestionStateUpdated.html" title="struct qlog::events::quic::CongestionStateUpdated">CongestionStateUpdated</a></h3></section><section id="impl-Send-for-CongestionStateUpdated" class="impl"><a href="#impl-Send-for-CongestionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.CongestionStateUpdated.html" title="struct qlog::events::quic::CongestionStateUpdated">CongestionStateUpdated</a></h3></section><section id="impl-Sync-for-CongestionStateUpdated" class="impl"><a href="#impl-Sync-for-CongestionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.CongestionStateUpdated.html" title="struct qlog::events::quic::CongestionStateUpdated">CongestionStateUpdated</a></h3></section><section id="impl-Unpin-for-CongestionStateUpdated" class="impl"><a href="#impl-Unpin-for-CongestionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.CongestionStateUpdated.html" title="struct qlog::events::quic::CongestionStateUpdated">CongestionStateUpdated</a></h3></section><section id="impl-UnwindSafe-for-CongestionStateUpdated" class="impl"><a href="#impl-UnwindSafe-for-CongestionStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.CongestionStateUpdated.html" title="struct qlog::events::quic::CongestionStateUpdated">CongestionStateUpdated</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.DataMoved.html b/qlog/events/quic/struct.DataMoved.html
new file mode 100644
index 0000000..6d8c3b7
--- /dev/null
+++ b/qlog/events/quic/struct.DataMoved.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `DataMoved` struct in crate `qlog`."><title>DataMoved in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">DataMoved</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.from">from</a></li><li><a href="#structfield.length">length</a></li><li><a href="#structfield.offset">offset</a></li><li><a href="#structfield.raw">raw</a></li><li><a href="#structfield.stream_id">stream_id</a></li><li><a href="#structfield.to">to</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-DataMoved">Clone</a></li><li><a href="#impl-Debug-for-DataMoved">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-DataMoved">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-DataMoved">Eq</a></li><li><a href="#impl-PartialEq-for-DataMoved">PartialEq</a></li><li><a href="#impl-Serialize-for-DataMoved">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-DataMoved">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-DataMoved">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-DataMoved">RefUnwindSafe</a></li><li><a href="#impl-Send-for-DataMoved">Send</a></li><li><a href="#impl-Sync-for-DataMoved">Sync</a></li><li><a href="#impl-Unpin-for-DataMoved">Unpin</a></li><li><a href="#impl-UnwindSafe-for-DataMoved">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">DataMoved</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#720-729">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct DataMoved {
+    pub stream_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub offset: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub from: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="../enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a>&gt;,
+    pub to: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="../enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a>&gt;,
+    pub raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.stream_id" class="structfield section-header"><a href="#structfield.stream_id" class="anchor field">§</a><code>stream_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.offset" class="structfield section-header"><a href="#structfield.offset" class="anchor field">§</a><code>offset: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.length" class="structfield section-header"><a href="#structfield.length" class="anchor field">§</a><code>length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.from" class="structfield section-header"><a href="#structfield.from" class="anchor field">§</a><code>from: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="../enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a>&gt;</code></span><span id="structfield.to" class="structfield section-header"><a href="#structfield.to" class="anchor field">§</a><code>to: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="../enum.DataRecipient.html" title="enum qlog::events::DataRecipient">DataRecipient</a>&gt;</code></span><span id="structfield.raw" class="structfield section-header"><a href="#structfield.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-DataMoved" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#719">source</a><a href="#impl-Clone-for-DataMoved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.DataMoved.html" title="struct qlog::events::quic::DataMoved">DataMoved</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#719">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.DataMoved.html" title="struct qlog::events::quic::DataMoved">DataMoved</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-DataMoved" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#719">source</a><a href="#impl-Debug-for-DataMoved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.DataMoved.html" title="struct qlog::events::quic::DataMoved">DataMoved</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#719">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-DataMoved" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#719">source</a><a href="#impl-Deserialize%3C'de%3E-for-DataMoved" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.DataMoved.html" title="struct qlog::events::quic::DataMoved">DataMoved</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#719">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-DataMoved" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#719">source</a><a href="#impl-PartialEq-for-DataMoved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.DataMoved.html" title="struct qlog::events::quic::DataMoved">DataMoved</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#719">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.DataMoved.html" title="struct qlog::events::quic::DataMoved">DataMoved</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-DataMoved" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#719">source</a><a href="#impl-Serialize-for-DataMoved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.DataMoved.html" title="struct qlog::events::quic::DataMoved">DataMoved</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#719">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-DataMoved" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#719">source</a><a href="#impl-Eq-for-DataMoved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.DataMoved.html" title="struct qlog::events::quic::DataMoved">DataMoved</a></h3></section><section id="impl-StructuralPartialEq-for-DataMoved" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#719">source</a><a href="#impl-StructuralPartialEq-for-DataMoved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.DataMoved.html" title="struct qlog::events::quic::DataMoved">DataMoved</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-DataMoved" class="impl"><a href="#impl-Freeze-for-DataMoved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.DataMoved.html" title="struct qlog::events::quic::DataMoved">DataMoved</a></h3></section><section id="impl-RefUnwindSafe-for-DataMoved" class="impl"><a href="#impl-RefUnwindSafe-for-DataMoved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.DataMoved.html" title="struct qlog::events::quic::DataMoved">DataMoved</a></h3></section><section id="impl-Send-for-DataMoved" class="impl"><a href="#impl-Send-for-DataMoved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.DataMoved.html" title="struct qlog::events::quic::DataMoved">DataMoved</a></h3></section><section id="impl-Sync-for-DataMoved" class="impl"><a href="#impl-Sync-for-DataMoved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.DataMoved.html" title="struct qlog::events::quic::DataMoved">DataMoved</a></h3></section><section id="impl-Unpin-for-DataMoved" class="impl"><a href="#impl-Unpin-for-DataMoved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.DataMoved.html" title="struct qlog::events::quic::DataMoved">DataMoved</a></h3></section><section id="impl-UnwindSafe-for-DataMoved" class="impl"><a href="#impl-UnwindSafe-for-DataMoved" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.DataMoved.html" title="struct qlog::events::quic::DataMoved">DataMoved</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.DatagramDropped.html b/qlog/events/quic/struct.DatagramDropped.html
new file mode 100644
index 0000000..074650e
--- /dev/null
+++ b/qlog/events/quic/struct.DatagramDropped.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `DatagramDropped` struct in crate `qlog`."><title>DatagramDropped in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">DatagramDropped</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.raw">raw</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-DatagramDropped">Clone</a></li><li><a href="#impl-Debug-for-DatagramDropped">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-DatagramDropped">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-DatagramDropped">Eq</a></li><li><a href="#impl-PartialEq-for-DatagramDropped">PartialEq</a></li><li><a href="#impl-Serialize-for-DatagramDropped">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-DatagramDropped">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-DatagramDropped">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-DatagramDropped">RefUnwindSafe</a></li><li><a href="#impl-Send-for-DatagramDropped">Send</a></li><li><a href="#impl-Sync-for-DatagramDropped">Sync</a></li><li><a href="#impl-Unpin-for-DatagramDropped">Unpin</a></li><li><a href="#impl-UnwindSafe-for-DatagramDropped">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">DatagramDropped</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#615-617">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct DatagramDropped {
+    pub raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.raw" class="structfield section-header"><a href="#structfield.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-DatagramDropped" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#614">source</a><a href="#impl-Clone-for-DatagramDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.DatagramDropped.html" title="struct qlog::events::quic::DatagramDropped">DatagramDropped</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#614">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.DatagramDropped.html" title="struct qlog::events::quic::DatagramDropped">DatagramDropped</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-DatagramDropped" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#614">source</a><a href="#impl-Debug-for-DatagramDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.DatagramDropped.html" title="struct qlog::events::quic::DatagramDropped">DatagramDropped</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#614">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-DatagramDropped" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#614">source</a><a href="#impl-Deserialize%3C'de%3E-for-DatagramDropped" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.DatagramDropped.html" title="struct qlog::events::quic::DatagramDropped">DatagramDropped</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#614">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-DatagramDropped" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#614">source</a><a href="#impl-PartialEq-for-DatagramDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.DatagramDropped.html" title="struct qlog::events::quic::DatagramDropped">DatagramDropped</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#614">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.DatagramDropped.html" title="struct qlog::events::quic::DatagramDropped">DatagramDropped</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-DatagramDropped" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#614">source</a><a href="#impl-Serialize-for-DatagramDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.DatagramDropped.html" title="struct qlog::events::quic::DatagramDropped">DatagramDropped</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#614">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-DatagramDropped" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#614">source</a><a href="#impl-Eq-for-DatagramDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.DatagramDropped.html" title="struct qlog::events::quic::DatagramDropped">DatagramDropped</a></h3></section><section id="impl-StructuralPartialEq-for-DatagramDropped" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#614">source</a><a href="#impl-StructuralPartialEq-for-DatagramDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.DatagramDropped.html" title="struct qlog::events::quic::DatagramDropped">DatagramDropped</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-DatagramDropped" class="impl"><a href="#impl-Freeze-for-DatagramDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.DatagramDropped.html" title="struct qlog::events::quic::DatagramDropped">DatagramDropped</a></h3></section><section id="impl-RefUnwindSafe-for-DatagramDropped" class="impl"><a href="#impl-RefUnwindSafe-for-DatagramDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.DatagramDropped.html" title="struct qlog::events::quic::DatagramDropped">DatagramDropped</a></h3></section><section id="impl-Send-for-DatagramDropped" class="impl"><a href="#impl-Send-for-DatagramDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.DatagramDropped.html" title="struct qlog::events::quic::DatagramDropped">DatagramDropped</a></h3></section><section id="impl-Sync-for-DatagramDropped" class="impl"><a href="#impl-Sync-for-DatagramDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.DatagramDropped.html" title="struct qlog::events::quic::DatagramDropped">DatagramDropped</a></h3></section><section id="impl-Unpin-for-DatagramDropped" class="impl"><a href="#impl-Unpin-for-DatagramDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.DatagramDropped.html" title="struct qlog::events::quic::DatagramDropped">DatagramDropped</a></h3></section><section id="impl-UnwindSafe-for-DatagramDropped" class="impl"><a href="#impl-UnwindSafe-for-DatagramDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.DatagramDropped.html" title="struct qlog::events::quic::DatagramDropped">DatagramDropped</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.DatagramsReceived.html b/qlog/events/quic/struct.DatagramsReceived.html
new file mode 100644
index 0000000..fca43c7
--- /dev/null
+++ b/qlog/events/quic/struct.DatagramsReceived.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `DatagramsReceived` struct in crate `qlog`."><title>DatagramsReceived in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">DatagramsReceived</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.count">count</a></li><li><a href="#structfield.datagram_ids">datagram_ids</a></li><li><a href="#structfield.raw">raw</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-DatagramsReceived">Clone</a></li><li><a href="#impl-Debug-for-DatagramsReceived">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-DatagramsReceived">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-DatagramsReceived">Eq</a></li><li><a href="#impl-PartialEq-for-DatagramsReceived">PartialEq</a></li><li><a href="#impl-Serialize-for-DatagramsReceived">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-DatagramsReceived">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-DatagramsReceived">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-DatagramsReceived">RefUnwindSafe</a></li><li><a href="#impl-Send-for-DatagramsReceived">Send</a></li><li><a href="#impl-Sync-for-DatagramsReceived">Sync</a></li><li><a href="#impl-Unpin-for-DatagramsReceived">Unpin</a></li><li><a href="#impl-UnwindSafe-for-DatagramsReceived">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">DatagramsReceived</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#595-601">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct DatagramsReceived {
+    pub count: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;,
+    pub raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;&gt;,
+    pub datagram_ids: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.count" class="structfield section-header"><a href="#structfield.count" class="anchor field">§</a><code>count: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;</code></span><span id="structfield.raw" class="structfield section-header"><a href="#structfield.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;&gt;</code></span><span id="structfield.datagram_ids" class="structfield section-header"><a href="#structfield.datagram_ids" class="anchor field">§</a><code>datagram_ids: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-DatagramsReceived" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#594">source</a><a href="#impl-Clone-for-DatagramsReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.DatagramsReceived.html" title="struct qlog::events::quic::DatagramsReceived">DatagramsReceived</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#594">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.DatagramsReceived.html" title="struct qlog::events::quic::DatagramsReceived">DatagramsReceived</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-DatagramsReceived" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#594">source</a><a href="#impl-Debug-for-DatagramsReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.DatagramsReceived.html" title="struct qlog::events::quic::DatagramsReceived">DatagramsReceived</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#594">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-DatagramsReceived" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#594">source</a><a href="#impl-Deserialize%3C'de%3E-for-DatagramsReceived" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.DatagramsReceived.html" title="struct qlog::events::quic::DatagramsReceived">DatagramsReceived</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#594">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-DatagramsReceived" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#594">source</a><a href="#impl-PartialEq-for-DatagramsReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.DatagramsReceived.html" title="struct qlog::events::quic::DatagramsReceived">DatagramsReceived</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#594">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.DatagramsReceived.html" title="struct qlog::events::quic::DatagramsReceived">DatagramsReceived</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-DatagramsReceived" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#594">source</a><a href="#impl-Serialize-for-DatagramsReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.DatagramsReceived.html" title="struct qlog::events::quic::DatagramsReceived">DatagramsReceived</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#594">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-DatagramsReceived" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#594">source</a><a href="#impl-Eq-for-DatagramsReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.DatagramsReceived.html" title="struct qlog::events::quic::DatagramsReceived">DatagramsReceived</a></h3></section><section id="impl-StructuralPartialEq-for-DatagramsReceived" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#594">source</a><a href="#impl-StructuralPartialEq-for-DatagramsReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.DatagramsReceived.html" title="struct qlog::events::quic::DatagramsReceived">DatagramsReceived</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-DatagramsReceived" class="impl"><a href="#impl-Freeze-for-DatagramsReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.DatagramsReceived.html" title="struct qlog::events::quic::DatagramsReceived">DatagramsReceived</a></h3></section><section id="impl-RefUnwindSafe-for-DatagramsReceived" class="impl"><a href="#impl-RefUnwindSafe-for-DatagramsReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.DatagramsReceived.html" title="struct qlog::events::quic::DatagramsReceived">DatagramsReceived</a></h3></section><section id="impl-Send-for-DatagramsReceived" class="impl"><a href="#impl-Send-for-DatagramsReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.DatagramsReceived.html" title="struct qlog::events::quic::DatagramsReceived">DatagramsReceived</a></h3></section><section id="impl-Sync-for-DatagramsReceived" class="impl"><a href="#impl-Sync-for-DatagramsReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.DatagramsReceived.html" title="struct qlog::events::quic::DatagramsReceived">DatagramsReceived</a></h3></section><section id="impl-Unpin-for-DatagramsReceived" class="impl"><a href="#impl-Unpin-for-DatagramsReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.DatagramsReceived.html" title="struct qlog::events::quic::DatagramsReceived">DatagramsReceived</a></h3></section><section id="impl-UnwindSafe-for-DatagramsReceived" class="impl"><a href="#impl-UnwindSafe-for-DatagramsReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.DatagramsReceived.html" title="struct qlog::events::quic::DatagramsReceived">DatagramsReceived</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.DatagramsSent.html b/qlog/events/quic/struct.DatagramsSent.html
new file mode 100644
index 0000000..12ffcd8
--- /dev/null
+++ b/qlog/events/quic/struct.DatagramsSent.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `DatagramsSent` struct in crate `qlog`."><title>DatagramsSent in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">DatagramsSent</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.count">count</a></li><li><a href="#structfield.datagram_ids">datagram_ids</a></li><li><a href="#structfield.raw">raw</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-DatagramsSent">Clone</a></li><li><a href="#impl-Debug-for-DatagramsSent">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-DatagramsSent">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-DatagramsSent">Eq</a></li><li><a href="#impl-PartialEq-for-DatagramsSent">PartialEq</a></li><li><a href="#impl-Serialize-for-DatagramsSent">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-DatagramsSent">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-DatagramsSent">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-DatagramsSent">RefUnwindSafe</a></li><li><a href="#impl-Send-for-DatagramsSent">Send</a></li><li><a href="#impl-Sync-for-DatagramsSent">Sync</a></li><li><a href="#impl-Unpin-for-DatagramsSent">Unpin</a></li><li><a href="#impl-UnwindSafe-for-DatagramsSent">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">DatagramsSent</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#605-611">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct DatagramsSent {
+    pub count: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;,
+    pub raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;&gt;,
+    pub datagram_ids: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.count" class="structfield section-header"><a href="#structfield.count" class="anchor field">§</a><code>count: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;</code></span><span id="structfield.raw" class="structfield section-header"><a href="#structfield.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;&gt;</code></span><span id="structfield.datagram_ids" class="structfield section-header"><a href="#structfield.datagram_ids" class="anchor field">§</a><code>datagram_ids: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-DatagramsSent" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#604">source</a><a href="#impl-Clone-for-DatagramsSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.DatagramsSent.html" title="struct qlog::events::quic::DatagramsSent">DatagramsSent</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#604">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.DatagramsSent.html" title="struct qlog::events::quic::DatagramsSent">DatagramsSent</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-DatagramsSent" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#604">source</a><a href="#impl-Debug-for-DatagramsSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.DatagramsSent.html" title="struct qlog::events::quic::DatagramsSent">DatagramsSent</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#604">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-DatagramsSent" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#604">source</a><a href="#impl-Deserialize%3C'de%3E-for-DatagramsSent" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.DatagramsSent.html" title="struct qlog::events::quic::DatagramsSent">DatagramsSent</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#604">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-DatagramsSent" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#604">source</a><a href="#impl-PartialEq-for-DatagramsSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.DatagramsSent.html" title="struct qlog::events::quic::DatagramsSent">DatagramsSent</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#604">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.DatagramsSent.html" title="struct qlog::events::quic::DatagramsSent">DatagramsSent</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-DatagramsSent" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#604">source</a><a href="#impl-Serialize-for-DatagramsSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.DatagramsSent.html" title="struct qlog::events::quic::DatagramsSent">DatagramsSent</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#604">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-DatagramsSent" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#604">source</a><a href="#impl-Eq-for-DatagramsSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.DatagramsSent.html" title="struct qlog::events::quic::DatagramsSent">DatagramsSent</a></h3></section><section id="impl-StructuralPartialEq-for-DatagramsSent" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#604">source</a><a href="#impl-StructuralPartialEq-for-DatagramsSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.DatagramsSent.html" title="struct qlog::events::quic::DatagramsSent">DatagramsSent</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-DatagramsSent" class="impl"><a href="#impl-Freeze-for-DatagramsSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.DatagramsSent.html" title="struct qlog::events::quic::DatagramsSent">DatagramsSent</a></h3></section><section id="impl-RefUnwindSafe-for-DatagramsSent" class="impl"><a href="#impl-RefUnwindSafe-for-DatagramsSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.DatagramsSent.html" title="struct qlog::events::quic::DatagramsSent">DatagramsSent</a></h3></section><section id="impl-Send-for-DatagramsSent" class="impl"><a href="#impl-Send-for-DatagramsSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.DatagramsSent.html" title="struct qlog::events::quic::DatagramsSent">DatagramsSent</a></h3></section><section id="impl-Sync-for-DatagramsSent" class="impl"><a href="#impl-Sync-for-DatagramsSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.DatagramsSent.html" title="struct qlog::events::quic::DatagramsSent">DatagramsSent</a></h3></section><section id="impl-Unpin-for-DatagramsSent" class="impl"><a href="#impl-Unpin-for-DatagramsSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.DatagramsSent.html" title="struct qlog::events::quic::DatagramsSent">DatagramsSent</a></h3></section><section id="impl-UnwindSafe-for-DatagramsSent" class="impl"><a href="#impl-UnwindSafe-for-DatagramsSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.DatagramsSent.html" title="struct qlog::events::quic::DatagramsSent">DatagramsSent</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.FramesProcessed.html b/qlog/events/quic/struct.FramesProcessed.html
new file mode 100644
index 0000000..0057605
--- /dev/null
+++ b/qlog/events/quic/struct.FramesProcessed.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `FramesProcessed` struct in crate `qlog`."><title>FramesProcessed in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">FramesProcessed</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.frames">frames</a></li><li><a href="#structfield.packet_number">packet_number</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-FramesProcessed">Clone</a></li><li><a href="#impl-Debug-for-FramesProcessed">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-FramesProcessed">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-PartialEq-for-FramesProcessed">PartialEq</a></li><li><a href="#impl-Serialize-for-FramesProcessed">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-FramesProcessed">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-FramesProcessed">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-FramesProcessed">RefUnwindSafe</a></li><li><a href="#impl-Send-for-FramesProcessed">Send</a></li><li><a href="#impl-Sync-for-FramesProcessed">Sync</a></li><li><a href="#impl-Unpin-for-FramesProcessed">Unpin</a></li><li><a href="#impl-UnwindSafe-for-FramesProcessed">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">FramesProcessed</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#712-716">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct FramesProcessed {
+    pub frames: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a>&gt;,
+    pub packet_number: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.frames" class="structfield section-header"><a href="#structfield.frames" class="anchor field">§</a><code>frames: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a>&gt;</code></span><span id="structfield.packet_number" class="structfield section-header"><a href="#structfield.packet_number" class="anchor field">§</a><code>packet_number: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-FramesProcessed" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#711">source</a><a href="#impl-Clone-for-FramesProcessed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.FramesProcessed.html" title="struct qlog::events::quic::FramesProcessed">FramesProcessed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#711">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.FramesProcessed.html" title="struct qlog::events::quic::FramesProcessed">FramesProcessed</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-FramesProcessed" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#711">source</a><a href="#impl-Debug-for-FramesProcessed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.FramesProcessed.html" title="struct qlog::events::quic::FramesProcessed">FramesProcessed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#711">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-FramesProcessed" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#711">source</a><a href="#impl-Deserialize%3C'de%3E-for-FramesProcessed" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.FramesProcessed.html" title="struct qlog::events::quic::FramesProcessed">FramesProcessed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#711">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-FramesProcessed" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#711">source</a><a href="#impl-PartialEq-for-FramesProcessed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.FramesProcessed.html" title="struct qlog::events::quic::FramesProcessed">FramesProcessed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#711">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.FramesProcessed.html" title="struct qlog::events::quic::FramesProcessed">FramesProcessed</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-FramesProcessed" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#711">source</a><a href="#impl-Serialize-for-FramesProcessed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.FramesProcessed.html" title="struct qlog::events::quic::FramesProcessed">FramesProcessed</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#711">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-StructuralPartialEq-for-FramesProcessed" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#711">source</a><a href="#impl-StructuralPartialEq-for-FramesProcessed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.FramesProcessed.html" title="struct qlog::events::quic::FramesProcessed">FramesProcessed</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-FramesProcessed" class="impl"><a href="#impl-Freeze-for-FramesProcessed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.FramesProcessed.html" title="struct qlog::events::quic::FramesProcessed">FramesProcessed</a></h3></section><section id="impl-RefUnwindSafe-for-FramesProcessed" class="impl"><a href="#impl-RefUnwindSafe-for-FramesProcessed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.FramesProcessed.html" title="struct qlog::events::quic::FramesProcessed">FramesProcessed</a></h3></section><section id="impl-Send-for-FramesProcessed" class="impl"><a href="#impl-Send-for-FramesProcessed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.FramesProcessed.html" title="struct qlog::events::quic::FramesProcessed">FramesProcessed</a></h3></section><section id="impl-Sync-for-FramesProcessed" class="impl"><a href="#impl-Sync-for-FramesProcessed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.FramesProcessed.html" title="struct qlog::events::quic::FramesProcessed">FramesProcessed</a></h3></section><section id="impl-Unpin-for-FramesProcessed" class="impl"><a href="#impl-Unpin-for-FramesProcessed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.FramesProcessed.html" title="struct qlog::events::quic::FramesProcessed">FramesProcessed</a></h3></section><section id="impl-UnwindSafe-for-FramesProcessed" class="impl"><a href="#impl-UnwindSafe-for-FramesProcessed" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.FramesProcessed.html" title="struct qlog::events::quic::FramesProcessed">FramesProcessed</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.LossTimerUpdated.html b/qlog/events/quic/struct.LossTimerUpdated.html
new file mode 100644
index 0000000..682e46b
--- /dev/null
+++ b/qlog/events/quic/struct.LossTimerUpdated.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `LossTimerUpdated` struct in crate `qlog`."><title>LossTimerUpdated in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">LossTimerUpdated</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.delta">delta</a></li><li><a href="#structfield.event_type">event_type</a></li><li><a href="#structfield.packet_number_space">packet_number_space</a></li><li><a href="#structfield.timer_type">timer_type</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-LossTimerUpdated">Clone</a></li><li><a href="#impl-Debug-for-LossTimerUpdated">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-LossTimerUpdated">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-PartialEq-for-LossTimerUpdated">PartialEq</a></li><li><a href="#impl-Serialize-for-LossTimerUpdated">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-LossTimerUpdated">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-LossTimerUpdated">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-LossTimerUpdated">RefUnwindSafe</a></li><li><a href="#impl-Send-for-LossTimerUpdated">Send</a></li><li><a href="#impl-Sync-for-LossTimerUpdated">Sync</a></li><li><a href="#impl-Unpin-for-LossTimerUpdated">Unpin</a></li><li><a href="#impl-UnwindSafe-for-LossTimerUpdated">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">LossTimerUpdated</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#778-785">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct LossTimerUpdated {
+    pub timer_type: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.TimerType.html" title="enum qlog::events::quic::TimerType">TimerType</a>&gt;,
+    pub packet_number_space: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a>&gt;,
+    pub event_type: <a class="enum" href="enum.LossTimerEventType.html" title="enum qlog::events::quic::LossTimerEventType">LossTimerEventType</a>,
+    pub delta: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.timer_type" class="structfield section-header"><a href="#structfield.timer_type" class="anchor field">§</a><code>timer_type: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.TimerType.html" title="enum qlog::events::quic::TimerType">TimerType</a>&gt;</code></span><span id="structfield.packet_number_space" class="structfield section-header"><a href="#structfield.packet_number_space" class="anchor field">§</a><code>packet_number_space: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a>&gt;</code></span><span id="structfield.event_type" class="structfield section-header"><a href="#structfield.event_type" class="anchor field">§</a><code>event_type: <a class="enum" href="enum.LossTimerEventType.html" title="enum qlog::events::quic::LossTimerEventType">LossTimerEventType</a></code></span><span id="structfield.delta" class="structfield section-header"><a href="#structfield.delta" class="anchor field">§</a><code>delta: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-LossTimerUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#777">source</a><a href="#impl-Clone-for-LossTimerUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.LossTimerUpdated.html" title="struct qlog::events::quic::LossTimerUpdated">LossTimerUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#777">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.LossTimerUpdated.html" title="struct qlog::events::quic::LossTimerUpdated">LossTimerUpdated</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-LossTimerUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#777">source</a><a href="#impl-Debug-for-LossTimerUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.LossTimerUpdated.html" title="struct qlog::events::quic::LossTimerUpdated">LossTimerUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#777">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-LossTimerUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#777">source</a><a href="#impl-Deserialize%3C'de%3E-for-LossTimerUpdated" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.LossTimerUpdated.html" title="struct qlog::events::quic::LossTimerUpdated">LossTimerUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#777">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-LossTimerUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#777">source</a><a href="#impl-PartialEq-for-LossTimerUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.LossTimerUpdated.html" title="struct qlog::events::quic::LossTimerUpdated">LossTimerUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#777">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.LossTimerUpdated.html" title="struct qlog::events::quic::LossTimerUpdated">LossTimerUpdated</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-LossTimerUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#777">source</a><a href="#impl-Serialize-for-LossTimerUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.LossTimerUpdated.html" title="struct qlog::events::quic::LossTimerUpdated">LossTimerUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#777">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-StructuralPartialEq-for-LossTimerUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#777">source</a><a href="#impl-StructuralPartialEq-for-LossTimerUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.LossTimerUpdated.html" title="struct qlog::events::quic::LossTimerUpdated">LossTimerUpdated</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-LossTimerUpdated" class="impl"><a href="#impl-Freeze-for-LossTimerUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.LossTimerUpdated.html" title="struct qlog::events::quic::LossTimerUpdated">LossTimerUpdated</a></h3></section><section id="impl-RefUnwindSafe-for-LossTimerUpdated" class="impl"><a href="#impl-RefUnwindSafe-for-LossTimerUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.LossTimerUpdated.html" title="struct qlog::events::quic::LossTimerUpdated">LossTimerUpdated</a></h3></section><section id="impl-Send-for-LossTimerUpdated" class="impl"><a href="#impl-Send-for-LossTimerUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.LossTimerUpdated.html" title="struct qlog::events::quic::LossTimerUpdated">LossTimerUpdated</a></h3></section><section id="impl-Sync-for-LossTimerUpdated" class="impl"><a href="#impl-Sync-for-LossTimerUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.LossTimerUpdated.html" title="struct qlog::events::quic::LossTimerUpdated">LossTimerUpdated</a></h3></section><section id="impl-Unpin-for-LossTimerUpdated" class="impl"><a href="#impl-Unpin-for-LossTimerUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.LossTimerUpdated.html" title="struct qlog::events::quic::LossTimerUpdated">LossTimerUpdated</a></h3></section><section id="impl-UnwindSafe-for-LossTimerUpdated" class="impl"><a href="#impl-UnwindSafe-for-LossTimerUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.LossTimerUpdated.html" title="struct qlog::events::quic::LossTimerUpdated">LossTimerUpdated</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.MarkedForRetransmit.html b/qlog/events/quic/struct.MarkedForRetransmit.html
new file mode 100644
index 0000000..2c394f7
--- /dev/null
+++ b/qlog/events/quic/struct.MarkedForRetransmit.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `MarkedForRetransmit` struct in crate `qlog`."><title>MarkedForRetransmit in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">MarkedForRetransmit</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.frames">frames</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-MarkedForRetransmit">Clone</a></li><li><a href="#impl-Debug-for-MarkedForRetransmit">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-MarkedForRetransmit">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-PartialEq-for-MarkedForRetransmit">PartialEq</a></li><li><a href="#impl-Serialize-for-MarkedForRetransmit">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-MarkedForRetransmit">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-MarkedForRetransmit">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-MarkedForRetransmit">RefUnwindSafe</a></li><li><a href="#impl-Send-for-MarkedForRetransmit">Send</a></li><li><a href="#impl-Sync-for-MarkedForRetransmit">Sync</a></li><li><a href="#impl-Unpin-for-MarkedForRetransmit">Unpin</a></li><li><a href="#impl-UnwindSafe-for-MarkedForRetransmit">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">MarkedForRetransmit</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#799-801">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct MarkedForRetransmit {
+    pub frames: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.frames" class="structfield section-header"><a href="#structfield.frames" class="anchor field">§</a><code>frames: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-MarkedForRetransmit" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#798">source</a><a href="#impl-Clone-for-MarkedForRetransmit" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.MarkedForRetransmit.html" title="struct qlog::events::quic::MarkedForRetransmit">MarkedForRetransmit</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#798">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.MarkedForRetransmit.html" title="struct qlog::events::quic::MarkedForRetransmit">MarkedForRetransmit</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-MarkedForRetransmit" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#798">source</a><a href="#impl-Debug-for-MarkedForRetransmit" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.MarkedForRetransmit.html" title="struct qlog::events::quic::MarkedForRetransmit">MarkedForRetransmit</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#798">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-MarkedForRetransmit" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#798">source</a><a href="#impl-Deserialize%3C'de%3E-for-MarkedForRetransmit" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.MarkedForRetransmit.html" title="struct qlog::events::quic::MarkedForRetransmit">MarkedForRetransmit</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#798">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-MarkedForRetransmit" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#798">source</a><a href="#impl-PartialEq-for-MarkedForRetransmit" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.MarkedForRetransmit.html" title="struct qlog::events::quic::MarkedForRetransmit">MarkedForRetransmit</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#798">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.MarkedForRetransmit.html" title="struct qlog::events::quic::MarkedForRetransmit">MarkedForRetransmit</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-MarkedForRetransmit" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#798">source</a><a href="#impl-Serialize-for-MarkedForRetransmit" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.MarkedForRetransmit.html" title="struct qlog::events::quic::MarkedForRetransmit">MarkedForRetransmit</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#798">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-StructuralPartialEq-for-MarkedForRetransmit" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#798">source</a><a href="#impl-StructuralPartialEq-for-MarkedForRetransmit" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.MarkedForRetransmit.html" title="struct qlog::events::quic::MarkedForRetransmit">MarkedForRetransmit</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-MarkedForRetransmit" class="impl"><a href="#impl-Freeze-for-MarkedForRetransmit" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.MarkedForRetransmit.html" title="struct qlog::events::quic::MarkedForRetransmit">MarkedForRetransmit</a></h3></section><section id="impl-RefUnwindSafe-for-MarkedForRetransmit" class="impl"><a href="#impl-RefUnwindSafe-for-MarkedForRetransmit" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.MarkedForRetransmit.html" title="struct qlog::events::quic::MarkedForRetransmit">MarkedForRetransmit</a></h3></section><section id="impl-Send-for-MarkedForRetransmit" class="impl"><a href="#impl-Send-for-MarkedForRetransmit" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.MarkedForRetransmit.html" title="struct qlog::events::quic::MarkedForRetransmit">MarkedForRetransmit</a></h3></section><section id="impl-Sync-for-MarkedForRetransmit" class="impl"><a href="#impl-Sync-for-MarkedForRetransmit" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.MarkedForRetransmit.html" title="struct qlog::events::quic::MarkedForRetransmit">MarkedForRetransmit</a></h3></section><section id="impl-Unpin-for-MarkedForRetransmit" class="impl"><a href="#impl-Unpin-for-MarkedForRetransmit" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.MarkedForRetransmit.html" title="struct qlog::events::quic::MarkedForRetransmit">MarkedForRetransmit</a></h3></section><section id="impl-UnwindSafe-for-MarkedForRetransmit" class="impl"><a href="#impl-UnwindSafe-for-MarkedForRetransmit" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.MarkedForRetransmit.html" title="struct qlog::events::quic::MarkedForRetransmit">MarkedForRetransmit</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.MetricsUpdated.html b/qlog/events/quic/struct.MetricsUpdated.html
new file mode 100644
index 0000000..1c48bb9
--- /dev/null
+++ b/qlog/events/quic/struct.MetricsUpdated.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `MetricsUpdated` struct in crate `qlog`."><title>MetricsUpdated in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">MetricsUpdated</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.bytes_in_flight">bytes_in_flight</a></li><li><a href="#structfield.congestion_window">congestion_window</a></li><li><a href="#structfield.latest_rtt">latest_rtt</a></li><li><a href="#structfield.min_rtt">min_rtt</a></li><li><a href="#structfield.pacing_rate">pacing_rate</a></li><li><a href="#structfield.packets_in_flight">packets_in_flight</a></li><li><a href="#structfield.pto_count">pto_count</a></li><li><a href="#structfield.rtt_variance">rtt_variance</a></li><li><a href="#structfield.smoothed_rtt">smoothed_rtt</a></li><li><a href="#structfield.ssthresh">ssthresh</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-MetricsUpdated">Clone</a></li><li><a href="#impl-Debug-for-MetricsUpdated">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-MetricsUpdated">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-PartialEq-for-MetricsUpdated">PartialEq</a></li><li><a href="#impl-Serialize-for-MetricsUpdated">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-MetricsUpdated">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-MetricsUpdated">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-MetricsUpdated">RefUnwindSafe</a></li><li><a href="#impl-Send-for-MetricsUpdated">Send</a></li><li><a href="#impl-Sync-for-MetricsUpdated">Sync</a></li><li><a href="#impl-Unpin-for-MetricsUpdated">Unpin</a></li><li><a href="#impl-UnwindSafe-for-MetricsUpdated">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">MetricsUpdated</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#748-765">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct MetricsUpdated {
+    pub min_rtt: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;,
+    pub smoothed_rtt: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;,
+    pub latest_rtt: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;,
+    pub rtt_variance: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;,
+    pub pto_count: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;,
+    pub congestion_window: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub bytes_in_flight: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub ssthresh: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub packets_in_flight: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub pacing_rate: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.min_rtt" class="structfield section-header"><a href="#structfield.min_rtt" class="anchor field">§</a><code>min_rtt: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;</code></span><span id="structfield.smoothed_rtt" class="structfield section-header"><a href="#structfield.smoothed_rtt" class="anchor field">§</a><code>smoothed_rtt: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;</code></span><span id="structfield.latest_rtt" class="structfield section-header"><a href="#structfield.latest_rtt" class="anchor field">§</a><code>latest_rtt: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;</code></span><span id="structfield.rtt_variance" class="structfield section-header"><a href="#structfield.rtt_variance" class="anchor field">§</a><code>rtt_variance: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;</code></span><span id="structfield.pto_count" class="structfield section-header"><a href="#structfield.pto_count" class="anchor field">§</a><code>pto_count: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;</code></span><span id="structfield.congestion_window" class="structfield section-header"><a href="#structfield.congestion_window" class="anchor field">§</a><code>congestion_window: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.bytes_in_flight" class="structfield section-header"><a href="#structfield.bytes_in_flight" class="anchor field">§</a><code>bytes_in_flight: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.ssthresh" class="structfield section-header"><a href="#structfield.ssthresh" class="anchor field">§</a><code>ssthresh: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.packets_in_flight" class="structfield section-header"><a href="#structfield.packets_in_flight" class="anchor field">§</a><code>packets_in_flight: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.pacing_rate" class="structfield section-header"><a href="#structfield.pacing_rate" class="anchor field">§</a><code>pacing_rate: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-MetricsUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#747">source</a><a href="#impl-Clone-for-MetricsUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.MetricsUpdated.html" title="struct qlog::events::quic::MetricsUpdated">MetricsUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#747">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.MetricsUpdated.html" title="struct qlog::events::quic::MetricsUpdated">MetricsUpdated</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-MetricsUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#747">source</a><a href="#impl-Debug-for-MetricsUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.MetricsUpdated.html" title="struct qlog::events::quic::MetricsUpdated">MetricsUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#747">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-MetricsUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#747">source</a><a href="#impl-Deserialize%3C'de%3E-for-MetricsUpdated" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.MetricsUpdated.html" title="struct qlog::events::quic::MetricsUpdated">MetricsUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#747">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-MetricsUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#747">source</a><a href="#impl-PartialEq-for-MetricsUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.MetricsUpdated.html" title="struct qlog::events::quic::MetricsUpdated">MetricsUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#747">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.MetricsUpdated.html" title="struct qlog::events::quic::MetricsUpdated">MetricsUpdated</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-MetricsUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#747">source</a><a href="#impl-Serialize-for-MetricsUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.MetricsUpdated.html" title="struct qlog::events::quic::MetricsUpdated">MetricsUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#747">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-StructuralPartialEq-for-MetricsUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#747">source</a><a href="#impl-StructuralPartialEq-for-MetricsUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.MetricsUpdated.html" title="struct qlog::events::quic::MetricsUpdated">MetricsUpdated</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-MetricsUpdated" class="impl"><a href="#impl-Freeze-for-MetricsUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.MetricsUpdated.html" title="struct qlog::events::quic::MetricsUpdated">MetricsUpdated</a></h3></section><section id="impl-RefUnwindSafe-for-MetricsUpdated" class="impl"><a href="#impl-RefUnwindSafe-for-MetricsUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.MetricsUpdated.html" title="struct qlog::events::quic::MetricsUpdated">MetricsUpdated</a></h3></section><section id="impl-Send-for-MetricsUpdated" class="impl"><a href="#impl-Send-for-MetricsUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.MetricsUpdated.html" title="struct qlog::events::quic::MetricsUpdated">MetricsUpdated</a></h3></section><section id="impl-Sync-for-MetricsUpdated" class="impl"><a href="#impl-Sync-for-MetricsUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.MetricsUpdated.html" title="struct qlog::events::quic::MetricsUpdated">MetricsUpdated</a></h3></section><section id="impl-Unpin-for-MetricsUpdated" class="impl"><a href="#impl-Unpin-for-MetricsUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.MetricsUpdated.html" title="struct qlog::events::quic::MetricsUpdated">MetricsUpdated</a></h3></section><section id="impl-UnwindSafe-for-MetricsUpdated" class="impl"><a href="#impl-UnwindSafe-for-MetricsUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.MetricsUpdated.html" title="struct qlog::events::quic::MetricsUpdated">MetricsUpdated</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.PacketBuffered.html b/qlog/events/quic/struct.PacketBuffered.html
new file mode 100644
index 0000000..e4aef1e
--- /dev/null
+++ b/qlog/events/quic/struct.PacketBuffered.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `PacketBuffered` struct in crate `qlog`."><title>PacketBuffered in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">PacketBuffered</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.datagram_id">datagram_id</a></li><li><a href="#structfield.header">header</a></li><li><a href="#structfield.raw">raw</a></li><li><a href="#structfield.trigger">trigger</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-PacketBuffered">Clone</a></li><li><a href="#impl-Debug-for-PacketBuffered">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-PacketBuffered">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-PacketBuffered">Eq</a></li><li><a href="#impl-PartialEq-for-PacketBuffered">PartialEq</a></li><li><a href="#impl-Serialize-for-PacketBuffered">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-PacketBuffered">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-PacketBuffered">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-PacketBuffered">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PacketBuffered">Send</a></li><li><a href="#impl-Sync-for-PacketBuffered">Sync</a></li><li><a href="#impl-Unpin-for-PacketBuffered">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PacketBuffered">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">PacketBuffered</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#682-689">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct PacketBuffered {
+    pub header: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a>&gt;,
+    pub raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;,
+    pub datagram_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+    pub trigger: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.PacketBufferedTrigger.html" title="enum qlog::events::quic::PacketBufferedTrigger">PacketBufferedTrigger</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.header" class="structfield section-header"><a href="#structfield.header" class="anchor field">§</a><code>header: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a>&gt;</code></span><span id="structfield.raw" class="structfield section-header"><a href="#structfield.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;</code></span><span id="structfield.datagram_id" class="structfield section-header"><a href="#structfield.datagram_id" class="anchor field">§</a><code>datagram_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span><span id="structfield.trigger" class="structfield section-header"><a href="#structfield.trigger" class="anchor field">§</a><code>trigger: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.PacketBufferedTrigger.html" title="enum qlog::events::quic::PacketBufferedTrigger">PacketBufferedTrigger</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PacketBuffered" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#681">source</a><a href="#impl-Clone-for-PacketBuffered" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.PacketBuffered.html" title="struct qlog::events::quic::PacketBuffered">PacketBuffered</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#681">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.PacketBuffered.html" title="struct qlog::events::quic::PacketBuffered">PacketBuffered</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-PacketBuffered" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#681">source</a><a href="#impl-Debug-for-PacketBuffered" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.PacketBuffered.html" title="struct qlog::events::quic::PacketBuffered">PacketBuffered</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#681">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-PacketBuffered" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#681">source</a><a href="#impl-Deserialize%3C'de%3E-for-PacketBuffered" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.PacketBuffered.html" title="struct qlog::events::quic::PacketBuffered">PacketBuffered</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#681">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-PacketBuffered" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#681">source</a><a href="#impl-PartialEq-for-PacketBuffered" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.PacketBuffered.html" title="struct qlog::events::quic::PacketBuffered">PacketBuffered</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#681">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.PacketBuffered.html" title="struct qlog::events::quic::PacketBuffered">PacketBuffered</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-PacketBuffered" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#681">source</a><a href="#impl-Serialize-for-PacketBuffered" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.PacketBuffered.html" title="struct qlog::events::quic::PacketBuffered">PacketBuffered</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#681">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-PacketBuffered" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#681">source</a><a href="#impl-Eq-for-PacketBuffered" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.PacketBuffered.html" title="struct qlog::events::quic::PacketBuffered">PacketBuffered</a></h3></section><section id="impl-StructuralPartialEq-for-PacketBuffered" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#681">source</a><a href="#impl-StructuralPartialEq-for-PacketBuffered" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.PacketBuffered.html" title="struct qlog::events::quic::PacketBuffered">PacketBuffered</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-PacketBuffered" class="impl"><a href="#impl-Freeze-for-PacketBuffered" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.PacketBuffered.html" title="struct qlog::events::quic::PacketBuffered">PacketBuffered</a></h3></section><section id="impl-RefUnwindSafe-for-PacketBuffered" class="impl"><a href="#impl-RefUnwindSafe-for-PacketBuffered" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.PacketBuffered.html" title="struct qlog::events::quic::PacketBuffered">PacketBuffered</a></h3></section><section id="impl-Send-for-PacketBuffered" class="impl"><a href="#impl-Send-for-PacketBuffered" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.PacketBuffered.html" title="struct qlog::events::quic::PacketBuffered">PacketBuffered</a></h3></section><section id="impl-Sync-for-PacketBuffered" class="impl"><a href="#impl-Sync-for-PacketBuffered" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.PacketBuffered.html" title="struct qlog::events::quic::PacketBuffered">PacketBuffered</a></h3></section><section id="impl-Unpin-for-PacketBuffered" class="impl"><a href="#impl-Unpin-for-PacketBuffered" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.PacketBuffered.html" title="struct qlog::events::quic::PacketBuffered">PacketBuffered</a></h3></section><section id="impl-UnwindSafe-for-PacketBuffered" class="impl"><a href="#impl-UnwindSafe-for-PacketBuffered" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.PacketBuffered.html" title="struct qlog::events::quic::PacketBuffered">PacketBuffered</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.PacketDropped.html b/qlog/events/quic/struct.PacketDropped.html
new file mode 100644
index 0000000..9677e05
--- /dev/null
+++ b/qlog/events/quic/struct.PacketDropped.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `PacketDropped` struct in crate `qlog`."><title>PacketDropped in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">PacketDropped</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.datagram_id">datagram_id</a></li><li><a href="#structfield.details">details</a></li><li><a href="#structfield.header">header</a></li><li><a href="#structfield.raw">raw</a></li><li><a href="#structfield.trigger">trigger</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-PacketDropped">Clone</a></li><li><a href="#impl-Debug-for-PacketDropped">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-PacketDropped">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-PacketDropped">Eq</a></li><li><a href="#impl-PartialEq-for-PacketDropped">PartialEq</a></li><li><a href="#impl-Serialize-for-PacketDropped">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-PacketDropped">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-PacketDropped">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-PacketDropped">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PacketDropped">Send</a></li><li><a href="#impl-Sync-for-PacketDropped">Sync</a></li><li><a href="#impl-Unpin-for-PacketDropped">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PacketDropped">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">PacketDropped</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#669-678">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct PacketDropped {
+    pub header: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a>&gt;,
+    pub raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;,
+    pub datagram_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+    pub details: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub trigger: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.PacketDroppedTrigger.html" title="enum qlog::events::quic::PacketDroppedTrigger">PacketDroppedTrigger</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.header" class="structfield section-header"><a href="#structfield.header" class="anchor field">§</a><code>header: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a>&gt;</code></span><span id="structfield.raw" class="structfield section-header"><a href="#structfield.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;</code></span><span id="structfield.datagram_id" class="structfield section-header"><a href="#structfield.datagram_id" class="anchor field">§</a><code>datagram_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span><span id="structfield.details" class="structfield section-header"><a href="#structfield.details" class="anchor field">§</a><code>details: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.trigger" class="structfield section-header"><a href="#structfield.trigger" class="anchor field">§</a><code>trigger: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.PacketDroppedTrigger.html" title="enum qlog::events::quic::PacketDroppedTrigger">PacketDroppedTrigger</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PacketDropped" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#668">source</a><a href="#impl-Clone-for-PacketDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.PacketDropped.html" title="struct qlog::events::quic::PacketDropped">PacketDropped</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#668">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.PacketDropped.html" title="struct qlog::events::quic::PacketDropped">PacketDropped</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-PacketDropped" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#668">source</a><a href="#impl-Debug-for-PacketDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.PacketDropped.html" title="struct qlog::events::quic::PacketDropped">PacketDropped</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#668">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-PacketDropped" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#668">source</a><a href="#impl-Deserialize%3C'de%3E-for-PacketDropped" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.PacketDropped.html" title="struct qlog::events::quic::PacketDropped">PacketDropped</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#668">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-PacketDropped" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#668">source</a><a href="#impl-PartialEq-for-PacketDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.PacketDropped.html" title="struct qlog::events::quic::PacketDropped">PacketDropped</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#668">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.PacketDropped.html" title="struct qlog::events::quic::PacketDropped">PacketDropped</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-PacketDropped" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#668">source</a><a href="#impl-Serialize-for-PacketDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.PacketDropped.html" title="struct qlog::events::quic::PacketDropped">PacketDropped</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#668">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-PacketDropped" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#668">source</a><a href="#impl-Eq-for-PacketDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.PacketDropped.html" title="struct qlog::events::quic::PacketDropped">PacketDropped</a></h3></section><section id="impl-StructuralPartialEq-for-PacketDropped" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#668">source</a><a href="#impl-StructuralPartialEq-for-PacketDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.PacketDropped.html" title="struct qlog::events::quic::PacketDropped">PacketDropped</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-PacketDropped" class="impl"><a href="#impl-Freeze-for-PacketDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.PacketDropped.html" title="struct qlog::events::quic::PacketDropped">PacketDropped</a></h3></section><section id="impl-RefUnwindSafe-for-PacketDropped" class="impl"><a href="#impl-RefUnwindSafe-for-PacketDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.PacketDropped.html" title="struct qlog::events::quic::PacketDropped">PacketDropped</a></h3></section><section id="impl-Send-for-PacketDropped" class="impl"><a href="#impl-Send-for-PacketDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.PacketDropped.html" title="struct qlog::events::quic::PacketDropped">PacketDropped</a></h3></section><section id="impl-Sync-for-PacketDropped" class="impl"><a href="#impl-Sync-for-PacketDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.PacketDropped.html" title="struct qlog::events::quic::PacketDropped">PacketDropped</a></h3></section><section id="impl-Unpin-for-PacketDropped" class="impl"><a href="#impl-Unpin-for-PacketDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.PacketDropped.html" title="struct qlog::events::quic::PacketDropped">PacketDropped</a></h3></section><section id="impl-UnwindSafe-for-PacketDropped" class="impl"><a href="#impl-UnwindSafe-for-PacketDropped" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.PacketDropped.html" title="struct qlog::events::quic::PacketDropped">PacketDropped</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.PacketHeader.html b/qlog/events/quic/struct.PacketHeader.html
new file mode 100644
index 0000000..1b317f8
--- /dev/null
+++ b/qlog/events/quic/struct.PacketHeader.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `PacketHeader` struct in crate `qlog`."><title>PacketHeader in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">PacketHeader</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.dcid">dcid</a></li><li><a href="#structfield.dcil">dcil</a></li><li><a href="#structfield.flags">flags</a></li><li><a href="#structfield.length">length</a></li><li><a href="#structfield.packet_number">packet_number</a></li><li><a href="#structfield.packet_type">packet_type</a></li><li><a href="#structfield.scid">scid</a></li><li><a href="#structfield.scil">scil</a></li><li><a href="#structfield.token">token</a></li><li><a href="#structfield.version">version</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.new">new</a></li><li><a href="#method.with_type">with_type</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-PacketHeader">Clone</a></li><li><a href="#impl-Debug-for-PacketHeader">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-PacketHeader">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-PacketHeader">Eq</a></li><li><a href="#impl-PartialEq-for-PacketHeader">PartialEq</a></li><li><a href="#impl-Serialize-for-PacketHeader">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-PacketHeader">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-PacketHeader">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-PacketHeader">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PacketHeader">Send</a></li><li><a href="#impl-Sync-for-PacketHeader">Sync</a></li><li><a href="#impl-Unpin-for-PacketHeader">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PacketHeader">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">PacketHeader</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#67-82">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct PacketHeader {
+    pub packet_type: <a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a>,
+    pub packet_number: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub flags: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;,
+    pub token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../../struct.Token.html" title="struct qlog::Token">Token</a>&gt;,
+    pub length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;,
+    pub version: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;,
+    pub scil: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;,
+    pub dcil: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;,
+    pub scid: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;,
+    pub dcid: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.packet_type" class="structfield section-header"><a href="#structfield.packet_type" class="anchor field">§</a><code>packet_type: <a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a></code></span><span id="structfield.packet_number" class="structfield section-header"><a href="#structfield.packet_number" class="anchor field">§</a><code>packet_number: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.flags" class="structfield section-header"><a href="#structfield.flags" class="anchor field">§</a><code>flags: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</code></span><span id="structfield.token" class="structfield section-header"><a href="#structfield.token" class="anchor field">§</a><code>token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../../struct.Token.html" title="struct qlog::Token">Token</a>&gt;</code></span><span id="structfield.length" class="structfield section-header"><a href="#structfield.length" class="anchor field">§</a><code>length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;</code></span><span id="structfield.version" class="structfield section-header"><a href="#structfield.version" class="anchor field">§</a><code>version: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;</code></span><span id="structfield.scil" class="structfield section-header"><a href="#structfield.scil" class="anchor field">§</a><code>scil: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</code></span><span id="structfield.dcil" class="structfield section-header"><a href="#structfield.dcil" class="anchor field">§</a><code>dcil: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</code></span><span id="structfield.scid" class="structfield section-header"><a href="#structfield.scid" class="anchor field">§</a><code>scid: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;</code></span><span id="structfield.dcid" class="structfield section-header"><a href="#structfield.dcid" class="anchor field">§</a><code>dcid: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;</code></span><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-PacketHeader" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#84-159">source</a><a href="#impl-PacketHeader" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#87-124">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(
+    packet_type: <a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a>,
+    packet_number: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    flags: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;,
+    token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../../struct.Token.html" title="struct qlog::Token">Token</a>&gt;,
+    length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;,
+    version: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+    scid: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;,
+    dcid: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;
+) -&gt; Self</h4></section></summary><div class="docblock"><p>Creates a new PacketHeader.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_type" class="method"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#131-158">source</a><h4 class="code-header">pub fn <a href="#method.with_type" class="fn">with_type</a>(
+    ty: <a class="enum" href="enum.PacketType.html" title="enum qlog::events::quic::PacketType">PacketType</a>,
+    packet_number: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    version: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+    scid: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;,
+    dcid: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;
+) -&gt; Self</h4></section></summary><div class="docblock"><p>Creates a new PacketHeader.</p>
+<p>Once a QUIC connection has formed, version, dcid and scid are stable, so
+there are space benefits to not logging them in every packet, especially
+PacketType::OneRtt.</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PacketHeader" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#66">source</a><a href="#impl-Clone-for-PacketHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#66">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-PacketHeader" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#66">source</a><a href="#impl-Debug-for-PacketHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#66">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-PacketHeader" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#66">source</a><a href="#impl-Deserialize%3C'de%3E-for-PacketHeader" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#66">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-PacketHeader" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#66">source</a><a href="#impl-PartialEq-for-PacketHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#66">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-PacketHeader" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#66">source</a><a href="#impl-Serialize-for-PacketHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#66">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-PacketHeader" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#66">source</a><a href="#impl-Eq-for-PacketHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a></h3></section><section id="impl-StructuralPartialEq-for-PacketHeader" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#66">source</a><a href="#impl-StructuralPartialEq-for-PacketHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-PacketHeader" class="impl"><a href="#impl-Freeze-for-PacketHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a></h3></section><section id="impl-RefUnwindSafe-for-PacketHeader" class="impl"><a href="#impl-RefUnwindSafe-for-PacketHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a></h3></section><section id="impl-Send-for-PacketHeader" class="impl"><a href="#impl-Send-for-PacketHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a></h3></section><section id="impl-Sync-for-PacketHeader" class="impl"><a href="#impl-Sync-for-PacketHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a></h3></section><section id="impl-Unpin-for-PacketHeader" class="impl"><a href="#impl-Unpin-for-PacketHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a></h3></section><section id="impl-UnwindSafe-for-PacketHeader" class="impl"><a href="#impl-UnwindSafe-for-PacketHeader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.PacketLost.html b/qlog/events/quic/struct.PacketLost.html
new file mode 100644
index 0000000..1ea105e
--- /dev/null
+++ b/qlog/events/quic/struct.PacketLost.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `PacketLost` struct in crate `qlog`."><title>PacketLost in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">PacketLost</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.frames">frames</a></li><li><a href="#structfield.header">header</a></li><li><a href="#structfield.trigger">trigger</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-PacketLost">Clone</a></li><li><a href="#impl-Debug-for-PacketLost">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-PacketLost">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-PartialEq-for-PacketLost">PartialEq</a></li><li><a href="#impl-Serialize-for-PacketLost">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-PacketLost">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-PacketLost">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-PacketLost">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PacketLost">Send</a></li><li><a href="#impl-Sync-for-PacketLost">Sync</a></li><li><a href="#impl-Unpin-for-PacketLost">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PacketLost">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">PacketLost</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#789-795">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct PacketLost {
+    pub header: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a>&gt;,
+    pub frames: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a>&gt;&gt;,
+    pub trigger: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.PacketLostTrigger.html" title="enum qlog::events::quic::PacketLostTrigger">PacketLostTrigger</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.header" class="structfield section-header"><a href="#structfield.header" class="anchor field">§</a><code>header: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a>&gt;</code></span><span id="structfield.frames" class="structfield section-header"><a href="#structfield.frames" class="anchor field">§</a><code>frames: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a>&gt;&gt;</code></span><span id="structfield.trigger" class="structfield section-header"><a href="#structfield.trigger" class="anchor field">§</a><code>trigger: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.PacketLostTrigger.html" title="enum qlog::events::quic::PacketLostTrigger">PacketLostTrigger</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PacketLost" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#788">source</a><a href="#impl-Clone-for-PacketLost" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.PacketLost.html" title="struct qlog::events::quic::PacketLost">PacketLost</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#788">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.PacketLost.html" title="struct qlog::events::quic::PacketLost">PacketLost</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-PacketLost" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#788">source</a><a href="#impl-Debug-for-PacketLost" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.PacketLost.html" title="struct qlog::events::quic::PacketLost">PacketLost</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#788">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-PacketLost" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#788">source</a><a href="#impl-Deserialize%3C'de%3E-for-PacketLost" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.PacketLost.html" title="struct qlog::events::quic::PacketLost">PacketLost</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#788">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-PacketLost" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#788">source</a><a href="#impl-PartialEq-for-PacketLost" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.PacketLost.html" title="struct qlog::events::quic::PacketLost">PacketLost</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#788">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.PacketLost.html" title="struct qlog::events::quic::PacketLost">PacketLost</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-PacketLost" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#788">source</a><a href="#impl-Serialize-for-PacketLost" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.PacketLost.html" title="struct qlog::events::quic::PacketLost">PacketLost</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#788">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-StructuralPartialEq-for-PacketLost" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#788">source</a><a href="#impl-StructuralPartialEq-for-PacketLost" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.PacketLost.html" title="struct qlog::events::quic::PacketLost">PacketLost</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-PacketLost" class="impl"><a href="#impl-Freeze-for-PacketLost" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.PacketLost.html" title="struct qlog::events::quic::PacketLost">PacketLost</a></h3></section><section id="impl-RefUnwindSafe-for-PacketLost" class="impl"><a href="#impl-RefUnwindSafe-for-PacketLost" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.PacketLost.html" title="struct qlog::events::quic::PacketLost">PacketLost</a></h3></section><section id="impl-Send-for-PacketLost" class="impl"><a href="#impl-Send-for-PacketLost" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.PacketLost.html" title="struct qlog::events::quic::PacketLost">PacketLost</a></h3></section><section id="impl-Sync-for-PacketLost" class="impl"><a href="#impl-Sync-for-PacketLost" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.PacketLost.html" title="struct qlog::events::quic::PacketLost">PacketLost</a></h3></section><section id="impl-Unpin-for-PacketLost" class="impl"><a href="#impl-Unpin-for-PacketLost" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.PacketLost.html" title="struct qlog::events::quic::PacketLost">PacketLost</a></h3></section><section id="impl-UnwindSafe-for-PacketLost" class="impl"><a href="#impl-UnwindSafe-for-PacketLost" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.PacketLost.html" title="struct qlog::events::quic::PacketLost">PacketLost</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.PacketReceived.html b/qlog/events/quic/struct.PacketReceived.html
new file mode 100644
index 0000000..d0bd0d9
--- /dev/null
+++ b/qlog/events/quic/struct.PacketReceived.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `PacketReceived` struct in crate `qlog`."><title>PacketReceived in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">PacketReceived</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.datagram_id">datagram_id</a></li><li><a href="#structfield.frames">frames</a></li><li><a href="#structfield.header">header</a></li><li><a href="#structfield.is_coalesced">is_coalesced</a></li><li><a href="#structfield.raw">raw</a></li><li><a href="#structfield.retry_token">retry_token</a></li><li><a href="#structfield.stateless_reset_token">stateless_reset_token</a></li><li><a href="#structfield.supported_versions">supported_versions</a></li><li><a href="#structfield.trigger">trigger</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-PacketReceived">Clone</a></li><li><a href="#impl-Debug-for-PacketReceived">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-PacketReceived">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-PartialEq-for-PacketReceived">PartialEq</a></li><li><a href="#impl-Serialize-for-PacketReceived">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-PacketReceived">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-PacketReceived">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-PacketReceived">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PacketReceived">Send</a></li><li><a href="#impl-Sync-for-PacketReceived">Sync</a></li><li><a href="#impl-Unpin-for-PacketReceived">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PacketReceived">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">PacketReceived</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#621-640">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct PacketReceived {
+    pub header: <a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a>,
+    pub is_coalesced: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;,
+    pub retry_token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../../struct.Token.html" title="struct qlog::Token">Token</a>&gt;,
+    pub stateless_reset_token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.StatelessResetToken.html" title="type qlog::StatelessResetToken">StatelessResetToken</a>&gt;,
+    pub supported_versions: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;&gt;,
+    pub raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;,
+    pub datagram_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+    pub trigger: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.PacketReceivedTrigger.html" title="enum qlog::events::quic::PacketReceivedTrigger">PacketReceivedTrigger</a>&gt;,
+    pub frames: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a>&gt;&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.header" class="structfield section-header"><a href="#structfield.header" class="anchor field">§</a><code>header: <a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a></code></span><span id="structfield.is_coalesced" class="structfield section-header"><a href="#structfield.is_coalesced" class="anchor field">§</a><code>is_coalesced: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</code></span><span id="structfield.retry_token" class="structfield section-header"><a href="#structfield.retry_token" class="anchor field">§</a><code>retry_token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../../struct.Token.html" title="struct qlog::Token">Token</a>&gt;</code></span><span id="structfield.stateless_reset_token" class="structfield section-header"><a href="#structfield.stateless_reset_token" class="anchor field">§</a><code>stateless_reset_token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.StatelessResetToken.html" title="type qlog::StatelessResetToken">StatelessResetToken</a>&gt;</code></span><span id="structfield.supported_versions" class="structfield section-header"><a href="#structfield.supported_versions" class="anchor field">§</a><code>supported_versions: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;&gt;</code></span><span id="structfield.raw" class="structfield section-header"><a href="#structfield.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;</code></span><span id="structfield.datagram_id" class="structfield section-header"><a href="#structfield.datagram_id" class="anchor field">§</a><code>datagram_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span><span id="structfield.trigger" class="structfield section-header"><a href="#structfield.trigger" class="anchor field">§</a><code>trigger: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.PacketReceivedTrigger.html" title="enum qlog::events::quic::PacketReceivedTrigger">PacketReceivedTrigger</a>&gt;</code></span><span id="structfield.frames" class="structfield section-header"><a href="#structfield.frames" class="anchor field">§</a><code>frames: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a>&gt;&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PacketReceived" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#620">source</a><a href="#impl-Clone-for-PacketReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.PacketReceived.html" title="struct qlog::events::quic::PacketReceived">PacketReceived</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#620">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.PacketReceived.html" title="struct qlog::events::quic::PacketReceived">PacketReceived</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-PacketReceived" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#620">source</a><a href="#impl-Debug-for-PacketReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.PacketReceived.html" title="struct qlog::events::quic::PacketReceived">PacketReceived</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#620">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-PacketReceived" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#620">source</a><a href="#impl-Deserialize%3C'de%3E-for-PacketReceived" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.PacketReceived.html" title="struct qlog::events::quic::PacketReceived">PacketReceived</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#620">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-PacketReceived" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#620">source</a><a href="#impl-PartialEq-for-PacketReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.PacketReceived.html" title="struct qlog::events::quic::PacketReceived">PacketReceived</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#620">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.PacketReceived.html" title="struct qlog::events::quic::PacketReceived">PacketReceived</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-PacketReceived" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#620">source</a><a href="#impl-Serialize-for-PacketReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.PacketReceived.html" title="struct qlog::events::quic::PacketReceived">PacketReceived</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#620">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-StructuralPartialEq-for-PacketReceived" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#620">source</a><a href="#impl-StructuralPartialEq-for-PacketReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.PacketReceived.html" title="struct qlog::events::quic::PacketReceived">PacketReceived</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-PacketReceived" class="impl"><a href="#impl-Freeze-for-PacketReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.PacketReceived.html" title="struct qlog::events::quic::PacketReceived">PacketReceived</a></h3></section><section id="impl-RefUnwindSafe-for-PacketReceived" class="impl"><a href="#impl-RefUnwindSafe-for-PacketReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.PacketReceived.html" title="struct qlog::events::quic::PacketReceived">PacketReceived</a></h3></section><section id="impl-Send-for-PacketReceived" class="impl"><a href="#impl-Send-for-PacketReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.PacketReceived.html" title="struct qlog::events::quic::PacketReceived">PacketReceived</a></h3></section><section id="impl-Sync-for-PacketReceived" class="impl"><a href="#impl-Sync-for-PacketReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.PacketReceived.html" title="struct qlog::events::quic::PacketReceived">PacketReceived</a></h3></section><section id="impl-Unpin-for-PacketReceived" class="impl"><a href="#impl-Unpin-for-PacketReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.PacketReceived.html" title="struct qlog::events::quic::PacketReceived">PacketReceived</a></h3></section><section id="impl-UnwindSafe-for-PacketReceived" class="impl"><a href="#impl-UnwindSafe-for-PacketReceived" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.PacketReceived.html" title="struct qlog::events::quic::PacketReceived">PacketReceived</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.PacketSent.html b/qlog/events/quic/struct.PacketSent.html
new file mode 100644
index 0000000..451de05
--- /dev/null
+++ b/qlog/events/quic/struct.PacketSent.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `PacketSent` struct in crate `qlog`."><title>PacketSent in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">PacketSent</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.datagram_id">datagram_id</a></li><li><a href="#structfield.frames">frames</a></li><li><a href="#structfield.header">header</a></li><li><a href="#structfield.is_coalesced">is_coalesced</a></li><li><a href="#structfield.raw">raw</a></li><li><a href="#structfield.retry_token">retry_token</a></li><li><a href="#structfield.send_at_time">send_at_time</a></li><li><a href="#structfield.stateless_reset_token">stateless_reset_token</a></li><li><a href="#structfield.supported_versions">supported_versions</a></li><li><a href="#structfield.trigger">trigger</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-PacketSent">Clone</a></li><li><a href="#impl-Debug-for-PacketSent">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-PacketSent">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-PartialEq-for-PacketSent">PartialEq</a></li><li><a href="#impl-Serialize-for-PacketSent">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-PacketSent">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-PacketSent">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-PacketSent">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PacketSent">Send</a></li><li><a href="#impl-Sync-for-PacketSent">Sync</a></li><li><a href="#impl-Unpin-for-PacketSent">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PacketSent">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">PacketSent</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#644-665">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct PacketSent {
+    pub header: <a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a>,
+    pub is_coalesced: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;,
+    pub retry_token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../../struct.Token.html" title="struct qlog::Token">Token</a>&gt;,
+    pub stateless_reset_token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.StatelessResetToken.html" title="type qlog::StatelessResetToken">StatelessResetToken</a>&gt;,
+    pub supported_versions: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;&gt;,
+    pub raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;,
+    pub datagram_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+    pub trigger: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.PacketSentTrigger.html" title="enum qlog::events::quic::PacketSentTrigger">PacketSentTrigger</a>&gt;,
+    pub send_at_time: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;,
+    pub frames: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;SmallVec&lt;[<a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">1</a>]&gt;&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.header" class="structfield section-header"><a href="#structfield.header" class="anchor field">§</a><code>header: <a class="struct" href="struct.PacketHeader.html" title="struct qlog::events::quic::PacketHeader">PacketHeader</a></code></span><span id="structfield.is_coalesced" class="structfield section-header"><a href="#structfield.is_coalesced" class="anchor field">§</a><code>is_coalesced: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</code></span><span id="structfield.retry_token" class="structfield section-header"><a href="#structfield.retry_token" class="anchor field">§</a><code>retry_token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../../struct.Token.html" title="struct qlog::Token">Token</a>&gt;</code></span><span id="structfield.stateless_reset_token" class="structfield section-header"><a href="#structfield.stateless_reset_token" class="anchor field">§</a><code>stateless_reset_token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.StatelessResetToken.html" title="type qlog::StatelessResetToken">StatelessResetToken</a>&gt;</code></span><span id="structfield.supported_versions" class="structfield section-header"><a href="#structfield.supported_versions" class="anchor field">§</a><code>supported_versions: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;&gt;</code></span><span id="structfield.raw" class="structfield section-header"><a href="#structfield.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;</code></span><span id="structfield.datagram_id" class="structfield section-header"><a href="#structfield.datagram_id" class="anchor field">§</a><code>datagram_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span><span id="structfield.trigger" class="structfield section-header"><a href="#structfield.trigger" class="anchor field">§</a><code>trigger: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.PacketSentTrigger.html" title="enum qlog::events::quic::PacketSentTrigger">PacketSentTrigger</a>&gt;</code></span><span id="structfield.send_at_time" class="structfield section-header"><a href="#structfield.send_at_time" class="anchor field">§</a><code>send_at_time: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;</code></span><span id="structfield.frames" class="structfield section-header"><a href="#structfield.frames" class="anchor field">§</a><code>frames: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;SmallVec&lt;[<a class="enum" href="enum.QuicFrame.html" title="enum qlog::events::quic::QuicFrame">QuicFrame</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">1</a>]&gt;&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PacketSent" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#643">source</a><a href="#impl-Clone-for-PacketSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.PacketSent.html" title="struct qlog::events::quic::PacketSent">PacketSent</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#643">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.PacketSent.html" title="struct qlog::events::quic::PacketSent">PacketSent</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-PacketSent" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#643">source</a><a href="#impl-Debug-for-PacketSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.PacketSent.html" title="struct qlog::events::quic::PacketSent">PacketSent</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#643">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-PacketSent" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#643">source</a><a href="#impl-Deserialize%3C'de%3E-for-PacketSent" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.PacketSent.html" title="struct qlog::events::quic::PacketSent">PacketSent</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#643">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-PacketSent" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#643">source</a><a href="#impl-PartialEq-for-PacketSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.PacketSent.html" title="struct qlog::events::quic::PacketSent">PacketSent</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#643">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.PacketSent.html" title="struct qlog::events::quic::PacketSent">PacketSent</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-PacketSent" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#643">source</a><a href="#impl-Serialize-for-PacketSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.PacketSent.html" title="struct qlog::events::quic::PacketSent">PacketSent</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#643">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-StructuralPartialEq-for-PacketSent" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#643">source</a><a href="#impl-StructuralPartialEq-for-PacketSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.PacketSent.html" title="struct qlog::events::quic::PacketSent">PacketSent</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-PacketSent" class="impl"><a href="#impl-Freeze-for-PacketSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.PacketSent.html" title="struct qlog::events::quic::PacketSent">PacketSent</a></h3></section><section id="impl-RefUnwindSafe-for-PacketSent" class="impl"><a href="#impl-RefUnwindSafe-for-PacketSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.PacketSent.html" title="struct qlog::events::quic::PacketSent">PacketSent</a></h3></section><section id="impl-Send-for-PacketSent" class="impl"><a href="#impl-Send-for-PacketSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.PacketSent.html" title="struct qlog::events::quic::PacketSent">PacketSent</a></h3></section><section id="impl-Sync-for-PacketSent" class="impl"><a href="#impl-Sync-for-PacketSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.PacketSent.html" title="struct qlog::events::quic::PacketSent">PacketSent</a></h3></section><section id="impl-Unpin-for-PacketSent" class="impl"><a href="#impl-Unpin-for-PacketSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.PacketSent.html" title="struct qlog::events::quic::PacketSent">PacketSent</a></h3></section><section id="impl-UnwindSafe-for-PacketSent" class="impl"><a href="#impl-UnwindSafe-for-PacketSent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.PacketSent.html" title="struct qlog::events::quic::PacketSent">PacketSent</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.PacketsAcked.html b/qlog/events/quic/struct.PacketsAcked.html
new file mode 100644
index 0000000..68bd670
--- /dev/null
+++ b/qlog/events/quic/struct.PacketsAcked.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `PacketsAcked` struct in crate `qlog`."><title>PacketsAcked in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">PacketsAcked</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.packet_number_space">packet_number_space</a></li><li><a href="#structfield.packet_numbers">packet_numbers</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-PacketsAcked">Clone</a></li><li><a href="#impl-Debug-for-PacketsAcked">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-PacketsAcked">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-PacketsAcked">Eq</a></li><li><a href="#impl-PartialEq-for-PacketsAcked">PartialEq</a></li><li><a href="#impl-Serialize-for-PacketsAcked">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-PacketsAcked">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-PacketsAcked">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-PacketsAcked">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PacketsAcked">Send</a></li><li><a href="#impl-Sync-for-PacketsAcked">Sync</a></li><li><a href="#impl-Unpin-for-PacketsAcked">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PacketsAcked">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">PacketsAcked</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#693-696">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct PacketsAcked {
+    pub packet_number_space: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a>&gt;,
+    pub packet_numbers: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.packet_number_space" class="structfield section-header"><a href="#structfield.packet_number_space" class="anchor field">§</a><code>packet_number_space: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.PacketNumberSpace.html" title="enum qlog::events::quic::PacketNumberSpace">PacketNumberSpace</a>&gt;</code></span><span id="structfield.packet_numbers" class="structfield section-header"><a href="#structfield.packet_numbers" class="anchor field">§</a><code>packet_numbers: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PacketsAcked" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#692">source</a><a href="#impl-Clone-for-PacketsAcked" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.PacketsAcked.html" title="struct qlog::events::quic::PacketsAcked">PacketsAcked</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#692">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.PacketsAcked.html" title="struct qlog::events::quic::PacketsAcked">PacketsAcked</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-PacketsAcked" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#692">source</a><a href="#impl-Debug-for-PacketsAcked" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.PacketsAcked.html" title="struct qlog::events::quic::PacketsAcked">PacketsAcked</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#692">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-PacketsAcked" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#692">source</a><a href="#impl-Deserialize%3C'de%3E-for-PacketsAcked" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.PacketsAcked.html" title="struct qlog::events::quic::PacketsAcked">PacketsAcked</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#692">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-PacketsAcked" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#692">source</a><a href="#impl-PartialEq-for-PacketsAcked" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.PacketsAcked.html" title="struct qlog::events::quic::PacketsAcked">PacketsAcked</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#692">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.PacketsAcked.html" title="struct qlog::events::quic::PacketsAcked">PacketsAcked</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-PacketsAcked" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#692">source</a><a href="#impl-Serialize-for-PacketsAcked" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.PacketsAcked.html" title="struct qlog::events::quic::PacketsAcked">PacketsAcked</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#692">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-PacketsAcked" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#692">source</a><a href="#impl-Eq-for-PacketsAcked" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.PacketsAcked.html" title="struct qlog::events::quic::PacketsAcked">PacketsAcked</a></h3></section><section id="impl-StructuralPartialEq-for-PacketsAcked" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#692">source</a><a href="#impl-StructuralPartialEq-for-PacketsAcked" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.PacketsAcked.html" title="struct qlog::events::quic::PacketsAcked">PacketsAcked</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-PacketsAcked" class="impl"><a href="#impl-Freeze-for-PacketsAcked" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.PacketsAcked.html" title="struct qlog::events::quic::PacketsAcked">PacketsAcked</a></h3></section><section id="impl-RefUnwindSafe-for-PacketsAcked" class="impl"><a href="#impl-RefUnwindSafe-for-PacketsAcked" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.PacketsAcked.html" title="struct qlog::events::quic::PacketsAcked">PacketsAcked</a></h3></section><section id="impl-Send-for-PacketsAcked" class="impl"><a href="#impl-Send-for-PacketsAcked" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.PacketsAcked.html" title="struct qlog::events::quic::PacketsAcked">PacketsAcked</a></h3></section><section id="impl-Sync-for-PacketsAcked" class="impl"><a href="#impl-Sync-for-PacketsAcked" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.PacketsAcked.html" title="struct qlog::events::quic::PacketsAcked">PacketsAcked</a></h3></section><section id="impl-Unpin-for-PacketsAcked" class="impl"><a href="#impl-Unpin-for-PacketsAcked" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.PacketsAcked.html" title="struct qlog::events::quic::PacketsAcked">PacketsAcked</a></h3></section><section id="impl-UnwindSafe-for-PacketsAcked" class="impl"><a href="#impl-UnwindSafe-for-PacketsAcked" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.PacketsAcked.html" title="struct qlog::events::quic::PacketsAcked">PacketsAcked</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.PreferredAddress.html b/qlog/events/quic/struct.PreferredAddress.html
new file mode 100644
index 0000000..3a5e365
--- /dev/null
+++ b/qlog/events/quic/struct.PreferredAddress.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `PreferredAddress` struct in crate `qlog`."><title>PreferredAddress in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">PreferredAddress</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.connection_id">connection_id</a></li><li><a href="#structfield.ip_v4">ip_v4</a></li><li><a href="#structfield.ip_v6">ip_v6</a></li><li><a href="#structfield.port_v4">port_v4</a></li><li><a href="#structfield.port_v6">port_v6</a></li><li><a href="#structfield.stateless_reset_token">stateless_reset_token</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-PreferredAddress">Clone</a></li><li><a href="#impl-Debug-for-PreferredAddress">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-PreferredAddress">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-PreferredAddress">Eq</a></li><li><a href="#impl-PartialEq-for-PreferredAddress">PartialEq</a></li><li><a href="#impl-Serialize-for-PreferredAddress">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-PreferredAddress">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-PreferredAddress">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-PreferredAddress">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PreferredAddress">Send</a></li><li><a href="#impl-Sync-for-PreferredAddress">Sync</a></li><li><a href="#impl-Unpin-for-PreferredAddress">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PreferredAddress">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">PreferredAddress</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#517-526">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct PreferredAddress {
+    pub ip_v4: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub ip_v6: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub port_v4: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>,
+    pub port_v6: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>,
+    pub connection_id: <a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>,
+    pub stateless_reset_token: <a class="type" href="../../type.StatelessResetToken.html" title="type qlog::StatelessResetToken">StatelessResetToken</a>,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.ip_v4" class="structfield section-header"><a href="#structfield.ip_v4" class="anchor field">§</a><code>ip_v4: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.ip_v6" class="structfield section-header"><a href="#structfield.ip_v6" class="anchor field">§</a><code>ip_v6: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.port_v4" class="structfield section-header"><a href="#structfield.port_v4" class="anchor field">§</a><code>port_v4: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a></code></span><span id="structfield.port_v6" class="structfield section-header"><a href="#structfield.port_v6" class="anchor field">§</a><code>port_v6: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a></code></span><span id="structfield.connection_id" class="structfield section-header"><a href="#structfield.connection_id" class="anchor field">§</a><code>connection_id: <a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a></code></span><span id="structfield.stateless_reset_token" class="structfield section-header"><a href="#structfield.stateless_reset_token" class="anchor field">§</a><code>stateless_reset_token: <a class="type" href="../../type.StatelessResetToken.html" title="type qlog::StatelessResetToken">StatelessResetToken</a></code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PreferredAddress" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#516">source</a><a href="#impl-Clone-for-PreferredAddress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.PreferredAddress.html" title="struct qlog::events::quic::PreferredAddress">PreferredAddress</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#516">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.PreferredAddress.html" title="struct qlog::events::quic::PreferredAddress">PreferredAddress</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-PreferredAddress" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#516">source</a><a href="#impl-Debug-for-PreferredAddress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.PreferredAddress.html" title="struct qlog::events::quic::PreferredAddress">PreferredAddress</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#516">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-PreferredAddress" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#516">source</a><a href="#impl-Deserialize%3C'de%3E-for-PreferredAddress" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.PreferredAddress.html" title="struct qlog::events::quic::PreferredAddress">PreferredAddress</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#516">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-PreferredAddress" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#516">source</a><a href="#impl-PartialEq-for-PreferredAddress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.PreferredAddress.html" title="struct qlog::events::quic::PreferredAddress">PreferredAddress</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#516">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.PreferredAddress.html" title="struct qlog::events::quic::PreferredAddress">PreferredAddress</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-PreferredAddress" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#516">source</a><a href="#impl-Serialize-for-PreferredAddress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.PreferredAddress.html" title="struct qlog::events::quic::PreferredAddress">PreferredAddress</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#516">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-PreferredAddress" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#516">source</a><a href="#impl-Eq-for-PreferredAddress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.PreferredAddress.html" title="struct qlog::events::quic::PreferredAddress">PreferredAddress</a></h3></section><section id="impl-StructuralPartialEq-for-PreferredAddress" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#516">source</a><a href="#impl-StructuralPartialEq-for-PreferredAddress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.PreferredAddress.html" title="struct qlog::events::quic::PreferredAddress">PreferredAddress</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-PreferredAddress" class="impl"><a href="#impl-Freeze-for-PreferredAddress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.PreferredAddress.html" title="struct qlog::events::quic::PreferredAddress">PreferredAddress</a></h3></section><section id="impl-RefUnwindSafe-for-PreferredAddress" class="impl"><a href="#impl-RefUnwindSafe-for-PreferredAddress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.PreferredAddress.html" title="struct qlog::events::quic::PreferredAddress">PreferredAddress</a></h3></section><section id="impl-Send-for-PreferredAddress" class="impl"><a href="#impl-Send-for-PreferredAddress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.PreferredAddress.html" title="struct qlog::events::quic::PreferredAddress">PreferredAddress</a></h3></section><section id="impl-Sync-for-PreferredAddress" class="impl"><a href="#impl-Sync-for-PreferredAddress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.PreferredAddress.html" title="struct qlog::events::quic::PreferredAddress">PreferredAddress</a></h3></section><section id="impl-Unpin-for-PreferredAddress" class="impl"><a href="#impl-Unpin-for-PreferredAddress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.PreferredAddress.html" title="struct qlog::events::quic::PreferredAddress">PreferredAddress</a></h3></section><section id="impl-UnwindSafe-for-PreferredAddress" class="impl"><a href="#impl-UnwindSafe-for-PreferredAddress" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.PreferredAddress.html" title="struct qlog::events::quic::PreferredAddress">PreferredAddress</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.RecoveryParametersSet.html b/qlog/events/quic/struct.RecoveryParametersSet.html
new file mode 100644
index 0000000..106398e
--- /dev/null
+++ b/qlog/events/quic/struct.RecoveryParametersSet.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `RecoveryParametersSet` struct in crate `qlog`."><title>RecoveryParametersSet in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">RecoveryParametersSet</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.initial_congestion_window">initial_congestion_window</a></li><li><a href="#structfield.initial_rtt">initial_rtt</a></li><li><a href="#structfield.loss_reduction_factor">loss_reduction_factor</a></li><li><a href="#structfield.max_datagram_size">max_datagram_size</a></li><li><a href="#structfield.minimum_congestion_window">minimum_congestion_window</a></li><li><a href="#structfield.persistent_congestion_threshold">persistent_congestion_threshold</a></li><li><a href="#structfield.reordering_threshold">reordering_threshold</a></li><li><a href="#structfield.time_threshold">time_threshold</a></li><li><a href="#structfield.timer_granularity">timer_granularity</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-RecoveryParametersSet">Clone</a></li><li><a href="#impl-Debug-for-RecoveryParametersSet">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-RecoveryParametersSet">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-PartialEq-for-RecoveryParametersSet">PartialEq</a></li><li><a href="#impl-Serialize-for-RecoveryParametersSet">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-RecoveryParametersSet">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-RecoveryParametersSet">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-RecoveryParametersSet">RefUnwindSafe</a></li><li><a href="#impl-Send-for-RecoveryParametersSet">Send</a></li><li><a href="#impl-Sync-for-RecoveryParametersSet">Sync</a></li><li><a href="#impl-Unpin-for-RecoveryParametersSet">Unpin</a></li><li><a href="#impl-UnwindSafe-for-RecoveryParametersSet">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">RecoveryParametersSet</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#733-744">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct RecoveryParametersSet {
+    pub reordering_threshold: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;,
+    pub time_threshold: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;,
+    pub timer_granularity: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;,
+    pub initial_rtt: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;,
+    pub max_datagram_size: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+    pub initial_congestion_window: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub minimum_congestion_window: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+    pub loss_reduction_factor: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;,
+    pub persistent_congestion_threshold: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.reordering_threshold" class="structfield section-header"><a href="#structfield.reordering_threshold" class="anchor field">§</a><code>reordering_threshold: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;</code></span><span id="structfield.time_threshold" class="structfield section-header"><a href="#structfield.time_threshold" class="anchor field">§</a><code>time_threshold: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;</code></span><span id="structfield.timer_granularity" class="structfield section-header"><a href="#structfield.timer_granularity" class="anchor field">§</a><code>timer_granularity: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;</code></span><span id="structfield.initial_rtt" class="structfield section-header"><a href="#structfield.initial_rtt" class="anchor field">§</a><code>initial_rtt: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;</code></span><span id="structfield.max_datagram_size" class="structfield section-header"><a href="#structfield.max_datagram_size" class="anchor field">§</a><code>max_datagram_size: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span><span id="structfield.initial_congestion_window" class="structfield section-header"><a href="#structfield.initial_congestion_window" class="anchor field">§</a><code>initial_congestion_window: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.minimum_congestion_window" class="structfield section-header"><a href="#structfield.minimum_congestion_window" class="anchor field">§</a><code>minimum_congestion_window: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span><span id="structfield.loss_reduction_factor" class="structfield section-header"><a href="#structfield.loss_reduction_factor" class="anchor field">§</a><code>loss_reduction_factor: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>&gt;</code></span><span id="structfield.persistent_congestion_threshold" class="structfield section-header"><a href="#structfield.persistent_congestion_threshold" class="anchor field">§</a><code>persistent_congestion_threshold: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-RecoveryParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#732">source</a><a href="#impl-Clone-for-RecoveryParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.RecoveryParametersSet.html" title="struct qlog::events::quic::RecoveryParametersSet">RecoveryParametersSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#732">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.RecoveryParametersSet.html" title="struct qlog::events::quic::RecoveryParametersSet">RecoveryParametersSet</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-RecoveryParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#732">source</a><a href="#impl-Debug-for-RecoveryParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.RecoveryParametersSet.html" title="struct qlog::events::quic::RecoveryParametersSet">RecoveryParametersSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#732">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-RecoveryParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#732">source</a><a href="#impl-Deserialize%3C'de%3E-for-RecoveryParametersSet" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.RecoveryParametersSet.html" title="struct qlog::events::quic::RecoveryParametersSet">RecoveryParametersSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#732">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-RecoveryParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#732">source</a><a href="#impl-PartialEq-for-RecoveryParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.RecoveryParametersSet.html" title="struct qlog::events::quic::RecoveryParametersSet">RecoveryParametersSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#732">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.RecoveryParametersSet.html" title="struct qlog::events::quic::RecoveryParametersSet">RecoveryParametersSet</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-RecoveryParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#732">source</a><a href="#impl-Serialize-for-RecoveryParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.RecoveryParametersSet.html" title="struct qlog::events::quic::RecoveryParametersSet">RecoveryParametersSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#732">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-StructuralPartialEq-for-RecoveryParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#732">source</a><a href="#impl-StructuralPartialEq-for-RecoveryParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.RecoveryParametersSet.html" title="struct qlog::events::quic::RecoveryParametersSet">RecoveryParametersSet</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-RecoveryParametersSet" class="impl"><a href="#impl-Freeze-for-RecoveryParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.RecoveryParametersSet.html" title="struct qlog::events::quic::RecoveryParametersSet">RecoveryParametersSet</a></h3></section><section id="impl-RefUnwindSafe-for-RecoveryParametersSet" class="impl"><a href="#impl-RefUnwindSafe-for-RecoveryParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.RecoveryParametersSet.html" title="struct qlog::events::quic::RecoveryParametersSet">RecoveryParametersSet</a></h3></section><section id="impl-Send-for-RecoveryParametersSet" class="impl"><a href="#impl-Send-for-RecoveryParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.RecoveryParametersSet.html" title="struct qlog::events::quic::RecoveryParametersSet">RecoveryParametersSet</a></h3></section><section id="impl-Sync-for-RecoveryParametersSet" class="impl"><a href="#impl-Sync-for-RecoveryParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.RecoveryParametersSet.html" title="struct qlog::events::quic::RecoveryParametersSet">RecoveryParametersSet</a></h3></section><section id="impl-Unpin-for-RecoveryParametersSet" class="impl"><a href="#impl-Unpin-for-RecoveryParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.RecoveryParametersSet.html" title="struct qlog::events::quic::RecoveryParametersSet">RecoveryParametersSet</a></h3></section><section id="impl-UnwindSafe-for-RecoveryParametersSet" class="impl"><a href="#impl-UnwindSafe-for-RecoveryParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.RecoveryParametersSet.html" title="struct qlog::events::quic::RecoveryParametersSet">RecoveryParametersSet</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.StreamStateUpdated.html b/qlog/events/quic/struct.StreamStateUpdated.html
new file mode 100644
index 0000000..d638db6
--- /dev/null
+++ b/qlog/events/quic/struct.StreamStateUpdated.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `StreamStateUpdated` struct in crate `qlog`."><title>StreamStateUpdated in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">StreamStateUpdated</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.new">new</a></li><li><a href="#structfield.old">old</a></li><li><a href="#structfield.stream_id">stream_id</a></li><li><a href="#structfield.stream_side">stream_side</a></li><li><a href="#structfield.stream_type">stream_type</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-StreamStateUpdated">Clone</a></li><li><a href="#impl-Debug-for-StreamStateUpdated">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-StreamStateUpdated">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-StreamStateUpdated">Eq</a></li><li><a href="#impl-PartialEq-for-StreamStateUpdated">PartialEq</a></li><li><a href="#impl-Serialize-for-StreamStateUpdated">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-StreamStateUpdated">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-StreamStateUpdated">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-StreamStateUpdated">RefUnwindSafe</a></li><li><a href="#impl-Send-for-StreamStateUpdated">Send</a></li><li><a href="#impl-Sync-for-StreamStateUpdated">Sync</a></li><li><a href="#impl-Unpin-for-StreamStateUpdated">Unpin</a></li><li><a href="#impl-UnwindSafe-for-StreamStateUpdated">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">StreamStateUpdated</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#700-708">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct StreamStateUpdated {
+    pub stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub stream_type: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a>&gt;,
+    pub old: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a>&gt;,
+    pub new: <a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a>,
+    pub stream_side: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.StreamSide.html" title="enum qlog::events::quic::StreamSide">StreamSide</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.stream_id" class="structfield section-header"><a href="#structfield.stream_id" class="anchor field">§</a><code>stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span id="structfield.stream_type" class="structfield section-header"><a href="#structfield.stream_type" class="anchor field">§</a><code>stream_type: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.StreamType.html" title="enum qlog::events::quic::StreamType">StreamType</a>&gt;</code></span><span id="structfield.old" class="structfield section-header"><a href="#structfield.old" class="anchor field">§</a><code>old: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a>&gt;</code></span><span id="structfield.new" class="structfield section-header"><a href="#structfield.new" class="anchor field">§</a><code>new: <a class="enum" href="enum.StreamState.html" title="enum qlog::events::quic::StreamState">StreamState</a></code></span><span id="structfield.stream_side" class="structfield section-header"><a href="#structfield.stream_side" class="anchor field">§</a><code>stream_side: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.StreamSide.html" title="enum qlog::events::quic::StreamSide">StreamSide</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-StreamStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#699">source</a><a href="#impl-Clone-for-StreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.StreamStateUpdated.html" title="struct qlog::events::quic::StreamStateUpdated">StreamStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#699">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.StreamStateUpdated.html" title="struct qlog::events::quic::StreamStateUpdated">StreamStateUpdated</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-StreamStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#699">source</a><a href="#impl-Debug-for-StreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.StreamStateUpdated.html" title="struct qlog::events::quic::StreamStateUpdated">StreamStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#699">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-StreamStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#699">source</a><a href="#impl-Deserialize%3C'de%3E-for-StreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.StreamStateUpdated.html" title="struct qlog::events::quic::StreamStateUpdated">StreamStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#699">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-StreamStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#699">source</a><a href="#impl-PartialEq-for-StreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.StreamStateUpdated.html" title="struct qlog::events::quic::StreamStateUpdated">StreamStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#699">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.StreamStateUpdated.html" title="struct qlog::events::quic::StreamStateUpdated">StreamStateUpdated</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-StreamStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#699">source</a><a href="#impl-Serialize-for-StreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.StreamStateUpdated.html" title="struct qlog::events::quic::StreamStateUpdated">StreamStateUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#699">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-StreamStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#699">source</a><a href="#impl-Eq-for-StreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.StreamStateUpdated.html" title="struct qlog::events::quic::StreamStateUpdated">StreamStateUpdated</a></h3></section><section id="impl-StructuralPartialEq-for-StreamStateUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#699">source</a><a href="#impl-StructuralPartialEq-for-StreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.StreamStateUpdated.html" title="struct qlog::events::quic::StreamStateUpdated">StreamStateUpdated</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-StreamStateUpdated" class="impl"><a href="#impl-Freeze-for-StreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.StreamStateUpdated.html" title="struct qlog::events::quic::StreamStateUpdated">StreamStateUpdated</a></h3></section><section id="impl-RefUnwindSafe-for-StreamStateUpdated" class="impl"><a href="#impl-RefUnwindSafe-for-StreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.StreamStateUpdated.html" title="struct qlog::events::quic::StreamStateUpdated">StreamStateUpdated</a></h3></section><section id="impl-Send-for-StreamStateUpdated" class="impl"><a href="#impl-Send-for-StreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.StreamStateUpdated.html" title="struct qlog::events::quic::StreamStateUpdated">StreamStateUpdated</a></h3></section><section id="impl-Sync-for-StreamStateUpdated" class="impl"><a href="#impl-Sync-for-StreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.StreamStateUpdated.html" title="struct qlog::events::quic::StreamStateUpdated">StreamStateUpdated</a></h3></section><section id="impl-Unpin-for-StreamStateUpdated" class="impl"><a href="#impl-Unpin-for-StreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.StreamStateUpdated.html" title="struct qlog::events::quic::StreamStateUpdated">StreamStateUpdated</a></h3></section><section id="impl-UnwindSafe-for-StreamStateUpdated" class="impl"><a href="#impl-UnwindSafe-for-StreamStateUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.StreamStateUpdated.html" title="struct qlog::events::quic::StreamStateUpdated">StreamStateUpdated</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.TransportParametersRestored.html b/qlog/events/quic/struct.TransportParametersRestored.html
new file mode 100644
index 0000000..76c82a6
--- /dev/null
+++ b/qlog/events/quic/struct.TransportParametersRestored.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `TransportParametersRestored` struct in crate `qlog`."><title>TransportParametersRestored in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">TransportParametersRestored</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.active_connection_id_limit">active_connection_id_limit</a></li><li><a href="#structfield.disable_active_migration">disable_active_migration</a></li><li><a href="#structfield.initial_max_data">initial_max_data</a></li><li><a href="#structfield.initial_max_stream_data_bidi_local">initial_max_stream_data_bidi_local</a></li><li><a href="#structfield.initial_max_stream_data_bidi_remote">initial_max_stream_data_bidi_remote</a></li><li><a href="#structfield.initial_max_stream_data_uni">initial_max_stream_data_uni</a></li><li><a href="#structfield.initial_max_streams_bidi">initial_max_streams_bidi</a></li><li><a href="#structfield.initial_max_streams_uni">initial_max_streams_uni</a></li><li><a href="#structfield.max_idle_timeout">max_idle_timeout</a></li><li><a href="#structfield.max_udp_payload_size">max_udp_payload_size</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-TransportParametersRestored">Clone</a></li><li><a href="#impl-Debug-for-TransportParametersRestored">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-TransportParametersRestored">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-TransportParametersRestored">Eq</a></li><li><a href="#impl-PartialEq-for-TransportParametersRestored">PartialEq</a></li><li><a href="#impl-Serialize-for-TransportParametersRestored">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-TransportParametersRestored">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-TransportParametersRestored">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-TransportParametersRestored">RefUnwindSafe</a></li><li><a href="#impl-Send-for-TransportParametersRestored">Send</a></li><li><a href="#impl-Sync-for-TransportParametersRestored">Sync</a></li><li><a href="#impl-Unpin-for-TransportParametersRestored">Unpin</a></li><li><a href="#impl-UnwindSafe-for-TransportParametersRestored">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">TransportParametersRestored</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#578-591">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct TransportParametersRestored {
+    pub disable_active_migration: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;,
+    pub max_idle_timeout: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub max_udp_payload_size: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+    pub active_connection_id_limit: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+    pub initial_max_data: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub initial_max_stream_data_bidi_local: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub initial_max_stream_data_bidi_remote: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub initial_max_stream_data_uni: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub initial_max_streams_bidi: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub initial_max_streams_uni: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.disable_active_migration" class="structfield section-header"><a href="#structfield.disable_active_migration" class="anchor field">§</a><code>disable_active_migration: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</code></span><span id="structfield.max_idle_timeout" class="structfield section-header"><a href="#structfield.max_idle_timeout" class="anchor field">§</a><code>max_idle_timeout: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.max_udp_payload_size" class="structfield section-header"><a href="#structfield.max_udp_payload_size" class="anchor field">§</a><code>max_udp_payload_size: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span><span id="structfield.active_connection_id_limit" class="structfield section-header"><a href="#structfield.active_connection_id_limit" class="anchor field">§</a><code>active_connection_id_limit: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span><span id="structfield.initial_max_data" class="structfield section-header"><a href="#structfield.initial_max_data" class="anchor field">§</a><code>initial_max_data: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.initial_max_stream_data_bidi_local" class="structfield section-header"><a href="#structfield.initial_max_stream_data_bidi_local" class="anchor field">§</a><code>initial_max_stream_data_bidi_local: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.initial_max_stream_data_bidi_remote" class="structfield section-header"><a href="#structfield.initial_max_stream_data_bidi_remote" class="anchor field">§</a><code>initial_max_stream_data_bidi_remote: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.initial_max_stream_data_uni" class="structfield section-header"><a href="#structfield.initial_max_stream_data_uni" class="anchor field">§</a><code>initial_max_stream_data_uni: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.initial_max_streams_bidi" class="structfield section-header"><a href="#structfield.initial_max_streams_bidi" class="anchor field">§</a><code>initial_max_streams_bidi: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.initial_max_streams_uni" class="structfield section-header"><a href="#structfield.initial_max_streams_uni" class="anchor field">§</a><code>initial_max_streams_uni: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-TransportParametersRestored" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#577">source</a><a href="#impl-Clone-for-TransportParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.TransportParametersRestored.html" title="struct qlog::events::quic::TransportParametersRestored">TransportParametersRestored</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#577">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.TransportParametersRestored.html" title="struct qlog::events::quic::TransportParametersRestored">TransportParametersRestored</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-TransportParametersRestored" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#577">source</a><a href="#impl-Debug-for-TransportParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.TransportParametersRestored.html" title="struct qlog::events::quic::TransportParametersRestored">TransportParametersRestored</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#577">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-TransportParametersRestored" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#577">source</a><a href="#impl-Deserialize%3C'de%3E-for-TransportParametersRestored" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.TransportParametersRestored.html" title="struct qlog::events::quic::TransportParametersRestored">TransportParametersRestored</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#577">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-TransportParametersRestored" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#577">source</a><a href="#impl-PartialEq-for-TransportParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.TransportParametersRestored.html" title="struct qlog::events::quic::TransportParametersRestored">TransportParametersRestored</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#577">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.TransportParametersRestored.html" title="struct qlog::events::quic::TransportParametersRestored">TransportParametersRestored</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-TransportParametersRestored" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#577">source</a><a href="#impl-Serialize-for-TransportParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.TransportParametersRestored.html" title="struct qlog::events::quic::TransportParametersRestored">TransportParametersRestored</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#577">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-TransportParametersRestored" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#577">source</a><a href="#impl-Eq-for-TransportParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.TransportParametersRestored.html" title="struct qlog::events::quic::TransportParametersRestored">TransportParametersRestored</a></h3></section><section id="impl-StructuralPartialEq-for-TransportParametersRestored" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#577">source</a><a href="#impl-StructuralPartialEq-for-TransportParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.TransportParametersRestored.html" title="struct qlog::events::quic::TransportParametersRestored">TransportParametersRestored</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-TransportParametersRestored" class="impl"><a href="#impl-Freeze-for-TransportParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.TransportParametersRestored.html" title="struct qlog::events::quic::TransportParametersRestored">TransportParametersRestored</a></h3></section><section id="impl-RefUnwindSafe-for-TransportParametersRestored" class="impl"><a href="#impl-RefUnwindSafe-for-TransportParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.TransportParametersRestored.html" title="struct qlog::events::quic::TransportParametersRestored">TransportParametersRestored</a></h3></section><section id="impl-Send-for-TransportParametersRestored" class="impl"><a href="#impl-Send-for-TransportParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.TransportParametersRestored.html" title="struct qlog::events::quic::TransportParametersRestored">TransportParametersRestored</a></h3></section><section id="impl-Sync-for-TransportParametersRestored" class="impl"><a href="#impl-Sync-for-TransportParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.TransportParametersRestored.html" title="struct qlog::events::quic::TransportParametersRestored">TransportParametersRestored</a></h3></section><section id="impl-Unpin-for-TransportParametersRestored" class="impl"><a href="#impl-Unpin-for-TransportParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.TransportParametersRestored.html" title="struct qlog::events::quic::TransportParametersRestored">TransportParametersRestored</a></h3></section><section id="impl-UnwindSafe-for-TransportParametersRestored" class="impl"><a href="#impl-UnwindSafe-for-TransportParametersRestored" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.TransportParametersRestored.html" title="struct qlog::events::quic::TransportParametersRestored">TransportParametersRestored</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.TransportParametersSet.html b/qlog/events/quic/struct.TransportParametersSet.html
new file mode 100644
index 0000000..7b5523e
--- /dev/null
+++ b/qlog/events/quic/struct.TransportParametersSet.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `TransportParametersSet` struct in crate `qlog`."><title>TransportParametersSet in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">TransportParametersSet</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.ack_delay_exponent">ack_delay_exponent</a></li><li><a href="#structfield.active_connection_id_limit">active_connection_id_limit</a></li><li><a href="#structfield.aead_tag_length">aead_tag_length</a></li><li><a href="#structfield.disable_active_migration">disable_active_migration</a></li><li><a href="#structfield.early_data_enabled">early_data_enabled</a></li><li><a href="#structfield.initial_max_data">initial_max_data</a></li><li><a href="#structfield.initial_max_stream_data_bidi_local">initial_max_stream_data_bidi_local</a></li><li><a href="#structfield.initial_max_stream_data_bidi_remote">initial_max_stream_data_bidi_remote</a></li><li><a href="#structfield.initial_max_stream_data_uni">initial_max_stream_data_uni</a></li><li><a href="#structfield.initial_max_streams_bidi">initial_max_streams_bidi</a></li><li><a href="#structfield.initial_max_streams_uni">initial_max_streams_uni</a></li><li><a href="#structfield.initial_source_connection_id">initial_source_connection_id</a></li><li><a href="#structfield.max_ack_delay">max_ack_delay</a></li><li><a href="#structfield.max_idle_timeout">max_idle_timeout</a></li><li><a href="#structfield.max_udp_payload_size">max_udp_payload_size</a></li><li><a href="#structfield.original_destination_connection_id">original_destination_connection_id</a></li><li><a href="#structfield.owner">owner</a></li><li><a href="#structfield.preferred_address">preferred_address</a></li><li><a href="#structfield.resumption_allowed">resumption_allowed</a></li><li><a href="#structfield.retry_source_connection_id">retry_source_connection_id</a></li><li><a href="#structfield.stateless_reset_token">stateless_reset_token</a></li><li><a href="#structfield.tls_cipher">tls_cipher</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-TransportParametersSet">Clone</a></li><li><a href="#impl-Debug-for-TransportParametersSet">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-TransportParametersSet">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-TransportParametersSet">Eq</a></li><li><a href="#impl-PartialEq-for-TransportParametersSet">PartialEq</a></li><li><a href="#impl-Serialize-for-TransportParametersSet">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-TransportParametersSet">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-TransportParametersSet">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-TransportParametersSet">RefUnwindSafe</a></li><li><a href="#impl-Send-for-TransportParametersSet">Send</a></li><li><a href="#impl-Sync-for-TransportParametersSet">Sync</a></li><li><a href="#impl-Unpin-for-TransportParametersSet">Unpin</a></li><li><a href="#impl-UnwindSafe-for-TransportParametersSet">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">TransportParametersSet</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#546-574">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct TransportParametersSet {<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 22 fields</span></summary>
+    pub owner: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="../connectivity/enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a>&gt;,
+    pub resumption_allowed: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;,
+    pub early_data_enabled: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;,
+    pub tls_cipher: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub aead_tag_length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;,
+    pub original_destination_connection_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;,
+    pub initial_source_connection_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;,
+    pub retry_source_connection_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;,
+    pub stateless_reset_token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.StatelessResetToken.html" title="type qlog::StatelessResetToken">StatelessResetToken</a>&gt;,
+    pub disable_active_migration: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;,
+    pub max_idle_timeout: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub max_udp_payload_size: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+    pub ack_delay_exponent: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;,
+    pub max_ack_delay: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;,
+    pub active_connection_id_limit: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+    pub initial_max_data: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub initial_max_stream_data_bidi_local: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub initial_max_stream_data_bidi_remote: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub initial_max_stream_data_uni: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub initial_max_streams_bidi: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub initial_max_streams_uni: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub preferred_address: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.PreferredAddress.html" title="struct qlog::events::quic::PreferredAddress">PreferredAddress</a>&gt;,
+</details>}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.owner" class="structfield section-header"><a href="#structfield.owner" class="anchor field">§</a><code>owner: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="../connectivity/enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a>&gt;</code></span><span id="structfield.resumption_allowed" class="structfield section-header"><a href="#structfield.resumption_allowed" class="anchor field">§</a><code>resumption_allowed: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</code></span><span id="structfield.early_data_enabled" class="structfield section-header"><a href="#structfield.early_data_enabled" class="anchor field">§</a><code>early_data_enabled: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</code></span><span id="structfield.tls_cipher" class="structfield section-header"><a href="#structfield.tls_cipher" class="anchor field">§</a><code>tls_cipher: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.aead_tag_length" class="structfield section-header"><a href="#structfield.aead_tag_length" class="anchor field">§</a><code>aead_tag_length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</code></span><span id="structfield.original_destination_connection_id" class="structfield section-header"><a href="#structfield.original_destination_connection_id" class="anchor field">§</a><code>original_destination_connection_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;</code></span><span id="structfield.initial_source_connection_id" class="structfield section-header"><a href="#structfield.initial_source_connection_id" class="anchor field">§</a><code>initial_source_connection_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;</code></span><span id="structfield.retry_source_connection_id" class="structfield section-header"><a href="#structfield.retry_source_connection_id" class="anchor field">§</a><code>retry_source_connection_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;</code></span><span id="structfield.stateless_reset_token" class="structfield section-header"><a href="#structfield.stateless_reset_token" class="anchor field">§</a><code>stateless_reset_token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.StatelessResetToken.html" title="type qlog::StatelessResetToken">StatelessResetToken</a>&gt;</code></span><span id="structfield.disable_active_migration" class="structfield section-header"><a href="#structfield.disable_active_migration" class="anchor field">§</a><code>disable_active_migration: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</code></span><span id="structfield.max_idle_timeout" class="structfield section-header"><a href="#structfield.max_idle_timeout" class="anchor field">§</a><code>max_idle_timeout: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.max_udp_payload_size" class="structfield section-header"><a href="#structfield.max_udp_payload_size" class="anchor field">§</a><code>max_udp_payload_size: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span><span id="structfield.ack_delay_exponent" class="structfield section-header"><a href="#structfield.ack_delay_exponent" class="anchor field">§</a><code>ack_delay_exponent: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;</code></span><span id="structfield.max_ack_delay" class="structfield section-header"><a href="#structfield.max_ack_delay" class="anchor field">§</a><code>max_ack_delay: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>&gt;</code></span><span id="structfield.active_connection_id_limit" class="structfield section-header"><a href="#structfield.active_connection_id_limit" class="anchor field">§</a><code>active_connection_id_limit: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span><span id="structfield.initial_max_data" class="structfield section-header"><a href="#structfield.initial_max_data" class="anchor field">§</a><code>initial_max_data: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.initial_max_stream_data_bidi_local" class="structfield section-header"><a href="#structfield.initial_max_stream_data_bidi_local" class="anchor field">§</a><code>initial_max_stream_data_bidi_local: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.initial_max_stream_data_bidi_remote" class="structfield section-header"><a href="#structfield.initial_max_stream_data_bidi_remote" class="anchor field">§</a><code>initial_max_stream_data_bidi_remote: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.initial_max_stream_data_uni" class="structfield section-header"><a href="#structfield.initial_max_stream_data_uni" class="anchor field">§</a><code>initial_max_stream_data_uni: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.initial_max_streams_bidi" class="structfield section-header"><a href="#structfield.initial_max_streams_bidi" class="anchor field">§</a><code>initial_max_streams_bidi: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.initial_max_streams_uni" class="structfield section-header"><a href="#structfield.initial_max_streams_uni" class="anchor field">§</a><code>initial_max_streams_uni: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.preferred_address" class="structfield section-header"><a href="#structfield.preferred_address" class="anchor field">§</a><code>preferred_address: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.PreferredAddress.html" title="struct qlog::events::quic::PreferredAddress">PreferredAddress</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-TransportParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#545">source</a><a href="#impl-Clone-for-TransportParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.TransportParametersSet.html" title="struct qlog::events::quic::TransportParametersSet">TransportParametersSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#545">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.TransportParametersSet.html" title="struct qlog::events::quic::TransportParametersSet">TransportParametersSet</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-TransportParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#545">source</a><a href="#impl-Debug-for-TransportParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.TransportParametersSet.html" title="struct qlog::events::quic::TransportParametersSet">TransportParametersSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#545">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-TransportParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#545">source</a><a href="#impl-Deserialize%3C'de%3E-for-TransportParametersSet" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.TransportParametersSet.html" title="struct qlog::events::quic::TransportParametersSet">TransportParametersSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#545">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-TransportParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#545">source</a><a href="#impl-PartialEq-for-TransportParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.TransportParametersSet.html" title="struct qlog::events::quic::TransportParametersSet">TransportParametersSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#545">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.TransportParametersSet.html" title="struct qlog::events::quic::TransportParametersSet">TransportParametersSet</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-TransportParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#545">source</a><a href="#impl-Serialize-for-TransportParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.TransportParametersSet.html" title="struct qlog::events::quic::TransportParametersSet">TransportParametersSet</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#545">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-TransportParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#545">source</a><a href="#impl-Eq-for-TransportParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.TransportParametersSet.html" title="struct qlog::events::quic::TransportParametersSet">TransportParametersSet</a></h3></section><section id="impl-StructuralPartialEq-for-TransportParametersSet" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#545">source</a><a href="#impl-StructuralPartialEq-for-TransportParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.TransportParametersSet.html" title="struct qlog::events::quic::TransportParametersSet">TransportParametersSet</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-TransportParametersSet" class="impl"><a href="#impl-Freeze-for-TransportParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.TransportParametersSet.html" title="struct qlog::events::quic::TransportParametersSet">TransportParametersSet</a></h3></section><section id="impl-RefUnwindSafe-for-TransportParametersSet" class="impl"><a href="#impl-RefUnwindSafe-for-TransportParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.TransportParametersSet.html" title="struct qlog::events::quic::TransportParametersSet">TransportParametersSet</a></h3></section><section id="impl-Send-for-TransportParametersSet" class="impl"><a href="#impl-Send-for-TransportParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.TransportParametersSet.html" title="struct qlog::events::quic::TransportParametersSet">TransportParametersSet</a></h3></section><section id="impl-Sync-for-TransportParametersSet" class="impl"><a href="#impl-Sync-for-TransportParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.TransportParametersSet.html" title="struct qlog::events::quic::TransportParametersSet">TransportParametersSet</a></h3></section><section id="impl-Unpin-for-TransportParametersSet" class="impl"><a href="#impl-Unpin-for-TransportParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.TransportParametersSet.html" title="struct qlog::events::quic::TransportParametersSet">TransportParametersSet</a></h3></section><section id="impl-UnwindSafe-for-TransportParametersSet" class="impl"><a href="#impl-UnwindSafe-for-TransportParametersSet" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.TransportParametersSet.html" title="struct qlog::events::quic::TransportParametersSet">TransportParametersSet</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/quic/struct.VersionInformation.html b/qlog/events/quic/struct.VersionInformation.html
new file mode 100644
index 0000000..71cdb70
--- /dev/null
+++ b/qlog/events/quic/struct.VersionInformation.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `VersionInformation` struct in crate `qlog`."><title>VersionInformation in qlog::events::quic - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">VersionInformation</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.chosen_version">chosen_version</a></li><li><a href="#structfield.client_versions">client_versions</a></li><li><a href="#structfield.server_versions">server_versions</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-VersionInformation">Clone</a></li><li><a href="#impl-Debug-for-VersionInformation">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-VersionInformation">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-VersionInformation">Eq</a></li><li><a href="#impl-PartialEq-for-VersionInformation">PartialEq</a></li><li><a href="#impl-Serialize-for-VersionInformation">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-VersionInformation">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-VersionInformation">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-VersionInformation">RefUnwindSafe</a></li><li><a href="#impl-Send-for-VersionInformation">Send</a></li><li><a href="#impl-Sync-for-VersionInformation">Sync</a></li><li><a href="#impl-Unpin-for-VersionInformation">Unpin</a></li><li><a href="#impl-UnwindSafe-for-VersionInformation">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::quic</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">quic</a>::<wbr><a class="struct" href="#">VersionInformation</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/quic.rs.html#530-534">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct VersionInformation {
+    pub server_versions: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;&gt;,
+    pub client_versions: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;&gt;,
+    pub chosen_version: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.server_versions" class="structfield section-header"><a href="#structfield.server_versions" class="anchor field">§</a><code>server_versions: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;&gt;</code></span><span id="structfield.client_versions" class="structfield section-header"><a href="#structfield.client_versions" class="anchor field">§</a><code>client_versions: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;&gt;</code></span><span id="structfield.chosen_version" class="structfield section-header"><a href="#structfield.chosen_version" class="anchor field">§</a><code>chosen_version: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-VersionInformation" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#529">source</a><a href="#impl-Clone-for-VersionInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.VersionInformation.html" title="struct qlog::events::quic::VersionInformation">VersionInformation</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#529">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.VersionInformation.html" title="struct qlog::events::quic::VersionInformation">VersionInformation</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-VersionInformation" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#529">source</a><a href="#impl-Debug-for-VersionInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.VersionInformation.html" title="struct qlog::events::quic::VersionInformation">VersionInformation</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#529">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-VersionInformation" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#529">source</a><a href="#impl-Deserialize%3C'de%3E-for-VersionInformation" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.VersionInformation.html" title="struct qlog::events::quic::VersionInformation">VersionInformation</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#529">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-VersionInformation" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#529">source</a><a href="#impl-PartialEq-for-VersionInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.VersionInformation.html" title="struct qlog::events::quic::VersionInformation">VersionInformation</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#529">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.VersionInformation.html" title="struct qlog::events::quic::VersionInformation">VersionInformation</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-VersionInformation" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#529">source</a><a href="#impl-Serialize-for-VersionInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.VersionInformation.html" title="struct qlog::events::quic::VersionInformation">VersionInformation</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#529">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-VersionInformation" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#529">source</a><a href="#impl-Eq-for-VersionInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.VersionInformation.html" title="struct qlog::events::quic::VersionInformation">VersionInformation</a></h3></section><section id="impl-StructuralPartialEq-for-VersionInformation" class="impl"><a class="src rightside" href="../../../src/qlog/events/quic.rs.html#529">source</a><a href="#impl-StructuralPartialEq-for-VersionInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.VersionInformation.html" title="struct qlog::events::quic::VersionInformation">VersionInformation</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-VersionInformation" class="impl"><a href="#impl-Freeze-for-VersionInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.VersionInformation.html" title="struct qlog::events::quic::VersionInformation">VersionInformation</a></h3></section><section id="impl-RefUnwindSafe-for-VersionInformation" class="impl"><a href="#impl-RefUnwindSafe-for-VersionInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.VersionInformation.html" title="struct qlog::events::quic::VersionInformation">VersionInformation</a></h3></section><section id="impl-Send-for-VersionInformation" class="impl"><a href="#impl-Send-for-VersionInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.VersionInformation.html" title="struct qlog::events::quic::VersionInformation">VersionInformation</a></h3></section><section id="impl-Sync-for-VersionInformation" class="impl"><a href="#impl-Sync-for-VersionInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.VersionInformation.html" title="struct qlog::events::quic::VersionInformation">VersionInformation</a></h3></section><section id="impl-Unpin-for-VersionInformation" class="impl"><a href="#impl-Unpin-for-VersionInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.VersionInformation.html" title="struct qlog::events::quic::VersionInformation">VersionInformation</a></h3></section><section id="impl-UnwindSafe-for-VersionInformation" class="impl"><a href="#impl-UnwindSafe-for-VersionInformation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.VersionInformation.html" title="struct qlog::events::quic::VersionInformation">VersionInformation</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/security/enum.KeyType.html b/qlog/events/security/enum.KeyType.html
new file mode 100644
index 0000000..e963117
--- /dev/null
+++ b/qlog/events/security/enum.KeyType.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `KeyType` enum in crate `qlog`."><title>KeyType in qlog::events::security - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">KeyType</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Client0RttSecret">Client0RttSecret</a></li><li><a href="#variant.Client1RttSecret">Client1RttSecret</a></li><li><a href="#variant.ClientHandshakeSecret">ClientHandshakeSecret</a></li><li><a href="#variant.ClientInitialSecret">ClientInitialSecret</a></li><li><a href="#variant.Server0RttSecret">Server0RttSecret</a></li><li><a href="#variant.Server1RttSecret">Server1RttSecret</a></li><li><a href="#variant.ServerHandshakeSecret">ServerHandshakeSecret</a></li><li><a href="#variant.ServerInitialSecret">ServerInitialSecret</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-KeyType">Clone</a></li><li><a href="#impl-Debug-for-KeyType">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-KeyType">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-KeyType">Eq</a></li><li><a href="#impl-PartialEq-for-KeyType">PartialEq</a></li><li><a href="#impl-Serialize-for-KeyType">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-KeyType">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-KeyType">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-KeyType">RefUnwindSafe</a></li><li><a href="#impl-Send-for-KeyType">Send</a></li><li><a href="#impl-Sync-for-KeyType">Sync</a></li><li><a href="#impl-Unpin-for-KeyType">Unpin</a></li><li><a href="#impl-UnwindSafe-for-KeyType">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::security</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">security</a>::<wbr><a class="enum" href="#">KeyType</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/security.rs.html#34-49">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum KeyType {
+    ServerInitialSecret,
+    ClientInitialSecret,
+    ServerHandshakeSecret,
+    ClientHandshakeSecret,
+    Server0RttSecret,
+    Client0RttSecret,
+    Server1RttSecret,
+    Client1RttSecret,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.ServerInitialSecret" class="variant"><a href="#variant.ServerInitialSecret" class="anchor">§</a><h3 class="code-header">ServerInitialSecret</h3></section><section id="variant.ClientInitialSecret" class="variant"><a href="#variant.ClientInitialSecret" class="anchor">§</a><h3 class="code-header">ClientInitialSecret</h3></section><section id="variant.ServerHandshakeSecret" class="variant"><a href="#variant.ServerHandshakeSecret" class="anchor">§</a><h3 class="code-header">ServerHandshakeSecret</h3></section><section id="variant.ClientHandshakeSecret" class="variant"><a href="#variant.ClientHandshakeSecret" class="anchor">§</a><h3 class="code-header">ClientHandshakeSecret</h3></section><section id="variant.Server0RttSecret" class="variant"><a href="#variant.Server0RttSecret" class="anchor">§</a><h3 class="code-header">Server0RttSecret</h3></section><section id="variant.Client0RttSecret" class="variant"><a href="#variant.Client0RttSecret" class="anchor">§</a><h3 class="code-header">Client0RttSecret</h3></section><section id="variant.Server1RttSecret" class="variant"><a href="#variant.Server1RttSecret" class="anchor">§</a><h3 class="code-header">Server1RttSecret</h3></section><section id="variant.Client1RttSecret" class="variant"><a href="#variant.Client1RttSecret" class="anchor">§</a><h3 class="code-header">Client1RttSecret</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-KeyType" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#32">source</a><a href="#impl-Clone-for-KeyType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#32">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-KeyType" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#32">source</a><a href="#impl-Debug-for-KeyType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#32">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-KeyType" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#32">source</a><a href="#impl-Deserialize%3C'de%3E-for-KeyType" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#32">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-KeyType" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#32">source</a><a href="#impl-PartialEq-for-KeyType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#32">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-KeyType" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#32">source</a><a href="#impl-Serialize-for-KeyType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#32">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-KeyType" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#32">source</a><a href="#impl-Eq-for-KeyType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a></h3></section><section id="impl-StructuralPartialEq-for-KeyType" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#32">source</a><a href="#impl-StructuralPartialEq-for-KeyType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-KeyType" class="impl"><a href="#impl-Freeze-for-KeyType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a></h3></section><section id="impl-RefUnwindSafe-for-KeyType" class="impl"><a href="#impl-RefUnwindSafe-for-KeyType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a></h3></section><section id="impl-Send-for-KeyType" class="impl"><a href="#impl-Send-for-KeyType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a></h3></section><section id="impl-Sync-for-KeyType" class="impl"><a href="#impl-Sync-for-KeyType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a></h3></section><section id="impl-Unpin-for-KeyType" class="impl"><a href="#impl-Unpin-for-KeyType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a></h3></section><section id="impl-UnwindSafe-for-KeyType" class="impl"><a href="#impl-UnwindSafe-for-KeyType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/security/enum.KeyUpdateOrRetiredTrigger.html b/qlog/events/security/enum.KeyUpdateOrRetiredTrigger.html
new file mode 100644
index 0000000..866605e
--- /dev/null
+++ b/qlog/events/security/enum.KeyUpdateOrRetiredTrigger.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `KeyUpdateOrRetiredTrigger` enum in crate `qlog`."><title>KeyUpdateOrRetiredTrigger in qlog::events::security - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">KeyUpdateOrRetiredTrigger</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.LocalUpdate">LocalUpdate</a></li><li><a href="#variant.RemoteUpdate">RemoteUpdate</a></li><li><a href="#variant.Tls">Tls</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-KeyUpdateOrRetiredTrigger">Clone</a></li><li><a href="#impl-Debug-for-KeyUpdateOrRetiredTrigger">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-KeyUpdateOrRetiredTrigger">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-KeyUpdateOrRetiredTrigger">Eq</a></li><li><a href="#impl-PartialEq-for-KeyUpdateOrRetiredTrigger">PartialEq</a></li><li><a href="#impl-Serialize-for-KeyUpdateOrRetiredTrigger">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-KeyUpdateOrRetiredTrigger">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-KeyUpdateOrRetiredTrigger">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-KeyUpdateOrRetiredTrigger">RefUnwindSafe</a></li><li><a href="#impl-Send-for-KeyUpdateOrRetiredTrigger">Send</a></li><li><a href="#impl-Sync-for-KeyUpdateOrRetiredTrigger">Sync</a></li><li><a href="#impl-Unpin-for-KeyUpdateOrRetiredTrigger">Unpin</a></li><li><a href="#impl-UnwindSafe-for-KeyUpdateOrRetiredTrigger">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::security</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">security</a>::<wbr><a class="enum" href="#">KeyUpdateOrRetiredTrigger</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/security.rs.html#53-57">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum KeyUpdateOrRetiredTrigger {
+    Tls,
+    RemoteUpdate,
+    LocalUpdate,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Tls" class="variant"><a href="#variant.Tls" class="anchor">§</a><h3 class="code-header">Tls</h3></section><section id="variant.RemoteUpdate" class="variant"><a href="#variant.RemoteUpdate" class="anchor">§</a><h3 class="code-header">RemoteUpdate</h3></section><section id="variant.LocalUpdate" class="variant"><a href="#variant.LocalUpdate" class="anchor">§</a><h3 class="code-header">LocalUpdate</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-KeyUpdateOrRetiredTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#51">source</a><a href="#impl-Clone-for-KeyUpdateOrRetiredTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#51">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-KeyUpdateOrRetiredTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#51">source</a><a href="#impl-Debug-for-KeyUpdateOrRetiredTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#51">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-KeyUpdateOrRetiredTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#51">source</a><a href="#impl-Deserialize%3C'de%3E-for-KeyUpdateOrRetiredTrigger" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#51">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-KeyUpdateOrRetiredTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#51">source</a><a href="#impl-PartialEq-for-KeyUpdateOrRetiredTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#51">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-KeyUpdateOrRetiredTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#51">source</a><a href="#impl-Serialize-for-KeyUpdateOrRetiredTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#51">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-KeyUpdateOrRetiredTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#51">source</a><a href="#impl-Eq-for-KeyUpdateOrRetiredTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a></h3></section><section id="impl-StructuralPartialEq-for-KeyUpdateOrRetiredTrigger" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#51">source</a><a href="#impl-StructuralPartialEq-for-KeyUpdateOrRetiredTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-KeyUpdateOrRetiredTrigger" class="impl"><a href="#impl-Freeze-for-KeyUpdateOrRetiredTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a></h3></section><section id="impl-RefUnwindSafe-for-KeyUpdateOrRetiredTrigger" class="impl"><a href="#impl-RefUnwindSafe-for-KeyUpdateOrRetiredTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a></h3></section><section id="impl-Send-for-KeyUpdateOrRetiredTrigger" class="impl"><a href="#impl-Send-for-KeyUpdateOrRetiredTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a></h3></section><section id="impl-Sync-for-KeyUpdateOrRetiredTrigger" class="impl"><a href="#impl-Sync-for-KeyUpdateOrRetiredTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a></h3></section><section id="impl-Unpin-for-KeyUpdateOrRetiredTrigger" class="impl"><a href="#impl-Unpin-for-KeyUpdateOrRetiredTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a></h3></section><section id="impl-UnwindSafe-for-KeyUpdateOrRetiredTrigger" class="impl"><a href="#impl-UnwindSafe-for-KeyUpdateOrRetiredTrigger" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/security/index.html b/qlog/events/security/index.html
new file mode 100644
index 0000000..b59b4a8
--- /dev/null
+++ b/qlog/events/security/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `security` mod in crate `qlog`."><title>qlog::events::security - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Module security</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></section><h2><a href="../index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a class="mod" href="#">security</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/security.rs.html#27-81">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.KeyDiscarded.html" title="struct qlog::events::security::KeyDiscarded">KeyDiscarded</a></div></li><li><div class="item-name"><a class="struct" href="struct.KeyUpdated.html" title="struct qlog::events::security::KeyUpdated">KeyUpdated</a></div></li></ul><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a></div></li><li><div class="item-name"><a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a></div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/security/sidebar-items.js b/qlog/events/security/sidebar-items.js
new file mode 100644
index 0000000..460d885
--- /dev/null
+++ b/qlog/events/security/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"enum":["KeyType","KeyUpdateOrRetiredTrigger"],"struct":["KeyDiscarded","KeyUpdated"]};
\ No newline at end of file
diff --git a/qlog/events/security/struct.KeyDiscarded.html b/qlog/events/security/struct.KeyDiscarded.html
new file mode 100644
index 0000000..df2cc90
--- /dev/null
+++ b/qlog/events/security/struct.KeyDiscarded.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `KeyDiscarded` struct in crate `qlog`."><title>KeyDiscarded in qlog::events::security - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">KeyDiscarded</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.generation">generation</a></li><li><a href="#structfield.key">key</a></li><li><a href="#structfield.key_type">key_type</a></li><li><a href="#structfield.trigger">trigger</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-KeyDiscarded">Clone</a></li><li><a href="#impl-Debug-for-KeyDiscarded">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-KeyDiscarded">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-KeyDiscarded">Eq</a></li><li><a href="#impl-PartialEq-for-KeyDiscarded">PartialEq</a></li><li><a href="#impl-Serialize-for-KeyDiscarded">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-KeyDiscarded">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-KeyDiscarded">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-KeyDiscarded">RefUnwindSafe</a></li><li><a href="#impl-Send-for-KeyDiscarded">Send</a></li><li><a href="#impl-Sync-for-KeyDiscarded">Sync</a></li><li><a href="#impl-Unpin-for-KeyDiscarded">Unpin</a></li><li><a href="#impl-UnwindSafe-for-KeyDiscarded">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::security</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">security</a>::<wbr><a class="struct" href="#">KeyDiscarded</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/security.rs.html#74-81">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct KeyDiscarded {
+    pub key_type: <a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a>,
+    pub key: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;,
+    pub generation: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+    pub trigger: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.key_type" class="structfield section-header"><a href="#structfield.key_type" class="anchor field">§</a><code>key_type: <a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a></code></span><span id="structfield.key" class="structfield section-header"><a href="#structfield.key" class="anchor field">§</a><code>key: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;</code></span><span id="structfield.generation" class="structfield section-header"><a href="#structfield.generation" class="anchor field">§</a><code>generation: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span><span id="structfield.trigger" class="structfield section-header"><a href="#structfield.trigger" class="anchor field">§</a><code>trigger: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-KeyDiscarded" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#73">source</a><a href="#impl-Clone-for-KeyDiscarded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.KeyDiscarded.html" title="struct qlog::events::security::KeyDiscarded">KeyDiscarded</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#73">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.KeyDiscarded.html" title="struct qlog::events::security::KeyDiscarded">KeyDiscarded</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-KeyDiscarded" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#73">source</a><a href="#impl-Debug-for-KeyDiscarded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.KeyDiscarded.html" title="struct qlog::events::security::KeyDiscarded">KeyDiscarded</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#73">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-KeyDiscarded" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#73">source</a><a href="#impl-Deserialize%3C'de%3E-for-KeyDiscarded" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.KeyDiscarded.html" title="struct qlog::events::security::KeyDiscarded">KeyDiscarded</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#73">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-KeyDiscarded" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#73">source</a><a href="#impl-PartialEq-for-KeyDiscarded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.KeyDiscarded.html" title="struct qlog::events::security::KeyDiscarded">KeyDiscarded</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#73">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.KeyDiscarded.html" title="struct qlog::events::security::KeyDiscarded">KeyDiscarded</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-KeyDiscarded" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#73">source</a><a href="#impl-Serialize-for-KeyDiscarded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.KeyDiscarded.html" title="struct qlog::events::security::KeyDiscarded">KeyDiscarded</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#73">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-KeyDiscarded" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#73">source</a><a href="#impl-Eq-for-KeyDiscarded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.KeyDiscarded.html" title="struct qlog::events::security::KeyDiscarded">KeyDiscarded</a></h3></section><section id="impl-StructuralPartialEq-for-KeyDiscarded" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#73">source</a><a href="#impl-StructuralPartialEq-for-KeyDiscarded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.KeyDiscarded.html" title="struct qlog::events::security::KeyDiscarded">KeyDiscarded</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-KeyDiscarded" class="impl"><a href="#impl-Freeze-for-KeyDiscarded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.KeyDiscarded.html" title="struct qlog::events::security::KeyDiscarded">KeyDiscarded</a></h3></section><section id="impl-RefUnwindSafe-for-KeyDiscarded" class="impl"><a href="#impl-RefUnwindSafe-for-KeyDiscarded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.KeyDiscarded.html" title="struct qlog::events::security::KeyDiscarded">KeyDiscarded</a></h3></section><section id="impl-Send-for-KeyDiscarded" class="impl"><a href="#impl-Send-for-KeyDiscarded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.KeyDiscarded.html" title="struct qlog::events::security::KeyDiscarded">KeyDiscarded</a></h3></section><section id="impl-Sync-for-KeyDiscarded" class="impl"><a href="#impl-Sync-for-KeyDiscarded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.KeyDiscarded.html" title="struct qlog::events::security::KeyDiscarded">KeyDiscarded</a></h3></section><section id="impl-Unpin-for-KeyDiscarded" class="impl"><a href="#impl-Unpin-for-KeyDiscarded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.KeyDiscarded.html" title="struct qlog::events::security::KeyDiscarded">KeyDiscarded</a></h3></section><section id="impl-UnwindSafe-for-KeyDiscarded" class="impl"><a href="#impl-UnwindSafe-for-KeyDiscarded" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.KeyDiscarded.html" title="struct qlog::events::security::KeyDiscarded">KeyDiscarded</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/security/struct.KeyUpdated.html b/qlog/events/security/struct.KeyUpdated.html
new file mode 100644
index 0000000..1ec64b3
--- /dev/null
+++ b/qlog/events/security/struct.KeyUpdated.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `KeyUpdated` struct in crate `qlog`."><title>KeyUpdated in qlog::events::security - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">KeyUpdated</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.generation">generation</a></li><li><a href="#structfield.key_type">key_type</a></li><li><a href="#structfield.new">new</a></li><li><a href="#structfield.old">old</a></li><li><a href="#structfield.trigger">trigger</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-KeyUpdated">Clone</a></li><li><a href="#impl-Debug-for-KeyUpdated">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-KeyUpdated">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-KeyUpdated">Eq</a></li><li><a href="#impl-PartialEq-for-KeyUpdated">PartialEq</a></li><li><a href="#impl-Serialize-for-KeyUpdated">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-KeyUpdated">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-KeyUpdated">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-KeyUpdated">RefUnwindSafe</a></li><li><a href="#impl-Send-for-KeyUpdated">Send</a></li><li><a href="#impl-Sync-for-KeyUpdated">Sync</a></li><li><a href="#impl-Unpin-for-KeyUpdated">Unpin</a></li><li><a href="#impl-UnwindSafe-for-KeyUpdated">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events::security</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../../index.html">qlog</a>::<wbr><a href="../index.html">events</a>::<wbr><a href="index.html">security</a>::<wbr><a class="struct" href="#">KeyUpdated</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/qlog/events/security.rs.html#61-70">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct KeyUpdated {
+    pub key_type: <a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a>,
+    pub old: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;,
+    pub new: <a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>,
+    pub generation: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;,
+    pub trigger: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.key_type" class="structfield section-header"><a href="#structfield.key_type" class="anchor field">§</a><code>key_type: <a class="enum" href="enum.KeyType.html" title="enum qlog::events::security::KeyType">KeyType</a></code></span><span id="structfield.old" class="structfield section-header"><a href="#structfield.old" class="anchor field">§</a><code>old: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;</code></span><span id="structfield.new" class="structfield section-header"><a href="#structfield.new" class="anchor field">§</a><code>new: <a class="type" href="../../type.Bytes.html" title="type qlog::Bytes">Bytes</a></code></span><span id="structfield.generation" class="structfield section-header"><a href="#structfield.generation" class="anchor field">§</a><code>generation: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;</code></span><span id="structfield.trigger" class="structfield section-header"><a href="#structfield.trigger" class="anchor field">§</a><code>trigger: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.KeyUpdateOrRetiredTrigger.html" title="enum qlog::events::security::KeyUpdateOrRetiredTrigger">KeyUpdateOrRetiredTrigger</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-KeyUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#60">source</a><a href="#impl-Clone-for-KeyUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.KeyUpdated.html" title="struct qlog::events::security::KeyUpdated">KeyUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#60">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.KeyUpdated.html" title="struct qlog::events::security::KeyUpdated">KeyUpdated</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-KeyUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#60">source</a><a href="#impl-Debug-for-KeyUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.KeyUpdated.html" title="struct qlog::events::security::KeyUpdated">KeyUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#60">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-KeyUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#60">source</a><a href="#impl-Deserialize%3C'de%3E-for-KeyUpdated" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.KeyUpdated.html" title="struct qlog::events::security::KeyUpdated">KeyUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#60">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-KeyUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#60">source</a><a href="#impl-PartialEq-for-KeyUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.KeyUpdated.html" title="struct qlog::events::security::KeyUpdated">KeyUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#60">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.KeyUpdated.html" title="struct qlog::events::security::KeyUpdated">KeyUpdated</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-KeyUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#60">source</a><a href="#impl-Serialize-for-KeyUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.KeyUpdated.html" title="struct qlog::events::security::KeyUpdated">KeyUpdated</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#60">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-KeyUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#60">source</a><a href="#impl-Eq-for-KeyUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.KeyUpdated.html" title="struct qlog::events::security::KeyUpdated">KeyUpdated</a></h3></section><section id="impl-StructuralPartialEq-for-KeyUpdated" class="impl"><a class="src rightside" href="../../../src/qlog/events/security.rs.html#60">source</a><a href="#impl-StructuralPartialEq-for-KeyUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.KeyUpdated.html" title="struct qlog::events::security::KeyUpdated">KeyUpdated</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-KeyUpdated" class="impl"><a href="#impl-Freeze-for-KeyUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.KeyUpdated.html" title="struct qlog::events::security::KeyUpdated">KeyUpdated</a></h3></section><section id="impl-RefUnwindSafe-for-KeyUpdated" class="impl"><a href="#impl-RefUnwindSafe-for-KeyUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.KeyUpdated.html" title="struct qlog::events::security::KeyUpdated">KeyUpdated</a></h3></section><section id="impl-Send-for-KeyUpdated" class="impl"><a href="#impl-Send-for-KeyUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.KeyUpdated.html" title="struct qlog::events::security::KeyUpdated">KeyUpdated</a></h3></section><section id="impl-Sync-for-KeyUpdated" class="impl"><a href="#impl-Sync-for-KeyUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.KeyUpdated.html" title="struct qlog::events::security::KeyUpdated">KeyUpdated</a></h3></section><section id="impl-Unpin-for-KeyUpdated" class="impl"><a href="#impl-Unpin-for-KeyUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.KeyUpdated.html" title="struct qlog::events::security::KeyUpdated">KeyUpdated</a></h3></section><section id="impl-UnwindSafe-for-KeyUpdated" class="impl"><a href="#impl-UnwindSafe-for-KeyUpdated" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.KeyUpdated.html" title="struct qlog::events::security::KeyUpdated">KeyUpdated</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/sidebar-items.js b/qlog/events/sidebar-items.js
new file mode 100644
index 0000000..8d2124c
--- /dev/null
+++ b/qlog/events/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"enum":["ApplicationErrorCode","ConnectionErrorCode","CryptoError","DataRecipient","EventCategory","EventData","EventImportance","EventType","GenericEventType","TimeFormat"],"mod":["connectivity","h3","qpack","quic","security"],"struct":["Event","JsonEvent","RawInfo"],"trait":["Eventable"],"type":["ExData"]};
\ No newline at end of file
diff --git a/qlog/events/struct.Event.html b/qlog/events/struct.Event.html
new file mode 100644
index 0000000..f3cb9ad
--- /dev/null
+++ b/qlog/events/struct.Event.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `Event` struct in crate `qlog`."><title>Event in qlog::events - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Event</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.data">data</a></li><li><a href="#structfield.ex_data">ex_data</a></li><li><a href="#structfield.group_id">group_id</a></li><li><a href="#structfield.protocol_type">protocol_type</a></li><li><a href="#structfield.time">time</a></li><li><a href="#structfield.time_format">time_format</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.with_time">with_time</a></li><li><a href="#method.with_time_ex">with_time_ex</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-Event">Clone</a></li><li><a href="#impl-Debug-for-Event">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-Event">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eventable-for-Event">Eventable</a></li><li><a href="#impl-PartialEq-for-Event">PartialEq</a></li><li><a href="#impl-Serialize-for-Event">Serialize</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Event">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Event">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Event">Send</a></li><li><a href="#impl-Sync-for-Event">Sync</a></li><li><a href="#impl-Unpin-for-Event">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Event">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">qlog</a>::<wbr><a href="index.html">events</a>::<wbr><a class="struct" href="#">Event</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/events/mod.rs.html#72-104">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Event {
+    pub time: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>,
+    pub data: <a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a>,
+    pub ex_data: <a class="type" href="type.ExData.html" title="type qlog::events::ExData">ExData</a>,
+    pub protocol_type: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub group_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub time_format: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.TimeFormat.html" title="enum qlog::events::TimeFormat">TimeFormat</a>&gt;,
+    <span class="comment">/* private fields */</span>
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.time" class="structfield section-header"><a href="#structfield.time" class="anchor field">§</a><code>time: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a></code></span><span id="structfield.data" class="structfield section-header"><a href="#structfield.data" class="anchor field">§</a><code>data: <a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a></code></span><span id="structfield.ex_data" class="structfield section-header"><a href="#structfield.ex_data" class="anchor field">§</a><code>ex_data: <a class="type" href="type.ExData.html" title="type qlog::events::ExData">ExData</a></code></span><span id="structfield.protocol_type" class="structfield section-header"><a href="#structfield.protocol_type" class="anchor field">§</a><code>protocol_type: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.group_id" class="structfield section-header"><a href="#structfield.group_id" class="anchor field">§</a><code>group_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.time_format" class="structfield section-header"><a href="#structfield.time_format" class="anchor field">§</a><code>time_format: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.TimeFormat.html" title="enum qlog::events::TimeFormat">TimeFormat</a>&gt;</code></span><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Event" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#106-125">source</a><a href="#impl-Event" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Event.html" title="struct qlog::events::Event">Event</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.with_time" class="method"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#108-110">source</a><h4 class="code-header">pub fn <a href="#method.with_time" class="fn">with_time</a>(time: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>, data: <a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Returns a new <code>Event</code> object with the provided time and data.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_time_ex" class="method"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#113-124">source</a><h4 class="code-header">pub fn <a href="#method.with_time_ex" class="fn">with_time_ex</a>(time: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>, data: <a class="enum" href="enum.EventData.html" title="enum qlog::events::EventData">EventData</a>, ex_data: <a class="type" href="type.ExData.html" title="type qlog::events::ExData">ExData</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Returns a new <code>Event</code> object with the provided time, data and ex_data.</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Event" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#71">source</a><a href="#impl-Clone-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Event.html" title="struct qlog::events::Event">Event</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#71">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.Event.html" title="struct qlog::events::Event">Event</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Event" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#71">source</a><a href="#impl-Debug-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Event.html" title="struct qlog::events::Event">Event</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#71">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-Event" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#71">source</a><a href="#impl-Deserialize%3C'de%3E-for-Event" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.Event.html" title="struct qlog::events::Event">Event</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#71">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Eventable-for-Event" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#127-135">source</a><a href="#impl-Eventable-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Eventable.html" title="trait qlog::events::Eventable">Eventable</a> for <a class="struct" href="struct.Event.html" title="struct qlog::events::Event">Event</a></h3></section></summary><div class="impl-items"><section id="method.importance" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#128-130">source</a><a href="#method.importance" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Eventable.html#tymethod.importance" class="fn">importance</a>(&amp;self) -&gt; <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></h4></section><section id="method.set_time" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#132-134">source</a><a href="#method.set_time" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Eventable.html#tymethod.set_time" class="fn">set_time</a>(&amp;mut self, time: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>)</h4></section></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-Event" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#137-147">source</a><a href="#impl-PartialEq-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.Event.html" title="struct qlog::events::Event">Event</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#139-146">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.Event.html" title="struct qlog::events::Event">Event</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-Event" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#71">source</a><a href="#impl-Serialize-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.Event.html" title="struct qlog::events::Event">Event</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#71">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Event" class="impl"><a href="#impl-Freeze-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Event.html" title="struct qlog::events::Event">Event</a></h3></section><section id="impl-RefUnwindSafe-for-Event" class="impl"><a href="#impl-RefUnwindSafe-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Event.html" title="struct qlog::events::Event">Event</a></h3></section><section id="impl-Send-for-Event" class="impl"><a href="#impl-Send-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Event.html" title="struct qlog::events::Event">Event</a></h3></section><section id="impl-Sync-for-Event" class="impl"><a href="#impl-Sync-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Event.html" title="struct qlog::events::Event">Event</a></h3></section><section id="impl-Unpin-for-Event" class="impl"><a href="#impl-Unpin-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Event.html" title="struct qlog::events::Event">Event</a></h3></section><section id="impl-UnwindSafe-for-Event" class="impl"><a href="#impl-UnwindSafe-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Event.html" title="struct qlog::events::Event">Event</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/struct.JsonEvent.html b/qlog/events/struct.JsonEvent.html
new file mode 100644
index 0000000..c9ff913
--- /dev/null
+++ b/qlog/events/struct.JsonEvent.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `JsonEvent` struct in crate `qlog`."><title>JsonEvent in qlog::events - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">JsonEvent</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.data">data</a></li><li><a href="#structfield.importance">importance</a></li><li><a href="#structfield.name">name</a></li><li><a href="#structfield.time">time</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-JsonEvent">Clone</a></li><li><a href="#impl-Debug-for-JsonEvent">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-JsonEvent">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eventable-for-JsonEvent">Eventable</a></li><li><a href="#impl-Serialize-for-JsonEvent">Serialize</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-JsonEvent">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-JsonEvent">RefUnwindSafe</a></li><li><a href="#impl-Send-for-JsonEvent">Send</a></li><li><a href="#impl-Sync-for-JsonEvent">Sync</a></li><li><a href="#impl-Unpin-for-JsonEvent">Unpin</a></li><li><a href="#impl-UnwindSafe-for-JsonEvent">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">qlog</a>::<wbr><a href="index.html">events</a>::<wbr><a class="struct" href="#">JsonEvent</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/events/mod.rs.html#150-158">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct JsonEvent {
+    pub time: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>,
+    pub importance: <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a>,
+    pub name: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub data: <a class="enum" href="https://docs.rs/serde_json/1.0.115/serde_json/value/enum.Value.html" title="enum serde_json::value::Value">Value</a>,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.time" class="structfield section-header"><a href="#structfield.time" class="anchor field">§</a><code>time: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a></code></span><span id="structfield.importance" class="structfield section-header"><a href="#structfield.importance" class="anchor field">§</a><code>importance: <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></code></span><span id="structfield.name" class="structfield section-header"><a href="#structfield.name" class="anchor field">§</a><code>name: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.data" class="structfield section-header"><a href="#structfield.data" class="anchor field">§</a><code>data: <a class="enum" href="https://docs.rs/serde_json/1.0.115/serde_json/value/enum.Value.html" title="enum serde_json::value::Value">Value</a></code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-JsonEvent" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#149">source</a><a href="#impl-Clone-for-JsonEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.JsonEvent.html" title="struct qlog::events::JsonEvent">JsonEvent</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#149">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.JsonEvent.html" title="struct qlog::events::JsonEvent">JsonEvent</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-JsonEvent" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#149">source</a><a href="#impl-Debug-for-JsonEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.JsonEvent.html" title="struct qlog::events::JsonEvent">JsonEvent</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#149">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-JsonEvent" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#149">source</a><a href="#impl-Deserialize%3C'de%3E-for-JsonEvent" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.JsonEvent.html" title="struct qlog::events::JsonEvent">JsonEvent</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#149">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Eventable-for-JsonEvent" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#160-168">source</a><a href="#impl-Eventable-for-JsonEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Eventable.html" title="trait qlog::events::Eventable">Eventable</a> for <a class="struct" href="struct.JsonEvent.html" title="struct qlog::events::JsonEvent">JsonEvent</a></h3></section></summary><div class="impl-items"><section id="method.importance" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#161-163">source</a><a href="#method.importance" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Eventable.html#tymethod.importance" class="fn">importance</a>(&amp;self) -&gt; <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></h4></section><section id="method.set_time" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#165-167">source</a><a href="#method.set_time" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Eventable.html#tymethod.set_time" class="fn">set_time</a>(&amp;mut self, time: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>)</h4></section></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-JsonEvent" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#149">source</a><a href="#impl-Serialize-for-JsonEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.JsonEvent.html" title="struct qlog::events::JsonEvent">JsonEvent</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#149">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-JsonEvent" class="impl"><a href="#impl-Freeze-for-JsonEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.JsonEvent.html" title="struct qlog::events::JsonEvent">JsonEvent</a></h3></section><section id="impl-RefUnwindSafe-for-JsonEvent" class="impl"><a href="#impl-RefUnwindSafe-for-JsonEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.JsonEvent.html" title="struct qlog::events::JsonEvent">JsonEvent</a></h3></section><section id="impl-Send-for-JsonEvent" class="impl"><a href="#impl-Send-for-JsonEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.JsonEvent.html" title="struct qlog::events::JsonEvent">JsonEvent</a></h3></section><section id="impl-Sync-for-JsonEvent" class="impl"><a href="#impl-Sync-for-JsonEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.JsonEvent.html" title="struct qlog::events::JsonEvent">JsonEvent</a></h3></section><section id="impl-Unpin-for-JsonEvent" class="impl"><a href="#impl-Unpin-for-JsonEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.JsonEvent.html" title="struct qlog::events::JsonEvent">JsonEvent</a></h3></section><section id="impl-UnwindSafe-for-JsonEvent" class="impl"><a href="#impl-UnwindSafe-for-JsonEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.JsonEvent.html" title="struct qlog::events::JsonEvent">JsonEvent</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/struct.RawInfo.html b/qlog/events/struct.RawInfo.html
new file mode 100644
index 0000000..87e29b4
--- /dev/null
+++ b/qlog/events/struct.RawInfo.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `RawInfo` struct in crate `qlog`."><title>RawInfo in qlog::events - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">RawInfo</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.data">data</a></li><li><a href="#structfield.length">length</a></li><li><a href="#structfield.payload_length">payload_length</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-RawInfo">Clone</a></li><li><a href="#impl-Debug-for-RawInfo">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-RawInfo">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-RawInfo">Eq</a></li><li><a href="#impl-PartialEq-for-RawInfo">PartialEq</a></li><li><a href="#impl-Serialize-for-RawInfo">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-RawInfo">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-RawInfo">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-RawInfo">RefUnwindSafe</a></li><li><a href="#impl-Send-for-RawInfo">Send</a></li><li><a href="#impl-Sync-for-RawInfo">Sync</a></li><li><a href="#impl-Unpin-for-RawInfo">Unpin</a></li><li><a href="#impl-UnwindSafe-for-RawInfo">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">qlog</a>::<wbr><a href="index.html">events</a>::<wbr><a class="struct" href="#">RawInfo</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/events/mod.rs.html#516-521">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct RawInfo {
+    pub length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub payload_length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub data: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.length" class="structfield section-header"><a href="#structfield.length" class="anchor field">§</a><code>length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.payload_length" class="structfield section-header"><a href="#structfield.payload_length" class="anchor field">§</a><code>payload_length: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.data" class="structfield section-header"><a href="#structfield.data" class="anchor field">§</a><code>data: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../type.Bytes.html" title="type qlog::Bytes">Bytes</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-RawInfo" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#515">source</a><a href="#impl-Clone-for-RawInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#515">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-RawInfo" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#515">source</a><a href="#impl-Debug-for-RawInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#515">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-RawInfo" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#515">source</a><a href="#impl-Deserialize%3C'de%3E-for-RawInfo" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#515">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-RawInfo" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#515">source</a><a href="#impl-PartialEq-for-RawInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#515">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-RawInfo" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#515">source</a><a href="#impl-Serialize-for-RawInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#515">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-RawInfo" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#515">source</a><a href="#impl-Eq-for-RawInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a></h3></section><section id="impl-StructuralPartialEq-for-RawInfo" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#515">source</a><a href="#impl-StructuralPartialEq-for-RawInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-RawInfo" class="impl"><a href="#impl-Freeze-for-RawInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a></h3></section><section id="impl-RefUnwindSafe-for-RawInfo" class="impl"><a href="#impl-RefUnwindSafe-for-RawInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a></h3></section><section id="impl-Send-for-RawInfo" class="impl"><a href="#impl-Send-for-RawInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a></h3></section><section id="impl-Sync-for-RawInfo" class="impl"><a href="#impl-Sync-for-RawInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a></h3></section><section id="impl-Unpin-for-RawInfo" class="impl"><a href="#impl-Unpin-for-RawInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a></h3></section><section id="impl-UnwindSafe-for-RawInfo" class="impl"><a href="#impl-UnwindSafe-for-RawInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/trait.Eventable.html b/qlog/events/trait.Eventable.html
new file mode 100644
index 0000000..6974792
--- /dev/null
+++ b/qlog/events/trait.Eventable.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `Eventable` trait in crate `qlog`."><title>Eventable in qlog::events - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Eventable</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.importance">importance</a></li><li><a href="#tymethod.set_time">set_time</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Trait <a href="../index.html">qlog</a>::<wbr><a href="index.html">events</a>::<wbr><a class="trait" href="#">Eventable</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/events/mod.rs.html#310-314">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub trait Eventable {
+    // Required methods
+    fn <a href="#tymethod.importance" class="fn">importance</a>(&amp;self) -&gt; <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a>;
+<span class="item-spacer"></span>    fn <a href="#tymethod.set_time" class="fn">set_time</a>(&amp;mut self, time: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>);
+}</code></pre><h2 id="required-methods" class="section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><section id="tymethod.importance" class="method"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#311">source</a><h4 class="code-header">fn <a href="#tymethod.importance" class="fn">importance</a>(&amp;self) -&gt; <a class="enum" href="enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a></h4></section><section id="tymethod.set_time" class="method"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#313">source</a><h4 class="code-header">fn <a href="#tymethod.set_time" class="fn">set_time</a>(&amp;mut self, time: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>)</h4></section></div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-Eventable-for-Event" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#127-135">source</a><a href="#impl-Eventable-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Eventable.html" title="trait qlog::events::Eventable">Eventable</a> for <a class="struct" href="struct.Event.html" title="struct qlog::events::Event">Event</a></h3></section><section id="impl-Eventable-for-JsonEvent" class="impl"><a class="src rightside" href="../../src/qlog/events/mod.rs.html#160-168">source</a><a href="#impl-Eventable-for-JsonEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Eventable.html" title="trait qlog::events::Eventable">Eventable</a> for <a class="struct" href="struct.JsonEvent.html" title="struct qlog::events::JsonEvent">JsonEvent</a></h3></section></div><script src="../../trait.impl/qlog/events/trait.Eventable.js" async></script></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/events/type.ExData.html b/qlog/events/type.ExData.html
new file mode 100644
index 0000000..de4b4af
--- /dev/null
+++ b/qlog/events/type.ExData.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ExData` type in crate `qlog`."><title>ExData in qlog::events - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">ExData</a></h2><div class="sidebar-elems"><section><h3><a href="#aliased-type">Aliased type</a></h3></section><h2><a href="index.html">In qlog::events</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Type Alias <a href="../index.html">qlog</a>::<wbr><a href="index.html">events</a>::<wbr><a class="type" href="#">ExData</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/events/mod.rs.html#40">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub type ExData = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html" title="struct alloc::collections::btree::map::BTreeMap">BTreeMap</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="https://docs.rs/serde_json/1.0.115/serde_json/value/enum.Value.html" title="enum serde_json::value::Value">Value</a>&gt;;</code></pre><h2 id="aliased-type" class="section-header">Aliased Type<a href="#aliased-type" class="anchor">§</a></h2><pre class="rust item-decl"><code>struct ExData { <span class="comment">/* private fields */</span> }</code></pre><script src="../../type.impl/alloc/collections/btree/map/struct.BTreeMap.js" data-self-path="qlog::events::ExData" async></script></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/index.html b/qlog/index.html
new file mode 100644
index 0000000..3e86863
--- /dev/null
+++ b/qlog/index.html
@@ -0,0 +1,232 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The qlog crate is an implementation of the qlog main logging schema, QUIC event definitions, and HTTP/3 and QPACK event definitions. The crate provides a qlog data model that can be used for traces with events. It supports serialization and deserialization but defers logging IO choices to applications."><title>qlog - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="../crates.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><div class="sidebar-elems"><ul class="block"><li><a id="all-types" href="all.html">All Items</a></li></ul><section><ul class="block"><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#constants">Constants</a></li><li><a href="#types">Type Aliases</a></li></ul></section></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Crate <a class="mod" href="#">qlog</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/qlog/lib.rs.html#27-987">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The qlog crate is an implementation of the qlog <a href="https://datatracker.ietf.org/doc/html/draft-ietf-quic-qlog-main-schema">main logging schema</a>,
+<a href="https://datatracker.ietf.org/doc/html/draft-ietf-quic-qlog-quic-events.html">QUIC event definitions</a>, and <a href="https://datatracker.ietf.org/doc/html/draft-ietf-quic-qlog-h3-events.html">HTTP/3 and QPACK event definitions</a>.
+The crate provides a qlog data model that can be used for traces with
+events. It supports serialization and deserialization but defers logging IO
+choices to applications.</p>
+<p>Serialization operates in either a <a href="#buffered-traces-with-standard-json">buffered mode</a> or a <a href="#streaming-traces-with-json-seq">streaming mode</a>.</p>
+<p>The crate uses Serde for conversion between Rust and JSON.</p>
+<h3 id="overview"><a class="doc-anchor" href="#overview">§</a>Overview</h3>
+<p>qlog is a hierarchical logging format, with a rough structure of:</p>
+<ul>
+<li>Log
+<ul>
+<li>Trace(s)
+<ul>
+<li>Event(s)</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<p>In practice, a single QUIC connection maps to a single Trace file with one
+or more Events. Applications can decide whether to combine Traces from
+different connections into the same Log.</p>
+<h3 id="buffered-traces-with-standard-json"><a class="doc-anchor" href="#buffered-traces-with-standard-json">§</a>Buffered Traces with standard JSON</h3>
+<p>A <a href="struct.Trace.html"><code>Trace</code></a> is a single JSON object. It contains metadata such as the
+<a href="struct.VantagePoint.html"><code>VantagePoint</code></a> of capture and the <a href="struct.Configuration.html"><code>Configuration</code></a>, and protocol event
+data in the <a href="events/struct.Event.html" title="struct qlog::events::Event"><code>Event</code></a> array.</p>
+<p>JSON Traces allow applications to appends events to them before eventually
+being serialized as a complete JSON object.</p>
+<h4 id="creating-a-trace"><a class="doc-anchor" href="#creating-a-trace">§</a>Creating a Trace</h4>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>trace = qlog::Trace::new(
+    qlog::VantagePoint {
+        name: <span class="prelude-val">Some</span>(<span class="string">"Example client"</span>.to_string()),
+        ty: qlog::VantagePointType::Client,
+        flow: <span class="prelude-val">None</span>,
+    },
+    <span class="prelude-val">Some</span>(<span class="string">"Example qlog trace"</span>.to_string()),
+    <span class="prelude-val">Some</span>(<span class="string">"Example qlog trace description"</span>.to_string()),
+    <span class="prelude-val">Some</span>(qlog::Configuration {
+        time_offset: <span class="prelude-val">Some</span>(<span class="number">0.0</span>),
+        original_uris: <span class="prelude-val">None</span>,
+    }),
+    <span class="prelude-val">None</span>,
+);</code></pre></div>
+<h4 id="adding-events-to-a-trace"><a class="doc-anchor" href="#adding-events-to-a-trace">§</a>Adding events to a Trace</h4>
+<p>Qlog <a href="events/struct.Event.html" title="struct qlog::events::Event"><code>Event</code></a> objects are added to <a href="struct.Trace.html#structfield.events"><code>qlog::Trace.events</code></a>.</p>
+<p>The following example demonstrates how to log a qlog QUIC <code>packet_sent</code>
+event containing a single Crypto frame. It constructs the necessary elements
+of the <a href="events/struct.Event.html" title="struct qlog::events::Event"><code>Event</code></a>, then appends it to the trace with <a href="struct.Trace.html#method.push_event"><code>push_event()</code></a>.</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code>
+<span class="kw">let </span>scid = [<span class="number">0x7e</span>, <span class="number">0x37</span>, <span class="number">0xe4</span>, <span class="number">0xdc</span>, <span class="number">0xc6</span>, <span class="number">0x68</span>, <span class="number">0x2d</span>, <span class="number">0xa8</span>];
+<span class="kw">let </span>dcid = [<span class="number">0x36</span>, <span class="number">0xce</span>, <span class="number">0x10</span>, <span class="number">0x4e</span>, <span class="number">0xee</span>, <span class="number">0x50</span>, <span class="number">0x10</span>, <span class="number">0x1c</span>];
+
+<span class="kw">let </span>pkt_hdr = qlog::events::quic::PacketHeader::new(
+    qlog::events::quic::PacketType::Initial,
+    <span class="prelude-val">Some</span>(<span class="number">0</span>),          <span class="comment">// packet_number
+    </span><span class="prelude-val">None</span>,             <span class="comment">// flags
+    </span><span class="prelude-val">None</span>,             <span class="comment">// token
+    </span><span class="prelude-val">None</span>,             <span class="comment">// length
+    </span><span class="prelude-val">Some</span>(<span class="number">0x00000001</span>), <span class="comment">// version
+    </span><span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>scid),
+    <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>dcid),
+);
+
+<span class="kw">let </span>frames = <span class="macro">vec!</span>[qlog::events::quic::QuicFrame::Crypto {
+    offset: <span class="number">0</span>,
+    length: <span class="number">0</span>,
+}];
+
+<span class="kw">let </span>raw = qlog::events::RawInfo {
+    length: <span class="prelude-val">Some</span>(<span class="number">1251</span>),
+    payload_length: <span class="prelude-val">Some</span>(<span class="number">1224</span>),
+    data: <span class="prelude-val">None</span>,
+};
+
+<span class="kw">let </span>event_data =
+    qlog::events::EventData::PacketSent(qlog::events::quic::PacketSent {
+        header: pkt_hdr,
+        frames: <span class="prelude-val">Some</span>(frames.into()),
+        is_coalesced: <span class="prelude-val">None</span>,
+        retry_token: <span class="prelude-val">None</span>,
+        stateless_reset_token: <span class="prelude-val">None</span>,
+        supported_versions: <span class="prelude-val">None</span>,
+        raw: <span class="prelude-val">Some</span>(raw),
+        datagram_id: <span class="prelude-val">None</span>,
+        send_at_time: <span class="prelude-val">None</span>,
+        trigger: <span class="prelude-val">None</span>,
+    });
+
+trace.push_event(qlog::events::Event::with_time(<span class="number">0.0</span>, event_data));</code></pre></div>
+<h4 id="serializing"><a class="doc-anchor" href="#serializing">§</a>Serializing</h4>
+<p>The qlog crate has only been tested with <code>serde_json</code>, however
+other serializer targets might work.</p>
+<p>For example, serializing the trace created above:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code>serde_json::to_string_pretty(<span class="kw-2">&amp;</span>trace).unwrap();</code></pre></div>
+<p>which would generate the following:</p>
+
+<div class="example-wrap ignore"><a href="#" class="tooltip" title="This example is not tested">ⓘ</a><pre class="rust rust-example-rendered"><code>{
+  <span class="string">"vantage_point"</span>: {
+    <span class="string">"name"</span>: <span class="string">"Example client"</span>,
+    <span class="string">"type"</span>: <span class="string">"client"
+  </span>},
+  <span class="string">"title"</span>: <span class="string">"Example qlog trace"</span>,
+  <span class="string">"description"</span>: <span class="string">"Example qlog trace description"</span>,
+  <span class="string">"configuration"</span>: {
+    <span class="string">"time_offset"</span>: <span class="number">0.0
+  </span>},
+  <span class="string">"events"</span>: [
+    {
+      <span class="string">"time"</span>: <span class="number">0.0</span>,
+      <span class="string">"name"</span>: <span class="string">"transport:packet_sent"</span>,
+      <span class="string">"data"</span>: {
+        <span class="string">"header"</span>: {
+          <span class="string">"packet_type"</span>: <span class="string">"initial"</span>,
+          <span class="string">"packet_number"</span>: <span class="number">0</span>,
+          <span class="string">"version"</span>: <span class="string">"1"</span>,
+          <span class="string">"scil"</span>: <span class="number">8</span>,
+          <span class="string">"dcil"</span>: <span class="number">8</span>,
+          <span class="string">"scid"</span>: <span class="string">"7e37e4dcc6682da8"</span>,
+          <span class="string">"dcid"</span>: <span class="string">"36ce104eee50101c"
+        </span>},
+        <span class="string">"raw"</span>: {
+          <span class="string">"length"</span>: <span class="number">1251</span>,
+          <span class="string">"payload_length"</span>: <span class="number">1224
+        </span>},
+        <span class="string">"frames"</span>: [
+          {
+            <span class="string">"frame_type"</span>: <span class="string">"crypto"</span>,
+            <span class="string">"offset"</span>: <span class="number">0</span>,
+            <span class="string">"length"</span>: <span class="number">0
+          </span>}
+        ]
+      }
+    }
+  ]
+}</code></pre></div>
+<h3 id="streaming-traces-with-json-seq"><a class="doc-anchor" href="#streaming-traces-with-json-seq">§</a>Streaming Traces with JSON-SEQ</h3>
+<p>To help support streaming serialization of qlogs,
+draft-ietf-quic-qlog-main-schema-01 introduced support for RFC 7464 JSON
+Text Sequences (JSON-SEQ). The qlog crate supports this format and provides
+utilities that aid streaming.</p>
+<p>A <a href="struct.TraceSeq.html"><code>TraceSeq</code></a> contains metadata such as the <a href="struct.VantagePoint.html"><code>VantagePoint</code></a> of capture and
+the <a href="struct.Configuration.html"><code>Configuration</code></a>. However, protocol event data is handled as separate
+lines containing a record separator character, a serialized <a href="events/struct.Event.html" title="struct qlog::events::Event"><code>Event</code></a>, and a
+newline.</p>
+<h4 id="creating-a-traceseq"><a class="doc-anchor" href="#creating-a-traceseq">§</a>Creating a TraceSeq</h4>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>trace = qlog::TraceSeq::new(
+    qlog::VantagePoint {
+        name: <span class="prelude-val">Some</span>(<span class="string">"Example client"</span>.to_string()),
+        ty: qlog::VantagePointType::Client,
+        flow: <span class="prelude-val">None</span>,
+    },
+    <span class="prelude-val">Some</span>(<span class="string">"Example qlog trace"</span>.to_string()),
+    <span class="prelude-val">Some</span>(<span class="string">"Example qlog trace description"</span>.to_string()),
+    <span class="prelude-val">Some</span>(qlog::Configuration {
+        time_offset: <span class="prelude-val">Some</span>(<span class="number">0.0</span>),
+        original_uris: <span class="prelude-val">None</span>,
+    }),
+    <span class="prelude-val">None</span>,
+);</code></pre></div>
+<p>Create an object with the <a href="https://doc.rust-lang.org/std/io/trait.Write.html"><code>Write</code></a> trait:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>file = std::fs::File::create(<span class="string">"foo.sqlog"</span>).unwrap();</code></pre></div>
+<p>Create a <a href="struct.QlogStreamer.html"><code>QlogStreamer</code></a> and start serialization to foo.sqlog
+using <a href="streamer/struct.QlogStreamer.html#method.start_log"><code>start_log()</code></a>:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>streamer = qlog::streamer::QlogStreamer::new(
+    qlog::QLOG_VERSION.to_string(),
+    <span class="prelude-val">Some</span>(<span class="string">"Example qlog"</span>.to_string()),
+    <span class="prelude-val">Some</span>(<span class="string">"Example qlog description"</span>.to_string()),
+    <span class="prelude-val">None</span>,
+    std::time::Instant::now(),
+    trace,
+    qlog::events::EventImportance::Base,
+    Box::new(file),
+);
+
+streamer.start_log().ok();</code></pre></div>
+<h4 id="adding-events"><a class="doc-anchor" href="#adding-events">§</a>Adding events</h4>
+<p>Once logging has started you can stream events. Events
+are written in one step using one of <a href="streamer/struct.QlogStreamer.html#method.add_event"><code>add_event()</code></a>,
+<a href="streamer/struct.QlogStreamer.html#method.add_event_with_instant"><code>add_event_with_instant()</code></a>, <a href="streamer/struct.QlogStreamer.html#method.add_event_now"><code>add_event_now()</code></a>,
+<a href="streamer/struct.QlogStreamer.html#method.add_event_data_with_instant"><code>add_event_data_with_instant()</code></a>, or <a href="streamer/struct.QlogStreamer.html#method.add_event_data_now"><code>add_event_data_now()</code></a> :</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code>
+<span class="kw">let </span>scid = [<span class="number">0x7e</span>, <span class="number">0x37</span>, <span class="number">0xe4</span>, <span class="number">0xdc</span>, <span class="number">0xc6</span>, <span class="number">0x68</span>, <span class="number">0x2d</span>, <span class="number">0xa8</span>];
+<span class="kw">let </span>dcid = [<span class="number">0x36</span>, <span class="number">0xce</span>, <span class="number">0x10</span>, <span class="number">0x4e</span>, <span class="number">0xee</span>, <span class="number">0x50</span>, <span class="number">0x10</span>, <span class="number">0x1c</span>];
+
+<span class="kw">let </span>pkt_hdr = qlog::events::quic::PacketHeader::with_type(
+    qlog::events::quic::PacketType::OneRtt,
+    <span class="prelude-val">Some</span>(<span class="number">0</span>),
+    <span class="prelude-val">Some</span>(<span class="number">0x00000001</span>),
+    <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>scid),
+    <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>dcid),
+);
+
+<span class="kw">let </span>ping = qlog::events::quic::QuicFrame::Ping {
+    length: <span class="prelude-val">None</span>,
+    payload_length: <span class="prelude-val">None</span>,
+};
+<span class="kw">let </span>padding = qlog::events::quic::QuicFrame::Padding {
+    length: <span class="prelude-val">None</span>,
+    payload_length: <span class="number">1234</span>,
+};
+
+<span class="kw">let </span>event_data =
+    qlog::events::EventData::PacketSent(qlog::events::quic::PacketSent {
+        header: pkt_hdr,
+        frames: <span class="prelude-val">Some</span>(<span class="macro">vec!</span>[ping, padding].into()),
+        is_coalesced: <span class="prelude-val">None</span>,
+        retry_token: <span class="prelude-val">None</span>,
+        stateless_reset_token: <span class="prelude-val">None</span>,
+        supported_versions: <span class="prelude-val">None</span>,
+        raw: <span class="prelude-val">None</span>,
+        datagram_id: <span class="prelude-val">None</span>,
+        send_at_time: <span class="prelude-val">None</span>,
+        trigger: <span class="prelude-val">None</span>,
+    });
+
+<span class="kw">let </span>event = qlog::events::Event::with_time(<span class="number">0.0</span>, event_data);
+
+streamer.add_event(event).ok();</code></pre></div>
+<p>Once all events have been written, the log
+can be finalized with <a href="streamer/struct.QlogStreamer.html#method.finish_log"><code>finish_log()</code></a>:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code>streamer.finish_log().ok();</code></pre></div>
+<h4 id="serializing-1"><a class="doc-anchor" href="#serializing-1">§</a>Serializing</h4>
+<p>Serialization to JSON occurs as methods on the <a href="struct.QlogStreamer.html"><code>QlogStreamer</code></a>
+are called. No additional steps are required.</p>
+</div></details><h2 id="modules" class="section-header">Modules<a href="#modules" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="mod" href="events/index.html" title="mod qlog::events">events</a></div></li><li><div class="item-name"><a class="mod" href="reader/index.html" title="mod qlog::reader">reader</a></div></li><li><div class="item-name"><a class="mod" href="streamer/index.html" title="mod qlog::streamer">streamer</a></div></li></ul><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a></div></li><li><div class="item-name"><a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a></div></li><li><div class="item-name"><a class="struct" href="struct.HexSlice.html" title="struct qlog::HexSlice">HexSlice</a></div></li><li><div class="item-name"><a class="struct" href="struct.Qlog.html" title="struct qlog::Qlog">Qlog</a></div></li><li><div class="item-name"><a class="struct" href="struct.QlogSeq.html" title="struct qlog::QlogSeq">QlogSeq</a></div></li><li><div class="item-name"><a class="struct" href="struct.Token.html" title="struct qlog::Token">Token</a></div></li><li><div class="item-name"><a class="struct" href="struct.Trace.html" title="struct qlog::Trace">Trace</a></div></li><li><div class="item-name"><a class="struct" href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a></div></li><li><div class="item-name"><a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a></div></li></ul><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="enum" href="enum.Error.html" title="enum qlog::Error">Error</a></div><div class="desc docblock-short">A quiche qlog error.</div></li><li><div class="item-name"><a class="enum" href="enum.ImportanceLogLevel.html" title="enum qlog::ImportanceLogLevel">ImportanceLogLevel</a></div></li><li><div class="item-name"><a class="enum" href="enum.TokenType.html" title="enum qlog::TokenType">TokenType</a></div></li><li><div class="item-name"><a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a></div></li></ul><h2 id="constants" class="section-header">Constants<a href="#constants" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="constant" href="constant.QLOG_VERSION.html" title="constant qlog::QLOG_VERSION">QLOG_VERSION</a></div></li></ul><h2 id="types" class="section-header">Type Aliases<a href="#types" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="type" href="type.Bytes.html" title="type qlog::Bytes">Bytes</a></div></li><li><div class="item-name"><a class="type" href="type.Result.html" title="type qlog::Result">Result</a></div><div class="desc docblock-short">A specialized <a href="https://doc.rust-lang.org/std/result/enum.Result.html"><code>Result</code></a> type for quiche qlog operations.</div></li><li><div class="item-name"><a class="type" href="type.StatelessResetToken.html" title="type qlog::StatelessResetToken">StatelessResetToken</a></div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/reader/enum.Event.html b/qlog/reader/enum.Event.html
new file mode 100644
index 0000000..ff749e8
--- /dev/null
+++ b/qlog/reader/enum.Event.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Represents the format of the read event."><title>Event in qlog::reader - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Event</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Json">Json</a></li><li><a href="#variant.Qlog">Qlog</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Event">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Event">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Event">Send</a></li><li><a href="#impl-Sync-for-Event">Sync</a></li><li><a href="#impl-Unpin-for-Event">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Event">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::reader</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../index.html">qlog</a>::<wbr><a href="index.html">reader</a>::<wbr><a class="enum" href="#">Event</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/reader.rs.html#31-37">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum Event {
+    Qlog(<a class="struct" href="../events/struct.Event.html" title="struct qlog::events::Event">Event</a>),
+    Json(<a class="struct" href="../events/struct.JsonEvent.html" title="struct qlog::events::JsonEvent">JsonEvent</a>),
+}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Represents the format of the read event.</p>
+</div></details><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Qlog" class="variant"><a href="#variant.Qlog" class="anchor">§</a><h3 class="code-header">Qlog(<a class="struct" href="../events/struct.Event.html" title="struct qlog::events::Event">Event</a>)</h3></section><div class="docblock"><p>A native qlog event type.</p>
+</div><section id="variant.Json" class="variant"><a href="#variant.Json" class="anchor">§</a><h3 class="code-header">Json(<a class="struct" href="../events/struct.JsonEvent.html" title="struct qlog::events::JsonEvent">JsonEvent</a>)</h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Event" class="impl"><a href="#impl-Freeze-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.Event.html" title="enum qlog::reader::Event">Event</a></h3></section><section id="impl-RefUnwindSafe-for-Event" class="impl"><a href="#impl-RefUnwindSafe-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Event.html" title="enum qlog::reader::Event">Event</a></h3></section><section id="impl-Send-for-Event" class="impl"><a href="#impl-Send-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Event.html" title="enum qlog::reader::Event">Event</a></h3></section><section id="impl-Sync-for-Event" class="impl"><a href="#impl-Sync-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Event.html" title="enum qlog::reader::Event">Event</a></h3></section><section id="impl-Unpin-for-Event" class="impl"><a href="#impl-Unpin-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Event.html" title="enum qlog::reader::Event">Event</a></h3></section><section id="impl-UnwindSafe-for-Event" class="impl"><a href="#impl-UnwindSafe-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Event.html" title="enum qlog::reader::Event">Event</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/reader/index.html b/qlog/reader/index.html
new file mode 100644
index 0000000..c86768b
--- /dev/null
+++ b/qlog/reader/index.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `reader` mod in crate `qlog`."><title>qlog::reader - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Module reader</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></section><h2><a href="../index.html">In crate qlog</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../index.html">qlog</a>::<wbr><a class="mod" href="#">reader</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/reader.rs.html#27-111">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.QlogSeqReader.html" title="struct qlog::reader::QlogSeqReader">QlogSeqReader</a></div><div class="desc docblock-short">A helper object specialized for reading JSON-SEQ qlog from a <a href="https://doc.rust-lang.org/std/io/trait.BufRead.html"><code>BufRead</code></a>
+trait.</div></li></ul><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="enum" href="enum.Event.html" title="enum qlog::reader::Event">Event</a></div><div class="desc docblock-short">Represents the format of the read event.</div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/reader/sidebar-items.js b/qlog/reader/sidebar-items.js
new file mode 100644
index 0000000..d457ccc
--- /dev/null
+++ b/qlog/reader/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"enum":["Event"],"struct":["QlogSeqReader"]};
\ No newline at end of file
diff --git a/qlog/reader/struct.QlogSeqReader.html b/qlog/reader/struct.QlogSeqReader.html
new file mode 100644
index 0000000..6834671
--- /dev/null
+++ b/qlog/reader/struct.QlogSeqReader.html
@@ -0,0 +1,196 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A helper object specialized for reading JSON-SEQ qlog from a `BufRead` trait."><title>QlogSeqReader in qlog::reader - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QlogSeqReader</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.qlog">qlog</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.new">new</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Iterator-for-QlogSeqReader">Iterator</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-RefUnwindSafe-for-QlogSeqReader">!RefUnwindSafe</a></li><li><a href="#impl-UnwindSafe-for-QlogSeqReader">!UnwindSafe</a></li><li><a href="#impl-Freeze-for-QlogSeqReader">Freeze</a></li><li><a href="#impl-Send-for-QlogSeqReader">Send</a></li><li><a href="#impl-Sync-for-QlogSeqReader">Sync</a></li><li><a href="#impl-Unpin-for-QlogSeqReader">Unpin</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoIterator-for-I">IntoIterator</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::reader</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">qlog</a>::<wbr><a href="index.html">reader</a>::<wbr><a class="struct" href="#">QlogSeqReader</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/reader.rs.html#43-46">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct QlogSeqReader {
+    pub qlog: <a class="struct" href="../struct.QlogSeq.html" title="struct qlog::QlogSeq">QlogSeq</a>,
+    <span class="comment">/* private fields */</span>
+}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A helper object specialized for reading JSON-SEQ qlog from a <a href="https://doc.rust-lang.org/std/io/trait.BufRead.html"><code>BufRead</code></a>
+trait.</p>
+</div></details><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.qlog" class="structfield section-header"><a href="#structfield.qlog" class="anchor field">§</a><code>qlog: <a class="struct" href="../struct.QlogSeq.html" title="struct qlog::QlogSeq">QlogSeq</a></code></span><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-QlogSeqReader" class="impl"><a class="src rightside" href="../../src/qlog/reader.rs.html#48-84">source</a><a href="#impl-QlogSeqReader" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.QlogSeqReader.html" title="struct qlog::reader::QlogSeqReader">QlogSeqReader</a></h3></section></summary><div class="impl-items"><section id="method.new" class="method"><a class="src rightside" href="../../src/qlog/reader.rs.html#49-69">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(
+    reader: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait.BufRead.html" title="trait std::io::BufRead">BufRead</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>&gt;
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a>&gt;&gt;</h4></section></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Iterator-for-QlogSeqReader" class="impl"><a class="src rightside" href="../../src/qlog/reader.rs.html#86-111">source</a><a href="#impl-Iterator-for-QlogSeqReader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="struct.QlogSeqReader.html" title="struct qlog::reader::QlogSeqReader">QlogSeqReader</a></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Item" class="associatedtype trait-impl"><a href="#associatedtype.Item" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="associatedtype">Item</a> = <a class="enum" href="enum.Event.html" title="enum qlog::reader::Event">Event</a></h4></section></summary><div class='docblock'>The type of the elements being iterated over.</div></details><details class="toggle method-toggle" open><summary><section id="method.next" class="method trait-impl"><a class="src rightside" href="../../src/qlog/reader.rs.html#90-110">source</a><a href="#method.next" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#tymethod.next" class="fn">next</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;</h4></section></summary><div class='docblock'>Advances the iterator and returns the next value. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#tymethod.next">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.next_chunk" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#115-119">source</a><a href="#method.next_chunk" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.next_chunk" class="fn">next_chunk</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(
+    &amp;mut self
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;[Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">N</a>], <a class="struct" href="https://doc.rust-lang.org/nightly/core/array/iter/struct.IntoIter.html" title="struct core::array::iter::IntoIter">IntoIter</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, N&gt;&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_next_chunk</code>)</span></div></span><div class='docblock'>Advances the iterator and returns an array containing the next <code>N</code> values. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.next_chunk">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.size_hint" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#193">source</a></span><a href="#method.size_hint" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.size_hint" class="fn">size_hint</a>(&amp;self) -&gt; (<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;)</h4></section></summary><div class='docblock'>Returns the bounds on the remaining length of the iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.size_hint">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.count" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#229-231">source</a></span><a href="#method.count" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.count" class="fn">count</a>(self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Consumes the iterator, counting the number of iterations and returning it. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.count">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.last" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#258-260">source</a></span><a href="#method.last" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.last" class="fn">last</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Consumes the iterator, returning the last element. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.last">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.advance_by" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#305">source</a><a href="#method.advance_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.advance_by" class="fn">advance_by</a>(&amp;mut self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/num/nonzero/struct.NonZero.html" title="struct core::num::nonzero::NonZero">NonZero</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_advance_by</code>)</span></div></span><div class='docblock'>Advances the iterator by <code>n</code> elements. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.advance_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.nth" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#357">source</a></span><a href="#method.nth" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.nth" class="fn">nth</a>(&amp;mut self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;</h4></section></summary><div class='docblock'>Returns the <code>n</code>th element of the iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.nth">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.step_by" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.28.0">1.28.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#408-410">source</a></span><a href="#method.step_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.step_by" class="fn">step_by</a>(self, step: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/step_by/struct.StepBy.html" title="struct core::iter::adapters::step_by::StepBy">StepBy</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator starting at the same point, but stepping by
+the given amount at each iteration. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.step_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.chain" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#480-483">source</a></span><a href="#method.chain" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.chain" class="fn">chain</a>&lt;U&gt;(self, other: U) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/chain/struct.Chain.html" title="struct core::iter::adapters::chain::Chain">Chain</a>&lt;Self, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,</div></h4></section></summary><div class='docblock'>Takes two iterators and creates a new iterator over both in sequence. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.chain">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.zip" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#599-602">source</a></span><a href="#method.zip" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.zip" class="fn">zip</a>&lt;U&gt;(self, other: U) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/zip/struct.Zip.html" title="struct core::iter::adapters::zip::Zip">Zip</a>&lt;Self, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,</div></h4></section></summary><div class='docblock'>‘Zips up’ two iterators into a single iterator of pairs. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.zip">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.intersperse_with" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#701-704">source</a><a href="#method.intersperse_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.intersperse_with" class="fn">intersperse_with</a>&lt;G&gt;(self, separator: G) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/intersperse/struct.IntersperseWith.html" title="struct core::iter::adapters::intersperse::IntersperseWith">IntersperseWith</a>&lt;Self, G&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    G: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>() -&gt; Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_intersperse</code>)</span></div></span><div class='docblock'>Creates a new iterator which places an item generated by <code>separator</code>
+between adjacent items of the original iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.intersperse_with">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.map" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#761-764">source</a></span><a href="#method.map" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map" class="fn">map</a>&lt;B, F&gt;(self, f: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/map/struct.Map.html" title="struct core::iter::adapters::map::Map">Map</a>&lt;Self, F&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; B,</div></h4></section></summary><div class='docblock'>Takes a closure and creates an iterator which calls that closure on each
+element. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.for_each" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#807-810">source</a></span><a href="#method.for_each" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.for_each" class="fn">for_each</a>&lt;F&gt;(self, f: F)<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>),</div></h4></section></summary><div class='docblock'>Calls a closure on each element of an iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.for_each">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.filter" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#883-886">source</a></span><a href="#method.filter" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter" class="fn">filter</a>&lt;P&gt;(self, predicate: P) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/filter/struct.Filter.html" title="struct core::iter::adapters::filter::Filter">Filter</a>&lt;Self, P&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator which uses a closure to determine if an element
+should be yielded. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.filter_map" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#929-932">source</a></span><a href="#method.filter_map" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter_map" class="fn">filter_map</a>&lt;B, F&gt;(self, f: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/filter_map/struct.FilterMap.html" title="struct core::iter::adapters::filter_map::FilterMap">FilterMap</a>&lt;Self, F&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;B&gt;,</div></h4></section></summary><div class='docblock'>Creates an iterator that both filters and maps. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter_map">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.enumerate" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#976-978">source</a></span><a href="#method.enumerate" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.enumerate" class="fn">enumerate</a>(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/enumerate/struct.Enumerate.html" title="struct core::iter::adapters::enumerate::Enumerate">Enumerate</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator which gives the current iteration count as well as
+the next value. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.enumerate">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.peekable" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1048-1050">source</a></span><a href="#method.peekable" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.peekable" class="fn">peekable</a>(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/peekable/struct.Peekable.html" title="struct core::iter::adapters::peekable::Peekable">Peekable</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator which can use the <a href="https://doc.rust-lang.org/nightly/core/iter/adapters/peekable/struct.Peekable.html#method.peek" title="method core::iter::adapters::peekable::Peekable::peek"><code>peek</code></a> and <a href="https://doc.rust-lang.org/nightly/core/iter/adapters/peekable/struct.Peekable.html#method.peek_mut" title="method core::iter::adapters::peekable::Peekable::peek_mut"><code>peek_mut</code></a> methods
+to look at the next element of the iterator without consuming it. See
+their documentation for more information. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.peekable">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.skip_while" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1114-1117">source</a></span><a href="#method.skip_while" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip_while" class="fn">skip_while</a>&lt;P&gt;(self, predicate: P) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/skip_while/struct.SkipWhile.html" title="struct core::iter::adapters::skip_while::SkipWhile">SkipWhile</a>&lt;Self, P&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator that <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip" title="method core::iter::traits::iterator::Iterator::skip"><code>skip</code></a>s elements based on a predicate. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip_while">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.take_while" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1196-1199">source</a></span><a href="#method.take_while" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take_while" class="fn">take_while</a>&lt;P&gt;(self, predicate: P) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/take_while/struct.TakeWhile.html" title="struct core::iter::adapters::take_while::TakeWhile">TakeWhile</a>&lt;Self, P&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator that yields elements based on a predicate. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take_while">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.map_while" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.57.0">1.57.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1285-1288">source</a></span><a href="#method.map_while" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_while" class="fn">map_while</a>&lt;B, P&gt;(self, predicate: P) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/map_while/struct.MapWhile.html" title="struct core::iter::adapters::map_while::MapWhile">MapWhile</a>&lt;Self, P&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;B&gt;,</div></h4></section></summary><div class='docblock'>Creates an iterator that both yields elements based on a predicate and maps. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_while">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.skip" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1315-1317">source</a></span><a href="#method.skip" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip" class="fn">skip</a>(self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/skip/struct.Skip.html" title="struct core::iter::adapters::skip::Skip">Skip</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator that skips the first <code>n</code> elements. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.take" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1369-1371">source</a></span><a href="#method.take" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take" class="fn">take</a>(self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/take/struct.Take.html" title="struct core::iter::adapters::take::Take">Take</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator that yields the first <code>n</code> elements, or fewer
+if the underlying iterator ends sooner. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.scan" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1417-1420">source</a></span><a href="#method.scan" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.scan" class="fn">scan</a>&lt;St, B, F&gt;(self, initial_state: St, f: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/scan/struct.Scan.html" title="struct core::iter::adapters::scan::Scan">Scan</a>&lt;Self, St, F&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut St</a>, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;B&gt;,</div></h4></section></summary><div class='docblock'>An iterator adapter which, like <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold" title="method core::iter::traits::iterator::Iterator::fold"><code>fold</code></a>, holds internal state, but
+unlike <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold" title="method core::iter::traits::iterator::Iterator::fold"><code>fold</code></a>, produces a new iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.scan">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.flat_map" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1456-1460">source</a></span><a href="#method.flat_map" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.flat_map" class="fn">flat_map</a>&lt;U, F&gt;(self, f: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/flatten/struct.FlatMap.html" title="struct core::iter::adapters::flatten::FlatMap">FlatMap</a>&lt;Self, U, F&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; U,</div></h4></section></summary><div class='docblock'>Creates an iterator that works like map, but flattens nested structure. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.flat_map">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.map_windows" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1698-1701">source</a><a href="#method.map_windows" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_windows" class="fn">map_windows</a>&lt;F, R, const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(self, f: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/map_windows/struct.MapWindows.html" title="struct core::iter::adapters::map_windows::MapWindows">MapWindows</a>&lt;Self, F, N&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;[Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">N</a>]) -&gt; R,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_map_windows</code>)</span></div></span><div class='docblock'>Calls the given function <code>f</code> for each contiguous window of size <code>N</code> over
+<code>self</code> and returns an iterator over the outputs of <code>f</code>. Like <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.windows" title="method slice::windows"><code>slice::windows()</code></a>,
+the windows during mapping overlap as well. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_windows">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.fuse" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1765-1767">source</a></span><a href="#method.fuse" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fuse" class="fn">fuse</a>(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/fuse/struct.Fuse.html" title="struct core::iter::adapters::fuse::Fuse">Fuse</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator which ends after the first <a href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html#variant.None" title="variant core::option::Option::None"><code>None</code></a>. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fuse">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.inspect" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1850-1853">source</a></span><a href="#method.inspect" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.inspect" class="fn">inspect</a>&lt;F&gt;(self, f: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/inspect/struct.Inspect.html" title="struct core::iter::adapters::inspect::Inspect">Inspect</a>&lt;Self, F&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>),</div></h4></section></summary><div class='docblock'>Does something with each element of an iterator, passing the value on. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.inspect">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.by_ref" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1879-1881">source</a></span><a href="#method.by_ref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.by_ref" class="fn">by_ref</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut Self</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Borrows an iterator, rather than consuming it. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.by_ref">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.collect" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1999-2001">source</a></span><a href="#method.collect" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect" class="fn">collect</a>&lt;B&gt;(self) -&gt; B<div class="where">where
+    B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html" title="trait core::iter::traits::collect::FromIterator">FromIterator</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Transforms an iterator into a collection. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.collect_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2152-2154">source</a><a href="#method.collect_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect_into" class="fn">collect_into</a>&lt;E&gt;(self, collection: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut E</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut E</a><div class="where">where
+    E: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_collect_into</code>)</span></div></span><div class='docblock'>Collects all the items from an iterator into a collection. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect_into">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.partition" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2185-2189">source</a></span><a href="#method.partition" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partition" class="fn">partition</a>&lt;B, F&gt;(self, f: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(B, B)</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Consumes an iterator, creating two collections from it. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partition">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.is_partitioned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2306-2309">source</a><a href="#method.is_partitioned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_partitioned" class="fn">is_partitioned</a>&lt;P&gt;(self, predicate: P) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_is_partitioned</code>)</span></div></span><div class='docblock'>Checks if the elements of this iterator are partitioned according to the given predicate,
+such that all those that return <code>true</code> precede all those that return <code>false</code>. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_partitioned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.try_fold" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.27.0">1.27.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2401-2405">source</a></span><a href="#method.try_fold" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_fold" class="fn">try_fold</a>&lt;B, F, R&gt;(&amp;mut self, init: B, f: F) -&gt; R<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(B, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; R,
+    R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&lt;Output = B&gt;,</div></h4></section></summary><div class='docblock'>An iterator method that applies a function as long as it returns
+successfully, producing a single, final value. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_fold">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.try_for_each" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.27.0">1.27.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2460-2464">source</a></span><a href="#method.try_for_each" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_for_each" class="fn">try_for_each</a>&lt;F, R&gt;(&amp;mut self, f: F) -&gt; R<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; R,
+    R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&lt;Output = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;,</div></h4></section></summary><div class='docblock'>An iterator method that applies a fallible function to each item in the
+iterator, stopping at the first error and returning that error. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_for_each">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.fold" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2580-2583">source</a></span><a href="#method.fold" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold" class="fn">fold</a>&lt;B, F&gt;(self, init: B, f: F) -&gt; B<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(B, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; B,</div></h4></section></summary><div class='docblock'>Folds every element into an accumulator by applying an operation,
+returning the final result. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.reduce" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.51.0">1.51.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2618-2621">source</a></span><a href="#method.reduce" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.reduce" class="fn">reduce</a>&lt;F&gt;(self, f: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>,</div></h4></section></summary><div class='docblock'>Reduces the elements to a single one, by repeatedly applying a reducing
+operation. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.reduce">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.try_reduce" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2690-2695">source</a><a href="#method.try_reduce" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_reduce" class="fn">try_reduce</a>&lt;F, R&gt;(
+    &amp;mut self,
+    f: F
+) -&gt; &lt;&lt;R as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual" title="type core::ops::try_trait::Try::Residual">Residual</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html" title="trait core::ops::try_trait::Residual">Residual</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&lt;R as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Output" title="type core::ops::try_trait::Try::Output">Output</a>&gt;&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html#associatedtype.TryType" title="type core::ops::try_trait::Residual::TryType">TryType</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; R,
+    R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&lt;Output = Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,
+    &lt;R as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual" title="type core::ops::try_trait::Try::Residual">Residual</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html" title="trait core::ops::try_trait::Residual">Residual</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;&gt;,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iterator_try_reduce</code>)</span></div></span><div class='docblock'>Reduces the elements to a single one by repeatedly applying a reducing operation. If the
+closure returns a failure, the failure is propagated back to the caller immediately. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_reduce">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.all" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2748-2751">source</a></span><a href="#method.all" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.all" class="fn">all</a>&lt;F&gt;(&amp;mut self, f: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Tests if every element of the iterator matches a predicate. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.all">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.any" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2802-2805">source</a></span><a href="#method.any" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.any" class="fn">any</a>&lt;F&gt;(&amp;mut self, f: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Tests if any element of the iterator matches a predicate. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.any">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.find" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2866-2869">source</a></span><a href="#method.find" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find" class="fn">find</a>&lt;P&gt;(&amp;mut self, predicate: P) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Searches for an element of an iterator that satisfies a predicate. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.find_map" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2898-2901">source</a></span><a href="#method.find_map" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find_map" class="fn">find_map</a>&lt;B, F&gt;(&amp;mut self, f: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;B&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;B&gt;,</div></h4></section></summary><div class='docblock'>Applies function to the elements of iterator and returns
+the first non-none result. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find_map">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.try_find" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2956-2961">source</a><a href="#method.try_find" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_find" class="fn">try_find</a>&lt;F, R&gt;(
+    &amp;mut self,
+    f: F
+) -&gt; &lt;&lt;R as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual" title="type core::ops::try_trait::Try::Residual">Residual</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html" title="trait core::ops::try_trait::Residual">Residual</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html#associatedtype.TryType" title="type core::ops::try_trait::Residual::TryType">TryType</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; R,
+    R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&lt;Output = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;,
+    &lt;R as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual" title="type core::ops::try_trait::Try::Residual">Residual</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html" title="trait core::ops::try_trait::Residual">Residual</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;&gt;,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>try_find</code>)</span></div></span><div class='docblock'>Applies function to the elements of iterator and returns
+the first true result or the first error. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_find">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.position" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3039-3042">source</a></span><a href="#method.position" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position" class="fn">position</a>&lt;P&gt;(&amp;mut self, predicate: P) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Searches for an element in an iterator, returning its index. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.max_by_key" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.6.0">1.6.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3214-3217">source</a></span><a href="#method.max_by_key" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by_key" class="fn">max_by_key</a>&lt;B, F&gt;(self, f: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; B,</div></h4></section></summary><div class='docblock'>Returns the element that gives the maximum value from the
+specified function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by_key">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.max_by" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.15.0">1.15.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3248-3251">source</a></span><a href="#method.max_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by" class="fn">max_by</a>&lt;F&gt;(self, compare: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>,</div></h4></section></summary><div class='docblock'>Returns the element that gives the maximum value with respect to the
+specified comparison function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.min_by_key" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.6.0">1.6.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3276-3279">source</a></span><a href="#method.min_by_key" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by_key" class="fn">min_by_key</a>&lt;B, F&gt;(self, f: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; B,</div></h4></section></summary><div class='docblock'>Returns the element that gives the minimum value from the
+specified function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by_key">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.min_by" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.15.0">1.15.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3310-3313">source</a></span><a href="#method.min_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by" class="fn">min_by</a>&lt;F&gt;(self, compare: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>,</div></h4></section></summary><div class='docblock'>Returns the element that gives the minimum value with respect to the
+specified comparison function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.unzip" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3385-3389">source</a></span><a href="#method.unzip" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.unzip" class="fn">unzip</a>&lt;A, B, FromA, FromB&gt;(self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(FromA, FromB)</a><div class="where">where
+    FromA: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a>&lt;A&gt;,
+    FromB: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a>&lt;B&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>&lt;Item = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(A, B)</a>&gt;,</div></h4></section></summary><div class='docblock'>Converts an iterator of pairs into a pair of containers. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.unzip">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.copied" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.36.0">1.36.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3416-3419">source</a></span><a href="#method.copied" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.copied" class="fn">copied</a>&lt;'a, T&gt;(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/copied/struct.Copied.html" title="struct core::iter::adapters::copied::Copied">Copied</a>&lt;Self&gt;<div class="where">where
+    T: 'a + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>&lt;Item = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>&gt;,</div></h4></section></summary><div class='docblock'>Creates an iterator which copies all of its elements. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.copied">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.cloned" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3464-3467">source</a></span><a href="#method.cloned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cloned" class="fn">cloned</a>&lt;'a, T&gt;(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/cloned/struct.Cloned.html" title="struct core::iter::adapters::cloned::Cloned">Cloned</a>&lt;Self&gt;<div class="where">where
+    T: 'a + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>&lt;Item = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>&gt;,</div></h4></section></summary><div class='docblock'>Creates an iterator which <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" title="method core::clone::Clone::clone"><code>clone</code></a>s all of its elements. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cloned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.array_chunks" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3541-3543">source</a><a href="#method.array_chunks" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.array_chunks" class="fn">array_chunks</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/array_chunks/struct.ArrayChunks.html" title="struct core::iter::adapters::array_chunks::ArrayChunks">ArrayChunks</a>&lt;Self, N&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_array_chunks</code>)</span></div></span><div class='docblock'>Returns an iterator over <code>N</code> elements of the iterator at a time. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.array_chunks">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.sum" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.11.0">1.11.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3573-3576">source</a></span><a href="#method.sum" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.sum" class="fn">sum</a>&lt;S&gt;(self) -&gt; S<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html" title="trait core::iter::traits::accum::Sum">Sum</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,</div></h4></section></summary><div class='docblock'>Sums the elements of an iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.sum">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.product" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.11.0">1.11.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3606-3609">source</a></span><a href="#method.product" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.product" class="fn">product</a>&lt;P&gt;(self) -&gt; P<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Product.html" title="trait core::iter::traits::accum::Product">Product</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,</div></h4></section></summary><div class='docblock'>Iterates over the entire iterator, multiplying all the elements <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.product">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.cmp_by" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3656-3660">source</a><a href="#method.cmp_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cmp_by" class="fn">cmp_by</a>&lt;I, F&gt;(self, other: I, cmp: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_order_by</code>)</span></div></span><div class='docblock'><a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">Lexicographically</a> compares the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> with those
+of another with respect to the specified comparison function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cmp_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3713-3717">source</a></span><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp" class="fn">partial_cmp</a>&lt;I&gt;(self, other: I) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>&gt;<div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'><a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">Lexicographically</a> compares the <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd"><code>PartialOrd</code></a> elements of
+this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> with those of another. The comparison works like short-circuit
+evaluation, returning a result without comparing the remaining elements.
+As soon as an order can be determined, the evaluation stops and a result is returned. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.partial_cmp_by" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3750-3754">source</a><a href="#method.partial_cmp_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp_by" class="fn">partial_cmp_by</a>&lt;I, F&gt;(self, other: I, partial_cmp: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>&gt;,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_order_by</code>)</span></div></span><div class='docblock'><a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">Lexicographically</a> compares the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> with those
+of another with respect to the specified comparison function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3784-3788">source</a></span><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq" class="fn">eq</a>&lt;I&gt;(self, other: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are equal to those of
+another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.eq_by" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3808-3812">source</a><a href="#method.eq_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq_by" class="fn">eq_by</a>&lt;I, F&gt;(self, other: I, eq: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_order_by</code>)</span></div></span><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are equal to those of
+another with respect to the specified equality function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3841-3845">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ne" class="fn">ne</a>&lt;I&gt;(self, other: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are not equal to those of
+another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ne">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3863-3867">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.lt" class="fn">lt</a>&lt;I&gt;(self, other: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">lexicographically</a>
+less than those of another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.lt">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.le" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3885-3889">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.le" class="fn">le</a>&lt;I&gt;(self, other: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">lexicographically</a>
+less or equal to those of another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.le">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3907-3911">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.gt" class="fn">gt</a>&lt;I&gt;(self, other: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">lexicographically</a>
+greater than those of another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.gt">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3929-3933">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ge" class="fn">ge</a>&lt;I&gt;(self, other: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">lexicographically</a>
+greater than or equal to those of another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ge">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.is_sorted_by" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3990-3993">source</a><a href="#method.is_sorted_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by" class="fn">is_sorted_by</a>&lt;F&gt;(self, compare: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>is_sorted</code>)</span></div></span><div class='docblock'>Checks if the elements of this iterator are sorted using the given comparator function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.is_sorted_by_key" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#4037-4041">source</a><a href="#method.is_sorted_by_key" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by_key" class="fn">is_sorted_by_key</a>&lt;F, K&gt;(self, f: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; K,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>is_sorted</code>)</span></div></span><div class='docblock'>Checks if the elements of this iterator are sorted using the given key extraction
+function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by_key">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QlogSeqReader" class="impl"><a href="#impl-Freeze-for-QlogSeqReader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.QlogSeqReader.html" title="struct qlog::reader::QlogSeqReader">QlogSeqReader</a></h3></section><section id="impl-RefUnwindSafe-for-QlogSeqReader" class="impl"><a href="#impl-RefUnwindSafe-for-QlogSeqReader" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.QlogSeqReader.html" title="struct qlog::reader::QlogSeqReader">QlogSeqReader</a></h3></section><section id="impl-Send-for-QlogSeqReader" class="impl"><a href="#impl-Send-for-QlogSeqReader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.QlogSeqReader.html" title="struct qlog::reader::QlogSeqReader">QlogSeqReader</a></h3></section><section id="impl-Sync-for-QlogSeqReader" class="impl"><a href="#impl-Sync-for-QlogSeqReader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.QlogSeqReader.html" title="struct qlog::reader::QlogSeqReader">QlogSeqReader</a></h3></section><section id="impl-Unpin-for-QlogSeqReader" class="impl"><a href="#impl-Unpin-for-QlogSeqReader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.QlogSeqReader.html" title="struct qlog::reader::QlogSeqReader">QlogSeqReader</a></h3></section><section id="impl-UnwindSafe-for-QlogSeqReader" class="impl"><a href="#impl-UnwindSafe-for-QlogSeqReader" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.QlogSeqReader.html" title="struct qlog::reader::QlogSeqReader">QlogSeqReader</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoIterator-for-I" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#349">source</a><a href="#impl-IntoIterator-for-I" class="anchor">§</a><h3 class="code-header">impl&lt;I&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a> for I<div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Item-1" class="associatedtype trait-impl"><a href="#associatedtype.Item-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" class="associatedtype">Item</a> = &lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a></h4></section></summary><div class='docblock'>The type of the elements being iterated over.</div></details><details class="toggle" open><summary><section id="associatedtype.IntoIter" class="associatedtype trait-impl"><a href="#associatedtype.IntoIter" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" class="associatedtype">IntoIter</a> = I</h4></section></summary><div class='docblock'>Which kind of iterator are we turning this into?</div></details><details class="toggle method-toggle" open><summary><section id="method.into_iter" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/90603" title="Tracking issue for const_intoiterator_identity">unstable</a></span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#354">source</a></span><a href="#method.into_iter" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter" class="fn">into_iter</a>(self) -&gt; I</h4></section></summary><div class='docblock'>Creates an iterator from a value. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/sidebar-items.js b/qlog/sidebar-items.js
new file mode 100644
index 0000000..b218888
--- /dev/null
+++ b/qlog/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"constant":["QLOG_VERSION"],"enum":["Error","ImportanceLogLevel","TokenType","VantagePointType"],"mod":["events","reader","streamer"],"struct":["CommonFields","Configuration","HexSlice","Qlog","QlogSeq","Token","Trace","TraceSeq","VantagePoint"],"type":["Bytes","Result","StatelessResetToken"]};
\ No newline at end of file
diff --git a/qlog/streamer/enum.StreamerState.html b/qlog/streamer/enum.StreamerState.html
new file mode 100644
index 0000000..dcbf2b7
--- /dev/null
+++ b/qlog/streamer/enum.StreamerState.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `StreamerState` enum in crate `qlog`."><title>StreamerState in qlog::streamer - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">StreamerState</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Finished">Finished</a></li><li><a href="#variant.Initial">Initial</a></li><li><a href="#variant.Ready">Ready</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Debug-for-StreamerState">Debug</a></li><li><a href="#impl-Eq-for-StreamerState">Eq</a></li><li><a href="#impl-PartialEq-for-StreamerState">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-StreamerState">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-StreamerState">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-StreamerState">RefUnwindSafe</a></li><li><a href="#impl-Send-for-StreamerState">Send</a></li><li><a href="#impl-Sync-for-StreamerState">Sync</a></li><li><a href="#impl-Unpin-for-StreamerState">Unpin</a></li><li><a href="#impl-UnwindSafe-for-StreamerState">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::streamer</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../index.html">qlog</a>::<wbr><a href="index.html">streamer</a>::<wbr><a class="enum" href="#">StreamerState</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/streamer.rs.html#46-50">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum StreamerState {
+    Initial,
+    Ready,
+    Finished,
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Initial" class="variant"><a href="#variant.Initial" class="anchor">§</a><h3 class="code-header">Initial</h3></section><section id="variant.Ready" class="variant"><a href="#variant.Ready" class="anchor">§</a><h3 class="code-header">Ready</h3></section><section id="variant.Finished" class="variant"><a href="#variant.Finished" class="anchor">§</a><h3 class="code-header">Finished</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-StreamerState" class="impl"><a class="src rightside" href="../../src/qlog/streamer.rs.html#45">source</a><a href="#impl-Debug-for-StreamerState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.StreamerState.html" title="enum qlog::streamer::StreamerState">StreamerState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/qlog/streamer.rs.html#45">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-StreamerState" class="impl"><a class="src rightside" href="../../src/qlog/streamer.rs.html#45">source</a><a href="#impl-PartialEq-for-StreamerState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.StreamerState.html" title="enum qlog::streamer::StreamerState">StreamerState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../src/qlog/streamer.rs.html#45">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.StreamerState.html" title="enum qlog::streamer::StreamerState">StreamerState</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-StreamerState" class="impl"><a class="src rightside" href="../../src/qlog/streamer.rs.html#45">source</a><a href="#impl-Eq-for-StreamerState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.StreamerState.html" title="enum qlog::streamer::StreamerState">StreamerState</a></h3></section><section id="impl-StructuralPartialEq-for-StreamerState" class="impl"><a class="src rightside" href="../../src/qlog/streamer.rs.html#45">source</a><a href="#impl-StructuralPartialEq-for-StreamerState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.StreamerState.html" title="enum qlog::streamer::StreamerState">StreamerState</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-StreamerState" class="impl"><a href="#impl-Freeze-for-StreamerState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.StreamerState.html" title="enum qlog::streamer::StreamerState">StreamerState</a></h3></section><section id="impl-RefUnwindSafe-for-StreamerState" class="impl"><a href="#impl-RefUnwindSafe-for-StreamerState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.StreamerState.html" title="enum qlog::streamer::StreamerState">StreamerState</a></h3></section><section id="impl-Send-for-StreamerState" class="impl"><a href="#impl-Send-for-StreamerState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.StreamerState.html" title="enum qlog::streamer::StreamerState">StreamerState</a></h3></section><section id="impl-Sync-for-StreamerState" class="impl"><a href="#impl-Sync-for-StreamerState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.StreamerState.html" title="enum qlog::streamer::StreamerState">StreamerState</a></h3></section><section id="impl-Unpin-for-StreamerState" class="impl"><a href="#impl-Unpin-for-StreamerState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.StreamerState.html" title="enum qlog::streamer::StreamerState">StreamerState</a></h3></section><section id="impl-UnwindSafe-for-StreamerState" class="impl"><a href="#impl-UnwindSafe-for-StreamerState" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.StreamerState.html" title="enum qlog::streamer::StreamerState">StreamerState</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/streamer/index.html b/qlog/streamer/index.html
new file mode 100644
index 0000000..06cb81e
--- /dev/null
+++ b/qlog/streamer/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `streamer` mod in crate `qlog`."><title>qlog::streamer - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Module streamer</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></section><h2><a href="../index.html">In crate qlog</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../index.html">qlog</a>::<wbr><a class="mod" href="#">streamer</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/streamer.rs.html#27-544">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.QlogStreamer.html" title="struct qlog::streamer::QlogStreamer">QlogStreamer</a></div></li></ul><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="enum" href="enum.StreamerState.html" title="enum qlog::streamer::StreamerState">StreamerState</a></div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/streamer/sidebar-items.js b/qlog/streamer/sidebar-items.js
new file mode 100644
index 0000000..944d7d3
--- /dev/null
+++ b/qlog/streamer/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"enum":["StreamerState"],"struct":["QlogStreamer"]};
\ No newline at end of file
diff --git a/qlog/streamer/struct.QlogStreamer.html b/qlog/streamer/struct.QlogStreamer.html
new file mode 100644
index 0000000..07867ae
--- /dev/null
+++ b/qlog/streamer/struct.QlogStreamer.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QlogStreamer` struct in crate `qlog`."><title>QlogStreamer in qlog::streamer - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QlogStreamer</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.add_event">add_event</a></li><li><a href="#method.add_event_data_ex_now">add_event_data_ex_now</a></li><li><a href="#method.add_event_data_ex_with_instant">add_event_data_ex_with_instant</a></li><li><a href="#method.add_event_data_now">add_event_data_now</a></li><li><a href="#method.add_event_data_with_instant">add_event_data_with_instant</a></li><li><a href="#method.add_event_now">add_event_now</a></li><li><a href="#method.add_event_with_instant">add_event_with_instant</a></li><li><a href="#method.finish_log">finish_log</a></li><li><a href="#method.new">new</a></li><li><a href="#method.start_log">start_log</a></li><li><a href="#method.start_time">start_time</a></li><li><a href="#method.writer">writer</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Drop-for-QlogStreamer">Drop</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-RefUnwindSafe-for-QlogStreamer">!RefUnwindSafe</a></li><li><a href="#impl-UnwindSafe-for-QlogStreamer">!UnwindSafe</a></li><li><a href="#impl-Freeze-for-QlogStreamer">Freeze</a></li><li><a href="#impl-Send-for-QlogStreamer">Send</a></li><li><a href="#impl-Sync-for-QlogStreamer">Sync</a></li><li><a href="#impl-Unpin-for-QlogStreamer">Unpin</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In qlog::streamer</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">qlog</a>::<wbr><a href="index.html">streamer</a>::<wbr><a class="struct" href="#">QlogStreamer</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/qlog/streamer.rs.html#52-58">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct QlogStreamer { <span class="comment">/* private fields */</span> }</code></pre><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-QlogStreamer" class="impl"><a class="src rightside" href="../../src/qlog/streamer.rs.html#60-254">source</a><a href="#impl-QlogStreamer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.QlogStreamer.html" title="struct qlog::streamer::QlogStreamer">QlogStreamer</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../../src/qlog/streamer.rs.html#71-93">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(
+    qlog_version: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    title: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    description: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    summary: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    start_time: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>,
+    trace: <a class="struct" href="../struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a>,
+    log_level: <a class="enum" href="../events/enum.EventImportance.html" title="enum qlog::events::EventImportance">EventImportance</a>,
+    writer: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait std::io::Write">Write</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>&gt;
+) -&gt; Self</h4></section></summary><div class="docblock"><p>Creates a <a href="struct.QlogStreamer.html" title="struct qlog::streamer::QlogStreamer">QlogStreamer</a> object.</p>
+<p>It owns a <a href="../struct.QlogSeq.html" title="struct qlog::QlogSeq">QlogSeq</a> object that contains the provided <a href="../struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a>
+containing <a href="../events/struct.Event.html" title="struct qlog::events::Event">Event</a>s.</p>
+<p>All serialization will be written to the provided <a href="https://doc.rust-lang.org/std/io/trait.Write.html"><code>Write</code></a> using the
+JSON-SEQ format.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.start_log" class="method"><a class="src rightside" href="../../src/qlog/streamer.rs.html#107-120">source</a><h4 class="code-header">pub fn <a href="#method.start_log" class="fn">start_log</a>(&amp;mut self) -&gt; <a class="type" href="../type.Result.html" title="type qlog::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Starts qlog streaming serialization.</p>
+<p>This writes out the JSON-SEQ-serialized form of all initial qlog
+information. <a href="../events/struct.Event.html" title="struct qlog::events::Event">Event</a>s are separately appended using <a href="#method.add_event">add_event()</a>,
+<a href="#method.add_event_with_instant">add_event_with_instant()</a>, <a href="#method.add_event_now">add_event_now()</a>,
+<a href="#method.add_event_data_with_instant">add_event_data_with_instant()</a>, or <a href="#method.add_event_data_now">add_event_data_now()</a>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.finish_log" class="method"><a class="src rightside" href="../../src/qlog/streamer.rs.html#125-137">source</a><h4 class="code-header">pub fn <a href="#method.finish_log" class="fn">finish_log</a>(&amp;mut self) -&gt; <a class="type" href="../type.Result.html" title="type qlog::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Finishes qlog streaming serialization.</p>
+<p>After this is called, no more serialization will occur.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.add_event_now" class="method"><a class="src rightside" href="../../src/qlog/streamer.rs.html#141-147">source</a><h4 class="code-header">pub fn <a href="#method.add_event_now" class="fn">add_event_now</a>&lt;E: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> + <a class="trait" href="../events/trait.Eventable.html" title="trait qlog::events::Eventable">Eventable</a>&gt;(
+    &amp;mut self,
+    event: E
+) -&gt; <a class="type" href="../type.Result.html" title="type qlog::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Writes a serializable to a JSON-SEQ record using
+<a href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html#method.now" title="associated function std::time::Instant::now">std::time::Instant::now()</a>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.add_event_with_instant" class="method"><a class="src rightside" href="../../src/qlog/streamer.rs.html#151-172">source</a><h4 class="code-header">pub fn <a href="#method.add_event_with_instant" class="fn">add_event_with_instant</a>&lt;E: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> + <a class="trait" href="../events/trait.Eventable.html" title="trait qlog::events::Eventable">Eventable</a>&gt;(
+    &amp;mut self,
+    event: E,
+    now: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>
+) -&gt; <a class="type" href="../type.Result.html" title="type qlog::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Writes a serializable to a JSON-SEQ record using the provided
+<a href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">std::time::Instant</a>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.add_event_data_now" class="method"><a class="src rightside" href="../../src/qlog/streamer.rs.html#176-178">source</a><h4 class="code-header">pub fn <a href="#method.add_event_data_now" class="fn">add_event_data_now</a>(&amp;mut self, event_data: <a class="enum" href="../events/enum.EventData.html" title="enum qlog::events::EventData">EventData</a>) -&gt; <a class="type" href="../type.Result.html" title="type qlog::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Writes an <a href="../events/struct.Event.html" title="struct qlog::events::Event">Event</a> based on the provided <a href="../events/enum.EventData.html" title="enum qlog::events::EventData">EventData</a> to a JSON-SEQ record
+at time <a href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html#method.now" title="associated function std::time::Instant::now">std::time::Instant::now()</a>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.add_event_data_ex_now" class="method"><a class="src rightside" href="../../src/qlog/streamer.rs.html#182-188">source</a><h4 class="code-header">pub fn <a href="#method.add_event_data_ex_now" class="fn">add_event_data_ex_now</a>(
+    &amp;mut self,
+    event_data: <a class="enum" href="../events/enum.EventData.html" title="enum qlog::events::EventData">EventData</a>,
+    ex_data: <a class="type" href="../events/type.ExData.html" title="type qlog::events::ExData">ExData</a>
+) -&gt; <a class="type" href="../type.Result.html" title="type qlog::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Writes an <a href="../events/struct.Event.html" title="struct qlog::events::Event">Event</a> based on the provided <a href="../events/enum.EventData.html" title="enum qlog::events::EventData">EventData</a> and <a href="../events/type.ExData.html" title="type qlog::events::ExData">ExData</a> to a
+JSON-SEQ record at time <a href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html#method.now" title="associated function std::time::Instant::now">std::time::Instant::now()</a>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.add_event_data_with_instant" class="method"><a class="src rightside" href="../../src/qlog/streamer.rs.html#192-196">source</a><h4 class="code-header">pub fn <a href="#method.add_event_data_with_instant" class="fn">add_event_data_with_instant</a>(
+    &amp;mut self,
+    event_data: <a class="enum" href="../events/enum.EventData.html" title="enum qlog::events::EventData">EventData</a>,
+    now: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>
+) -&gt; <a class="type" href="../type.Result.html" title="type qlog::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Writes an <a href="../events/struct.Event.html" title="struct qlog::events::Event">Event</a> based on the provided <a href="../events/enum.EventData.html" title="enum qlog::events::EventData">EventData</a> and
+<a href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">std::time::Instant</a> to a JSON-SEQ record.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.add_event_data_ex_with_instant" class="method"><a class="src rightside" href="../../src/qlog/streamer.rs.html#200-223">source</a><h4 class="code-header">pub fn <a href="#method.add_event_data_ex_with_instant" class="fn">add_event_data_ex_with_instant</a>(
+    &amp;mut self,
+    event_data: <a class="enum" href="../events/enum.EventData.html" title="enum qlog::events::EventData">EventData</a>,
+    ex_data: <a class="type" href="../events/type.ExData.html" title="type qlog::events::ExData">ExData</a>,
+    now: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>
+) -&gt; <a class="type" href="../type.Result.html" title="type qlog::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Writes an <a href="../events/struct.Event.html" title="struct qlog::events::Event">Event</a> based on the provided <a href="../events/enum.EventData.html" title="enum qlog::events::EventData">EventData</a>, <a href="../events/type.ExData.html" title="type qlog::events::ExData">ExData</a>, and
+<a href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">std::time::Instant</a> to a JSON-SEQ record.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.add_event" class="method"><a class="src rightside" href="../../src/qlog/streamer.rs.html#226-243">source</a><h4 class="code-header">pub fn <a href="#method.add_event" class="fn">add_event</a>&lt;E: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> + <a class="trait" href="../events/trait.Eventable.html" title="trait qlog::events::Eventable">Eventable</a>&gt;(&amp;mut self, event: E) -&gt; <a class="type" href="../type.Result.html" title="type qlog::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Writes a JSON-SEQ-serialized <a href="../events/struct.Event.html" title="struct qlog::events::Event">Event</a> using the provided <a href="../events/struct.Event.html" title="struct qlog::events::Event">Event</a>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.writer" class="method"><a class="src rightside" href="../../src/qlog/streamer.rs.html#247-249">source</a><h4 class="code-header">pub fn <a href="#method.writer" class="fn">writer</a>(&amp;self) -&gt; &amp;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait std::io::Write">Write</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the writer.</p>
+</div></details><section id="method.start_time" class="method"><a class="src rightside" href="../../src/qlog/streamer.rs.html#251-253">source</a><h4 class="code-header">pub fn <a href="#method.start_time" class="fn">start_time</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a></h4></section></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Drop-for-QlogStreamer" class="impl"><a class="src rightside" href="../../src/qlog/streamer.rs.html#256-260">source</a><a href="#impl-Drop-for-QlogStreamer" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/drop/trait.Drop.html" title="trait core::ops::drop::Drop">Drop</a> for <a class="struct" href="struct.QlogStreamer.html" title="struct qlog::streamer::QlogStreamer">QlogStreamer</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl"><a class="src rightside" href="../../src/qlog/streamer.rs.html#257-259">source</a><a href="#method.drop" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/drop/trait.Drop.html#tymethod.drop" class="fn">drop</a>(&amp;mut self)</h4></section></summary><div class='docblock'>Executes the destructor for this type. <a href="https://doc.rust-lang.org/nightly/core/ops/drop/trait.Drop.html#tymethod.drop">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QlogStreamer" class="impl"><a href="#impl-Freeze-for-QlogStreamer" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.QlogStreamer.html" title="struct qlog::streamer::QlogStreamer">QlogStreamer</a></h3></section><section id="impl-RefUnwindSafe-for-QlogStreamer" class="impl"><a href="#impl-RefUnwindSafe-for-QlogStreamer" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.QlogStreamer.html" title="struct qlog::streamer::QlogStreamer">QlogStreamer</a></h3></section><section id="impl-Send-for-QlogStreamer" class="impl"><a href="#impl-Send-for-QlogStreamer" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.QlogStreamer.html" title="struct qlog::streamer::QlogStreamer">QlogStreamer</a></h3></section><section id="impl-Sync-for-QlogStreamer" class="impl"><a href="#impl-Sync-for-QlogStreamer" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.QlogStreamer.html" title="struct qlog::streamer::QlogStreamer">QlogStreamer</a></h3></section><section id="impl-Unpin-for-QlogStreamer" class="impl"><a href="#impl-Unpin-for-QlogStreamer" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.QlogStreamer.html" title="struct qlog::streamer::QlogStreamer">QlogStreamer</a></h3></section><section id="impl-UnwindSafe-for-QlogStreamer" class="impl"><a href="#impl-UnwindSafe-for-QlogStreamer" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.QlogStreamer.html" title="struct qlog::streamer::QlogStreamer">QlogStreamer</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/struct.CommonFields.html b/qlog/struct.CommonFields.html
new file mode 100644
index 0000000..26082ac
--- /dev/null
+++ b/qlog/struct.CommonFields.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `CommonFields` struct in crate `qlog`."><title>CommonFields in qlog - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">CommonFields</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.group_id">group_id</a></li><li><a href="#structfield.protocol_type">protocol_type</a></li><li><a href="#structfield.reference_time">reference_time</a></li><li><a href="#structfield.time_format">time_format</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-CommonFields">Clone</a></li><li><a href="#impl-Debug-for-CommonFields">Debug</a></li><li><a href="#impl-Default-for-CommonFields">Default</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-CommonFields">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-PartialEq-for-CommonFields">PartialEq</a></li><li><a href="#impl-Serialize-for-CommonFields">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-CommonFields">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-CommonFields">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-CommonFields">RefUnwindSafe</a></li><li><a href="#impl-Send-for-CommonFields">Send</a></li><li><a href="#impl-Sync-for-CommonFields">Sync</a></li><li><a href="#impl-Unpin-for-CommonFields">Unpin</a></li><li><a href="#impl-UnwindSafe-for-CommonFields">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate qlog</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">qlog</a>::<wbr><a class="struct" href="#">CommonFields</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/qlog/lib.rs.html#610-617">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct CommonFields {
+    pub group_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub protocol_type: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;&gt;,
+    pub reference_time: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f64.html">f64</a>&gt;,
+    pub time_format: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.group_id" class="structfield section-header"><a href="#structfield.group_id" class="anchor field">§</a><code>group_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.protocol_type" class="structfield section-header"><a href="#structfield.protocol_type" class="anchor field">§</a><code>protocol_type: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;&gt;</code></span><span id="structfield.reference_time" class="structfield section-header"><a href="#structfield.reference_time" class="anchor field">§</a><code>reference_time: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f64.html">f64</a>&gt;</code></span><span id="structfield.time_format" class="structfield section-header"><a href="#structfield.time_format" class="anchor field">§</a><code>time_format: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-CommonFields" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#609">source</a><a href="#impl-Clone-for-CommonFields" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#609">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-CommonFields" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#609">source</a><a href="#impl-Debug-for-CommonFields" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#609">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-CommonFields" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#609">source</a><a href="#impl-Default-for-CommonFields" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#609">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -&gt; <a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-CommonFields" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#609">source</a><a href="#impl-Deserialize%3C'de%3E-for-CommonFields" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#609">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-CommonFields" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#609">source</a><a href="#impl-PartialEq-for-CommonFields" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#609">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-CommonFields" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#609">source</a><a href="#impl-Serialize-for-CommonFields" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#609">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-StructuralPartialEq-for-CommonFields" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#609">source</a><a href="#impl-StructuralPartialEq-for-CommonFields" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-CommonFields" class="impl"><a href="#impl-Freeze-for-CommonFields" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a></h3></section><section id="impl-RefUnwindSafe-for-CommonFields" class="impl"><a href="#impl-RefUnwindSafe-for-CommonFields" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a></h3></section><section id="impl-Send-for-CommonFields" class="impl"><a href="#impl-Send-for-CommonFields" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a></h3></section><section id="impl-Sync-for-CommonFields" class="impl"><a href="#impl-Sync-for-CommonFields" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a></h3></section><section id="impl-Unpin-for-CommonFields" class="impl"><a href="#impl-Unpin-for-CommonFields" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a></h3></section><section id="impl-UnwindSafe-for-CommonFields" class="impl"><a href="#impl-UnwindSafe-for-CommonFields" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/struct.Configuration.html b/qlog/struct.Configuration.html
new file mode 100644
index 0000000..bf04ff0
--- /dev/null
+++ b/qlog/struct.Configuration.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `Configuration` struct in crate `qlog`."><title>Configuration in qlog - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Configuration</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.original_uris">original_uris</a></li><li><a href="#structfield.time_offset">time_offset</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-Configuration">Clone</a></li><li><a href="#impl-Debug-for-Configuration">Debug</a></li><li><a href="#impl-Default-for-Configuration">Default</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-Configuration">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-PartialEq-for-Configuration">PartialEq</a></li><li><a href="#impl-Serialize-for-Configuration">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-Configuration">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Configuration">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Configuration">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Configuration">Send</a></li><li><a href="#impl-Sync-for-Configuration">Sync</a></li><li><a href="#impl-Unpin-for-Configuration">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Configuration">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate qlog</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">qlog</a>::<wbr><a class="struct" href="#">Configuration</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/qlog/lib.rs.html#592-597">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Configuration {
+    pub time_offset: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f64.html">f64</a>&gt;,
+    pub original_uris: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.time_offset" class="structfield section-header"><a href="#structfield.time_offset" class="anchor field">§</a><code>time_offset: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f64.html">f64</a>&gt;</code></span><span id="structfield.original_uris" class="structfield section-header"><a href="#structfield.original_uris" class="anchor field">§</a><code>original_uris: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Configuration" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#591">source</a><a href="#impl-Clone-for-Configuration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#591">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Configuration" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#591">source</a><a href="#impl-Debug-for-Configuration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#591">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-Configuration" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#599-606">source</a><a href="#impl-Default-for-Configuration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#600-605">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -&gt; Self</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-Configuration" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#591">source</a><a href="#impl-Deserialize%3C'de%3E-for-Configuration" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#591">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-Configuration" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#591">source</a><a href="#impl-PartialEq-for-Configuration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#591">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-Configuration" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#591">source</a><a href="#impl-Serialize-for-Configuration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#591">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-StructuralPartialEq-for-Configuration" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#591">source</a><a href="#impl-StructuralPartialEq-for-Configuration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Configuration" class="impl"><a href="#impl-Freeze-for-Configuration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a></h3></section><section id="impl-RefUnwindSafe-for-Configuration" class="impl"><a href="#impl-RefUnwindSafe-for-Configuration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a></h3></section><section id="impl-Send-for-Configuration" class="impl"><a href="#impl-Send-for-Configuration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a></h3></section><section id="impl-Sync-for-Configuration" class="impl"><a href="#impl-Sync-for-Configuration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a></h3></section><section id="impl-Unpin-for-Configuration" class="impl"><a href="#impl-Unpin-for-Configuration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a></h3></section><section id="impl-UnwindSafe-for-Configuration" class="impl"><a href="#impl-UnwindSafe-for-Configuration" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/struct.HexSlice.html b/qlog/struct.HexSlice.html
new file mode 100644
index 0000000..f75aec5
--- /dev/null
+++ b/qlog/struct.HexSlice.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `HexSlice` struct in crate `qlog`."><title>HexSlice in qlog - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">HexSlice</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.maybe_string">maybe_string</a></li><li><a href="#method.new">new</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Display-for-HexSlice%3C'a%3E">Display</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-HexSlice%3C'a%3E">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-HexSlice%3C'a%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-HexSlice%3C'a%3E">Send</a></li><li><a href="#impl-Sync-for-HexSlice%3C'a%3E">Sync</a></li><li><a href="#impl-Unpin-for-HexSlice%3C'a%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-HexSlice%3C'a%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToString-for-T">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate qlog</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">qlog</a>::<wbr><a class="struct" href="#">HexSlice</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/qlog/lib.rs.html#637">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct HexSlice&lt;'a&gt;(<span class="comment">/* private fields */</span>);</code></pre><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-HexSlice%3C'a%3E" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#639-653">source</a><a href="#impl-HexSlice%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="struct" href="struct.HexSlice.html" title="struct qlog::HexSlice">HexSlice</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><section id="method.new" class="method"><a class="src rightside" href="../src/qlog/lib.rs.html#640-645">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>&lt;T&gt;(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>) -&gt; <a class="struct" href="struct.HexSlice.html" title="struct qlog::HexSlice">HexSlice</a>&lt;'a&gt;<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt; + 'a,</div></h4></section><section id="method.maybe_string" class="method"><a class="src rightside" href="../src/qlog/lib.rs.html#647-652">source</a><h4 class="code-header">pub fn <a href="#method.maybe_string" class="fn">maybe_string</a>&lt;T&gt;(data: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt; + 'a,</div></h4></section></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Display-for-HexSlice%3C'a%3E" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#655-662">source</a><a href="#impl-Display-for-HexSlice%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="struct" href="struct.HexSlice.html" title="struct qlog::HexSlice">HexSlice</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#656-661">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-HexSlice%3C'a%3E" class="impl"><a href="#impl-Freeze-for-HexSlice%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.HexSlice.html" title="struct qlog::HexSlice">HexSlice</a>&lt;'a&gt;</h3></section><section id="impl-RefUnwindSafe-for-HexSlice%3C'a%3E" class="impl"><a href="#impl-RefUnwindSafe-for-HexSlice%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.HexSlice.html" title="struct qlog::HexSlice">HexSlice</a>&lt;'a&gt;</h3></section><section id="impl-Send-for-HexSlice%3C'a%3E" class="impl"><a href="#impl-Send-for-HexSlice%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.HexSlice.html" title="struct qlog::HexSlice">HexSlice</a>&lt;'a&gt;</h3></section><section id="impl-Sync-for-HexSlice%3C'a%3E" class="impl"><a href="#impl-Sync-for-HexSlice%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.HexSlice.html" title="struct qlog::HexSlice">HexSlice</a>&lt;'a&gt;</h3></section><section id="impl-Unpin-for-HexSlice%3C'a%3E" class="impl"><a href="#impl-Unpin-for-HexSlice%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.HexSlice.html" title="struct qlog::HexSlice">HexSlice</a>&lt;'a&gt;</h3></section><section id="impl-UnwindSafe-for-HexSlice%3C'a%3E" class="impl"><a href="#impl-UnwindSafe-for-HexSlice%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.HexSlice.html" title="struct qlog::HexSlice">HexSlice</a>&lt;'a&gt;</h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToString-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2546">source</a><a href="#impl-ToString-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2552">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/struct.Qlog.html b/qlog/struct.Qlog.html
new file mode 100644
index 0000000..884266a
--- /dev/null
+++ b/qlog/struct.Qlog.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `Qlog` struct in crate `qlog`."><title>Qlog in qlog - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Qlog</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.description">description</a></li><li><a href="#structfield.qlog_format">qlog_format</a></li><li><a href="#structfield.qlog_version">qlog_version</a></li><li><a href="#structfield.summary">summary</a></li><li><a href="#structfield.title">title</a></li><li><a href="#structfield.traces">traces</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-Qlog">Clone</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-Qlog">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Serialize-for-Qlog">Serialize</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Qlog">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Qlog">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Qlog">Send</a></li><li><a href="#impl-Sync-for-Qlog">Sync</a></li><li><a href="#impl-Unpin-for-Qlog">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Qlog">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate qlog</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">qlog</a>::<wbr><a class="struct" href="#">Qlog</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/qlog/lib.rs.html#472-480">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Qlog {
+    pub qlog_version: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub qlog_format: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub title: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub description: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub summary: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub traces: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.Trace.html" title="struct qlog::Trace">Trace</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.qlog_version" class="structfield section-header"><a href="#structfield.qlog_version" class="anchor field">§</a><code>qlog_version: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.qlog_format" class="structfield section-header"><a href="#structfield.qlog_format" class="anchor field">§</a><code>qlog_format: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.title" class="structfield section-header"><a href="#structfield.title" class="anchor field">§</a><code>title: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.description" class="structfield section-header"><a href="#structfield.description" class="anchor field">§</a><code>description: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.summary" class="structfield section-header"><a href="#structfield.summary" class="anchor field">§</a><code>summary: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.traces" class="structfield section-header"><a href="#structfield.traces" class="anchor field">§</a><code>traces: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.Trace.html" title="struct qlog::Trace">Trace</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Qlog" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#471">source</a><a href="#impl-Clone-for-Qlog" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Qlog.html" title="struct qlog::Qlog">Qlog</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#471">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.Qlog.html" title="struct qlog::Qlog">Qlog</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-Qlog" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#471">source</a><a href="#impl-Deserialize%3C'de%3E-for-Qlog" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.Qlog.html" title="struct qlog::Qlog">Qlog</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#471">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-Qlog" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#471">source</a><a href="#impl-Serialize-for-Qlog" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.Qlog.html" title="struct qlog::Qlog">Qlog</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#471">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Qlog" class="impl"><a href="#impl-Freeze-for-Qlog" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Qlog.html" title="struct qlog::Qlog">Qlog</a></h3></section><section id="impl-RefUnwindSafe-for-Qlog" class="impl"><a href="#impl-RefUnwindSafe-for-Qlog" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Qlog.html" title="struct qlog::Qlog">Qlog</a></h3></section><section id="impl-Send-for-Qlog" class="impl"><a href="#impl-Send-for-Qlog" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Qlog.html" title="struct qlog::Qlog">Qlog</a></h3></section><section id="impl-Sync-for-Qlog" class="impl"><a href="#impl-Sync-for-Qlog" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Qlog.html" title="struct qlog::Qlog">Qlog</a></h3></section><section id="impl-Unpin-for-Qlog" class="impl"><a href="#impl-Unpin-for-Qlog" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Qlog.html" title="struct qlog::Qlog">Qlog</a></h3></section><section id="impl-UnwindSafe-for-Qlog" class="impl"><a href="#impl-UnwindSafe-for-Qlog" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Qlog.html" title="struct qlog::Qlog">Qlog</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/struct.QlogSeq.html b/qlog/struct.QlogSeq.html
new file mode 100644
index 0000000..47397de
--- /dev/null
+++ b/qlog/struct.QlogSeq.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `QlogSeq` struct in crate `qlog`."><title>QlogSeq in qlog - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">QlogSeq</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.description">description</a></li><li><a href="#structfield.qlog_format">qlog_format</a></li><li><a href="#structfield.qlog_version">qlog_version</a></li><li><a href="#structfield.summary">summary</a></li><li><a href="#structfield.title">title</a></li><li><a href="#structfield.trace">trace</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-QlogSeq">Clone</a></li><li><a href="#impl-Debug-for-QlogSeq">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-QlogSeq">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Serialize-for-QlogSeq">Serialize</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QlogSeq">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QlogSeq">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QlogSeq">Send</a></li><li><a href="#impl-Sync-for-QlogSeq">Sync</a></li><li><a href="#impl-Unpin-for-QlogSeq">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QlogSeq">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate qlog</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">qlog</a>::<wbr><a class="struct" href="#">QlogSeq</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/qlog/lib.rs.html#483-491">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct QlogSeq {
+    pub qlog_version: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub qlog_format: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub title: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub description: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub summary: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub trace: <a class="struct" href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a>,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.qlog_version" class="structfield section-header"><a href="#structfield.qlog_version" class="anchor field">§</a><code>qlog_version: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.qlog_format" class="structfield section-header"><a href="#structfield.qlog_format" class="anchor field">§</a><code>qlog_format: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.title" class="structfield section-header"><a href="#structfield.title" class="anchor field">§</a><code>title: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.description" class="structfield section-header"><a href="#structfield.description" class="anchor field">§</a><code>description: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.summary" class="structfield section-header"><a href="#structfield.summary" class="anchor field">§</a><code>summary: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.trace" class="structfield section-header"><a href="#structfield.trace" class="anchor field">§</a><code>trace: <a class="struct" href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a></code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-QlogSeq" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#482">source</a><a href="#impl-Clone-for-QlogSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.QlogSeq.html" title="struct qlog::QlogSeq">QlogSeq</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#482">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.QlogSeq.html" title="struct qlog::QlogSeq">QlogSeq</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-QlogSeq" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#482">source</a><a href="#impl-Debug-for-QlogSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.QlogSeq.html" title="struct qlog::QlogSeq">QlogSeq</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#482">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-QlogSeq" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#482">source</a><a href="#impl-Deserialize%3C'de%3E-for-QlogSeq" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.QlogSeq.html" title="struct qlog::QlogSeq">QlogSeq</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#482">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-QlogSeq" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#482">source</a><a href="#impl-Serialize-for-QlogSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.QlogSeq.html" title="struct qlog::QlogSeq">QlogSeq</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#482">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QlogSeq" class="impl"><a href="#impl-Freeze-for-QlogSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.QlogSeq.html" title="struct qlog::QlogSeq">QlogSeq</a></h3></section><section id="impl-RefUnwindSafe-for-QlogSeq" class="impl"><a href="#impl-RefUnwindSafe-for-QlogSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.QlogSeq.html" title="struct qlog::QlogSeq">QlogSeq</a></h3></section><section id="impl-Send-for-QlogSeq" class="impl"><a href="#impl-Send-for-QlogSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.QlogSeq.html" title="struct qlog::QlogSeq">QlogSeq</a></h3></section><section id="impl-Sync-for-QlogSeq" class="impl"><a href="#impl-Sync-for-QlogSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.QlogSeq.html" title="struct qlog::QlogSeq">QlogSeq</a></h3></section><section id="impl-Unpin-for-QlogSeq" class="impl"><a href="#impl-Unpin-for-QlogSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.QlogSeq.html" title="struct qlog::QlogSeq">QlogSeq</a></h3></section><section id="impl-UnwindSafe-for-QlogSeq" class="impl"><a href="#impl-UnwindSafe-for-QlogSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.QlogSeq.html" title="struct qlog::QlogSeq">QlogSeq</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/struct.Token.html b/qlog/struct.Token.html
new file mode 100644
index 0000000..3f78501
--- /dev/null
+++ b/qlog/struct.Token.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `Token` struct in crate `qlog`."><title>Token in qlog - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Token</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.details">details</a></li><li><a href="#structfield.raw">raw</a></li><li><a href="#structfield.ty">ty</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-Token">Clone</a></li><li><a href="#impl-Debug-for-Token">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-Token">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-Token">Eq</a></li><li><a href="#impl-PartialEq-for-Token">PartialEq</a></li><li><a href="#impl-Serialize-for-Token">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-Token">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Token">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Token">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Token">Send</a></li><li><a href="#impl-Sync-for-Token">Sync</a></li><li><a href="#impl-Unpin-for-Token">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Token">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate qlog</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">qlog</a>::<wbr><a class="struct" href="#">Token</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/qlog/lib.rs.html#628-635">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Token {
+    pub ty: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.TokenType.html" title="enum qlog::TokenType">TokenType</a>&gt;,
+    pub details: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="events/struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.ty" class="structfield section-header"><a href="#structfield.ty" class="anchor field">§</a><code>ty: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.TokenType.html" title="enum qlog::TokenType">TokenType</a>&gt;</code></span><span id="structfield.details" class="structfield section-header"><a href="#structfield.details" class="anchor field">§</a><code>details: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.raw" class="structfield section-header"><a href="#structfield.raw" class="anchor field">§</a><code>raw: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="events/struct.RawInfo.html" title="struct qlog::events::RawInfo">RawInfo</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Token" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#627">source</a><a href="#impl-Clone-for-Token" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Token.html" title="struct qlog::Token">Token</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#627">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.Token.html" title="struct qlog::Token">Token</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Token" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#627">source</a><a href="#impl-Debug-for-Token" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Token.html" title="struct qlog::Token">Token</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#627">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-Token" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#627">source</a><a href="#impl-Deserialize%3C'de%3E-for-Token" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.Token.html" title="struct qlog::Token">Token</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#627">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-Token" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#627">source</a><a href="#impl-PartialEq-for-Token" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.Token.html" title="struct qlog::Token">Token</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#627">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.Token.html" title="struct qlog::Token">Token</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-Token" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#627">source</a><a href="#impl-Serialize-for-Token" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.Token.html" title="struct qlog::Token">Token</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#627">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-Token" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#627">source</a><a href="#impl-Eq-for-Token" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Token.html" title="struct qlog::Token">Token</a></h3></section><section id="impl-StructuralPartialEq-for-Token" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#627">source</a><a href="#impl-StructuralPartialEq-for-Token" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.Token.html" title="struct qlog::Token">Token</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Token" class="impl"><a href="#impl-Freeze-for-Token" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Token.html" title="struct qlog::Token">Token</a></h3></section><section id="impl-RefUnwindSafe-for-Token" class="impl"><a href="#impl-RefUnwindSafe-for-Token" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Token.html" title="struct qlog::Token">Token</a></h3></section><section id="impl-Send-for-Token" class="impl"><a href="#impl-Send-for-Token" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Token.html" title="struct qlog::Token">Token</a></h3></section><section id="impl-Sync-for-Token" class="impl"><a href="#impl-Sync-for-Token" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Token.html" title="struct qlog::Token">Token</a></h3></section><section id="impl-Unpin-for-Token" class="impl"><a href="#impl-Unpin-for-Token" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Token.html" title="struct qlog::Token">Token</a></h3></section><section id="impl-UnwindSafe-for-Token" class="impl"><a href="#impl-UnwindSafe-for-Token" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Token.html" title="struct qlog::Token">Token</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/struct.Trace.html b/qlog/struct.Trace.html
new file mode 100644
index 0000000..d176201
--- /dev/null
+++ b/qlog/struct.Trace.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `Trace` struct in crate `qlog`."><title>Trace in qlog - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Trace</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.common_fields">common_fields</a></li><li><a href="#structfield.configuration">configuration</a></li><li><a href="#structfield.description">description</a></li><li><a href="#structfield.events">events</a></li><li><a href="#structfield.title">title</a></li><li><a href="#structfield.vantage_point">vantage_point</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.new">new</a></li><li><a href="#method.push_event">push_event</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-Trace">Clone</a></li><li><a href="#impl-Debug-for-Trace">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-Trace">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-PartialEq-for-Trace">PartialEq</a></li><li><a href="#impl-Serialize-for-Trace">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-Trace">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Trace">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Trace">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Trace">Send</a></li><li><a href="#impl-Sync-for-Trace">Sync</a></li><li><a href="#impl-Unpin-for-Trace">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Trace">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate qlog</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">qlog</a>::<wbr><a class="struct" href="#">Trace</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/qlog/lib.rs.html#504-514">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Trace {
+    pub vantage_point: <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a>,
+    pub title: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub description: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub configuration: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a>&gt;,
+    pub common_fields: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a>&gt;,
+    pub events: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="events/struct.Event.html" title="struct qlog::events::Event">Event</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.vantage_point" class="structfield section-header"><a href="#structfield.vantage_point" class="anchor field">§</a><code>vantage_point: <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a></code></span><span id="structfield.title" class="structfield section-header"><a href="#structfield.title" class="anchor field">§</a><code>title: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.description" class="structfield section-header"><a href="#structfield.description" class="anchor field">§</a><code>description: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.configuration" class="structfield section-header"><a href="#structfield.configuration" class="anchor field">§</a><code>configuration: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a>&gt;</code></span><span id="structfield.common_fields" class="structfield section-header"><a href="#structfield.common_fields" class="anchor field">§</a><code>common_fields: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a>&gt;</code></span><span id="structfield.events" class="structfield section-header"><a href="#structfield.events" class="anchor field">§</a><code>events: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="events/struct.Event.html" title="struct qlog::events::Event">Event</a>&gt;</code></span><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Trace" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#517-538">source</a><a href="#impl-Trace" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Trace.html" title="struct qlog::Trace">Trace</a></h3></section></summary><div class="docblock"><p>Helper functions for using a qlog <a href="struct.Trace.html" title="struct qlog::Trace">Trace</a>.</p>
+</div><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../src/qlog/lib.rs.html#519-532">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(
+    vantage_point: <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a>,
+    title: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    description: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    configuration: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a>&gt;,
+    common_fields: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a>&gt;
+) -&gt; Self</h4></section></summary><div class="docblock"><p>Creates a new qlog <a href="struct.Trace.html" title="struct qlog::Trace">Trace</a></p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.push_event" class="method"><a class="src rightside" href="../src/qlog/lib.rs.html#535-537">source</a><h4 class="code-header">pub fn <a href="#method.push_event" class="fn">push_event</a>(&amp;mut self, event: <a class="struct" href="events/struct.Event.html" title="struct qlog::events::Event">Event</a>)</h4></section></summary><div class="docblock"><p>Append an <a href="events/struct.Event.html" title="struct qlog::events::Event">Event</a> to a <a href="struct.Trace.html" title="struct qlog::Trace">Trace</a></p>
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Trace" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#503">source</a><a href="#impl-Clone-for-Trace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Trace.html" title="struct qlog::Trace">Trace</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#503">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.Trace.html" title="struct qlog::Trace">Trace</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Trace" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#503">source</a><a href="#impl-Debug-for-Trace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Trace.html" title="struct qlog::Trace">Trace</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#503">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-Trace" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#503">source</a><a href="#impl-Deserialize%3C'de%3E-for-Trace" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.Trace.html" title="struct qlog::Trace">Trace</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#503">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-Trace" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#503">source</a><a href="#impl-PartialEq-for-Trace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.Trace.html" title="struct qlog::Trace">Trace</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#503">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.Trace.html" title="struct qlog::Trace">Trace</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-Trace" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#503">source</a><a href="#impl-Serialize-for-Trace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.Trace.html" title="struct qlog::Trace">Trace</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#503">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-StructuralPartialEq-for-Trace" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#503">source</a><a href="#impl-StructuralPartialEq-for-Trace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.Trace.html" title="struct qlog::Trace">Trace</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Trace" class="impl"><a href="#impl-Freeze-for-Trace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Trace.html" title="struct qlog::Trace">Trace</a></h3></section><section id="impl-RefUnwindSafe-for-Trace" class="impl"><a href="#impl-RefUnwindSafe-for-Trace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Trace.html" title="struct qlog::Trace">Trace</a></h3></section><section id="impl-Send-for-Trace" class="impl"><a href="#impl-Send-for-Trace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Trace.html" title="struct qlog::Trace">Trace</a></h3></section><section id="impl-Sync-for-Trace" class="impl"><a href="#impl-Sync-for-Trace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Trace.html" title="struct qlog::Trace">Trace</a></h3></section><section id="impl-Unpin-for-Trace" class="impl"><a href="#impl-Unpin-for-Trace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Trace.html" title="struct qlog::Trace">Trace</a></h3></section><section id="impl-UnwindSafe-for-Trace" class="impl"><a href="#impl-UnwindSafe-for-Trace" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Trace.html" title="struct qlog::Trace">Trace</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/struct.TraceSeq.html b/qlog/struct.TraceSeq.html
new file mode 100644
index 0000000..1383724
--- /dev/null
+++ b/qlog/struct.TraceSeq.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `TraceSeq` struct in crate `qlog`."><title>TraceSeq in qlog - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">TraceSeq</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.common_fields">common_fields</a></li><li><a href="#structfield.configuration">configuration</a></li><li><a href="#structfield.description">description</a></li><li><a href="#structfield.title">title</a></li><li><a href="#structfield.vantage_point">vantage_point</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.new">new</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-TraceSeq">Clone</a></li><li><a href="#impl-Debug-for-TraceSeq">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-TraceSeq">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-PartialEq-for-TraceSeq">PartialEq</a></li><li><a href="#impl-Serialize-for-TraceSeq">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-TraceSeq">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-TraceSeq">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-TraceSeq">RefUnwindSafe</a></li><li><a href="#impl-Send-for-TraceSeq">Send</a></li><li><a href="#impl-Sync-for-TraceSeq">Sync</a></li><li><a href="#impl-Unpin-for-TraceSeq">Unpin</a></li><li><a href="#impl-UnwindSafe-for-TraceSeq">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate qlog</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">qlog</a>::<wbr><a class="struct" href="#">TraceSeq</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/qlog/lib.rs.html#542-550">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct TraceSeq {
+    pub vantage_point: <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a>,
+    pub title: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub description: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub configuration: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a>&gt;,
+    pub common_fields: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.vantage_point" class="structfield section-header"><a href="#structfield.vantage_point" class="anchor field">§</a><code>vantage_point: <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a></code></span><span id="structfield.title" class="structfield section-header"><a href="#structfield.title" class="anchor field">§</a><code>title: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.description" class="structfield section-header"><a href="#structfield.description" class="anchor field">§</a><code>description: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.configuration" class="structfield section-header"><a href="#structfield.configuration" class="anchor field">§</a><code>configuration: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a>&gt;</code></span><span id="structfield.common_fields" class="structfield section-header"><a href="#structfield.common_fields" class="anchor field">§</a><code>common_fields: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a>&gt;</code></span><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-TraceSeq" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#553-568">source</a><a href="#impl-TraceSeq" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a></h3></section></summary><div class="docblock"><p>Helper functions for using a qlog <a href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a>.</p>
+</div><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../src/qlog/lib.rs.html#555-567">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(
+    vantage_point: <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a>,
+    title: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    description: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    configuration: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.Configuration.html" title="struct qlog::Configuration">Configuration</a>&gt;,
+    common_fields: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.CommonFields.html" title="struct qlog::CommonFields">CommonFields</a>&gt;
+) -&gt; Self</h4></section></summary><div class="docblock"><p>Creates a new qlog <a href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a></p>
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-TraceSeq" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#541">source</a><a href="#impl-Clone-for-TraceSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#541">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-TraceSeq" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#541">source</a><a href="#impl-Debug-for-TraceSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#541">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-TraceSeq" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#541">source</a><a href="#impl-Deserialize%3C'de%3E-for-TraceSeq" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#541">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-TraceSeq" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#541">source</a><a href="#impl-PartialEq-for-TraceSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#541">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-TraceSeq" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#541">source</a><a href="#impl-Serialize-for-TraceSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#541">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-StructuralPartialEq-for-TraceSeq" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#541">source</a><a href="#impl-StructuralPartialEq-for-TraceSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-TraceSeq" class="impl"><a href="#impl-Freeze-for-TraceSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a></h3></section><section id="impl-RefUnwindSafe-for-TraceSeq" class="impl"><a href="#impl-RefUnwindSafe-for-TraceSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a></h3></section><section id="impl-Send-for-TraceSeq" class="impl"><a href="#impl-Send-for-TraceSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a></h3></section><section id="impl-Sync-for-TraceSeq" class="impl"><a href="#impl-Sync-for-TraceSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a></h3></section><section id="impl-Unpin-for-TraceSeq" class="impl"><a href="#impl-Unpin-for-TraceSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a></h3></section><section id="impl-UnwindSafe-for-TraceSeq" class="impl"><a href="#impl-UnwindSafe-for-TraceSeq" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.TraceSeq.html" title="struct qlog::TraceSeq">TraceSeq</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/struct.VantagePoint.html b/qlog/struct.VantagePoint.html
new file mode 100644
index 0000000..62476a7
--- /dev/null
+++ b/qlog/struct.VantagePoint.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `VantagePoint` struct in crate `qlog`."><title>VantagePoint in qlog - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">VantagePoint</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.flow">flow</a></li><li><a href="#structfield.name">name</a></li><li><a href="#structfield.ty">ty</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-VantagePoint">Clone</a></li><li><a href="#impl-Debug-for-VantagePoint">Debug</a></li><li><a href="#impl-Deserialize%3C'de%3E-for-VantagePoint">Deserialize&lt;&#x27;de&gt;</a></li><li><a href="#impl-Eq-for-VantagePoint">Eq</a></li><li><a href="#impl-PartialEq-for-VantagePoint">PartialEq</a></li><li><a href="#impl-Serialize-for-VantagePoint">Serialize</a></li><li><a href="#impl-StructuralPartialEq-for-VantagePoint">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-VantagePoint">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-VantagePoint">RefUnwindSafe</a></li><li><a href="#impl-Send-for-VantagePoint">Send</a></li><li><a href="#impl-Sync-for-VantagePoint">Sync</a></li><li><a href="#impl-Unpin-for-VantagePoint">Unpin</a></li><li><a href="#impl-UnwindSafe-for-VantagePoint">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-DeserializeOwned-for-T">DeserializeOwned</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate qlog</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">qlog</a>::<wbr><a class="struct" href="#">VantagePoint</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/qlog/lib.rs.html#572-579">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct VantagePoint {
+    pub name: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub ty: <a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a>,
+    pub flow: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.name" class="structfield section-header"><a href="#structfield.name" class="anchor field">§</a><code>name: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.ty" class="structfield section-header"><a href="#structfield.ty" class="anchor field">§</a><code>ty: <a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a></code></span><span id="structfield.flow" class="structfield section-header"><a href="#structfield.flow" class="anchor field">§</a><code>flow: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.VantagePointType.html" title="enum qlog::VantagePointType">VantagePointType</a>&gt;</code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-VantagePoint" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#571">source</a><a href="#impl-Clone-for-VantagePoint" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#571">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-VantagePoint" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#571">source</a><a href="#impl-Debug-for-VantagePoint" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#571">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deserialize%3C'de%3E-for-VantagePoint" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#571">source</a><a href="#impl-Deserialize%3C'de%3E-for-VantagePoint" class="anchor">§</a><h3 class="code-header">impl&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt; for <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#571">source</a><a href="#method.deserialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize" class="fn">deserialize</a>&lt;__D&gt;(__deserializer: __D) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, __D::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error" title="type serde::de::Deserializer::Error">Error</a>&gt;<div class="where">where
+    __D: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-VantagePoint" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#571">source</a><a href="#impl-PartialEq-for-VantagePoint" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#571">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-VantagePoint" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#571">source</a><a href="#impl-Serialize-for-VantagePoint" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.serialize" class="method trait-impl"><a class="src rightside" href="../src/qlog/lib.rs.html#571">source</a><a href="#method.serialize" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize" class="fn">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="associatedtype" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt;<div class="where">where
+    __S: <a class="trait" href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-VantagePoint" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#571">source</a><a href="#impl-Eq-for-VantagePoint" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a></h3></section><section id="impl-StructuralPartialEq-for-VantagePoint" class="impl"><a class="src rightside" href="../src/qlog/lib.rs.html#571">source</a><a href="#impl-StructuralPartialEq-for-VantagePoint" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-VantagePoint" class="impl"><a href="#impl-Freeze-for-VantagePoint" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a></h3></section><section id="impl-RefUnwindSafe-for-VantagePoint" class="impl"><a href="#impl-RefUnwindSafe-for-VantagePoint" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a></h3></section><section id="impl-Send-for-VantagePoint" class="impl"><a href="#impl-Send-for-VantagePoint" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a></h3></section><section id="impl-Sync-for-VantagePoint" class="impl"><a href="#impl-Sync-for-VantagePoint" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a></h3></section><section id="impl-Unpin-for-VantagePoint" class="impl"><a href="#impl-Unpin-for-VantagePoint" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a></h3></section><section id="impl-UnwindSafe-for-VantagePoint" class="impl"><a href="#impl-UnwindSafe-for-VantagePoint" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.VantagePoint.html" title="struct qlog::VantagePoint">VantagePoint</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-DeserializeOwned-for-T" class="impl"><a class="src rightside" href="https://docs.rs/serde/1.0.197/src/serde/de/mod.rs.html#608">source</a><a href="#impl-DeserializeOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a> for T<div class="where">where
+    T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'de&gt;,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/type.Bytes.html b/qlog/type.Bytes.html
new file mode 100644
index 0000000..954de9d
--- /dev/null
+++ b/qlog/type.Bytes.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `Bytes` type in crate `qlog`."><title>Bytes in qlog - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Bytes</a></h2><div class="sidebar-elems"><section><h3><a href="#aliased-type">Aliased type</a></h3></section><h2><a href="index.html">In crate qlog</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Type Alias <a href="index.html">qlog</a>::<wbr><a class="type" href="#">Bytes</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/qlog/lib.rs.html#459">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub type Bytes = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>;</code></pre><h2 id="aliased-type" class="section-header">Aliased Type<a href="#aliased-type" class="anchor">§</a></h2><pre class="rust item-decl"><code>struct Bytes { <span class="comment">/* private fields */</span> }</code></pre><script src="../type.impl/alloc/string/struct.String.js" data-self-path="qlog::Bytes" async></script></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/type.Result.html b/qlog/type.Result.html
new file mode 100644
index 0000000..22a0c8d
--- /dev/null
+++ b/qlog/type.Result.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A specialized `Result` type for quiche qlog operations."><title>Result in qlog - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">Result</a></h2><div class="sidebar-elems"><section><h3><a href="#aliased-type">Aliased type</a></h3><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Err">Err</a></li><li><a href="#variant.Ok">Ok</a></li></ul></section><h2><a href="index.html">In crate qlog</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Type Alias <a href="index.html">qlog</a>::<wbr><a class="type" href="#">Result</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/qlog/lib.rs.html#468">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub type Result&lt;T&gt; = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, <a class="enum" href="enum.Error.html" title="enum qlog::Error">Error</a>&gt;;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A specialized <a href="https://doc.rust-lang.org/std/result/enum.Result.html"><code>Result</code></a> type for quiche qlog operations.</p>
+<p>This type is used throughout the public API for any operation that
+can produce an error.</p>
+</div></details><h2 id="aliased-type" class="section-header">Aliased Type<a href="#aliased-type" class="anchor">§</a></h2><pre class="rust item-decl"><code>enum Result&lt;T&gt; {
+    Ok(T),
+    Err(<a class="enum" href="enum.Error.html" title="enum qlog::Error">Error</a>),
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Ok" class="variant"><a href="#variant.Ok" class="anchor">§</a><span class="since rightside" title="Stable since Rust version 1.0.0">1.0.0</span><h3 class="code-header">Ok(T)</h3></section><div class="docblock"><p>Contains the success value</p>
+</div><section id="variant.Err" class="variant"><a href="#variant.Err" class="anchor">§</a><span class="since rightside" title="Stable since Rust version 1.0.0">1.0.0</span><h3 class="code-header">Err(<a class="enum" href="enum.Error.html" title="enum qlog::Error">Error</a>)</h3></section><div class="docblock"><p>Contains the error value</p>
+</div></div><script src="../type.impl/core/result/enum.Result.js" data-self-path="qlog::Result" async></script></section></div></main></body></html>
\ No newline at end of file
diff --git a/qlog/type.StatelessResetToken.html b/qlog/type.StatelessResetToken.html
new file mode 100644
index 0000000..7698ae1
--- /dev/null
+++ b/qlog/type.StatelessResetToken.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `StatelessResetToken` type in crate `qlog`."><title>StatelessResetToken in qlog - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../qlog/index.html">qlog</a><span class="version">0.13.0</span></h2></div><h2 class="location"><a href="#">StatelessResetToken</a></h2><div class="sidebar-elems"><section><h3><a href="#aliased-type">Aliased type</a></h3></section><h2><a href="index.html">In crate qlog</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Type Alias <a href="index.html">qlog</a>::<wbr><a class="type" href="#">StatelessResetToken</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/qlog/lib.rs.html#460">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub type StatelessResetToken = <a class="type" href="type.Bytes.html" title="type qlog::Bytes">Bytes</a>;</code></pre><h2 id="aliased-type" class="section-header">Aliased Type<a href="#aliased-type" class="anchor">§</a></h2><pre class="rust item-decl"><code>struct StatelessResetToken { <span class="comment">/* private fields */</span> }</code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/all.html b/quiche/all.html
new file mode 100644
index 0000000..a7cbc0a
--- /dev/null
+++ b/quiche/all.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod sys"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#constants">Constants</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li><li><a href="#types">Type Aliases</a></li></ul></section></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><h1>List of all items</h1><h3 id="structs">Structs</h3><ul class="all-items"><li><a href="struct.Config.html">Config</a></li><li><a href="struct.Connection.html">Connection</a></li><li><a href="struct.ConnectionError.html">ConnectionError</a></li><li><a href="struct.ConnectionId.html">ConnectionId</a></li><li><a href="struct.Header.html">Header</a></li><li><a href="struct.PathStats.html">PathStats</a></li><li><a href="struct.RecvInfo.html">RecvInfo</a></li><li><a href="struct.SendInfo.html">SendInfo</a></li><li><a href="struct.SocketAddrIter.html">SocketAddrIter</a></li><li><a href="struct.Stats.html">Stats</a></li><li><a href="struct.StreamIter.html">StreamIter</a></li><li><a href="struct.TransportParams.html">TransportParams</a></li><li><a href="h3/struct.Config.html">h3::Config</a></li><li><a href="h3/struct.Connection.html">h3::Connection</a></li><li><a href="h3/struct.Header.html">h3::Header</a></li><li><a href="h3/struct.HeaderRef.html">h3::HeaderRef</a></li><li><a href="h3/struct.Priority.html">h3::Priority</a></li></ul><h3 id="enums">Enums</h3><ul class="all-items"><li><a href="enum.CongestionControlAlgorithm.html">CongestionControlAlgorithm</a></li><li><a href="enum.Error.html">Error</a></li><li><a href="enum.PathEvent.html">PathEvent</a></li><li><a href="enum.QlogLevel.html">QlogLevel</a></li><li><a href="enum.Shutdown.html">Shutdown</a></li><li><a href="enum.Type.html">Type</a></li><li><a href="enum.WireErrorCode.html">WireErrorCode</a></li><li><a href="h3/enum.Error.html">h3::Error</a></li><li><a href="h3/enum.Event.html">h3::Event</a></li><li><a href="h3/enum.WireErrorCode.html">h3::WireErrorCode</a></li></ul><h3 id="traits">Traits</h3><ul class="all-items"><li><a href="h3/trait.NameValue.html">h3::NameValue</a></li></ul><h3 id="functions">Functions</h3><ul class="all-items"><li><a href="fn.accept.html">accept</a></li><li><a href="fn.connect.html">connect</a></li><li><a href="h3/fn.grease_value.html">h3::grease_value</a></li><li><a href="fn.negotiate_version.html">negotiate_version</a></li><li><a href="fn.retry.html">retry</a></li><li><a href="fn.version_is_supported.html">version_is_supported</a></li></ul><h3 id="types">Type Aliases</h3><ul class="all-items"><li><a href="type.Result.html">Result</a></li><li><a href="h3/type.Result.html">h3::Result</a></li></ul><h3 id="constants">Constants</h3><ul class="all-items"><li><a href="constant.MAX_CONN_ID_LEN.html">MAX_CONN_ID_LEN</a></li><li><a href="constant.MIN_CLIENT_INITIAL_LEN.html">MIN_CLIENT_INITIAL_LEN</a></li><li><a href="constant.PROTOCOL_VERSION.html">PROTOCOL_VERSION</a></li><li><a href="h3/constant.APPLICATION_PROTOCOL.html">h3::APPLICATION_PROTOCOL</a></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/constant.MAX_CONN_ID_LEN.html b/quiche/constant.MAX_CONN_ID_LEN.html
new file mode 100644
index 0000000..5dc24d9
--- /dev/null
+++ b/quiche/constant.MAX_CONN_ID_LEN.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The maximum length of a connection ID."><title>MAX_CONN_ID_LEN in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc constant"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Constant <a href="index.html">quiche</a>::<wbr><a class="constant" href="#">MAX_CONN_ID_LEN</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#429">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub const MAX_CONN_ID_LEN: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = _; // 20usize</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The maximum length of a connection ID.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/constant.MIN_CLIENT_INITIAL_LEN.html b/quiche/constant.MIN_CLIENT_INITIAL_LEN.html
new file mode 100644
index 0000000..3478b4d
--- /dev/null
+++ b/quiche/constant.MIN_CLIENT_INITIAL_LEN.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The minimum length of Initial packets sent by a client."><title>MIN_CLIENT_INITIAL_LEN in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc constant"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Constant <a href="index.html">quiche</a>::<wbr><a class="constant" href="#">MIN_CLIENT_INITIAL_LEN</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#432">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub const MIN_CLIENT_INITIAL_LEN: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = 1200;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The minimum length of Initial packets sent by a client.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/constant.PROTOCOL_VERSION.html b/quiche/constant.PROTOCOL_VERSION.html
new file mode 100644
index 0000000..17533c7
--- /dev/null
+++ b/quiche/constant.PROTOCOL_VERSION.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The current QUIC wire version."><title>PROTOCOL_VERSION in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc constant"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Constant <a href="index.html">quiche</a>::<wbr><a class="constant" href="#">PROTOCOL_VERSION</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#423">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub const PROTOCOL_VERSION: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a> = PROTOCOL_VERSION_V1; // 1u32</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The current QUIC wire version.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/enum.CongestionControlAlgorithm.html b/quiche/enum.CongestionControlAlgorithm.html
new file mode 100644
index 0000000..e15c662
--- /dev/null
+++ b/quiche/enum.CongestionControlAlgorithm.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Available congestion control algorithms."><title>CongestionControlAlgorithm in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">CongestionControlAlgorithm</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.BBR">BBR</a></li><li><a href="#variant.BBR2">BBR2</a></li><li><a href="#variant.CUBIC">CUBIC</a></li><li><a href="#variant.Reno">Reno</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-CongestionControlAlgorithm">Clone</a></li><li><a href="#impl-Copy-for-CongestionControlAlgorithm">Copy</a></li><li><a href="#impl-Debug-for-CongestionControlAlgorithm">Debug</a></li><li><a href="#impl-Eq-for-CongestionControlAlgorithm">Eq</a></li><li><a href="#impl-FromStr-for-CongestionControlAlgorithm">FromStr</a></li><li><a href="#impl-PartialEq-for-CongestionControlAlgorithm">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-CongestionControlAlgorithm">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-CongestionControlAlgorithm">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-CongestionControlAlgorithm">RefUnwindSafe</a></li><li><a href="#impl-Send-for-CongestionControlAlgorithm">Send</a></li><li><a href="#impl-Sync-for-CongestionControlAlgorithm">Sync</a></li><li><a href="#impl-Unpin-for-CongestionControlAlgorithm">Unpin</a></li><li><a href="#impl-UnwindSafe-for-CongestionControlAlgorithm">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="index.html">quiche</a>::<wbr><a class="enum" href="#">CongestionControlAlgorithm</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/recovery/mod.rs.html#1153-1162">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code><div class="code-attribute">#[repr(C)]</div>pub enum CongestionControlAlgorithm {
+    Reno = 0,
+    CUBIC = 1,
+    BBR = 2,
+    BBR2 = 3,
+}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Available congestion control algorithms.</p>
+<p>This enum provides currently available list of congestion control
+algorithms.</p>
+</div></details><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Reno" class="variant"><a href="#variant.Reno" class="anchor">§</a><h3 class="code-header">Reno = 0</h3></section><div class="docblock"><p>Reno congestion control algorithm. <code>reno</code> in a string form.</p>
+</div><section id="variant.CUBIC" class="variant"><a href="#variant.CUBIC" class="anchor">§</a><h3 class="code-header">CUBIC = 1</h3></section><div class="docblock"><p>CUBIC congestion control algorithm (default). <code>cubic</code> in a string form.</p>
+</div><section id="variant.BBR" class="variant"><a href="#variant.BBR" class="anchor">§</a><h3 class="code-header">BBR = 2</h3></section><div class="docblock"><p>BBR congestion control algorithm. <code>bbr</code> in a string form.</p>
+</div><section id="variant.BBR2" class="variant"><a href="#variant.BBR2" class="anchor">§</a><h3 class="code-header">BBR2 = 3</h3></section><div class="docblock"><p>BBRv2 congestion control algorithm. <code>bbr2</code> in a string form.</p>
+</div></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-CongestionControlAlgorithm" class="impl"><a class="src rightside" href="../src/quiche/recovery/mod.rs.html#1151">source</a><a href="#impl-Clone-for-CongestionControlAlgorithm" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.CongestionControlAlgorithm.html" title="enum quiche::CongestionControlAlgorithm">CongestionControlAlgorithm</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/quiche/recovery/mod.rs.html#1151">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.CongestionControlAlgorithm.html" title="enum quiche::CongestionControlAlgorithm">CongestionControlAlgorithm</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-CongestionControlAlgorithm" class="impl"><a class="src rightside" href="../src/quiche/recovery/mod.rs.html#1151">source</a><a href="#impl-Debug-for-CongestionControlAlgorithm" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.CongestionControlAlgorithm.html" title="enum quiche::CongestionControlAlgorithm">CongestionControlAlgorithm</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/quiche/recovery/mod.rs.html#1151">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-FromStr-for-CongestionControlAlgorithm" class="impl"><a class="src rightside" href="../src/quiche/recovery/mod.rs.html#1164-1180">source</a><a href="#impl-FromStr-for-CongestionControlAlgorithm" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a> for <a class="enum" href="enum.CongestionControlAlgorithm.html" title="enum quiche::CongestionControlAlgorithm">CongestionControlAlgorithm</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from_str" class="method trait-impl"><a class="src rightside" href="../src/quiche/recovery/mod.rs.html#1170-1179">source</a><a href="#method.from_str" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str" class="fn">from_str</a>(name: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>&gt;</h4></section></summary><div class="docblock"><p>Converts a string to <code>CongestionControlAlgorithm</code>.</p>
+<p>If <code>name</code> is not valid, <code>Error::CongestionControl</code> is returned.</p>
+</div></details><details class="toggle" open><summary><section id="associatedtype.Err" class="associatedtype trait-impl"><a href="#associatedtype.Err" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err" class="associatedtype">Err</a> = <a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a></h4></section></summary><div class='docblock'>The associated error which can be returned from parsing.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-CongestionControlAlgorithm" class="impl"><a class="src rightside" href="../src/quiche/recovery/mod.rs.html#1151">source</a><a href="#impl-PartialEq-for-CongestionControlAlgorithm" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.CongestionControlAlgorithm.html" title="enum quiche::CongestionControlAlgorithm">CongestionControlAlgorithm</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/quiche/recovery/mod.rs.html#1151">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.CongestionControlAlgorithm.html" title="enum quiche::CongestionControlAlgorithm">CongestionControlAlgorithm</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Copy-for-CongestionControlAlgorithm" class="impl"><a class="src rightside" href="../src/quiche/recovery/mod.rs.html#1151">source</a><a href="#impl-Copy-for-CongestionControlAlgorithm" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.CongestionControlAlgorithm.html" title="enum quiche::CongestionControlAlgorithm">CongestionControlAlgorithm</a></h3></section><section id="impl-Eq-for-CongestionControlAlgorithm" class="impl"><a class="src rightside" href="../src/quiche/recovery/mod.rs.html#1151">source</a><a href="#impl-Eq-for-CongestionControlAlgorithm" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.CongestionControlAlgorithm.html" title="enum quiche::CongestionControlAlgorithm">CongestionControlAlgorithm</a></h3></section><section id="impl-StructuralPartialEq-for-CongestionControlAlgorithm" class="impl"><a class="src rightside" href="../src/quiche/recovery/mod.rs.html#1151">source</a><a href="#impl-StructuralPartialEq-for-CongestionControlAlgorithm" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.CongestionControlAlgorithm.html" title="enum quiche::CongestionControlAlgorithm">CongestionControlAlgorithm</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-CongestionControlAlgorithm" class="impl"><a href="#impl-Freeze-for-CongestionControlAlgorithm" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.CongestionControlAlgorithm.html" title="enum quiche::CongestionControlAlgorithm">CongestionControlAlgorithm</a></h3></section><section id="impl-RefUnwindSafe-for-CongestionControlAlgorithm" class="impl"><a href="#impl-RefUnwindSafe-for-CongestionControlAlgorithm" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.CongestionControlAlgorithm.html" title="enum quiche::CongestionControlAlgorithm">CongestionControlAlgorithm</a></h3></section><section id="impl-Send-for-CongestionControlAlgorithm" class="impl"><a href="#impl-Send-for-CongestionControlAlgorithm" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.CongestionControlAlgorithm.html" title="enum quiche::CongestionControlAlgorithm">CongestionControlAlgorithm</a></h3></section><section id="impl-Sync-for-CongestionControlAlgorithm" class="impl"><a href="#impl-Sync-for-CongestionControlAlgorithm" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.CongestionControlAlgorithm.html" title="enum quiche::CongestionControlAlgorithm">CongestionControlAlgorithm</a></h3></section><section id="impl-Unpin-for-CongestionControlAlgorithm" class="impl"><a href="#impl-Unpin-for-CongestionControlAlgorithm" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.CongestionControlAlgorithm.html" title="enum quiche::CongestionControlAlgorithm">CongestionControlAlgorithm</a></h3></section><section id="impl-UnwindSafe-for-CongestionControlAlgorithm" class="impl"><a href="#impl-UnwindSafe-for-CongestionControlAlgorithm" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.CongestionControlAlgorithm.html" title="enum quiche::CongestionControlAlgorithm">CongestionControlAlgorithm</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/enum.Error.html b/quiche/enum.Error.html
new file mode 100644
index 0000000..3e78e8d
--- /dev/null
+++ b/quiche/enum.Error.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A QUIC error."><title>Error in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">Error</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.BufferTooShort">BufferTooShort</a></li><li><a href="#variant.CongestionControl">CongestionControl</a></li><li><a href="#variant.CryptoBufferExceeded">CryptoBufferExceeded</a></li><li><a href="#variant.CryptoFail">CryptoFail</a></li><li><a href="#variant.Done">Done</a></li><li><a href="#variant.FinalSize">FinalSize</a></li><li><a href="#variant.FlowControl">FlowControl</a></li><li><a href="#variant.IdLimit">IdLimit</a></li><li><a href="#variant.InvalidFrame">InvalidFrame</a></li><li><a href="#variant.InvalidPacket">InvalidPacket</a></li><li><a href="#variant.InvalidState">InvalidState</a></li><li><a href="#variant.InvalidStreamState">InvalidStreamState</a></li><li><a href="#variant.InvalidTransportParam">InvalidTransportParam</a></li><li><a href="#variant.KeyUpdate">KeyUpdate</a></li><li><a href="#variant.OutOfIdentifiers">OutOfIdentifiers</a></li><li><a href="#variant.StreamLimit">StreamLimit</a></li><li><a href="#variant.StreamReset">StreamReset</a></li><li><a href="#variant.StreamStopped">StreamStopped</a></li><li><a href="#variant.TlsFail">TlsFail</a></li><li><a href="#variant.UnknownVersion">UnknownVersion</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-Error">Clone</a></li><li><a href="#impl-Copy-for-Error">Copy</a></li><li><a href="#impl-Debug-for-Error">Debug</a></li><li><a href="#impl-Display-for-Error">Display</a></li><li><a href="#impl-Eq-for-Error">Eq</a></li><li><a href="#impl-Error-for-Error">Error</a></li><li><a href="#impl-From%3CBufferTooShortError%3E-for-Error">From&lt;BufferTooShortError&gt;</a></li><li><a href="#impl-From%3CError%3E-for-Error">From&lt;Error&gt;</a></li><li><a href="#impl-PartialEq-for-Error">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-Error">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Error">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Error">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Error">Send</a></li><li><a href="#impl-Sync-for-Error">Sync</a></li><li><a href="#impl-Unpin-for-Error">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Error">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-ToString-for-T">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="index.html">quiche</a>::<wbr><a class="enum" href="#">Error</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#507-578">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum Error {
+<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 20 variants</span></summary>    Done,
+    BufferTooShort,
+    UnknownVersion,
+    InvalidFrame,
+    InvalidPacket,
+    InvalidState,
+    InvalidStreamState(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>),
+    InvalidTransportParam,
+    CryptoFail,
+    TlsFail,
+    FlowControl,
+    StreamLimit,
+    StreamStopped(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>),
+    StreamReset(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>),
+    FinalSize,
+    CongestionControl,
+    IdLimit,
+    OutOfIdentifiers,
+    KeyUpdate,
+    CryptoBufferExceeded,
+</details>}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A QUIC error.</p>
+</div></details><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Done" class="variant"><a href="#variant.Done" class="anchor">§</a><h3 class="code-header">Done</h3></section><div class="docblock"><p>There is no more work to do.</p>
+</div><section id="variant.BufferTooShort" class="variant"><a href="#variant.BufferTooShort" class="anchor">§</a><h3 class="code-header">BufferTooShort</h3></section><div class="docblock"><p>The provided buffer is too short.</p>
+</div><section id="variant.UnknownVersion" class="variant"><a href="#variant.UnknownVersion" class="anchor">§</a><h3 class="code-header">UnknownVersion</h3></section><div class="docblock"><p>The provided packet cannot be parsed because its version is unknown.</p>
+</div><section id="variant.InvalidFrame" class="variant"><a href="#variant.InvalidFrame" class="anchor">§</a><h3 class="code-header">InvalidFrame</h3></section><div class="docblock"><p>The provided packet cannot be parsed because it contains an invalid
+frame.</p>
+</div><section id="variant.InvalidPacket" class="variant"><a href="#variant.InvalidPacket" class="anchor">§</a><h3 class="code-header">InvalidPacket</h3></section><div class="docblock"><p>The provided packet cannot be parsed.</p>
+</div><section id="variant.InvalidState" class="variant"><a href="#variant.InvalidState" class="anchor">§</a><h3 class="code-header">InvalidState</h3></section><div class="docblock"><p>The operation cannot be completed because the connection is in an
+invalid state.</p>
+</div><section id="variant.InvalidStreamState" class="variant"><a href="#variant.InvalidStreamState" class="anchor">§</a><h3 class="code-header">InvalidStreamState(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h3></section><div class="docblock"><p>The operation cannot be completed because the stream is in an
+invalid state.</p>
+<p>The stream ID is provided as associated data.</p>
+</div><section id="variant.InvalidTransportParam" class="variant"><a href="#variant.InvalidTransportParam" class="anchor">§</a><h3 class="code-header">InvalidTransportParam</h3></section><div class="docblock"><p>The peer’s transport params cannot be parsed.</p>
+</div><section id="variant.CryptoFail" class="variant"><a href="#variant.CryptoFail" class="anchor">§</a><h3 class="code-header">CryptoFail</h3></section><div class="docblock"><p>A cryptographic operation failed.</p>
+</div><section id="variant.TlsFail" class="variant"><a href="#variant.TlsFail" class="anchor">§</a><h3 class="code-header">TlsFail</h3></section><div class="docblock"><p>The TLS handshake failed.</p>
+</div><section id="variant.FlowControl" class="variant"><a href="#variant.FlowControl" class="anchor">§</a><h3 class="code-header">FlowControl</h3></section><div class="docblock"><p>The peer violated the local flow control limits.</p>
+</div><section id="variant.StreamLimit" class="variant"><a href="#variant.StreamLimit" class="anchor">§</a><h3 class="code-header">StreamLimit</h3></section><div class="docblock"><p>The peer violated the local stream limits.</p>
+</div><section id="variant.StreamStopped" class="variant"><a href="#variant.StreamStopped" class="anchor">§</a><h3 class="code-header">StreamStopped(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h3></section><div class="docblock"><p>The specified stream was stopped by the peer.</p>
+<p>The error code sent as part of the <code>STOP_SENDING</code> frame is provided as
+associated data.</p>
+</div><section id="variant.StreamReset" class="variant"><a href="#variant.StreamReset" class="anchor">§</a><h3 class="code-header">StreamReset(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h3></section><div class="docblock"><p>The specified stream was reset by the peer.</p>
+<p>The error code sent as part of the <code>RESET_STREAM</code> frame is provided as
+associated data.</p>
+</div><section id="variant.FinalSize" class="variant"><a href="#variant.FinalSize" class="anchor">§</a><h3 class="code-header">FinalSize</h3></section><div class="docblock"><p>The received data exceeds the stream’s final size.</p>
+</div><section id="variant.CongestionControl" class="variant"><a href="#variant.CongestionControl" class="anchor">§</a><h3 class="code-header">CongestionControl</h3></section><div class="docblock"><p>Error in congestion control.</p>
+</div><section id="variant.IdLimit" class="variant"><a href="#variant.IdLimit" class="anchor">§</a><h3 class="code-header">IdLimit</h3></section><div class="docblock"><p>Too many identifiers were provided.</p>
+</div><section id="variant.OutOfIdentifiers" class="variant"><a href="#variant.OutOfIdentifiers" class="anchor">§</a><h3 class="code-header">OutOfIdentifiers</h3></section><div class="docblock"><p>Not enough available identifiers.</p>
+</div><section id="variant.KeyUpdate" class="variant"><a href="#variant.KeyUpdate" class="anchor">§</a><h3 class="code-header">KeyUpdate</h3></section><div class="docblock"><p>Error in key update.</p>
+</div><section id="variant.CryptoBufferExceeded" class="variant"><a href="#variant.CryptoBufferExceeded" class="anchor">§</a><h3 class="code-header">CryptoBufferExceeded</h3></section><div class="docblock"><p>The peer sent more data in CRYPTO frames than we can buffer.</p>
+</div></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Error" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#506">source</a><a href="#impl-Clone-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#506">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Error" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#506">source</a><a href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#506">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Display-for-Error" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#692-696">source</a><a href="#impl-Display-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#693-695">source</a><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Error-for-Error" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#698-702">source</a><a href="#impl-Error-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> for <a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.source" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#699-701">source</a><a href="#method.source" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source" class="fn">source</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + 'static)&gt;</h4></section></summary><div class='docblock'>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.description" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#110">source</a></span><a href="#method.description" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description" class="fn">description</a>(&amp;self) -&gt; &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.42.0: use the Display impl or to_string()</span></div></span><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.cause" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#120">source</a></span><a href="#method.cause" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.cause" class="fn">cause</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a>&gt;</h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.33.0: replaced by Error::source, which can support downcasting</span></div></span></details><details class="toggle method-toggle" open><summary><section id="method.provide" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#184">source</a><a href="#method.provide" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide" class="fn">provide</a>&lt;'a&gt;(&amp;'a self, request: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/error/struct.Request.html" title="struct core::error::Request">Request</a>&lt;'a&gt;)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>error_generic_member_access</code>)</span></div></span><div class='docblock'>Provides type based access to context intended for error reports. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-From%3CBufferTooShortError%3E-for-Error" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#704-708">source</a><a href="#impl-From%3CBufferTooShortError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;<a class="struct" href="../octets/struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a>&gt; for <a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#705-707">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(_err: <a class="struct" href="../octets/struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a>) -&gt; Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error" class="impl"><a class="src rightside" href="../src/quiche/h3/mod.rs.html#546-554">source</a><a href="#impl-From%3CError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;<a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a>&gt; for <a class="enum" href="h3/enum.Error.html" title="enum quiche::h3::Error">Error</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="../src/quiche/h3/mod.rs.html#547-553">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: <a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a>) -&gt; Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-Error" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#506">source</a><a href="#impl-PartialEq-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#506">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Copy-for-Error" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#506">source</a><a href="#impl-Copy-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a></h3></section><section id="impl-Eq-for-Error" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#506">source</a><a href="#impl-Eq-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a></h3></section><section id="impl-StructuralPartialEq-for-Error" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#506">source</a><a href="#impl-StructuralPartialEq-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Error" class="impl"><a href="#impl-Freeze-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a></h3></section><section id="impl-RefUnwindSafe-for-Error" class="impl"><a href="#impl-RefUnwindSafe-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a></h3></section><section id="impl-Send-for-Error" class="impl"><a href="#impl-Send-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a></h3></section><section id="impl-Sync-for-Error" class="impl"><a href="#impl-Sync-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a></h3></section><section id="impl-Unpin-for-Error" class="impl"><a href="#impl-Unpin-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a></h3></section><section id="impl-UnwindSafe-for-Error" class="impl"><a href="#impl-UnwindSafe-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToString-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2546">source</a><a href="#impl-ToString-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2552">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/enum.PathEvent.html b/quiche/enum.PathEvent.html
new file mode 100644
index 0000000..e235986
--- /dev/null
+++ b/quiche/enum.PathEvent.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A path-specific event."><title>PathEvent in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">PathEvent</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Closed">Closed</a></li><li><a href="#variant.FailedValidation">FailedValidation</a></li><li><a href="#variant.New">New</a></li><li><a href="#variant.PeerMigrated">PeerMigrated</a></li><li><a href="#variant.ReusedSourceConnectionId">ReusedSourceConnectionId</a></li><li><a href="#variant.Validated">Validated</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-PathEvent">Clone</a></li><li><a href="#impl-Debug-for-PathEvent">Debug</a></li><li><a href="#impl-Eq-for-PathEvent">Eq</a></li><li><a href="#impl-PartialEq-for-PathEvent">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-PathEvent">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-PathEvent">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-PathEvent">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PathEvent">Send</a></li><li><a href="#impl-Sync-for-PathEvent">Sync</a></li><li><a href="#impl-Unpin-for-PathEvent">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PathEvent">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="index.html">quiche</a>::<wbr><a class="enum" href="#">PathEvent</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/path.rs.html#78-113">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum PathEvent {
+    New(<a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>),
+    Validated(<a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>),
+    FailedValidation(<a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>),
+    Closed(<a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>),
+    ReusedSourceConnectionId(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, (<a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>), (<a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>)),
+    PeerMigrated(<a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>),
+}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A path-specific event.</p>
+</div></details><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.New" class="variant"><a href="#variant.New" class="anchor">§</a><h3 class="code-header">New(<a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>)</h3></section><div class="docblock"><p>A new network path (local address, peer address) has been seen on a
+received packet. Note that this event is only triggered for servers, as
+the client is responsible from initiating new paths. The application may
+then probe this new path, if desired.</p>
+</div><section id="variant.Validated" class="variant"><a href="#variant.Validated" class="anchor">§</a><h3 class="code-header">Validated(<a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>)</h3></section><div class="docblock"><p>The related network path between local <code>SocketAddr</code> and peer
+<code>SocketAddr</code> has been validated.</p>
+</div><section id="variant.FailedValidation" class="variant"><a href="#variant.FailedValidation" class="anchor">§</a><h3 class="code-header">FailedValidation(<a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>)</h3></section><div class="docblock"><p>The related network path between local <code>SocketAddr</code> and peer
+<code>SocketAddr</code> failed to be validated. This network path will not be used
+anymore, unless the application requests probing this path again.</p>
+</div><section id="variant.Closed" class="variant"><a href="#variant.Closed" class="anchor">§</a><h3 class="code-header">Closed(<a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>)</h3></section><div class="docblock"><p>The related network path between local <code>SocketAddr</code> and peer
+<code>SocketAddr</code> has been closed and is now unusable on this connection.</p>
+</div><section id="variant.ReusedSourceConnectionId" class="variant"><a href="#variant.ReusedSourceConnectionId" class="anchor">§</a><h3 class="code-header">ReusedSourceConnectionId(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, (<a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>), (<a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>))</h3></section><div class="docblock"><p>The stack observes that the Source Connection ID with the given sequence
+number, initially used by the peer over the first pair of <code>SocketAddr</code>s,
+is now reused over the second pair of <code>SocketAddr</code>s.</p>
+</div><section id="variant.PeerMigrated" class="variant"><a href="#variant.PeerMigrated" class="anchor">§</a><h3 class="code-header">PeerMigrated(<a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>)</h3></section><div class="docblock"><p>The connection observed that the peer migrated over the network path
+denoted by the pair of <code>SocketAddr</code>, i.e., non-probing packets have been
+received on this network path. This is a server side only event.</p>
+<p>Note that this event is only raised if the path has been validated.</p>
+</div></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PathEvent" class="impl"><a class="src rightside" href="../src/quiche/path.rs.html#77">source</a><a href="#impl-Clone-for-PathEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.PathEvent.html" title="enum quiche::PathEvent">PathEvent</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/quiche/path.rs.html#77">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.PathEvent.html" title="enum quiche::PathEvent">PathEvent</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-PathEvent" class="impl"><a class="src rightside" href="../src/quiche/path.rs.html#77">source</a><a href="#impl-Debug-for-PathEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.PathEvent.html" title="enum quiche::PathEvent">PathEvent</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/quiche/path.rs.html#77">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-PathEvent" class="impl"><a class="src rightside" href="../src/quiche/path.rs.html#77">source</a><a href="#impl-PartialEq-for-PathEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.PathEvent.html" title="enum quiche::PathEvent">PathEvent</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/quiche/path.rs.html#77">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.PathEvent.html" title="enum quiche::PathEvent">PathEvent</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-PathEvent" class="impl"><a class="src rightside" href="../src/quiche/path.rs.html#77">source</a><a href="#impl-Eq-for-PathEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.PathEvent.html" title="enum quiche::PathEvent">PathEvent</a></h3></section><section id="impl-StructuralPartialEq-for-PathEvent" class="impl"><a class="src rightside" href="../src/quiche/path.rs.html#77">source</a><a href="#impl-StructuralPartialEq-for-PathEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.PathEvent.html" title="enum quiche::PathEvent">PathEvent</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-PathEvent" class="impl"><a href="#impl-Freeze-for-PathEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.PathEvent.html" title="enum quiche::PathEvent">PathEvent</a></h3></section><section id="impl-RefUnwindSafe-for-PathEvent" class="impl"><a href="#impl-RefUnwindSafe-for-PathEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.PathEvent.html" title="enum quiche::PathEvent">PathEvent</a></h3></section><section id="impl-Send-for-PathEvent" class="impl"><a href="#impl-Send-for-PathEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.PathEvent.html" title="enum quiche::PathEvent">PathEvent</a></h3></section><section id="impl-Sync-for-PathEvent" class="impl"><a href="#impl-Sync-for-PathEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.PathEvent.html" title="enum quiche::PathEvent">PathEvent</a></h3></section><section id="impl-Unpin-for-PathEvent" class="impl"><a href="#impl-Unpin-for-PathEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.PathEvent.html" title="enum quiche::PathEvent">PathEvent</a></h3></section><section id="impl-UnwindSafe-for-PathEvent" class="impl"><a href="#impl-UnwindSafe-for-PathEvent" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.PathEvent.html" title="enum quiche::PathEvent">PathEvent</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/enum.QlogLevel.html b/quiche/enum.QlogLevel.html
new file mode 100644
index 0000000..3c525a4
--- /dev/null
+++ b/quiche/enum.QlogLevel.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Qlog logging level."><title>QlogLevel in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">QlogLevel</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Base">Base</a></li><li><a href="#variant.Core">Core</a></li><li><a href="#variant.Extra">Extra</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-QlogLevel">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-QlogLevel">RefUnwindSafe</a></li><li><a href="#impl-Send-for-QlogLevel">Send</a></li><li><a href="#impl-Sync-for-QlogLevel">Sync</a></li><li><a href="#impl-Unpin-for-QlogLevel">Unpin</a></li><li><a href="#impl-UnwindSafe-for-QlogLevel">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="index.html">quiche</a>::<wbr><a class="enum" href="#">QlogLevel</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#769-778">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code><div class="code-attribute">#[repr(C)]</div>pub enum QlogLevel {
+    Core = 0,
+    Base = 1,
+    Extra = 2,
+}</code></pre><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>qlog</code></strong> only.</div></span><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Qlog logging level.</p>
+</div></details><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Core" class="variant"><a href="#variant.Core" class="anchor">§</a><h3 class="code-header">Core = 0</h3></section><div class="docblock"><p>Logs any events of Core importance.</p>
+</div><section id="variant.Base" class="variant"><a href="#variant.Base" class="anchor">§</a><h3 class="code-header">Base = 1</h3></section><div class="docblock"><p>Logs any events of Core and Base importance.</p>
+</div><section id="variant.Extra" class="variant"><a href="#variant.Extra" class="anchor">§</a><h3 class="code-header">Extra = 2</h3></section><div class="docblock"><p>Logs any events of Core, Base and Extra importance</p>
+</div></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-QlogLevel" class="impl"><a href="#impl-Freeze-for-QlogLevel" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.QlogLevel.html" title="enum quiche::QlogLevel">QlogLevel</a></h3></section><section id="impl-RefUnwindSafe-for-QlogLevel" class="impl"><a href="#impl-RefUnwindSafe-for-QlogLevel" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.QlogLevel.html" title="enum quiche::QlogLevel">QlogLevel</a></h3></section><section id="impl-Send-for-QlogLevel" class="impl"><a href="#impl-Send-for-QlogLevel" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.QlogLevel.html" title="enum quiche::QlogLevel">QlogLevel</a></h3></section><section id="impl-Sync-for-QlogLevel" class="impl"><a href="#impl-Sync-for-QlogLevel" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.QlogLevel.html" title="enum quiche::QlogLevel">QlogLevel</a></h3></section><section id="impl-Unpin-for-QlogLevel" class="impl"><a href="#impl-Unpin-for-QlogLevel" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.QlogLevel.html" title="enum quiche::QlogLevel">QlogLevel</a></h3></section><section id="impl-UnwindSafe-for-QlogLevel" class="impl"><a href="#impl-UnwindSafe-for-QlogLevel" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.QlogLevel.html" title="enum quiche::QlogLevel">QlogLevel</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/enum.Shutdown.html b/quiche/enum.Shutdown.html
new file mode 100644
index 0000000..553b710
--- /dev/null
+++ b/quiche/enum.Shutdown.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The side of the stream to be shut down."><title>Shutdown in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">Shutdown</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Read">Read</a></li><li><a href="#variant.Write">Write</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Eq-for-Shutdown">Eq</a></li><li><a href="#impl-PartialEq-for-Shutdown">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-Shutdown">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Shutdown">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Shutdown">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Shutdown">Send</a></li><li><a href="#impl-Sync-for-Shutdown">Sync</a></li><li><a href="#impl-Unpin-for-Shutdown">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Shutdown">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="index.html">quiche</a>::<wbr><a class="enum" href="#">Shutdown</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#757-763">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code><div class="code-attribute">#[repr(C)]</div>pub enum Shutdown {
+    Read = 0,
+    Write = 1,
+}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The side of the stream to be shut down.</p>
+<p>This should be used when calling <a href="struct.Connection.html#method.stream_shutdown"><code>stream_shutdown()</code></a>.</p>
+</div></details><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Read" class="variant"><a href="#variant.Read" class="anchor">§</a><h3 class="code-header">Read = 0</h3></section><div class="docblock"><p>Stop receiving stream data.</p>
+</div><section id="variant.Write" class="variant"><a href="#variant.Write" class="anchor">§</a><h3 class="code-header">Write = 1</h3></section><div class="docblock"><p>Stop sending stream data.</p>
+</div></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-Shutdown" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#756">source</a><a href="#impl-PartialEq-for-Shutdown" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.Shutdown.html" title="enum quiche::Shutdown">Shutdown</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#756">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.Shutdown.html" title="enum quiche::Shutdown">Shutdown</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-Shutdown" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#756">source</a><a href="#impl-Eq-for-Shutdown" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Shutdown.html" title="enum quiche::Shutdown">Shutdown</a></h3></section><section id="impl-StructuralPartialEq-for-Shutdown" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#756">source</a><a href="#impl-StructuralPartialEq-for-Shutdown" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Shutdown.html" title="enum quiche::Shutdown">Shutdown</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Shutdown" class="impl"><a href="#impl-Freeze-for-Shutdown" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.Shutdown.html" title="enum quiche::Shutdown">Shutdown</a></h3></section><section id="impl-RefUnwindSafe-for-Shutdown" class="impl"><a href="#impl-RefUnwindSafe-for-Shutdown" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Shutdown.html" title="enum quiche::Shutdown">Shutdown</a></h3></section><section id="impl-Send-for-Shutdown" class="impl"><a href="#impl-Send-for-Shutdown" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Shutdown.html" title="enum quiche::Shutdown">Shutdown</a></h3></section><section id="impl-Sync-for-Shutdown" class="impl"><a href="#impl-Sync-for-Shutdown" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Shutdown.html" title="enum quiche::Shutdown">Shutdown</a></h3></section><section id="impl-Unpin-for-Shutdown" class="impl"><a href="#impl-Unpin-for-Shutdown" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Shutdown.html" title="enum quiche::Shutdown">Shutdown</a></h3></section><section id="impl-UnwindSafe-for-Shutdown" class="impl"><a href="#impl-UnwindSafe-for-Shutdown" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Shutdown.html" title="enum quiche::Shutdown">Shutdown</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/enum.Type.html b/quiche/enum.Type.html
new file mode 100644
index 0000000..c608217
--- /dev/null
+++ b/quiche/enum.Type.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="QUIC packet type."><title>Type in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">Type</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Handshake">Handshake</a></li><li><a href="#variant.Initial">Initial</a></li><li><a href="#variant.Retry">Retry</a></li><li><a href="#variant.Short">Short</a></li><li><a href="#variant.VersionNegotiation">VersionNegotiation</a></li><li><a href="#variant.ZeroRTT">ZeroRTT</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-Type">Clone</a></li><li><a href="#impl-Copy-for-Type">Copy</a></li><li><a href="#impl-Debug-for-Type">Debug</a></li><li><a href="#impl-Eq-for-Type">Eq</a></li><li><a href="#impl-PartialEq-for-Type">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-Type">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Type">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Type">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Type">Send</a></li><li><a href="#impl-Sync-for-Type">Sync</a></li><li><a href="#impl-Unpin-for-Type">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Type">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="index.html">quiche</a>::<wbr><a class="enum" href="#">Type</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/packet.rs.html#112-130">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum Type {
+    Initial,
+    Retry,
+    Handshake,
+    ZeroRTT,
+    VersionNegotiation,
+    Short,
+}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>QUIC packet type.</p>
+</div></details><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Initial" class="variant"><a href="#variant.Initial" class="anchor">§</a><h3 class="code-header">Initial</h3></section><div class="docblock"><p>Initial packet.</p>
+</div><section id="variant.Retry" class="variant"><a href="#variant.Retry" class="anchor">§</a><h3 class="code-header">Retry</h3></section><div class="docblock"><p>Retry packet.</p>
+</div><section id="variant.Handshake" class="variant"><a href="#variant.Handshake" class="anchor">§</a><h3 class="code-header">Handshake</h3></section><div class="docblock"><p>Handshake packet.</p>
+</div><section id="variant.ZeroRTT" class="variant"><a href="#variant.ZeroRTT" class="anchor">§</a><h3 class="code-header">ZeroRTT</h3></section><div class="docblock"><p>0-RTT packet.</p>
+</div><section id="variant.VersionNegotiation" class="variant"><a href="#variant.VersionNegotiation" class="anchor">§</a><h3 class="code-header">VersionNegotiation</h3></section><div class="docblock"><p>Version negotiation packet.</p>
+</div><section id="variant.Short" class="variant"><a href="#variant.Short" class="anchor">§</a><h3 class="code-header">Short</h3></section><div class="docblock"><p>1-RTT short header packet.</p>
+</div></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Type" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#111">source</a><a href="#impl-Clone-for-Type" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Type.html" title="enum quiche::Type">Type</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/quiche/packet.rs.html#111">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.Type.html" title="enum quiche::Type">Type</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Type" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#111">source</a><a href="#impl-Debug-for-Type" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Type.html" title="enum quiche::Type">Type</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/quiche/packet.rs.html#111">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-Type" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#111">source</a><a href="#impl-PartialEq-for-Type" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.Type.html" title="enum quiche::Type">Type</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/quiche/packet.rs.html#111">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.Type.html" title="enum quiche::Type">Type</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Copy-for-Type" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#111">source</a><a href="#impl-Copy-for-Type" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.Type.html" title="enum quiche::Type">Type</a></h3></section><section id="impl-Eq-for-Type" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#111">source</a><a href="#impl-Eq-for-Type" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Type.html" title="enum quiche::Type">Type</a></h3></section><section id="impl-StructuralPartialEq-for-Type" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#111">source</a><a href="#impl-StructuralPartialEq-for-Type" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Type.html" title="enum quiche::Type">Type</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Type" class="impl"><a href="#impl-Freeze-for-Type" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.Type.html" title="enum quiche::Type">Type</a></h3></section><section id="impl-RefUnwindSafe-for-Type" class="impl"><a href="#impl-RefUnwindSafe-for-Type" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Type.html" title="enum quiche::Type">Type</a></h3></section><section id="impl-Send-for-Type" class="impl"><a href="#impl-Send-for-Type" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Type.html" title="enum quiche::Type">Type</a></h3></section><section id="impl-Sync-for-Type" class="impl"><a href="#impl-Sync-for-Type" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Type.html" title="enum quiche::Type">Type</a></h3></section><section id="impl-Unpin-for-Type" class="impl"><a href="#impl-Unpin-for-Type" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Type.html" title="enum quiche::Type">Type</a></h3></section><section id="impl-UnwindSafe-for-Type" class="impl"><a href="#impl-UnwindSafe-for-Type" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Type.html" title="enum quiche::Type">Type</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/enum.WireErrorCode.html b/quiche/enum.WireErrorCode.html
new file mode 100644
index 0000000..4332d68
--- /dev/null
+++ b/quiche/enum.WireErrorCode.html
@@ -0,0 +1,80 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="QUIC error codes sent on the wire."><title>WireErrorCode in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">WireErrorCode</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.AeadLimitReached">AeadLimitReached</a></li><li><a href="#variant.ApplicationError">ApplicationError</a></li><li><a href="#variant.ConnectionIdLimitError">ConnectionIdLimitError</a></li><li><a href="#variant.ConnectionRefused">ConnectionRefused</a></li><li><a href="#variant.CryptoBufferExceeded">CryptoBufferExceeded</a></li><li><a href="#variant.FinalSizeError">FinalSizeError</a></li><li><a href="#variant.FlowControlError">FlowControlError</a></li><li><a href="#variant.FrameEncodingError">FrameEncodingError</a></li><li><a href="#variant.InternalError">InternalError</a></li><li><a href="#variant.InvalidToken">InvalidToken</a></li><li><a href="#variant.KeyUpdateError">KeyUpdateError</a></li><li><a href="#variant.NoError">NoError</a></li><li><a href="#variant.NoViablePath">NoViablePath</a></li><li><a href="#variant.ProtocolViolation">ProtocolViolation</a></li><li><a href="#variant.StreamLimitError">StreamLimitError</a></li><li><a href="#variant.StreamStateError">StreamStateError</a></li><li><a href="#variant.TransportParameterError">TransportParameterError</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-WireErrorCode">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-WireErrorCode">RefUnwindSafe</a></li><li><a href="#impl-Send-for-WireErrorCode">Send</a></li><li><a href="#impl-Sync-for-WireErrorCode">Sync</a></li><li><a href="#impl-Unpin-for-WireErrorCode">Unpin</a></li><li><a href="#impl-UnwindSafe-for-WireErrorCode">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="index.html">quiche</a>::<wbr><a class="enum" href="#">WireErrorCode</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#583-643">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum WireErrorCode {
+<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 17 variants</span></summary>    NoError = 0,
+    InternalError = 1,
+    ConnectionRefused = 2,
+    FlowControlError = 3,
+    StreamLimitError = 4,
+    StreamStateError = 5,
+    FinalSizeError = 6,
+    FrameEncodingError = 7,
+    TransportParameterError = 8,
+    ConnectionIdLimitError = 9,
+    ProtocolViolation = 10,
+    InvalidToken = 11,
+    ApplicationError = 12,
+    CryptoBufferExceeded = 13,
+    KeyUpdateError = 14,
+    AeadLimitReached = 15,
+    NoViablePath = 16,
+</details>}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>QUIC error codes sent on the wire.</p>
+<p>As defined in <a href="https://www.rfc-editor.org/rfc/rfc9000.html#name-error-codes">RFC9000</a>.</p>
+</div></details><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.NoError" class="variant"><a href="#variant.NoError" class="anchor">§</a><h3 class="code-header">NoError = 0</h3></section><div class="docblock"><p>An endpoint uses this with CONNECTION_CLOSE to signal that the
+connection is being closed abruptly in the absence of any error.</p>
+</div><section id="variant.InternalError" class="variant"><a href="#variant.InternalError" class="anchor">§</a><h3 class="code-header">InternalError = 1</h3></section><div class="docblock"><p>The endpoint encountered an internal error and cannot continue with the
+connection.</p>
+</div><section id="variant.ConnectionRefused" class="variant"><a href="#variant.ConnectionRefused" class="anchor">§</a><h3 class="code-header">ConnectionRefused = 2</h3></section><div class="docblock"><p>The server refused to accept a new connection.</p>
+</div><section id="variant.FlowControlError" class="variant"><a href="#variant.FlowControlError" class="anchor">§</a><h3 class="code-header">FlowControlError = 3</h3></section><div class="docblock"><p>An endpoint received more data than it permitted in its advertised data
+limits; see Section 4.</p>
+</div><section id="variant.StreamLimitError" class="variant"><a href="#variant.StreamLimitError" class="anchor">§</a><h3 class="code-header">StreamLimitError = 4</h3></section><div class="docblock"><p>An endpoint received a frame for a stream identifier that exceeded its
+advertised stream limit for the corresponding stream type.</p>
+</div><section id="variant.StreamStateError" class="variant"><a href="#variant.StreamStateError" class="anchor">§</a><h3 class="code-header">StreamStateError = 5</h3></section><div class="docblock"><p>An endpoint received a frame for a stream that was not in a state that
+permitted that frame.</p>
+</div><section id="variant.FinalSizeError" class="variant"><a href="#variant.FinalSizeError" class="anchor">§</a><h3 class="code-header">FinalSizeError = 6</h3></section><div class="docblock"><p>(1) An endpoint received a STREAM frame containing data that exceeded
+the previously established final size, (2) an endpoint received a
+STREAM frame or a RESET_STREAM frame containing a final size that
+was lower than the size of stream data that was already received, or
+(3) an endpoint received a STREAM frame or a RESET_STREAM frame
+containing a different final size to the one already established.</p>
+</div><section id="variant.FrameEncodingError" class="variant"><a href="#variant.FrameEncodingError" class="anchor">§</a><h3 class="code-header">FrameEncodingError = 7</h3></section><div class="docblock"><p>An endpoint received a frame that was badly formatted – for instance, a
+frame of an unknown type or an ACK frame that has more
+acknowledgment ranges than the remainder of the packet could carry.</p>
+</div><section id="variant.TransportParameterError" class="variant"><a href="#variant.TransportParameterError" class="anchor">§</a><h3 class="code-header">TransportParameterError = 8</h3></section><div class="docblock"><p>An endpoint received transport parameters that were badly formatted,
+included an invalid value, omitted a mandatory transport parameter,
+included a forbidden transport parameter, or were otherwise in
+error.</p>
+</div><section id="variant.ConnectionIdLimitError" class="variant"><a href="#variant.ConnectionIdLimitError" class="anchor">§</a><h3 class="code-header">ConnectionIdLimitError = 9</h3></section><div class="docblock"><p>An endpoint received transport parameters that were badly formatted,
+included an invalid value, omitted a mandatory transport parameter,
+included a forbidden transport parameter, or were otherwise in
+error.</p>
+</div><section id="variant.ProtocolViolation" class="variant"><a href="#variant.ProtocolViolation" class="anchor">§</a><h3 class="code-header">ProtocolViolation = 10</h3></section><div class="docblock"><p>An endpoint detected an error with protocol compliance that was not
+covered by more specific error codes.</p>
+</div><section id="variant.InvalidToken" class="variant"><a href="#variant.InvalidToken" class="anchor">§</a><h3 class="code-header">InvalidToken = 11</h3></section><div class="docblock"><p>A server received a client Initial that contained an invalid Token
+field.</p>
+</div><section id="variant.ApplicationError" class="variant"><a href="#variant.ApplicationError" class="anchor">§</a><h3 class="code-header">ApplicationError = 12</h3></section><div class="docblock"><p>The application or application protocol caused the connection to be
+closed.</p>
+</div><section id="variant.CryptoBufferExceeded" class="variant"><a href="#variant.CryptoBufferExceeded" class="anchor">§</a><h3 class="code-header">CryptoBufferExceeded = 13</h3></section><div class="docblock"><p>An endpoint has received more data in CRYPTO frames than it can buffer.</p>
+</div><section id="variant.KeyUpdateError" class="variant"><a href="#variant.KeyUpdateError" class="anchor">§</a><h3 class="code-header">KeyUpdateError = 14</h3></section><div class="docblock"><p>An endpoint detected errors in performing key updates.</p>
+</div><section id="variant.AeadLimitReached" class="variant"><a href="#variant.AeadLimitReached" class="anchor">§</a><h3 class="code-header">AeadLimitReached = 15</h3></section><div class="docblock"><p>An endpoint has reached the confidentiality or integrity limit for the
+AEAD algorithm used by the given connection.</p>
+</div><section id="variant.NoViablePath" class="variant"><a href="#variant.NoViablePath" class="anchor">§</a><h3 class="code-header">NoViablePath = 16</h3></section><div class="docblock"><p>An endpoint has determined that the network path is incapable of
+supporting QUIC. An endpoint is unlikely to receive a
+CONNECTION_CLOSE frame carrying this code except when the path does
+not support a large enough MTU.</p>
+</div></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-WireErrorCode" class="impl"><a href="#impl-Freeze-for-WireErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.WireErrorCode.html" title="enum quiche::WireErrorCode">WireErrorCode</a></h3></section><section id="impl-RefUnwindSafe-for-WireErrorCode" class="impl"><a href="#impl-RefUnwindSafe-for-WireErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.WireErrorCode.html" title="enum quiche::WireErrorCode">WireErrorCode</a></h3></section><section id="impl-Send-for-WireErrorCode" class="impl"><a href="#impl-Send-for-WireErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.WireErrorCode.html" title="enum quiche::WireErrorCode">WireErrorCode</a></h3></section><section id="impl-Sync-for-WireErrorCode" class="impl"><a href="#impl-Sync-for-WireErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.WireErrorCode.html" title="enum quiche::WireErrorCode">WireErrorCode</a></h3></section><section id="impl-Unpin-for-WireErrorCode" class="impl"><a href="#impl-Unpin-for-WireErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.WireErrorCode.html" title="enum quiche::WireErrorCode">WireErrorCode</a></h3></section><section id="impl-UnwindSafe-for-WireErrorCode" class="impl"><a href="#impl-UnwindSafe-for-WireErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.WireErrorCode.html" title="enum quiche::WireErrorCode">WireErrorCode</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/fn.accept.html b/quiche/fn.accept.html
new file mode 100644
index 0000000..276cf65
--- /dev/null
+++ b/quiche/fn.accept.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Creates a new server-side connection."><title>accept in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="index.html">quiche</a>::<wbr><a class="fn" href="#">accept</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#1576-1583">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub fn accept(
+    scid: &amp;<a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'_&gt;,
+    odcid: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'_&gt;&gt;,
+    local: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>,
+    peer: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>,
+    config: &amp;mut <a class="struct" href="struct.Config.html" title="struct quiche::Config">Config</a>
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="struct" href="struct.Connection.html" title="struct quiche::Connection">Connection</a>&gt;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Creates a new server-side connection.</p>
+<p>The <code>scid</code> parameter represents the server’s source connection ID, while
+the optional <code>odcid</code> parameter represents the original destination ID the
+client sent before a stateless retry (this is only required when using
+the <a href="fn.retry.html"><code>retry()</code></a> function).</p>
+<h3 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples:</h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>conn = quiche::accept(<span class="kw-2">&amp;</span>scid, <span class="prelude-val">None</span>, local, peer, <span class="kw-2">&amp;mut </span>config)<span class="question-mark">?</span>;</code></pre></div>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/fn.connect.html b/quiche/fn.connect.html
new file mode 100644
index 0000000..a592cab
--- /dev/null
+++ b/quiche/fn.connect.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Creates a new client-side connection."><title>connect in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="index.html">quiche</a>::<wbr><a class="fn" href="#">connect</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#1604-1615">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub fn connect(
+    server_name: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>&gt;,
+    scid: &amp;<a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'_&gt;,
+    local: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>,
+    peer: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>,
+    config: &amp;mut <a class="struct" href="struct.Config.html" title="struct quiche::Config">Config</a>
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="struct" href="struct.Connection.html" title="struct quiche::Connection">Connection</a>&gt;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Creates a new client-side connection.</p>
+<p>The <code>scid</code> parameter is used as the connection’s source connection ID,
+while the optional <code>server_name</code> parameter is used to verify the peer’s
+certificate.</p>
+<h3 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples:</h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>conn =
+    quiche::connect(<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>server_name), <span class="kw-2">&amp;</span>scid, local, peer, <span class="kw-2">&amp;mut </span>config)<span class="question-mark">?</span>;</code></pre></div>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/fn.negotiate_version.html b/quiche/fn.negotiate_version.html
new file mode 100644
index 0000000..88aa984
--- /dev/null
+++ b/quiche/fn.negotiate_version.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Writes a version negotiation packet."><title>negotiate_version in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="index.html">quiche</a>::<wbr><a class="fn" href="#">negotiate_version</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#1641-1645">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub fn negotiate_version(
+    scid: &amp;<a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'_&gt;,
+    dcid: &amp;<a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'_&gt;,
+    out: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Writes a version negotiation packet.</p>
+<p>The <code>scid</code> and <code>dcid</code> parameters are the source connection ID and the
+destination connection ID extracted from the received client’s Initial
+packet that advertises an unsupported version.</p>
+<h3 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples:</h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>(len, src) = socket.recv_from(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+<span class="kw">let </span>hdr =
+    quiche::Header::from_slice(<span class="kw-2">&amp;mut </span>buf[..len], quiche::MAX_CONN_ID_LEN)<span class="question-mark">?</span>;
+
+<span class="kw">if </span>hdr.version != quiche::PROTOCOL_VERSION {
+    <span class="kw">let </span>len = quiche::negotiate_version(<span class="kw-2">&amp;</span>hdr.scid, <span class="kw-2">&amp;</span>hdr.dcid, <span class="kw-2">&amp;mut </span>out)<span class="question-mark">?</span>;
+    socket.send_to(<span class="kw-2">&amp;</span>out[..len], <span class="kw-2">&amp;</span>src).unwrap();
+}</code></pre></div>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/fn.retry.html b/quiche/fn.retry.html
new file mode 100644
index 0000000..cd1e887
--- /dev/null
+++ b/quiche/fn.retry.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Writes a stateless retry packet."><title>retry in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="index.html">quiche</a>::<wbr><a class="fn" href="#">retry</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#1707-1712">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub fn retry(
+    scid: &amp;<a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'_&gt;,
+    dcid: &amp;<a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'_&gt;,
+    new_scid: &amp;<a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'_&gt;,
+    token: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
+    version: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
+    out: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Writes a stateless retry packet.</p>
+<p>The <code>scid</code> and <code>dcid</code> parameters are the source connection ID and the
+destination connection ID extracted from the received client’s Initial
+packet, while <code>new_scid</code> is the server’s new source connection ID and
+<code>token</code> is the address validation token the client needs to echo back.</p>
+<p>The application is responsible for generating the address validation
+token to be sent to the client, and verifying tokens sent back by the
+client. The generated token should include the <code>dcid</code> parameter, such
+that it can be later extracted from the token and passed to the
+<a href="fn.accept.html"><code>accept()</code></a> function as its <code>odcid</code> parameter.</p>
+<h3 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples:</h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>(len, peer) = socket.recv_from(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+<span class="kw">let </span>hdr = quiche::Header::from_slice(<span class="kw-2">&amp;mut </span>buf[..len], quiche::MAX_CONN_ID_LEN)<span class="question-mark">?</span>;
+
+<span class="kw">let </span>token = hdr.token.as_ref().unwrap();
+
+<span class="comment">// No token sent by client, create a new one.
+</span><span class="kw">if </span>token.is_empty() {
+    <span class="kw">let </span>new_token = mint_token(<span class="kw-2">&amp;</span>hdr, <span class="kw-2">&amp;</span>peer);
+
+    <span class="kw">let </span>len = quiche::retry(
+        <span class="kw-2">&amp;</span>hdr.scid, <span class="kw-2">&amp;</span>hdr.dcid, <span class="kw-2">&amp;</span>scid, <span class="kw-2">&amp;</span>new_token, hdr.version, <span class="kw-2">&amp;mut </span>out,
+    )<span class="question-mark">?</span>;
+
+    socket.send_to(<span class="kw-2">&amp;</span>out[..len], <span class="kw-2">&amp;</span>peer).unwrap();
+    <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+}
+
+<span class="comment">// Client sent token, validate it.
+</span><span class="kw">let </span>odcid = validate_token(<span class="kw-2">&amp;</span>peer, token);
+
+<span class="kw">if </span>odcid.is_none() {
+    <span class="comment">// Invalid address validation token.
+    </span><span class="kw">return </span><span class="prelude-val">Ok</span>(());
+}
+
+<span class="kw">let </span>conn = quiche::accept(<span class="kw-2">&amp;</span>scid, odcid.as_ref(), local, peer, <span class="kw-2">&amp;mut </span>config)<span class="question-mark">?</span>;</code></pre></div>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/fn.version_is_supported.html b/quiche/fn.version_is_supported.html
new file mode 100644
index 0000000..2ece388
--- /dev/null
+++ b/quiche/fn.version_is_supported.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Returns true if the given protocol version is supported."><title>version_is_supported in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="index.html">quiche</a>::<wbr><a class="fn" href="#">version_is_supported</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#1716-1718">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub fn version_is_supported(version: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Returns true if the given protocol version is supported.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/h3/constant.APPLICATION_PROTOCOL.html b/quiche/h3/constant.APPLICATION_PROTOCOL.html
new file mode 100644
index 0000000..f487a70
--- /dev/null
+++ b/quiche/h3/constant.APPLICATION_PROTOCOL.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of ALPN tokens of supported HTTP/3 versions."><title>APPLICATION_PROTOCOL in quiche::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc constant"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><div class="sidebar-elems"><h2><a href="index.html">In quiche::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Constant <a href="../index.html">quiche</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="constant" href="#">APPLICATION_PROTOCOL</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche/h3/mod.rs.html#323">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub const APPLICATION_PROTOCOL: &amp;[&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]];</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>List of ALPN tokens of supported HTTP/3 versions.</p>
+<p>This can be passed directly to the <a href="../struct.Config.html#method.set_application_protos"><code>Config::set_application_protos()</code></a>
+method when implementing HTTP/3 applications.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/h3/enum.Error.html b/quiche/h3/enum.Error.html
new file mode 100644
index 0000000..b6fdfd8
--- /dev/null
+++ b/quiche/h3/enum.Error.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An HTTP/3 error."><title>Error in quiche::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">Error</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.BufferTooShort">BufferTooShort</a></li><li><a href="#variant.ClosedCriticalStream">ClosedCriticalStream</a></li><li><a href="#variant.ConnectError">ConnectError</a></li><li><a href="#variant.Done">Done</a></li><li><a href="#variant.ExcessiveLoad">ExcessiveLoad</a></li><li><a href="#variant.FrameError">FrameError</a></li><li><a href="#variant.FrameUnexpected">FrameUnexpected</a></li><li><a href="#variant.IdError">IdError</a></li><li><a href="#variant.InternalError">InternalError</a></li><li><a href="#variant.MessageError">MessageError</a></li><li><a href="#variant.MissingSettings">MissingSettings</a></li><li><a href="#variant.QpackDecompressionFailed">QpackDecompressionFailed</a></li><li><a href="#variant.RequestCancelled">RequestCancelled</a></li><li><a href="#variant.RequestIncomplete">RequestIncomplete</a></li><li><a href="#variant.RequestRejected">RequestRejected</a></li><li><a href="#variant.SettingsError">SettingsError</a></li><li><a href="#variant.StreamBlocked">StreamBlocked</a></li><li><a href="#variant.StreamCreationError">StreamCreationError</a></li><li><a href="#variant.TransportError">TransportError</a></li><li><a href="#variant.VersionFallback">VersionFallback</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-Error">Clone</a></li><li><a href="#impl-Copy-for-Error">Copy</a></li><li><a href="#impl-Debug-for-Error">Debug</a></li><li><a href="#impl-Display-for-Error">Display</a></li><li><a href="#impl-Eq-for-Error">Eq</a></li><li><a href="#impl-Error-for-Error">Error</a></li><li><a href="#impl-From%3CBufferTooShortError%3E-for-Error">From&lt;BufferTooShortError&gt;</a></li><li><a href="#impl-From%3CError%3E-for-Error">From&lt;Error&gt;</a></li><li><a href="#impl-PartialEq-for-Error">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-Error">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Error">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Error">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Error">Send</a></li><li><a href="#impl-Sync-for-Error">Sync</a></li><li><a href="#impl-Unpin-for-Error">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Error">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-ToString-for-T">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In quiche::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../index.html">quiche</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="enum" href="#">Error</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche/h3/mod.rs.html#356-424">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum Error {
+<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 20 variants</span></summary>    Done,
+    BufferTooShort,
+    InternalError,
+    ExcessiveLoad,
+    IdError,
+    StreamCreationError,
+    ClosedCriticalStream,
+    MissingSettings,
+    FrameUnexpected,
+    FrameError,
+    QpackDecompressionFailed,
+    TransportError(<a class="enum" href="../enum.Error.html" title="enum quiche::Error">Error</a>),
+    StreamBlocked,
+    SettingsError,
+    RequestRejected,
+    RequestCancelled,
+    RequestIncomplete,
+    MessageError,
+    ConnectError,
+    VersionFallback,
+</details>}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An HTTP/3 error.</p>
+</div></details><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Done" class="variant"><a href="#variant.Done" class="anchor">§</a><h3 class="code-header">Done</h3></section><div class="docblock"><p>There is no error or no work to do</p>
+</div><section id="variant.BufferTooShort" class="variant"><a href="#variant.BufferTooShort" class="anchor">§</a><h3 class="code-header">BufferTooShort</h3></section><div class="docblock"><p>The provided buffer is too short.</p>
+</div><section id="variant.InternalError" class="variant"><a href="#variant.InternalError" class="anchor">§</a><h3 class="code-header">InternalError</h3></section><div class="docblock"><p>Internal error in the HTTP/3 stack.</p>
+</div><section id="variant.ExcessiveLoad" class="variant"><a href="#variant.ExcessiveLoad" class="anchor">§</a><h3 class="code-header">ExcessiveLoad</h3></section><div class="docblock"><p>Endpoint detected that the peer is exhibiting behavior that causes.
+excessive load.</p>
+</div><section id="variant.IdError" class="variant"><a href="#variant.IdError" class="anchor">§</a><h3 class="code-header">IdError</h3></section><div class="docblock"><p>Stream ID or Push ID greater that current maximum was
+used incorrectly, such as exceeding a limit, reducing a limit,
+or being reused.</p>
+</div><section id="variant.StreamCreationError" class="variant"><a href="#variant.StreamCreationError" class="anchor">§</a><h3 class="code-header">StreamCreationError</h3></section><div class="docblock"><p>The endpoint detected that its peer created a stream that it will not
+accept.</p>
+</div><section id="variant.ClosedCriticalStream" class="variant"><a href="#variant.ClosedCriticalStream" class="anchor">§</a><h3 class="code-header">ClosedCriticalStream</h3></section><div class="docblock"><p>A required critical stream was closed.</p>
+</div><section id="variant.MissingSettings" class="variant"><a href="#variant.MissingSettings" class="anchor">§</a><h3 class="code-header">MissingSettings</h3></section><div class="docblock"><p>No SETTINGS frame at beginning of control stream.</p>
+</div><section id="variant.FrameUnexpected" class="variant"><a href="#variant.FrameUnexpected" class="anchor">§</a><h3 class="code-header">FrameUnexpected</h3></section><div class="docblock"><p>A frame was received which is not permitted in the current state.</p>
+</div><section id="variant.FrameError" class="variant"><a href="#variant.FrameError" class="anchor">§</a><h3 class="code-header">FrameError</h3></section><div class="docblock"><p>Frame violated layout or size rules.</p>
+</div><section id="variant.QpackDecompressionFailed" class="variant"><a href="#variant.QpackDecompressionFailed" class="anchor">§</a><h3 class="code-header">QpackDecompressionFailed</h3></section><div class="docblock"><p>QPACK Header block decompression failure.</p>
+</div><section id="variant.TransportError" class="variant"><a href="#variant.TransportError" class="anchor">§</a><h3 class="code-header">TransportError(<a class="enum" href="../enum.Error.html" title="enum quiche::Error">Error</a>)</h3></section><div class="docblock"><p>Error originated from the transport layer.</p>
+</div><section id="variant.StreamBlocked" class="variant"><a href="#variant.StreamBlocked" class="anchor">§</a><h3 class="code-header">StreamBlocked</h3></section><div class="docblock"><p>The underlying QUIC stream (or connection) doesn’t have enough capacity
+for the operation to complete. The application should retry later on.</p>
+</div><section id="variant.SettingsError" class="variant"><a href="#variant.SettingsError" class="anchor">§</a><h3 class="code-header">SettingsError</h3></section><div class="docblock"><p>Error in the payload of a SETTINGS frame.</p>
+</div><section id="variant.RequestRejected" class="variant"><a href="#variant.RequestRejected" class="anchor">§</a><h3 class="code-header">RequestRejected</h3></section><div class="docblock"><p>Server rejected request.</p>
+</div><section id="variant.RequestCancelled" class="variant"><a href="#variant.RequestCancelled" class="anchor">§</a><h3 class="code-header">RequestCancelled</h3></section><div class="docblock"><p>Request or its response cancelled.</p>
+</div><section id="variant.RequestIncomplete" class="variant"><a href="#variant.RequestIncomplete" class="anchor">§</a><h3 class="code-header">RequestIncomplete</h3></section><div class="docblock"><p>Client’s request stream terminated without containing a full-formed
+request.</p>
+</div><section id="variant.MessageError" class="variant"><a href="#variant.MessageError" class="anchor">§</a><h3 class="code-header">MessageError</h3></section><div class="docblock"><p>An HTTP message was malformed and cannot be processed.</p>
+</div><section id="variant.ConnectError" class="variant"><a href="#variant.ConnectError" class="anchor">§</a><h3 class="code-header">ConnectError</h3></section><div class="docblock"><p>The TCP connection established in response to a CONNECT request was
+reset or abnormally closed.</p>
+</div><section id="variant.VersionFallback" class="variant"><a href="#variant.VersionFallback" class="anchor">§</a><h3 class="code-header">VersionFallback</h3></section><div class="docblock"><p>The requested operation cannot be served over HTTP/3. Peer should retry
+over HTTP/1.1.</p>
+</div></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Error" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#355">source</a><a href="#impl-Clone-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#355">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Error" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#355">source</a><a href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#355">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Display-for-Error" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#534-538">source</a><a href="#impl-Display-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#535-537">source</a><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Error-for-Error" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#540-544">source</a><a href="#impl-Error-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> for <a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.source" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#541-543">source</a><a href="#method.source" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source" class="fn">source</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + 'static)&gt;</h4></section></summary><div class='docblock'>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.description" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#110">source</a></span><a href="#method.description" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description" class="fn">description</a>(&amp;self) -&gt; &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.42.0: use the Display impl or to_string()</span></div></span><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.cause" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#120">source</a></span><a href="#method.cause" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.cause" class="fn">cause</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a>&gt;</h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.33.0: replaced by Error::source, which can support downcasting</span></div></span></details><details class="toggle method-toggle" open><summary><section id="method.provide" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#184">source</a><a href="#method.provide" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide" class="fn">provide</a>&lt;'a&gt;(&amp;'a self, request: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/error/struct.Request.html" title="struct core::error::Request">Request</a>&lt;'a&gt;)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>error_generic_member_access</code>)</span></div></span><div class='docblock'>Provides type based access to context intended for error reports. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-From%3CBufferTooShortError%3E-for-Error" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#556-560">source</a><a href="#impl-From%3CBufferTooShortError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;<a class="struct" href="../../octets/struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a>&gt; for <a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#557-559">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(_err: <a class="struct" href="../../octets/struct.BufferTooShortError.html" title="struct octets::BufferTooShortError">BufferTooShortError</a>) -&gt; Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-From%3CError%3E-for-Error" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#546-554">source</a><a href="#impl-From%3CError%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;<a class="enum" href="../enum.Error.html" title="enum quiche::Error">Error</a>&gt; for <a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#547-553">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(err: <a class="enum" href="../enum.Error.html" title="enum quiche::Error">Error</a>) -&gt; Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-Error" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#355">source</a><a href="#impl-PartialEq-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#355">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Copy-for-Error" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#355">source</a><a href="#impl-Copy-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a></h3></section><section id="impl-Eq-for-Error" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#355">source</a><a href="#impl-Eq-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a></h3></section><section id="impl-StructuralPartialEq-for-Error" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#355">source</a><a href="#impl-StructuralPartialEq-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Error" class="impl"><a href="#impl-Freeze-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a></h3></section><section id="impl-RefUnwindSafe-for-Error" class="impl"><a href="#impl-RefUnwindSafe-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a></h3></section><section id="impl-Send-for-Error" class="impl"><a href="#impl-Send-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a></h3></section><section id="impl-Sync-for-Error" class="impl"><a href="#impl-Sync-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a></h3></section><section id="impl-Unpin-for-Error" class="impl"><a href="#impl-Unpin-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a></h3></section><section id="impl-UnwindSafe-for-Error" class="impl"><a href="#impl-UnwindSafe-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToString-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2546">source</a><a href="#impl-ToString-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2552">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/h3/enum.Event.html b/quiche/h3/enum.Event.html
new file mode 100644
index 0000000..4f15bd2
--- /dev/null
+++ b/quiche/h3/enum.Event.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An HTTP/3 connection event."><title>Event in quiche::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">Event</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Data">Data</a></li><li><a href="#variant.Finished">Finished</a></li><li><a href="#variant.GoAway">GoAway</a></li><li><a href="#variant.Headers">Headers</a></li><li><a href="#variant.PriorityUpdate">PriorityUpdate</a></li><li><a href="#variant.Reset">Reset</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-Event">Clone</a></li><li><a href="#impl-Debug-for-Event">Debug</a></li><li><a href="#impl-Eq-for-Event">Eq</a></li><li><a href="#impl-PartialEq-for-Event">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-Event">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Event">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Event">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Event">Send</a></li><li><a href="#impl-Sync-for-Event">Sync</a></li><li><a href="#impl-Unpin-for-Event">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Event">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In quiche::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../index.html">quiche</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="enum" href="#">Event</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche/h3/mod.rs.html#753-802">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum Event {
+    Headers {
+        list: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.Header.html" title="struct quiche::h3::Header">Header</a>&gt;,
+        has_body: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    },
+    Data,
+    Finished,
+    Reset(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>),
+    PriorityUpdate,
+    GoAway,
+}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An HTTP/3 connection event.</p>
+</div></details><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Headers" class="variant"><a href="#variant.Headers" class="anchor">§</a><h3 class="code-header">Headers</h3></section><div class="docblock"><p>Request/response headers were received.</p>
+</div><div class="sub-variant" id="variant.Headers.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Headers.field.list" class="section-header"><a href="#variant.Headers.field.list" class="anchor field">§</a><code>list: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.Header.html" title="struct quiche::h3::Header">Header</a>&gt;</code></span><div class="docblock"><p>The list of received header fields. The application should validate
+pseudo-headers and headers.</p>
+</div></div><div class="sub-variant-field"><span id="variant.Headers.field.has_body" class="section-header"><a href="#variant.Headers.field.has_body" class="anchor field">§</a><code>has_body: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether data will follow the headers on the stream.</p>
+</div></div></div><section id="variant.Data" class="variant"><a href="#variant.Data" class="anchor">§</a><h3 class="code-header">Data</h3></section><div class="docblock"><p>Data was received.</p>
+<p>This indicates that the application can use the <a href="struct.Connection.html#method.recv_body"><code>recv_body()</code></a> method
+to retrieve the data from the stream.</p>
+<p>Note that <a href="struct.Connection.html#method.recv_body"><code>recv_body()</code></a> will need to be called repeatedly until the
+<a href="enum.Error.html#variant.Done"><code>Done</code></a> value is returned, as the event will not be re-armed until all
+buffered data is read.</p>
+</div><section id="variant.Finished" class="variant"><a href="#variant.Finished" class="anchor">§</a><h3 class="code-header">Finished</h3></section><div class="docblock"><p>Stream was closed,</p>
+</div><section id="variant.Reset" class="variant"><a href="#variant.Reset" class="anchor">§</a><h3 class="code-header">Reset(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h3></section><div class="docblock"><p>Stream was reset.</p>
+<p>The associated data represents the error code sent by the peer.</p>
+</div><section id="variant.PriorityUpdate" class="variant"><a href="#variant.PriorityUpdate" class="anchor">§</a><h3 class="code-header">PriorityUpdate</h3></section><div class="docblock"><p>PRIORITY_UPDATE was received.</p>
+<p>This indicates that the application can use the
+<a href="struct.Connection.html#method.take_last_priority_update"><code>take_last_priority_update()</code></a> method to take the last received
+PRIORITY_UPDATE for a specified stream.</p>
+<p>This event is triggered once per stream until the last PRIORITY_UPDATE
+is taken. It is recommended that applications defer taking the
+PRIORITY_UPDATE until after <a href="struct.Connection.html#method.poll"><code>poll()</code></a> returns <a href="enum.Error.html#variant.Done"><code>Done</code></a>.</p>
+</div><section id="variant.GoAway" class="variant"><a href="#variant.GoAway" class="anchor">§</a><h3 class="code-header">GoAway</h3></section><div class="docblock"><p>GOAWAY was received.</p>
+</div></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Event" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#752">source</a><a href="#impl-Clone-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="enum.Event.html" title="enum quiche::h3::Event">Event</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#752">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="enum" href="enum.Event.html" title="enum quiche::h3::Event">Event</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Event" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#752">source</a><a href="#impl-Debug-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.Event.html" title="enum quiche::h3::Event">Event</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#752">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-Event" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#752">source</a><a href="#impl-PartialEq-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="enum" href="enum.Event.html" title="enum quiche::h3::Event">Event</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#752">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="enum" href="enum.Event.html" title="enum quiche::h3::Event">Event</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-Event" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#752">source</a><a href="#impl-Eq-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Event.html" title="enum quiche::h3::Event">Event</a></h3></section><section id="impl-StructuralPartialEq-for-Event" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#752">source</a><a href="#impl-StructuralPartialEq-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="enum.Event.html" title="enum quiche::h3::Event">Event</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Event" class="impl"><a href="#impl-Freeze-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.Event.html" title="enum quiche::h3::Event">Event</a></h3></section><section id="impl-RefUnwindSafe-for-Event" class="impl"><a href="#impl-RefUnwindSafe-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.Event.html" title="enum quiche::h3::Event">Event</a></h3></section><section id="impl-Send-for-Event" class="impl"><a href="#impl-Send-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.Event.html" title="enum quiche::h3::Event">Event</a></h3></section><section id="impl-Sync-for-Event" class="impl"><a href="#impl-Sync-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.Event.html" title="enum quiche::h3::Event">Event</a></h3></section><section id="impl-Unpin-for-Event" class="impl"><a href="#impl-Unpin-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.Event.html" title="enum quiche::h3::Event">Event</a></h3></section><section id="impl-UnwindSafe-for-Event" class="impl"><a href="#impl-UnwindSafe-for-Event" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.Event.html" title="enum quiche::h3::Event">Event</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/h3/enum.WireErrorCode.html b/quiche/h3/enum.WireErrorCode.html
new file mode 100644
index 0000000..56f83b8
--- /dev/null
+++ b/quiche/h3/enum.WireErrorCode.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="HTTP/3 error codes sent on the wire."><title>WireErrorCode in quiche::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">WireErrorCode</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.ClosedCriticalStream">ClosedCriticalStream</a></li><li><a href="#variant.ConnectError">ConnectError</a></li><li><a href="#variant.ExcessiveLoad">ExcessiveLoad</a></li><li><a href="#variant.FrameError">FrameError</a></li><li><a href="#variant.FrameUnexpected">FrameUnexpected</a></li><li><a href="#variant.GeneralProtocolError">GeneralProtocolError</a></li><li><a href="#variant.IdError">IdError</a></li><li><a href="#variant.InternalError">InternalError</a></li><li><a href="#variant.MessageError">MessageError</a></li><li><a href="#variant.MissingSettings">MissingSettings</a></li><li><a href="#variant.NoError">NoError</a></li><li><a href="#variant.RequestCancelled">RequestCancelled</a></li><li><a href="#variant.RequestIncomplete">RequestIncomplete</a></li><li><a href="#variant.RequestRejected">RequestRejected</a></li><li><a href="#variant.SettingsError">SettingsError</a></li><li><a href="#variant.StreamCreationError">StreamCreationError</a></li><li><a href="#variant.VersionFallback">VersionFallback</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-WireErrorCode">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-WireErrorCode">RefUnwindSafe</a></li><li><a href="#impl-Send-for-WireErrorCode">Send</a></li><li><a href="#impl-Sync-for-WireErrorCode">Sync</a></li><li><a href="#impl-Unpin-for-WireErrorCode">Unpin</a></li><li><a href="#impl-UnwindSafe-for-WireErrorCode">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In quiche::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../index.html">quiche</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="enum" href="#">WireErrorCode</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche/h3/mod.rs.html#429-476">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum WireErrorCode {
+<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 17 variants</span></summary>    NoError = 256,
+    GeneralProtocolError = 257,
+    InternalError = 258,
+    StreamCreationError = 259,
+    ClosedCriticalStream = 260,
+    FrameUnexpected = 261,
+    FrameError = 262,
+    ExcessiveLoad = 263,
+    IdError = 264,
+    SettingsError = 265,
+    MissingSettings = 266,
+    RequestRejected = 267,
+    RequestCancelled = 268,
+    RequestIncomplete = 269,
+    MessageError = 270,
+    ConnectError = 271,
+    VersionFallback = 272,
+</details>}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>HTTP/3 error codes sent on the wire.</p>
+<p>As defined in <a href="https://www.rfc-editor.org/rfc/rfc9114.html#http-error-codes">RFC9114</a>.</p>
+</div></details><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.NoError" class="variant"><a href="#variant.NoError" class="anchor">§</a><h3 class="code-header">NoError = 256</h3></section><div class="docblock"><p>No error. This is used when the connection or stream needs to be closed,
+but there is no error to signal.</p>
+</div><section id="variant.GeneralProtocolError" class="variant"><a href="#variant.GeneralProtocolError" class="anchor">§</a><h3 class="code-header">GeneralProtocolError = 257</h3></section><div class="docblock"><p>Peer violated protocol requirements in a way that does not match a more
+specific error code or endpoint declines to use the more specific
+error code.</p>
+</div><section id="variant.InternalError" class="variant"><a href="#variant.InternalError" class="anchor">§</a><h3 class="code-header">InternalError = 258</h3></section><div class="docblock"><p>An internal error has occurred in the HTTP stack.</p>
+</div><section id="variant.StreamCreationError" class="variant"><a href="#variant.StreamCreationError" class="anchor">§</a><h3 class="code-header">StreamCreationError = 259</h3></section><div class="docblock"><p>The endpoint detected that its peer created a stream that it will not
+accept.</p>
+</div><section id="variant.ClosedCriticalStream" class="variant"><a href="#variant.ClosedCriticalStream" class="anchor">§</a><h3 class="code-header">ClosedCriticalStream = 260</h3></section><div class="docblock"><p>A stream required by the HTTP/3 connection was closed or reset.</p>
+</div><section id="variant.FrameUnexpected" class="variant"><a href="#variant.FrameUnexpected" class="anchor">§</a><h3 class="code-header">FrameUnexpected = 261</h3></section><div class="docblock"><p>A frame was received that was not permitted in the current state or on
+the current stream.</p>
+</div><section id="variant.FrameError" class="variant"><a href="#variant.FrameError" class="anchor">§</a><h3 class="code-header">FrameError = 262</h3></section><div class="docblock"><p>A frame that fails to satisfy layout requirements or with an invalid
+size was received.</p>
+</div><section id="variant.ExcessiveLoad" class="variant"><a href="#variant.ExcessiveLoad" class="anchor">§</a><h3 class="code-header">ExcessiveLoad = 263</h3></section><div class="docblock"><p>The endpoint detected that its peer is exhibiting a behavior that might
+be generating excessive load.</p>
+</div><section id="variant.IdError" class="variant"><a href="#variant.IdError" class="anchor">§</a><h3 class="code-header">IdError = 264</h3></section><div class="docblock"><p>A stream ID or push ID was used incorrectly, such as exceeding a limit,
+reducing a limit, or being reused.</p>
+</div><section id="variant.SettingsError" class="variant"><a href="#variant.SettingsError" class="anchor">§</a><h3 class="code-header">SettingsError = 265</h3></section><div class="docblock"><p>An endpoint detected an error in the payload of a SETTINGS frame.</p>
+</div><section id="variant.MissingSettings" class="variant"><a href="#variant.MissingSettings" class="anchor">§</a><h3 class="code-header">MissingSettings = 266</h3></section><div class="docblock"><p>No SETTINGS frame was received at the beginning of the control stream.</p>
+</div><section id="variant.RequestRejected" class="variant"><a href="#variant.RequestRejected" class="anchor">§</a><h3 class="code-header">RequestRejected = 267</h3></section><div class="docblock"><p>A server rejected a request without performing any application
+processing.</p>
+</div><section id="variant.RequestCancelled" class="variant"><a href="#variant.RequestCancelled" class="anchor">§</a><h3 class="code-header">RequestCancelled = 268</h3></section><div class="docblock"><p>The request or its response (including pushed response) is cancelled.</p>
+</div><section id="variant.RequestIncomplete" class="variant"><a href="#variant.RequestIncomplete" class="anchor">§</a><h3 class="code-header">RequestIncomplete = 269</h3></section><div class="docblock"><p>The client’s stream terminated without containing a fully formed
+request.</p>
+</div><section id="variant.MessageError" class="variant"><a href="#variant.MessageError" class="anchor">§</a><h3 class="code-header">MessageError = 270</h3></section><div class="docblock"><p>An HTTP message was malformed and cannot be processed.</p>
+</div><section id="variant.ConnectError" class="variant"><a href="#variant.ConnectError" class="anchor">§</a><h3 class="code-header">ConnectError = 271</h3></section><div class="docblock"><p>The TCP connection established in response to a CONNECT request was
+reset or abnormally closed.</p>
+</div><section id="variant.VersionFallback" class="variant"><a href="#variant.VersionFallback" class="anchor">§</a><h3 class="code-header">VersionFallback = 272</h3></section><div class="docblock"><p>The requested operation cannot be served over HTTP/3. The peer should
+retry over HTTP/1.1.</p>
+</div></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-WireErrorCode" class="impl"><a href="#impl-Freeze-for-WireErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.WireErrorCode.html" title="enum quiche::h3::WireErrorCode">WireErrorCode</a></h3></section><section id="impl-RefUnwindSafe-for-WireErrorCode" class="impl"><a href="#impl-RefUnwindSafe-for-WireErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.WireErrorCode.html" title="enum quiche::h3::WireErrorCode">WireErrorCode</a></h3></section><section id="impl-Send-for-WireErrorCode" class="impl"><a href="#impl-Send-for-WireErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.WireErrorCode.html" title="enum quiche::h3::WireErrorCode">WireErrorCode</a></h3></section><section id="impl-Sync-for-WireErrorCode" class="impl"><a href="#impl-Sync-for-WireErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.WireErrorCode.html" title="enum quiche::h3::WireErrorCode">WireErrorCode</a></h3></section><section id="impl-Unpin-for-WireErrorCode" class="impl"><a href="#impl-Unpin-for-WireErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.WireErrorCode.html" title="enum quiche::h3::WireErrorCode">WireErrorCode</a></h3></section><section id="impl-UnwindSafe-for-WireErrorCode" class="impl"><a href="#impl-UnwindSafe-for-WireErrorCode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.WireErrorCode.html" title="enum quiche::h3::WireErrorCode">WireErrorCode</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/h3/fn.grease_value.html b/quiche/h3/fn.grease_value.html
new file mode 100644
index 0000000..deab74b
--- /dev/null
+++ b/quiche/h3/fn.grease_value.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Generates an HTTP/3 GREASE variable length integer."><title>grease_value in quiche::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><div class="sidebar-elems"><h2><a href="index.html">In quiche::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="../index.html">quiche</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="fn" href="#">grease_value</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche/h3/mod.rs.html#2838-2841">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub fn grease_value() -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Generates an HTTP/3 GREASE variable length integer.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/h3/index.html b/quiche/h3/index.html
new file mode 100644
index 0000000..6f1731f
--- /dev/null
+++ b/quiche/h3/index.html
@@ -0,0 +1,171 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="HTTP/3 wire protocol and QPACK implementation."><title>quiche::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">Module h3</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#constants">Constants</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li><li><a href="#types">Type Aliases</a></li></ul></section><h2><a href="../index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../index.html">quiche</a>::<wbr><a class="mod" href="#">h3</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche/h3/mod.rs.html#27-6495">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>HTTP/3 wire protocol and QPACK implementation.</p>
+<p>This module provides a high level API for sending and receiving HTTP/3
+requests and responses on top of the QUIC transport protocol.</p>
+<h3 id="connection-setup"><a class="doc-anchor" href="#connection-setup">§</a>Connection setup</h3>
+<p>HTTP/3 connections require a QUIC transport-layer connection, see
+<a href="../index.html#connection-setup">Connection setup</a> for a full description of the setup process.</p>
+<p>To use HTTP/3, the QUIC connection must be configured with a suitable
+Application Layer Protocol Negotiation (ALPN) Protocol ID:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>config = quiche::Config::new(quiche::PROTOCOL_VERSION)<span class="question-mark">?</span>;
+config.set_application_protos(quiche::h3::APPLICATION_PROTOCOL)<span class="question-mark">?</span>;</code></pre></div>
+<p>The QUIC handshake is driven by <a href="../index.html#generating-outgoing-packets">sending</a> and <a href="../index.html#handling-incoming-packets">receiving</a> QUIC packets.</p>
+<p>Once the handshake has completed, the first step in establishing an HTTP/3
+connection is creating its configuration object:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>h3_config = quiche::h3::Config::new()<span class="question-mark">?</span>;</code></pre></div>
+<p>HTTP/3 client and server connections are both created using the
+<a href="struct.Connection.html#method.with_transport"><code>with_transport()</code></a> function, the role is inferred from the type of QUIC
+connection:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>h3_conn = quiche::h3::Connection::with_transport(<span class="kw-2">&amp;mut </span>conn, <span class="kw-2">&amp;</span>h3_config)<span class="question-mark">?</span>;</code></pre></div>
+<h3 id="sending-a-request"><a class="doc-anchor" href="#sending-a-request">§</a>Sending a request</h3>
+<p>An HTTP/3 client can send a request by using the connection’s
+<a href="struct.Connection.html#method.send_response"><code>send_request()</code></a> method to queue request headers; <a href="../index.html#generating-outgoing-packets">sending</a> QUIC packets
+causes the requests to get sent to the peer:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>req = <span class="macro">vec!</span>[
+    quiche::h3::Header::new(<span class="string">b":method"</span>, <span class="string">b"GET"</span>),
+    quiche::h3::Header::new(<span class="string">b":scheme"</span>, <span class="string">b"https"</span>),
+    quiche::h3::Header::new(<span class="string">b":authority"</span>, <span class="string">b"quic.tech"</span>),
+    quiche::h3::Header::new(<span class="string">b":path"</span>, <span class="string">b"/"</span>),
+    quiche::h3::Header::new(<span class="string">b"user-agent"</span>, <span class="string">b"quiche"</span>),
+];
+
+h3_conn.send_request(<span class="kw-2">&amp;mut </span>conn, <span class="kw-2">&amp;</span>req, <span class="bool-val">true</span>)<span class="question-mark">?</span>;</code></pre></div>
+<p>An HTTP/3 client can send a request with additional body data by using
+the connection’s <a href="struct.Connection.html#method.send_body"><code>send_body()</code></a> method:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>req = <span class="macro">vec!</span>[
+    quiche::h3::Header::new(<span class="string">b":method"</span>, <span class="string">b"GET"</span>),
+    quiche::h3::Header::new(<span class="string">b":scheme"</span>, <span class="string">b"https"</span>),
+    quiche::h3::Header::new(<span class="string">b":authority"</span>, <span class="string">b"quic.tech"</span>),
+    quiche::h3::Header::new(<span class="string">b":path"</span>, <span class="string">b"/"</span>),
+    quiche::h3::Header::new(<span class="string">b"user-agent"</span>, <span class="string">b"quiche"</span>),
+];
+
+<span class="kw">let </span>stream_id = h3_conn.send_request(<span class="kw-2">&amp;mut </span>conn, <span class="kw-2">&amp;</span>req, <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+h3_conn.send_body(<span class="kw-2">&amp;mut </span>conn, stream_id, <span class="string">b"Hello World!"</span>, <span class="bool-val">true</span>)<span class="question-mark">?</span>;</code></pre></div>
+<h3 id="handling-requests-and-responses"><a class="doc-anchor" href="#handling-requests-and-responses">§</a>Handling requests and responses</h3>
+<p>After <a href="../index.html#handling-incoming-packets">receiving</a> QUIC packets, HTTP/3 data is processed using the
+connection’s <a href="struct.Connection.html#method.poll"><code>poll()</code></a> method. On success, this returns an <a href="enum.Event.html"><code>Event</code></a> object
+and an ID corresponding to the stream where the <code>Event</code> originated.</p>
+<p>An HTTP/3 server uses <a href="struct.Connection.html#method.poll"><code>poll()</code></a> to read requests and responds to them using
+<a href="struct.Connection.html#method.send_response"><code>send_response()</code></a> and <a href="struct.Connection.html#method.send_body"><code>send_body()</code></a>:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>quiche::h3::NameValue;
+
+<span class="kw">loop </span>{
+    <span class="kw">match </span>h3_conn.poll(<span class="kw-2">&amp;mut </span>conn) {
+        <span class="prelude-val">Ok</span>((stream_id, quiche::h3::Event::Headers{list, has_body})) =&gt; {
+            <span class="kw">let </span><span class="kw-2">mut </span>headers = list.into_iter();
+
+            <span class="comment">// Look for the request's method.
+            </span><span class="kw">let </span>method = headers.find(|h| h.name() == <span class="string">b":method"</span>).unwrap();
+
+            <span class="comment">// Look for the request's path.
+            </span><span class="kw">let </span>path = headers.find(|h| h.name() == <span class="string">b":path"</span>).unwrap();
+
+            <span class="kw">if </span>method.value() == <span class="string">b"GET" </span>&amp;&amp; path.value() == <span class="string">b"/" </span>{
+                <span class="kw">let </span>resp = <span class="macro">vec!</span>[
+                    quiche::h3::Header::new(<span class="string">b":status"</span>, <span class="number">200</span>.to_string().as_bytes()),
+                    quiche::h3::Header::new(<span class="string">b"server"</span>, <span class="string">b"quiche"</span>),
+                ];
+
+                h3_conn.send_response(<span class="kw-2">&amp;mut </span>conn, stream_id, <span class="kw-2">&amp;</span>resp, <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+                h3_conn.send_body(<span class="kw-2">&amp;mut </span>conn, stream_id, <span class="string">b"Hello World!"</span>, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
+            }
+        },
+
+        <span class="prelude-val">Ok</span>((stream_id, quiche::h3::Event::Data)) =&gt; {
+            <span class="comment">// Request body data, handle it.
+        </span>},
+
+        <span class="prelude-val">Ok</span>((stream_id, quiche::h3::Event::Finished)) =&gt; {
+            <span class="comment">// Peer terminated stream, handle it.
+        </span>},
+
+        <span class="prelude-val">Ok</span>((stream_id, quiche::h3::Event::Reset(err))) =&gt; {
+            <span class="comment">// Peer reset the stream, handle it.
+        </span>},
+
+        <span class="prelude-val">Ok</span>((_flow_id, quiche::h3::Event::PriorityUpdate)) =&gt; (),
+
+        <span class="prelude-val">Ok</span>((goaway_id, quiche::h3::Event::GoAway)) =&gt; {
+             <span class="comment">// Peer signalled it is going away, handle it.
+        </span>},
+
+        <span class="prelude-val">Err</span>(quiche::h3::Error::Done) =&gt; {
+            <span class="comment">// Done reading.
+            </span><span class="kw">break</span>;
+        },
+
+        <span class="prelude-val">Err</span>(e) =&gt; {
+            <span class="comment">// An error occurred, handle it.
+            </span><span class="kw">break</span>;
+        },
+    }
+}</code></pre></div>
+<p>An HTTP/3 client uses <a href="struct.Connection.html#method.poll"><code>poll()</code></a> to read responses:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>quiche::h3::NameValue;
+
+<span class="kw">loop </span>{
+    <span class="kw">match </span>h3_conn.poll(<span class="kw-2">&amp;mut </span>conn) {
+        <span class="prelude-val">Ok</span>((stream_id, quiche::h3::Event::Headers{list, has_body})) =&gt; {
+            <span class="kw">let </span>status = list.iter().find(|h| h.name() == <span class="string">b":status"</span>).unwrap();
+            <span class="macro">println!</span>(<span class="string">"Received {} response on stream {}"</span>,
+                     std::str::from_utf8(status.value()).unwrap(),
+                     stream_id);
+        },
+
+        <span class="prelude-val">Ok</span>((stream_id, quiche::h3::Event::Data)) =&gt; {
+            <span class="kw">let </span><span class="kw-2">mut </span>body = <span class="macro">vec!</span>[<span class="number">0</span>; <span class="number">4096</span>];
+
+            <span class="comment">// Consume all body data received on the stream.
+            </span><span class="kw">while let </span><span class="prelude-val">Ok</span>(read) =
+                h3_conn.recv_body(<span class="kw-2">&amp;mut </span>conn, stream_id, <span class="kw-2">&amp;mut </span>body)
+            {
+                <span class="macro">println!</span>(<span class="string">"Received {} bytes of payload on stream {}"</span>,
+                         read, stream_id);
+            }
+        },
+
+        <span class="prelude-val">Ok</span>((stream_id, quiche::h3::Event::Finished)) =&gt; {
+            <span class="comment">// Peer terminated stream, handle it.
+        </span>},
+
+        <span class="prelude-val">Ok</span>((stream_id, quiche::h3::Event::Reset(err))) =&gt; {
+            <span class="comment">// Peer reset the stream, handle it.
+        </span>},
+
+        <span class="prelude-val">Ok</span>((_prioritized_element_id, quiche::h3::Event::PriorityUpdate)) =&gt; (),
+
+        <span class="prelude-val">Ok</span>((goaway_id, quiche::h3::Event::GoAway)) =&gt; {
+             <span class="comment">// Peer signalled it is going away, handle it.
+        </span>},
+
+        <span class="prelude-val">Err</span>(quiche::h3::Error::Done) =&gt; {
+            <span class="comment">// Done reading.
+            </span><span class="kw">break</span>;
+        },
+
+        <span class="prelude-val">Err</span>(e) =&gt; {
+            <span class="comment">// An error occurred, handle it.
+            </span><span class="kw">break</span>;
+        },
+    }
+}</code></pre></div>
+<h3 id="detecting-end-of-request-or-response"><a class="doc-anchor" href="#detecting-end-of-request-or-response">§</a>Detecting end of request or response</h3>
+<p>A single HTTP/3 request or response may consist of several HEADERS and DATA
+frames; it is finished when the QUIC stream is closed. Calling <a href="struct.Connection.html#method.poll"><code>poll()</code></a>
+repeatedly will generate an <a href="enum.Event.html"><code>Event</code></a> for each of these. The application may
+use these event to do additional HTTP semantic validation.</p>
+<h3 id="http3-protocol-errors"><a class="doc-anchor" href="#http3-protocol-errors">§</a>HTTP/3 protocol errors</h3>
+<p>Quiche is responsible for managing the HTTP/3 connection, ensuring it is in
+a correct state and validating all messages received by a peer. This mainly
+takes place in the <a href="struct.Connection.html#method.poll"><code>poll()</code></a> method. If an HTTP/3 error occurs, quiche will
+close the connection and send an appropriate CONNECTION_CLOSE frame to the
+peer. An <a href="enum.Error.html"><code>Error</code></a> is returned to the application so that it can perform any
+required tidy up such as closing sockets.</p>
+</div></details><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.Config.html" title="struct quiche::h3::Config">Config</a></div><div class="desc docblock-short">An HTTP/3 configuration.</div></li><li><div class="item-name"><a class="struct" href="struct.Connection.html" title="struct quiche::h3::Connection">Connection</a></div><div class="desc docblock-short">An HTTP/3 connection.</div></li><li><div class="item-name"><a class="struct" href="struct.Header.html" title="struct quiche::h3::Header">Header</a></div><div class="desc docblock-short">An owned name-value pair representing a raw HTTP header.</div></li><li><div class="item-name"><a class="struct" href="struct.HeaderRef.html" title="struct quiche::h3::HeaderRef">HeaderRef</a></div><div class="desc docblock-short">A non-owned name-value pair representing a raw HTTP header.</div></li><li><div class="item-name"><a class="struct" href="struct.Priority.html" title="struct quiche::h3::Priority">Priority</a></div><div class="desc docblock-short">Extensible Priorities parameters.</div></li></ul><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a></div><div class="desc docblock-short">An HTTP/3 error.</div></li><li><div class="item-name"><a class="enum" href="enum.Event.html" title="enum quiche::h3::Event">Event</a></div><div class="desc docblock-short">An HTTP/3 connection event.</div></li><li><div class="item-name"><a class="enum" href="enum.WireErrorCode.html" title="enum quiche::h3::WireErrorCode">WireErrorCode</a></div><div class="desc docblock-short">HTTP/3 error codes sent on the wire.</div></li></ul><h2 id="constants" class="section-header">Constants<a href="#constants" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="constant" href="constant.APPLICATION_PROTOCOL.html" title="constant quiche::h3::APPLICATION_PROTOCOL">APPLICATION_PROTOCOL</a></div><div class="desc docblock-short">List of ALPN tokens of supported HTTP/3 versions.</div></li></ul><h2 id="traits" class="section-header">Traits<a href="#traits" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="trait" href="trait.NameValue.html" title="trait quiche::h3::NameValue">NameValue</a></div><div class="desc docblock-short">A trait for types with associated string name and value.</div></li></ul><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="fn" href="fn.grease_value.html" title="fn quiche::h3::grease_value">grease_value</a></div><div class="desc docblock-short">Generates an HTTP/3 GREASE variable length integer.</div></li></ul><h2 id="types" class="section-header">Type Aliases<a href="#types" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="type" href="type.Result.html" title="type quiche::h3::Result">Result</a></div><div class="desc docblock-short">A specialized <a href="https://doc.rust-lang.org/std/result/enum.Result.html"><code>Result</code></a> type for quiche HTTP/3 operations.</div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/h3/sidebar-items.js b/quiche/h3/sidebar-items.js
new file mode 100644
index 0000000..b0ac324
--- /dev/null
+++ b/quiche/h3/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"constant":["APPLICATION_PROTOCOL"],"enum":["Error","Event","WireErrorCode"],"fn":["grease_value"],"struct":["Config","Connection","Header","HeaderRef","Priority"],"trait":["NameValue"],"type":["Result"]};
\ No newline at end of file
diff --git a/quiche/h3/struct.Config.html b/quiche/h3/struct.Config.html
new file mode 100644
index 0000000..bcd0cf0
--- /dev/null
+++ b/quiche/h3/struct.Config.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An HTTP/3 configuration."><title>Config in quiche::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">Config</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.enable_extended_connect">enable_extended_connect</a></li><li><a href="#method.new">new</a></li><li><a href="#method.set_additional_settings">set_additional_settings</a></li><li><a href="#method.set_max_field_section_size">set_max_field_section_size</a></li><li><a href="#method.set_qpack_blocked_streams">set_qpack_blocked_streams</a></li><li><a href="#method.set_qpack_max_table_capacity">set_qpack_max_table_capacity</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Config">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Config">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Config">Send</a></li><li><a href="#impl-Sync-for-Config">Sync</a></li><li><a href="#impl-Unpin-for-Config">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Config">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In quiche::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">quiche</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="struct" href="#">Config</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche/h3/mod.rs.html#563-571">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Config { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An HTTP/3 configuration.</p>
+</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Config" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#573-665">source</a><a href="#impl-Config" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Config.html" title="struct quiche::h3::Config">Config</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#575-583">source</a><h4 class="code-header">pub const fn <a href="#method.new" class="fn">new</a>() -&gt; <a class="type" href="type.Result.html" title="type quiche::h3::Result">Result</a>&lt;<a class="struct" href="struct.Config.html" title="struct quiche::h3::Config">Config</a>&gt;</h4></section></summary><div class="docblock"><p>Creates a new configuration object with default settings.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_max_field_section_size" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#594-596">source</a><h4 class="code-header">pub fn <a href="#method.set_max_field_section_size" class="fn">set_max_field_section_size</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h4></section></summary><div class="docblock"><p>Sets the <code>SETTINGS_MAX_FIELD_SECTION_SIZE</code> setting.</p>
+<p>By default no limit is enforced. When a request whose headers exceed
+the limit set by the application is received, the call to the <a href="struct.Connection.html#method.poll"><code>poll()</code></a>
+method will return the <a href="enum.Error.html#variant.ExcessiveLoad"><code>Error::ExcessiveLoad</code></a> error, and the
+connection will be closed.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_qpack_max_table_capacity" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#601-603">source</a><h4 class="code-header">pub fn <a href="#method.set_qpack_max_table_capacity" class="fn">set_qpack_max_table_capacity</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h4></section></summary><div class="docblock"><p>Sets the <code>SETTINGS_QPACK_MAX_TABLE_CAPACITY</code> setting.</p>
+<p>The default value is <code>0</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_qpack_blocked_streams" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#608-610">source</a><h4 class="code-header">pub fn <a href="#method.set_qpack_blocked_streams" class="fn">set_qpack_blocked_streams</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h4></section></summary><div class="docblock"><p>Sets the <code>SETTINGS_QPACK_BLOCKED_STREAMS</code> setting.</p>
+<p>The default value is <code>0</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_extended_connect" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#615-621">source</a><h4 class="code-header">pub fn <a href="#method.enable_extended_connect" class="fn">enable_extended_connect</a>(&amp;mut self, enabled: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>)</h4></section></summary><div class="docblock"><p>Sets or omits the <code>SETTINGS_ENABLE_CONNECT_PROTOCOL</code> setting.</p>
+<p>The default value is <code>false</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_additional_settings" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#642-664">source</a><h4 class="code-header">pub fn <a href="#method.set_additional_settings" class="fn">set_additional_settings</a>(
+    &amp;mut self,
+    additional_settings: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)&gt;
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::h3::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Sets additional HTTP/3 settings.</p>
+<p>The default value is no additional settings.
+The <code>additional_settings</code> parameter must not the following
+settings as they are already handled by this library:</p>
+<ul>
+<li>SETTINGS_QPACK_MAX_TABLE_CAPACITY</li>
+<li>SETTINGS_MAX_FIELD_SECTION_SIZE</li>
+<li>SETTINGS_QPACK_BLOCKED_STREAMS</li>
+<li>SETTINGS_ENABLE_CONNECT_PROTOCOL</li>
+<li>SETTINGS_H3_DATAGRAM</li>
+</ul>
+<p>If such a setting is present in the <code>additional_settings</code>,
+the method will return the <a href="enum.Error.html#variant.SettingsError"><code>Error::SettingsError</code></a> error.</p>
+<p>If a setting identifier is present twice in <code>additional_settings</code>,
+the method will return the <a href="enum.Error.html#variant.SettingsError"><code>Error::SettingsError</code></a> error.</p>
+</div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Config" class="impl"><a href="#impl-Freeze-for-Config" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Config.html" title="struct quiche::h3::Config">Config</a></h3></section><section id="impl-RefUnwindSafe-for-Config" class="impl"><a href="#impl-RefUnwindSafe-for-Config" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Config.html" title="struct quiche::h3::Config">Config</a></h3></section><section id="impl-Send-for-Config" class="impl"><a href="#impl-Send-for-Config" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Config.html" title="struct quiche::h3::Config">Config</a></h3></section><section id="impl-Sync-for-Config" class="impl"><a href="#impl-Sync-for-Config" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Config.html" title="struct quiche::h3::Config">Config</a></h3></section><section id="impl-Unpin-for-Config" class="impl"><a href="#impl-Unpin-for-Config" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Config.html" title="struct quiche::h3::Config">Config</a></h3></section><section id="impl-UnwindSafe-for-Config" class="impl"><a href="#impl-UnwindSafe-for-Config" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Config.html" title="struct quiche::h3::Config">Config</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/h3/struct.Connection.html b/quiche/h3/struct.Connection.html
new file mode 100644
index 0000000..1cb0e75
--- /dev/null
+++ b/quiche/h3/struct.Connection.html
@@ -0,0 +1,160 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An HTTP/3 connection."><title>Connection in quiche::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">Connection</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.dgram_enabled_by_peer">dgram_enabled_by_peer</a></li><li><a href="#method.extended_connect_enabled_by_peer">extended_connect_enabled_by_peer</a></li><li><a href="#method.peer_settings_raw">peer_settings_raw</a></li><li><a href="#method.poll">poll</a></li><li><a href="#method.recv_body">recv_body</a></li><li><a href="#method.send_body">send_body</a></li><li><a href="#method.send_goaway">send_goaway</a></li><li><a href="#method.send_priority_update_for_request">send_priority_update_for_request</a></li><li><a href="#method.send_request">send_request</a></li><li><a href="#method.send_response">send_response</a></li><li><a href="#method.send_response_with_priority">send_response_with_priority</a></li><li><a href="#method.take_last_priority_update">take_last_priority_update</a></li><li><a href="#method.with_transport">with_transport</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Connection">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Connection">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Connection">Send</a></li><li><a href="#impl-Sync-for-Connection">Sync</a></li><li><a href="#impl-Unpin-for-Connection">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Connection">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In quiche::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">quiche</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="struct" href="#">Connection</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche/h3/mod.rs.html#918-946">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Connection { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An HTTP/3 connection.</p>
+</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Connection" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#948-2835">source</a><a href="#impl-Connection" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Connection.html" title="struct quiche::h3::Connection">Connection</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.with_transport" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#1027-1060">source</a><h4 class="code-header">pub fn <a href="#method.with_transport" class="fn">with_transport</a>(
+    conn: &amp;mut <a class="struct" href="../struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+    config: &amp;<a class="struct" href="struct.Config.html" title="struct quiche::h3::Config">Config</a>
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::h3::Result">Result</a>&lt;<a class="struct" href="struct.Connection.html" title="struct quiche::h3::Connection">Connection</a>&gt;</h4></section></summary><div class="docblock"><p>Creates a new HTTP/3 connection using the provided QUIC connection.</p>
+<p>This will also initiate the HTTP/3 handshake with the peer by opening
+all control streams (including QPACK) and sending the local settings.</p>
+<p>On success the new connection is returned.</p>
+<p>The <a href="../enum.Error.html#variant.StreamLimit"><code>StreamLimit</code></a> error is returned when the HTTP/3 control stream
+cannot be created due to stream limits.</p>
+<p>The <a href="../enum.Error.html#variant.InternalError"><code>InternalError</code></a> error is returned when either the underlying QUIC
+connection is not in a suitable state, or the HTTP/3 control stream
+cannot be created due to flow control limits.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.send_request" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#1078-1116">source</a><h4 class="code-header">pub fn <a href="#method.send_request" class="fn">send_request</a>&lt;T: <a class="trait" href="trait.NameValue.html" title="trait quiche::h3::NameValue">NameValue</a>&gt;(
+    &amp;mut self,
+    conn: &amp;mut <a class="struct" href="../struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+    headers: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>,
+    fin: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::h3::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</h4></section></summary><div class="docblock"><p>Sends an HTTP/3 request.</p>
+<p>The request is encoded from the provided list of headers without a
+body, and sent on a newly allocated stream. To include a body,
+set <code>fin</code> as <code>false</code> and subsequently call <a href="struct.Connection.html#method.send_body"><code>send_body()</code></a> with the
+same <code>conn</code> and the <code>stream_id</code> returned from this method.</p>
+<p>On success the newly allocated stream ID is returned.</p>
+<p>The <a href="enum.Error.html#variant.StreamBlocked"><code>StreamBlocked</code></a> error is returned when the underlying QUIC stream
+doesn’t have enough capacity for the operation to complete. When this
+happens the application should retry the operation once the stream is
+reported as writable again.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.send_response" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#1131-1142">source</a><h4 class="code-header">pub fn <a href="#method.send_response" class="fn">send_response</a>&lt;T: <a class="trait" href="trait.NameValue.html" title="trait quiche::h3::NameValue">NameValue</a>&gt;(
+    &amp;mut self,
+    conn: &amp;mut <a class="struct" href="../struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+    stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    headers: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>,
+    fin: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::h3::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Sends an HTTP/3 response on the specified stream with default priority.</p>
+<p>This method sends the provided <code>headers</code> without a body. To include a
+body, set <code>fin</code> as <code>false</code> and subsequently call <a href="struct.Connection.html#method.send_body"><code>send_body()</code></a> with
+the same <code>conn</code> and <code>stream_id</code>.</p>
+<p>The <a href="enum.Error.html#variant.StreamBlocked"><code>StreamBlocked</code></a> error is returned when the underlying QUIC stream
+doesn’t have enough capacity for the operation to complete. When this
+happens the application should retry the operation once the stream is
+reported as writable again.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.send_response_with_priority" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#1158-1177">source</a><h4 class="code-header">pub fn <a href="#method.send_response_with_priority" class="fn">send_response_with_priority</a>&lt;T: <a class="trait" href="trait.NameValue.html" title="trait quiche::h3::NameValue">NameValue</a>&gt;(
+    &amp;mut self,
+    conn: &amp;mut <a class="struct" href="../struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+    stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    headers: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>,
+    priority: &amp;<a class="struct" href="struct.Priority.html" title="struct quiche::h3::Priority">Priority</a>,
+    fin: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::h3::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Sends an HTTP/3 response on the specified stream with specified
+priority.</p>
+<p>The <code>priority</code> parameter represents <a href="https://www.rfc-editor.org/rfc/rfc9218.html#section-4.">Extensible Priority</a>
+parameters. If the urgency is outside the range 0-7, it will be clamped
+to 7.</p>
+<p>The <a href="enum.Error.html#variant.StreamBlocked"><code>StreamBlocked</code></a> error is returned when the underlying QUIC stream
+doesn’t have enough capacity for the operation to complete. When this
+happens the application should retry the operation once the stream is
+reported as writable again.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.send_body" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#1293-1399">source</a><h4 class="code-header">pub fn <a href="#method.send_body" class="fn">send_body</a>(
+    &amp;mut self,
+    conn: &amp;mut <a class="struct" href="../struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+    stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    body: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
+    fin: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::h3::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</h4></section></summary><div class="docblock"><p>Sends an HTTP/3 body chunk on the given stream.</p>
+<p>On success the number of bytes written is returned, or <a href="enum.Error.html#variant.Done"><code>Done</code></a> if no
+bytes could be written (e.g. because the stream is blocked).</p>
+<p>Note that the number of written bytes returned can be lower than the
+length of the input buffer when the underlying QUIC stream doesn’t have
+enough capacity for the operation to complete.</p>
+<p>When a partial write happens (including when <a href="enum.Error.html#variant.Done"><code>Done</code></a> is returned) the
+application should retry the operation once the stream is reported as
+writable again.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.dgram_enabled_by_peer" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#1408-1411">source</a><h4 class="code-header">pub fn <a href="#method.dgram_enabled_by_peer" class="fn">dgram_enabled_by_peer</a>(&amp;self, conn: &amp;<a class="struct" href="../struct.Connection.html" title="struct quiche::Connection">Connection</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns whether the peer enabled HTTP/3 DATAGRAM frame support.</p>
+<p>Support is signalled by the peer’s SETTINGS, so this method always
+returns false until they have been processed using the <a href="struct.Connection.html#method.poll"><code>poll()</code></a>
+method.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.extended_connect_enabled_by_peer" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#1420-1422">source</a><h4 class="code-header">pub fn <a href="#method.extended_connect_enabled_by_peer" class="fn">extended_connect_enabled_by_peer</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns whether the peer enabled extended CONNECT support.</p>
+<p>Support is signalled by the peer’s SETTINGS, so this method always
+returns false until they have been processed using the <a href="struct.Connection.html#method.poll"><code>poll()</code></a>
+method.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.recv_body" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#1435-1493">source</a><h4 class="code-header">pub fn <a href="#method.recv_body" class="fn">recv_body</a>(
+    &amp;mut self,
+    conn: &amp;mut <a class="struct" href="../struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+    stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    out: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::h3::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</h4></section></summary><div class="docblock"><p>Reads request or response body data into the provided buffer.</p>
+<p>Applications should call this method whenever the <a href="struct.Connection.html#method.poll"><code>poll()</code></a> method
+returns a <a href="enum.Event.html#variant.Data"><code>Data</code></a> event.</p>
+<p>On success the amount of bytes read is returned, or <a href="enum.Error.html#variant.Done"><code>Done</code></a> if there
+is no data to read.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.send_priority_update_for_request" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#1509-1595">source</a><h4 class="code-header">pub fn <a href="#method.send_priority_update_for_request" class="fn">send_priority_update_for_request</a>(
+    &amp;mut self,
+    conn: &amp;mut <a class="struct" href="../struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+    stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    priority: &amp;<a class="struct" href="struct.Priority.html" title="struct quiche::h3::Priority">Priority</a>
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::h3::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Sends a PRIORITY_UPDATE frame on the control stream with specified
+request stream ID and priority.</p>
+<p>The <code>priority</code> parameter represents <a href="https://www.rfc-editor.org/rfc/rfc9218.html#section-4.">Extensible Priority</a>
+parameters. If the urgency is outside the range 0-7, it will be clamped
+to 7.</p>
+<p>The <a href="enum.Error.html#variant.StreamBlocked"><code>StreamBlocked</code></a> error is returned when the underlying QUIC stream
+doesn’t have enough capacity for the operation to complete. When this
+happens the application should retry the operation once the stream is
+reported as writable again.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.take_last_priority_update" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#1611-1619">source</a><h4 class="code-header">pub fn <a href="#method.take_last_priority_update" class="fn">take_last_priority_update</a>(
+    &amp;mut self,
+    prioritized_element_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::h3::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;&gt;</h4></section></summary><div class="docblock"><p>Take the last PRIORITY_UPDATE for a prioritized element ID.</p>
+<p>When the <a href="struct.Connection.html#method.poll"><code>poll()</code></a> method returns a <a href="enum.Event.html#variant.PriorityUpdate"><code>PriorityUpdate</code></a> event for a
+prioritized element, the event has triggered and will not rearm until
+applications call this method. It is recommended that applications defer
+taking the PRIORITY_UPDATE until after <a href="struct.Connection.html#method.poll"><code>poll()</code></a> returns <a href="enum.Error.html#variant.Done"><code>Done</code></a>.</p>
+<p>On success the Priority Field Value is returned, or <a href="enum.Error.html#variant.Done"><code>Done</code></a> if there is
+no PRIORITY_UPDATE to read (either because there is no value to take, or
+because the prioritized element does not exist).</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.poll" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#1658-1737">source</a><h4 class="code-header">pub fn <a href="#method.poll" class="fn">poll</a>(&amp;mut self, conn: &amp;mut <a class="struct" href="../struct.Connection.html" title="struct quiche::Connection">Connection</a>) -&gt; <a class="type" href="type.Result.html" title="type quiche::h3::Result">Result</a>&lt;(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="enum" href="enum.Event.html" title="enum quiche::h3::Event">Event</a>)&gt;</h4></section></summary><div class="docblock"><p>Processes HTTP/3 data received from the peer.</p>
+<p>On success it returns an <a href="enum.Event.html"><code>Event</code></a> and an ID, or <a href="enum.Error.html#variant.Done"><code>Done</code></a> when there are
+no events to report.</p>
+<p>Note that all events are edge-triggered, meaning that once reported they
+will not be reported again by calling this method again, until the event
+is re-armed.</p>
+<p>The events <a href="enum.Event.html#variant.Headers"><code>Headers</code></a>, <a href="enum.Event.html#variant.Data"><code>Data</code></a> and <a href="enum.Event.html#variant.Finished"><code>Finished</code></a> return a stream ID,
+which is used in methods <a href="struct.Connection.html#method.recv_body"><code>recv_body()</code></a>, <a href="struct.Connection.html#method.send_response"><code>send_response()</code></a> or
+<a href="struct.Connection.html#method.send_body"><code>send_body()</code></a>.</p>
+<p>The event <a href="enum.Event.html#variant.GoAWay"><code>GoAway</code></a> returns an ID that depends on the connection role.
+A client receives the largest processed stream ID. A server receives the
+the largest permitted push ID.</p>
+<p>The event <a href="enum.Event.html#variant.PriorityUpdate"><code>PriorityUpdate</code></a> only occurs at servers. It returns a
+prioritized element ID that is used in the method
+<a href="struct.Connection.html#method.take_last_priority_update"><code>take_last_priority_update()</code></a>, which rearms the event for that ID.</p>
+<p>If an error occurs while processing data, the connection is closed with
+the appropriate error code, using the transport’s <a href="../struct.Connection.html#method.close"><code>close()</code></a> method.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.send_goaway" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#1750-1805">source</a><h4 class="code-header">pub fn <a href="#method.send_goaway" class="fn">send_goaway</a>(&amp;mut self, conn: &amp;mut <a class="struct" href="../struct.Connection.html" title="struct quiche::Connection">Connection</a>, id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -&gt; <a class="type" href="type.Result.html" title="type quiche::h3::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Sends a GOAWAY frame to initiate graceful connection closure.</p>
+<p>When quiche is used in the server role, the <code>id</code> parameter is the stream
+ID of the highest processed request. This can be any valid ID between 0
+and 2^62-4. However, the ID cannot be increased. Failure to satisfy
+these conditions will return an error.</p>
+<p>This method does not close the QUIC connection. Applications are
+required to call <a href="../struct.Connection.html#method.close"><code>close()</code></a> themselves.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.peer_settings_raw" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#1810-1812">source</a><h4 class="code-header">pub fn <a href="#method.peer_settings_raw" class="fn">peer_settings_raw</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;[(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)]&gt;</h4></section></summary><div class="docblock"><p>Gets the raw settings from peer including unknown and reserved types.</p>
+<p>The order of settings is the same as received in the SETTINGS frame.</p>
+</div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Connection" class="impl"><a href="#impl-Freeze-for-Connection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Connection.html" title="struct quiche::h3::Connection">Connection</a></h3></section><section id="impl-RefUnwindSafe-for-Connection" class="impl"><a href="#impl-RefUnwindSafe-for-Connection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Connection.html" title="struct quiche::h3::Connection">Connection</a></h3></section><section id="impl-Send-for-Connection" class="impl"><a href="#impl-Send-for-Connection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Connection.html" title="struct quiche::h3::Connection">Connection</a></h3></section><section id="impl-Sync-for-Connection" class="impl"><a href="#impl-Sync-for-Connection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Connection.html" title="struct quiche::h3::Connection">Connection</a></h3></section><section id="impl-Unpin-for-Connection" class="impl"><a href="#impl-Unpin-for-Connection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Connection.html" title="struct quiche::h3::Connection">Connection</a></h3></section><section id="impl-UnwindSafe-for-Connection" class="impl"><a href="#impl-UnwindSafe-for-Connection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Connection.html" title="struct quiche::h3::Connection">Connection</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/h3/struct.Header.html b/quiche/h3/struct.Header.html
new file mode 100644
index 0000000..2db29d4
--- /dev/null
+++ b/quiche/h3/struct.Header.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An owned name-value pair representing a raw HTTP header."><title>Header in quiche::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">Header</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.new">new</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-Header">Clone</a></li><li><a href="#impl-Debug-for-Header">Debug</a></li><li><a href="#impl-Eq-for-Header">Eq</a></li><li><a href="#impl-NameValue-for-Header">NameValue</a></li><li><a href="#impl-PartialEq-for-Header">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-Header">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Header">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Header">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Header">Send</a></li><li><a href="#impl-Sync-for-Header">Sync</a></li><li><a href="#impl-Unpin-for-Header">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Header">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In quiche::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">quiche</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="struct" href="#">Header</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche/h3/mod.rs.html#692">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Header(<span class="comment">/* private fields */</span>);</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An owned name-value pair representing a raw HTTP header.</p>
+</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Header" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#711-718">source</a><a href="#impl-Header" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Header.html" title="struct quiche::h3::Header">Header</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#715-717">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(name: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], value: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; Self</h4></section></summary><div class="docblock"><p>Creates a new header.</p>
+<p>Both <code>name</code> and <code>value</code> will be cloned.</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Header" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#691">source</a><a href="#impl-Clone-for-Header" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Header.html" title="struct quiche::h3::Header">Header</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#691">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.Header.html" title="struct quiche::h3::Header">Header</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Header" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#701-709">source</a><a href="#impl-Debug-for-Header" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Header.html" title="struct quiche::h3::Header">Header</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#702-708">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-NameValue-for-Header" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#720-728">source</a><a href="#impl-NameValue-for-Header" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.NameValue.html" title="trait quiche::h3::NameValue">NameValue</a> for <a class="struct" href="struct.Header.html" title="struct quiche::h3::Header">Header</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.name" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#721-723">source</a><a href="#method.name" class="anchor">§</a><h4 class="code-header">fn <a href="trait.NameValue.html#tymethod.name" class="fn">name</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></summary><div class='docblock'>Returns the object’s name.</div></details><details class="toggle method-toggle" open><summary><section id="method.value" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#725-727">source</a><a href="#method.value" class="anchor">§</a><h4 class="code-header">fn <a href="trait.NameValue.html#tymethod.value" class="fn">value</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></summary><div class='docblock'>Returns the object’s value.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-Header" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#691">source</a><a href="#impl-PartialEq-for-Header" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.Header.html" title="struct quiche::h3::Header">Header</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#691">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.Header.html" title="struct quiche::h3::Header">Header</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-Header" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#691">source</a><a href="#impl-Eq-for-Header" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Header.html" title="struct quiche::h3::Header">Header</a></h3></section><section id="impl-StructuralPartialEq-for-Header" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#691">source</a><a href="#impl-StructuralPartialEq-for-Header" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.Header.html" title="struct quiche::h3::Header">Header</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Header" class="impl"><a href="#impl-Freeze-for-Header" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Header.html" title="struct quiche::h3::Header">Header</a></h3></section><section id="impl-RefUnwindSafe-for-Header" class="impl"><a href="#impl-RefUnwindSafe-for-Header" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Header.html" title="struct quiche::h3::Header">Header</a></h3></section><section id="impl-Send-for-Header" class="impl"><a href="#impl-Send-for-Header" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Header.html" title="struct quiche::h3::Header">Header</a></h3></section><section id="impl-Sync-for-Header" class="impl"><a href="#impl-Sync-for-Header" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Header.html" title="struct quiche::h3::Header">Header</a></h3></section><section id="impl-Unpin-for-Header" class="impl"><a href="#impl-Unpin-for-Header" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Header.html" title="struct quiche::h3::Header">Header</a></h3></section><section id="impl-UnwindSafe-for-Header" class="impl"><a href="#impl-UnwindSafe-for-Header" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Header.html" title="struct quiche::h3::Header">Header</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div><script type="text/json" id="notable-traits-data">{"&[u8]":"<h3>Notable traits for <code>&amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</div>"}</script></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/h3/struct.HeaderRef.html b/quiche/h3/struct.HeaderRef.html
new file mode 100644
index 0000000..a338b4f
--- /dev/null
+++ b/quiche/h3/struct.HeaderRef.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A non-owned name-value pair representing a raw HTTP header."><title>HeaderRef in quiche::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">HeaderRef</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.new">new</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-HeaderRef%3C'a%3E">Clone</a></li><li><a href="#impl-Debug-for-HeaderRef%3C'a%3E">Debug</a></li><li><a href="#impl-Eq-for-HeaderRef%3C'a%3E">Eq</a></li><li><a href="#impl-NameValue-for-HeaderRef%3C'a%3E">NameValue</a></li><li><a href="#impl-PartialEq-for-HeaderRef%3C'a%3E">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-HeaderRef%3C'a%3E">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-HeaderRef%3C'a%3E">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-HeaderRef%3C'a%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-HeaderRef%3C'a%3E">Send</a></li><li><a href="#impl-Sync-for-HeaderRef%3C'a%3E">Sync</a></li><li><a href="#impl-Unpin-for-HeaderRef%3C'a%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-HeaderRef%3C'a%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In quiche::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">quiche</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="struct" href="#">HeaderRef</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche/h3/mod.rs.html#732">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct HeaderRef&lt;'a&gt;(<span class="comment">/* private fields */</span>);</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A non-owned name-value pair representing a raw HTTP header.</p>
+</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-HeaderRef%3C'a%3E" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#734-739">source</a><a href="#impl-HeaderRef%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="struct" href="struct.HeaderRef.html" title="struct quiche::h3::HeaderRef">HeaderRef</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#736-738">source</a><h4 class="code-header">pub const fn <a href="#method.new" class="fn">new</a>(name: &amp;'a [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], value: &amp;'a [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; Self</h4></section></summary><div class="docblock"><p>Creates a new header.</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-HeaderRef%3C'a%3E" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#731">source</a><a href="#impl-Clone-for-HeaderRef%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.HeaderRef.html" title="struct quiche::h3::HeaderRef">HeaderRef</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#731">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.HeaderRef.html" title="struct quiche::h3::HeaderRef">HeaderRef</a>&lt;'a&gt;</h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-HeaderRef%3C'a%3E" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#731">source</a><a href="#impl-Debug-for-HeaderRef%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.HeaderRef.html" title="struct quiche::h3::HeaderRef">HeaderRef</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#731">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-NameValue-for-HeaderRef%3C'a%3E" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#741-749">source</a><a href="#impl-NameValue-for-HeaderRef%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="trait.NameValue.html" title="trait quiche::h3::NameValue">NameValue</a> for <a class="struct" href="struct.HeaderRef.html" title="struct quiche::h3::HeaderRef">HeaderRef</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.name" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#742-744">source</a><a href="#method.name" class="anchor">§</a><h4 class="code-header">fn <a href="trait.NameValue.html#tymethod.name" class="fn">name</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></summary><div class='docblock'>Returns the object’s name.</div></details><details class="toggle method-toggle" open><summary><section id="method.value" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#746-748">source</a><a href="#method.value" class="anchor">§</a><h4 class="code-header">fn <a href="trait.NameValue.html#tymethod.value" class="fn">value</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></summary><div class='docblock'>Returns the object’s value.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-HeaderRef%3C'a%3E" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#731">source</a><a href="#impl-PartialEq-for-HeaderRef%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.HeaderRef.html" title="struct quiche::h3::HeaderRef">HeaderRef</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#731">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.HeaderRef.html" title="struct quiche::h3::HeaderRef">HeaderRef</a>&lt;'a&gt;) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-HeaderRef%3C'a%3E" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#731">source</a><a href="#impl-Eq-for-HeaderRef%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.HeaderRef.html" title="struct quiche::h3::HeaderRef">HeaderRef</a>&lt;'a&gt;</h3></section><section id="impl-StructuralPartialEq-for-HeaderRef%3C'a%3E" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#731">source</a><a href="#impl-StructuralPartialEq-for-HeaderRef%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.HeaderRef.html" title="struct quiche::h3::HeaderRef">HeaderRef</a>&lt;'a&gt;</h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-HeaderRef%3C'a%3E" class="impl"><a href="#impl-Freeze-for-HeaderRef%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.HeaderRef.html" title="struct quiche::h3::HeaderRef">HeaderRef</a>&lt;'a&gt;</h3></section><section id="impl-RefUnwindSafe-for-HeaderRef%3C'a%3E" class="impl"><a href="#impl-RefUnwindSafe-for-HeaderRef%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.HeaderRef.html" title="struct quiche::h3::HeaderRef">HeaderRef</a>&lt;'a&gt;</h3></section><section id="impl-Send-for-HeaderRef%3C'a%3E" class="impl"><a href="#impl-Send-for-HeaderRef%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.HeaderRef.html" title="struct quiche::h3::HeaderRef">HeaderRef</a>&lt;'a&gt;</h3></section><section id="impl-Sync-for-HeaderRef%3C'a%3E" class="impl"><a href="#impl-Sync-for-HeaderRef%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.HeaderRef.html" title="struct quiche::h3::HeaderRef">HeaderRef</a>&lt;'a&gt;</h3></section><section id="impl-Unpin-for-HeaderRef%3C'a%3E" class="impl"><a href="#impl-Unpin-for-HeaderRef%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.HeaderRef.html" title="struct quiche::h3::HeaderRef">HeaderRef</a>&lt;'a&gt;</h3></section><section id="impl-UnwindSafe-for-HeaderRef%3C'a%3E" class="impl"><a href="#impl-UnwindSafe-for-HeaderRef%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.HeaderRef.html" title="struct quiche::h3::HeaderRef">HeaderRef</a>&lt;'a&gt;</h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div><script type="text/json" id="notable-traits-data">{"&[u8]":"<h3>Notable traits for <code>&amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</div>"}</script></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/h3/struct.Priority.html b/quiche/h3/struct.Priority.html
new file mode 100644
index 0000000..89244e3
--- /dev/null
+++ b/quiche/h3/struct.Priority.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Extensible Priorities parameters."><title>Priority in quiche::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">Priority</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.new">new</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Debug-for-Priority">Debug</a></li><li><a href="#impl-Default-for-Priority">Default</a></li><li><a href="#impl-Eq-for-Priority">Eq</a></li><li><a href="#impl-PartialEq-for-Priority">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-Priority">StructuralPartialEq</a></li><li><a href="#impl-TryFrom%3C%26%5Bu8%5D%3E-for-Priority">TryFrom&lt;&amp;[u8]&gt;</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Priority">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Priority">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Priority">Send</a></li><li><a href="#impl-Sync-for-Priority">Sync</a></li><li><a href="#impl-Unpin-for-Priority">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Priority">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In quiche::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">quiche</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="struct" href="#">Priority</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche/h3/mod.rs.html#812-815">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code><div class="code-attribute">#[repr(C)]</div>pub struct Priority { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Extensible Priorities parameters.</p>
+<p>The <code>TryFrom</code> trait supports constructing this object from the serialized
+Structured Fields Dictionary field value. I.e, use <code>TryFrom</code> to parse the
+value of a Priority header field or a PRIORITY_UPDATE frame. Using this
+trait requires the <code>sfv</code> feature to be enabled.</p>
+</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Priority" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#826-834">source</a><a href="#impl-Priority" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Priority.html" title="struct quiche::h3::Priority">Priority</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#828-833">source</a><h4 class="code-header">pub const fn <a href="#method.new" class="fn">new</a>(urgency: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>, incremental: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Creates a new Priority.</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Priority" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#810">source</a><a href="#impl-Debug-for-Priority" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Priority.html" title="struct quiche::h3::Priority">Priority</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#810">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-Priority" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#817-824">source</a><a href="#impl-Default-for-Priority" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.Priority.html" title="struct quiche::h3::Priority">Priority</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#818-823">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -&gt; Self</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-Priority" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#810">source</a><a href="#impl-PartialEq-for-Priority" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.Priority.html" title="struct quiche::h3::Priority">Priority</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#810">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.Priority.html" title="struct quiche::h3::Priority">Priority</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-TryFrom%3C%26%5Bu8%5D%3E-for-Priority" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#838-900">source</a><a href="#impl-TryFrom%3C%26%5Bu8%5D%3E-for-Priority" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt; for <a class="struct" href="struct.Priority.html" title="struct quiche::h3::Priority">Priority</a></h3><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>sfv</code></strong> only.</div></span></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#856-899">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Try to parse an Extensible Priority field value.</p>
+<p>The field value is expected to be a Structured Fields Dictionary; see
+<a href="https://www.rfc-editor.org/rfc/rfc9218.html#section-4.">Extensible Priorities</a>.</p>
+<p>If the <code>u</code> or <code>i</code> fields are contained with correct types, a constructed
+Priority object is returned. Note that urgency values outside of valid
+range (0 through 7) are clamped to 7.</p>
+<p>If the <code>u</code> or <code>i</code> fields are contained with the wrong types,
+Error::Done is returned.</p>
+<p>Omitted parameters will yield default values.</p>
+</div></details><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details></div></details><section id="impl-Eq-for-Priority" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#810">source</a><a href="#impl-Eq-for-Priority" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Priority.html" title="struct quiche::h3::Priority">Priority</a></h3></section><section id="impl-StructuralPartialEq-for-Priority" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#810">source</a><a href="#impl-StructuralPartialEq-for-Priority" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.Priority.html" title="struct quiche::h3::Priority">Priority</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Priority" class="impl"><a href="#impl-Freeze-for-Priority" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Priority.html" title="struct quiche::h3::Priority">Priority</a></h3></section><section id="impl-RefUnwindSafe-for-Priority" class="impl"><a href="#impl-RefUnwindSafe-for-Priority" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Priority.html" title="struct quiche::h3::Priority">Priority</a></h3></section><section id="impl-Send-for-Priority" class="impl"><a href="#impl-Send-for-Priority" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Priority.html" title="struct quiche::h3::Priority">Priority</a></h3></section><section id="impl-Sync-for-Priority" class="impl"><a href="#impl-Sync-for-Priority" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Priority.html" title="struct quiche::h3::Priority">Priority</a></h3></section><section id="impl-Unpin-for-Priority" class="impl"><a href="#impl-Unpin-for-Priority" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Priority.html" title="struct quiche::h3::Priority">Priority</a></h3></section><section id="impl-UnwindSafe-for-Priority" class="impl"><a href="#impl-UnwindSafe-for-Priority" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Priority.html" title="struct quiche::h3::Priority">Priority</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-2" class="associatedtype trait-impl"><a href="#associatedtype.Error-2" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from-1" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/h3/trait.NameValue.html b/quiche/h3/trait.NameValue.html
new file mode 100644
index 0000000..361fd46
--- /dev/null
+++ b/quiche/h3/trait.NameValue.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A trait for types with associated string name and value."><title>NameValue in quiche::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">NameValue</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.name">name</a></li><li><a href="#tymethod.value">value</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-NameValue-for-(N,+V)">(N, V)</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In quiche::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Trait <a href="../index.html">quiche</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="trait" href="#">NameValue</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche/h3/mod.rs.html#668-674">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub trait NameValue {
+    // Required methods
+    fn <a href="#tymethod.name" class="fn">name</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a>;
+<span class="item-spacer"></span>    fn <a href="#tymethod.value" class="fn">value</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a>;
+}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A trait for types with associated string name and value.</p>
+</div></details><h2 id="required-methods" class="section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.name" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#670">source</a><h4 class="code-header">fn <a href="#tymethod.name" class="fn">name</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns the object’s name.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.value" class="method"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#673">source</a><h4 class="code-header">fn <a href="#tymethod.value" class="fn">value</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns the object’s value.</p>
+</div></details></div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-NameValue-for-(N,+V)" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#676-688">source</a><a href="#impl-NameValue-for-(N,+V)" class="anchor">§</a><h3 class="code-header">impl&lt;N, V&gt; <a class="trait" href="trait.NameValue.html" title="trait quiche::h3::NameValue">NameValue</a> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(N, V)</a><div class="where">where
+    N: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;,
+    V: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;,</div></h3></section></summary><div class="impl-items"><section id="method.name" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#681-683">source</a><a href="#method.name" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.name" class="fn">name</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section><section id="method.value" class="method trait-impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#685-687">source</a><a href="#method.value" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.value" class="fn">value</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></div></details><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-NameValue-for-Header" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#720-728">source</a><a href="#impl-NameValue-for-Header" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.NameValue.html" title="trait quiche::h3::NameValue">NameValue</a> for <a class="struct" href="struct.Header.html" title="struct quiche::h3::Header">Header</a></h3></section><section id="impl-NameValue-for-HeaderRef%3C'a%3E" class="impl"><a class="src rightside" href="../../src/quiche/h3/mod.rs.html#741-749">source</a><a href="#impl-NameValue-for-HeaderRef%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="trait.NameValue.html" title="trait quiche::h3::NameValue">NameValue</a> for <a class="struct" href="struct.HeaderRef.html" title="struct quiche::h3::HeaderRef">HeaderRef</a>&lt;'a&gt;</h3></section></div><script src="../../trait.impl/quiche/h3/trait.NameValue.js" data-ignore-extern-crates="std" async></script><script type="text/json" id="notable-traits-data">{"&[u8]":"<h3>Notable traits for <code>&amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</div>"}</script></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/h3/type.Result.html b/quiche/h3/type.Result.html
new file mode 100644
index 0000000..948663a
--- /dev/null
+++ b/quiche/h3/type.Result.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A specialized `Result` type for quiche HTTP/3 operations."><title>Result in quiche::h3 - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">Result</a></h2><div class="sidebar-elems"><section><h3><a href="#aliased-type">Aliased type</a></h3><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Err">Err</a></li><li><a href="#variant.Ok">Ok</a></li></ul></section><h2><a href="index.html">In quiche::h3</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Type Alias <a href="../index.html">quiche</a>::<wbr><a href="index.html">h3</a>::<wbr><a class="type" href="#">Result</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche/h3/mod.rs.html#352">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub type Result&lt;T&gt; = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, <a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a>&gt;;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A specialized <a href="https://doc.rust-lang.org/std/result/enum.Result.html"><code>Result</code></a> type for quiche HTTP/3 operations.</p>
+<p>This type is used throughout quiche’s HTTP/3 public API for any operation
+that can produce an error.</p>
+</div></details><h2 id="aliased-type" class="section-header">Aliased Type<a href="#aliased-type" class="anchor">§</a></h2><pre class="rust item-decl"><code>enum Result&lt;T&gt; {
+    Ok(T),
+    Err(<a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a>),
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Ok" class="variant"><a href="#variant.Ok" class="anchor">§</a><span class="since rightside" title="Stable since Rust version 1.0.0">1.0.0</span><h3 class="code-header">Ok(T)</h3></section><div class="docblock"><p>Contains the success value</p>
+</div><section id="variant.Err" class="variant"><a href="#variant.Err" class="anchor">§</a><span class="since rightside" title="Stable since Rust version 1.0.0">1.0.0</span><h3 class="code-header">Err(<a class="enum" href="enum.Error.html" title="enum quiche::h3::Error">Error</a>)</h3></section><div class="docblock"><p>Contains the error value</p>
+</div></div><script src="../../type.impl/core/result/enum.Result.js" data-self-path="quiche::h3::Result" async></script></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/index.html b/quiche/index.html
new file mode 100644
index 0000000..473b571
--- /dev/null
+++ b/quiche/index.html
@@ -0,0 +1,214 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="🥧 Savoury implementation of the QUIC transport protocol and HTTP/3."><title>quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="../crates.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><div class="sidebar-elems"><ul class="block"><li><a id="all-types" href="all.html">All Items</a></li></ul><section><ul class="block"><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#constants">Constants</a></li><li><a href="#functions">Functions</a></li><li><a href="#types">Type Aliases</a></li></ul></section></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Crate <a class="mod" href="#">quiche</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#27-17170">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>🥧 Savoury implementation of the QUIC transport protocol and HTTP/3.</p>
+<p><a href="https://github.com/cloudflare/quiche/">quiche</a> is an implementation of the QUIC transport protocol and HTTP/3 as
+specified by the <a href="https://quicwg.org/">IETF</a>. It provides a low level API for processing QUIC
+packets and handling connection state. The application is responsible for
+providing I/O (e.g. sockets handling) as well as an event loop with support
+for timers.</p>
+<h3 id="configuring-connections"><a class="doc-anchor" href="#configuring-connections">§</a>Configuring connections</h3>
+<p>The first step in establishing a QUIC connection using quiche is creating a
+<a href="https://docs.quic.tech/quiche/struct.Config.html"><code>Config</code></a> object:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>config = quiche::Config::new(quiche::PROTOCOL_VERSION)<span class="question-mark">?</span>;
+config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"example-proto"</span>]);
+
+<span class="comment">// Additional configuration specific to application and use case...</span></code></pre></div>
+<p>The <a href="https://docs.quic.tech/quiche/struct.Config.html"><code>Config</code></a> object controls important aspects of the QUIC connection such
+as QUIC version, ALPN IDs, flow control, congestion control, idle timeout
+and other properties or features.</p>
+<p>QUIC is a general-purpose transport protocol and there are several
+configuration properties where there is no reasonable default value. For
+example, the permitted number of concurrent streams of any particular type
+is dependent on the application running over QUIC, and other use-case
+specific concerns.</p>
+<p>quiche defaults several properties to zero, applications most likely need
+to set these to something else to satisfy their needs using the following:</p>
+<ul>
+<li><a href="https://docs.rs/quiche/latest/quiche/struct.Config.html#method.set_initial_max_streams_bidi"><code>set_initial_max_streams_bidi()</code></a></li>
+<li><a href="https://docs.rs/quiche/latest/quiche/struct.Config.html#method.set_initial_max_streams_uni"><code>set_initial_max_streams_uni()</code></a></li>
+<li><a href="https://docs.rs/quiche/latest/quiche/struct.Config.html#method.set_initial_max_data"><code>set_initial_max_data()</code></a></li>
+<li><a href="https://docs.rs/quiche/latest/quiche/struct.Config.html#method.set_initial_max_stream_data_bidi_local"><code>set_initial_max_stream_data_bidi_local()</code></a></li>
+<li><a href="https://docs.rs/quiche/latest/quiche/struct.Config.html#method.set_initial_max_stream_data_bidi_remote"><code>set_initial_max_stream_data_bidi_remote()</code></a></li>
+<li><a href="https://docs.rs/quiche/latest/quiche/struct.Config.html#method.set_initial_max_stream_data_uni"><code>set_initial_max_stream_data_uni()</code></a></li>
+</ul>
+<p><a href="https://docs.quic.tech/quiche/struct.Config.html"><code>Config</code></a> also holds TLS configuration. This can be changed by mutators on
+the an existing object, or by constructing a TLS context manually and
+creating a configuration using <a href="https://docs.quic.tech/quiche/struct.Config.html#method.with_boring_ssl_ctx_builder"><code>with_boring_ssl_ctx_builder()</code></a>.</p>
+<p>A configuration object can be shared among multiple connections.</p>
+<h4 id="connection-setup"><a class="doc-anchor" href="#connection-setup">§</a>Connection setup</h4>
+<p>On the client-side the <a href="fn.connect.html"><code>connect()</code></a> utility function can be used to create
+a new connection, while <a href="fn.accept.html"><code>accept()</code></a> is for servers:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="comment">// Client connection.
+</span><span class="kw">let </span>conn =
+    quiche::connect(<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>server_name), <span class="kw-2">&amp;</span>scid, local, peer, <span class="kw-2">&amp;mut </span>config)<span class="question-mark">?</span>;
+
+<span class="comment">// Server connection.
+</span><span class="kw">let </span>conn = quiche::accept(<span class="kw-2">&amp;</span>scid, <span class="prelude-val">None</span>, local, peer, <span class="kw-2">&amp;mut </span>config)<span class="question-mark">?</span>;</code></pre></div>
+<p>In both cases, the application is responsible for generating a new source
+connection ID that will be used to identify the new connection.</p>
+<p>The application also need to pass the address of the remote peer of the
+connection: in the case of a client that would be the address of the server
+it is trying to connect to, and for a server that is the address of the
+client that initiated the connection.</p>
+<h3 id="handling-incoming-packets"><a class="doc-anchor" href="#handling-incoming-packets">§</a>Handling incoming packets</h3>
+<p>Using the connection’s <a href="struct.Connection.html#method.recv"><code>recv()</code></a> method the application can process
+incoming packets that belong to that connection from the network:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>to = socket.local_addr().unwrap();
+
+<span class="kw">loop </span>{
+    <span class="kw">let </span>(read, from) = socket.recv_from(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+    <span class="kw">let </span>recv_info = quiche::RecvInfo { from, to };
+
+    <span class="kw">let </span>read = <span class="kw">match </span>conn.recv(<span class="kw-2">&amp;mut </span>buf[..read], recv_info) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+        <span class="prelude-val">Err</span>(quiche::Error::Done) =&gt; {
+            <span class="comment">// Done reading.
+            </span><span class="kw">break</span>;
+        },
+
+        <span class="prelude-val">Err</span>(e) =&gt; {
+            <span class="comment">// An error occurred, handle it.
+            </span><span class="kw">break</span>;
+        },
+    };
+}</code></pre></div>
+<p>The application has to pass a <a href="struct.RecvInfo.html"><code>RecvInfo</code></a> structure in order to provide
+additional information about the received packet (such as the address it
+was received from).</p>
+<h3 id="generating-outgoing-packets"><a class="doc-anchor" href="#generating-outgoing-packets">§</a>Generating outgoing packets</h3>
+<p>Outgoing packet are generated using the connection’s <a href="struct.Connection.html#method.send"><code>send()</code></a> method
+instead:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">loop </span>{
+    <span class="kw">let </span>(write, send_info) = <span class="kw">match </span>conn.send(<span class="kw-2">&amp;mut </span>out) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+        <span class="prelude-val">Err</span>(quiche::Error::Done) =&gt; {
+            <span class="comment">// Done writing.
+            </span><span class="kw">break</span>;
+        },
+
+        <span class="prelude-val">Err</span>(e) =&gt; {
+            <span class="comment">// An error occurred, handle it.
+            </span><span class="kw">break</span>;
+        },
+    };
+
+    socket.send_to(<span class="kw-2">&amp;</span>out[..write], <span class="kw-2">&amp;</span>send_info.to).unwrap();
+}</code></pre></div>
+<p>The application will be provided with a <a href="struct.SendInfo.html"><code>SendInfo</code></a> structure providing
+additional information about the newly created packet (such as the address
+the packet should be sent to).</p>
+<p>When packets are sent, the application is responsible for maintaining a
+timer to react to time-based connection events. The timer expiration can be
+obtained using the connection’s <a href="struct.Connection.html#method.timeout"><code>timeout()</code></a> method.</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>timeout = conn.timeout();</code></pre></div>
+<p>The application is responsible for providing a timer implementation, which
+can be specific to the operating system or networking framework used. When
+a timer expires, the connection’s <a href="struct.Connection.html#method.on_timeout"><code>on_timeout()</code></a> method should be called,
+after which additional packets might need to be sent on the network:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="comment">// Timeout expired, handle it.
+</span>conn.on_timeout();
+
+<span class="comment">// Send more packets as needed after timeout.
+</span><span class="kw">loop </span>{
+    <span class="kw">let </span>(write, send_info) = <span class="kw">match </span>conn.send(<span class="kw-2">&amp;mut </span>out) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+        <span class="prelude-val">Err</span>(quiche::Error::Done) =&gt; {
+            <span class="comment">// Done writing.
+            </span><span class="kw">break</span>;
+        },
+
+        <span class="prelude-val">Err</span>(e) =&gt; {
+            <span class="comment">// An error occurred, handle it.
+            </span><span class="kw">break</span>;
+        },
+    };
+
+    socket.send_to(<span class="kw-2">&amp;</span>out[..write], <span class="kw-2">&amp;</span>send_info.to).unwrap();
+}</code></pre></div>
+<h4 id="pacing"><a class="doc-anchor" href="#pacing">§</a>Pacing</h4>
+<p>It is recommended that applications <a href="https://datatracker.ietf.org/doc/html/rfc9002#section-7.7">pace</a> sending of outgoing packets to
+avoid creating packet bursts that could cause short-term congestion and
+losses in the network.</p>
+<p>quiche exposes pacing hints for outgoing packets through the <a href="struct.SendInfo.html#structfield.at"><code>at</code></a> field
+of the <a href="struct.SendInfo.html"><code>SendInfo</code></a> structure that is returned by the <a href="struct.Connection.html#method.send"><code>send()</code></a> method.
+This field represents the time when a specific packet should be sent into
+the network.</p>
+<p>Applications can use these hints by artificially delaying the sending of
+packets through platform-specific mechanisms (such as the <a href="https://man7.org/linux/man-pages/man8/tc-etf.8.html"><code>SO_TXTIME</code></a>
+socket option on Linux), or custom methods (for example by using user-space
+timers).</p>
+<h3 id="sending-and-receiving-stream-data"><a class="doc-anchor" href="#sending-and-receiving-stream-data">§</a>Sending and receiving stream data</h3>
+<p>After some back and forth, the connection will complete its handshake and
+will be ready for sending or receiving application data.</p>
+<p>Data can be sent on a stream by using the <a href="struct.Connection.html#method.stream_send"><code>stream_send()</code></a> method:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">if </span>conn.is_established() {
+    <span class="comment">// Handshake completed, send some data on stream 0.
+    </span>conn.stream_send(<span class="number">0</span>, <span class="string">b"hello"</span>, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
+}</code></pre></div>
+<p>The application can check whether there are any readable streams by using
+the connection’s <a href="struct.Connection.html#method.readable"><code>readable()</code></a> method, which returns an iterator over all
+the streams that have outstanding data to read.</p>
+<p>The <a href="struct.Connection.html#method.stream_recv"><code>stream_recv()</code></a> method can then be used to retrieve the application
+data from the readable stream:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">if </span>conn.is_established() {
+    <span class="comment">// Iterate over readable streams.
+    </span><span class="kw">for </span>stream_id <span class="kw">in </span>conn.readable() {
+        <span class="comment">// Stream is readable, read until there's no more data.
+        </span><span class="kw">while let </span><span class="prelude-val">Ok</span>((read, fin)) = conn.stream_recv(stream_id, <span class="kw-2">&amp;mut </span>buf) {
+            <span class="macro">println!</span>(<span class="string">"Got {} bytes on stream {}"</span>, read, stream_id);
+        }
+    }
+}</code></pre></div>
+<h3 id="http3"><a class="doc-anchor" href="#http3">§</a>HTTP/3</h3>
+<p>The quiche <a href="h3/index.html">HTTP/3 module</a> provides a high level API for sending and
+receiving HTTP requests and responses on top of the QUIC transport protocol.</p>
+<h3 id="congestion-control"><a class="doc-anchor" href="#congestion-control">§</a>Congestion Control</h3>
+<p>The quiche library provides a high-level API for configuring which
+congestion control algorithm to use throughout the QUIC connection.</p>
+<p>When a QUIC connection is created, the application can optionally choose
+which CC algorithm to use. See <a href="enum.CongestionControlAlgorithm.html"><code>CongestionControlAlgorithm</code></a> for currently
+available congestion control algorithms.</p>
+<p>For example:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>config = quiche::Config::new(quiche::PROTOCOL_VERSION).unwrap();
+config.set_cc_algorithm(quiche::CongestionControlAlgorithm::Reno);</code></pre></div>
+<p>Alternatively, you can configure the congestion control algorithm to use
+by its name.</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>config = quiche::Config::new(quiche::PROTOCOL_VERSION).unwrap();
+config.set_cc_algorithm_name(<span class="string">"reno"</span>).unwrap();</code></pre></div>
+<p>Note that the CC algorithm should be configured before calling <a href="fn.connect.html"><code>connect()</code></a>
+or <a href="fn.accept.html"><code>accept()</code></a>. Otherwise the connection will use a default CC algorithm.</p>
+<h3 id="feature-flags"><a class="doc-anchor" href="#feature-flags">§</a>Feature flags</h3>
+<p>quiche defines a number of <a href="https://doc.rust-lang.org/cargo/reference/manifest.html#the-features-section">feature flags</a> to reduce the amount of compiled
+code and dependencies:</p>
+<ul>
+<li>
+<p><code>boringssl-vendored</code> (default): Build the vendored BoringSSL library.</p>
+</li>
+<li>
+<p><code>boringssl-boring-crate</code>: Use the BoringSSL library provided by the
+<a href="https://crates.io/crates/boring">boring</a> crate. It takes precedence over <code>boringssl-vendored</code> if both
+features are enabled.</p>
+</li>
+<li>
+<p><code>pkg-config-meta</code>: Generate pkg-config metadata file for libquiche.</p>
+</li>
+<li>
+<p><code>ffi</code>: Build and expose the FFI API.</p>
+</li>
+<li>
+<p><code>qlog</code>: Enable support for the <a href="https://datatracker.ietf.org/doc/html/draft-ietf-quic-qlog-main-schema">qlog</a> logging format.</p>
+</li>
+</ul>
+</div></details><h2 id="modules" class="section-header">Modules<a href="#modules" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="mod" href="h3/index.html" title="mod quiche::h3">h3</a></div><div class="desc docblock-short">HTTP/3 wire protocol and QPACK implementation.</div></li></ul><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.Config.html" title="struct quiche::Config">Config</a></div><div class="desc docblock-short">Stores configuration shared between multiple connections.</div></li><li><div class="item-name"><a class="struct" href="struct.Connection.html" title="struct quiche::Connection">Connection</a></div><div class="desc docblock-short">A QUIC connection.</div></li><li><div class="item-name"><a class="struct" href="struct.ConnectionError.html" title="struct quiche::ConnectionError">ConnectionError</a></div><div class="desc docblock-short">Represents information carried by <code>CONNECTION_CLOSE</code> frames.</div></li><li><div class="item-name"><a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a></div><div class="desc docblock-short">A QUIC connection ID.</div></li><li><div class="item-name"><a class="struct" href="struct.Header.html" title="struct quiche::Header">Header</a></div><div class="desc docblock-short">A QUIC packet’s header.</div></li><li><div class="item-name"><a class="struct" href="struct.PathStats.html" title="struct quiche::PathStats">PathStats</a></div><div class="desc docblock-short">Statistics about the path of a connection.</div></li><li><div class="item-name"><a class="struct" href="struct.RecvInfo.html" title="struct quiche::RecvInfo">RecvInfo</a></div><div class="desc docblock-short">Ancillary information about incoming packets.</div></li><li><div class="item-name"><a class="struct" href="struct.SendInfo.html" title="struct quiche::SendInfo">SendInfo</a></div><div class="desc docblock-short">Ancillary information about outgoing packets.</div></li><li><div class="item-name"><a class="struct" href="struct.SocketAddrIter.html" title="struct quiche::SocketAddrIter">SocketAddrIter</a></div><div class="desc docblock-short">An iterator over SocketAddr.</div></li><li><div class="item-name"><a class="struct" href="struct.Stats.html" title="struct quiche::Stats">Stats</a></div><div class="desc docblock-short">Statistics about the connection.</div></li><li><div class="item-name"><a class="struct" href="struct.StreamIter.html" title="struct quiche::StreamIter">StreamIter</a></div><div class="desc docblock-short">An iterator over QUIC streams.</div></li><li><div class="item-name"><a class="struct" href="struct.TransportParams.html" title="struct quiche::TransportParams">TransportParams</a></div><div class="desc docblock-short">QUIC Transport Parameters</div></li></ul><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="enum" href="enum.CongestionControlAlgorithm.html" title="enum quiche::CongestionControlAlgorithm">CongestionControlAlgorithm</a></div><div class="desc docblock-short">Available congestion control algorithms.</div></li><li><div class="item-name"><a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a></div><div class="desc docblock-short">A QUIC error.</div></li><li><div class="item-name"><a class="enum" href="enum.PathEvent.html" title="enum quiche::PathEvent">PathEvent</a></div><div class="desc docblock-short">A path-specific event.</div></li><li><div class="item-name"><a class="enum" href="enum.QlogLevel.html" title="enum quiche::QlogLevel">QlogLevel</a><span class="stab portability" title="Available on crate feature `qlog` only"><code>qlog</code></span></div><div class="desc docblock-short">Qlog logging level.</div></li><li><div class="item-name"><a class="enum" href="enum.Shutdown.html" title="enum quiche::Shutdown">Shutdown</a></div><div class="desc docblock-short">The side of the stream to be shut down.</div></li><li><div class="item-name"><a class="enum" href="enum.Type.html" title="enum quiche::Type">Type</a></div><div class="desc docblock-short">QUIC packet type.</div></li><li><div class="item-name"><a class="enum" href="enum.WireErrorCode.html" title="enum quiche::WireErrorCode">WireErrorCode</a></div><div class="desc docblock-short">QUIC error codes sent on the wire.</div></li></ul><h2 id="constants" class="section-header">Constants<a href="#constants" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="constant" href="constant.MAX_CONN_ID_LEN.html" title="constant quiche::MAX_CONN_ID_LEN">MAX_CONN_ID_LEN</a></div><div class="desc docblock-short">The maximum length of a connection ID.</div></li><li><div class="item-name"><a class="constant" href="constant.MIN_CLIENT_INITIAL_LEN.html" title="constant quiche::MIN_CLIENT_INITIAL_LEN">MIN_CLIENT_INITIAL_LEN</a></div><div class="desc docblock-short">The minimum length of Initial packets sent by a client.</div></li><li><div class="item-name"><a class="constant" href="constant.PROTOCOL_VERSION.html" title="constant quiche::PROTOCOL_VERSION">PROTOCOL_VERSION</a></div><div class="desc docblock-short">The current QUIC wire version.</div></li></ul><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="fn" href="fn.accept.html" title="fn quiche::accept">accept</a></div><div class="desc docblock-short">Creates a new server-side connection.</div></li><li><div class="item-name"><a class="fn" href="fn.connect.html" title="fn quiche::connect">connect</a></div><div class="desc docblock-short">Creates a new client-side connection.</div></li><li><div class="item-name"><a class="fn" href="fn.negotiate_version.html" title="fn quiche::negotiate_version">negotiate_version</a></div><div class="desc docblock-short">Writes a version negotiation packet.</div></li><li><div class="item-name"><a class="fn" href="fn.retry.html" title="fn quiche::retry">retry</a></div><div class="desc docblock-short">Writes a stateless retry packet.</div></li><li><div class="item-name"><a class="fn" href="fn.version_is_supported.html" title="fn quiche::version_is_supported">version_is_supported</a></div><div class="desc docblock-short">Returns true if the given protocol version is supported.</div></li></ul><h2 id="types" class="section-header">Type Aliases<a href="#types" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="type" href="type.Result.html" title="type quiche::Result">Result</a></div><div class="desc docblock-short">A specialized <a href="https://doc.rust-lang.org/std/result/enum.Result.html"><code>Result</code></a> type for quiche operations.</div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/packet/enum.Type.html b/quiche/packet/enum.Type.html
new file mode 100644
index 0000000..69d55c2
--- /dev/null
+++ b/quiche/packet/enum.Type.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../quiche/enum.Type.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../quiche/enum.Type.html">../../quiche/enum.Type.html</a>...</p>
+    <script>location.replace("../../quiche/enum.Type.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/quiche/packet/struct.ConnectionId.html b/quiche/packet/struct.ConnectionId.html
new file mode 100644
index 0000000..ce60496
--- /dev/null
+++ b/quiche/packet/struct.ConnectionId.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../quiche/struct.ConnectionId.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../quiche/struct.ConnectionId.html">../../quiche/struct.ConnectionId.html</a>...</p>
+    <script>location.replace("../../quiche/struct.ConnectionId.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/quiche/packet/struct.Header.html b/quiche/packet/struct.Header.html
new file mode 100644
index 0000000..3dff0c1
--- /dev/null
+++ b/quiche/packet/struct.Header.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../quiche/struct.Header.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../quiche/struct.Header.html">../../quiche/struct.Header.html</a>...</p>
+    <script>location.replace("../../quiche/struct.Header.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/quiche/path/enum.PathEvent.html b/quiche/path/enum.PathEvent.html
new file mode 100644
index 0000000..69f07fa
--- /dev/null
+++ b/quiche/path/enum.PathEvent.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../quiche/enum.PathEvent.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../quiche/enum.PathEvent.html">../../quiche/enum.PathEvent.html</a>...</p>
+    <script>location.replace("../../quiche/enum.PathEvent.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/quiche/path/struct.PathStats.html b/quiche/path/struct.PathStats.html
new file mode 100644
index 0000000..20648b6
--- /dev/null
+++ b/quiche/path/struct.PathStats.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../quiche/struct.PathStats.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../quiche/struct.PathStats.html">../../quiche/struct.PathStats.html</a>...</p>
+    <script>location.replace("../../quiche/struct.PathStats.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/quiche/path/struct.SocketAddrIter.html b/quiche/path/struct.SocketAddrIter.html
new file mode 100644
index 0000000..39fca73
--- /dev/null
+++ b/quiche/path/struct.SocketAddrIter.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../quiche/struct.SocketAddrIter.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../quiche/struct.SocketAddrIter.html">../../quiche/struct.SocketAddrIter.html</a>...</p>
+    <script>location.replace("../../quiche/struct.SocketAddrIter.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/quiche/recovery/enum.CongestionControlAlgorithm.html b/quiche/recovery/enum.CongestionControlAlgorithm.html
new file mode 100644
index 0000000..2fedae0
--- /dev/null
+++ b/quiche/recovery/enum.CongestionControlAlgorithm.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../quiche/enum.CongestionControlAlgorithm.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../quiche/enum.CongestionControlAlgorithm.html">../../quiche/enum.CongestionControlAlgorithm.html</a>...</p>
+    <script>location.replace("../../quiche/enum.CongestionControlAlgorithm.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/quiche/sidebar-items.js b/quiche/sidebar-items.js
new file mode 100644
index 0000000..eece19d
--- /dev/null
+++ b/quiche/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"constant":["MAX_CONN_ID_LEN","MIN_CLIENT_INITIAL_LEN","PROTOCOL_VERSION"],"enum":["CongestionControlAlgorithm","Error","PathEvent","QlogLevel","Shutdown","Type","WireErrorCode"],"fn":["accept","connect","negotiate_version","retry","version_is_supported"],"mod":["h3"],"struct":["Config","Connection","ConnectionError","ConnectionId","Header","PathStats","RecvInfo","SendInfo","SocketAddrIter","Stats","StreamIter","TransportParams"],"type":["Result"]};
\ No newline at end of file
diff --git a/quiche/stream/struct.StreamIter.html b/quiche/stream/struct.StreamIter.html
new file mode 100644
index 0000000..7bb59a2
--- /dev/null
+++ b/quiche/stream/struct.StreamIter.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../quiche/struct.StreamIter.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../quiche/struct.StreamIter.html">../../quiche/struct.StreamIter.html</a>...</p>
+    <script>location.replace("../../quiche/struct.StreamIter.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/quiche/struct.Config.html b/quiche/struct.Config.html
new file mode 100644
index 0000000..ba7f18c
--- /dev/null
+++ b/quiche/struct.Config.html
@@ -0,0 +1,212 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Stores configuration shared between multiple connections."><title>Config in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">Config</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.discover_pmtu">discover_pmtu</a></li><li><a href="#method.enable_dgram">enable_dgram</a></li><li><a href="#method.enable_early_data">enable_early_data</a></li><li><a href="#method.enable_hystart">enable_hystart</a></li><li><a href="#method.enable_pacing">enable_pacing</a></li><li><a href="#method.grease">grease</a></li><li><a href="#method.load_cert_chain_from_pem_file">load_cert_chain_from_pem_file</a></li><li><a href="#method.load_priv_key_from_pem_file">load_priv_key_from_pem_file</a></li><li><a href="#method.load_verify_locations_from_directory">load_verify_locations_from_directory</a></li><li><a href="#method.load_verify_locations_from_file">load_verify_locations_from_file</a></li><li><a href="#method.log_keys">log_keys</a></li><li><a href="#method.new">new</a></li><li><a href="#method.set_ack_delay_exponent">set_ack_delay_exponent</a></li><li><a href="#method.set_active_connection_id_limit">set_active_connection_id_limit</a></li><li><a href="#method.set_application_protos">set_application_protos</a></li><li><a href="#method.set_application_protos_wire_format">set_application_protos_wire_format</a></li><li><a href="#method.set_cc_algorithm">set_cc_algorithm</a></li><li><a href="#method.set_cc_algorithm_name">set_cc_algorithm_name</a></li><li><a href="#method.set_disable_active_migration">set_disable_active_migration</a></li><li><a href="#method.set_disable_dcid_reuse">set_disable_dcid_reuse</a></li><li><a href="#method.set_initial_congestion_window_packets">set_initial_congestion_window_packets</a></li><li><a href="#method.set_initial_max_data">set_initial_max_data</a></li><li><a href="#method.set_initial_max_stream_data_bidi_local">set_initial_max_stream_data_bidi_local</a></li><li><a href="#method.set_initial_max_stream_data_bidi_remote">set_initial_max_stream_data_bidi_remote</a></li><li><a href="#method.set_initial_max_stream_data_uni">set_initial_max_stream_data_uni</a></li><li><a href="#method.set_initial_max_streams_bidi">set_initial_max_streams_bidi</a></li><li><a href="#method.set_initial_max_streams_uni">set_initial_max_streams_uni</a></li><li><a href="#method.set_max_ack_delay">set_max_ack_delay</a></li><li><a href="#method.set_max_connection_window">set_max_connection_window</a></li><li><a href="#method.set_max_idle_timeout">set_max_idle_timeout</a></li><li><a href="#method.set_max_pacing_rate">set_max_pacing_rate</a></li><li><a href="#method.set_max_recv_udp_payload_size">set_max_recv_udp_payload_size</a></li><li><a href="#method.set_max_send_udp_payload_size">set_max_send_udp_payload_size</a></li><li><a href="#method.set_max_stream_window">set_max_stream_window</a></li><li><a href="#method.set_path_challenge_recv_max_queue_len">set_path_challenge_recv_max_queue_len</a></li><li><a href="#method.set_stateless_reset_token">set_stateless_reset_token</a></li><li><a href="#method.set_ticket_key">set_ticket_key</a></li><li><a href="#method.verify_peer">verify_peer</a></li><li><a href="#method.with_boring_ssl_ctx_builder">with_boring_ssl_ctx_builder</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Config">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Config">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Config">Send</a></li><li><a href="#impl-Sync-for-Config">Sync</a></li><li><a href="#impl-Unpin-for-Config">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Config">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">quiche</a>::<wbr><a class="struct" href="#">Config</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#781-813">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Config { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Stores configuration shared between multiple connections.</p>
+</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Config" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#820-1341">source</a><a href="#impl-Config" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Config.html" title="struct quiche::Config">Config</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#829-831">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(version: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="struct" href="struct.Config.html" title="struct quiche::Config">Config</a>&gt;</h4></section></summary><div class="docblock"><p>Creates a config object with the given version.</p>
+<h6 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>config = quiche::Config::new(quiche::PROTOCOL_VERSION)<span class="question-mark">?</span>;</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_boring_ssl_ctx_builder" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#842-846">source</a><h4 class="code-header">pub fn <a href="#method.with_boring_ssl_ctx_builder" class="fn">with_boring_ssl_ctx_builder</a>(
+    version: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
+    tls_ctx_builder: SslContextBuilder
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="struct" href="struct.Config.html" title="struct quiche::Config">Config</a>&gt;</h4></section><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>boringssl-boring-crate</code></strong> only.</div></span></summary><div class="docblock"><p>Creates a config object with the given version and
+<a href="https://docs.rs/boring/latest/boring/ssl/struct.SslContextBuilder.html"><code>SslContextBuilder</code></a>.</p>
+<p>This is useful for applications that wish to manually configure
+<a href="https://docs.rs/boring/latest/boring/ssl/struct.SslContextBuilder.html"><code>SslContextBuilder</code></a>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.load_cert_chain_from_pem_file" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#894-896">source</a><h4 class="code-header">pub fn <a href="#method.load_cert_chain_from_pem_file" class="fn">load_cert_chain_from_pem_file</a>(&amp;mut self, file: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Configures the given certificate chain.</p>
+<p>The content of <code>file</code> is parsed as a PEM-encoded leaf certificate,
+followed by optional intermediate certificates.</p>
+<h6 id="examples-1"><a class="doc-anchor" href="#examples-1">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code>config.load_cert_chain_from_pem_file(<span class="string">"/path/to/cert.pem"</span>)<span class="question-mark">?</span>;</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.load_priv_key_from_pem_file" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#909-911">source</a><h4 class="code-header">pub fn <a href="#method.load_priv_key_from_pem_file" class="fn">load_priv_key_from_pem_file</a>(&amp;mut self, file: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Configures the given private key.</p>
+<p>The content of <code>file</code> is parsed as a PEM-encoded private key.</p>
+<h6 id="examples-2"><a class="doc-anchor" href="#examples-2">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code>config.load_priv_key_from_pem_file(<span class="string">"/path/to/key.pem"</span>)<span class="question-mark">?</span>;</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.load_verify_locations_from_file" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#925-927">source</a><h4 class="code-header">pub fn <a href="#method.load_verify_locations_from_file" class="fn">load_verify_locations_from_file</a>(&amp;mut self, file: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Specifies a file where trusted CA certificates are stored for the
+purposes of certificate verification.</p>
+<p>The content of <code>file</code> is parsed as a PEM-encoded certificate chain.</p>
+<h6 id="examples-3"><a class="doc-anchor" href="#examples-3">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code>config.load_verify_locations_from_file(<span class="string">"/path/to/cert.pem"</span>)<span class="question-mark">?</span>;</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.load_verify_locations_from_directory" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#941-945">source</a><h4 class="code-header">pub fn <a href="#method.load_verify_locations_from_directory" class="fn">load_verify_locations_from_directory</a>(&amp;mut self, dir: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Specifies a directory where trusted CA certificates are stored for the
+purposes of certificate verification.</p>
+<p>The content of <code>dir</code> a set of PEM-encoded certificate chains.</p>
+<h6 id="examples-4"><a class="doc-anchor" href="#examples-4">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code>config.load_verify_locations_from_directory(<span class="string">"/path/to/certs"</span>)<span class="question-mark">?</span>;</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.verify_peer" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#959-961">source</a><h4 class="code-header">pub fn <a href="#method.verify_peer" class="fn">verify_peer</a>(&amp;mut self, verify: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>)</h4></section></summary><div class="docblock"><p>Configures whether to verify the peer’s certificate.</p>
+<p>The default value is <code>true</code> for client connections, and <code>false</code> for
+server ones.</p>
+<p>Note that on the server-side, enabling verification of the peer will
+trigger a certificate request and make authentication errors fatal, but
+will still allow anonymous clients (i.e. clients that don’t present a
+certificate at all). Servers can check whether a client presented a
+certificate by calling <a href="struct.Connection.html#method.peer_cert"><code>peer_cert()</code></a> if they need to.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.discover_pmtu" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#966-968">source</a><h4 class="code-header">pub fn <a href="#method.discover_pmtu" class="fn">discover_pmtu</a>(&amp;mut self, discover: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>)</h4></section></summary><div class="docblock"><p>Configures whether to do path MTU discovery.</p>
+<p>The default value is <code>false</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.grease" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#973-975">source</a><h4 class="code-header">pub fn <a href="#method.grease" class="fn">grease</a>(&amp;mut self, grease: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>)</h4></section></summary><div class="docblock"><p>Configures whether to send GREASE values.</p>
+<p>The default value is <code>true</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.log_keys" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#985-987">source</a><h4 class="code-header">pub fn <a href="#method.log_keys" class="fn">log_keys</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Enables logging of secrets.</p>
+<p>When logging is enabled, the <a href="struct.Connection.html#method.set_keylog"><code>set_keylog()</code></a> method must be called on
+the connection for its cryptographic secrets to be logged in the
+<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Key_Log_Format">keylog</a> format to the specified writer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_ticket_key" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#999-1001">source</a><h4 class="code-header">pub fn <a href="#method.set_ticket_key" class="fn">set_ticket_key</a>(&amp;mut self, key: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Configures the session ticket key material.</p>
+<p>On the server this key will be used to encrypt and decrypt session
+tickets, used to perform session resumption without server-side state.</p>
+<p>By default a key is generated internally, and rotated regularly, so
+applications don’t need to call this unless they need to use a
+specific key (e.g. in order to support resumption across multiple
+servers), in which case the application is also responsible for
+rotating the key to provide forward secrecy.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_early_data" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1004-1006">source</a><h4 class="code-header">pub fn <a href="#method.enable_early_data" class="fn">enable_early_data</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Enables sending or receiving early data.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_application_protos" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1025-1032">source</a><h4 class="code-header">pub fn <a href="#method.set_application_protos" class="fn">set_application_protos</a>(&amp;mut self, protos_list: &amp;[&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]]) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Configures the list of supported application protocols.</p>
+<p>On the client this configures the list of protocols to send to the
+server as part of the ALPN extension.</p>
+<p>On the server this configures the list of supported protocols to match
+against the client-supplied list.</p>
+<p>Applications must set a value, but no default is provided.</p>
+<h6 id="examples-5"><a class="doc-anchor" href="#examples-5">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code>config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"http/1.1"</span>, <span class="string">b"http/0.9"</span>]);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_application_protos_wire_format" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1050-1062">source</a><h4 class="code-header">pub fn <a href="#method.set_application_protos_wire_format" class="fn">set_application_protos_wire_format</a>(
+    &amp;mut self,
+    protos: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Configures the list of supported application protocols using wire
+format.</p>
+<p>The list of protocols <code>protos</code> must be a series of non-empty, 8-bit
+length-prefixed strings.</p>
+<p>See <a href="struct.Config.html#method.set_application_protos" title="method quiche::Config::set_application_protos"><code>set_application_protos</code></a> for more
+background about application protocols.</p>
+<h6 id="examples-6"><a class="doc-anchor" href="#examples-6">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code>config.set_application_protos_wire_format(<span class="string">b"\x08http/1.1\x08http/0.9"</span>)<span class="question-mark">?</span>;</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_max_idle_timeout" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1067-1069">source</a><h4 class="code-header">pub fn <a href="#method.set_max_idle_timeout" class="fn">set_max_idle_timeout</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h4></section></summary><div class="docblock"><p>Sets the <code>max_idle_timeout</code> transport parameter, in milliseconds.</p>
+<p>The default value is infinite, that is, no timeout is used.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_max_recv_udp_payload_size" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1074-1076">source</a><h4 class="code-header">pub fn <a href="#method.set_max_recv_udp_payload_size" class="fn">set_max_recv_udp_payload_size</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class="docblock"><p>Sets the <code>max_udp_payload_size transport</code> parameter.</p>
+<p>The default value is <code>65527</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_max_send_udp_payload_size" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1081-1083">source</a><h4 class="code-header">pub fn <a href="#method.set_max_send_udp_payload_size" class="fn">set_max_send_udp_payload_size</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class="docblock"><p>Sets the maximum outgoing UDP payload size.</p>
+<p>The default and minimum value is <code>1200</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_initial_max_data" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1097-1099">source</a><h4 class="code-header">pub fn <a href="#method.set_initial_max_data" class="fn">set_initial_max_data</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h4></section></summary><div class="docblock"><p>Sets the <code>initial_max_data</code> transport parameter.</p>
+<p>When set to a non-zero value quiche will only allow at most <code>v</code> bytes of
+incoming stream data to be buffered for the whole connection (that is,
+data that is not yet read by the application) and will allow more data
+to be received as the buffer is consumed by the application.</p>
+<p>When set to zero, either explicitly or via the default, quiche will not
+give any flow control to the peer, preventing it from sending any stream
+data.</p>
+<p>The default value is <code>0</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_initial_max_stream_data_bidi_local" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1114-1117">source</a><h4 class="code-header">pub fn <a href="#method.set_initial_max_stream_data_bidi_local" class="fn">set_initial_max_stream_data_bidi_local</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h4></section></summary><div class="docblock"><p>Sets the <code>initial_max_stream_data_bidi_local</code> transport parameter.</p>
+<p>When set to a non-zero value quiche will only allow at most <code>v</code> bytes
+of incoming stream data to be buffered for each locally-initiated
+bidirectional stream (that is, data that is not yet read by the
+application) and will allow more data to be received as the buffer is
+consumed by the application.</p>
+<p>When set to zero, either explicitly or via the default, quiche will not
+give any flow control to the peer, preventing it from sending any stream
+data.</p>
+<p>The default value is <code>0</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_initial_max_stream_data_bidi_remote" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1132-1135">source</a><h4 class="code-header">pub fn <a href="#method.set_initial_max_stream_data_bidi_remote" class="fn">set_initial_max_stream_data_bidi_remote</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h4></section></summary><div class="docblock"><p>Sets the <code>initial_max_stream_data_bidi_remote</code> transport parameter.</p>
+<p>When set to a non-zero value quiche will only allow at most <code>v</code> bytes
+of incoming stream data to be buffered for each remotely-initiated
+bidirectional stream (that is, data that is not yet read by the
+application) and will allow more data to be received as the buffer is
+consumed by the application.</p>
+<p>When set to zero, either explicitly or via the default, quiche will not
+give any flow control to the peer, preventing it from sending any stream
+data.</p>
+<p>The default value is <code>0</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_initial_max_stream_data_uni" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1149-1151">source</a><h4 class="code-header">pub fn <a href="#method.set_initial_max_stream_data_uni" class="fn">set_initial_max_stream_data_uni</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h4></section></summary><div class="docblock"><p>Sets the <code>initial_max_stream_data_uni</code> transport parameter.</p>
+<p>When set to a non-zero value quiche will only allow at most <code>v</code> bytes
+of incoming stream data to be buffered for each unidirectional stream
+(that is, data that is not yet read by the application) and will allow
+more data to be received as the buffer is consumed by the application.</p>
+<p>When set to zero, either explicitly or via the default, quiche will not
+give any flow control to the peer, preventing it from sending any stream
+data.</p>
+<p>The default value is <code>0</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_initial_max_streams_bidi" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1170-1172">source</a><h4 class="code-header">pub fn <a href="#method.set_initial_max_streams_bidi" class="fn">set_initial_max_streams_bidi</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h4></section></summary><div class="docblock"><p>Sets the <code>initial_max_streams_bidi</code> transport parameter.</p>
+<p>When set to a non-zero value quiche will only allow <code>v</code> number of
+concurrent remotely-initiated bidirectional streams to be open at any
+given time and will increase the limit automatically as streams are
+completed.</p>
+<p>When set to zero, either explicitly or via the default, quiche will not
+not allow the peer to open any bidirectional streams.</p>
+<p>A bidirectional stream is considered completed when all incoming data
+has been read by the application (up to the <code>fin</code> offset) or the
+stream’s read direction has been shutdown, and all outgoing data has
+been acked by the peer (up to the <code>fin</code> offset) or the stream’s write
+direction has been shutdown.</p>
+<p>The default value is <code>0</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_initial_max_streams_uni" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1189-1191">source</a><h4 class="code-header">pub fn <a href="#method.set_initial_max_streams_uni" class="fn">set_initial_max_streams_uni</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h4></section></summary><div class="docblock"><p>Sets the <code>initial_max_streams_uni</code> transport parameter.</p>
+<p>When set to a non-zero value quiche will only allow <code>v</code> number of
+concurrent remotely-initiated unidirectional streams to be open at any
+given time and will increase the limit automatically as streams are
+completed.</p>
+<p>When set to zero, either explicitly or via the default, quiche will not
+not allow the peer to open any unidirectional streams.</p>
+<p>A unidirectional stream is considered completed when all incoming data
+has been read by the application (up to the <code>fin</code> offset) or the
+stream’s read direction has been shutdown.</p>
+<p>The default value is <code>0</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_ack_delay_exponent" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1196-1198">source</a><h4 class="code-header">pub fn <a href="#method.set_ack_delay_exponent" class="fn">set_ack_delay_exponent</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h4></section></summary><div class="docblock"><p>Sets the <code>ack_delay_exponent</code> transport parameter.</p>
+<p>The default value is <code>3</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_max_ack_delay" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1203-1205">source</a><h4 class="code-header">pub fn <a href="#method.set_max_ack_delay" class="fn">set_max_ack_delay</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h4></section></summary><div class="docblock"><p>Sets the <code>max_ack_delay</code> transport parameter.</p>
+<p>The default value is <code>25</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_active_connection_id_limit" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1210-1214">source</a><h4 class="code-header">pub fn <a href="#method.set_active_connection_id_limit" class="fn">set_active_connection_id_limit</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h4></section></summary><div class="docblock"><p>Sets the <code>active_connection_id_limit</code> transport parameter.</p>
+<p>The default value is <code>2</code>. Lower values will be ignored.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_disable_active_migration" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1219-1221">source</a><h4 class="code-header">pub fn <a href="#method.set_disable_active_migration" class="fn">set_disable_active_migration</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>)</h4></section></summary><div class="docblock"><p>Sets the <code>disable_active_migration</code> transport parameter.</p>
+<p>The default value is <code>false</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_cc_algorithm_name" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1235-1239">source</a><h4 class="code-header">pub fn <a href="#method.set_cc_algorithm_name" class="fn">set_cc_algorithm_name</a>(&amp;mut self, name: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the congestion control algorithm used by string.</p>
+<p>The default value is <code>cubic</code>. On error <code>Error::CongestionControl</code>
+will be returned.</p>
+<h6 id="examples-7"><a class="doc-anchor" href="#examples-7">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code>config.set_cc_algorithm_name(<span class="string">"reno"</span>);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_initial_congestion_window_packets" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1244-1246">source</a><h4 class="code-header">pub fn <a href="#method.set_initial_congestion_window_packets" class="fn">set_initial_congestion_window_packets</a>(&amp;mut self, packets: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class="docblock"><p>Sets initial congestion window size in terms of packet count.</p>
+<p>The default value is 10.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_cc_algorithm" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1251-1253">source</a><h4 class="code-header">pub fn <a href="#method.set_cc_algorithm" class="fn">set_cc_algorithm</a>(&amp;mut self, algo: <a class="enum" href="enum.CongestionControlAlgorithm.html" title="enum quiche::CongestionControlAlgorithm">CongestionControlAlgorithm</a>)</h4></section></summary><div class="docblock"><p>Sets the congestion control algorithm used.</p>
+<p>The default value is <code>CongestionControlAlgorithm::CUBIC</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_hystart" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1258-1260">source</a><h4 class="code-header">pub fn <a href="#method.enable_hystart" class="fn">enable_hystart</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>)</h4></section></summary><div class="docblock"><p>Configures whether to enable HyStart++.</p>
+<p>The default value is <code>true</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_pacing" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1265-1267">source</a><h4 class="code-header">pub fn <a href="#method.enable_pacing" class="fn">enable_pacing</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>)</h4></section></summary><div class="docblock"><p>Configures whether to enable pacing.</p>
+<p>The default value is <code>true</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_max_pacing_rate" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1272-1274">source</a><h4 class="code-header">pub fn <a href="#method.set_max_pacing_rate" class="fn">set_max_pacing_rate</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h4></section></summary><div class="docblock"><p>Sets the max value for pacing rate.</p>
+<p>By default pacing rate is not limited.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_dgram" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1282-1292">source</a><h4 class="code-header">pub fn <a href="#method.enable_dgram" class="fn">enable_dgram</a>(
+    &amp;mut self,
+    enabled: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    recv_queue_len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
+    send_queue_len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>
+)</h4></section></summary><div class="docblock"><p>Configures whether to enable receiving DATAGRAM frames.</p>
+<p>When enabled, the <code>max_datagram_frame_size</code> transport parameter is set
+to 65536 as recommended by draft-ietf-quic-datagram-01.</p>
+<p>The default is <code>false</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_path_challenge_recv_max_queue_len" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1300-1302">source</a><h4 class="code-header">pub fn <a href="#method.set_path_challenge_recv_max_queue_len" class="fn">set_path_challenge_recv_max_queue_len</a>(&amp;mut self, queue_len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class="docblock"><p>Configures the max number of queued received PATH_CHALLENGE frames.</p>
+<p>When an endpoint receives a PATH_CHALLENGE frame and the queue is full,
+the frame is discarded.</p>
+<p>The default is 3.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_max_connection_window" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1307-1309">source</a><h4 class="code-header">pub fn <a href="#method.set_max_connection_window" class="fn">set_max_connection_window</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h4></section></summary><div class="docblock"><p>Sets the maximum size of the connection window.</p>
+<p>The default value is MAX_CONNECTION_WINDOW (24MBytes).</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_max_stream_window" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1314-1316">source</a><h4 class="code-header">pub fn <a href="#method.set_max_stream_window" class="fn">set_max_stream_window</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h4></section></summary><div class="docblock"><p>Sets the maximum size of the stream window.</p>
+<p>The default value is MAX_STREAM_WINDOW (16MBytes).</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_stateless_reset_token" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1324-1326">source</a><h4 class="code-header">pub fn <a href="#method.set_stateless_reset_token" class="fn">set_stateless_reset_token</a>(&amp;mut self, v: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u128.html">u128</a>&gt;)</h4></section></summary><div class="docblock"><p>Sets the initial stateless reset token.</p>
+<p>This value is only advertised by servers. Setting a stateless retry
+token as a client has no effect on the connection.</p>
+<p>The default value is <code>None</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_disable_dcid_reuse" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#1338-1340">source</a><h4 class="code-header">pub fn <a href="#method.set_disable_dcid_reuse" class="fn">set_disable_dcid_reuse</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>)</h4></section></summary><div class="docblock"><p>Sets whether the QUIC connection should avoid reusing DCIDs over
+different paths.</p>
+<p>When set to <code>true</code>, it ensures that a destination Connection ID is never
+reused on different paths. Such behaviour may lead to connection stall
+if the peer performs a non-voluntary migration (e.g., NAT rebinding) and
+does not provide additional destination Connection IDs to handle such
+event.</p>
+<p>The default value is <code>false</code>.</p>
+</div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Config" class="impl"><a href="#impl-Freeze-for-Config" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Config.html" title="struct quiche::Config">Config</a></h3></section><section id="impl-RefUnwindSafe-for-Config" class="impl"><a href="#impl-RefUnwindSafe-for-Config" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Config.html" title="struct quiche::Config">Config</a></h3></section><section id="impl-Send-for-Config" class="impl"><a href="#impl-Send-for-Config" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Config.html" title="struct quiche::Config">Config</a></h3></section><section id="impl-Sync-for-Config" class="impl"><a href="#impl-Sync-for-Config" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Config.html" title="struct quiche::Config">Config</a></h3></section><section id="impl-Unpin-for-Config" class="impl"><a href="#impl-Unpin-for-Config" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Config.html" title="struct quiche::Config">Config</a></h3></section><section id="impl-UnwindSafe-for-Config" class="impl"><a href="#impl-UnwindSafe-for-Config" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Config.html" title="struct quiche::Config">Config</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/struct.Connection.html b/quiche/struct.Connection.html
new file mode 100644
index 0000000..49a4a59
--- /dev/null
+++ b/quiche/struct.Connection.html
@@ -0,0 +1,666 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A QUIC connection."><title>Connection in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">Connection</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.active_scids">active_scids</a></li><li><a href="#method.application_proto">application_proto</a></li><li><a href="#method.available_dcids">available_dcids</a></li><li><a href="#method.close">close</a></li><li><a href="#method.destination_id">destination_id</a></li><li><a href="#method.dgram_max_writable_len">dgram_max_writable_len</a></li><li><a href="#method.dgram_purge_outgoing">dgram_purge_outgoing</a></li><li><a href="#method.dgram_recv">dgram_recv</a></li><li><a href="#method.dgram_recv_front_len">dgram_recv_front_len</a></li><li><a href="#method.dgram_recv_peek">dgram_recv_peek</a></li><li><a href="#method.dgram_recv_queue_byte_size">dgram_recv_queue_byte_size</a></li><li><a href="#method.dgram_recv_queue_len">dgram_recv_queue_len</a></li><li><a href="#method.dgram_recv_vec">dgram_recv_vec</a></li><li><a href="#method.dgram_send">dgram_send</a></li><li><a href="#method.dgram_send_queue_byte_size">dgram_send_queue_byte_size</a></li><li><a href="#method.dgram_send_queue_len">dgram_send_queue_len</a></li><li><a href="#method.dgram_send_vec">dgram_send_vec</a></li><li><a href="#method.is_closed">is_closed</a></li><li><a href="#method.is_dgram_recv_queue_full">is_dgram_recv_queue_full</a></li><li><a href="#method.is_dgram_send_queue_full">is_dgram_send_queue_full</a></li><li><a href="#method.is_draining">is_draining</a></li><li><a href="#method.is_established">is_established</a></li><li><a href="#method.is_in_early_data">is_in_early_data</a></li><li><a href="#method.is_path_validated">is_path_validated</a></li><li><a href="#method.is_readable">is_readable</a></li><li><a href="#method.is_resumed">is_resumed</a></li><li><a href="#method.is_server">is_server</a></li><li><a href="#method.is_timed_out">is_timed_out</a></li><li><a href="#method.local_error">local_error</a></li><li><a href="#method.max_send_udp_payload_size">max_send_udp_payload_size</a></li><li><a href="#method.migrate">migrate</a></li><li><a href="#method.migrate_source">migrate_source</a></li><li><a href="#method.new_scid">new_scid</a></li><li><a href="#method.on_timeout">on_timeout</a></li><li><a href="#method.path_event_next">path_event_next</a></li><li><a href="#method.path_stats">path_stats</a></li><li><a href="#method.paths_iter">paths_iter</a></li><li><a href="#method.peer_cert">peer_cert</a></li><li><a href="#method.peer_cert_chain">peer_cert_chain</a></li><li><a href="#method.peer_error">peer_error</a></li><li><a href="#method.peer_streams_left_bidi">peer_streams_left_bidi</a></li><li><a href="#method.peer_streams_left_uni">peer_streams_left_uni</a></li><li><a href="#method.peer_transport_params">peer_transport_params</a></li><li><a href="#method.probe_path">probe_path</a></li><li><a href="#method.qlog_streamer">qlog_streamer</a></li><li><a href="#method.readable">readable</a></li><li><a href="#method.recv">recv</a></li><li><a href="#method.retire_dcid">retire_dcid</a></li><li><a href="#method.retired_scid_next">retired_scid_next</a></li><li><a href="#method.retired_scids">retired_scids</a></li><li><a href="#method.scids_left">scids_left</a></li><li><a href="#method.send">send</a></li><li><a href="#method.send_ack_eliciting">send_ack_eliciting</a></li><li><a href="#method.send_ack_eliciting_on_path">send_ack_eliciting_on_path</a></li><li><a href="#method.send_on_path">send_on_path</a></li><li><a href="#method.send_quantum">send_quantum</a></li><li><a href="#method.send_quantum_on_path">send_quantum_on_path</a></li><li><a href="#method.server_name">server_name</a></li><li><a href="#method.session">session</a></li><li><a href="#method.set_keylog">set_keylog</a></li><li><a href="#method.set_qlog">set_qlog</a></li><li><a href="#method.set_qlog_with_level">set_qlog_with_level</a></li><li><a href="#method.set_session">set_session</a></li><li><a href="#method.source_id">source_id</a></li><li><a href="#method.source_ids">source_ids</a></li><li><a href="#method.stats">stats</a></li><li><a href="#method.stream_capacity">stream_capacity</a></li><li><a href="#method.stream_finished">stream_finished</a></li><li><a href="#method.stream_priority">stream_priority</a></li><li><a href="#method.stream_readable">stream_readable</a></li><li><a href="#method.stream_readable_next">stream_readable_next</a></li><li><a href="#method.stream_recv">stream_recv</a></li><li><a href="#method.stream_send">stream_send</a></li><li><a href="#method.stream_shutdown">stream_shutdown</a></li><li><a href="#method.stream_writable">stream_writable</a></li><li><a href="#method.stream_writable_next">stream_writable_next</a></li><li><a href="#method.timeout">timeout</a></li><li><a href="#method.timeout_instant">timeout_instant</a></li><li><a href="#method.trace_id">trace_id</a></li><li><a href="#method.writable">writable</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-AsMut%3CSslRef%3E-for-Connection">AsMut&lt;SslRef&gt;</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-RefUnwindSafe-for-Connection">!RefUnwindSafe</a></li><li><a href="#impl-UnwindSafe-for-Connection">!UnwindSafe</a></li><li><a href="#impl-Freeze-for-Connection">Freeze</a></li><li><a href="#impl-Send-for-Connection">Send</a></li><li><a href="#impl-Sync-for-Connection">Sync</a></li><li><a href="#impl-Unpin-for-Connection">Unpin</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">quiche</a>::<wbr><a class="struct" href="#">Connection</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#1344-1554">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Connection { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A QUIC connection.</p>
+</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Connection" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#1799-7840">source</a><a href="#impl-Connection" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Connection.html" title="struct quiche::Connection">Connection</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.set_keylog" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#2055-2057">source</a><h4 class="code-header">pub fn <a href="#method.set_keylog" class="fn">set_keylog</a>(&amp;mut self, writer: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait std::io::Write">Write</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>&gt;)</h4></section></summary><div class="docblock"><p>Sets keylog output to the designated <a href="https://doc.rust-lang.org/std/io/trait.Write.html"><code>Writer</code></a>.</p>
+<p>This needs to be called as soon as the connection is created, to avoid
+missing some early logs.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_qlog" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#2070-2075">source</a><h4 class="code-header">pub fn <a href="#method.set_qlog" class="fn">set_qlog</a>(
+    &amp;mut self,
+    writer: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait std::io::Write">Write</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>&gt;,
+    title: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    description: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>
+)</h4></section><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>qlog</code></strong> only.</div></span></summary><div class="docblock"><p>Sets qlog output to the designated <a href="https://doc.rust-lang.org/std/io/trait.Write.html"><code>Writer</code></a>.</p>
+<p>Only events included in <code>QlogLevel::Base</code> are written. The serialization
+format is JSON-SEQ.</p>
+<p>This needs to be called as soon as the connection is created, to avoid
+missing some early logs.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_qlog_with_level" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#2088-2144">source</a><h4 class="code-header">pub fn <a href="#method.set_qlog_with_level" class="fn">set_qlog_with_level</a>(
+    &amp;mut self,
+    writer: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait std::io::Write">Write</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>&gt;,
+    title: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    description: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    qlog_level: <a class="enum" href="enum.QlogLevel.html" title="enum quiche::QlogLevel">QlogLevel</a>
+)</h4></section><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>qlog</code></strong> only.</div></span></summary><div class="docblock"><p>Sets qlog output to the designated <a href="https://doc.rust-lang.org/std/io/trait.Write.html"><code>Writer</code></a>.</p>
+<p>Only qlog events included in the specified <code>QlogLevel</code> are written. The
+serialization format is JSON-SEQ.</p>
+<p>This needs to be called as soon as the connection is created, to avoid
+missing some early logs.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.qlog_streamer" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#2149-2151">source</a><h4 class="code-header">pub fn <a href="#method.qlog_streamer" class="fn">qlog_streamer</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;mut <a class="struct" href="../qlog/streamer/struct.QlogStreamer.html" title="struct qlog::streamer::QlogStreamer">QlogStreamer</a>&gt;</h4></section><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>qlog</code></strong> only.</div></span></summary><div class="docblock"><p>Returns a mutable reference to the QlogStreamer, if it exists.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_session" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#2163-2180">source</a><h4 class="code-header">pub fn <a href="#method.set_session" class="fn">set_session</a>(&amp;mut self, session: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Configures the given session for resumption.</p>
+<p>On the client, this can be used to offer the given serialized session,
+as returned by <a href="struct.Connection.html#method.session"><code>session()</code></a>, for resumption.</p>
+<p>This must only be called immediately after creating a connection, that
+is, before any packet is sent or received.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.recv" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#2224-2304">source</a><h4 class="code-header">pub fn <a href="#method.recv" class="fn">recv</a>(&amp;mut self, buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], info: <a class="struct" href="struct.RecvInfo.html" title="struct quiche::RecvInfo">RecvInfo</a>) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</h4></section></summary><div class="docblock"><p>Processes QUIC packets received from the peer.</p>
+<p>On success the number of bytes processed from the input buffer is
+returned. On error the connection will be closed by calling <a href="struct.Connection.html#method.close"><code>close()</code></a>
+with the appropriate error code.</p>
+<p>Coalesced packets will be processed as necessary.</p>
+<p>Note that the contents of the input buffer <code>buf</code> might be modified by
+this function due to, for example, in-place decryption.</p>
+<h6 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">loop </span>{
+    <span class="kw">let </span>(read, from) = socket.recv_from(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+    <span class="kw">let </span>recv_info = quiche::RecvInfo {
+        from,
+        to: local,
+    };
+
+    <span class="kw">let </span>read = <span class="kw">match </span>conn.recv(<span class="kw-2">&amp;mut </span>buf[..read], recv_info) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+        <span class="prelude-val">Err</span>(e) =&gt; {
+            <span class="comment">// An error occurred, handle it.
+            </span><span class="kw">break</span>;
+        },
+    };
+}</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.send" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#3230-3232">source</a><h4 class="code-header">pub fn <a href="#method.send" class="fn">send</a>(&amp;mut self, out: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="struct" href="struct.SendInfo.html" title="struct quiche::SendInfo">SendInfo</a>)&gt;</h4></section></summary><div class="docblock"><p>Writes a single QUIC packet to be sent to the peer.</p>
+<p>On success the number of bytes written to the output buffer is
+returned, or <a href="enum.Error.html#variant.Done"><code>Done</code></a> if there was nothing to write.</p>
+<p>The application should call <code>send()</code> multiple times until <a href="enum.Error.html#variant.Done"><code>Done</code></a> is
+returned, indicating that there are no more packets to send. It is
+recommended that <code>send()</code> be called in the following cases:</p>
+<ul>
+<li>
+<p>When the application receives QUIC packets from the peer (that is,
+any time <a href="struct.Connection.html#method.recv"><code>recv()</code></a> is also called).</p>
+</li>
+<li>
+<p>When the connection timer expires (that is, any time <a href="struct.Connection.html#method.on_timeout"><code>on_timeout()</code></a>
+is also called).</p>
+</li>
+<li>
+<p>When the application sends data to the peer (for example, any time
+<a href="struct.Connection.html#method.stream_send"><code>stream_send()</code></a> or <a href="struct.Connection.html#method.stream_shutdown"><code>stream_shutdown()</code></a> are called).</p>
+</li>
+<li>
+<p>When the application receives data from the peer (for example any
+time <a href="struct.Connection.html#method.stream_recv"><code>stream_recv()</code></a> is called).</p>
+</li>
+</ul>
+<p>Once <a href="struct.Connection.html#method.is_draining"><code>is_draining()</code></a> returns <code>true</code>, it is no longer necessary to call
+<code>send()</code> and all calls will return <a href="enum.Error.html#variant.Done"><code>Done</code></a>.</p>
+<h6 id="examples-1"><a class="doc-anchor" href="#examples-1">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">loop </span>{
+    <span class="kw">let </span>(write, send_info) = <span class="kw">match </span>conn.send(<span class="kw-2">&amp;mut </span>out) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+        <span class="prelude-val">Err</span>(quiche::Error::Done) =&gt; {
+            <span class="comment">// Done writing.
+            </span><span class="kw">break</span>;
+        },
+
+        <span class="prelude-val">Err</span>(e) =&gt; {
+            <span class="comment">// An error occurred, handle it.
+            </span><span class="kw">break</span>;
+        },
+    };
+
+    socket.send_to(<span class="kw-2">&amp;</span>out[..write], <span class="kw-2">&amp;</span>send_info.to).unwrap();
+}</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.send_on_path" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#3317-3458">source</a><h4 class="code-header">pub fn <a href="#method.send_on_path" class="fn">send_on_path</a>(
+    &amp;mut self,
+    out: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
+    from: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>&gt;,
+    to: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>&gt;
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="struct" href="struct.SendInfo.html" title="struct quiche::SendInfo">SendInfo</a>)&gt;</h4></section></summary><div class="docblock"><p>Writes a single QUIC packet to be sent to the peer from the specified
+local address <code>from</code> to the destination address <code>to</code>.</p>
+<p>The behavior of this method differs depending on the value of the <code>from</code>
+and <code>to</code> parameters:</p>
+<ul>
+<li>
+<p>If both are <code>Some</code>, then the method only consider the 4-tuple
+(<code>from</code>, <code>to</code>). Application can monitor the 4-tuple availability,
+either by monitoring <a href="struct.Connection.html#method.path_event_next"><code>path_event_next()</code></a> events or by relying on
+the <a href="struct.Connection.html#method.paths_iter"><code>paths_iter()</code></a> method. If the provided 4-tuple does not exist
+on the connection (anymore), it returns an <a href="enum.Error.html#InvalidState"><code>InvalidState</code></a>.</p>
+</li>
+<li>
+<p>If <code>from</code> is <code>Some</code> and <code>to</code> is <code>None</code>, then the method only
+considers sending packets on paths having <code>from</code> as local address.</p>
+</li>
+<li>
+<p>If <code>to</code> is <code>Some</code> and <code>from</code> is <code>None</code>, then the method only
+considers sending packets on paths having <code>to</code> as peer address.</p>
+</li>
+<li>
+<p>If both are <code>None</code>, all available paths are considered.</p>
+</li>
+</ul>
+<p>On success the number of bytes written to the output buffer is
+returned, or <a href="enum.Error.html#variant.Done"><code>Done</code></a> if there was nothing to write.</p>
+<p>The application should call <code>send_on_path()</code> multiple times until
+<a href="enum.Error.html#variant.Done"><code>Done</code></a> is returned, indicating that there are no more packets to
+send. It is recommended that <code>send_on_path()</code> be called in the
+following cases:</p>
+<ul>
+<li>
+<p>When the application receives QUIC packets from the peer (that is,
+any time <a href="struct.Connection.html#method.recv"><code>recv()</code></a> is also called).</p>
+</li>
+<li>
+<p>When the connection timer expires (that is, any time <a href="struct.Connection.html#method.on_timeout"><code>on_timeout()</code></a>
+is also called).</p>
+</li>
+<li>
+<p>When the application sends data to the peer (for examples, any time
+<a href="struct.Connection.html#method.stream_send"><code>stream_send()</code></a> or <a href="struct.Connection.html#method.stream_shutdown"><code>stream_shutdown()</code></a> are called).</p>
+</li>
+<li>
+<p>When the application receives data from the peer (for example any
+time <a href="struct.Connection.html#method.stream_recv"><code>stream_recv()</code></a> is called).</p>
+</li>
+</ul>
+<p>Once <a href="struct.Connection.html#method.is_draining"><code>is_draining()</code></a> returns <code>true</code>, it is no longer necessary to call
+<code>send_on_path()</code> and all calls will return <a href="enum.Error.html#variant.Done"><code>Done</code></a>.</p>
+<h6 id="examples-2"><a class="doc-anchor" href="#examples-2">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">loop </span>{
+    <span class="kw">let </span>(write, send_info) = <span class="kw">match </span>conn.send_on_path(<span class="kw-2">&amp;mut </span>out, <span class="prelude-val">Some</span>(local), <span class="prelude-val">Some</span>(peer)) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+        <span class="prelude-val">Err</span>(quiche::Error::Done) =&gt; {
+            <span class="comment">// Done writing.
+            </span><span class="kw">break</span>;
+        },
+
+        <span class="prelude-val">Err</span>(e) =&gt; {
+            <span class="comment">// An error occurred, handle it.
+            </span><span class="kw">break</span>;
+        },
+    };
+
+    socket.send_to(<span class="kw-2">&amp;</span>out[..write], <span class="kw-2">&amp;</span>send_info.to).unwrap();
+}</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.send_quantum" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#4667-4672">source</a><h4 class="code-header">pub fn <a href="#method.send_quantum" class="fn">send_quantum</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the size of the send quantum, in bytes.</p>
+<p>This represents the maximum size of a packet burst as determined by the
+congestion control algorithm in use.</p>
+<p>Applications can, for example, use it in conjunction with segmentation
+offloading mechanisms as the maximum limit for outgoing aggregates of
+multiple packets.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.send_quantum_on_path" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#4685-4693">source</a><h4 class="code-header">pub fn <a href="#method.send_quantum_on_path" class="fn">send_quantum_on_path</a>(
+    &amp;self,
+    local_addr: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>,
+    peer_addr: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>
+) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the size of the send quantum over the given 4-tuple, in bytes.</p>
+<p>This represents the maximum size of a packet burst as determined by the
+congestion control algorithm in use.</p>
+<p>Applications can, for example, use it in conjunction with segmentation
+offloading mechanisms as the maximum limit for outgoing aggregates of
+multiple packets.</p>
+<p>If the (<code>local_addr</code>, peer_addr`) 4-tuple relates to a non-existing
+path, this method returns 0.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.stream_recv" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#4725-4810">source</a><h4 class="code-header">pub fn <a href="#method.stream_recv" class="fn">stream_recv</a>(
+    &amp;mut self,
+    stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    out: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>)&gt;</h4></section></summary><div class="docblock"><p>Reads contiguous data from a stream into the provided slice.</p>
+<p>The slice must be sized by the caller and will be populated up to its
+capacity.</p>
+<p>On success the amount of bytes read and a flag indicating the fin state
+is returned as a tuple, or <a href="enum.Error.html#variant.Done"><code>Done</code></a> if there is no data to read.</p>
+<p>Reading data from a stream may trigger queueing of control messages
+(e.g. MAX_STREAM_DATA). <a href="struct.Connection.html#method.send"><code>send()</code></a> should be called after reading.</p>
+<h6 id="examples-3"><a class="doc-anchor" href="#examples-3">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">while let </span><span class="prelude-val">Ok</span>((read, fin)) = conn.stream_recv(stream_id, <span class="kw-2">&amp;mut </span>buf) {
+    <span class="macro">println!</span>(<span class="string">"Got {} bytes on stream {}"</span>, read, stream_id);
+}</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.stream_send" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#4859-4999">source</a><h4 class="code-header">pub fn <a href="#method.stream_send" class="fn">stream_send</a>(
+    &amp;mut self,
+    stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    buf: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
+    fin: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</h4></section></summary><div class="docblock"><p>Writes data to a stream.</p>
+<p>On success the number of bytes written is returned, or <a href="enum.Error.html#variant.Done"><code>Done</code></a> if no
+data was written (e.g. because the stream has no capacity).</p>
+<p>Applications can provide a 0-length buffer with the fin flag set to
+true. This will lead to a 0-length FIN STREAM frame being sent at the
+latest offset. The <code>Ok(0)</code> value is only returned when the application
+provided a 0-length buffer.</p>
+<p>In addition, if the peer has signalled that it doesn’t want to receive
+any more data from this stream by sending the <code>STOP_SENDING</code> frame, the
+<a href="enum.Error.html#variant.StreamStopped"><code>StreamStopped</code></a> error will be returned instead of any data.</p>
+<p>Note that in order to avoid buffering an infinite amount of data in the
+stream’s send buffer, streams are only allowed to buffer outgoing data
+up to the amount that the peer allows it to send (that is, up to the
+stream’s outgoing flow control capacity).</p>
+<p>This means that the number of written bytes returned can be lower than
+the length of the input buffer when the stream doesn’t have enough
+capacity for the operation to complete. The application should retry the
+operation once the stream is reported as writable again.</p>
+<p>Applications should call this method only after the handshake is
+completed (whenever <a href="struct.Connection.html#method.is_established"><code>is_established()</code></a> returns <code>true</code>) or during
+early data if enabled (whenever <a href="struct.Connection.html#method.is_in_early_data"><code>is_in_early_data()</code></a> returns <code>true</code>).</p>
+<h6 id="examples-4"><a class="doc-anchor" href="#examples-4">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code>conn.stream_send(stream_id, <span class="string">b"hello"</span>, <span class="bool-val">true</span>)<span class="question-mark">?</span>;</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.stream_priority" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5009-5043">source</a><h4 class="code-header">pub fn <a href="#method.stream_priority" class="fn">stream_priority</a>(
+    &amp;mut self,
+    stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    urgency: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>,
+    incremental: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the priority for a stream.</p>
+<p>A stream’s priority determines the order in which stream data is sent
+on the wire (streams with lower priority are sent first). Streams are
+created with a default priority of <code>127</code>.</p>
+<p>The target stream is created if it did not exist before calling this
+method.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.stream_shutdown" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5070-5133">source</a><h4 class="code-header">pub fn <a href="#method.stream_shutdown" class="fn">stream_shutdown</a>(
+    &amp;mut self,
+    stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    direction: <a class="enum" href="enum.Shutdown.html" title="enum quiche::Shutdown">Shutdown</a>,
+    err: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Shuts down reading or writing from/to the specified stream.</p>
+<p>When the <code>direction</code> argument is set to <a href="enum.Shutdown.html#variant.Read"><code>Shutdown::Read</code></a>, outstanding
+data in the stream’s receive buffer is dropped, and no additional data
+is added to it. Data received after calling this method is still
+validated and acked but not stored, and <a href="struct.Connection.html#method.stream_recv"><code>stream_recv()</code></a> will not
+return it to the application. In addition, a <code>STOP_SENDING</code> frame will
+be sent to the peer to signal it to stop sending data.</p>
+<p>When the <code>direction</code> argument is set to <a href="enum.Shutdown.html#variant.Write"><code>Shutdown::Write</code></a>, outstanding
+data in the stream’s send buffer is dropped, and no additional data is
+added to it. Data passed to <a href="struct.Connection.html#method.stream_send"><code>stream_send()</code></a> after calling this method
+will be ignored. In addition, a <code>RESET_STREAM</code> frame will be sent to the
+peer to signal the reset.</p>
+<p>Locally-initiated unidirectional streams can only be closed in the
+<a href="enum.Shutdown.html#variant.Write"><code>Shutdown::Write</code></a> direction. Remotely-initiated unidirectional streams
+can only be closed in the <a href="enum.Shutdown.html#variant.Read"><code>Shutdown::Read</code></a> direction. Using an
+incorrect direction will return <a href="enum.Error.html#variant.InvalidStreamState"><code>InvalidStreamState</code></a>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.stream_capacity" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5148-5155">source</a><h4 class="code-header">pub fn <a href="#method.stream_capacity" class="fn">stream_capacity</a>(&amp;self, stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the stream’s send capacity in bytes.</p>
+<p>If the specified stream doesn’t exist (including when it has already
+been completed and closed), the <a href="enum.Error.html#variant.InvalidStreamState"><code>InvalidStreamState</code></a> error will be
+returned.</p>
+<p>In addition, if the peer has signalled that it doesn’t want to receive
+any more data from this stream by sending the <code>STOP_SENDING</code> frame, the
+<a href="enum.Error.html#variant.StreamStopped"><code>StreamStopped</code></a> error will be returned.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.stream_readable_next" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5169-5175">source</a><h4 class="code-header">pub fn <a href="#method.stream_readable_next" class="fn">stream_readable_next</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the next stream that has data to read.</p>
+<p>Note that once returned by this method, a stream ID will not be returned
+again until it is “re-armed”.</p>
+<p>The application will need to read all of the pending data on the stream,
+and new data has to be received before the stream is reported again.</p>
+<p>This is unlike the <a href="struct.Connection.html#method.readable"><code>readable()</code></a> method, that returns the same list of
+readable streams when called multiple times in succession.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.stream_readable" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5178-5186">source</a><h4 class="code-header">pub fn <a href="#method.stream_readable" class="fn">stream_readable</a>(&amp;self, stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if the stream has data that can be read.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.stream_writable_next" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5203-5237">source</a><h4 class="code-header">pub fn <a href="#method.stream_writable_next" class="fn">stream_writable_next</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the next stream that can be written to.</p>
+<p>Note that once returned by this method, a stream ID will not be returned
+again until it is “re-armed”.</p>
+<p>This is unlike the <a href="struct.Connection.html#method.writable"><code>writable()</code></a> method, that returns the same list of
+writable streams when called multiple times in succession. It is not
+advised to use both <code>stream_writable_next()</code> and <a href="struct.Connection.html#method.writable"><code>writable()</code></a> on the
+same connection, as it may lead to unexpected results.</p>
+<p>The <a href="struct.Connection.html#method.stream_writable"><code>stream_writable()</code></a> method can also be used to fine-tune when a
+stream is reported as writable again.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.stream_writable" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5262-5302">source</a><h4 class="code-header">pub fn <a href="#method.stream_writable" class="fn">stream_writable</a>(&amp;mut self, stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</h4></section></summary><div class="docblock"><p>Returns true if the stream has enough send capacity.</p>
+<p>When <code>len</code> more bytes can be buffered into the given stream’s send
+buffer, <code>true</code> will be returned, <code>false</code> otherwise.</p>
+<p>In the latter case, if the additional data can’t be buffered due to
+flow control limits, the peer will also be notified, and a “low send
+watermark” will be set for the stream, such that it is not going to be
+reported as writable again by <a href="struct.Connection.html#method.stream_writable_next"><code>stream_writable_next()</code></a> until its send
+capacity reaches <code>len</code>.</p>
+<p>If the specified stream doesn’t exist (including when it has already
+been completed and closed), the <a href="enum.Error.html#variant.InvalidStreamState"><code>InvalidStreamState</code></a> error will be
+returned.</p>
+<p>In addition, if the peer has signalled that it doesn’t want to receive
+any more data from this stream by sending the <code>STOP_SENDING</code> frame, the
+<a href="enum.Error.html#variant.StreamStopped"><code>StreamStopped</code></a> error will be returned.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.stream_finished" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5313-5321">source</a><h4 class="code-header">pub fn <a href="#method.stream_finished" class="fn">stream_finished</a>(&amp;self, stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if all the data has been read from the specified stream.</p>
+<p>This instructs the application that all the data received from the
+peer on the stream has been read, and there won’t be anymore in the
+future.</p>
+<p>Basically this returns true when the peer either set the <code>fin</code> flag
+for the stream, or sent <code>RESET_STREAM</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.peer_streams_left_bidi" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5329-5331">source</a><h4 class="code-header">pub fn <a href="#method.peer_streams_left_bidi" class="fn">peer_streams_left_bidi</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Returns the number of bidirectional streams that can be created
+before the peer’s stream count limit is reached.</p>
+<p>This can be useful to know if it’s possible to create a bidirectional
+stream without trying it first.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.peer_streams_left_uni" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5339-5341">source</a><h4 class="code-header">pub fn <a href="#method.peer_streams_left_uni" class="fn">peer_streams_left_uni</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Returns the number of unidirectional streams that can be created
+before the peer’s stream count limit is reached.</p>
+<p>This can be useful to know if it’s possible to create a unidirectional
+stream without trying it first.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.readable" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5370-5372">source</a><h4 class="code-header">pub fn <a href="#method.readable" class="fn">readable</a>(&amp;self) -&gt; <a class="struct" href="struct.StreamIter.html" title="struct quiche::StreamIter">StreamIter</a> <a href="#" class="tooltip" data-notable-ty="StreamIter">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns an iterator over streams that have outstanding data to read.</p>
+<p>Note that the iterator will only include streams that were readable at
+the time the iterator itself was created (i.e. when <code>readable()</code> was
+called). To account for newly readable streams, the iterator needs to
+be created again.</p>
+<h6 id="examples-5"><a class="doc-anchor" href="#examples-5">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="comment">// Iterate over readable streams.
+</span><span class="kw">for </span>stream_id <span class="kw">in </span>conn.readable() {
+    <span class="comment">// Stream is readable, read until there's no more data.
+    </span><span class="kw">while let </span><span class="prelude-val">Ok</span>((read, fin)) = conn.stream_recv(stream_id, <span class="kw-2">&amp;mut </span>buf) {
+        <span class="macro">println!</span>(<span class="string">"Got {} bytes on stream {}"</span>, read, stream_id);
+    }
+}</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.writable" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5413-5421">source</a><h4 class="code-header">pub fn <a href="#method.writable" class="fn">writable</a>(&amp;self) -&gt; <a class="struct" href="struct.StreamIter.html" title="struct quiche::StreamIter">StreamIter</a> <a href="#" class="tooltip" data-notable-ty="StreamIter">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns an iterator over streams that can be written in priority order.</p>
+<p>The priority order is based on RFC 9218 scheduling recommendations.
+Stream priority can be controlled using <a href="struct.Connection.html#method.stream_priority"><code>stream_priority()</code></a>. In order
+to support fairness requirements, each time this method is called,
+internal state is updated. Therefore the iterator ordering can change
+between calls, even if no streams were added or removed.</p>
+<p>A “writable” stream is a stream that has enough flow control capacity to
+send data to the peer. To avoid buffering an infinite amount of data,
+streams are only allowed to buffer outgoing data up to the amount that
+the peer allows to send.</p>
+<p>Note that the iterator will only include streams that were writable at
+the time the iterator itself was created (i.e. when <code>writable()</code> was
+called). To account for newly writable streams, the iterator needs to be
+created again.</p>
+<h6 id="examples-6"><a class="doc-anchor" href="#examples-6">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="comment">// Iterate over writable streams.
+</span><span class="kw">for </span>stream_id <span class="kw">in </span>conn.writable() {
+    <span class="comment">// Stream is writable, write some data.
+    </span><span class="kw">if let </span><span class="prelude-val">Ok</span>(written) = conn.stream_send(stream_id, <span class="kw-2">&amp;</span>buf, <span class="bool-val">false</span>) {
+        <span class="macro">println!</span>(<span class="string">"Written {} bytes on stream {}"</span>, written, stream_id);
+    }
+}</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.max_send_udp_payload_size" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5436-5454">source</a><h4 class="code-header">pub fn <a href="#method.max_send_udp_payload_size" class="fn">max_send_udp_payload_size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the maximum possible size of egress UDP payloads.</p>
+<p>This is the maximum size of UDP payloads that can be sent, and depends
+on both the configured maximum send payload size of the local endpoint
+(as configured with <a href="struct.Config.html#method.set_max_send_udp_payload_size"><code>set_max_send_udp_payload_size()</code></a>), as well as
+the transport parameter advertised by the remote peer.</p>
+<p>Note that this value can change during the lifetime of the connection,
+but should remain stable across consecutive calls to <a href="struct.Connection.html#method.send"><code>send()</code></a>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.send_ack_eliciting" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5467-5473">source</a><h4 class="code-header">pub fn <a href="#method.send_ack_eliciting" class="fn">send_ack_eliciting</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Schedule an ack-eliciting packet on the active path.</p>
+<p>QUIC packets might not contain ack-eliciting frames during normal
+operating conditions. If the packet would already contain
+ack-eliciting frames, this method does not change any behavior.
+However, if the packet would not ordinarily contain ack-eliciting
+frames, this method ensures that a PING frame sent.</p>
+<p>Calling this method multiple times before <a href="struct.Connection.html#method.send"><code>send()</code></a> has no effect.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.send_ack_eliciting_on_path" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5482-5494">source</a><h4 class="code-header">pub fn <a href="#method.send_ack_eliciting_on_path" class="fn">send_ack_eliciting_on_path</a>(
+    &amp;mut self,
+    local: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>,
+    peer: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Schedule an ack-eliciting packet on the specified path.</p>
+<p>See <a href="struct.Connection.html#method.send_ack_eliciting"><code>send_ack_eliciting()</code></a> for more detail. <a href="enum.Error.html#variant.InvalidState"><code>InvalidState</code></a> is
+returned if there is no record of the path.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.dgram_recv" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5525-5538">source</a><h4 class="code-header">pub fn <a href="#method.dgram_recv" class="fn">dgram_recv</a>(&amp;mut self, buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</h4></section></summary><div class="docblock"><p>Reads the first received DATAGRAM.</p>
+<p>On success the DATAGRAM’s data is returned along with its size.</p>
+<p><a href="enum.Error.html#variant.Done"><code>Done</code></a> is returned if there is no data to read.</p>
+<p><a href="enum.Error.html#variant.BufferTooShort"><code>BufferTooShort</code></a> is returned if the provided buffer is too small for
+the DATAGRAM.</p>
+<h6 id="examples-7"><a class="doc-anchor" href="#examples-7">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>dgram_buf = [<span class="number">0</span>; <span class="number">512</span>];
+<span class="kw">while let </span><span class="prelude-val">Ok</span>((len)) = conn.dgram_recv(<span class="kw-2">&amp;mut </span>dgram_buf) {
+    <span class="macro">println!</span>(<span class="string">"Got {} bytes of DATAGRAM"</span>, len);
+}</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.dgram_recv_vec" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5547-5553">source</a><h4 class="code-header">pub fn <a href="#method.dgram_recv_vec" class="fn">dgram_recv_vec</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;&gt;</h4></section></summary><div class="docblock"><p>Reads the first received DATAGRAM.</p>
+<p>This is the same as <a href="struct.Connection.html#method.dgram_recv"><code>dgram_recv()</code></a> but returns the DATAGRAM as a
+<code>Vec&lt;u8&gt;</code> instead of copying into the provided buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.dgram_recv_peek" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5569-5571">source</a><h4 class="code-header">pub fn <a href="#method.dgram_recv_peek" class="fn">dgram_recv_peek</a>(&amp;self, buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</h4></section></summary><div class="docblock"><p>Reads the first received DATAGRAM without removing it from the queue.</p>
+<p>On success the DATAGRAM’s data is returned along with the actual number
+of bytes peeked. The requested length cannot exceed the DATAGRAM’s
+actual length.</p>
+<p><a href="enum.Error.html#variant.Done"><code>Done</code></a> is returned if there is no data to read.</p>
+<p><a href="enum.Error.html#variant.BufferTooShort"><code>BufferTooShort</code></a> is returned if the provided buffer is smaller the
+number of bytes to peek.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.dgram_recv_front_len" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5575-5577">source</a><h4 class="code-header">pub fn <a href="#method.dgram_recv_front_len" class="fn">dgram_recv_front_len</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the length of the first stored DATAGRAM.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.dgram_recv_queue_len" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5581-5583">source</a><h4 class="code-header">pub fn <a href="#method.dgram_recv_queue_len" class="fn">dgram_recv_queue_len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the number of items in the DATAGRAM receive queue.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.dgram_recv_queue_byte_size" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5587-5589">source</a><h4 class="code-header">pub fn <a href="#method.dgram_recv_queue_byte_size" class="fn">dgram_recv_queue_byte_size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the total size of all items in the DATAGRAM receive queue.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.dgram_send_queue_len" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5593-5595">source</a><h4 class="code-header">pub fn <a href="#method.dgram_send_queue_len" class="fn">dgram_send_queue_len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the number of items in the DATAGRAM send queue.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.dgram_send_queue_byte_size" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5599-5601">source</a><h4 class="code-header">pub fn <a href="#method.dgram_send_queue_byte_size" class="fn">dgram_send_queue_byte_size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the total size of all items in the DATAGRAM send queue.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.is_dgram_send_queue_full" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5605-5607">source</a><h4 class="code-header">pub fn <a href="#method.is_dgram_send_queue_full" class="fn">is_dgram_send_queue_full</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns whether or not the DATAGRAM send queue is full.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.is_dgram_recv_queue_full" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5611-5613">source</a><h4 class="code-header">pub fn <a href="#method.is_dgram_recv_queue_full" class="fn">is_dgram_recv_queue_full</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns whether or not the DATAGRAM recv queue is full.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.dgram_send" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5647-5669">source</a><h4 class="code-header">pub fn <a href="#method.dgram_send" class="fn">dgram_send</a>(&amp;mut self, buf: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Sends data in a DATAGRAM frame.</p>
+<p><a href="enum.Error.html#variant.Done"><code>Done</code></a> is returned if no data was written.
+<a href="enum.Error.html#variant.InvalidState"><code>InvalidState</code></a> is returned if the peer does not support DATAGRAM.
+<a href="enum.Error.html#variant.BufferTooShort"><code>BufferTooShort</code></a> is returned if the DATAGRAM frame length is larger
+than peer’s supported DATAGRAM frame length. Use
+<a href="struct.Connection.html#method.dgram_max_writable_len"><code>dgram_max_writable_len()</code></a> to get the largest supported DATAGRAM
+frame length.</p>
+<p>Note that there is no flow control of DATAGRAM frames, so in order to
+avoid buffering an infinite amount of frames we apply an internal
+limit.</p>
+<h6 id="examples-8"><a class="doc-anchor" href="#examples-8">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code>conn.dgram_send(<span class="string">b"hello"</span>)<span class="question-mark">?</span>;</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.dgram_send_vec" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5677-5699">source</a><h4 class="code-header">pub fn <a href="#method.dgram_send_vec" class="fn">dgram_send_vec</a>(&amp;mut self, buf: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Sends data in a DATAGRAM frame.</p>
+<p>This is the same as <a href="struct.Connection.html#method.dgram_send"><code>dgram_send()</code></a> but takes a <code>Vec&lt;u8&gt;</code> instead of
+a slice.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.dgram_purge_outgoing" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5718-5720">source</a><h4 class="code-header">pub fn <a href="#method.dgram_purge_outgoing" class="fn">dgram_purge_outgoing</a>&lt;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;(&amp;mut self, f: F)</h4></section></summary><div class="docblock"><p>Purges queued outgoing DATAGRAMs matching the predicate.</p>
+<p>In other words, remove all elements <code>e</code> such that <code>f(&amp;e)</code> returns true.</p>
+<h6 id="examples-9"><a class="doc-anchor" href="#examples-9">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code>conn.dgram_send(<span class="string">b"hello"</span>)<span class="question-mark">?</span>;
+conn.dgram_purge_outgoing(<span class="kw-2">&amp;</span>|d: <span class="kw-2">&amp;</span>[u8]| -&gt; bool { d[<span class="number">0</span>] == <span class="number">0 </span>});</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.dgram_max_writable_len" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5745-5769">source</a><h4 class="code-header">pub fn <a href="#method.dgram_max_writable_len" class="fn">dgram_max_writable_len</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the maximum DATAGRAM payload that can be sent.</p>
+<p><a href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html#variant.None" title="variant core::option::Option::None"><code>None</code></a> is returned if the peer hasn’t advertised a maximum DATAGRAM
+frame size.</p>
+<h6 id="examples-10"><a class="doc-anchor" href="#examples-10">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">if let </span><span class="prelude-val">Some</span>(payload_size) = conn.dgram_max_writable_len() {
+    <span class="kw">if </span>payload_size &gt; <span class="number">5 </span>{
+        conn.dgram_send(<span class="string">b"hello"</span>)<span class="question-mark">?</span>;
+    }
+}</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.timeout_instant" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5784-5815">source</a><h4 class="code-header">pub fn <a href="#method.timeout_instant" class="fn">timeout_instant</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>&gt;</h4></section></summary><div class="docblock"><p>Returns when the next timeout event will occur.</p>
+<p>Once the timeout Instant has been reached, the <a href="struct.Connection.html#method.on_timeout"><code>on_timeout()</code></a> method
+should be called. A timeout of <code>None</code> means that the timer should be
+disarmed.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.timeout" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5823-5833">source</a><h4 class="code-header">pub fn <a href="#method.timeout" class="fn">timeout</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the amount of time until the next timeout event.</p>
+<p>Once the given duration has elapsed, the <a href="struct.Connection.html#method.on_timeout"><code>on_timeout()</code></a> method should
+be called. A timeout of <code>None</code> means that the timer should be disarmed.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.on_timeout" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5838-5922">source</a><h4 class="code-header">pub fn <a href="#method.on_timeout" class="fn">on_timeout</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Processes a timeout event.</p>
+<p>If no timeout has occurred it does nothing.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.probe_path" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5954-5967">source</a><h4 class="code-header">pub fn <a href="#method.probe_path" class="fn">probe_path</a>(
+    &amp;mut self,
+    local_addr: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>,
+    peer_addr: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</h4></section></summary><div class="docblock"><p>Requests the stack to perform path validation of the proposed 4-tuple.</p>
+<p>Probing new paths requires spare Connection IDs at both the host and the
+peer sides. If it is not the case, it raises an <a href="enum.Error.html#OutOfIdentifiers"><code>OutOfIdentifiers</code></a>.</p>
+<p>The probing of new addresses can only be done by the client. The server
+can only probe network paths that were previously advertised by
+<a href="enum.PathEvent.html#variant.New"><code>PathEvent::New</code></a>. If the server tries to probe such an unseen network
+path, this call raises an <a href="enum.Error.html#InvalidState"><code>InvalidState</code></a>.</p>
+<p>The caller might also want to probe an existing path. In such case, it
+triggers a PATH_CHALLENGE frame, but it does not require spare CIDs.</p>
+<p>A server always probes a new path it observes. Calling this method is
+hence not required to validate a new path. However, a server can still
+request an additional path validation of the proposed 4-tuple.</p>
+<p>Calling this method several times before calling <a href="struct.Connection.html#method.send"><code>send()</code></a> or
+<a href="struct.Connection.html#method.send_on_path"><code>send_on_path()</code></a> results in a single probe being generated. An
+application wanting to send multiple in-flight probes must call this
+method again after having sent packets.</p>
+<p>Returns the Destination Connection ID sequence number associated to that
+path.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.migrate_source" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5977-5980">source</a><h4 class="code-header">pub fn <a href="#method.migrate_source" class="fn">migrate_source</a>(&amp;mut self, local_addr: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</h4></section></summary><div class="docblock"><p>Migrates the connection to a new local address <code>local_addr</code>.</p>
+<p>The behavior is similar to <a href="struct.Connection.html#method.migrate"><code>migrate()</code></a>, with the nuance that the
+connection only changes the local address, but not the peer one.</p>
+<p>See <a href="struct.Connection.html#method.migrate"><code>migrate()</code></a> for the full specification of this method.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.migrate" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#5996-6056">source</a><h4 class="code-header">pub fn <a href="#method.migrate" class="fn">migrate</a>(
+    &amp;mut self,
+    local_addr: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>,
+    peer_addr: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</h4></section></summary><div class="docblock"><p>Migrates the connection over the given network path between <code>local_addr</code>
+and <code>peer_addr</code>.</p>
+<p>Connection migration can only be initiated by the client. Calling this
+method as a server returns <a href="enum.Error.html#InvalidState"><code>InvalidState</code></a>.</p>
+<p>To initiate voluntary migration, there should be enough Connection IDs
+at both sides. If this requirement is not satisfied, this call returns
+<a href="enum.Error.html#OutOfIdentifiers"><code>OutOfIdentifiers</code></a>.</p>
+<p>Returns the Destination Connection ID associated to that migrated path.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.new_scid" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6090-6100">source</a><h4 class="code-header">pub fn <a href="#method.new_scid" class="fn">new_scid</a>(
+    &amp;mut self,
+    scid: &amp;<a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'_&gt;,
+    reset_token: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u128.html">u128</a>,
+    retire_if_needed: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</h4></section></summary><div class="docblock"><p>Provides additional source Connection IDs that the peer can use to reach
+this host.</p>
+<p>This triggers sending NEW_CONNECTION_ID frames if the provided Source
+Connection ID is not already present. In the case the caller tries to
+reuse a Connection ID with a different reset token, this raises an
+<code>InvalidState</code>.</p>
+<p>At any time, the peer cannot have more Destination Connection IDs than
+the maximum number of active Connection IDs it negotiated. In such case
+(i.e., when <a href="struct.Connection.html#method.scids_left"><code>scids_left()</code></a> returns 0), if the host agrees to
+request the removal of previous connection IDs, it sets the
+<code>retire_if_needed</code> parameter. Otherwise, an <a href="enum.Error.html#IdLimit"><code>IdLimit</code></a> is returned.</p>
+<p>Note that setting <code>retire_if_needed</code> does not prevent this function from
+returning an <a href="enum.Error.html#IdLimit"><code>IdLimit</code></a> in the case the caller wants to retire still
+unannounced Connection IDs.</p>
+<p>The caller is responsible from ensuring that the provided <code>scid</code> is not
+repeated several times over the connection. quiche ensures that as long
+as the provided Connection ID is still in use (i.e., not retired), it
+does not assign a different sequence number.</p>
+<p>Note that if the host uses zero-length Source Connection IDs, it cannot
+advertise Source Connection IDs and calling this method returns an
+<a href="enum.Error.html#InvalidState"><code>InvalidState</code></a>.</p>
+<p>Returns the sequence number associated to the provided Connection ID.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.active_scids" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6104-6106">source</a><h4 class="code-header">pub fn <a href="#method.active_scids" class="fn">active_scids</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the number of source Connection IDs that are active. This is
+only meaningful if the host uses non-zero length Source Connection IDs.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.scids_left" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6120-6127">source</a><h4 class="code-header">pub fn <a href="#method.scids_left" class="fn">scids_left</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the number of source Connection IDs that should be provided
+to the peer without exceeding the limit it advertised.</p>
+<p>This will automatically limit the number of Connection IDs to the
+minimum between the locally configured active connection ID limit,
+and the one sent by the peer.</p>
+<p>To obtain the maximum possible value allowed by the peer an application
+can instead inspect the <a href="struct.Stats.html#structfield.peer_active_conn_id_limit"><code>peer_active_conn_id_limit</code></a> value.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.retire_dcid" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6148-6185">source</a><h4 class="code-header">pub fn <a href="#method.retire_dcid" class="fn">retire_dcid</a>(&amp;mut self, dcid_seq: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Requests the retirement of the destination Connection ID used by the
+host to reach its peer.</p>
+<p>This triggers sending RETIRE_CONNECTION_ID frames.</p>
+<p>If the application tries to retire a non-existing Destination Connection
+ID sequence number, or if it uses zero-length Destination Connection ID,
+this method returns an <a href="enum.Error.html#InvalidState"><code>InvalidState</code></a>.</p>
+<p>At any time, the host must have at least one Destination ID. If the
+application tries to retire the last one, or if the caller tries to
+retire the destination Connection ID used by the current active path
+while having neither spare Destination Connection IDs nor validated
+network paths, this method returns an <a href="enum.Error.html#OutOfIdentifiers"><code>OutOfIdentifiers</code></a>. This
+behavior prevents the caller from stalling the connection due to the
+lack of validated path to send non-probing packets.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.path_event_next" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6198-6200">source</a><h4 class="code-header">pub fn <a href="#method.path_event_next" class="fn">path_event_next</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.PathEvent.html" title="enum quiche::PathEvent">PathEvent</a>&gt;</h4></section></summary><div class="docblock"><p>Processes path-specific events.</p>
+<p>On success it returns a <a href="enum.PathEvent.html"><code>PathEvent</code></a>, or <code>None</code> when there are no
+events to report. Please refer to <a href="enum.PathEvent.html"><code>PathEvent</code></a> for the exhaustive event
+list.</p>
+<p>Note that all events are edge-triggered, meaning that once reported they
+will not be reported again by calling this method again, until the event
+is re-armed.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.retired_scids" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6203-6205">source</a><h4 class="code-header">pub fn <a href="#method.retired_scids" class="fn">retired_scids</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the number of source Connection IDs that are retired.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.retired_scid_next" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6213-6215">source</a><h4 class="code-header">pub fn <a href="#method.retired_scid_next" class="fn">retired_scid_next</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'static&gt;&gt;</h4></section></summary><div class="docblock"><p>Returns a source <code>ConnectionId</code> that has been retired.</p>
+<p>On success it returns a <a href="struct.ConnectionId.html"><code>ConnectionId</code></a>, or <code>None</code> when there are no
+more retired connection IDs.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.available_dcids" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6222-6224">source</a><h4 class="code-header">pub fn <a href="#method.available_dcids" class="fn">available_dcids</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the number of spare Destination Connection IDs, i.e.,
+Destination Connection IDs that are still unused.</p>
+<p>Note that this function returns 0 if the host uses zero length
+Destination Connection IDs.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.paths_iter" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6273-6288">source</a><h4 class="code-header">pub fn <a href="#method.paths_iter" class="fn">paths_iter</a>(&amp;self, from: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>) -&gt; <a class="struct" href="struct.SocketAddrIter.html" title="struct quiche::SocketAddrIter">SocketAddrIter</a> <a href="#" class="tooltip" data-notable-ty="SocketAddrIter">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns an iterator over destination <code>SockAddr</code>s whose association
+with <code>from</code> forms a known QUIC path on which packets can be sent to.</p>
+<p>This function is typically used in combination with <a href="struct.Connection.html#method.send_on_path"><code>send_on_path()</code></a>.</p>
+<p>Note that the iterator includes all the possible combination of
+destination <code>SockAddr</code>s, even those whose sending is not required now.
+In other words, this is another way for the application to recall from
+past <a href="enum.PathEvent.html#variant.New"><code>PathEvent::New</code></a> events.</p>
+<h6 id="examples-11"><a class="doc-anchor" href="#examples-11">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="comment">// Iterate over possible destinations for the given local `SockAddr`.
+</span><span class="kw">for </span>dest <span class="kw">in </span>conn.paths_iter(local) {
+    <span class="kw">loop </span>{
+        <span class="kw">let </span>(write, send_info) =
+            <span class="kw">match </span>conn.send_on_path(<span class="kw-2">&amp;mut </span>out, <span class="prelude-val">Some</span>(local), <span class="prelude-val">Some</span>(dest)) {
+                <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                <span class="prelude-val">Err</span>(quiche::Error::Done) =&gt; {
+                    <span class="comment">// Done writing for this destination.
+                    </span><span class="kw">break</span>;
+                },
+
+                <span class="prelude-val">Err</span>(e) =&gt; {
+                    <span class="comment">// An error occurred, handle it.
+                    </span><span class="kw">break</span>;
+                },
+            };
+
+        socket.send_to(<span class="kw-2">&amp;</span>out[..write], <span class="kw-2">&amp;</span>send_info.to).unwrap();
+    }
+}</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.close" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6315-6348">source</a><h4 class="code-header">pub fn <a href="#method.close" class="fn">close</a>(&amp;mut self, app: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, err: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, reason: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Closes the connection with the given error and reason.</p>
+<p>The <code>app</code> parameter specifies whether an application close should be
+sent to the peer. Otherwise a normal connection close is sent.</p>
+<p>If <code>app</code> is true but the connection is not in a state that is safe to
+send an application error (not established nor in early data), in
+accordance with <a href="https://www.rfc-editor.org/rfc/rfc9000.html#section-10.2.3-3">RFC
+9000</a>, the
+error code is changed to APPLICATION_ERROR and the reason phrase is
+cleared.</p>
+<p>Returns <a href="enum.Error.html#variant.Done"><code>Done</code></a> if the connection had already been closed.</p>
+<p>Note that the connection will not be closed immediately. An application
+should continue calling the <a href="struct.Connection.html#method.recv"><code>recv()</code></a>, <a href="struct.Connection.html#method.send"><code>send()</code></a>, <a href="struct.Connection.html#method.timeout"><code>timeout()</code></a> and
+<a href="struct.Connection.html#method.on_timeout"><code>on_timeout()</code></a> methods as normal, until the <a href="struct.Connection.html#method.is_closed"><code>is_closed()</code></a> method
+returns <code>true</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.trace_id" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6355-6357">source</a><h4 class="code-header">pub fn <a href="#method.trace_id" class="fn">trace_id</a>(&amp;self) -&gt; &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section></summary><div class="docblock"><p>Returns a string uniquely representing the connection.</p>
+<p>This can be used for logging purposes to differentiate between multiple
+connections.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.application_proto" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6363-6365">source</a><h4 class="code-header">pub fn <a href="#method.application_proto" class="fn">application_proto</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns the negotiated ALPN protocol.</p>
+<p>If no protocol has been negotiated, the returned value is empty.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_name" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6369-6371">source</a><h4 class="code-header">pub fn <a href="#method.server_name" class="fn">server_name</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the server name requested by the client.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.peer_cert" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6375-6377">source</a><h4 class="code-header">pub fn <a href="#method.peer_cert" class="fn">peer_cert</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;</h4></section></summary><div class="docblock"><p>Returns the peer’s leaf certificate (if any) as a DER-encoded buffer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.peer_cert_chain" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6386-6388">source</a><h4 class="code-header">pub fn <a href="#method.peer_cert_chain" class="fn">peer_cert_chain</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;&gt;</h4></section></summary><div class="docblock"><p>Returns the peer’s certificate chain (if any) as a vector of DER-encoded
+buffers.</p>
+<p>The certificate at index 0 is the peer’s leaf certificate, the other
+certificates (if any) are the chain certificate authorities used to
+sign the leaf certificate.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.session" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6397-6399">source</a><h4 class="code-header">pub fn <a href="#method.session" class="fn">session</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;</h4></section></summary><div class="docblock"><p>Returns the serialized cryptographic session for the connection.</p>
+<p>This can be used by a client to cache a connection’s session, and resume
+it later using the <a href="struct.Connection.html#method.set_session"><code>set_session()</code></a> method.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.source_id" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6409-6420">source</a><h4 class="code-header">pub fn <a href="#method.source_id" class="fn">source_id</a>(&amp;self) -&gt; <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'_&gt;</h4></section></summary><div class="docblock"><p>Returns the source connection ID.</p>
+<p>When there are multiple IDs, and if there is an active path, the ID used
+on that path is returned. Otherwise the oldest ID is returned.</p>
+<p>Note that the value returned can change throughout the connection’s
+lifetime.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.source_ids" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6427-6429">source</a><h4 class="code-header">pub fn <a href="#method.source_ids" class="fn">source_ids</a>(&amp;self) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>&lt;Item = &amp;<a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'_&gt;&gt;</h4></section></summary><div class="docblock"><p>Returns all active source connection IDs.</p>
+<p>An iterator is returned for all active IDs (i.e. ones that have not
+been explicitly retired yet).</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.destination_id" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6436-6447">source</a><h4 class="code-header">pub fn <a href="#method.destination_id" class="fn">destination_id</a>(&amp;self) -&gt; <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'_&gt;</h4></section></summary><div class="docblock"><p>Returns the destination connection ID.</p>
+<p>Note that the value returned can change throughout the connection’s
+lifetime.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.is_established" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6451-6453">source</a><h4 class="code-header">pub fn <a href="#method.is_established" class="fn">is_established</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if the connection handshake is complete.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.is_resumed" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6457-6459">source</a><h4 class="code-header">pub fn <a href="#method.is_resumed" class="fn">is_resumed</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if the connection is resumed.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.is_in_early_data" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6464-6466">source</a><h4 class="code-header">pub fn <a href="#method.is_in_early_data" class="fn">is_in_early_data</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if the connection has a pending handshake that has
+progressed enough to send or receive early data.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.is_readable" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6470-6472">source</a><h4 class="code-header">pub fn <a href="#method.is_readable" class="fn">is_readable</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns whether there is stream or DATAGRAM data available to read.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.is_path_validated" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6481-6490">source</a><h4 class="code-header">pub fn <a href="#method.is_path_validated" class="fn">is_path_validated</a>(
+    &amp;self,
+    from: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>,
+    to: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>
+) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</h4></section></summary><div class="docblock"><p>Returns whether the network path with local address <code>from</code> and remote
+address <code>peer</code> has been validated.</p>
+<p>If the 4-tuple does not exist over the connection, returns an
+<a href="enum.Error.html#variant.InvalidState"><code>InvalidState</code></a>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.is_draining" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6508-6510">source</a><h4 class="code-header">pub fn <a href="#method.is_draining" class="fn">is_draining</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if the connection is draining.</p>
+<p>If this returns <code>true</code>, the connection object cannot yet be dropped, but
+no new application data can be sent or received. An application should
+continue calling the <a href="struct.Connection.html#method.recv"><code>recv()</code></a>, <a href="struct.Connection.html#method.timeout"><code>timeout()</code></a>, and <a href="struct.Connection.html#method.on_timeout"><code>on_timeout()</code></a>
+methods as normal, until the <a href="struct.Connection.html#method.is_closed"><code>is_closed()</code></a> method returns <code>true</code>.</p>
+<p>In contrast, once <code>is_draining()</code> returns <code>true</code>, calling <a href="struct.Connection.html#method.send"><code>send()</code></a>
+is not required because no new outgoing packets will be generated.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.is_closed" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6516-6518">source</a><h4 class="code-header">pub fn <a href="#method.is_closed" class="fn">is_closed</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if the connection is closed.</p>
+<p>If this returns true, the connection object can be dropped.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.is_timed_out" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6522-6524">source</a><h4 class="code-header">pub fn <a href="#method.is_timed_out" class="fn">is_timed_out</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if the connection was closed due to the idle timeout.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.peer_error" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6533-6535">source</a><h4 class="code-header">pub fn <a href="#method.peer_error" class="fn">peer_error</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" href="struct.ConnectionError.html" title="struct quiche::ConnectionError">ConnectionError</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the error received from the peer, if any.</p>
+<p>Note that a <code>Some</code> return value does not necessarily imply
+<a href="struct.Connection.html#method.is_closed"><code>is_closed()</code></a> or any other connection state.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.local_error" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6548-6550">source</a><h4 class="code-header">pub fn <a href="#method.local_error" class="fn">local_error</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" href="struct.ConnectionError.html" title="struct quiche::ConnectionError">ConnectionError</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the error <a href="struct.Connection.html#method.close"><code>close()</code></a> was called with, or internally
+created quiche errors, if any.</p>
+<p>Note that a <code>Some</code> return value does not necessarily imply
+<a href="struct.Connection.html#method.is_closed"><code>is_closed()</code></a> or any other connection state.
+<code>Some</code> also does not guarantee that the error has been sent to
+or received by the peer.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.stats" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6554-6571">source</a><h4 class="code-header">pub fn <a href="#method.stats" class="fn">stats</a>(&amp;self) -&gt; <a class="struct" href="struct.Stats.html" title="struct quiche::Stats">Stats</a></h4></section></summary><div class="docblock"><p>Collects and returns statistics about the connection.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.peer_transport_params" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6575-6581">source</a><h4 class="code-header">pub fn <a href="#method.peer_transport_params" class="fn">peer_transport_params</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" href="struct.TransportParams.html" title="struct quiche::TransportParams">TransportParams</a>&gt;</h4></section></summary><div class="docblock"><p>Returns reference to peer’s transport parameters. Returns <code>None</code> if we
+have not yet processed the peer’s transport parameters.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.path_stats" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6585-6587">source</a><h4 class="code-header">pub fn <a href="#method.path_stats" class="fn">path_stats</a>(&amp;self) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>&lt;Item = <a class="struct" href="struct.PathStats.html" title="struct quiche::PathStats">PathStats</a>&gt; + '_</h4></section></summary><div class="docblock"><p>Collects and returns statistics about each known path for the
+connection.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.is_server" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#6590-6592">source</a><h4 class="code-header">pub fn <a href="#method.is_server" class="fn">is_server</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns whether or not this is a server-side connection.</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AsMut%3CSslRef%3E-for-Connection" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#7843-7847">source</a><a href="#impl-AsMut%3CSslRef%3E-for-Connection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html" title="trait core::convert::AsMut">AsMut</a>&lt;SslRef&gt; for <a class="struct" href="struct.Connection.html" title="struct quiche::Connection">Connection</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.as_mut" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#7844-7846">source</a><a href="#method.as_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html#tymethod.as_mut" class="fn">as_mut</a>(&amp;mut self) -&gt; &amp;mut SslRef</h4></section></summary><div class='docblock'>Converts this type into a mutable reference of the (usually inferred) input type.</div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Connection" class="impl"><a href="#impl-Freeze-for-Connection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Connection.html" title="struct quiche::Connection">Connection</a></h3></section><section id="impl-RefUnwindSafe-for-Connection" class="impl"><a href="#impl-RefUnwindSafe-for-Connection" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Connection.html" title="struct quiche::Connection">Connection</a></h3></section><section id="impl-Send-for-Connection" class="impl"><a href="#impl-Send-for-Connection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Connection.html" title="struct quiche::Connection">Connection</a></h3></section><section id="impl-Sync-for-Connection" class="impl"><a href="#impl-Sync-for-Connection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Connection.html" title="struct quiche::Connection">Connection</a></h3></section><section id="impl-Unpin-for-Connection" class="impl"><a href="#impl-Unpin-for-Connection" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Connection.html" title="struct quiche::Connection">Connection</a></h3></section><section id="impl-UnwindSafe-for-Connection" class="impl"><a href="#impl-UnwindSafe-for-Connection" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Connection.html" title="struct quiche::Connection">Connection</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div><script type="text/json" id="notable-traits-data">{"&[u8]":"<h3>Notable traits for <code>&amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</div>","SocketAddrIter":"<h3>Notable traits for <code><a class=\"struct\" href=\"struct.SocketAddrIter.html\" title=\"struct quiche::SocketAddrIter\">SocketAddrIter</a></code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"struct.SocketAddrIter.html\" title=\"struct quiche::SocketAddrIter\">SocketAddrIter</a></div><div class=\"where\">    type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html\" title=\"enum core::net::socket_addr::SocketAddr\">SocketAddr</a>;</div>","StreamIter":"<h3>Notable traits for <code><a class=\"struct\" href=\"struct.StreamIter.html\" title=\"struct quiche::StreamIter\">StreamIter</a></code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"struct.StreamIter.html\" title=\"struct quiche::StreamIter\">StreamIter</a></div><div class=\"where\">    type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u64.html\">u64</a>;</div>"}</script></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/struct.ConnectionError.html b/quiche/struct.ConnectionError.html
new file mode 100644
index 0000000..857d216
--- /dev/null
+++ b/quiche/struct.ConnectionError.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Represents information carried by `CONNECTION_CLOSE` frames."><title>ConnectionError in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">ConnectionError</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.error_code">error_code</a></li><li><a href="#structfield.is_app">is_app</a></li><li><a href="#structfield.reason">reason</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-ConnectionError">Clone</a></li><li><a href="#impl-Debug-for-ConnectionError">Debug</a></li><li><a href="#impl-Eq-for-ConnectionError">Eq</a></li><li><a href="#impl-PartialEq-for-ConnectionError">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-ConnectionError">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-ConnectionError">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-ConnectionError">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ConnectionError">Send</a></li><li><a href="#impl-Sync-for-ConnectionError">Sync</a></li><li><a href="#impl-Unpin-for-ConnectionError">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ConnectionError">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">quiche</a>::<wbr><a class="struct" href="#">ConnectionError</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#739-748">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct ConnectionError {
+    pub is_app: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    pub error_code: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub reason: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;,
+}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Represents information carried by <code>CONNECTION_CLOSE</code> frames.</p>
+</div></details><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.is_app" class="structfield section-header"><a href="#structfield.is_app" class="anchor field">§</a><code>is_app: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether the error came from the application or the transport layer.</p>
+</div><span id="structfield.error_code" class="structfield section-header"><a href="#structfield.error_code" class="anchor field">§</a><code>error_code: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The error code carried by the <code>CONNECTION_CLOSE</code> frame.</p>
+</div><span id="structfield.reason" class="structfield section-header"><a href="#structfield.reason" class="anchor field">§</a><code>reason: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</code></span><div class="docblock"><p>The reason carried by the <code>CONNECTION_CLOSE</code> frame.</p>
+</div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ConnectionError" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#738">source</a><a href="#impl-Clone-for-ConnectionError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.ConnectionError.html" title="struct quiche::ConnectionError">ConnectionError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#738">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.ConnectionError.html" title="struct quiche::ConnectionError">ConnectionError</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-ConnectionError" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#738">source</a><a href="#impl-Debug-for-ConnectionError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.ConnectionError.html" title="struct quiche::ConnectionError">ConnectionError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#738">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-ConnectionError" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#738">source</a><a href="#impl-PartialEq-for-ConnectionError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.ConnectionError.html" title="struct quiche::ConnectionError">ConnectionError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#738">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.ConnectionError.html" title="struct quiche::ConnectionError">ConnectionError</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-ConnectionError" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#738">source</a><a href="#impl-Eq-for-ConnectionError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.ConnectionError.html" title="struct quiche::ConnectionError">ConnectionError</a></h3></section><section id="impl-StructuralPartialEq-for-ConnectionError" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#738">source</a><a href="#impl-StructuralPartialEq-for-ConnectionError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.ConnectionError.html" title="struct quiche::ConnectionError">ConnectionError</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-ConnectionError" class="impl"><a href="#impl-Freeze-for-ConnectionError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.ConnectionError.html" title="struct quiche::ConnectionError">ConnectionError</a></h3></section><section id="impl-RefUnwindSafe-for-ConnectionError" class="impl"><a href="#impl-RefUnwindSafe-for-ConnectionError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.ConnectionError.html" title="struct quiche::ConnectionError">ConnectionError</a></h3></section><section id="impl-Send-for-ConnectionError" class="impl"><a href="#impl-Send-for-ConnectionError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.ConnectionError.html" title="struct quiche::ConnectionError">ConnectionError</a></h3></section><section id="impl-Sync-for-ConnectionError" class="impl"><a href="#impl-Sync-for-ConnectionError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.ConnectionError.html" title="struct quiche::ConnectionError">ConnectionError</a></h3></section><section id="impl-Unpin-for-ConnectionError" class="impl"><a href="#impl-Unpin-for-ConnectionError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.ConnectionError.html" title="struct quiche::ConnectionError">ConnectionError</a></h3></section><section id="impl-UnwindSafe-for-ConnectionError" class="impl"><a href="#impl-UnwindSafe-for-ConnectionError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.ConnectionError.html" title="struct quiche::ConnectionError">ConnectionError</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/struct.ConnectionId.html b/quiche/struct.ConnectionId.html
new file mode 100644
index 0000000..8969a2e
--- /dev/null
+++ b/quiche/struct.ConnectionId.html
@@ -0,0 +1,1106 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A QUIC connection ID."><title>ConnectionId in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">ConnectionId</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.from_ref">from_ref</a></li><li><a href="#method.from_vec">from_vec</a></li><li><a href="#method.into_owned">into_owned</a></li></ul><h3><a href="#deref-methods-%5Bu8%5D">Methods from Deref&lt;Target=[u8]&gt;</a></h3><ul class="block deref-methods"><li><a href="#method.align_to">align_to</a></li><li><a href="#method.array_chunks">array_chunks</a></li><li><a href="#method.array_windows">array_windows</a></li><li><a href="#method.as_ascii">as_ascii</a></li><li><a href="#method.as_ascii_unchecked">as_ascii_unchecked</a></li><li><a href="#method.as_bytes">as_bytes</a></li><li><a href="#method.as_chunks">as_chunks</a></li><li><a href="#method.as_chunks_unchecked">as_chunks_unchecked</a></li><li><a href="#method.as_ptr">as_ptr</a></li><li><a href="#method.as_ptr_range">as_ptr_range</a></li><li><a href="#method.as_rchunks">as_rchunks</a></li><li><a href="#method.as_simd">as_simd</a></li><li><a href="#method.as_str">as_str</a></li><li><a href="#method.binary_search">binary_search</a></li><li><a href="#method.binary_search_by">binary_search_by</a></li><li><a href="#method.binary_search_by_key">binary_search_by_key</a></li><li><a href="#method.chunk_by">chunk_by</a></li><li><a href="#method.chunks">chunks</a></li><li><a href="#method.chunks_exact">chunks_exact</a></li><li><a href="#method.concat">concat</a></li><li><a href="#method.connect">connect</a></li><li><a href="#method.contains">contains</a></li><li><a href="#method.ends_with">ends_with</a></li><li><a href="#method.eq_ignore_ascii_case">eq_ignore_ascii_case</a></li><li><a href="#method.escape_ascii">escape_ascii</a></li><li><a href="#method.first">first</a></li><li><a href="#method.first_chunk">first_chunk</a></li><li><a href="#method.flatten">flatten</a></li><li><a href="#method.get">get</a></li><li><a href="#method.get_unchecked">get_unchecked</a></li><li><a href="#method.is_ascii">is_ascii</a></li><li><a href="#method.is_empty">is_empty</a></li><li><a href="#method.is_sorted">is_sorted</a></li><li><a href="#method.is_sorted_by">is_sorted_by</a></li><li><a href="#method.is_sorted_by_key">is_sorted_by_key</a></li><li><a href="#method.iter">iter</a></li><li><a href="#method.join">join</a></li><li><a href="#method.last">last</a></li><li><a href="#method.last_chunk">last_chunk</a></li><li><a href="#method.len">len</a></li><li><a href="#method.partition_point">partition_point</a></li><li><a href="#method.rchunks">rchunks</a></li><li><a href="#method.rchunks_exact">rchunks_exact</a></li><li><a href="#method.repeat">repeat</a></li><li><a href="#method.rsplit">rsplit</a></li><li><a href="#method.rsplit_once">rsplit_once</a></li><li><a href="#method.rsplitn">rsplitn</a></li><li><a href="#method.split">split</a></li><li><a href="#method.split_at">split_at</a></li><li><a href="#method.split_at_checked">split_at_checked</a></li><li><a href="#method.split_at_unchecked">split_at_unchecked</a></li><li><a href="#method.split_first">split_first</a></li><li><a href="#method.split_first_chunk">split_first_chunk</a></li><li><a href="#method.split_inclusive">split_inclusive</a></li><li><a href="#method.split_last">split_last</a></li><li><a href="#method.split_last_chunk">split_last_chunk</a></li><li><a href="#method.split_once">split_once</a></li><li><a href="#method.splitn">splitn</a></li><li><a href="#method.starts_with">starts_with</a></li><li><a href="#method.strip_prefix">strip_prefix</a></li><li><a href="#method.strip_suffix">strip_suffix</a></li><li><a href="#method.to_ascii_lowercase">to_ascii_lowercase</a></li><li><a href="#method.to_ascii_uppercase">to_ascii_uppercase</a></li><li><a href="#method.to_vec">to_vec</a></li><li><a href="#method.to_vec_in">to_vec_in</a></li><li><a href="#method.trim_ascii">trim_ascii</a></li><li><a href="#method.trim_ascii_end">trim_ascii_end</a></li><li><a href="#method.trim_ascii_start">trim_ascii_start</a></li><li><a href="#method.windows">windows</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-AsRef%3C%5Bu8%5D%3E-for-ConnectionId%3C'a%3E">AsRef&lt;[u8]&gt;</a></li><li><a href="#impl-Clone-for-ConnectionId%3C'a%3E">Clone</a></li><li><a href="#impl-Debug-for-ConnectionId%3C'a%3E">Debug</a></li><li><a href="#impl-Default-for-ConnectionId%3C'a%3E">Default</a></li><li><a href="#impl-Deref-for-ConnectionId%3C'a%3E">Deref</a></li><li><a href="#impl-Eq-for-ConnectionId%3C'a%3E">Eq</a></li><li><a href="#impl-From%3CConnectionId%3C'a%3E%3E-for-Vec%3Cu8%3E">From&lt;ConnectionId&lt;&#x27;a&gt;&gt;</a></li><li><a href="#impl-From%3CVec%3Cu8%3E%3E-for-ConnectionId%3C'a%3E">From&lt;Vec&lt;u8&gt;&gt;</a></li><li><a href="#impl-Hash-for-ConnectionId%3C'a%3E">Hash</a></li><li><a href="#impl-PartialEq-for-ConnectionId%3C'a%3E">PartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-ConnectionId%3C'a%3E">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-ConnectionId%3C'a%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ConnectionId%3C'a%3E">Send</a></li><li><a href="#impl-Sync-for-ConnectionId%3C'a%3E">Sync</a></li><li><a href="#impl-Unpin-for-ConnectionId%3C'a%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ConnectionId%3C'a%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">quiche</a>::<wbr><a class="struct" href="#">ConnectionId</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/packet.rs.html#177">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct ConnectionId&lt;'a&gt;(<span class="comment">/* private fields */</span>);</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A QUIC connection ID.</p>
+</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-ConnectionId%3C'a%3E" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#184-202">source</a><a href="#impl-ConnectionId%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from_vec" class="method"><a class="src rightside" href="../src/quiche/packet.rs.html#187-189">source</a><h4 class="code-header">pub const fn <a href="#method.from_vec" class="fn">from_vec</a>(cid: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;) -&gt; Self</h4></section></summary><div class="docblock"><p>Creates a new connection ID from the given vector.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.from_ref" class="method"><a class="src rightside" href="../src/quiche/packet.rs.html#193-195">source</a><h4 class="code-header">pub const fn <a href="#method.from_ref" class="fn">from_ref</a>(cid: &amp;'a [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; Self</h4></section></summary><div class="docblock"><p>Creates a new connection ID from the given slice.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.into_owned" class="method"><a class="src rightside" href="../src/quiche/packet.rs.html#199-201">source</a><h4 class="code-header">pub fn <a href="#method.into_owned" class="fn">into_owned</a>(self) -&gt; <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'static&gt;</h4></section></summary><div class="docblock"><p>Returns a new owning connection ID from the given existing one.</p>
+</div></details></div></details></div><h2 id="deref-methods-%5Bu8%5D" class="section-header"><span>Methods from <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>&lt;Target = [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;</span><a href="#deref-methods-%5Bu8%5D" class="anchor">§</a></h2><div id="deref-methods-%5Bu8%5D-1" class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.is_ascii" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.23.0">1.23.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#17">source</a></span><h4 class="code-header">pub fn <a href="#method.is_ascii" class="fn">is_ascii</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Checks if all bytes in this slice are within the ASCII range.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.as_ascii" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#26">source</a><h4 class="code-header">pub fn <a href="#method.as_ascii" class="fn">as_ascii</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;[<a class="enum" href="https://doc.rust-lang.org/nightly/core/ascii/ascii_char/enum.AsciiChar.html" title="enum core::ascii::ascii_char::AsciiChar">AsciiChar</a>]&gt;</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>ascii_char</code>)</span></div></span></summary><div class="docblock"><p>If this slice <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_ascii" title="method slice::is_ascii"><code>is_ascii</code></a>, returns it as a slice of
+<a href="https://doc.rust-lang.org/nightly/core/ascii/ascii_char/enum.AsciiChar.html" title="enum core::ascii::ascii_char::AsciiChar">ASCII characters</a>, otherwise returns <code>None</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.as_ascii_unchecked" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#44">source</a><h4 class="code-header">pub unsafe fn <a href="#method.as_ascii_unchecked" class="fn">as_ascii_unchecked</a>(&amp;self) -&gt; &amp;[<a class="enum" href="https://doc.rust-lang.org/nightly/core/ascii/ascii_char/enum.AsciiChar.html" title="enum core::ascii::ascii_char::AsciiChar">AsciiChar</a>]</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>ascii_char</code>)</span></div></span></summary><div class="docblock"><p>Converts this slice of bytes into a slice of ASCII characters,
+without checking whether they’re valid.</p>
+<h5 id="safety"><a class="doc-anchor" href="#safety">§</a>Safety</h5>
+<p>Every byte in the slice must be in <code>0..=127</code>, or else this is UB.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.eq_ignore_ascii_case" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.23.0">1.23.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#58">source</a></span><h4 class="code-header">pub fn <a href="#method.eq_ignore_ascii_case" class="fn">eq_ignore_ascii_case</a>(&amp;self, other: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Checks that two slices are an ASCII case-insensitive match.</p>
+<p>Same as <code>to_ascii_lowercase(a) == to_ascii_lowercase(b)</code>,
+but without allocating and copying temporaries.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.escape_ascii" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.60.0">1.60.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#110">source</a></span><h4 class="code-header">pub fn <a href="#method.escape_ascii" class="fn">escape_ascii</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/ascii/struct.EscapeAscii.html" title="struct core::slice::ascii::EscapeAscii">EscapeAscii</a>&lt;'_&gt;</h4></section></summary><div class="docblock"><p>Returns an iterator that produces an escaped version of this slice,
+treating it as an ASCII string.</p>
+<h5 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code>
+<span class="kw">let </span>s = <span class="string">b"0\t\r\n'\"\\\x9d"</span>;
+<span class="kw">let </span>escaped = s.escape_ascii().to_string();
+<span class="macro">assert_eq!</span>(escaped, <span class="string">"0\\t\\r\\n\\'\\\"\\\\\\x9d"</span>);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.trim_ascii_start" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#130">source</a><h4 class="code-header">pub fn <a href="#method.trim_ascii_start" class="fn">trim_ascii_start</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>byte_slice_trim_ascii</code>)</span></div></span></summary><div class="docblock"><p>Returns a byte slice with leading ASCII whitespace bytes removed.</p>
+<p>‘Whitespace’ refers to the definition used by
+<code>u8::is_ascii_whitespace</code>.</p>
+<h5 id="examples-1"><a class="doc-anchor" href="#examples-1">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(byte_slice_trim_ascii)]
+
+</span><span class="macro">assert_eq!</span>(<span class="string">b" \t hello world\n"</span>.trim_ascii_start(), <span class="string">b"hello world\n"</span>);
+<span class="macro">assert_eq!</span>(<span class="string">b"  "</span>.trim_ascii_start(), <span class="string">b""</span>);
+<span class="macro">assert_eq!</span>(<span class="string">b""</span>.trim_ascii_start(), <span class="string">b""</span>);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.trim_ascii_end" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#160">source</a><h4 class="code-header">pub fn <a href="#method.trim_ascii_end" class="fn">trim_ascii_end</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>byte_slice_trim_ascii</code>)</span></div></span></summary><div class="docblock"><p>Returns a byte slice with trailing ASCII whitespace bytes removed.</p>
+<p>‘Whitespace’ refers to the definition used by
+<code>u8::is_ascii_whitespace</code>.</p>
+<h5 id="examples-2"><a class="doc-anchor" href="#examples-2">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(byte_slice_trim_ascii)]
+
+</span><span class="macro">assert_eq!</span>(<span class="string">b"\r hello world\n "</span>.trim_ascii_end(), <span class="string">b"\r hello world"</span>);
+<span class="macro">assert_eq!</span>(<span class="string">b"  "</span>.trim_ascii_end(), <span class="string">b""</span>);
+<span class="macro">assert_eq!</span>(<span class="string">b""</span>.trim_ascii_end(), <span class="string">b""</span>);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.trim_ascii" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#191">source</a><h4 class="code-header">pub fn <a href="#method.trim_ascii" class="fn">trim_ascii</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>byte_slice_trim_ascii</code>)</span></div></span></summary><div class="docblock"><p>Returns a byte slice with leading and trailing ASCII whitespace bytes
+removed.</p>
+<p>‘Whitespace’ refers to the definition used by
+<code>u8::is_ascii_whitespace</code>.</p>
+<h5 id="examples-3"><a class="doc-anchor" href="#examples-3">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(byte_slice_trim_ascii)]
+
+</span><span class="macro">assert_eq!</span>(<span class="string">b"\r hello world\n "</span>.trim_ascii(), <span class="string">b"hello world"</span>);
+<span class="macro">assert_eq!</span>(<span class="string">b"  "</span>.trim_ascii(), <span class="string">b""</span>);
+<span class="macro">assert_eq!</span>(<span class="string">b""</span>.trim_ascii(), <span class="string">b""</span>);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.flatten" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4545">source</a><h4 class="code-header">pub fn <a href="#method.flatten" class="fn">flatten</a>(&amp;self) -&gt; &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_flatten</code>)</span></div></span></summary><div class="docblock"><p>Takes a <code>&amp;[[T; N]]</code>, and flattens it to a <code>&amp;[T]</code>.</p>
+<h5 id="panics"><a class="doc-anchor" href="#panics">§</a>Panics</h5>
+<p>This panics if the length of the resulting slice would overflow a <code>usize</code>.</p>
+<p>This is only possible when flattening a slice of arrays of zero-sized
+types, and thus tends to be irrelevant in practice. If
+<code>size_of::&lt;T&gt;() &gt; 0</code>, this will never panic.</p>
+<h5 id="examples-4"><a class="doc-anchor" href="#examples-4">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_flatten)]
+
+</span><span class="macro">assert_eq!</span>([[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>], [<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]].flatten(), <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]);
+
+<span class="macro">assert_eq!</span>(
+    [[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>], [<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]].flatten(),
+    [[<span class="number">1</span>, <span class="number">2</span>], [<span class="number">3</span>, <span class="number">4</span>], [<span class="number">5</span>, <span class="number">6</span>]].flatten(),
+);
+
+<span class="kw">let </span>slice_of_empty_arrays: <span class="kw-2">&amp;</span>[[i32; <span class="number">0</span>]] = <span class="kw-2">&amp;</span>[[], [], [], [], []];
+<span class="macro">assert!</span>(slice_of_empty_arrays.flatten().is_empty());
+
+<span class="kw">let </span>empty_slice_of_arrays: <span class="kw-2">&amp;</span>[[u32; <span class="number">10</span>]] = <span class="kw-2">&amp;</span>[];
+<span class="macro">assert!</span>(empty_slice_of_arrays.flatten().is_empty());</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.as_str" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/ascii/ascii_char.rs.html#560">source</a><h4 class="code-header">pub fn <a href="#method.as_str" class="fn">as_str</a>(&amp;self) -&gt; &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>ascii_char</code>)</span></div></span></summary><div class="docblock"><p>Views this slice of ASCII characters as a UTF-8 <code>str</code>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.as_bytes" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/ascii/ascii_char.rs.html#571">source</a><h4 class="code-header">pub fn <a href="#method.as_bytes" class="fn">as_bytes</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>ascii_char</code>)</span></div></span></summary><div class="docblock"><p>Views this slice of ASCII characters as a slice of <code>u8</code> bytes.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.len" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#138">source</a></span><h4 class="code-header">pub fn <a href="#method.len" class="fn">len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the number of elements in the slice.</p>
+<h5 id="examples-5"><a class="doc-anchor" href="#examples-5">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>a = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>];
+<span class="macro">assert_eq!</span>(a.len(), <span class="number">3</span>);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.is_empty" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#157">source</a></span><h4 class="code-header">pub fn <a href="#method.is_empty" class="fn">is_empty</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if the slice has a length of 0.</p>
+<h5 id="examples-6"><a class="doc-anchor" href="#examples-6">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>a = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>];
+<span class="macro">assert!</span>(!a.is_empty());
+
+<span class="kw">let </span>b: <span class="kw-2">&amp;</span>[i32] = <span class="kw-2">&amp;</span>[];
+<span class="macro">assert!</span>(b.is_empty());</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.first" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#176">source</a></span><h4 class="code-header">pub fn <a href="#method.first" class="fn">first</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the first element of the slice, or <code>None</code> if it is empty.</p>
+<h5 id="examples-7"><a class="doc-anchor" href="#examples-7">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
+<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="number">10</span>), v.first());
+
+<span class="kw">let </span>w: <span class="kw-2">&amp;</span>[i32] = <span class="kw-2">&amp;</span>[];
+<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, w.first());</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.split_first" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#219">source</a></span><h4 class="code-header">pub fn <a href="#method.split_first" class="fn">split_first</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)&gt;</h4></section></summary><div class="docblock"><p>Returns the first and all the rest of the elements of the slice, or <code>None</code> if it is empty.</p>
+<h5 id="examples-8"><a class="doc-anchor" href="#examples-8">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>];
+
+<span class="kw">if let </span><span class="prelude-val">Some</span>((first, elements)) = x.split_first() {
+    <span class="macro">assert_eq!</span>(first, <span class="kw-2">&amp;</span><span class="number">0</span>);
+    <span class="macro">assert_eq!</span>(elements, <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>]);
+}</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.split_last" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#261">source</a></span><h4 class="code-header">pub fn <a href="#method.split_last" class="fn">split_last</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)&gt;</h4></section></summary><div class="docblock"><p>Returns the last and all the rest of the elements of the slice, or <code>None</code> if it is empty.</p>
+<h5 id="examples-9"><a class="doc-anchor" href="#examples-9">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>];
+
+<span class="kw">if let </span><span class="prelude-val">Some</span>((last, elements)) = x.split_last() {
+    <span class="macro">assert_eq!</span>(last, <span class="kw-2">&amp;</span><span class="number">2</span>);
+    <span class="macro">assert_eq!</span>(elements, <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">1</span>]);
+}</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.last" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#302">source</a></span><h4 class="code-header">pub fn <a href="#method.last" class="fn">last</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the last element of the slice, or <code>None</code> if it is empty.</p>
+<h5 id="examples-10"><a class="doc-anchor" href="#examples-10">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
+<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="number">30</span>), v.last());
+
+<span class="kw">let </span>w: <span class="kw-2">&amp;</span>[i32] = <span class="kw-2">&amp;</span>[];
+<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, w.last());</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.first_chunk" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.77.0">1.77.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#348">source</a></span><h4 class="code-header">pub fn <a href="#method.first_chunk" class="fn">first_chunk</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>&gt;</h4></section></summary><div class="docblock"><p>Return an array reference to the first <code>N</code> items in the slice.</p>
+<p>If the slice is not at least <code>N</code> in length, this will return <code>None</code>.</p>
+<h5 id="examples-11"><a class="doc-anchor" href="#examples-11">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>u = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
+<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>]), u.first_chunk::&lt;<span class="number">2</span>&gt;());
+
+<span class="kw">let </span>v: <span class="kw-2">&amp;</span>[i32] = <span class="kw-2">&amp;</span>[<span class="number">10</span>];
+<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, v.first_chunk::&lt;<span class="number">2</span>&gt;());
+
+<span class="kw">let </span>w: <span class="kw-2">&amp;</span>[i32] = <span class="kw-2">&amp;</span>[];
+<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[]), w.first_chunk::&lt;<span class="number">0</span>&gt;());</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.split_first_chunk" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.77.0">1.77.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#408">source</a></span><h4 class="code-header">pub fn <a href="#method.split_first_chunk" class="fn">split_first_chunk</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)&gt;</h4></section></summary><div class="docblock"><p>Return an array reference to the first <code>N</code> items in the slice and the remaining slice.</p>
+<p>If the slice is not at least <code>N</code> in length, this will return <code>None</code>.</p>
+<h5 id="examples-12"><a class="doc-anchor" href="#examples-12">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>];
+
+<span class="kw">if let </span><span class="prelude-val">Some</span>((first, elements)) = x.split_first_chunk::&lt;<span class="number">2</span>&gt;() {
+    <span class="macro">assert_eq!</span>(first, <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">1</span>]);
+    <span class="macro">assert_eq!</span>(elements, <span class="kw-2">&amp;</span>[<span class="number">2</span>]);
+}
+
+<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, x.split_first_chunk::&lt;<span class="number">4</span>&gt;());</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.split_last_chunk" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.77.0">1.77.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#478">source</a></span><h4 class="code-header">pub fn <a href="#method.split_last_chunk" class="fn">split_last_chunk</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>)&gt;</h4></section></summary><div class="docblock"><p>Return an array reference to the last <code>N</code> items in the slice and the remaining slice.</p>
+<p>If the slice is not at least <code>N</code> in length, this will return <code>None</code>.</p>
+<h5 id="examples-13"><a class="doc-anchor" href="#examples-13">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>];
+
+<span class="kw">if let </span><span class="prelude-val">Some</span>((elements, last)) = x.split_last_chunk::&lt;<span class="number">2</span>&gt;() {
+    <span class="macro">assert_eq!</span>(elements, <span class="kw-2">&amp;</span>[<span class="number">0</span>]);
+    <span class="macro">assert_eq!</span>(last, <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>]);
+}
+
+<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, x.split_last_chunk::&lt;<span class="number">4</span>&gt;());</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.last_chunk" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.77.0">1.77.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#548">source</a></span><h4 class="code-header">pub fn <a href="#method.last_chunk" class="fn">last_chunk</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>&gt;</h4></section></summary><div class="docblock"><p>Return an array reference to the last <code>N</code> items in the slice.</p>
+<p>If the slice is not at least <code>N</code> in length, this will return <code>None</code>.</p>
+<h5 id="examples-14"><a class="doc-anchor" href="#examples-14">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>u = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
+<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">40</span>, <span class="number">30</span>]), u.last_chunk::&lt;<span class="number">2</span>&gt;());
+
+<span class="kw">let </span>v: <span class="kw-2">&amp;</span>[i32] = <span class="kw-2">&amp;</span>[<span class="number">10</span>];
+<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, v.last_chunk::&lt;<span class="number">2</span>&gt;());
+
+<span class="kw">let </span>w: <span class="kw-2">&amp;</span>[i32] = <span class="kw-2">&amp;</span>[];
+<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[]), w.last_chunk::&lt;<span class="number">0</span>&gt;());</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#617-619">source</a></span><h4 class="code-header">pub fn <a href="#method.get" class="fn">get</a>&lt;I&gt;(&amp;self, index: I) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output" title="type core::slice::index::SliceIndex::Output">Output</a>&gt;<div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;,</div></h4></section></summary><div class="docblock"><p>Returns a reference to an element or subslice depending on the type of
+index.</p>
+<ul>
+<li>If given a position, returns a reference to the element at that
+position or <code>None</code> if out of bounds.</li>
+<li>If given a range, returns the subslice corresponding to that range,
+or <code>None</code> if out of bounds.</li>
+</ul>
+<h5 id="examples-15"><a class="doc-anchor" href="#examples-15">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
+<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="number">40</span>), v.get(<span class="number">1</span>));
+<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>][..]), v.get(<span class="number">0</span>..<span class="number">2</span>));
+<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, v.get(<span class="number">3</span>));
+<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, v.get(<span class="number">0</span>..<span class="number">4</span>));</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get_unchecked" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#679-681">source</a></span><h4 class="code-header">pub unsafe fn <a href="#method.get_unchecked" class="fn">get_unchecked</a>&lt;I&gt;(
+    &amp;self,
+    index: I
+) -&gt; &amp;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output" title="type core::slice::index::SliceIndex::Output">Output</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;,</div></h4></section></summary><div class="docblock"><p>Returns a reference to an element or subslice, without doing bounds
+checking.</p>
+<p>For a safe alternative see <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.get" title="method slice::get"><code>get</code></a>.</p>
+<h5 id="safety-1"><a class="doc-anchor" href="#safety-1">§</a>Safety</h5>
+<p>Calling this method with an out-of-bounds index is <em><a href="https://doc.rust-lang.org/reference/behavior-considered-undefined.html">undefined behavior</a></em>
+even if the resulting reference is not used.</p>
+<p>You can think of this like <code>.get(index).unwrap_unchecked()</code>.  It’s UB
+to call <code>.get_unchecked(len)</code>, even if you immediately convert to a
+pointer.  And it’s UB to call <code>.get_unchecked(..len + 1)</code>,
+<code>.get_unchecked(..=len)</code>, or similar.</p>
+<h5 id="examples-16"><a class="doc-anchor" href="#examples-16">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>];
+
+<span class="kw">unsafe </span>{
+    <span class="macro">assert_eq!</span>(x.get_unchecked(<span class="number">1</span>), <span class="kw-2">&amp;</span><span class="number">2</span>);
+}</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.as_ptr" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#762">source</a></span><h4 class="code-header">pub fn <a href="#method.as_ptr" class="fn">as_ptr</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.pointer.html">*const T</a></h4></section></summary><div class="docblock"><p>Returns a raw pointer to the slice’s buffer.</p>
+<p>The caller must ensure that the slice outlives the pointer this
+function returns, or else it will end up pointing to garbage.</p>
+<p>The caller must also ensure that the memory the pointer (non-transitively) points to
+is never written to (except inside an <code>UnsafeCell</code>) using this pointer or any pointer
+derived from it. If you need to mutate the contents of the slice, use <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_mut_ptr" title="method slice::as_mut_ptr"><code>as_mut_ptr</code></a>.</p>
+<p>Modifying the container referenced by this slice may cause its buffer
+to be reallocated, which would also make any pointers to it invalid.</p>
+<h5 id="examples-17"><a class="doc-anchor" href="#examples-17">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>];
+<span class="kw">let </span>x_ptr = x.as_ptr();
+
+<span class="kw">unsafe </span>{
+    <span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..x.len() {
+        <span class="macro">assert_eq!</span>(x.get_unchecked(i), <span class="kw-2">&amp;*</span>x_ptr.add(i));
+    }
+}</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.as_ptr_range" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.48.0">1.48.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#829">source</a></span><h4 class="code-header">pub fn <a href="#method.as_ptr_range" class="fn">as_ptr_range</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.pointer.html">*const T</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the two raw pointers spanning the slice.</p>
+<p>The returned range is half-open, which means that the end pointer
+points <em>one past</em> the last element of the slice. This way, an empty
+slice is represented by two equal pointers, and the difference between
+the two pointers represents the size of the slice.</p>
+<p>See <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_ptr" title="method slice::as_ptr"><code>as_ptr</code></a> for warnings on using these pointers. The end pointer
+requires extra caution, as it does not point to a valid element in the
+slice.</p>
+<p>This function is useful for interacting with foreign interfaces which
+use two pointers to refer to a range of elements in memory, as is
+common in C++.</p>
+<p>It can also be useful to check if a pointer to an element refers to an
+element of this slice:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>a = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>];
+<span class="kw">let </span>x = <span class="kw-2">&amp;</span>a[<span class="number">1</span>] <span class="kw">as </span><span class="kw-2">*const </span><span class="kw">_</span>;
+<span class="kw">let </span>y = <span class="kw-2">&amp;</span><span class="number">5 </span><span class="kw">as </span><span class="kw-2">*const </span><span class="kw">_</span>;
+
+<span class="macro">assert!</span>(a.as_ptr_range().contains(<span class="kw-2">&amp;</span>x));
+<span class="macro">assert!</span>(!a.as_ptr_range().contains(<span class="kw-2">&amp;</span>y));</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.iter" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1034">source</a></span><h4 class="code-header">pub fn <a href="#method.iter" class="fn">iter</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.Iter.html" title="struct core::slice::iter::Iter">Iter</a>&lt;'_, T&gt;</h4></section></summary><div class="docblock"><p>Returns an iterator over the slice.</p>
+<p>The iterator yields all items from start to end.</p>
+<h5 id="examples-18"><a class="doc-anchor" href="#examples-18">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>];
+<span class="kw">let </span><span class="kw-2">mut </span>iterator = x.iter();
+
+<span class="macro">assert_eq!</span>(iterator.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="number">1</span>));
+<span class="macro">assert_eq!</span>(iterator.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="number">2</span>));
+<span class="macro">assert_eq!</span>(iterator.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="number">4</span>));
+<span class="macro">assert_eq!</span>(iterator.next(), <span class="prelude-val">None</span>);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.windows" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1102">source</a></span><h4 class="code-header">pub fn <a href="#method.windows" class="fn">windows</a>(&amp;self, size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.Windows.html" title="struct core::slice::iter::Windows">Windows</a>&lt;'_, T&gt;</h4></section></summary><div class="docblock"><p>Returns an iterator over all contiguous windows of length
+<code>size</code>. The windows overlap. If the slice is shorter than
+<code>size</code>, the iterator returns no values.</p>
+<h5 id="panics-1"><a class="doc-anchor" href="#panics-1">§</a>Panics</h5>
+<p>Panics if <code>size</code> is 0.</p>
+<h5 id="examples-19"><a class="doc-anchor" href="#examples-19">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>];
+<span class="kw">let </span><span class="kw-2">mut </span>iter = slice.windows(<span class="number">3</span>);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>]);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>]);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>]);
+<span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
+<p>If the slice is shorter than <code>size</code>:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="string">'f'</span>, <span class="string">'o'</span>, <span class="string">'o'</span>];
+<span class="kw">let </span><span class="kw-2">mut </span>iter = slice.windows(<span class="number">4</span>);
+<span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
+<p>There’s no <code>windows_mut</code>, as that existing would let safe code violate the
+“only one <code>&amp;mut</code> at a time to the same thing” rule.  However, you can sometimes
+use <a href="https://doc.rust-lang.org/nightly/core/cell/struct.Cell.html#method.as_slice_of_cells" title="method core::cell::Cell::as_slice_of_cells"><code>Cell::as_slice_of_cells</code></a> in
+conjunction with <code>windows</code> to accomplish something similar:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::cell::Cell;
+
+<span class="kw">let </span><span class="kw-2">mut </span>array = [<span class="string">'R'</span>, <span class="string">'u'</span>, <span class="string">'s'</span>, <span class="string">'t'</span>, <span class="string">' '</span>, <span class="string">'2'</span>, <span class="string">'0'</span>, <span class="string">'1'</span>, <span class="string">'5'</span>];
+<span class="kw">let </span>slice = <span class="kw-2">&amp;mut </span>array[..];
+<span class="kw">let </span>slice_of_cells: <span class="kw-2">&amp;</span>[Cell&lt;char&gt;] = Cell::from_mut(slice).as_slice_of_cells();
+<span class="kw">for </span>w <span class="kw">in </span>slice_of_cells.windows(<span class="number">3</span>) {
+    Cell::swap(<span class="kw-2">&amp;</span>w[<span class="number">0</span>], <span class="kw-2">&amp;</span>w[<span class="number">2</span>]);
+}
+<span class="macro">assert_eq!</span>(array, [<span class="string">'s'</span>, <span class="string">'t'</span>, <span class="string">' '</span>, <span class="string">'2'</span>, <span class="string">'0'</span>, <span class="string">'1'</span>, <span class="string">'5'</span>, <span class="string">'u'</span>, <span class="string">'R'</span>]);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.chunks" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1137">source</a></span><h4 class="code-header">pub fn <a href="#method.chunks" class="fn">chunks</a>(&amp;self, chunk_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.Chunks.html" title="struct core::slice::iter::Chunks">Chunks</a>&lt;'_, T&gt;</h4></section></summary><div class="docblock"><p>Returns an iterator over <code>chunk_size</code> elements of the slice at a time, starting at the
+beginning of the slice.</p>
+<p>The chunks are slices and do not overlap. If <code>chunk_size</code> does not divide the length of the
+slice, then the last chunk will not have length <code>chunk_size</code>.</p>
+<p>See <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_exact" title="method slice::chunks_exact"><code>chunks_exact</code></a> for a variant of this iterator that returns chunks of always exactly
+<code>chunk_size</code> elements, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks" title="method slice::rchunks"><code>rchunks</code></a> for the same iterator but starting at the end of the
+slice.</p>
+<h5 id="panics-2"><a class="doc-anchor" href="#panics-2">§</a>Panics</h5>
+<p>Panics if <code>chunk_size</code> is 0.</p>
+<h5 id="examples-20"><a class="doc-anchor" href="#examples-20">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>];
+<span class="kw">let </span><span class="kw-2">mut </span>iter = slice.chunks(<span class="number">2</span>);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'l'</span>, <span class="string">'o'</span>]);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'r'</span>, <span class="string">'e'</span>]);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'m'</span>]);
+<span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.chunks_exact" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.31.0">1.31.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1214">source</a></span><h4 class="code-header">pub fn <a href="#method.chunks_exact" class="fn">chunks_exact</a>(&amp;self, chunk_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunksExact.html" title="struct core::slice::iter::ChunksExact">ChunksExact</a>&lt;'_, T&gt;</h4></section></summary><div class="docblock"><p>Returns an iterator over <code>chunk_size</code> elements of the slice at a time, starting at the
+beginning of the slice.</p>
+<p>The chunks are slices and do not overlap. If <code>chunk_size</code> does not divide the length of the
+slice, then the last up to <code>chunk_size-1</code> elements will be omitted and can be retrieved
+from the <code>remainder</code> function of the iterator.</p>
+<p>Due to each chunk having exactly <code>chunk_size</code> elements, the compiler can often optimize the
+resulting code better than in the case of <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks" title="method slice::chunks"><code>chunks</code></a>.</p>
+<p>See <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks" title="method slice::chunks"><code>chunks</code></a> for a variant of this iterator that also returns the remainder as a smaller
+chunk, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_exact" title="method slice::rchunks_exact"><code>rchunks_exact</code></a> for the same iterator but starting at the end of the slice.</p>
+<h5 id="panics-3"><a class="doc-anchor" href="#panics-3">§</a>Panics</h5>
+<p>Panics if <code>chunk_size</code> is 0.</p>
+<h5 id="examples-21"><a class="doc-anchor" href="#examples-21">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>];
+<span class="kw">let </span><span class="kw-2">mut </span>iter = slice.chunks_exact(<span class="number">2</span>);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'l'</span>, <span class="string">'o'</span>]);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'r'</span>, <span class="string">'e'</span>]);
+<span class="macro">assert!</span>(iter.next().is_none());
+<span class="macro">assert_eq!</span>(iter.remainder(), <span class="kw-2">&amp;</span>[<span class="string">'m'</span>]);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.as_chunks_unchecked" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1292">source</a><h4 class="code-header">pub unsafe fn <a href="#method.as_chunks_unchecked" class="fn">as_chunks_unchecked</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>]</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_as_chunks</code>)</span></div></span></summary><div class="docblock"><p>Splits the slice into a slice of <code>N</code>-element arrays,
+assuming that there’s no remainder.</p>
+<h5 id="safety-2"><a class="doc-anchor" href="#safety-2">§</a>Safety</h5>
+<p>This may only be called when</p>
+<ul>
+<li>The slice splits exactly into <code>N</code>-element chunks (aka <code>self.len() % N == 0</code>).</li>
+<li><code>N != 0</code>.</li>
+</ul>
+<h5 id="examples-22"><a class="doc-anchor" href="#examples-22">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_as_chunks)]
+</span><span class="kw">let </span>slice: <span class="kw-2">&amp;</span>[char] = <span class="kw-2">&amp;</span>[<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>, <span class="string">'!'</span>];
+<span class="kw">let </span>chunks: <span class="kw-2">&amp;</span>[[char; <span class="number">1</span>]] =
+    <span class="comment">// SAFETY: 1-element chunks never have remainder
+    </span><span class="kw">unsafe </span>{ slice.as_chunks_unchecked() };
+<span class="macro">assert_eq!</span>(chunks, <span class="kw-2">&amp;</span>[[<span class="string">'l'</span>], [<span class="string">'o'</span>], [<span class="string">'r'</span>], [<span class="string">'e'</span>], [<span class="string">'m'</span>], [<span class="string">'!'</span>]]);
+<span class="kw">let </span>chunks: <span class="kw-2">&amp;</span>[[char; <span class="number">3</span>]] =
+    <span class="comment">// SAFETY: The slice length (6) is a multiple of 3
+    </span><span class="kw">unsafe </span>{ slice.as_chunks_unchecked() };
+<span class="macro">assert_eq!</span>(chunks, <span class="kw-2">&amp;</span>[[<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>], [<span class="string">'e'</span>, <span class="string">'m'</span>, <span class="string">'!'</span>]]);
+
+<span class="comment">// These would be unsound:
+// let chunks: &amp;[[_; 5]] = slice.as_chunks_unchecked() // The slice length is not a multiple of 5
+// let chunks: &amp;[[_; 0]] = slice.as_chunks_unchecked() // Zero-length chunks are never allowed</span></code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.as_chunks" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1338">source</a><h4 class="code-header">pub fn <a href="#method.as_chunks" class="fn">as_chunks</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; (&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>], &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_as_chunks</code>)</span></div></span></summary><div class="docblock"><p>Splits the slice into a slice of <code>N</code>-element arrays,
+starting at the beginning of the slice,
+and a remainder slice with length strictly less than <code>N</code>.</p>
+<h5 id="panics-4"><a class="doc-anchor" href="#panics-4">§</a>Panics</h5>
+<p>Panics if <code>N</code> is 0. This check will most probably get changed to a compile time
+error before this method gets stabilized.</p>
+<h5 id="examples-23"><a class="doc-anchor" href="#examples-23">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_as_chunks)]
+</span><span class="kw">let </span>slice = [<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>];
+<span class="kw">let </span>(chunks, remainder) = slice.as_chunks();
+<span class="macro">assert_eq!</span>(chunks, <span class="kw-2">&amp;</span>[[<span class="string">'l'</span>, <span class="string">'o'</span>], [<span class="string">'r'</span>, <span class="string">'e'</span>]]);
+<span class="macro">assert_eq!</span>(remainder, <span class="kw-2">&amp;</span>[<span class="string">'m'</span>]);</code></pre></div>
+<p>If you expect the slice to be an exact multiple, you can combine
+<code>let</code>-<code>else</code> with an empty slice pattern:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_as_chunks)]
+</span><span class="kw">let </span>slice = [<span class="string">'R'</span>, <span class="string">'u'</span>, <span class="string">'s'</span>, <span class="string">'t'</span>];
+<span class="kw">let </span>(chunks, []) = slice.as_chunks::&lt;<span class="number">2</span>&gt;() <span class="kw">else </span>{
+    <span class="macro">panic!</span>(<span class="string">"slice didn't have even length"</span>)
+};
+<span class="macro">assert_eq!</span>(chunks, <span class="kw-2">&amp;</span>[[<span class="string">'R'</span>, <span class="string">'u'</span>], [<span class="string">'s'</span>, <span class="string">'t'</span>]]);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.as_rchunks" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1370">source</a><h4 class="code-header">pub fn <a href="#method.as_rchunks" class="fn">as_rchunks</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; (&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>])</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_as_chunks</code>)</span></div></span></summary><div class="docblock"><p>Splits the slice into a slice of <code>N</code>-element arrays,
+starting at the end of the slice,
+and a remainder slice with length strictly less than <code>N</code>.</p>
+<h5 id="panics-5"><a class="doc-anchor" href="#panics-5">§</a>Panics</h5>
+<p>Panics if <code>N</code> is 0. This check will most probably get changed to a compile time
+error before this method gets stabilized.</p>
+<h5 id="examples-24"><a class="doc-anchor" href="#examples-24">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_as_chunks)]
+</span><span class="kw">let </span>slice = [<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>];
+<span class="kw">let </span>(remainder, chunks) = slice.as_rchunks();
+<span class="macro">assert_eq!</span>(remainder, <span class="kw-2">&amp;</span>[<span class="string">'l'</span>]);
+<span class="macro">assert_eq!</span>(chunks, <span class="kw-2">&amp;</span>[[<span class="string">'o'</span>, <span class="string">'r'</span>], [<span class="string">'e'</span>, <span class="string">'m'</span>]]);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.array_chunks" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1410">source</a><h4 class="code-header">pub fn <a href="#method.array_chunks" class="fn">array_chunks</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.ArrayChunks.html" title="struct core::slice::iter::ArrayChunks">ArrayChunks</a>&lt;'_, T, N&gt;</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>array_chunks</code>)</span></div></span></summary><div class="docblock"><p>Returns an iterator over <code>N</code> elements of the slice at a time, starting at the
+beginning of the slice.</p>
+<p>The chunks are array references and do not overlap. If <code>N</code> does not divide the
+length of the slice, then the last up to <code>N-1</code> elements will be omitted and can be
+retrieved from the <code>remainder</code> function of the iterator.</p>
+<p>This method is the const generic equivalent of <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_exact" title="method slice::chunks_exact"><code>chunks_exact</code></a>.</p>
+<h5 id="panics-6"><a class="doc-anchor" href="#panics-6">§</a>Panics</h5>
+<p>Panics if <code>N</code> is 0. This check will most probably get changed to a compile time
+error before this method gets stabilized.</p>
+<h5 id="examples-25"><a class="doc-anchor" href="#examples-25">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(array_chunks)]
+</span><span class="kw">let </span>slice = [<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>];
+<span class="kw">let </span><span class="kw-2">mut </span>iter = slice.array_chunks();
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'l'</span>, <span class="string">'o'</span>]);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'r'</span>, <span class="string">'e'</span>]);
+<span class="macro">assert!</span>(iter.next().is_none());
+<span class="macro">assert_eq!</span>(iter.remainder(), <span class="kw-2">&amp;</span>[<span class="string">'m'</span>]);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.array_windows" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1601">source</a><h4 class="code-header">pub fn <a href="#method.array_windows" class="fn">array_windows</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.ArrayWindows.html" title="struct core::slice::iter::ArrayWindows">ArrayWindows</a>&lt;'_, T, N&gt;</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>array_windows</code>)</span></div></span></summary><div class="docblock"><p>Returns an iterator over overlapping windows of <code>N</code> elements of a slice,
+starting at the beginning of the slice.</p>
+<p>This is the const generic equivalent of <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.windows" title="method slice::windows"><code>windows</code></a>.</p>
+<p>If <code>N</code> is greater than the size of the slice, it will return no windows.</p>
+<h5 id="panics-7"><a class="doc-anchor" href="#panics-7">§</a>Panics</h5>
+<p>Panics if <code>N</code> is 0. This check will most probably get changed to a compile time
+error before this method gets stabilized.</p>
+<h5 id="examples-26"><a class="doc-anchor" href="#examples-26">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(array_windows)]
+</span><span class="kw">let </span>slice = [<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>];
+<span class="kw">let </span><span class="kw-2">mut </span>iter = slice.array_windows();
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">1</span>]);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>]);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">2</span>, <span class="number">3</span>]);
+<span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.rchunks" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.31.0">1.31.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1636">source</a></span><h4 class="code-header">pub fn <a href="#method.rchunks" class="fn">rchunks</a>(&amp;self, chunk_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunks.html" title="struct core::slice::iter::RChunks">RChunks</a>&lt;'_, T&gt;</h4></section></summary><div class="docblock"><p>Returns an iterator over <code>chunk_size</code> elements of the slice at a time, starting at the end
+of the slice.</p>
+<p>The chunks are slices and do not overlap. If <code>chunk_size</code> does not divide the length of the
+slice, then the last chunk will not have length <code>chunk_size</code>.</p>
+<p>See <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_exact" title="method slice::rchunks_exact"><code>rchunks_exact</code></a> for a variant of this iterator that returns chunks of always exactly
+<code>chunk_size</code> elements, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks" title="method slice::chunks"><code>chunks</code></a> for the same iterator but starting at the beginning
+of the slice.</p>
+<h5 id="panics-8"><a class="doc-anchor" href="#panics-8">§</a>Panics</h5>
+<p>Panics if <code>chunk_size</code> is 0.</p>
+<h5 id="examples-27"><a class="doc-anchor" href="#examples-27">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>];
+<span class="kw">let </span><span class="kw-2">mut </span>iter = slice.rchunks(<span class="number">2</span>);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'e'</span>, <span class="string">'m'</span>]);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'o'</span>, <span class="string">'r'</span>]);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'l'</span>]);
+<span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.rchunks_exact" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.31.0">1.31.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1715">source</a></span><h4 class="code-header">pub fn <a href="#method.rchunks_exact" class="fn">rchunks_exact</a>(&amp;self, chunk_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunksExact.html" title="struct core::slice::iter::RChunksExact">RChunksExact</a>&lt;'_, T&gt;</h4></section></summary><div class="docblock"><p>Returns an iterator over <code>chunk_size</code> elements of the slice at a time, starting at the
+end of the slice.</p>
+<p>The chunks are slices and do not overlap. If <code>chunk_size</code> does not divide the length of the
+slice, then the last up to <code>chunk_size-1</code> elements will be omitted and can be retrieved
+from the <code>remainder</code> function of the iterator.</p>
+<p>Due to each chunk having exactly <code>chunk_size</code> elements, the compiler can often optimize the
+resulting code better than in the case of <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks" title="method slice::rchunks"><code>rchunks</code></a>.</p>
+<p>See <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks" title="method slice::rchunks"><code>rchunks</code></a> for a variant of this iterator that also returns the remainder as a smaller
+chunk, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_exact" title="method slice::chunks_exact"><code>chunks_exact</code></a> for the same iterator but starting at the beginning of the
+slice.</p>
+<h5 id="panics-9"><a class="doc-anchor" href="#panics-9">§</a>Panics</h5>
+<p>Panics if <code>chunk_size</code> is 0.</p>
+<h5 id="examples-28"><a class="doc-anchor" href="#examples-28">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>];
+<span class="kw">let </span><span class="kw-2">mut </span>iter = slice.rchunks_exact(<span class="number">2</span>);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'e'</span>, <span class="string">'m'</span>]);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'o'</span>, <span class="string">'r'</span>]);
+<span class="macro">assert!</span>(iter.next().is_none());
+<span class="macro">assert_eq!</span>(iter.remainder(), <span class="kw-2">&amp;</span>[<span class="string">'l'</span>]);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.chunk_by" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.77.0">1.77.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1798-1800">source</a></span><h4 class="code-header">pub fn <a href="#method.chunk_by" class="fn">chunk_by</a>&lt;F&gt;(&amp;self, pred: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunkBy.html" title="struct core::slice::iter::ChunkBy">ChunkBy</a>&lt;'_, T, F&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over the slice producing non-overlapping runs
+of elements using the predicate to separate them.</p>
+<p>The predicate is called for every pair of consecutive elements,
+meaning that it is called on <code>slice[0]</code> and <code>slice[1]</code>,
+followed by <code>slice[1]</code> and <code>slice[2]</code>, and so on.</p>
+<h5 id="examples-29"><a class="doc-anchor" href="#examples-29">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">3</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="number">2</span>];
+
+<span class="kw">let </span><span class="kw-2">mut </span>iter = slice.chunk_by(|a, b| a == b);
+
+<span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>][..]));
+<span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">3</span>, <span class="number">3</span>][..]));
+<span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">2</span>, <span class="number">2</span>, <span class="number">2</span>][..]));
+<span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">None</span>);</code></pre></div>
+<p>This method can be used to extract the sorted subslices:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>];
+
+<span class="kw">let </span><span class="kw-2">mut </span>iter = slice.chunk_by(|a, b| a &lt;= b);
+
+<span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>][..]));
+<span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">2</span>, <span class="number">3</span>][..]));
+<span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>][..]));
+<span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">None</span>);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.split_at" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1886">source</a></span><h4 class="code-header">pub fn <a href="#method.split_at" class="fn">split_at</a>(&amp;self, mid: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; (&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)</h4></section></summary><div class="docblock"><p>Divides one slice into two at an index.</p>
+<p>The first will contain all indices from <code>[0, mid)</code> (excluding
+the index <code>mid</code> itself) and the second will contain all
+indices from <code>[mid, len)</code> (excluding the index <code>len</code> itself).</p>
+<h5 id="panics-10"><a class="doc-anchor" href="#panics-10">§</a>Panics</h5>
+<p>Panics if <code>mid &gt; len</code>.  For a non-panicking alternative see
+<a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at_checked" title="method slice::split_at_checked"><code>split_at_checked</code></a>.</p>
+<h5 id="examples-30"><a class="doc-anchor" href="#examples-30">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>];
+
+{
+   <span class="kw">let </span>(left, right) = v.split_at(<span class="number">0</span>);
+   <span class="macro">assert_eq!</span>(left, []);
+   <span class="macro">assert_eq!</span>(right, [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]);
+}
+
+{
+    <span class="kw">let </span>(left, right) = v.split_at(<span class="number">2</span>);
+    <span class="macro">assert_eq!</span>(left, [<span class="number">1</span>, <span class="number">2</span>]);
+    <span class="macro">assert_eq!</span>(right, [<span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]);
+}
+
+{
+    <span class="kw">let </span>(left, right) = v.split_at(<span class="number">6</span>);
+    <span class="macro">assert_eq!</span>(left, [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]);
+    <span class="macro">assert_eq!</span>(right, []);
+}</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.split_at_unchecked" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.79.0">1.79.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1971">source</a></span><h4 class="code-header">pub unsafe fn <a href="#method.split_at_unchecked" class="fn">split_at_unchecked</a>(&amp;self, mid: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; (&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)</h4></section></summary><div class="docblock"><p>Divides one slice into two at an index, without doing bounds checking.</p>
+<p>The first will contain all indices from <code>[0, mid)</code> (excluding
+the index <code>mid</code> itself) and the second will contain all
+indices from <code>[mid, len)</code> (excluding the index <code>len</code> itself).</p>
+<p>For a safe alternative see <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at" title="method slice::split_at"><code>split_at</code></a>.</p>
+<h5 id="safety-3"><a class="doc-anchor" href="#safety-3">§</a>Safety</h5>
+<p>Calling this method with an out-of-bounds index is <em><a href="https://doc.rust-lang.org/reference/behavior-considered-undefined.html">undefined behavior</a></em>
+even if the resulting reference is not used. The caller has to ensure that
+<code>0 &lt;= mid &lt;= self.len()</code>.</p>
+<h5 id="examples-31"><a class="doc-anchor" href="#examples-31">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>];
+
+<span class="kw">unsafe </span>{
+   <span class="kw">let </span>(left, right) = v.split_at_unchecked(<span class="number">0</span>);
+   <span class="macro">assert_eq!</span>(left, []);
+   <span class="macro">assert_eq!</span>(right, [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]);
+}
+
+<span class="kw">unsafe </span>{
+    <span class="kw">let </span>(left, right) = v.split_at_unchecked(<span class="number">2</span>);
+    <span class="macro">assert_eq!</span>(left, [<span class="number">1</span>, <span class="number">2</span>]);
+    <span class="macro">assert_eq!</span>(right, [<span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]);
+}
+
+<span class="kw">unsafe </span>{
+    <span class="kw">let </span>(left, right) = v.split_at_unchecked(<span class="number">6</span>);
+    <span class="macro">assert_eq!</span>(left, [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]);
+    <span class="macro">assert_eq!</span>(right, []);
+}</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.split_at_checked" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2082">source</a><h4 class="code-header">pub fn <a href="#method.split_at_checked" class="fn">split_at_checked</a>(&amp;self, mid: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)&gt;</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>split_at_checked</code>)</span></div></span></summary><div class="docblock"><p>Divides one slice into two at an index, returning <code>None</code> if the slice is
+too short.</p>
+<p>If <code>mid ≤ len</code> returns a pair of slices where the first will contain all
+indices from <code>[0, mid)</code> (excluding the index <code>mid</code> itself) and the
+second will contain all indices from <code>[mid, len)</code> (excluding the index
+<code>len</code> itself).</p>
+<p>Otherwise, if <code>mid &gt; len</code>, returns <code>None</code>.</p>
+<h5 id="examples-32"><a class="doc-anchor" href="#examples-32">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(split_at_checked)]
+
+</span><span class="kw">let </span>v = [<span class="number">1</span>, -<span class="number">2</span>, <span class="number">3</span>, -<span class="number">4</span>, <span class="number">5</span>, -<span class="number">6</span>];
+
+{
+   <span class="kw">let </span>(left, right) = v.split_at_checked(<span class="number">0</span>).unwrap();
+   <span class="macro">assert_eq!</span>(left, []);
+   <span class="macro">assert_eq!</span>(right, [<span class="number">1</span>, -<span class="number">2</span>, <span class="number">3</span>, -<span class="number">4</span>, <span class="number">5</span>, -<span class="number">6</span>]);
+}
+
+{
+    <span class="kw">let </span>(left, right) = v.split_at_checked(<span class="number">2</span>).unwrap();
+    <span class="macro">assert_eq!</span>(left, [<span class="number">1</span>, -<span class="number">2</span>]);
+    <span class="macro">assert_eq!</span>(right, [<span class="number">3</span>, -<span class="number">4</span>, <span class="number">5</span>, -<span class="number">6</span>]);
+}
+
+{
+    <span class="kw">let </span>(left, right) = v.split_at_checked(<span class="number">6</span>).unwrap();
+    <span class="macro">assert_eq!</span>(left, [<span class="number">1</span>, -<span class="number">2</span>, <span class="number">3</span>, -<span class="number">4</span>, <span class="number">5</span>, -<span class="number">6</span>]);
+    <span class="macro">assert_eq!</span>(right, []);
+}
+
+<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, v.split_at_checked(<span class="number">7</span>));</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.split" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2175-2177">source</a></span><h4 class="code-header">pub fn <a href="#method.split" class="fn">split</a>&lt;F&gt;(&amp;self, pred: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.Split.html" title="struct core::slice::iter::Split">Split</a>&lt;'_, T, F&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over subslices separated by elements that match
+<code>pred</code>. The matched element is not contained in the subslices.</p>
+<h5 id="examples-33"><a class="doc-anchor" href="#examples-33">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">33</span>, <span class="number">20</span>];
+<span class="kw">let </span><span class="kw-2">mut </span>iter = slice.split(|num| num % <span class="number">3 </span>== <span class="number">0</span>);
+
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>]);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">20</span>]);
+<span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
+<p>If the first element is matched, an empty slice will be the first item
+returned by the iterator. Similarly, if the last element in the slice
+is matched, an empty slice will be the last item returned by the
+iterator:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">33</span>];
+<span class="kw">let </span><span class="kw-2">mut </span>iter = slice.split(|num| num % <span class="number">3 </span>== <span class="number">0</span>);
+
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>]);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[]);
+<span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
+<p>If two matched elements are directly adjacent, an empty slice will be
+present between them:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="number">10</span>, <span class="number">6</span>, <span class="number">33</span>, <span class="number">20</span>];
+<span class="kw">let </span><span class="kw-2">mut </span>iter = slice.split(|num| num % <span class="number">3 </span>== <span class="number">0</span>);
+
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">10</span>]);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[]);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">20</span>]);
+<span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.split_inclusive" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.51.0">1.51.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2233-2235">source</a></span><h4 class="code-header">pub fn <a href="#method.split_inclusive" class="fn">split_inclusive</a>&lt;F&gt;(&amp;self, pred: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitInclusive.html" title="struct core::slice::iter::SplitInclusive">SplitInclusive</a>&lt;'_, T, F&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over subslices separated by elements that match
+<code>pred</code>. The matched element is contained in the end of the previous
+subslice as a terminator.</p>
+<h5 id="examples-34"><a class="doc-anchor" href="#examples-34">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">33</span>, <span class="number">20</span>];
+<span class="kw">let </span><span class="kw-2">mut </span>iter = slice.split_inclusive(|num| num % <span class="number">3 </span>== <span class="number">0</span>);
+
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>, <span class="number">33</span>]);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">20</span>]);
+<span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
+<p>If the last element of the slice is matched,
+that element will be considered the terminator of the preceding slice.
+That slice will be the last item returned by the iterator.</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="number">3</span>, <span class="number">10</span>, <span class="number">40</span>, <span class="number">33</span>];
+<span class="kw">let </span><span class="kw-2">mut </span>iter = slice.split_inclusive(|num| num % <span class="number">3 </span>== <span class="number">0</span>);
+
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">3</span>]);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>, <span class="number">33</span>]);
+<span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.rsplit" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.27.0">1.27.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2293-2295">source</a></span><h4 class="code-header">pub fn <a href="#method.rsplit" class="fn">rsplit</a>&lt;F&gt;(&amp;self, pred: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplit.html" title="struct core::slice::iter::RSplit">RSplit</a>&lt;'_, T, F&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over subslices separated by elements that match
+<code>pred</code>, starting at the end of the slice and working backwards.
+The matched element is not contained in the subslices.</p>
+<h5 id="examples-35"><a class="doc-anchor" href="#examples-35">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="number">11</span>, <span class="number">22</span>, <span class="number">33</span>, <span class="number">0</span>, <span class="number">44</span>, <span class="number">55</span>];
+<span class="kw">let </span><span class="kw-2">mut </span>iter = slice.rsplit(|num| <span class="kw-2">*</span>num == <span class="number">0</span>);
+
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">44</span>, <span class="number">55</span>]);
+<span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">11</span>, <span class="number">22</span>, <span class="number">33</span>]);
+<span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">None</span>);</code></pre></div>
+<p>As with <code>split()</code>, if the first or last element is matched, an empty
+slice will be the first (or last) item returned by the iterator.</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">8</span>];
+<span class="kw">let </span><span class="kw-2">mut </span>it = v.rsplit(|n| <span class="kw-2">*</span>n % <span class="number">2 </span>== <span class="number">0</span>);
+<span class="macro">assert_eq!</span>(it.next().unwrap(), <span class="kw-2">&amp;</span>[]);
+<span class="macro">assert_eq!</span>(it.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">3</span>, <span class="number">5</span>]);
+<span class="macro">assert_eq!</span>(it.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">1</span>]);
+<span class="macro">assert_eq!</span>(it.next().unwrap(), <span class="kw-2">&amp;</span>[]);
+<span class="macro">assert_eq!</span>(it.next(), <span class="prelude-val">None</span>);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.splitn" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2347-2349">source</a></span><h4 class="code-header">pub fn <a href="#method.splitn" class="fn">splitn</a>&lt;F&gt;(&amp;self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, pred: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitN.html" title="struct core::slice::iter::SplitN">SplitN</a>&lt;'_, T, F&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over subslices separated by elements that match
+<code>pred</code>, limited to returning at most <code>n</code> items. The matched element is
+not contained in the subslices.</p>
+<p>The last element returned, if any, will contain the remainder of the
+slice.</p>
+<h5 id="examples-36"><a class="doc-anchor" href="#examples-36">§</a>Examples</h5>
+<p>Print the slice split once by numbers divisible by 3 (i.e., <code>[10, 40]</code>,
+<code>[20, 60, 50]</code>):</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>, <span class="number">20</span>, <span class="number">60</span>, <span class="number">50</span>];
+
+<span class="kw">for </span>group <span class="kw">in </span>v.splitn(<span class="number">2</span>, |num| <span class="kw-2">*</span>num % <span class="number">3 </span>== <span class="number">0</span>) {
+    <span class="macro">println!</span>(<span class="string">"{group:?}"</span>);
+}</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.rsplitn" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2402-2404">source</a></span><h4 class="code-header">pub fn <a href="#method.rsplitn" class="fn">rsplitn</a>&lt;F&gt;(&amp;self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, pred: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplitN.html" title="struct core::slice::iter::RSplitN">RSplitN</a>&lt;'_, T, F&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over subslices separated by elements that match
+<code>pred</code> limited to returning at most <code>n</code> items. This starts at the end of
+the slice and works backwards. The matched element is not contained in
+the subslices.</p>
+<p>The last element returned, if any, will contain the remainder of the
+slice.</p>
+<h5 id="examples-37"><a class="doc-anchor" href="#examples-37">§</a>Examples</h5>
+<p>Print the slice split once, starting from the end, by numbers divisible
+by 3 (i.e., <code>[50]</code>, <code>[10, 40, 30, 20]</code>):</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>, <span class="number">20</span>, <span class="number">60</span>, <span class="number">50</span>];
+
+<span class="kw">for </span>group <span class="kw">in </span>v.rsplitn(<span class="number">2</span>, |num| <span class="kw-2">*</span>num % <span class="number">3 </span>== <span class="number">0</span>) {
+    <span class="macro">println!</span>(<span class="string">"{group:?}"</span>);
+}</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.split_once" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2456-2458">source</a><h4 class="code-header">pub fn <a href="#method.split_once" class="fn">split_once</a>&lt;F&gt;(&amp;self, pred: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_split_once</code>)</span></div></span></summary><div class="docblock"><p>Splits the slice on the first element that matches the specified
+predicate.</p>
+<p>If any matching elements are present in the slice, returns the prefix
+before the match and suffix after. The matching element itself is not
+included. If no elements match, returns <code>None</code>.</p>
+<h5 id="examples-38"><a class="doc-anchor" href="#examples-38">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_split_once)]
+</span><span class="kw">let </span>s = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">4</span>];
+<span class="macro">assert_eq!</span>(s.split_once(|<span class="kw-2">&amp;</span>x| x == <span class="number">2</span>), <span class="prelude-val">Some</span>((
+    <span class="kw-2">&amp;</span>[<span class="number">1</span>][..],
+    <span class="kw-2">&amp;</span>[<span class="number">3</span>, <span class="number">2</span>, <span class="number">4</span>][..]
+)));
+<span class="macro">assert_eq!</span>(s.split_once(|<span class="kw-2">&amp;</span>x| x == <span class="number">0</span>), <span class="prelude-val">None</span>);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.rsplit_once" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2484-2486">source</a><h4 class="code-header">pub fn <a href="#method.rsplit_once" class="fn">rsplit_once</a>&lt;F&gt;(&amp;self, pred: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_split_once</code>)</span></div></span></summary><div class="docblock"><p>Splits the slice on the last element that matches the specified
+predicate.</p>
+<p>If any matching elements are present in the slice, returns the prefix
+before the match and suffix after. The matching element itself is not
+included. If no elements match, returns <code>None</code>.</p>
+<h5 id="examples-39"><a class="doc-anchor" href="#examples-39">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_split_once)]
+</span><span class="kw">let </span>s = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">4</span>];
+<span class="macro">assert_eq!</span>(s.rsplit_once(|<span class="kw-2">&amp;</span>x| x == <span class="number">2</span>), <span class="prelude-val">Some</span>((
+    <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>][..],
+    <span class="kw-2">&amp;</span>[<span class="number">4</span>][..]
+)));
+<span class="macro">assert_eq!</span>(s.rsplit_once(|<span class="kw-2">&amp;</span>x| x == <span class="number">0</span>), <span class="prelude-val">None</span>);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.contains" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2520-2522">source</a></span><h4 class="code-header">pub fn <a href="#method.contains" class="fn">contains</a>(&amp;self, x: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>,</div></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if the slice contains an element with the given value.</p>
+<p>This operation is <em>O</em>(<em>n</em>).</p>
+<p>Note that if you have a sorted slice, <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search" title="method slice::binary_search"><code>binary_search</code></a> may be faster.</p>
+<h5 id="examples-40"><a class="doc-anchor" href="#examples-40">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
+<span class="macro">assert!</span>(v.contains(<span class="kw-2">&amp;</span><span class="number">30</span>));
+<span class="macro">assert!</span>(!v.contains(<span class="kw-2">&amp;</span><span class="number">50</span>));</code></pre></div>
+<p>If you do not have a <code>&amp;T</code>, but some other value that you can compare
+with one (for example, <code>String</code> implements <code>PartialEq&lt;str&gt;</code>), you can
+use <code>iter().any</code>:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [String::from(<span class="string">"hello"</span>), String::from(<span class="string">"world"</span>)]; <span class="comment">// slice of `String`
+</span><span class="macro">assert!</span>(v.iter().any(|e| e == <span class="string">"hello"</span>)); <span class="comment">// search with `&amp;str`
+</span><span class="macro">assert!</span>(!v.iter().any(|e| e == <span class="string">"hi"</span>));</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.starts_with" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2550-2552">source</a></span><h4 class="code-header">pub fn <a href="#method.starts_with" class="fn">starts_with</a>(&amp;self, needle: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>,</div></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if <code>needle</code> is a prefix of the slice or equal to the slice.</p>
+<h5 id="examples-41"><a class="doc-anchor" href="#examples-41">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
+<span class="macro">assert!</span>(v.starts_with(<span class="kw-2">&amp;</span>[<span class="number">10</span>]));
+<span class="macro">assert!</span>(v.starts_with(<span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>]));
+<span class="macro">assert!</span>(v.starts_with(<span class="kw-2">&amp;</span>v));
+<span class="macro">assert!</span>(!v.starts_with(<span class="kw-2">&amp;</span>[<span class="number">50</span>]));
+<span class="macro">assert!</span>(!v.starts_with(<span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">50</span>]));</code></pre></div>
+<p>Always returns <code>true</code> if <code>needle</code> is an empty slice:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = <span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
+<span class="macro">assert!</span>(v.starts_with(<span class="kw-2">&amp;</span>[]));
+<span class="kw">let </span>v: <span class="kw-2">&amp;</span>[u8] = <span class="kw-2">&amp;</span>[];
+<span class="macro">assert!</span>(v.starts_with(<span class="kw-2">&amp;</span>[]));</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.ends_with" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2581-2583">source</a></span><h4 class="code-header">pub fn <a href="#method.ends_with" class="fn">ends_with</a>(&amp;self, needle: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>,</div></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if <code>needle</code> is a suffix of the slice or equal to the slice.</p>
+<h5 id="examples-42"><a class="doc-anchor" href="#examples-42">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
+<span class="macro">assert!</span>(v.ends_with(<span class="kw-2">&amp;</span>[<span class="number">30</span>]));
+<span class="macro">assert!</span>(v.ends_with(<span class="kw-2">&amp;</span>[<span class="number">40</span>, <span class="number">30</span>]));
+<span class="macro">assert!</span>(v.ends_with(<span class="kw-2">&amp;</span>v));
+<span class="macro">assert!</span>(!v.ends_with(<span class="kw-2">&amp;</span>[<span class="number">50</span>]));
+<span class="macro">assert!</span>(!v.ends_with(<span class="kw-2">&amp;</span>[<span class="number">50</span>, <span class="number">30</span>]));</code></pre></div>
+<p>Always returns <code>true</code> if <code>needle</code> is an empty slice:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = <span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
+<span class="macro">assert!</span>(v.ends_with(<span class="kw-2">&amp;</span>[]));
+<span class="kw">let </span>v: <span class="kw-2">&amp;</span>[u8] = <span class="kw-2">&amp;</span>[];
+<span class="macro">assert!</span>(v.ends_with(<span class="kw-2">&amp;</span>[]));</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.strip_prefix" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.51.0">1.51.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2613-2615">source</a></span><h4 class="code-header">pub fn <a href="#method.strip_prefix" class="fn">strip_prefix</a>&lt;P&gt;(&amp;self, prefix: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;P</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;<div class="where">where
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html" title="trait core::slice::SlicePattern">SlicePattern</a>&lt;Item = T&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>,</div></h4></section></summary><div class="docblock"><p>Returns a subslice with the prefix removed.</p>
+<p>If the slice starts with <code>prefix</code>, returns the subslice after the prefix, wrapped in <code>Some</code>.
+If <code>prefix</code> is empty, simply returns the original slice. If <code>prefix</code> is equal to the
+original slice, returns an empty slice.</p>
+<p>If the slice does not start with <code>prefix</code>, returns <code>None</code>.</p>
+<h5 id="examples-43"><a class="doc-anchor" href="#examples-43">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = <span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
+<span class="macro">assert_eq!</span>(v.strip_prefix(<span class="kw-2">&amp;</span>[<span class="number">10</span>]), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">40</span>, <span class="number">30</span>][..]));
+<span class="macro">assert_eq!</span>(v.strip_prefix(<span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>]), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">30</span>][..]));
+<span class="macro">assert_eq!</span>(v.strip_prefix(<span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>]), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[][..]));
+<span class="macro">assert_eq!</span>(v.strip_prefix(<span class="kw-2">&amp;</span>[<span class="number">50</span>]), <span class="prelude-val">None</span>);
+<span class="macro">assert_eq!</span>(v.strip_prefix(<span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">50</span>]), <span class="prelude-val">None</span>);
+
+<span class="kw">let </span>prefix : <span class="kw-2">&amp;</span>str = <span class="string">"he"</span>;
+<span class="macro">assert_eq!</span>(<span class="string">b"hello"</span>.strip_prefix(prefix.as_bytes()),
+           <span class="prelude-val">Some</span>(<span class="string">b"llo"</span>.as_ref()));</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.strip_suffix" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.51.0">1.51.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2649-2651">source</a></span><h4 class="code-header">pub fn <a href="#method.strip_suffix" class="fn">strip_suffix</a>&lt;P&gt;(&amp;self, suffix: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;P</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;<div class="where">where
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html" title="trait core::slice::SlicePattern">SlicePattern</a>&lt;Item = T&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>,</div></h4></section></summary><div class="docblock"><p>Returns a subslice with the suffix removed.</p>
+<p>If the slice ends with <code>suffix</code>, returns the subslice before the suffix, wrapped in <code>Some</code>.
+If <code>suffix</code> is empty, simply returns the original slice. If <code>suffix</code> is equal to the
+original slice, returns an empty slice.</p>
+<p>If the slice does not end with <code>suffix</code>, returns <code>None</code>.</p>
+<h5 id="examples-44"><a class="doc-anchor" href="#examples-44">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = <span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
+<span class="macro">assert_eq!</span>(v.strip_suffix(<span class="kw-2">&amp;</span>[<span class="number">30</span>]), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>][..]));
+<span class="macro">assert_eq!</span>(v.strip_suffix(<span class="kw-2">&amp;</span>[<span class="number">40</span>, <span class="number">30</span>]), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">10</span>][..]));
+<span class="macro">assert_eq!</span>(v.strip_suffix(<span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>]), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[][..]));
+<span class="macro">assert_eq!</span>(v.strip_suffix(<span class="kw-2">&amp;</span>[<span class="number">50</span>]), <span class="prelude-val">None</span>);
+<span class="macro">assert_eq!</span>(v.strip_suffix(<span class="kw-2">&amp;</span>[<span class="number">50</span>, <span class="number">30</span>]), <span class="prelude-val">None</span>);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.binary_search" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2735-2737">source</a></span><h4 class="code-header">pub fn <a href="#method.binary_search" class="fn">binary_search</a>(&amp;self, x: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,</div></h4></section></summary><div class="docblock"><p>Binary searches this slice for a given element.
+If the slice is not sorted, the returned result is unspecified and
+meaningless.</p>
+<p>If the value is found then <a href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok" title="variant core::result::Result::Ok"><code>Result::Ok</code></a> is returned, containing the
+index of the matching element. If there are multiple matches, then any
+one of the matches could be returned. The index is chosen
+deterministically, but is subject to change in future versions of Rust.
+If the value is not found then <a href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err" title="variant core::result::Result::Err"><code>Result::Err</code></a> is returned, containing
+the index where a matching element could be inserted while maintaining
+sorted order.</p>
+<p>See also <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by" title="method slice::binary_search_by"><code>binary_search_by</code></a>, <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key" title="method slice::binary_search_by_key"><code>binary_search_by_key</code></a>, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point" title="method slice::partition_point"><code>partition_point</code></a>.</p>
+<h5 id="examples-45"><a class="doc-anchor" href="#examples-45">§</a>Examples</h5>
+<p>Looks up a series of four elements. The first is found, with a
+uniquely determined position; the second and third are not
+found; the fourth could match any position in <code>[1, 4]</code>.</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = [<span class="number">0</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">8</span>, <span class="number">13</span>, <span class="number">21</span>, <span class="number">34</span>, <span class="number">55</span>];
+
+<span class="macro">assert_eq!</span>(s.binary_search(<span class="kw-2">&amp;</span><span class="number">13</span>),  <span class="prelude-val">Ok</span>(<span class="number">9</span>));
+<span class="macro">assert_eq!</span>(s.binary_search(<span class="kw-2">&amp;</span><span class="number">4</span>),   <span class="prelude-val">Err</span>(<span class="number">7</span>));
+<span class="macro">assert_eq!</span>(s.binary_search(<span class="kw-2">&amp;</span><span class="number">100</span>), <span class="prelude-val">Err</span>(<span class="number">13</span>));
+<span class="kw">let </span>r = s.binary_search(<span class="kw-2">&amp;</span><span class="number">1</span>);
+<span class="macro">assert!</span>(<span class="kw">match </span>r { <span class="prelude-val">Ok</span>(<span class="number">1</span>..=<span class="number">4</span>) =&gt; <span class="bool-val">true</span>, <span class="kw">_ </span>=&gt; <span class="bool-val">false</span>, });</code></pre></div>
+<p>If you want to find that whole <em>range</em> of matching items, rather than
+an arbitrary matching one, that can be done using <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point" title="method slice::partition_point"><code>partition_point</code></a>:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = [<span class="number">0</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">8</span>, <span class="number">13</span>, <span class="number">21</span>, <span class="number">34</span>, <span class="number">55</span>];
+
+<span class="kw">let </span>low = s.partition_point(|x| x &lt; <span class="kw-2">&amp;</span><span class="number">1</span>);
+<span class="macro">assert_eq!</span>(low, <span class="number">1</span>);
+<span class="kw">let </span>high = s.partition_point(|x| x &lt;= <span class="kw-2">&amp;</span><span class="number">1</span>);
+<span class="macro">assert_eq!</span>(high, <span class="number">5</span>);
+<span class="kw">let </span>r = s.binary_search(<span class="kw-2">&amp;</span><span class="number">1</span>);
+<span class="macro">assert!</span>((low..high).contains(<span class="kw-2">&amp;</span>r.unwrap()));
+
+<span class="macro">assert!</span>(s[..low].iter().all(|<span class="kw-2">&amp;</span>x| x &lt; <span class="number">1</span>));
+<span class="macro">assert!</span>(s[low..high].iter().all(|<span class="kw-2">&amp;</span>x| x == <span class="number">1</span>));
+<span class="macro">assert!</span>(s[high..].iter().all(|<span class="kw-2">&amp;</span>x| x &gt; <span class="number">1</span>));
+
+<span class="comment">// For something not found, the "range" of equal items is empty
+</span><span class="macro">assert_eq!</span>(s.partition_point(|x| x &lt; <span class="kw-2">&amp;</span><span class="number">11</span>), <span class="number">9</span>);
+<span class="macro">assert_eq!</span>(s.partition_point(|x| x &lt;= <span class="kw-2">&amp;</span><span class="number">11</span>), <span class="number">9</span>);
+<span class="macro">assert_eq!</span>(s.binary_search(<span class="kw-2">&amp;</span><span class="number">11</span>), <span class="prelude-val">Err</span>(<span class="number">9</span>));</code></pre></div>
+<p>If you want to insert an item to a sorted vector, while maintaining
+sort order, consider using <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point" title="method slice::partition_point"><code>partition_point</code></a>:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>s = <span class="macro">vec!</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">8</span>, <span class="number">13</span>, <span class="number">21</span>, <span class="number">34</span>, <span class="number">55</span>];
+<span class="kw">let </span>num = <span class="number">42</span>;
+<span class="kw">let </span>idx = s.partition_point(|<span class="kw-2">&amp;</span>x| x &lt;= num);
+<span class="comment">// If `num` is unique, `s.partition_point(|&amp;x| x &lt; num)` (with `&lt;`) is equivalent to
+// `s.binary_search(&amp;num).unwrap_or_else(|x| x)`, but using `&lt;=` will allow `insert`
+// to shift less elements.
+</span>s.insert(idx, num);
+<span class="macro">assert_eq!</span>(s, [<span class="number">0</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">8</span>, <span class="number">13</span>, <span class="number">21</span>, <span class="number">34</span>, <span class="number">42</span>, <span class="number">55</span>]);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.binary_search_by" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2786-2788">source</a></span><h4 class="code-header">pub fn <a href="#method.binary_search_by" class="fn">binary_search_by</a>&lt;'a, F&gt;(&amp;'a self, f: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>,</div></h4></section></summary><div class="docblock"><p>Binary searches this slice with a comparator function.</p>
+<p>The comparator function should return an order code that indicates
+whether its argument is <code>Less</code>, <code>Equal</code> or <code>Greater</code> the desired
+target.
+If the slice is not sorted or if the comparator function does not
+implement an order consistent with the sort order of the underlying
+slice, the returned result is unspecified and meaningless.</p>
+<p>If the value is found then <a href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok" title="variant core::result::Result::Ok"><code>Result::Ok</code></a> is returned, containing the
+index of the matching element. If there are multiple matches, then any
+one of the matches could be returned. The index is chosen
+deterministically, but is subject to change in future versions of Rust.
+If the value is not found then <a href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err" title="variant core::result::Result::Err"><code>Result::Err</code></a> is returned, containing
+the index where a matching element could be inserted while maintaining
+sorted order.</p>
+<p>See also <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search" title="method slice::binary_search"><code>binary_search</code></a>, <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key" title="method slice::binary_search_by_key"><code>binary_search_by_key</code></a>, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point" title="method slice::partition_point"><code>partition_point</code></a>.</p>
+<h5 id="examples-46"><a class="doc-anchor" href="#examples-46">§</a>Examples</h5>
+<p>Looks up a series of four elements. The first is found, with a
+uniquely determined position; the second and third are not
+found; the fourth could match any position in <code>[1, 4]</code>.</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = [<span class="number">0</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">8</span>, <span class="number">13</span>, <span class="number">21</span>, <span class="number">34</span>, <span class="number">55</span>];
+
+<span class="kw">let </span>seek = <span class="number">13</span>;
+<span class="macro">assert_eq!</span>(s.binary_search_by(|probe| probe.cmp(<span class="kw-2">&amp;</span>seek)), <span class="prelude-val">Ok</span>(<span class="number">9</span>));
+<span class="kw">let </span>seek = <span class="number">4</span>;
+<span class="macro">assert_eq!</span>(s.binary_search_by(|probe| probe.cmp(<span class="kw-2">&amp;</span>seek)), <span class="prelude-val">Err</span>(<span class="number">7</span>));
+<span class="kw">let </span>seek = <span class="number">100</span>;
+<span class="macro">assert_eq!</span>(s.binary_search_by(|probe| probe.cmp(<span class="kw-2">&amp;</span>seek)), <span class="prelude-val">Err</span>(<span class="number">13</span>));
+<span class="kw">let </span>seek = <span class="number">1</span>;
+<span class="kw">let </span>r = s.binary_search_by(|probe| probe.cmp(<span class="kw-2">&amp;</span>seek));
+<span class="macro">assert!</span>(<span class="kw">match </span>r { <span class="prelude-val">Ok</span>(<span class="number">1</span>..=<span class="number">4</span>) =&gt; <span class="bool-val">true</span>, <span class="kw">_ </span>=&gt; <span class="bool-val">false</span>, });</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.binary_search_by_key" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.10.0">1.10.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2874-2877">source</a></span><h4 class="code-header">pub fn <a href="#method.binary_search_by_key" class="fn">binary_search_by_key</a>&lt;'a, B, F&gt;(
+    &amp;'a self,
+    b: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;B</a>,
+    f: F
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>) -&gt; B,
+    B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,</div></h4></section></summary><div class="docblock"><p>Binary searches this slice with a key extraction function.</p>
+<p>Assumes that the slice is sorted by the key, for instance with
+<a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_by_key" title="method slice::sort_by_key"><code>sort_by_key</code></a> using the same key extraction function.
+If the slice is not sorted by the key, the returned result is
+unspecified and meaningless.</p>
+<p>If the value is found then <a href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok" title="variant core::result::Result::Ok"><code>Result::Ok</code></a> is returned, containing the
+index of the matching element. If there are multiple matches, then any
+one of the matches could be returned. The index is chosen
+deterministically, but is subject to change in future versions of Rust.
+If the value is not found then <a href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err" title="variant core::result::Result::Err"><code>Result::Err</code></a> is returned, containing
+the index where a matching element could be inserted while maintaining
+sorted order.</p>
+<p>See also <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search" title="method slice::binary_search"><code>binary_search</code></a>, <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by" title="method slice::binary_search_by"><code>binary_search_by</code></a>, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point" title="method slice::partition_point"><code>partition_point</code></a>.</p>
+<h5 id="examples-47"><a class="doc-anchor" href="#examples-47">§</a>Examples</h5>
+<p>Looks up a series of four elements in a slice of pairs sorted by
+their second elements. The first is found, with a uniquely
+determined position; the second and third are not found; the
+fourth could match any position in <code>[1, 4]</code>.</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = [(<span class="number">0</span>, <span class="number">0</span>), (<span class="number">2</span>, <span class="number">1</span>), (<span class="number">4</span>, <span class="number">1</span>), (<span class="number">5</span>, <span class="number">1</span>), (<span class="number">3</span>, <span class="number">1</span>),
+         (<span class="number">1</span>, <span class="number">2</span>), (<span class="number">2</span>, <span class="number">3</span>), (<span class="number">4</span>, <span class="number">5</span>), (<span class="number">5</span>, <span class="number">8</span>), (<span class="number">3</span>, <span class="number">13</span>),
+         (<span class="number">1</span>, <span class="number">21</span>), (<span class="number">2</span>, <span class="number">34</span>), (<span class="number">4</span>, <span class="number">55</span>)];
+
+<span class="macro">assert_eq!</span>(s.binary_search_by_key(<span class="kw-2">&amp;</span><span class="number">13</span>, |<span class="kw-2">&amp;</span>(a, b)| b),  <span class="prelude-val">Ok</span>(<span class="number">9</span>));
+<span class="macro">assert_eq!</span>(s.binary_search_by_key(<span class="kw-2">&amp;</span><span class="number">4</span>, |<span class="kw-2">&amp;</span>(a, b)| b),   <span class="prelude-val">Err</span>(<span class="number">7</span>));
+<span class="macro">assert_eq!</span>(s.binary_search_by_key(<span class="kw-2">&amp;</span><span class="number">100</span>, |<span class="kw-2">&amp;</span>(a, b)| b), <span class="prelude-val">Err</span>(<span class="number">13</span>));
+<span class="kw">let </span>r = s.binary_search_by_key(<span class="kw-2">&amp;</span><span class="number">1</span>, |<span class="kw-2">&amp;</span>(a, b)| b);
+<span class="macro">assert!</span>(<span class="kw">match </span>r { <span class="prelude-val">Ok</span>(<span class="number">1</span>..=<span class="number">4</span>) =&gt; <span class="bool-val">true</span>, <span class="kw">_ </span>=&gt; <span class="bool-val">false</span>, });</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.align_to" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3822">source</a></span><h4 class="code-header">pub unsafe fn <a href="#method.align_to" class="fn">align_to</a>&lt;U&gt;(&amp;self) -&gt; (&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[U]</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)</h4></section></summary><div class="docblock"><p>Transmute the slice to a slice of another type, ensuring alignment of the types is
+maintained.</p>
+<p>This method splits the slice into three distinct slices: prefix, correctly aligned middle
+slice of a new type, and the suffix slice. The middle part will be as big as possible under
+the given alignment constraint and element size.</p>
+<p>This method has no purpose when either input element <code>T</code> or output element <code>U</code> are
+zero-sized and will return the original slice without splitting anything.</p>
+<h5 id="safety-4"><a class="doc-anchor" href="#safety-4">§</a>Safety</h5>
+<p>This method is essentially a <code>transmute</code> with respect to the elements in the returned
+middle slice, so all the usual caveats pertaining to <code>transmute::&lt;T, U&gt;</code> also apply here.</p>
+<h5 id="examples-48"><a class="doc-anchor" href="#examples-48">§</a>Examples</h5>
+<p>Basic usage:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">unsafe </span>{
+    <span class="kw">let </span>bytes: [u8; <span class="number">7</span>] = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>];
+    <span class="kw">let </span>(prefix, shorts, suffix) = bytes.align_to::&lt;u16&gt;();
+    <span class="comment">// less_efficient_algorithm_for_bytes(prefix);
+    // more_efficient_algorithm_for_aligned_shorts(shorts);
+    // less_efficient_algorithm_for_bytes(suffix);
+</span>}</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.as_simd" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3987-3991">source</a><h4 class="code-header">pub fn <a href="#method.as_simd" class="fn">as_simd</a>&lt;const LANES: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; (&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;[<a class="struct" href="https://doc.rust-lang.org/nightly/core/core_simd/vector/struct.Simd.html" title="struct core::core_simd::vector::Simd">Simd</a>&lt;T, LANES&gt;], &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)<div class="where">where
+    <a class="struct" href="https://doc.rust-lang.org/nightly/core/core_simd/vector/struct.Simd.html" title="struct core::core_simd::vector::Simd">Simd</a>&lt;T, LANES&gt;: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; LANES]</a>&gt;,
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/core_simd/vector/trait.SimdElement.html" title="trait core::core_simd::vector::SimdElement">SimdElement</a>,
+    <a class="struct" href="https://doc.rust-lang.org/nightly/core/core_simd/lane_count/struct.LaneCount.html" title="struct core::core_simd::lane_count::LaneCount">LaneCount</a>&lt;LANES&gt;: <a class="trait" href="https://doc.rust-lang.org/nightly/core/core_simd/lane_count/trait.SupportedLaneCount.html" title="trait core::core_simd::lane_count::SupportedLaneCount">SupportedLaneCount</a>,</div></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>portable_simd</code>)</span></div></span></summary><div class="docblock"><p>Split a slice into a prefix, a middle of aligned SIMD types, and a suffix.</p>
+<p>This is a safe wrapper around <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.align_to" title="method slice::align_to"><code>slice::align_to</code></a>, so has the same weak
+postconditions as that method.  You’re only assured that
+<code>self.len() == prefix.len() + middle.len() * LANES + suffix.len()</code>.</p>
+<p>Notably, all of the following are possible:</p>
+<ul>
+<li><code>prefix.len() &gt;= LANES</code>.</li>
+<li><code>middle.is_empty()</code> despite <code>self.len() &gt;= 3 * LANES</code>.</li>
+<li><code>suffix.len() &gt;= LANES</code>.</li>
+</ul>
+<p>That said, this is a safe method, so if you’re only writing safe code,
+then this can at most cause incorrect logic, not unsoundness.</p>
+<h5 id="panics-11"><a class="doc-anchor" href="#panics-11">§</a>Panics</h5>
+<p>This will panic if the size of the SIMD type is different from
+<code>LANES</code> times that of the scalar.</p>
+<p>At the time of writing, the trait restrictions on <code>Simd&lt;T, LANES&gt;</code> keeps
+that from ever happening, as only power-of-two numbers of lanes are
+supported.  It’s possible that, in the future, those restrictions might
+be lifted in a way that would make it possible to see panics from this
+method for something like <code>LANES == 3</code>.</p>
+<h5 id="examples-49"><a class="doc-anchor" href="#examples-49">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(portable_simd)]
+</span><span class="kw">use </span>core::simd::prelude::<span class="kw-2">*</span>;
+
+<span class="kw">let </span>short = <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>];
+<span class="kw">let </span>(prefix, middle, suffix) = short.as_simd::&lt;<span class="number">4</span>&gt;();
+<span class="macro">assert_eq!</span>(middle, []); <span class="comment">// Not enough elements for anything in the middle
+
+// They might be split in any possible way between prefix and suffix
+</span><span class="kw">let </span>it = prefix.iter().chain(suffix).copied();
+<span class="macro">assert_eq!</span>(it.collect::&lt;Vec&lt;<span class="kw">_</span>&gt;&gt;(), <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>]);
+
+<span class="kw">fn </span>basic_simd_sum(x: <span class="kw-2">&amp;</span>[f32]) -&gt; f32 {
+    <span class="kw">use </span>std::ops::Add;
+    <span class="kw">let </span>(prefix, middle, suffix) = x.as_simd();
+    <span class="kw">let </span>sums = f32x4::from_array([
+        prefix.iter().copied().sum(),
+        <span class="number">0.0</span>,
+        <span class="number">0.0</span>,
+        suffix.iter().copied().sum(),
+    ]);
+    <span class="kw">let </span>sums = middle.iter().copied().fold(sums, f32x4::add);
+    sums.reduce_sum()
+}
+
+<span class="kw">let </span>numbers: Vec&lt;f32&gt; = (<span class="number">1</span>..<span class="number">101</span>).map(|x| x <span class="kw">as _</span>).collect();
+<span class="macro">assert_eq!</span>(basic_simd_sum(<span class="kw-2">&amp;</span>numbers[<span class="number">1</span>..<span class="number">99</span>]), <span class="number">4949.0</span>);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.is_sorted" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4072-4074">source</a><h4 class="code-header">pub fn <a href="#method.is_sorted" class="fn">is_sorted</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>,</div></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>is_sorted</code>)</span></div></span></summary><div class="docblock"><p>Checks if the elements of this slice are sorted.</p>
+<p>That is, for each element <code>a</code> and its following element <code>b</code>, <code>a &lt;= b</code> must hold. If the
+slice yields exactly zero or one element, <code>true</code> is returned.</p>
+<p>Note that if <code>Self::Item</code> is only <code>PartialOrd</code>, but not <code>Ord</code>, the above definition
+implies that this function returns <code>false</code> if any two consecutive items are not
+comparable.</p>
+<h5 id="examples-50"><a class="doc-anchor" href="#examples-50">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(is_sorted)]
+</span><span class="kw">let </span>empty: [i32; <span class="number">0</span>] = [];
+
+<span class="macro">assert!</span>([<span class="number">1</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="number">9</span>].is_sorted());
+<span class="macro">assert!</span>(![<span class="number">1</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">4</span>].is_sorted());
+<span class="macro">assert!</span>([<span class="number">0</span>].is_sorted());
+<span class="macro">assert!</span>(empty.is_sorted());
+<span class="macro">assert!</span>(![<span class="number">0.0</span>, <span class="number">1.0</span>, f32::NAN].is_sorted());</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.is_sorted_by" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4101-4103">source</a><h4 class="code-header">pub fn <a href="#method.is_sorted_by" class="fn">is_sorted_by</a>&lt;'a, F&gt;(&amp;'a self, compare: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>is_sorted</code>)</span></div></span></summary><div class="docblock"><p>Checks if the elements of this slice are sorted using the given comparator function.</p>
+<p>Instead of using <code>PartialOrd::partial_cmp</code>, this function uses the given <code>compare</code>
+function to determine whether two elements are to be considered in sorted order.</p>
+<h5 id="examples-51"><a class="doc-anchor" href="#examples-51">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(is_sorted)]
+
+</span><span class="macro">assert!</span>([<span class="number">1</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="number">9</span>].is_sorted_by(|a, b| a &lt;= b));
+<span class="macro">assert!</span>(![<span class="number">1</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="number">9</span>].is_sorted_by(|a, b| a &lt; b));
+
+<span class="macro">assert!</span>([<span class="number">0</span>].is_sorted_by(|a, b| <span class="bool-val">true</span>));
+<span class="macro">assert!</span>([<span class="number">0</span>].is_sorted_by(|a, b| <span class="bool-val">false</span>));
+
+<span class="kw">let </span>empty: [i32; <span class="number">0</span>] = [];
+<span class="macro">assert!</span>(empty.is_sorted_by(|a, b| <span class="bool-val">false</span>));
+<span class="macro">assert!</span>(empty.is_sorted_by(|a, b| <span class="bool-val">true</span>));</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.is_sorted_by_key" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4127-4130">source</a><h4 class="code-header">pub fn <a href="#method.is_sorted_by_key" class="fn">is_sorted_by_key</a>&lt;'a, F, K&gt;(&amp;'a self, f: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>) -&gt; K,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>,</div></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>is_sorted</code>)</span></div></span></summary><div class="docblock"><p>Checks if the elements of this slice are sorted using the given key extraction function.</p>
+<p>Instead of comparing the slice’s elements directly, this function compares the keys of the
+elements, as determined by <code>f</code>. Apart from that, it’s equivalent to <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_sorted" title="method slice::is_sorted"><code>is_sorted</code></a>; see its
+documentation for more information.</p>
+<h5 id="examples-52"><a class="doc-anchor" href="#examples-52">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(is_sorted)]
+
+</span><span class="macro">assert!</span>([<span class="string">"c"</span>, <span class="string">"bb"</span>, <span class="string">"aaa"</span>].is_sorted_by_key(|s| s.len()));
+<span class="macro">assert!</span>(![-<span class="number">2i32</span>, -<span class="number">1</span>, <span class="number">0</span>, <span class="number">3</span>].is_sorted_by_key(|n| n.abs()));</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.partition_point" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.52.0">1.52.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4186-4188">source</a></span><h4 class="code-header">pub fn <a href="#method.partition_point" class="fn">partition_point</a>&lt;P&gt;(&amp;self, pred: P) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><div class="where">where
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns the index of the partition point according to the given predicate
+(the index of the first element of the second partition).</p>
+<p>The slice is assumed to be partitioned according to the given predicate.
+This means that all elements for which the predicate returns true are at the start of the slice
+and all elements for which the predicate returns false are at the end.
+For example, <code>[7, 15, 3, 5, 4, 12, 6]</code> is partitioned under the predicate <code>x % 2 != 0</code>
+(all odd numbers are at the start, all even at the end).</p>
+<p>If this slice is not partitioned, the returned result is unspecified and meaningless,
+as this method performs a kind of binary search.</p>
+<p>See also <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search" title="method slice::binary_search"><code>binary_search</code></a>, <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by" title="method slice::binary_search_by"><code>binary_search_by</code></a>, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key" title="method slice::binary_search_by_key"><code>binary_search_by_key</code></a>.</p>
+<h5 id="examples-53"><a class="doc-anchor" href="#examples-53">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>];
+<span class="kw">let </span>i = v.partition_point(|<span class="kw-2">&amp;</span>x| x &lt; <span class="number">5</span>);
+
+<span class="macro">assert_eq!</span>(i, <span class="number">4</span>);
+<span class="macro">assert!</span>(v[..i].iter().all(|<span class="kw-2">&amp;</span>x| x &lt; <span class="number">5</span>));
+<span class="macro">assert!</span>(v[i..].iter().all(|<span class="kw-2">&amp;</span>x| !(x &lt; <span class="number">5</span>)));</code></pre></div>
+<p>If all elements of the slice match the predicate, including if the slice
+is empty, then the length of the slice will be returned:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>a = [<span class="number">2</span>, <span class="number">4</span>, <span class="number">8</span>];
+<span class="macro">assert_eq!</span>(a.partition_point(|x| x &lt; <span class="kw-2">&amp;</span><span class="number">100</span>), a.len());
+<span class="kw">let </span>a: [i32; <span class="number">0</span>] = [];
+<span class="macro">assert_eq!</span>(a.partition_point(|x| x &lt; <span class="kw-2">&amp;</span><span class="number">100</span>), <span class="number">0</span>);</code></pre></div>
+<p>If you want to insert an item to a sorted vector, while maintaining
+sort order:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>s = <span class="macro">vec!</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">8</span>, <span class="number">13</span>, <span class="number">21</span>, <span class="number">34</span>, <span class="number">55</span>];
+<span class="kw">let </span>num = <span class="number">42</span>;
+<span class="kw">let </span>idx = s.partition_point(|<span class="kw-2">&amp;</span>x| x &lt;= num);
+s.insert(idx, num);
+<span class="macro">assert_eq!</span>(s, [<span class="number">0</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">8</span>, <span class="number">13</span>, <span class="number">21</span>, <span class="number">34</span>, <span class="number">42</span>, <span class="number">55</span>]);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.to_ascii_uppercase" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.23.0">1.23.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#621">source</a></span><h4 class="code-header">pub fn <a href="#method.to_ascii_uppercase" class="fn">to_ascii_uppercase</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</h4></section></summary><div class="docblock"><p>Returns a vector containing a copy of this slice where each byte
+is mapped to its ASCII upper case equivalent.</p>
+<p>ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’,
+but non-ASCII letters are unchanged.</p>
+<p>To uppercase the value in-place, use <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.make_ascii_uppercase" title="method slice::make_ascii_uppercase"><code>make_ascii_uppercase</code></a>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.to_ascii_lowercase" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.23.0">1.23.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#642">source</a></span><h4 class="code-header">pub fn <a href="#method.to_ascii_lowercase" class="fn">to_ascii_lowercase</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</h4></section></summary><div class="docblock"><p>Returns a vector containing a copy of this slice where each byte
+is mapped to its ASCII lower case equivalent.</p>
+<p>ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’,
+but non-ASCII letters are unchanged.</p>
+<p>To lowercase the value in-place, use <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.make_ascii_lowercase" title="method slice::make_ascii_lowercase"><code>make_ascii_lowercase</code></a>.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.to_vec" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#412-414">source</a></span><h4 class="code-header">pub fn <a href="#method.to_vec" class="fn">to_vec</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;T&gt;<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h4></section></summary><div class="docblock"><p>Copies <code>self</code> into a new <code>Vec</code>.</p>
+<h5 id="examples-54"><a class="doc-anchor" href="#examples-54">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
+<span class="kw">let </span>x = s.to_vec();
+<span class="comment">// Here, `s` and `x` can be modified independently.</span></code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.to_vec_in" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#436-438">source</a><h4 class="code-header">pub fn <a href="#method.to_vec_in" class="fn">to_vec_in</a>&lt;A&gt;(&amp;self, alloc: A) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;T, A&gt;<div class="where">where
+    A: <a class="trait" href="https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html" title="trait core::alloc::Allocator">Allocator</a>,
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>allocator_api</code>)</span></div></span></summary><div class="docblock"><p>Copies <code>self</code> into a new <code>Vec</code> with an allocator.</p>
+<h5 id="examples-55"><a class="doc-anchor" href="#examples-55">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(allocator_api)]
+
+</span><span class="kw">use </span>std::alloc::System;
+
+<span class="kw">let </span>s = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
+<span class="kw">let </span>x = s.to_vec_in(System);
+<span class="comment">// Here, `s` and `x` can be modified independently.</span></code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.repeat" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.40.0">1.40.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#489-491">source</a></span><h4 class="code-header">pub fn <a href="#method.repeat" class="fn">repeat</a>(&amp;self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;T&gt;<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>,</div></h4></section></summary><div class="docblock"><p>Creates a vector by copying a slice <code>n</code> times.</p>
+<h5 id="panics-12"><a class="doc-anchor" href="#panics-12">§</a>Panics</h5>
+<p>This function will panic if the capacity would overflow.</p>
+<h5 id="examples-56"><a class="doc-anchor" href="#examples-56">§</a>Examples</h5>
+<p>Basic usage:</p>
+
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>([<span class="number">1</span>, <span class="number">2</span>].repeat(<span class="number">3</span>), <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">1</span>, <span class="number">2</span>]);</code></pre></div>
+<p>A panic upon overflow:</p>
+
+<div class="example-wrap should_panic"><a href="#" class="tooltip" title="This example panics">ⓘ</a><pre class="rust rust-example-rendered"><code><span class="comment">// this will panic at runtime
+</span><span class="string">b"0123456789abcdef"</span>.repeat(usize::MAX);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.concat" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#557-559">source</a></span><h4 class="code-header">pub fn <a href="#method.concat" class="fn">concat</a>&lt;Item&gt;(&amp;self) -&gt; &lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/slice/trait.Concat.html" title="trait alloc::slice::Concat">Concat</a>&lt;Item&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/alloc/slice/trait.Concat.html#associatedtype.Output" title="type alloc::slice::Concat::Output">Output</a> <a href="#" class="tooltip" data-notable-ty="&lt;[T] as Concat&lt;Item&gt;&gt;::Output">ⓘ</a><div class="where">where
+    <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/slice/trait.Concat.html" title="trait alloc::slice::Concat">Concat</a>&lt;Item&gt;,
+    Item: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class="docblock"><p>Flattens a slice of <code>T</code> into a single value <code>Self::Output</code>.</p>
+<h5 id="examples-57"><a class="doc-anchor" href="#examples-57">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>([<span class="string">"hello"</span>, <span class="string">"world"</span>].concat(), <span class="string">"helloworld"</span>);
+<span class="macro">assert_eq!</span>([[<span class="number">1</span>, <span class="number">2</span>], [<span class="number">3</span>, <span class="number">4</span>]].concat(), [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.join" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#576-578">source</a></span><h4 class="code-header">pub fn <a href="#method.join" class="fn">join</a>&lt;Separator&gt;(
+    &amp;self,
+    sep: Separator
+) -&gt; &lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html" title="trait alloc::slice::Join">Join</a>&lt;Separator&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html#associatedtype.Output" title="type alloc::slice::Join::Output">Output</a> <a href="#" class="tooltip" data-notable-ty="&lt;[T] as Join&lt;Separator&gt;&gt;::Output">ⓘ</a><div class="where">where
+    <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html" title="trait alloc::slice::Join">Join</a>&lt;Separator&gt;,</div></h4></section></summary><div class="docblock"><p>Flattens a slice of <code>T</code> into a single value <code>Self::Output</code>, placing a
+given separator between each.</p>
+<h5 id="examples-58"><a class="doc-anchor" href="#examples-58">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>([<span class="string">"hello"</span>, <span class="string">"world"</span>].join(<span class="string">" "</span>), <span class="string">"hello world"</span>);
+<span class="macro">assert_eq!</span>([[<span class="number">1</span>, <span class="number">2</span>], [<span class="number">3</span>, <span class="number">4</span>]].join(<span class="kw-2">&amp;</span><span class="number">0</span>), [<span class="number">1</span>, <span class="number">2</span>, <span class="number">0</span>, <span class="number">3</span>, <span class="number">4</span>]);
+<span class="macro">assert_eq!</span>([[<span class="number">1</span>, <span class="number">2</span>], [<span class="number">3</span>, <span class="number">4</span>]].join(<span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">0</span>][..]), [<span class="number">1</span>, <span class="number">2</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">3</span>, <span class="number">4</span>]);</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.connect" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#596-598">source</a></span><h4 class="code-header">pub fn <a href="#method.connect" class="fn">connect</a>&lt;Separator&gt;(
+    &amp;self,
+    sep: Separator
+) -&gt; &lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html" title="trait alloc::slice::Join">Join</a>&lt;Separator&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html#associatedtype.Output" title="type alloc::slice::Join::Output">Output</a> <a href="#" class="tooltip" data-notable-ty="&lt;[T] as Join&lt;Separator&gt;&gt;::Output">ⓘ</a><div class="where">where
+    <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html" title="trait alloc::slice::Join">Join</a>&lt;Separator&gt;,</div></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.3.0: renamed to join</span></div></span></summary><div class="docblock"><p>Flattens a slice of <code>T</code> into a single value <code>Self::Output</code>, placing a
+given separator between each.</p>
+<h5 id="examples-59"><a class="doc-anchor" href="#examples-59">§</a>Examples</h5>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>([<span class="string">"hello"</span>, <span class="string">"world"</span>].connect(<span class="string">" "</span>), <span class="string">"hello world"</span>);
+<span class="macro">assert_eq!</span>([[<span class="number">1</span>, <span class="number">2</span>], [<span class="number">3</span>, <span class="number">4</span>]].connect(<span class="kw-2">&amp;</span><span class="number">0</span>), [<span class="number">1</span>, <span class="number">2</span>, <span class="number">0</span>, <span class="number">3</span>, <span class="number">4</span>]);</code></pre></div>
+</div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AsRef%3C%5Bu8%5D%3E-for-ConnectionId%3C'a%3E" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#237-245">source</a><a href="#impl-AsRef%3C%5Bu8%5D%3E-for-ConnectionId%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt; for <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.as_ref" class="method trait-impl"><a class="src rightside" href="../src/quiche/packet.rs.html#239-244">source</a><a href="#method.as_ref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html#tymethod.as_ref" class="fn">as_ref</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></summary><div class='docblock'>Converts this type into a shared reference of the (usually inferred) input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ConnectionId%3C'a%3E" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#266-271">source</a><a href="#impl-Clone-for-ConnectionId%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/quiche/packet.rs.html#268-270">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; Self</h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-ConnectionId%3C'a%3E" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#273-282">source</a><a href="#impl-Debug-for-ConnectionId%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/quiche/packet.rs.html#275-281">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-ConnectionId%3C'a%3E" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#204-209">source</a><a href="#impl-Default-for-ConnectionId%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../src/quiche/packet.rs.html#206-208">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -&gt; Self</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deref-for-ConnectionId%3C'a%3E" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#254-264">source</a><a href="#impl-Deref-for-ConnectionId%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a> for <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Target" class="associatedtype trait-impl"><a href="#associatedtype.Target" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" class="associatedtype">Target</a> = [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]</h4></section></summary><div class='docblock'>The resulting type after dereferencing.</div></details><details class="toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl"><a class="src rightside" href="../src/quiche/packet.rs.html#258-263">source</a><a href="#method.deref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref" class="fn">deref</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></summary><div class='docblock'>Dereferences the value.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-From%3CConnectionId%3C'a%3E%3E-for-Vec%3Cu8%3E" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#218-226">source</a><a href="#impl-From%3CConnectionId%3C'a%3E%3E-for-Vec%3Cu8%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;<a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;&gt; for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl"><a class="src rightside" href="../src/quiche/packet.rs.html#220-225">source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(id: <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;) -&gt; Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-From%3CVec%3Cu8%3E%3E-for-ConnectionId%3C'a%3E" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#211-216">source</a><a href="#impl-From%3CVec%3Cu8%3E%3E-for-ConnectionId%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;&gt; for <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="../src/quiche/packet.rs.html#213-215">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(v: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;) -&gt; Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Hash-for-ConnectionId%3C'a%3E" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#247-252">source</a><a href="#impl-Hash-for-ConnectionId%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl"><a class="src rightside" href="../src/quiche/packet.rs.html#249-251">source</a><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a>&lt;H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>&gt;(&amp;self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut H</a>)</h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#238-240">source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a>&lt;H&gt;(data: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut H</a>)<div class="where">where
+    H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-ConnectionId%3C'a%3E" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#228-233">source</a><a href="#impl-PartialEq-for-ConnectionId%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/quiche/packet.rs.html#230-232">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-ConnectionId%3C'a%3E" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#235">source</a><a href="#impl-Eq-for-ConnectionId%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;</h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-ConnectionId%3C'a%3E" class="impl"><a href="#impl-Freeze-for-ConnectionId%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;</h3></section><section id="impl-RefUnwindSafe-for-ConnectionId%3C'a%3E" class="impl"><a href="#impl-RefUnwindSafe-for-ConnectionId%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;</h3></section><section id="impl-Send-for-ConnectionId%3C'a%3E" class="impl"><a href="#impl-Send-for-ConnectionId%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;</h3></section><section id="impl-Sync-for-ConnectionId%3C'a%3E" class="impl"><a href="#impl-Sync-for-ConnectionId%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;</h3></section><section id="impl-Unpin-for-ConnectionId%3C'a%3E" class="impl"><a href="#impl-Unpin-for-ConnectionId%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;</h3></section><section id="impl-UnwindSafe-for-ConnectionId%3C'a%3E" class="impl"><a href="#impl-UnwindSafe-for-ConnectionId%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;</h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div><script type="text/json" id="notable-traits-data">{"&[u8]":"<h3>Notable traits for <code>&amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</div>","<[T] as Concat<Item>>::Output":"<h3>Notable traits for <code>&amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</div><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Write.html\" title=\"trait std::io::Write\">Write</a> for &amp;mut [<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</div>","<[T] as Join<Separator>>::Output":"<h3>Notable traits for <code>&amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</div><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Write.html\" title=\"trait std::io::Write\">Write</a> for &amp;mut [<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</div>"}</script></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/struct.Header.html b/quiche/struct.Header.html
new file mode 100644
index 0000000..f73337e
--- /dev/null
+++ b/quiche/struct.Header.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A QUIC packet’s header."><title>Header in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">Header</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.dcid">dcid</a></li><li><a href="#structfield.scid">scid</a></li><li><a href="#structfield.token">token</a></li><li><a href="#structfield.ty">ty</a></li><li><a href="#structfield.version">version</a></li><li><a href="#structfield.versions">versions</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.from_slice">from_slice</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-Header%3C'a%3E">Clone</a></li><li><a href="#impl-Debug-for-Header%3C'a%3E">Debug</a></li><li><a href="#impl-Eq-for-Header%3C'a%3E">Eq</a></li><li><a href="#impl-PartialEq-for-Header%3C'a%3E">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-Header%3C'a%3E">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Header%3C'a%3E">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Header%3C'a%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Header%3C'a%3E">Send</a></li><li><a href="#impl-Sync-for-Header%3C'a%3E">Sync</a></li><li><a href="#impl-Unpin-for-Header%3C'a%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Header%3C'a%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">quiche</a>::<wbr><a class="struct" href="#">Header</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/packet.rs.html#286-318">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Header&lt;'a&gt; {
+    pub ty: <a class="enum" href="enum.Type.html" title="enum quiche::Type">Type</a>,
+    pub version: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
+    pub dcid: <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;,
+    pub scid: <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;,
+    pub token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;&gt;,
+    pub versions: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;&gt;,
+    <span class="comment">/* private fields */</span>
+}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A QUIC packet’s header.</p>
+</div></details><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.ty" class="structfield section-header"><a href="#structfield.ty" class="anchor field">§</a><code>ty: <a class="enum" href="enum.Type.html" title="enum quiche::Type">Type</a></code></span><div class="docblock"><p>The type of the packet.</p>
+</div><span id="structfield.version" class="structfield section-header"><a href="#structfield.version" class="anchor field">§</a><code>version: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a></code></span><div class="docblock"><p>The version of the packet.</p>
+</div><span id="structfield.dcid" class="structfield section-header"><a href="#structfield.dcid" class="anchor field">§</a><code>dcid: <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;</code></span><div class="docblock"><p>The destination connection ID of the packet.</p>
+</div><span id="structfield.scid" class="structfield section-header"><a href="#structfield.scid" class="anchor field">§</a><code>scid: <a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'a&gt;</code></span><div class="docblock"><p>The source connection ID of the packet.</p>
+</div><span id="structfield.token" class="structfield section-header"><a href="#structfield.token" class="anchor field">§</a><code>token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;&gt;</code></span><div class="docblock"><p>The address verification token of the packet. Only present in <code>Initial</code>
+and <code>Retry</code> packets.</p>
+</div><span id="structfield.versions" class="structfield section-header"><a href="#structfield.versions" class="anchor field">§</a><code>versions: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;&gt;</code></span><div class="docblock"><p>The list of versions in the packet. Only present in
+<code>VersionNegotiation</code> packets.</p>
+</div><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Header%3C'a%3E" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#320-523">source</a><a href="#impl-Header%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="struct" href="struct.Header.html" title="struct quiche::Header">Header</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from_slice" class="method"><a class="src rightside" href="../src/quiche/packet.rs.html#339-344">source</a><h4 class="code-header">pub fn <a href="#method.from_slice" class="fn">from_slice</a>&lt;'b&gt;(buf: &amp;'b mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], dcid_len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="type" href="type.Result.html" title="type quiche::Result">Result</a>&lt;<a class="struct" href="struct.Header.html" title="struct quiche::Header">Header</a>&lt;'a&gt;&gt;</h4></section></summary><div class="docblock"><p>Parses a QUIC packet header from the given buffer.</p>
+<p>The <code>dcid_len</code> parameter is the length of the destination connection ID,
+required to parse short header packets.</p>
+<h6 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples:</h6>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>(len, src) = socket.recv_from(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+<span class="kw">let </span>hdr = quiche::Header::from_slice(<span class="kw-2">&amp;mut </span>buf[..len], LOCAL_CONN_ID_LEN)<span class="question-mark">?</span>;</code></pre></div>
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Header%3C'a%3E" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#285">source</a><a href="#impl-Clone-for-Header%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Header.html" title="struct quiche::Header">Header</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/quiche/packet.rs.html#285">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.Header.html" title="struct quiche::Header">Header</a>&lt;'a&gt;</h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Header%3C'a%3E" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#525-556">source</a><a href="#impl-Debug-for-Header%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Header.html" title="struct quiche::Header">Header</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/quiche/packet.rs.html#526-555">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-Header%3C'a%3E" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#285">source</a><a href="#impl-PartialEq-for-Header%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.Header.html" title="struct quiche::Header">Header</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/quiche/packet.rs.html#285">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.Header.html" title="struct quiche::Header">Header</a>&lt;'a&gt;) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-Header%3C'a%3E" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#285">source</a><a href="#impl-Eq-for-Header%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Header.html" title="struct quiche::Header">Header</a>&lt;'a&gt;</h3></section><section id="impl-StructuralPartialEq-for-Header%3C'a%3E" class="impl"><a class="src rightside" href="../src/quiche/packet.rs.html#285">source</a><a href="#impl-StructuralPartialEq-for-Header%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.Header.html" title="struct quiche::Header">Header</a>&lt;'a&gt;</h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Header%3C'a%3E" class="impl"><a href="#impl-Freeze-for-Header%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Header.html" title="struct quiche::Header">Header</a>&lt;'a&gt;</h3></section><section id="impl-RefUnwindSafe-for-Header%3C'a%3E" class="impl"><a href="#impl-RefUnwindSafe-for-Header%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Header.html" title="struct quiche::Header">Header</a>&lt;'a&gt;</h3></section><section id="impl-Send-for-Header%3C'a%3E" class="impl"><a href="#impl-Send-for-Header%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Header.html" title="struct quiche::Header">Header</a>&lt;'a&gt;</h3></section><section id="impl-Sync-for-Header%3C'a%3E" class="impl"><a href="#impl-Sync-for-Header%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Header.html" title="struct quiche::Header">Header</a>&lt;'a&gt;</h3></section><section id="impl-Unpin-for-Header%3C'a%3E" class="impl"><a href="#impl-Unpin-for-Header%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Header.html" title="struct quiche::Header">Header</a>&lt;'a&gt;</h3></section><section id="impl-UnwindSafe-for-Header%3C'a%3E" class="impl"><a href="#impl-UnwindSafe-for-Header%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Header.html" title="struct quiche::Header">Header</a>&lt;'a&gt;</h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/struct.PathStats.html b/quiche/struct.PathStats.html
new file mode 100644
index 0000000..637cfa9
--- /dev/null
+++ b/quiche/struct.PathStats.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Statistics about the path of a connection."><title>PathStats in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">PathStats</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.active">active</a></li><li><a href="#structfield.cwnd">cwnd</a></li><li><a href="#structfield.delivery_rate">delivery_rate</a></li><li><a href="#structfield.local_addr">local_addr</a></li><li><a href="#structfield.lost">lost</a></li><li><a href="#structfield.lost_bytes">lost_bytes</a></li><li><a href="#structfield.min_rtt">min_rtt</a></li><li><a href="#structfield.peer_addr">peer_addr</a></li><li><a href="#structfield.pmtu">pmtu</a></li><li><a href="#structfield.recv">recv</a></li><li><a href="#structfield.recv_bytes">recv_bytes</a></li><li><a href="#structfield.retrans">retrans</a></li><li><a href="#structfield.rtt">rtt</a></li><li><a href="#structfield.rttvar">rttvar</a></li><li><a href="#structfield.sent">sent</a></li><li><a href="#structfield.sent_bytes">sent_bytes</a></li><li><a href="#structfield.stream_retrans_bytes">stream_retrans_bytes</a></li><li><a href="#structfield.validation_state">validation_state</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-PathStats">Clone</a></li><li><a href="#impl-Debug-for-PathStats">Debug</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-PathStats">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-PathStats">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PathStats">Send</a></li><li><a href="#impl-Sync-for-PathStats">Sync</a></li><li><a href="#impl-Unpin-for-PathStats">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PathStats">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">quiche</a>::<wbr><a class="struct" href="#">PathStats</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/path.rs.html#833-895">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct PathStats {<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 18 fields</span></summary>
+    pub local_addr: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>,
+    pub peer_addr: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>,
+    pub validation_state: PathState,
+    pub active: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    pub recv: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
+    pub sent: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
+    pub lost: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
+    pub retrans: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
+    pub rtt: <a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>,
+    pub min_rtt: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>&gt;,
+    pub rttvar: <a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>,
+    pub cwnd: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
+    pub sent_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub recv_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub lost_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub stream_retrans_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub pmtu: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
+    pub delivery_rate: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+</details>}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Statistics about the path of a connection.</p>
+<p>It is part of the <code>Stats</code> structure returned by the <a href="struct.Connection.html#method.stats"><code>stats()</code></a> method.</p>
+</div></details><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.local_addr" class="structfield section-header"><a href="#structfield.local_addr" class="anchor field">§</a><code>local_addr: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a></code></span><div class="docblock"><p>The local address of the path.</p>
+</div><span id="structfield.peer_addr" class="structfield section-header"><a href="#structfield.peer_addr" class="anchor field">§</a><code>peer_addr: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a></code></span><div class="docblock"><p>The peer address of the path.</p>
+</div><span id="structfield.validation_state" class="structfield section-header"><a href="#structfield.validation_state" class="anchor field">§</a><code>validation_state: PathState</code></span><div class="docblock"><p>The path validation state.</p>
+</div><span id="structfield.active" class="structfield section-header"><a href="#structfield.active" class="anchor field">§</a><code>active: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether the path is marked as active.</p>
+</div><span id="structfield.recv" class="structfield section-header"><a href="#structfield.recv" class="anchor field">§</a><code>recv: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>The number of QUIC packets received.</p>
+</div><span id="structfield.sent" class="structfield section-header"><a href="#structfield.sent" class="anchor field">§</a><code>sent: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>The number of QUIC packets sent.</p>
+</div><span id="structfield.lost" class="structfield section-header"><a href="#structfield.lost" class="anchor field">§</a><code>lost: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>The number of QUIC packets that were lost.</p>
+</div><span id="structfield.retrans" class="structfield section-header"><a href="#structfield.retrans" class="anchor field">§</a><code>retrans: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>The number of sent QUIC packets with retransmitted data.</p>
+</div><span id="structfield.rtt" class="structfield section-header"><a href="#structfield.rtt" class="anchor field">§</a><code>rtt: <a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a></code></span><div class="docblock"><p>The estimated round-trip time of the connection.</p>
+</div><span id="structfield.min_rtt" class="structfield section-header"><a href="#structfield.min_rtt" class="anchor field">§</a><code>min_rtt: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>&gt;</code></span><div class="docblock"><p>The minimum round-trip time observed.</p>
+</div><span id="structfield.rttvar" class="structfield section-header"><a href="#structfield.rttvar" class="anchor field">§</a><code>rttvar: <a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a></code></span><div class="docblock"><p>The estimated round-trip time variation in samples using a mean
+variation.</p>
+</div><span id="structfield.cwnd" class="structfield section-header"><a href="#structfield.cwnd" class="anchor field">§</a><code>cwnd: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>The size of the connection’s congestion window in bytes.</p>
+</div><span id="structfield.sent_bytes" class="structfield section-header"><a href="#structfield.sent_bytes" class="anchor field">§</a><code>sent_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The number of sent bytes.</p>
+</div><span id="structfield.recv_bytes" class="structfield section-header"><a href="#structfield.recv_bytes" class="anchor field">§</a><code>recv_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The number of received bytes.</p>
+</div><span id="structfield.lost_bytes" class="structfield section-header"><a href="#structfield.lost_bytes" class="anchor field">§</a><code>lost_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The number of bytes lost.</p>
+</div><span id="structfield.stream_retrans_bytes" class="structfield section-header"><a href="#structfield.stream_retrans_bytes" class="anchor field">§</a><code>stream_retrans_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The number of stream bytes retransmitted.</p>
+</div><span id="structfield.pmtu" class="structfield section-header"><a href="#structfield.pmtu" class="anchor field">§</a><code>pmtu: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>The current PMTU for the connection.</p>
+</div><span id="structfield.delivery_rate" class="structfield section-header"><a href="#structfield.delivery_rate" class="anchor field">§</a><code>delivery_rate: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The most recent data delivery rate estimate in bytes/s.</p>
+<p>Note that this value could be inaccurate if the application does not
+respect pacing hints (see <a href="struct.SendInfo.html#structfield.at"><code>SendInfo.at</code></a> and <a href="index.html#pacing">Pacing</a> for more
+details).</p>
+</div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PathStats" class="impl"><a class="src rightside" href="../src/quiche/path.rs.html#832">source</a><a href="#impl-Clone-for-PathStats" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.PathStats.html" title="struct quiche::PathStats">PathStats</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/quiche/path.rs.html#832">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.PathStats.html" title="struct quiche::PathStats">PathStats</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-PathStats" class="impl"><a class="src rightside" href="../src/quiche/path.rs.html#897-928">source</a><a href="#impl-Debug-for-PathStats" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.PathStats.html" title="struct quiche::PathStats">PathStats</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/quiche/path.rs.html#899-927">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-PathStats" class="impl"><a href="#impl-Freeze-for-PathStats" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.PathStats.html" title="struct quiche::PathStats">PathStats</a></h3></section><section id="impl-RefUnwindSafe-for-PathStats" class="impl"><a href="#impl-RefUnwindSafe-for-PathStats" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.PathStats.html" title="struct quiche::PathStats">PathStats</a></h3></section><section id="impl-Send-for-PathStats" class="impl"><a href="#impl-Send-for-PathStats" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.PathStats.html" title="struct quiche::PathStats">PathStats</a></h3></section><section id="impl-Sync-for-PathStats" class="impl"><a href="#impl-Sync-for-PathStats" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.PathStats.html" title="struct quiche::PathStats">PathStats</a></h3></section><section id="impl-Unpin-for-PathStats" class="impl"><a href="#impl-Unpin-for-PathStats" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.PathStats.html" title="struct quiche::PathStats">PathStats</a></h3></section><section id="impl-UnwindSafe-for-PathStats" class="impl"><a href="#impl-UnwindSafe-for-PathStats" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.PathStats.html" title="struct quiche::PathStats">PathStats</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/struct.RecvInfo.html b/quiche/struct.RecvInfo.html
new file mode 100644
index 0000000..717b632
--- /dev/null
+++ b/quiche/struct.RecvInfo.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Ancillary information about incoming packets."><title>RecvInfo in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">RecvInfo</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.from">from</a></li><li><a href="#structfield.to">to</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-RecvInfo">Clone</a></li><li><a href="#impl-Copy-for-RecvInfo">Copy</a></li><li><a href="#impl-Debug-for-RecvInfo">Debug</a></li><li><a href="#impl-Eq-for-RecvInfo">Eq</a></li><li><a href="#impl-PartialEq-for-RecvInfo">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-RecvInfo">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-RecvInfo">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-RecvInfo">RefUnwindSafe</a></li><li><a href="#impl-Send-for-RecvInfo">Send</a></li><li><a href="#impl-Sync-for-RecvInfo">Sync</a></li><li><a href="#impl-Unpin-for-RecvInfo">Unpin</a></li><li><a href="#impl-UnwindSafe-for-RecvInfo">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">quiche</a>::<wbr><a class="struct" href="#">RecvInfo</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#712-718">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct RecvInfo {
+    pub from: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>,
+    pub to: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>,
+}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Ancillary information about incoming packets.</p>
+</div></details><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.from" class="structfield section-header"><a href="#structfield.from" class="anchor field">§</a><code>from: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a></code></span><div class="docblock"><p>The remote address the packet was received from.</p>
+</div><span id="structfield.to" class="structfield section-header"><a href="#structfield.to" class="anchor field">§</a><code>to: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a></code></span><div class="docblock"><p>The local address the packet was received on.</p>
+</div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-RecvInfo" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#711">source</a><a href="#impl-Clone-for-RecvInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.RecvInfo.html" title="struct quiche::RecvInfo">RecvInfo</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#711">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.RecvInfo.html" title="struct quiche::RecvInfo">RecvInfo</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-RecvInfo" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#711">source</a><a href="#impl-Debug-for-RecvInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.RecvInfo.html" title="struct quiche::RecvInfo">RecvInfo</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#711">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-RecvInfo" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#711">source</a><a href="#impl-PartialEq-for-RecvInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.RecvInfo.html" title="struct quiche::RecvInfo">RecvInfo</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#711">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.RecvInfo.html" title="struct quiche::RecvInfo">RecvInfo</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Copy-for-RecvInfo" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#711">source</a><a href="#impl-Copy-for-RecvInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.RecvInfo.html" title="struct quiche::RecvInfo">RecvInfo</a></h3></section><section id="impl-Eq-for-RecvInfo" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#711">source</a><a href="#impl-Eq-for-RecvInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.RecvInfo.html" title="struct quiche::RecvInfo">RecvInfo</a></h3></section><section id="impl-StructuralPartialEq-for-RecvInfo" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#711">source</a><a href="#impl-StructuralPartialEq-for-RecvInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.RecvInfo.html" title="struct quiche::RecvInfo">RecvInfo</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-RecvInfo" class="impl"><a href="#impl-Freeze-for-RecvInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.RecvInfo.html" title="struct quiche::RecvInfo">RecvInfo</a></h3></section><section id="impl-RefUnwindSafe-for-RecvInfo" class="impl"><a href="#impl-RefUnwindSafe-for-RecvInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.RecvInfo.html" title="struct quiche::RecvInfo">RecvInfo</a></h3></section><section id="impl-Send-for-RecvInfo" class="impl"><a href="#impl-Send-for-RecvInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.RecvInfo.html" title="struct quiche::RecvInfo">RecvInfo</a></h3></section><section id="impl-Sync-for-RecvInfo" class="impl"><a href="#impl-Sync-for-RecvInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.RecvInfo.html" title="struct quiche::RecvInfo">RecvInfo</a></h3></section><section id="impl-Unpin-for-RecvInfo" class="impl"><a href="#impl-Unpin-for-RecvInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.RecvInfo.html" title="struct quiche::RecvInfo">RecvInfo</a></h3></section><section id="impl-UnwindSafe-for-RecvInfo" class="impl"><a href="#impl-UnwindSafe-for-RecvInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.RecvInfo.html" title="struct quiche::RecvInfo">RecvInfo</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/struct.SendInfo.html b/quiche/struct.SendInfo.html
new file mode 100644
index 0000000..0473779
--- /dev/null
+++ b/quiche/struct.SendInfo.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Ancillary information about outgoing packets."><title>SendInfo in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">SendInfo</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.at">at</a></li><li><a href="#structfield.from">from</a></li><li><a href="#structfield.to">to</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-SendInfo">Clone</a></li><li><a href="#impl-Copy-for-SendInfo">Copy</a></li><li><a href="#impl-Debug-for-SendInfo">Debug</a></li><li><a href="#impl-Eq-for-SendInfo">Eq</a></li><li><a href="#impl-PartialEq-for-SendInfo">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-SendInfo">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-SendInfo">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-SendInfo">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SendInfo">Send</a></li><li><a href="#impl-Sync-for-SendInfo">Sync</a></li><li><a href="#impl-Unpin-for-SendInfo">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SendInfo">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q">Equivalent&lt;K&gt;</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q-1">Equivalent&lt;K&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">quiche</a>::<wbr><a class="struct" href="#">SendInfo</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#722-735">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct SendInfo {
+    pub from: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>,
+    pub to: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>,
+    pub at: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>,
+}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Ancillary information about outgoing packets.</p>
+</div></details><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.from" class="structfield section-header"><a href="#structfield.from" class="anchor field">§</a><code>from: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a></code></span><div class="docblock"><p>The local address the packet should be sent from.</p>
+</div><span id="structfield.to" class="structfield section-header"><a href="#structfield.to" class="anchor field">§</a><code>to: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a></code></span><div class="docblock"><p>The remote address the packet should be sent to.</p>
+</div><span id="structfield.at" class="structfield section-header"><a href="#structfield.at" class="anchor field">§</a><code>at: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a></code></span><div class="docblock"><p>The time to send the packet out.</p>
+<p>See <a href="index.html#pacing">Pacing</a> for more details.</p>
+</div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-SendInfo" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#721">source</a><a href="#impl-Clone-for-SendInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.SendInfo.html" title="struct quiche::SendInfo">SendInfo</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#721">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.SendInfo.html" title="struct quiche::SendInfo">SendInfo</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-SendInfo" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#721">source</a><a href="#impl-Debug-for-SendInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SendInfo.html" title="struct quiche::SendInfo">SendInfo</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#721">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-SendInfo" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#721">source</a><a href="#impl-PartialEq-for-SendInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.SendInfo.html" title="struct quiche::SendInfo">SendInfo</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#721">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.SendInfo.html" title="struct quiche::SendInfo">SendInfo</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Copy-for-SendInfo" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#721">source</a><a href="#impl-Copy-for-SendInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.SendInfo.html" title="struct quiche::SendInfo">SendInfo</a></h3></section><section id="impl-Eq-for-SendInfo" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#721">source</a><a href="#impl-Eq-for-SendInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.SendInfo.html" title="struct quiche::SendInfo">SendInfo</a></h3></section><section id="impl-StructuralPartialEq-for-SendInfo" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#721">source</a><a href="#impl-StructuralPartialEq-for-SendInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.SendInfo.html" title="struct quiche::SendInfo">SendInfo</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-SendInfo" class="impl"><a href="#impl-Freeze-for-SendInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.SendInfo.html" title="struct quiche::SendInfo">SendInfo</a></h3></section><section id="impl-RefUnwindSafe-for-SendInfo" class="impl"><a href="#impl-RefUnwindSafe-for-SendInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SendInfo.html" title="struct quiche::SendInfo">SendInfo</a></h3></section><section id="impl-Send-for-SendInfo" class="impl"><a href="#impl-Send-for-SendInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SendInfo.html" title="struct quiche::SendInfo">SendInfo</a></h3></section><section id="impl-Sync-for-SendInfo" class="impl"><a href="#impl-Sync-for-SendInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SendInfo.html" title="struct quiche::SendInfo">SendInfo</a></h3></section><section id="impl-Unpin-for-SendInfo" class="impl"><a href="#impl-Unpin-for-SendInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SendInfo.html" title="struct quiche::SendInfo">SendInfo</a></h3></section><section id="impl-UnwindSafe-for-SendInfo" class="impl"><a href="#impl-UnwindSafe-for-SendInfo" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SendInfo.html" title="struct quiche::SendInfo">SendInfo</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E-for-Q-1" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q-1" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
+    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Compare self to <code>key</code> and return <code>true</code> if they are equal.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/struct.SocketAddrIter.html b/quiche/struct.SocketAddrIter.html
new file mode 100644
index 0000000..cedaaab
--- /dev/null
+++ b/quiche/struct.SocketAddrIter.html
@@ -0,0 +1,210 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An iterator over SocketAddr."><title>SocketAddrIter in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">SocketAddrIter</a></h2><div class="sidebar-elems"><section><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Default-for-SocketAddrIter">Default</a></li><li><a href="#impl-ExactSizeIterator-for-SocketAddrIter">ExactSizeIterator</a></li><li><a href="#impl-Iterator-for-SocketAddrIter">Iterator</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-SocketAddrIter">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-SocketAddrIter">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SocketAddrIter">Send</a></li><li><a href="#impl-Sync-for-SocketAddrIter">Sync</a></li><li><a href="#impl-Unpin-for-SocketAddrIter">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SocketAddrIter">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-IntoIterator-for-I">IntoIterator</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">quiche</a>::<wbr><a class="struct" href="#">SocketAddrIter</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/path.rs.html#502-505">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct SocketAddrIter { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An iterator over SocketAddr.</p>
+</div></details><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-SocketAddrIter" class="impl"><a class="src rightside" href="../src/quiche/path.rs.html#501">source</a><a href="#impl-Default-for-SocketAddrIter" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.SocketAddrIter.html" title="struct quiche::SocketAddrIter">SocketAddrIter</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../src/quiche/path.rs.html#501">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -&gt; <a class="struct" href="struct.SocketAddrIter.html" title="struct quiche::SocketAddrIter">SocketAddrIter</a> <a href="#" class="tooltip" data-notable-ty="SocketAddrIter">ⓘ</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-ExactSizeIterator-for-SocketAddrIter" class="impl"><a class="src rightside" href="../src/quiche/path.rs.html#518-523">source</a><a href="#impl-ExactSizeIterator-for-SocketAddrIter" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html" title="trait core::iter::traits::exact_size::ExactSizeIterator">ExactSizeIterator</a> for <a class="struct" href="struct.SocketAddrIter.html" title="struct quiche::SocketAddrIter">SocketAddrIter</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.len" class="method trait-impl"><a class="src rightside" href="../src/quiche/path.rs.html#520-522">source</a><a href="#method.len" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html#method.len" class="fn">len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Returns the exact remaining length of the iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html#method.len">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.is_empty" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/exact_size.rs.html#148">source</a><a href="#method.is_empty" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html#method.is_empty" class="fn">is_empty</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>exact_size_is_empty</code>)</span></div></span><div class='docblock'>Returns <code>true</code> if the iterator is empty. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html#method.is_empty">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Iterator-for-SocketAddrIter" class="impl"><a class="src rightside" href="../src/quiche/path.rs.html#507-516">source</a><a href="#impl-Iterator-for-SocketAddrIter" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="struct.SocketAddrIter.html" title="struct quiche::SocketAddrIter">SocketAddrIter</a></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Item" class="associatedtype trait-impl"><a href="#associatedtype.Item" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="associatedtype">Item</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a></h4></section></summary><div class='docblock'>The type of the elements being iterated over.</div></details><details class="toggle method-toggle" open><summary><section id="method.next" class="method trait-impl"><a class="src rightside" href="../src/quiche/path.rs.html#511-515">source</a><a href="#method.next" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#tymethod.next" class="fn">next</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;</h4></section></summary><div class='docblock'>Advances the iterator and returns the next value. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#tymethod.next">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.next_chunk" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#115-119">source</a><a href="#method.next_chunk" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.next_chunk" class="fn">next_chunk</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(
+    &amp;mut self
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;[Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">N</a>], <a class="struct" href="https://doc.rust-lang.org/nightly/core/array/iter/struct.IntoIter.html" title="struct core::array::iter::IntoIter">IntoIter</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, N&gt;&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_next_chunk</code>)</span></div></span><div class='docblock'>Advances the iterator and returns an array containing the next <code>N</code> values. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.next_chunk">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.size_hint" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#193">source</a></span><a href="#method.size_hint" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.size_hint" class="fn">size_hint</a>(&amp;self) -&gt; (<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;)</h4></section></summary><div class='docblock'>Returns the bounds on the remaining length of the iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.size_hint">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.count" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#229-231">source</a></span><a href="#method.count" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.count" class="fn">count</a>(self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Consumes the iterator, counting the number of iterations and returning it. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.count">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.last" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#258-260">source</a></span><a href="#method.last" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.last" class="fn">last</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Consumes the iterator, returning the last element. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.last">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.advance_by" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#305">source</a><a href="#method.advance_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.advance_by" class="fn">advance_by</a>(&amp;mut self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/num/nonzero/struct.NonZero.html" title="struct core::num::nonzero::NonZero">NonZero</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_advance_by</code>)</span></div></span><div class='docblock'>Advances the iterator by <code>n</code> elements. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.advance_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.nth" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#357">source</a></span><a href="#method.nth" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.nth" class="fn">nth</a>(&amp;mut self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;</h4></section></summary><div class='docblock'>Returns the <code>n</code>th element of the iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.nth">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.step_by" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.28.0">1.28.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#408-410">source</a></span><a href="#method.step_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.step_by" class="fn">step_by</a>(self, step: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/step_by/struct.StepBy.html" title="struct core::iter::adapters::step_by::StepBy">StepBy</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator starting at the same point, but stepping by
+the given amount at each iteration. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.step_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.chain" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#480-483">source</a></span><a href="#method.chain" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.chain" class="fn">chain</a>&lt;U&gt;(self, other: U) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/chain/struct.Chain.html" title="struct core::iter::adapters::chain::Chain">Chain</a>&lt;Self, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,</div></h4></section></summary><div class='docblock'>Takes two iterators and creates a new iterator over both in sequence. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.chain">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.zip" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#599-602">source</a></span><a href="#method.zip" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.zip" class="fn">zip</a>&lt;U&gt;(self, other: U) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/zip/struct.Zip.html" title="struct core::iter::adapters::zip::Zip">Zip</a>&lt;Self, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,</div></h4></section></summary><div class='docblock'>‘Zips up’ two iterators into a single iterator of pairs. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.zip">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.intersperse" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#642-645">source</a><a href="#method.intersperse" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.intersperse" class="fn">intersperse</a>(self, separator: Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/intersperse/struct.Intersperse.html" title="struct core::iter::adapters::intersperse::Intersperse">Intersperse</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_intersperse</code>)</span></div></span><div class='docblock'>Creates a new iterator which places a copy of <code>separator</code> between adjacent
+items of the original iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.intersperse">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.intersperse_with" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#701-704">source</a><a href="#method.intersperse_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.intersperse_with" class="fn">intersperse_with</a>&lt;G&gt;(self, separator: G) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/intersperse/struct.IntersperseWith.html" title="struct core::iter::adapters::intersperse::IntersperseWith">IntersperseWith</a>&lt;Self, G&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    G: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>() -&gt; Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_intersperse</code>)</span></div></span><div class='docblock'>Creates a new iterator which places an item generated by <code>separator</code>
+between adjacent items of the original iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.intersperse_with">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.map" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#761-764">source</a></span><a href="#method.map" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map" class="fn">map</a>&lt;B, F&gt;(self, f: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/map/struct.Map.html" title="struct core::iter::adapters::map::Map">Map</a>&lt;Self, F&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; B,</div></h4></section></summary><div class='docblock'>Takes a closure and creates an iterator which calls that closure on each
+element. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.for_each" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#807-810">source</a></span><a href="#method.for_each" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.for_each" class="fn">for_each</a>&lt;F&gt;(self, f: F)<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>),</div></h4></section></summary><div class='docblock'>Calls a closure on each element of an iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.for_each">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.filter" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#883-886">source</a></span><a href="#method.filter" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter" class="fn">filter</a>&lt;P&gt;(self, predicate: P) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/filter/struct.Filter.html" title="struct core::iter::adapters::filter::Filter">Filter</a>&lt;Self, P&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator which uses a closure to determine if an element
+should be yielded. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.filter_map" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#929-932">source</a></span><a href="#method.filter_map" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter_map" class="fn">filter_map</a>&lt;B, F&gt;(self, f: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/filter_map/struct.FilterMap.html" title="struct core::iter::adapters::filter_map::FilterMap">FilterMap</a>&lt;Self, F&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;B&gt;,</div></h4></section></summary><div class='docblock'>Creates an iterator that both filters and maps. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter_map">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.enumerate" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#976-978">source</a></span><a href="#method.enumerate" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.enumerate" class="fn">enumerate</a>(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/enumerate/struct.Enumerate.html" title="struct core::iter::adapters::enumerate::Enumerate">Enumerate</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator which gives the current iteration count as well as
+the next value. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.enumerate">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.peekable" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1048-1050">source</a></span><a href="#method.peekable" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.peekable" class="fn">peekable</a>(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/peekable/struct.Peekable.html" title="struct core::iter::adapters::peekable::Peekable">Peekable</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator which can use the <a href="https://doc.rust-lang.org/nightly/core/iter/adapters/peekable/struct.Peekable.html#method.peek" title="method core::iter::adapters::peekable::Peekable::peek"><code>peek</code></a> and <a href="https://doc.rust-lang.org/nightly/core/iter/adapters/peekable/struct.Peekable.html#method.peek_mut" title="method core::iter::adapters::peekable::Peekable::peek_mut"><code>peek_mut</code></a> methods
+to look at the next element of the iterator without consuming it. See
+their documentation for more information. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.peekable">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.skip_while" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1114-1117">source</a></span><a href="#method.skip_while" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip_while" class="fn">skip_while</a>&lt;P&gt;(self, predicate: P) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/skip_while/struct.SkipWhile.html" title="struct core::iter::adapters::skip_while::SkipWhile">SkipWhile</a>&lt;Self, P&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator that <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip" title="method core::iter::traits::iterator::Iterator::skip"><code>skip</code></a>s elements based on a predicate. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip_while">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.take_while" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1196-1199">source</a></span><a href="#method.take_while" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take_while" class="fn">take_while</a>&lt;P&gt;(self, predicate: P) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/take_while/struct.TakeWhile.html" title="struct core::iter::adapters::take_while::TakeWhile">TakeWhile</a>&lt;Self, P&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator that yields elements based on a predicate. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take_while">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.map_while" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.57.0">1.57.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1285-1288">source</a></span><a href="#method.map_while" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_while" class="fn">map_while</a>&lt;B, P&gt;(self, predicate: P) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/map_while/struct.MapWhile.html" title="struct core::iter::adapters::map_while::MapWhile">MapWhile</a>&lt;Self, P&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;B&gt;,</div></h4></section></summary><div class='docblock'>Creates an iterator that both yields elements based on a predicate and maps. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_while">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.skip" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1315-1317">source</a></span><a href="#method.skip" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip" class="fn">skip</a>(self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/skip/struct.Skip.html" title="struct core::iter::adapters::skip::Skip">Skip</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator that skips the first <code>n</code> elements. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.take" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1369-1371">source</a></span><a href="#method.take" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take" class="fn">take</a>(self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/take/struct.Take.html" title="struct core::iter::adapters::take::Take">Take</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator that yields the first <code>n</code> elements, or fewer
+if the underlying iterator ends sooner. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.scan" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1417-1420">source</a></span><a href="#method.scan" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.scan" class="fn">scan</a>&lt;St, B, F&gt;(self, initial_state: St, f: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/scan/struct.Scan.html" title="struct core::iter::adapters::scan::Scan">Scan</a>&lt;Self, St, F&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut St</a>, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;B&gt;,</div></h4></section></summary><div class='docblock'>An iterator adapter which, like <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold" title="method core::iter::traits::iterator::Iterator::fold"><code>fold</code></a>, holds internal state, but
+unlike <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold" title="method core::iter::traits::iterator::Iterator::fold"><code>fold</code></a>, produces a new iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.scan">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.flat_map" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1456-1460">source</a></span><a href="#method.flat_map" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.flat_map" class="fn">flat_map</a>&lt;U, F&gt;(self, f: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/flatten/struct.FlatMap.html" title="struct core::iter::adapters::flatten::FlatMap">FlatMap</a>&lt;Self, U, F&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; U,</div></h4></section></summary><div class='docblock'>Creates an iterator that works like map, but flattens nested structure. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.flat_map">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.map_windows" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1698-1701">source</a><a href="#method.map_windows" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_windows" class="fn">map_windows</a>&lt;F, R, const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(self, f: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/map_windows/struct.MapWindows.html" title="struct core::iter::adapters::map_windows::MapWindows">MapWindows</a>&lt;Self, F, N&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;[Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">N</a>]) -&gt; R,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_map_windows</code>)</span></div></span><div class='docblock'>Calls the given function <code>f</code> for each contiguous window of size <code>N</code> over
+<code>self</code> and returns an iterator over the outputs of <code>f</code>. Like <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.windows" title="method slice::windows"><code>slice::windows()</code></a>,
+the windows during mapping overlap as well. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_windows">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.fuse" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1765-1767">source</a></span><a href="#method.fuse" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fuse" class="fn">fuse</a>(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/fuse/struct.Fuse.html" title="struct core::iter::adapters::fuse::Fuse">Fuse</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator which ends after the first <a href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html#variant.None" title="variant core::option::Option::None"><code>None</code></a>. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fuse">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.inspect" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1850-1853">source</a></span><a href="#method.inspect" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.inspect" class="fn">inspect</a>&lt;F&gt;(self, f: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/inspect/struct.Inspect.html" title="struct core::iter::adapters::inspect::Inspect">Inspect</a>&lt;Self, F&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>),</div></h4></section></summary><div class='docblock'>Does something with each element of an iterator, passing the value on. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.inspect">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.by_ref" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1879-1881">source</a></span><a href="#method.by_ref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.by_ref" class="fn">by_ref</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut Self</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Borrows an iterator, rather than consuming it. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.by_ref">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.collect" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1999-2001">source</a></span><a href="#method.collect" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect" class="fn">collect</a>&lt;B&gt;(self) -&gt; B<div class="where">where
+    B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html" title="trait core::iter::traits::collect::FromIterator">FromIterator</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Transforms an iterator into a collection. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.collect_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2152-2154">source</a><a href="#method.collect_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect_into" class="fn">collect_into</a>&lt;E&gt;(self, collection: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut E</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut E</a><div class="where">where
+    E: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_collect_into</code>)</span></div></span><div class='docblock'>Collects all the items from an iterator into a collection. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect_into">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.partition" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2185-2189">source</a></span><a href="#method.partition" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partition" class="fn">partition</a>&lt;B, F&gt;(self, f: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(B, B)</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Consumes an iterator, creating two collections from it. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partition">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.is_partitioned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2306-2309">source</a><a href="#method.is_partitioned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_partitioned" class="fn">is_partitioned</a>&lt;P&gt;(self, predicate: P) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_is_partitioned</code>)</span></div></span><div class='docblock'>Checks if the elements of this iterator are partitioned according to the given predicate,
+such that all those that return <code>true</code> precede all those that return <code>false</code>. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_partitioned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.try_fold" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.27.0">1.27.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2401-2405">source</a></span><a href="#method.try_fold" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_fold" class="fn">try_fold</a>&lt;B, F, R&gt;(&amp;mut self, init: B, f: F) -&gt; R<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(B, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; R,
+    R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&lt;Output = B&gt;,</div></h4></section></summary><div class='docblock'>An iterator method that applies a function as long as it returns
+successfully, producing a single, final value. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_fold">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.try_for_each" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.27.0">1.27.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2460-2464">source</a></span><a href="#method.try_for_each" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_for_each" class="fn">try_for_each</a>&lt;F, R&gt;(&amp;mut self, f: F) -&gt; R<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; R,
+    R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&lt;Output = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;,</div></h4></section></summary><div class='docblock'>An iterator method that applies a fallible function to each item in the
+iterator, stopping at the first error and returning that error. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_for_each">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.fold" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2580-2583">source</a></span><a href="#method.fold" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold" class="fn">fold</a>&lt;B, F&gt;(self, init: B, f: F) -&gt; B<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(B, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; B,</div></h4></section></summary><div class='docblock'>Folds every element into an accumulator by applying an operation,
+returning the final result. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.reduce" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.51.0">1.51.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2618-2621">source</a></span><a href="#method.reduce" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.reduce" class="fn">reduce</a>&lt;F&gt;(self, f: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>,</div></h4></section></summary><div class='docblock'>Reduces the elements to a single one, by repeatedly applying a reducing
+operation. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.reduce">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.try_reduce" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2690-2695">source</a><a href="#method.try_reduce" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_reduce" class="fn">try_reduce</a>&lt;F, R&gt;(
+    &amp;mut self,
+    f: F
+) -&gt; &lt;&lt;R as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual" title="type core::ops::try_trait::Try::Residual">Residual</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html" title="trait core::ops::try_trait::Residual">Residual</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&lt;R as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Output" title="type core::ops::try_trait::Try::Output">Output</a>&gt;&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html#associatedtype.TryType" title="type core::ops::try_trait::Residual::TryType">TryType</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; R,
+    R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&lt;Output = Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,
+    &lt;R as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual" title="type core::ops::try_trait::Try::Residual">Residual</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html" title="trait core::ops::try_trait::Residual">Residual</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;&gt;,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iterator_try_reduce</code>)</span></div></span><div class='docblock'>Reduces the elements to a single one by repeatedly applying a reducing operation. If the
+closure returns a failure, the failure is propagated back to the caller immediately. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_reduce">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.all" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2748-2751">source</a></span><a href="#method.all" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.all" class="fn">all</a>&lt;F&gt;(&amp;mut self, f: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Tests if every element of the iterator matches a predicate. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.all">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.any" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2802-2805">source</a></span><a href="#method.any" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.any" class="fn">any</a>&lt;F&gt;(&amp;mut self, f: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Tests if any element of the iterator matches a predicate. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.any">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.find" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2866-2869">source</a></span><a href="#method.find" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find" class="fn">find</a>&lt;P&gt;(&amp;mut self, predicate: P) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Searches for an element of an iterator that satisfies a predicate. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.find_map" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2898-2901">source</a></span><a href="#method.find_map" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find_map" class="fn">find_map</a>&lt;B, F&gt;(&amp;mut self, f: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;B&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;B&gt;,</div></h4></section></summary><div class='docblock'>Applies function to the elements of iterator and returns
+the first non-none result. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find_map">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.try_find" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2956-2961">source</a><a href="#method.try_find" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_find" class="fn">try_find</a>&lt;F, R&gt;(
+    &amp;mut self,
+    f: F
+) -&gt; &lt;&lt;R as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual" title="type core::ops::try_trait::Try::Residual">Residual</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html" title="trait core::ops::try_trait::Residual">Residual</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html#associatedtype.TryType" title="type core::ops::try_trait::Residual::TryType">TryType</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; R,
+    R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&lt;Output = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;,
+    &lt;R as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual" title="type core::ops::try_trait::Try::Residual">Residual</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html" title="trait core::ops::try_trait::Residual">Residual</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;&gt;,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>try_find</code>)</span></div></span><div class='docblock'>Applies function to the elements of iterator and returns
+the first true result or the first error. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_find">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.position" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3039-3042">source</a></span><a href="#method.position" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position" class="fn">position</a>&lt;P&gt;(&amp;mut self, predicate: P) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Searches for an element in an iterator, returning its index. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.max" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3154-3157">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max" class="fn">max</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,</div></h4></section></summary><div class='docblock'>Returns the maximum element of an iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.min" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3191-3194">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min" class="fn">min</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,</div></h4></section></summary><div class='docblock'>Returns the minimum element of an iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.max_by_key" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.6.0">1.6.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3214-3217">source</a></span><a href="#method.max_by_key" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by_key" class="fn">max_by_key</a>&lt;B, F&gt;(self, f: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; B,</div></h4></section></summary><div class='docblock'>Returns the element that gives the maximum value from the
+specified function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by_key">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.max_by" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.15.0">1.15.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3248-3251">source</a></span><a href="#method.max_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by" class="fn">max_by</a>&lt;F&gt;(self, compare: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>,</div></h4></section></summary><div class='docblock'>Returns the element that gives the maximum value with respect to the
+specified comparison function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.min_by_key" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.6.0">1.6.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3276-3279">source</a></span><a href="#method.min_by_key" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by_key" class="fn">min_by_key</a>&lt;B, F&gt;(self, f: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; B,</div></h4></section></summary><div class='docblock'>Returns the element that gives the minimum value from the
+specified function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by_key">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.min_by" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.15.0">1.15.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3310-3313">source</a></span><a href="#method.min_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by" class="fn">min_by</a>&lt;F&gt;(self, compare: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>,</div></h4></section></summary><div class='docblock'>Returns the element that gives the minimum value with respect to the
+specified comparison function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.unzip" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3385-3389">source</a></span><a href="#method.unzip" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.unzip" class="fn">unzip</a>&lt;A, B, FromA, FromB&gt;(self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(FromA, FromB)</a><div class="where">where
+    FromA: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a>&lt;A&gt;,
+    FromB: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a>&lt;B&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>&lt;Item = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(A, B)</a>&gt;,</div></h4></section></summary><div class='docblock'>Converts an iterator of pairs into a pair of containers. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.unzip">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.copied" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.36.0">1.36.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3416-3419">source</a></span><a href="#method.copied" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.copied" class="fn">copied</a>&lt;'a, T&gt;(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/copied/struct.Copied.html" title="struct core::iter::adapters::copied::Copied">Copied</a>&lt;Self&gt;<div class="where">where
+    T: 'a + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>&lt;Item = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>&gt;,</div></h4></section></summary><div class='docblock'>Creates an iterator which copies all of its elements. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.copied">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.cloned" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3464-3467">source</a></span><a href="#method.cloned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cloned" class="fn">cloned</a>&lt;'a, T&gt;(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/cloned/struct.Cloned.html" title="struct core::iter::adapters::cloned::Cloned">Cloned</a>&lt;Self&gt;<div class="where">where
+    T: 'a + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>&lt;Item = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>&gt;,</div></h4></section></summary><div class='docblock'>Creates an iterator which <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" title="method core::clone::Clone::clone"><code>clone</code></a>s all of its elements. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cloned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.array_chunks" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3541-3543">source</a><a href="#method.array_chunks" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.array_chunks" class="fn">array_chunks</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/array_chunks/struct.ArrayChunks.html" title="struct core::iter::adapters::array_chunks::ArrayChunks">ArrayChunks</a>&lt;Self, N&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_array_chunks</code>)</span></div></span><div class='docblock'>Returns an iterator over <code>N</code> elements of the iterator at a time. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.array_chunks">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.sum" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.11.0">1.11.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3573-3576">source</a></span><a href="#method.sum" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.sum" class="fn">sum</a>&lt;S&gt;(self) -&gt; S<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html" title="trait core::iter::traits::accum::Sum">Sum</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,</div></h4></section></summary><div class='docblock'>Sums the elements of an iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.sum">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.product" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.11.0">1.11.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3606-3609">source</a></span><a href="#method.product" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.product" class="fn">product</a>&lt;P&gt;(self) -&gt; P<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Product.html" title="trait core::iter::traits::accum::Product">Product</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,</div></h4></section></summary><div class='docblock'>Iterates over the entire iterator, multiplying all the elements <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.product">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3628-3632">source</a></span><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cmp" class="fn">cmp</a>&lt;I&gt;(self, other: I) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'><a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">Lexicographically</a> compares the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> with those
+of another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cmp">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.cmp_by" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3656-3660">source</a><a href="#method.cmp_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cmp_by" class="fn">cmp_by</a>&lt;I, F&gt;(self, other: I, cmp: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_order_by</code>)</span></div></span><div class='docblock'><a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">Lexicographically</a> compares the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> with those
+of another with respect to the specified comparison function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cmp_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3713-3717">source</a></span><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp" class="fn">partial_cmp</a>&lt;I&gt;(self, other: I) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>&gt;<div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'><a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">Lexicographically</a> compares the <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd"><code>PartialOrd</code></a> elements of
+this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> with those of another. The comparison works like short-circuit
+evaluation, returning a result without comparing the remaining elements.
+As soon as an order can be determined, the evaluation stops and a result is returned. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.partial_cmp_by" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3750-3754">source</a><a href="#method.partial_cmp_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp_by" class="fn">partial_cmp_by</a>&lt;I, F&gt;(self, other: I, partial_cmp: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>&gt;,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_order_by</code>)</span></div></span><div class='docblock'><a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">Lexicographically</a> compares the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> with those
+of another with respect to the specified comparison function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3784-3788">source</a></span><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq" class="fn">eq</a>&lt;I&gt;(self, other: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are equal to those of
+another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.eq_by" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3808-3812">source</a><a href="#method.eq_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq_by" class="fn">eq_by</a>&lt;I, F&gt;(self, other: I, eq: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_order_by</code>)</span></div></span><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are equal to those of
+another with respect to the specified equality function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3841-3845">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ne" class="fn">ne</a>&lt;I&gt;(self, other: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are not equal to those of
+another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ne">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3863-3867">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.lt" class="fn">lt</a>&lt;I&gt;(self, other: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">lexicographically</a>
+less than those of another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.lt">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.le" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3885-3889">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.le" class="fn">le</a>&lt;I&gt;(self, other: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">lexicographically</a>
+less or equal to those of another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.le">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3907-3911">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.gt" class="fn">gt</a>&lt;I&gt;(self, other: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">lexicographically</a>
+greater than those of another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.gt">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3929-3933">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ge" class="fn">ge</a>&lt;I&gt;(self, other: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">lexicographically</a>
+greater than or equal to those of another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ge">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.is_sorted" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3961-3964">source</a><a href="#method.is_sorted" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted" class="fn">is_sorted</a>(self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>is_sorted</code>)</span></div></span><div class='docblock'>Checks if the elements of this iterator are sorted. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.is_sorted_by" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3990-3993">source</a><a href="#method.is_sorted_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by" class="fn">is_sorted_by</a>&lt;F&gt;(self, compare: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>is_sorted</code>)</span></div></span><div class='docblock'>Checks if the elements of this iterator are sorted using the given comparator function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.is_sorted_by_key" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#4037-4041">source</a><a href="#method.is_sorted_by_key" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by_key" class="fn">is_sorted_by_key</a>&lt;F, K&gt;(self, f: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; K,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>is_sorted</code>)</span></div></span><div class='docblock'>Checks if the elements of this iterator are sorted using the given key extraction
+function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by_key">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-SocketAddrIter" class="impl"><a href="#impl-Freeze-for-SocketAddrIter" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.SocketAddrIter.html" title="struct quiche::SocketAddrIter">SocketAddrIter</a></h3></section><section id="impl-RefUnwindSafe-for-SocketAddrIter" class="impl"><a href="#impl-RefUnwindSafe-for-SocketAddrIter" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SocketAddrIter.html" title="struct quiche::SocketAddrIter">SocketAddrIter</a></h3></section><section id="impl-Send-for-SocketAddrIter" class="impl"><a href="#impl-Send-for-SocketAddrIter" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SocketAddrIter.html" title="struct quiche::SocketAddrIter">SocketAddrIter</a></h3></section><section id="impl-Sync-for-SocketAddrIter" class="impl"><a href="#impl-Sync-for-SocketAddrIter" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SocketAddrIter.html" title="struct quiche::SocketAddrIter">SocketAddrIter</a></h3></section><section id="impl-Unpin-for-SocketAddrIter" class="impl"><a href="#impl-Unpin-for-SocketAddrIter" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SocketAddrIter.html" title="struct quiche::SocketAddrIter">SocketAddrIter</a></h3></section><section id="impl-UnwindSafe-for-SocketAddrIter" class="impl"><a href="#impl-UnwindSafe-for-SocketAddrIter" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SocketAddrIter.html" title="struct quiche::SocketAddrIter">SocketAddrIter</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoIterator-for-I" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#349">source</a><a href="#impl-IntoIterator-for-I" class="anchor">§</a><h3 class="code-header">impl&lt;I&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a> for I<div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Item-1" class="associatedtype trait-impl"><a href="#associatedtype.Item-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" class="associatedtype">Item</a> = &lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a></h4></section></summary><div class='docblock'>The type of the elements being iterated over.</div></details><details class="toggle" open><summary><section id="associatedtype.IntoIter" class="associatedtype trait-impl"><a href="#associatedtype.IntoIter" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" class="associatedtype">IntoIter</a> = I</h4></section></summary><div class='docblock'>Which kind of iterator are we turning this into?</div></details><details class="toggle method-toggle" open><summary><section id="method.into_iter" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/90603" title="Tracking issue for const_intoiterator_identity">unstable</a></span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#354">source</a></span><a href="#method.into_iter" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter" class="fn">into_iter</a>(self) -&gt; I</h4></section></summary><div class='docblock'>Creates an iterator from a value. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div><script type="text/json" id="notable-traits-data">{"SocketAddrIter":"<h3>Notable traits for <code><a class=\"struct\" href=\"struct.SocketAddrIter.html\" title=\"struct quiche::SocketAddrIter\">SocketAddrIter</a></code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"struct.SocketAddrIter.html\" title=\"struct quiche::SocketAddrIter\">SocketAddrIter</a></div><div class=\"where\">    type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html\" title=\"enum core::net::socket_addr::SocketAddr\">SocketAddr</a>;</div>"}</script></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/struct.Stats.html b/quiche/struct.Stats.html
new file mode 100644
index 0000000..29c635f
--- /dev/null
+++ b/quiche/struct.Stats.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Statistics about the connection."><title>Stats in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">Stats</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.lost">lost</a></li><li><a href="#structfield.lost_bytes">lost_bytes</a></li><li><a href="#structfield.path_challenge_rx_count">path_challenge_rx_count</a></li><li><a href="#structfield.paths_count">paths_count</a></li><li><a href="#structfield.recv">recv</a></li><li><a href="#structfield.recv_bytes">recv_bytes</a></li><li><a href="#structfield.reset_stream_count_local">reset_stream_count_local</a></li><li><a href="#structfield.reset_stream_count_remote">reset_stream_count_remote</a></li><li><a href="#structfield.retrans">retrans</a></li><li><a href="#structfield.sent">sent</a></li><li><a href="#structfield.sent_bytes">sent_bytes</a></li><li><a href="#structfield.stopped_stream_count_local">stopped_stream_count_local</a></li><li><a href="#structfield.stopped_stream_count_remote">stopped_stream_count_remote</a></li><li><a href="#structfield.stream_retrans_bytes">stream_retrans_bytes</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-Stats">Clone</a></li><li><a href="#impl-Debug-for-Stats">Debug</a></li><li><a href="#impl-Default-for-Stats">Default</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Stats">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Stats">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Stats">Send</a></li><li><a href="#impl-Sync-for-Stats">Sync</a></li><li><a href="#impl-Unpin-for-Stats">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Stats">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">quiche</a>::<wbr><a class="struct" href="#">Stats</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#7904-7946">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Stats {<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 14 fields</span></summary>
+    pub recv: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
+    pub sent: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
+    pub lost: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
+    pub retrans: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
+    pub sent_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub recv_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub lost_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub stream_retrans_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub paths_count: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
+    pub reset_stream_count_local: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub stopped_stream_count_local: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub reset_stream_count_remote: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub stopped_stream_count_remote: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub path_challenge_rx_count: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+</details>}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Statistics about the connection.</p>
+<p>A connection’s statistics can be collected using the <a href="struct.Connection.html#method.stats"><code>stats()</code></a> method.</p>
+</div></details><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.recv" class="structfield section-header"><a href="#structfield.recv" class="anchor field">§</a><code>recv: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>The number of QUIC packets received.</p>
+</div><span id="structfield.sent" class="structfield section-header"><a href="#structfield.sent" class="anchor field">§</a><code>sent: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>The number of QUIC packets sent.</p>
+</div><span id="structfield.lost" class="structfield section-header"><a href="#structfield.lost" class="anchor field">§</a><code>lost: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>The number of QUIC packets that were lost.</p>
+</div><span id="structfield.retrans" class="structfield section-header"><a href="#structfield.retrans" class="anchor field">§</a><code>retrans: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>The number of sent QUIC packets with retransmitted data.</p>
+</div><span id="structfield.sent_bytes" class="structfield section-header"><a href="#structfield.sent_bytes" class="anchor field">§</a><code>sent_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The number of sent bytes.</p>
+</div><span id="structfield.recv_bytes" class="structfield section-header"><a href="#structfield.recv_bytes" class="anchor field">§</a><code>recv_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The number of received bytes.</p>
+</div><span id="structfield.lost_bytes" class="structfield section-header"><a href="#structfield.lost_bytes" class="anchor field">§</a><code>lost_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The number of bytes sent lost.</p>
+</div><span id="structfield.stream_retrans_bytes" class="structfield section-header"><a href="#structfield.stream_retrans_bytes" class="anchor field">§</a><code>stream_retrans_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The number of stream bytes retransmitted.</p>
+</div><span id="structfield.paths_count" class="structfield section-header"><a href="#structfield.paths_count" class="anchor field">§</a><code>paths_count: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><div class="docblock"><p>The number of known paths for the connection.</p>
+</div><span id="structfield.reset_stream_count_local" class="structfield section-header"><a href="#structfield.reset_stream_count_local" class="anchor field">§</a><code>reset_stream_count_local: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The number of streams reset by local.</p>
+</div><span id="structfield.stopped_stream_count_local" class="structfield section-header"><a href="#structfield.stopped_stream_count_local" class="anchor field">§</a><code>stopped_stream_count_local: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The number of streams stopped by local.</p>
+</div><span id="structfield.reset_stream_count_remote" class="structfield section-header"><a href="#structfield.reset_stream_count_remote" class="anchor field">§</a><code>reset_stream_count_remote: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The number of streams reset by remote.</p>
+</div><span id="structfield.stopped_stream_count_remote" class="structfield section-header"><a href="#structfield.stopped_stream_count_remote" class="anchor field">§</a><code>stopped_stream_count_remote: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The number of streams stopped by remote.</p>
+</div><span id="structfield.path_challenge_rx_count" class="structfield section-header"><a href="#structfield.path_challenge_rx_count" class="anchor field">§</a><code>path_challenge_rx_count: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The total number of PATH_CHALLENGE frames that were received.</p>
+</div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Stats" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#7903">source</a><a href="#impl-Clone-for-Stats" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Stats.html" title="struct quiche::Stats">Stats</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#7903">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.Stats.html" title="struct quiche::Stats">Stats</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Stats" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#7948-7965">source</a><a href="#impl-Debug-for-Stats" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Stats.html" title="struct quiche::Stats">Stats</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#7950-7964">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-Stats" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#7903">source</a><a href="#impl-Default-for-Stats" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.Stats.html" title="struct quiche::Stats">Stats</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#7903">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -&gt; <a class="struct" href="struct.Stats.html" title="struct quiche::Stats">Stats</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Stats" class="impl"><a href="#impl-Freeze-for-Stats" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Stats.html" title="struct quiche::Stats">Stats</a></h3></section><section id="impl-RefUnwindSafe-for-Stats" class="impl"><a href="#impl-RefUnwindSafe-for-Stats" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Stats.html" title="struct quiche::Stats">Stats</a></h3></section><section id="impl-Send-for-Stats" class="impl"><a href="#impl-Send-for-Stats" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Stats.html" title="struct quiche::Stats">Stats</a></h3></section><section id="impl-Sync-for-Stats" class="impl"><a href="#impl-Sync-for-Stats" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Stats.html" title="struct quiche::Stats">Stats</a></h3></section><section id="impl-Unpin-for-Stats" class="impl"><a href="#impl-Unpin-for-Stats" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Stats.html" title="struct quiche::Stats">Stats</a></h3></section><section id="impl-UnwindSafe-for-Stats" class="impl"><a href="#impl-UnwindSafe-for-Stats" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Stats.html" title="struct quiche::Stats">Stats</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/struct.StreamIter.html b/quiche/struct.StreamIter.html
new file mode 100644
index 0000000..6b200c7
--- /dev/null
+++ b/quiche/struct.StreamIter.html
@@ -0,0 +1,210 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An iterator over QUIC streams."><title>StreamIter in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">StreamIter</a></h2><div class="sidebar-elems"><section><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Default-for-StreamIter">Default</a></li><li><a href="#impl-ExactSizeIterator-for-StreamIter">ExactSizeIterator</a></li><li><a href="#impl-Iterator-for-StreamIter">Iterator</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-StreamIter">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-StreamIter">RefUnwindSafe</a></li><li><a href="#impl-Send-for-StreamIter">Send</a></li><li><a href="#impl-Sync-for-StreamIter">Sync</a></li><li><a href="#impl-Unpin-for-StreamIter">Unpin</a></li><li><a href="#impl-UnwindSafe-for-StreamIter">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-IntoIterator-for-I">IntoIterator</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">quiche</a>::<wbr><a class="struct" href="#">StreamIter</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/stream/mod.rs.html#863-866">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct StreamIter { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An iterator over QUIC streams.</p>
+</div></details><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-StreamIter" class="impl"><a class="src rightside" href="../src/quiche/stream/mod.rs.html#862">source</a><a href="#impl-Default-for-StreamIter" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.StreamIter.html" title="struct quiche::StreamIter">StreamIter</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../src/quiche/stream/mod.rs.html#862">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -&gt; <a class="struct" href="struct.StreamIter.html" title="struct quiche::StreamIter">StreamIter</a> <a href="#" class="tooltip" data-notable-ty="StreamIter">ⓘ</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-ExactSizeIterator-for-StreamIter" class="impl"><a class="src rightside" href="../src/quiche/stream/mod.rs.html#889-894">source</a><a href="#impl-ExactSizeIterator-for-StreamIter" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html" title="trait core::iter::traits::exact_size::ExactSizeIterator">ExactSizeIterator</a> for <a class="struct" href="struct.StreamIter.html" title="struct quiche::StreamIter">StreamIter</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.len" class="method trait-impl"><a class="src rightside" href="../src/quiche/stream/mod.rs.html#891-893">source</a><a href="#method.len" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html#method.len" class="fn">len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class='docblock'>Returns the exact remaining length of the iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html#method.len">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.is_empty" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/exact_size.rs.html#148">source</a><a href="#method.is_empty" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html#method.is_empty" class="fn">is_empty</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>exact_size_is_empty</code>)</span></div></span><div class='docblock'>Returns <code>true</code> if the iterator is empty. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html#method.is_empty">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Iterator-for-StreamIter" class="impl"><a class="src rightside" href="../src/quiche/stream/mod.rs.html#878-887">source</a><a href="#impl-Iterator-for-StreamIter" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="struct.StreamIter.html" title="struct quiche::StreamIter">StreamIter</a></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Item" class="associatedtype trait-impl"><a href="#associatedtype.Item" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="associatedtype">Item</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class='docblock'>The type of the elements being iterated over.</div></details><details class="toggle method-toggle" open><summary><section id="method.next" class="method trait-impl"><a class="src rightside" href="../src/quiche/stream/mod.rs.html#882-886">source</a><a href="#method.next" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#tymethod.next" class="fn">next</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;</h4></section></summary><div class='docblock'>Advances the iterator and returns the next value. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#tymethod.next">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.next_chunk" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#115-119">source</a><a href="#method.next_chunk" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.next_chunk" class="fn">next_chunk</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(
+    &amp;mut self
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;[Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">N</a>], <a class="struct" href="https://doc.rust-lang.org/nightly/core/array/iter/struct.IntoIter.html" title="struct core::array::iter::IntoIter">IntoIter</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, N&gt;&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_next_chunk</code>)</span></div></span><div class='docblock'>Advances the iterator and returns an array containing the next <code>N</code> values. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.next_chunk">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.size_hint" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#193">source</a></span><a href="#method.size_hint" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.size_hint" class="fn">size_hint</a>(&amp;self) -&gt; (<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;)</h4></section></summary><div class='docblock'>Returns the bounds on the remaining length of the iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.size_hint">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.count" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#229-231">source</a></span><a href="#method.count" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.count" class="fn">count</a>(self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Consumes the iterator, counting the number of iterations and returning it. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.count">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.last" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#258-260">source</a></span><a href="#method.last" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.last" class="fn">last</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Consumes the iterator, returning the last element. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.last">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.advance_by" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#305">source</a><a href="#method.advance_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.advance_by" class="fn">advance_by</a>(&amp;mut self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/num/nonzero/struct.NonZero.html" title="struct core::num::nonzero::NonZero">NonZero</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_advance_by</code>)</span></div></span><div class='docblock'>Advances the iterator by <code>n</code> elements. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.advance_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.nth" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#357">source</a></span><a href="#method.nth" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.nth" class="fn">nth</a>(&amp;mut self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;</h4></section></summary><div class='docblock'>Returns the <code>n</code>th element of the iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.nth">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.step_by" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.28.0">1.28.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#408-410">source</a></span><a href="#method.step_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.step_by" class="fn">step_by</a>(self, step: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/step_by/struct.StepBy.html" title="struct core::iter::adapters::step_by::StepBy">StepBy</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator starting at the same point, but stepping by
+the given amount at each iteration. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.step_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.chain" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#480-483">source</a></span><a href="#method.chain" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.chain" class="fn">chain</a>&lt;U&gt;(self, other: U) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/chain/struct.Chain.html" title="struct core::iter::adapters::chain::Chain">Chain</a>&lt;Self, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,</div></h4></section></summary><div class='docblock'>Takes two iterators and creates a new iterator over both in sequence. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.chain">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.zip" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#599-602">source</a></span><a href="#method.zip" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.zip" class="fn">zip</a>&lt;U&gt;(self, other: U) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/zip/struct.Zip.html" title="struct core::iter::adapters::zip::Zip">Zip</a>&lt;Self, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,</div></h4></section></summary><div class='docblock'>‘Zips up’ two iterators into a single iterator of pairs. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.zip">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.intersperse" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#642-645">source</a><a href="#method.intersperse" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.intersperse" class="fn">intersperse</a>(self, separator: Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/intersperse/struct.Intersperse.html" title="struct core::iter::adapters::intersperse::Intersperse">Intersperse</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_intersperse</code>)</span></div></span><div class='docblock'>Creates a new iterator which places a copy of <code>separator</code> between adjacent
+items of the original iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.intersperse">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.intersperse_with" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#701-704">source</a><a href="#method.intersperse_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.intersperse_with" class="fn">intersperse_with</a>&lt;G&gt;(self, separator: G) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/intersperse/struct.IntersperseWith.html" title="struct core::iter::adapters::intersperse::IntersperseWith">IntersperseWith</a>&lt;Self, G&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    G: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>() -&gt; Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_intersperse</code>)</span></div></span><div class='docblock'>Creates a new iterator which places an item generated by <code>separator</code>
+between adjacent items of the original iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.intersperse_with">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.map" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#761-764">source</a></span><a href="#method.map" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map" class="fn">map</a>&lt;B, F&gt;(self, f: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/map/struct.Map.html" title="struct core::iter::adapters::map::Map">Map</a>&lt;Self, F&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; B,</div></h4></section></summary><div class='docblock'>Takes a closure and creates an iterator which calls that closure on each
+element. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.for_each" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#807-810">source</a></span><a href="#method.for_each" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.for_each" class="fn">for_each</a>&lt;F&gt;(self, f: F)<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>),</div></h4></section></summary><div class='docblock'>Calls a closure on each element of an iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.for_each">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.filter" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#883-886">source</a></span><a href="#method.filter" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter" class="fn">filter</a>&lt;P&gt;(self, predicate: P) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/filter/struct.Filter.html" title="struct core::iter::adapters::filter::Filter">Filter</a>&lt;Self, P&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator which uses a closure to determine if an element
+should be yielded. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.filter_map" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#929-932">source</a></span><a href="#method.filter_map" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter_map" class="fn">filter_map</a>&lt;B, F&gt;(self, f: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/filter_map/struct.FilterMap.html" title="struct core::iter::adapters::filter_map::FilterMap">FilterMap</a>&lt;Self, F&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;B&gt;,</div></h4></section></summary><div class='docblock'>Creates an iterator that both filters and maps. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter_map">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.enumerate" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#976-978">source</a></span><a href="#method.enumerate" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.enumerate" class="fn">enumerate</a>(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/enumerate/struct.Enumerate.html" title="struct core::iter::adapters::enumerate::Enumerate">Enumerate</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator which gives the current iteration count as well as
+the next value. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.enumerate">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.peekable" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1048-1050">source</a></span><a href="#method.peekable" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.peekable" class="fn">peekable</a>(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/peekable/struct.Peekable.html" title="struct core::iter::adapters::peekable::Peekable">Peekable</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator which can use the <a href="https://doc.rust-lang.org/nightly/core/iter/adapters/peekable/struct.Peekable.html#method.peek" title="method core::iter::adapters::peekable::Peekable::peek"><code>peek</code></a> and <a href="https://doc.rust-lang.org/nightly/core/iter/adapters/peekable/struct.Peekable.html#method.peek_mut" title="method core::iter::adapters::peekable::Peekable::peek_mut"><code>peek_mut</code></a> methods
+to look at the next element of the iterator without consuming it. See
+their documentation for more information. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.peekable">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.skip_while" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1114-1117">source</a></span><a href="#method.skip_while" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip_while" class="fn">skip_while</a>&lt;P&gt;(self, predicate: P) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/skip_while/struct.SkipWhile.html" title="struct core::iter::adapters::skip_while::SkipWhile">SkipWhile</a>&lt;Self, P&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator that <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip" title="method core::iter::traits::iterator::Iterator::skip"><code>skip</code></a>s elements based on a predicate. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip_while">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.take_while" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1196-1199">source</a></span><a href="#method.take_while" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take_while" class="fn">take_while</a>&lt;P&gt;(self, predicate: P) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/take_while/struct.TakeWhile.html" title="struct core::iter::adapters::take_while::TakeWhile">TakeWhile</a>&lt;Self, P&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator that yields elements based on a predicate. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take_while">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.map_while" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.57.0">1.57.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1285-1288">source</a></span><a href="#method.map_while" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_while" class="fn">map_while</a>&lt;B, P&gt;(self, predicate: P) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/map_while/struct.MapWhile.html" title="struct core::iter::adapters::map_while::MapWhile">MapWhile</a>&lt;Self, P&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;B&gt;,</div></h4></section></summary><div class='docblock'>Creates an iterator that both yields elements based on a predicate and maps. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_while">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.skip" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1315-1317">source</a></span><a href="#method.skip" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip" class="fn">skip</a>(self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/skip/struct.Skip.html" title="struct core::iter::adapters::skip::Skip">Skip</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator that skips the first <code>n</code> elements. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.take" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1369-1371">source</a></span><a href="#method.take" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take" class="fn">take</a>(self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/take/struct.Take.html" title="struct core::iter::adapters::take::Take">Take</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator that yields the first <code>n</code> elements, or fewer
+if the underlying iterator ends sooner. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.scan" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1417-1420">source</a></span><a href="#method.scan" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.scan" class="fn">scan</a>&lt;St, B, F&gt;(self, initial_state: St, f: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/scan/struct.Scan.html" title="struct core::iter::adapters::scan::Scan">Scan</a>&lt;Self, St, F&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut St</a>, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;B&gt;,</div></h4></section></summary><div class='docblock'>An iterator adapter which, like <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold" title="method core::iter::traits::iterator::Iterator::fold"><code>fold</code></a>, holds internal state, but
+unlike <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold" title="method core::iter::traits::iterator::Iterator::fold"><code>fold</code></a>, produces a new iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.scan">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.flat_map" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1456-1460">source</a></span><a href="#method.flat_map" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.flat_map" class="fn">flat_map</a>&lt;U, F&gt;(self, f: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/flatten/struct.FlatMap.html" title="struct core::iter::adapters::flatten::FlatMap">FlatMap</a>&lt;Self, U, F&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; U,</div></h4></section></summary><div class='docblock'>Creates an iterator that works like map, but flattens nested structure. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.flat_map">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.map_windows" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1698-1701">source</a><a href="#method.map_windows" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_windows" class="fn">map_windows</a>&lt;F, R, const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(self, f: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/map_windows/struct.MapWindows.html" title="struct core::iter::adapters::map_windows::MapWindows">MapWindows</a>&lt;Self, F, N&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;[Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">N</a>]) -&gt; R,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_map_windows</code>)</span></div></span><div class='docblock'>Calls the given function <code>f</code> for each contiguous window of size <code>N</code> over
+<code>self</code> and returns an iterator over the outputs of <code>f</code>. Like <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.windows" title="method slice::windows"><code>slice::windows()</code></a>,
+the windows during mapping overlap as well. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_windows">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.fuse" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1765-1767">source</a></span><a href="#method.fuse" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fuse" class="fn">fuse</a>(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/fuse/struct.Fuse.html" title="struct core::iter::adapters::fuse::Fuse">Fuse</a>&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an iterator which ends after the first <a href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html#variant.None" title="variant core::option::Option::None"><code>None</code></a>. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fuse">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.inspect" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1850-1853">source</a></span><a href="#method.inspect" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.inspect" class="fn">inspect</a>&lt;F&gt;(self, f: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/inspect/struct.Inspect.html" title="struct core::iter::adapters::inspect::Inspect">Inspect</a>&lt;Self, F&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>),</div></h4></section></summary><div class='docblock'>Does something with each element of an iterator, passing the value on. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.inspect">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.by_ref" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1879-1881">source</a></span><a href="#method.by_ref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.by_ref" class="fn">by_ref</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut Self</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Borrows an iterator, rather than consuming it. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.by_ref">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.collect" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1999-2001">source</a></span><a href="#method.collect" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect" class="fn">collect</a>&lt;B&gt;(self) -&gt; B<div class="where">where
+    B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html" title="trait core::iter::traits::collect::FromIterator">FromIterator</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Transforms an iterator into a collection. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.collect_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2152-2154">source</a><a href="#method.collect_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect_into" class="fn">collect_into</a>&lt;E&gt;(self, collection: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut E</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut E</a><div class="where">where
+    E: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_collect_into</code>)</span></div></span><div class='docblock'>Collects all the items from an iterator into a collection. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect_into">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.partition" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2185-2189">source</a></span><a href="#method.partition" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partition" class="fn">partition</a>&lt;B, F&gt;(self, f: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(B, B)</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Consumes an iterator, creating two collections from it. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partition">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.is_partitioned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2306-2309">source</a><a href="#method.is_partitioned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_partitioned" class="fn">is_partitioned</a>&lt;P&gt;(self, predicate: P) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_is_partitioned</code>)</span></div></span><div class='docblock'>Checks if the elements of this iterator are partitioned according to the given predicate,
+such that all those that return <code>true</code> precede all those that return <code>false</code>. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_partitioned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.try_fold" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.27.0">1.27.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2401-2405">source</a></span><a href="#method.try_fold" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_fold" class="fn">try_fold</a>&lt;B, F, R&gt;(&amp;mut self, init: B, f: F) -&gt; R<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(B, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; R,
+    R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&lt;Output = B&gt;,</div></h4></section></summary><div class='docblock'>An iterator method that applies a function as long as it returns
+successfully, producing a single, final value. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_fold">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.try_for_each" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.27.0">1.27.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2460-2464">source</a></span><a href="#method.try_for_each" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_for_each" class="fn">try_for_each</a>&lt;F, R&gt;(&amp;mut self, f: F) -&gt; R<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; R,
+    R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&lt;Output = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;,</div></h4></section></summary><div class='docblock'>An iterator method that applies a fallible function to each item in the
+iterator, stopping at the first error and returning that error. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_for_each">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.fold" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2580-2583">source</a></span><a href="#method.fold" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold" class="fn">fold</a>&lt;B, F&gt;(self, init: B, f: F) -&gt; B<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(B, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; B,</div></h4></section></summary><div class='docblock'>Folds every element into an accumulator by applying an operation,
+returning the final result. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.reduce" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.51.0">1.51.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2618-2621">source</a></span><a href="#method.reduce" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.reduce" class="fn">reduce</a>&lt;F&gt;(self, f: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>,</div></h4></section></summary><div class='docblock'>Reduces the elements to a single one, by repeatedly applying a reducing
+operation. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.reduce">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.try_reduce" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2690-2695">source</a><a href="#method.try_reduce" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_reduce" class="fn">try_reduce</a>&lt;F, R&gt;(
+    &amp;mut self,
+    f: F
+) -&gt; &lt;&lt;R as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual" title="type core::ops::try_trait::Try::Residual">Residual</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html" title="trait core::ops::try_trait::Residual">Residual</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&lt;R as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Output" title="type core::ops::try_trait::Try::Output">Output</a>&gt;&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html#associatedtype.TryType" title="type core::ops::try_trait::Residual::TryType">TryType</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; R,
+    R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&lt;Output = Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,
+    &lt;R as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual" title="type core::ops::try_trait::Try::Residual">Residual</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html" title="trait core::ops::try_trait::Residual">Residual</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;&gt;,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iterator_try_reduce</code>)</span></div></span><div class='docblock'>Reduces the elements to a single one by repeatedly applying a reducing operation. If the
+closure returns a failure, the failure is propagated back to the caller immediately. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_reduce">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.all" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2748-2751">source</a></span><a href="#method.all" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.all" class="fn">all</a>&lt;F&gt;(&amp;mut self, f: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Tests if every element of the iterator matches a predicate. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.all">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.any" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2802-2805">source</a></span><a href="#method.any" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.any" class="fn">any</a>&lt;F&gt;(&amp;mut self, f: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Tests if any element of the iterator matches a predicate. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.any">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.find" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2866-2869">source</a></span><a href="#method.find" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find" class="fn">find</a>&lt;P&gt;(&amp;mut self, predicate: P) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Searches for an element of an iterator that satisfies a predicate. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.find_map" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2898-2901">source</a></span><a href="#method.find_map" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find_map" class="fn">find_map</a>&lt;B, F&gt;(&amp;mut self, f: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;B&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;B&gt;,</div></h4></section></summary><div class='docblock'>Applies function to the elements of iterator and returns
+the first non-none result. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find_map">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.try_find" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2956-2961">source</a><a href="#method.try_find" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_find" class="fn">try_find</a>&lt;F, R&gt;(
+    &amp;mut self,
+    f: F
+) -&gt; &lt;&lt;R as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual" title="type core::ops::try_trait::Try::Residual">Residual</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html" title="trait core::ops::try_trait::Residual">Residual</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html#associatedtype.TryType" title="type core::ops::try_trait::Residual::TryType">TryType</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; R,
+    R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&lt;Output = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;,
+    &lt;R as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual" title="type core::ops::try_trait::Try::Residual">Residual</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html" title="trait core::ops::try_trait::Residual">Residual</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;&gt;,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>try_find</code>)</span></div></span><div class='docblock'>Applies function to the elements of iterator and returns
+the first true result or the first error. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_find">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.position" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3039-3042">source</a></span><a href="#method.position" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position" class="fn">position</a>&lt;P&gt;(&amp;mut self, predicate: P) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Searches for an element in an iterator, returning its index. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.max" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3154-3157">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max" class="fn">max</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,</div></h4></section></summary><div class='docblock'>Returns the maximum element of an iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.min" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3191-3194">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min" class="fn">min</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,</div></h4></section></summary><div class='docblock'>Returns the minimum element of an iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.max_by_key" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.6.0">1.6.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3214-3217">source</a></span><a href="#method.max_by_key" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by_key" class="fn">max_by_key</a>&lt;B, F&gt;(self, f: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; B,</div></h4></section></summary><div class='docblock'>Returns the element that gives the maximum value from the
+specified function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by_key">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.max_by" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.15.0">1.15.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3248-3251">source</a></span><a href="#method.max_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by" class="fn">max_by</a>&lt;F&gt;(self, compare: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>,</div></h4></section></summary><div class='docblock'>Returns the element that gives the maximum value with respect to the
+specified comparison function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.min_by_key" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.6.0">1.6.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3276-3279">source</a></span><a href="#method.min_by_key" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by_key" class="fn">min_by_key</a>&lt;B, F&gt;(self, f: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; B,</div></h4></section></summary><div class='docblock'>Returns the element that gives the minimum value from the
+specified function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by_key">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.min_by" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.15.0">1.15.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3310-3313">source</a></span><a href="#method.min_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by" class="fn">min_by</a>&lt;F&gt;(self, compare: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>,</div></h4></section></summary><div class='docblock'>Returns the element that gives the minimum value with respect to the
+specified comparison function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.unzip" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3385-3389">source</a></span><a href="#method.unzip" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.unzip" class="fn">unzip</a>&lt;A, B, FromA, FromB&gt;(self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(FromA, FromB)</a><div class="where">where
+    FromA: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a>&lt;A&gt;,
+    FromB: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a>&lt;B&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>&lt;Item = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(A, B)</a>&gt;,</div></h4></section></summary><div class='docblock'>Converts an iterator of pairs into a pair of containers. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.unzip">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.copied" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.36.0">1.36.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3416-3419">source</a></span><a href="#method.copied" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.copied" class="fn">copied</a>&lt;'a, T&gt;(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/copied/struct.Copied.html" title="struct core::iter::adapters::copied::Copied">Copied</a>&lt;Self&gt;<div class="where">where
+    T: 'a + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>&lt;Item = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>&gt;,</div></h4></section></summary><div class='docblock'>Creates an iterator which copies all of its elements. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.copied">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.cloned" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3464-3467">source</a></span><a href="#method.cloned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cloned" class="fn">cloned</a>&lt;'a, T&gt;(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/cloned/struct.Cloned.html" title="struct core::iter::adapters::cloned::Cloned">Cloned</a>&lt;Self&gt;<div class="where">where
+    T: 'a + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>&lt;Item = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>&gt;,</div></h4></section></summary><div class='docblock'>Creates an iterator which <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" title="method core::clone::Clone::clone"><code>clone</code></a>s all of its elements. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cloned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.array_chunks" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3541-3543">source</a><a href="#method.array_chunks" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.array_chunks" class="fn">array_chunks</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/iter/adapters/array_chunks/struct.ArrayChunks.html" title="struct core::iter::adapters::array_chunks::ArrayChunks">ArrayChunks</a>&lt;Self, N&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_array_chunks</code>)</span></div></span><div class='docblock'>Returns an iterator over <code>N</code> elements of the iterator at a time. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.array_chunks">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.sum" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.11.0">1.11.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3573-3576">source</a></span><a href="#method.sum" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.sum" class="fn">sum</a>&lt;S&gt;(self) -&gt; S<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html" title="trait core::iter::traits::accum::Sum">Sum</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,</div></h4></section></summary><div class='docblock'>Sums the elements of an iterator. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.sum">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.product" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.11.0">1.11.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3606-3609">source</a></span><a href="#method.product" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.product" class="fn">product</a>&lt;P&gt;(self) -&gt; P<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Product.html" title="trait core::iter::traits::accum::Product">Product</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,</div></h4></section></summary><div class='docblock'>Iterates over the entire iterator, multiplying all the elements <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.product">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3628-3632">source</a></span><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cmp" class="fn">cmp</a>&lt;I&gt;(self, other: I) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>&gt;,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'><a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">Lexicographically</a> compares the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> with those
+of another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cmp">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.cmp_by" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3656-3660">source</a><a href="#method.cmp_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cmp_by" class="fn">cmp_by</a>&lt;I, F&gt;(self, other: I, cmp: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_order_by</code>)</span></div></span><div class='docblock'><a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">Lexicographically</a> compares the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> with those
+of another with respect to the specified comparison function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cmp_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3713-3717">source</a></span><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp" class="fn">partial_cmp</a>&lt;I&gt;(self, other: I) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>&gt;<div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'><a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">Lexicographically</a> compares the <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd"><code>PartialOrd</code></a> elements of
+this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> with those of another. The comparison works like short-circuit
+evaluation, returning a result without comparing the remaining elements.
+As soon as an order can be determined, the evaluation stops and a result is returned. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.partial_cmp_by" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3750-3754">source</a><a href="#method.partial_cmp_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp_by" class="fn">partial_cmp_by</a>&lt;I, F&gt;(self, other: I, partial_cmp: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>&gt;,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_order_by</code>)</span></div></span><div class='docblock'><a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">Lexicographically</a> compares the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> with those
+of another with respect to the specified comparison function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3784-3788">source</a></span><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq" class="fn">eq</a>&lt;I&gt;(self, other: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are equal to those of
+another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.eq_by" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3808-3812">source</a><a href="#method.eq_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq_by" class="fn">eq_by</a>&lt;I, F&gt;(self, other: I, eq: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_order_by</code>)</span></div></span><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are equal to those of
+another with respect to the specified equality function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3841-3845">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ne" class="fn">ne</a>&lt;I&gt;(self, other: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are not equal to those of
+another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ne">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3863-3867">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.lt" class="fn">lt</a>&lt;I&gt;(self, other: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">lexicographically</a>
+less than those of another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.lt">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.le" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3885-3889">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.le" class="fn">le</a>&lt;I&gt;(self, other: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">lexicographically</a>
+less or equal to those of another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.le">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3907-3911">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.gt" class="fn">gt</a>&lt;I&gt;(self, other: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">lexicographically</a>
+greater than those of another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.gt">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3929-3933">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ge" class="fn">ge</a>&lt;I&gt;(self, other: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>&gt;,
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Determines if the elements of this <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> are <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison" title="trait core::cmp::Ord">lexicographically</a>
+greater than or equal to those of another. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ge">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.is_sorted" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3961-3964">source</a><a href="#method.is_sorted" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted" class="fn">is_sorted</a>(self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>is_sorted</code>)</span></div></span><div class='docblock'>Checks if the elements of this iterator are sorted. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.is_sorted_by" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3990-3993">source</a><a href="#method.is_sorted_by" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by" class="fn">is_sorted_by</a>&lt;F&gt;(self, compare: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>is_sorted</code>)</span></div></span><div class='docblock'>Checks if the elements of this iterator are sorted using the given comparator function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.is_sorted_by_key" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#4037-4041">source</a><a href="#method.is_sorted_by_key" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by_key" class="fn">is_sorted_by_key</a>&lt;F, K&gt;(self, f: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; K,
+    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>is_sorted</code>)</span></div></span><div class='docblock'>Checks if the elements of this iterator are sorted using the given key extraction
+function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by_key">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-StreamIter" class="impl"><a href="#impl-Freeze-for-StreamIter" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.StreamIter.html" title="struct quiche::StreamIter">StreamIter</a></h3></section><section id="impl-RefUnwindSafe-for-StreamIter" class="impl"><a href="#impl-RefUnwindSafe-for-StreamIter" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.StreamIter.html" title="struct quiche::StreamIter">StreamIter</a></h3></section><section id="impl-Send-for-StreamIter" class="impl"><a href="#impl-Send-for-StreamIter" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.StreamIter.html" title="struct quiche::StreamIter">StreamIter</a></h3></section><section id="impl-Sync-for-StreamIter" class="impl"><a href="#impl-Sync-for-StreamIter" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.StreamIter.html" title="struct quiche::StreamIter">StreamIter</a></h3></section><section id="impl-Unpin-for-StreamIter" class="impl"><a href="#impl-Unpin-for-StreamIter" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.StreamIter.html" title="struct quiche::StreamIter">StreamIter</a></h3></section><section id="impl-UnwindSafe-for-StreamIter" class="impl"><a href="#impl-UnwindSafe-for-StreamIter" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.StreamIter.html" title="struct quiche::StreamIter">StreamIter</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoIterator-for-I" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#349">source</a><a href="#impl-IntoIterator-for-I" class="anchor">§</a><h3 class="code-header">impl&lt;I&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a> for I<div class="where">where
+    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Item-1" class="associatedtype trait-impl"><a href="#associatedtype.Item-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" class="associatedtype">Item</a> = &lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a></h4></section></summary><div class='docblock'>The type of the elements being iterated over.</div></details><details class="toggle" open><summary><section id="associatedtype.IntoIter" class="associatedtype trait-impl"><a href="#associatedtype.IntoIter" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" class="associatedtype">IntoIter</a> = I</h4></section></summary><div class='docblock'>Which kind of iterator are we turning this into?</div></details><details class="toggle method-toggle" open><summary><section id="method.into_iter" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/90603" title="Tracking issue for const_intoiterator_identity">unstable</a></span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#354">source</a></span><a href="#method.into_iter" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter" class="fn">into_iter</a>(self) -&gt; I</h4></section></summary><div class='docblock'>Creates an iterator from a value. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div><script type="text/json" id="notable-traits-data">{"StreamIter":"<h3>Notable traits for <code><a class=\"struct\" href=\"struct.StreamIter.html\" title=\"struct quiche::StreamIter\">StreamIter</a></code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"struct.StreamIter.html\" title=\"struct quiche::StreamIter\">StreamIter</a></div><div class=\"where\">    type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u64.html\">u64</a>;</div>"}</script></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/struct.TransportParams.html b/quiche/struct.TransportParams.html
new file mode 100644
index 0000000..2111a90
--- /dev/null
+++ b/quiche/struct.TransportParams.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="QUIC Transport Parameters"><title>TransportParams in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">TransportParams</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.ack_delay_exponent">ack_delay_exponent</a></li><li><a href="#structfield.active_conn_id_limit">active_conn_id_limit</a></li><li><a href="#structfield.disable_active_migration">disable_active_migration</a></li><li><a href="#structfield.initial_max_data">initial_max_data</a></li><li><a href="#structfield.initial_max_stream_data_bidi_local">initial_max_stream_data_bidi_local</a></li><li><a href="#structfield.initial_max_stream_data_bidi_remote">initial_max_stream_data_bidi_remote</a></li><li><a href="#structfield.initial_max_stream_data_uni">initial_max_stream_data_uni</a></li><li><a href="#structfield.initial_max_streams_bidi">initial_max_streams_bidi</a></li><li><a href="#structfield.initial_max_streams_uni">initial_max_streams_uni</a></li><li><a href="#structfield.initial_source_connection_id">initial_source_connection_id</a></li><li><a href="#structfield.max_ack_delay">max_ack_delay</a></li><li><a href="#structfield.max_datagram_frame_size">max_datagram_frame_size</a></li><li><a href="#structfield.max_idle_timeout">max_idle_timeout</a></li><li><a href="#structfield.max_udp_payload_size">max_udp_payload_size</a></li><li><a href="#structfield.original_destination_connection_id">original_destination_connection_id</a></li><li><a href="#structfield.retry_source_connection_id">retry_source_connection_id</a></li><li><a href="#structfield.stateless_reset_token">stateless_reset_token</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.to_qlog">to_qlog</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-TransportParams">Clone</a></li><li><a href="#impl-Debug-for-TransportParams">Debug</a></li><li><a href="#impl-Default-for-TransportParams">Default</a></li><li><a href="#impl-PartialEq-for-TransportParams">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-TransportParams">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-TransportParams">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-TransportParams">RefUnwindSafe</a></li><li><a href="#impl-Send-for-TransportParams">Send</a></li><li><a href="#impl-Sync-for-TransportParams">Sync</a></li><li><a href="#impl-Unpin-for-TransportParams">Unpin</a></li><li><a href="#impl-UnwindSafe-for-TransportParams">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">quiche</a>::<wbr><a class="struct" href="#">TransportParams</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#7969-8007">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct TransportParams {<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 17 fields</span></summary>
+    pub original_destination_connection_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'static&gt;&gt;,
+    pub max_idle_timeout: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub stateless_reset_token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u128.html">u128</a>&gt;,
+    pub max_udp_payload_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub initial_max_data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub initial_max_stream_data_bidi_local: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub initial_max_stream_data_bidi_remote: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub initial_max_stream_data_uni: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub initial_max_streams_bidi: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub initial_max_streams_uni: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub ack_delay_exponent: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub max_ack_delay: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub disable_active_migration: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    pub active_conn_id_limit: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub initial_source_connection_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'static&gt;&gt;,
+    pub retry_source_connection_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'static&gt;&gt;,
+    pub max_datagram_frame_size: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+</details>}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>QUIC Transport Parameters</p>
+</div></details><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.original_destination_connection_id" class="structfield section-header"><a href="#structfield.original_destination_connection_id" class="anchor field">§</a><code>original_destination_connection_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'static&gt;&gt;</code></span><div class="docblock"><p>Value of Destination CID field from first Initial packet sent by client</p>
+</div><span id="structfield.max_idle_timeout" class="structfield section-header"><a href="#structfield.max_idle_timeout" class="anchor field">§</a><code>max_idle_timeout: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The maximum idle timeout.</p>
+</div><span id="structfield.stateless_reset_token" class="structfield section-header"><a href="#structfield.stateless_reset_token" class="anchor field">§</a><code>stateless_reset_token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u128.html">u128</a>&gt;</code></span><div class="docblock"><p>Token used for verifying stateless resets</p>
+</div><span id="structfield.max_udp_payload_size" class="structfield section-header"><a href="#structfield.max_udp_payload_size" class="anchor field">§</a><code>max_udp_payload_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The maximum UDP payload size.</p>
+</div><span id="structfield.initial_max_data" class="structfield section-header"><a href="#structfield.initial_max_data" class="anchor field">§</a><code>initial_max_data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The initial flow control maximum data for the connection.</p>
+</div><span id="structfield.initial_max_stream_data_bidi_local" class="structfield section-header"><a href="#structfield.initial_max_stream_data_bidi_local" class="anchor field">§</a><code>initial_max_stream_data_bidi_local: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The initial flow control maximum data for local bidirectional streams.</p>
+</div><span id="structfield.initial_max_stream_data_bidi_remote" class="structfield section-header"><a href="#structfield.initial_max_stream_data_bidi_remote" class="anchor field">§</a><code>initial_max_stream_data_bidi_remote: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The initial flow control maximum data for remote bidirectional streams.</p>
+</div><span id="structfield.initial_max_stream_data_uni" class="structfield section-header"><a href="#structfield.initial_max_stream_data_uni" class="anchor field">§</a><code>initial_max_stream_data_uni: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The initial flow control maximum data for unidirectional streams.</p>
+</div><span id="structfield.initial_max_streams_bidi" class="structfield section-header"><a href="#structfield.initial_max_streams_bidi" class="anchor field">§</a><code>initial_max_streams_bidi: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The initial maximum bidirectional streams.</p>
+</div><span id="structfield.initial_max_streams_uni" class="structfield section-header"><a href="#structfield.initial_max_streams_uni" class="anchor field">§</a><code>initial_max_streams_uni: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The initial maximum unidirectional streams.</p>
+</div><span id="structfield.ack_delay_exponent" class="structfield section-header"><a href="#structfield.ack_delay_exponent" class="anchor field">§</a><code>ack_delay_exponent: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The ACK delay exponent.</p>
+</div><span id="structfield.max_ack_delay" class="structfield section-header"><a href="#structfield.max_ack_delay" class="anchor field">§</a><code>max_ack_delay: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The max ACK delay.</p>
+</div><span id="structfield.disable_active_migration" class="structfield section-header"><a href="#structfield.disable_active_migration" class="anchor field">§</a><code>disable_active_migration: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether active migration is disabled.</p>
+</div><span id="structfield.active_conn_id_limit" class="structfield section-header"><a href="#structfield.active_conn_id_limit" class="anchor field">§</a><code>active_conn_id_limit: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><div class="docblock"><p>The active connection ID limit.</p>
+</div><span id="structfield.initial_source_connection_id" class="structfield section-header"><a href="#structfield.initial_source_connection_id" class="anchor field">§</a><code>initial_source_connection_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'static&gt;&gt;</code></span><div class="docblock"><p>The value that the endpoint included in the Source CID field of a Retry
+Packet.</p>
+</div><span id="structfield.retry_source_connection_id" class="structfield section-header"><a href="#structfield.retry_source_connection_id" class="anchor field">§</a><code>retry_source_connection_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.ConnectionId.html" title="struct quiche::ConnectionId">ConnectionId</a>&lt;'static&gt;&gt;</code></span><div class="docblock"><p>The value that the server included in the Source CID field of a Retry
+Packet.</p>
+</div><span id="structfield.max_datagram_frame_size" class="structfield section-header"><a href="#structfield.max_datagram_frame_size" class="anchor field">§</a><code>max_datagram_frame_size: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><div class="docblock"><p>DATAGRAM frame extension parameter, if any.</p>
+</div><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-TransportParams" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#8033-8396">source</a><a href="#impl-TransportParams" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.TransportParams.html" title="struct quiche::TransportParams">TransportParams</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.to_qlog" class="method"><a class="src rightside" href="../src/quiche/lib.rs.html#8348-8395">source</a><h4 class="code-header">pub fn <a href="#method.to_qlog" class="fn">to_qlog</a>(
+    &amp;self,
+    owner: <a class="enum" href="../qlog/events/connectivity/enum.TransportOwner.html" title="enum qlog::events::connectivity::TransportOwner">TransportOwner</a>,
+    cipher: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Algorithm&gt;
+) -&gt; <a class="enum" href="../qlog/events/enum.EventData.html" title="enum qlog::events::EventData">EventData</a></h4></section></summary><div class="docblock"><p>Creates a qlog event for connection transport parameters and TLS fields</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-TransportParams" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#7968">source</a><a href="#impl-Clone-for-TransportParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.TransportParams.html" title="struct quiche::TransportParams">TransportParams</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#7968">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.TransportParams.html" title="struct quiche::TransportParams">TransportParams</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-TransportParams" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#7968">source</a><a href="#impl-Debug-for-TransportParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.TransportParams.html" title="struct quiche::TransportParams">TransportParams</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#7968">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-TransportParams" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#8009-8031">source</a><a href="#impl-Default-for-TransportParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.TransportParams.html" title="struct quiche::TransportParams">TransportParams</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#8010-8030">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -&gt; <a class="struct" href="struct.TransportParams.html" title="struct quiche::TransportParams">TransportParams</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-TransportParams" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#7968">source</a><a href="#impl-PartialEq-for-TransportParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.TransportParams.html" title="struct quiche::TransportParams">TransportParams</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/quiche/lib.rs.html#7968">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.TransportParams.html" title="struct quiche::TransportParams">TransportParams</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-StructuralPartialEq-for-TransportParams" class="impl"><a class="src rightside" href="../src/quiche/lib.rs.html#7968">source</a><a href="#impl-StructuralPartialEq-for-TransportParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.TransportParams.html" title="struct quiche::TransportParams">TransportParams</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-TransportParams" class="impl"><a href="#impl-Freeze-for-TransportParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.TransportParams.html" title="struct quiche::TransportParams">TransportParams</a></h3></section><section id="impl-RefUnwindSafe-for-TransportParams" class="impl"><a href="#impl-RefUnwindSafe-for-TransportParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.TransportParams.html" title="struct quiche::TransportParams">TransportParams</a></h3></section><section id="impl-Send-for-TransportParams" class="impl"><a href="#impl-Send-for-TransportParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.TransportParams.html" title="struct quiche::TransportParams">TransportParams</a></h3></section><section id="impl-Sync-for-TransportParams" class="impl"><a href="#impl-Sync-for-TransportParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.TransportParams.html" title="struct quiche::TransportParams">TransportParams</a></h3></section><section id="impl-Unpin-for-TransportParams" class="impl"><a href="#impl-Unpin-for-TransportParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.TransportParams.html" title="struct quiche::TransportParams">TransportParams</a></h3></section><section id="impl-UnwindSafe-for-TransportParams" class="impl"><a href="#impl-UnwindSafe-for-TransportParams" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.TransportParams.html" title="struct quiche::TransportParams">TransportParams</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche/type.Result.html b/quiche/type.Result.html
new file mode 100644
index 0000000..40d52d8
--- /dev/null
+++ b/quiche/type.Result.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A specialized `Result` type for quiche operations."><title>Result in quiche - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche/index.html">quiche</a><span class="version">0.21.0</span></h2></div><h2 class="location"><a href="#">Result</a></h2><div class="sidebar-elems"><section><h3><a href="#aliased-type">Aliased type</a></h3><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.Err">Err</a></li><li><a href="#variant.Ok">Ok</a></li></ul></section><h2><a href="index.html">In crate quiche</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Type Alias <a href="index.html">quiche</a>::<wbr><a class="type" href="#">Result</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche/lib.rs.html#503">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub type Result&lt;T&gt; = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, <a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a>&gt;;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A specialized <a href="https://doc.rust-lang.org/std/result/enum.Result.html"><code>Result</code></a> type for quiche operations.</p>
+<p>This type is used throughout quiche’s public API for any operation that
+can produce an error.</p>
+</div></details><h2 id="aliased-type" class="section-header">Aliased Type<a href="#aliased-type" class="anchor">§</a></h2><pre class="rust item-decl"><code>enum Result&lt;T&gt; {
+    Ok(T),
+    Err(<a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a>),
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Ok" class="variant"><a href="#variant.Ok" class="anchor">§</a><span class="since rightside" title="Stable since Rust version 1.0.0">1.0.0</span><h3 class="code-header">Ok(T)</h3></section><div class="docblock"><p>Contains the success value</p>
+</div><section id="variant.Err" class="variant"><a href="#variant.Err" class="anchor">§</a><span class="since rightside" title="Stable since Rust version 1.0.0">1.0.0</span><h3 class="code-header">Err(<a class="enum" href="enum.Error.html" title="enum quiche::Error">Error</a>)</h3></section><div class="docblock"><p>Contains the error value</p>
+</div></div><script src="../type.impl/core/result/enum.Result.js" data-self-path="quiche::Result" async></script></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/all.html b/quiche_apps/all.html
new file mode 100644
index 0000000..5d4dbad
--- /dev/null
+++ b/quiche_apps/all.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod sys"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#constants">Constants</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li><li><a href="#types">Type Aliases</a></li></ul></section></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><h1>List of all items</h1><h3 id="structs">Structs</h3><ul class="all-items"><li><a href="args/struct.ClientArgs.html">args::ClientArgs</a></li><li><a href="args/struct.CommonArgs.html">args::CommonArgs</a></li><li><a href="args/struct.ServerArgs.html">args::ServerArgs</a></li><li><a href="common/struct.Client.html">common::Client</a></li><li><a href="common/struct.Http09Conn.html">common::Http09Conn</a></li><li><a href="common/struct.Http09Request.html">common::Http09Request</a></li><li><a href="common/struct.Http3Conn.html">common::Http3Conn</a></li><li><a href="common/struct.Http3DgramSender.html">common::Http3DgramSender</a></li><li><a href="common/struct.PartialRequest.html">common::PartialRequest</a></li><li><a href="common/struct.PartialResponse.html">common::PartialResponse</a></li></ul><h3 id="enums">Enums</h3><ul class="all-items"><li><a href="client/enum.ClientError.html">client::ClientError</a></li></ul><h3 id="traits">Traits</h3><ul class="all-items"><li><a href="args/trait.Args.html">args::Args</a></li><li><a href="common/trait.HttpConn.html">common::HttpConn</a></li></ul><h3 id="functions">Functions</h3><ul class="all-items"><li><a href="client/fn.connect.html">client::connect</a></li><li><a href="common/fn.generate_cid_and_reset_token.html">common::generate_cid_and_reset_token</a></li><li><a href="common/fn.hdrs_to_strings.html">common::hdrs_to_strings</a></li><li><a href="common/fn.make_qlog_writer.html">common::make_qlog_writer</a></li><li><a href="common/fn.priority_field_value_from_query_string.html">common::priority_field_value_from_query_string</a></li><li><a href="common/fn.priority_from_query_string.html">common::priority_from_query_string</a></li><li><a href="common/fn.stdout_sink.html">common::stdout_sink</a></li><li><a href="sendto/fn.detect_gso.html">sendto::detect_gso</a></li><li><a href="sendto/fn.send_to.html">sendto::send_to</a></li></ul><h3 id="types">Type Aliases</h3><ul class="all-items"><li><a href="common/type.ClientId.html">common::ClientId</a></li><li><a href="common/type.ClientIdMap.html">common::ClientIdMap</a></li><li><a href="common/type.ClientMap.html">common::ClientMap</a></li></ul><h3 id="constants">Constants</h3><ul class="all-items"><li><a href="args/constant.CLIENT_USAGE.html">args::CLIENT_USAGE</a></li><li><a href="args/constant.SERVER_USAGE.html">args::SERVER_USAGE</a></li><li><a href="common/alpns/constant.HTTP_09.html">common::alpns::HTTP_09</a></li><li><a href="common/alpns/constant.HTTP_3.html">common::alpns::HTTP_3</a></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/args/constant.CLIENT_USAGE.html b/quiche_apps/args/constant.CLIENT_USAGE.html
new file mode 100644
index 0000000..49b4713
--- /dev/null
+++ b/quiche_apps/args/constant.CLIENT_USAGE.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `CLIENT_USAGE` constant in crate `quiche_apps`."><title>CLIENT_USAGE in quiche_apps::args - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc constant"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"><h2><a href="index.html">In quiche_apps::args</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Constant <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">args</a>::<wbr><a class="constant" href="#">CLIENT_USAGE</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/args.rs.html#250-293">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub const CLIENT_USAGE: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a> = &quot;Usage:
+  quiche-client [options] URL...
+  quiche-client -h | --help
+
+Options:
+  --method METHOD          Use the given HTTP request method [default: GET].
+  --body FILE              Send the given file as request body.
+  --max-data BYTES         Connection-wide flow control limit [default: 10000000].
+  --max-window BYTES       Connection-wide max receiver window [default: 25165824].
+  --max-stream-data BYTES  Per-stream flow control limit [default: 1000000].
+  --max-stream-window BYTES   Per-stream max receiver window [default: 16777216].
+  --max-streams-bidi STREAMS  Number of allowed concurrent streams [default: 100].
+  --max-streams-uni STREAMS   Number of allowed concurrent streams [default: 100].
+  --idle-timeout TIMEOUT   Idle timeout in milliseconds [default: 30000].
+  --wire-version VERSION   The version number to send to the server [default: babababa].
+  --http-version VERSION   HTTP version to use [default: all].
+  --early-data             Enable sending early data.
+  --dgram-proto PROTO      DATAGRAM application protocol to use [default: none].
+  --dgram-count COUNT      Number of DATAGRAMs to send [default: 0].
+  --dgram-data DATA        Data to send for certain types of DATAGRAM application protocol [default: quack].
+  --dump-packets PATH      Dump the incoming packets as files in the given directory.
+  --dump-responses PATH    Dump response payload as files in the given directory.
+  --dump-json              Dump response headers and payload to stdout in JSON format.
+  --max-json-payload BYTES  Per-response payload limit when dumping JSON [default: 10000].
+  --connect-to ADDRESS     Override the server&#39;s address.
+  --no-verify              Don&#39;t verify server&#39;s certificate.
+  --trust-origin-ca-pem &lt;file&gt;  Path to the pem file of the origin&#39;s CA, if not publicly trusted.
+  --no-grease              Don&#39;t send GREASE.
+  --cc-algorithm NAME      Specify which congestion control algorithm to use [default: cubic].
+  --disable-hystart        Disable HyStart++.
+  --max-active-cids NUM    The maximum number of active Connection IDs we can support [default: 2].
+  --enable-active-migration   Enable active connection migration.
+  --perform-migration      Perform connection migration on another source port.
+  -H --header HEADER ...   Add a request header.
+  -n --requests REQUESTS   Send the given number of identical requests [default: 1].
+  --send-priority-update   Send HTTP/3 priority updates if the query string params &#39;u&#39; or &#39;i&#39; are present in URLs
+  --max-field-section-size BYTES    Max size of uncompressed field section. Default is unlimited.
+  --qpack-max-table-capacity BYTES  Max capacity of dynamic QPACK decoding.. Any value other that 0 is currently unsupported.
+  --qpack-blocked-streams STREAMS   Limit of blocked streams while decoding. Any value other that 0 is currently unsupported.
+  --session-file PATH      File used to cache a TLS session for resumption.
+  --source-port PORT       Source port to use when connecting to the server [default: 0].
+  --initial-cwnd-packets PACKETS   The initial congestion window size in terms of packet count [default: 10].
+  -h --help                Show this screen.
+&quot;;</code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/args/constant.SERVER_USAGE.html b/quiche_apps/args/constant.SERVER_USAGE.html
new file mode 100644
index 0000000..7f12a20
--- /dev/null
+++ b/quiche_apps/args/constant.SERVER_USAGE.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `SERVER_USAGE` constant in crate `quiche_apps`."><title>SERVER_USAGE in quiche_apps::args - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc constant"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"><h2><a href="index.html">In quiche_apps::args</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Constant <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">args</a>::<wbr><a class="constant" href="#">SERVER_USAGE</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/args.rs.html#431-468">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub const SERVER_USAGE: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a> = &quot;Usage:
+  quiche-server [options]
+  quiche-server -h | --help
+
+Options:
+  --listen &lt;addr&gt;             Listen on the given IP:port [default: 127.0.0.1:4433]
+  --cert &lt;file&gt;               TLS certificate path [default: src/bin/cert.crt]
+  --key &lt;file&gt;                TLS certificate key path [default: src/bin/cert.key]
+  --root &lt;dir&gt;                Root directory [default: src/bin/root/]
+  --index &lt;name&gt;              The file that will be used as index [default: index.html].
+  --name &lt;str&gt;                Name of the server [default: quic.tech]
+  --max-data BYTES            Connection-wide flow control limit [default: 10000000].
+  --max-window BYTES          Connection-wide max receiver window [default: 25165824].
+  --max-stream-data BYTES     Per-stream flow control limit [default: 1000000].
+  --max-stream-window BYTES   Per-stream max receiver window [default: 16777216].
+  --max-streams-bidi STREAMS  Number of allowed concurrent streams [default: 100].
+  --max-streams-uni STREAMS   Number of allowed concurrent streams [default: 100].
+  --idle-timeout TIMEOUT      Idle timeout in milliseconds [default: 30000].
+  --dump-packets PATH         Dump the incoming packets as files in the given directory.
+  --early-data                Enable receiving early data.
+  --no-retry                  Disable stateless retry.
+  --no-grease                 Don&#39;t send GREASE.
+  --http-version VERSION      HTTP version to use [default: all].
+  --dgram-proto PROTO         DATAGRAM application protocol to use [default: none].
+  --dgram-count COUNT         Number of DATAGRAMs to send [default: 0].
+  --dgram-data DATA           Data to send for certain types of DATAGRAM application protocol [default: brrr].
+  --cc-algorithm NAME         Specify which congestion control algorithm to use [default: cubic].
+  --disable-hystart           Disable HyStart++.
+  --max-active-cids NUM       The maximum number of active Connection IDs we can support [default: 2].
+  --enable-active-migration   Enable active connection migration.
+  --max-field-section-size BYTES    Max size of uncompressed HTTP/3 field section. Default is unlimited.
+  --qpack-max-table-capacity BYTES  Max capacity of QPACK dynamic table decoding. Any value other that 0 is currently unsupported.
+  --qpack-blocked-streams STREAMS   Limit of streams that can be blocked while decoding. Any value other that 0 is currently unsupported.
+  --disable-gso               Disable GSO (linux only).
+  --disable-pacing            Disable pacing (linux only).
+  --initial-cwnd-packets PACKETS      The initial congestion window size in terms of packet count [default: 10].
+  -h --help                   Show this screen.
+&quot;;</code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/args/index.html b/quiche_apps/args/index.html
new file mode 100644
index 0000000..bc98370
--- /dev/null
+++ b/quiche_apps/args/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `args` mod in crate `quiche_apps`."><title>quiche_apps::args - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">Module args</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#constants">Constants</a></li><li><a href="#traits">Traits</a></li></ul></section><h2><a href="../index.html">In crate quiche_apps</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../index.html">quiche_apps</a>::<wbr><a class="mod" href="#">args</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/args.rs.html#27-509">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.ClientArgs.html" title="struct quiche_apps::args::ClientArgs">ClientArgs</a></div><div class="desc docblock-short">Application-specific arguments that compliment the <code>CommonArgs</code>.</div></li><li><div class="item-name"><a class="struct" href="struct.CommonArgs.html" title="struct quiche_apps::args::CommonArgs">CommonArgs</a></div><div class="desc docblock-short">Contains commons arguments for creating a quiche QUIC connection.</div></li><li><div class="item-name"><a class="struct" href="struct.ServerArgs.html" title="struct quiche_apps::args::ServerArgs">ServerArgs</a></div></li></ul><h2 id="constants" class="section-header">Constants<a href="#constants" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="constant" href="constant.CLIENT_USAGE.html" title="constant quiche_apps::args::CLIENT_USAGE">CLIENT_USAGE</a></div></li><li><div class="item-name"><a class="constant" href="constant.SERVER_USAGE.html" title="constant quiche_apps::args::SERVER_USAGE">SERVER_USAGE</a></div></li></ul><h2 id="traits" class="section-header">Traits<a href="#traits" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="trait" href="trait.Args.html" title="trait quiche_apps::args::Args">Args</a></div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/args/sidebar-items.js b/quiche_apps/args/sidebar-items.js
new file mode 100644
index 0000000..a8b568d
--- /dev/null
+++ b/quiche_apps/args/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"constant":["CLIENT_USAGE","SERVER_USAGE"],"struct":["ClientArgs","CommonArgs","ServerArgs"],"trait":["Args"]};
\ No newline at end of file
diff --git a/quiche_apps/args/struct.ClientArgs.html b/quiche_apps/args/struct.ClientArgs.html
new file mode 100644
index 0000000..5d21eb6
--- /dev/null
+++ b/quiche_apps/args/struct.ClientArgs.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Application-specific arguments that compliment the `CommonArgs`."><title>ClientArgs in quiche_apps::args - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">ClientArgs</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.body">body</a></li><li><a href="#structfield.connect_to">connect_to</a></li><li><a href="#structfield.dump_json">dump_json</a></li><li><a href="#structfield.dump_response_path">dump_response_path</a></li><li><a href="#structfield.method">method</a></li><li><a href="#structfield.no_verify">no_verify</a></li><li><a href="#structfield.perform_migration">perform_migration</a></li><li><a href="#structfield.req_headers">req_headers</a></li><li><a href="#structfield.reqs_cardinal">reqs_cardinal</a></li><li><a href="#structfield.send_priority_update">send_priority_update</a></li><li><a href="#structfield.session_file">session_file</a></li><li><a href="#structfield.source_port">source_port</a></li><li><a href="#structfield.trust_origin_ca_pem">trust_origin_ca_pem</a></li><li><a href="#structfield.urls">urls</a></li><li><a href="#structfield.version">version</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Args-for-ClientArgs">Args</a></li><li><a href="#impl-Default-for-ClientArgs">Default</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-ClientArgs">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-ClientArgs">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ClientArgs">Send</a></li><li><a href="#impl-Sync-for-ClientArgs">Sync</a></li><li><a href="#impl-Unpin-for-ClientArgs">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ClientArgs">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In quiche_apps::args</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">args</a>::<wbr><a class="struct" href="#">ClientArgs</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/args.rs.html#296-312">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct ClientArgs {<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 15 fields</span></summary>
+    pub version: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
+    pub dump_response_path: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub dump_json: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;,
+    pub urls: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="https://docs.rs/url/1.7.0/url/struct.Url.html" title="struct url::Url">Url</a>&gt;,
+    pub reqs_cardinal: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub req_headers: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub no_verify: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    pub trust_origin_ca_pem: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub body: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;&gt;,
+    pub method: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub connect_to: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub session_file: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub source_port: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>,
+    pub perform_migration: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    pub send_priority_update: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+</details>}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Application-specific arguments that compliment the <code>CommonArgs</code>.</p>
+</div></details><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.version" class="structfield section-header"><a href="#structfield.version" class="anchor field">§</a><code>version: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a></code></span><span id="structfield.dump_response_path" class="structfield section-header"><a href="#structfield.dump_response_path" class="anchor field">§</a><code>dump_response_path: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.dump_json" class="structfield section-header"><a href="#structfield.dump_json" class="anchor field">§</a><code>dump_json: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</code></span><span id="structfield.urls" class="structfield section-header"><a href="#structfield.urls" class="anchor field">§</a><code>urls: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="https://docs.rs/url/1.7.0/url/struct.Url.html" title="struct url::Url">Url</a>&gt;</code></span><span id="structfield.reqs_cardinal" class="structfield section-header"><a href="#structfield.reqs_cardinal" class="anchor field">§</a><code>reqs_cardinal: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span id="structfield.req_headers" class="structfield section-header"><a href="#structfield.req_headers" class="anchor field">§</a><code>req_headers: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.no_verify" class="structfield section-header"><a href="#structfield.no_verify" class="anchor field">§</a><code>no_verify: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><span id="structfield.trust_origin_ca_pem" class="structfield section-header"><a href="#structfield.trust_origin_ca_pem" class="anchor field">§</a><code>trust_origin_ca_pem: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.body" class="structfield section-header"><a href="#structfield.body" class="anchor field">§</a><code>body: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;&gt;</code></span><span id="structfield.method" class="structfield section-header"><a href="#structfield.method" class="anchor field">§</a><code>method: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.connect_to" class="structfield section-header"><a href="#structfield.connect_to" class="anchor field">§</a><code>connect_to: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.session_file" class="structfield section-header"><a href="#structfield.session_file" class="anchor field">§</a><code>session_file: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.source_port" class="structfield section-header"><a href="#structfield.source_port" class="anchor field">§</a><code>source_port: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a></code></span><span id="structfield.perform_migration" class="structfield section-header"><a href="#structfield.perform_migration" class="anchor field">§</a><code>perform_migration: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><span id="structfield.send_priority_update" class="structfield section-header"><a href="#structfield.send_priority_update" class="anchor field">§</a><code>send_priority_update: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Args-for-ClientArgs" class="impl"><a class="src rightside" href="../../src/quiche_apps/args.rs.html#314-407">source</a><a href="#impl-Args-for-ClientArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Args.html" title="trait quiche_apps::args::Args">Args</a> for <a class="struct" href="struct.ClientArgs.html" title="struct quiche_apps::args::ClientArgs">ClientArgs</a></h3></section></summary><div class="impl-items"><section id="method.with_docopt" class="method trait-impl"><a class="src rightside" href="../../src/quiche_apps/args.rs.html#315-406">source</a><a href="#method.with_docopt" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Args.html#tymethod.with_docopt" class="fn">with_docopt</a>(docopt: &amp;<a class="struct" href="http://burntsushi.net/rustdoc/docopt/docopt/dopt/struct.Docopt.html" title="struct docopt::dopt::Docopt">Docopt</a>) -&gt; Self</h4></section></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-ClientArgs" class="impl"><a class="src rightside" href="../../src/quiche_apps/args.rs.html#409-429">source</a><a href="#impl-Default-for-ClientArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.ClientArgs.html" title="struct quiche_apps::args::ClientArgs">ClientArgs</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../../src/quiche_apps/args.rs.html#410-428">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -&gt; Self</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-ClientArgs" class="impl"><a href="#impl-Freeze-for-ClientArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.ClientArgs.html" title="struct quiche_apps::args::ClientArgs">ClientArgs</a></h3></section><section id="impl-RefUnwindSafe-for-ClientArgs" class="impl"><a href="#impl-RefUnwindSafe-for-ClientArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.ClientArgs.html" title="struct quiche_apps::args::ClientArgs">ClientArgs</a></h3></section><section id="impl-Send-for-ClientArgs" class="impl"><a href="#impl-Send-for-ClientArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.ClientArgs.html" title="struct quiche_apps::args::ClientArgs">ClientArgs</a></h3></section><section id="impl-Sync-for-ClientArgs" class="impl"><a href="#impl-Sync-for-ClientArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.ClientArgs.html" title="struct quiche_apps::args::ClientArgs">ClientArgs</a></h3></section><section id="impl-Unpin-for-ClientArgs" class="impl"><a href="#impl-Unpin-for-ClientArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.ClientArgs.html" title="struct quiche_apps::args::ClientArgs">ClientArgs</a></h3></section><section id="impl-UnwindSafe-for-ClientArgs" class="impl"><a href="#impl-UnwindSafe-for-ClientArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.ClientArgs.html" title="struct quiche_apps::args::ClientArgs">ClientArgs</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/args/struct.CommonArgs.html b/quiche_apps/args/struct.CommonArgs.html
new file mode 100644
index 0000000..fdaf360
--- /dev/null
+++ b/quiche_apps/args/struct.CommonArgs.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Contains commons arguments for creating a quiche QUIC connection."><title>CommonArgs in quiche_apps::args - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">CommonArgs</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.alpns">alpns</a></li><li><a href="#structfield.cc_algorithm">cc_algorithm</a></li><li><a href="#structfield.dgram_count">dgram_count</a></li><li><a href="#structfield.dgram_data">dgram_data</a></li><li><a href="#structfield.dgrams_enabled">dgrams_enabled</a></li><li><a href="#structfield.disable_hystart">disable_hystart</a></li><li><a href="#structfield.dump_packet_path">dump_packet_path</a></li><li><a href="#structfield.early_data">early_data</a></li><li><a href="#structfield.enable_active_migration">enable_active_migration</a></li><li><a href="#structfield.idle_timeout">idle_timeout</a></li><li><a href="#structfield.initial_cwnd_packets">initial_cwnd_packets</a></li><li><a href="#structfield.max_active_cids">max_active_cids</a></li><li><a href="#structfield.max_data">max_data</a></li><li><a href="#structfield.max_field_section_size">max_field_section_size</a></li><li><a href="#structfield.max_stream_data">max_stream_data</a></li><li><a href="#structfield.max_stream_window">max_stream_window</a></li><li><a href="#structfield.max_streams_bidi">max_streams_bidi</a></li><li><a href="#structfield.max_streams_uni">max_streams_uni</a></li><li><a href="#structfield.max_window">max_window</a></li><li><a href="#structfield.no_grease">no_grease</a></li><li><a href="#structfield.qpack_blocked_streams">qpack_blocked_streams</a></li><li><a href="#structfield.qpack_max_table_capacity">qpack_max_table_capacity</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Args-for-CommonArgs">Args</a></li><li><a href="#impl-Default-for-CommonArgs">Default</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-CommonArgs">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-CommonArgs">RefUnwindSafe</a></li><li><a href="#impl-Send-for-CommonArgs">Send</a></li><li><a href="#impl-Sync-for-CommonArgs">Sync</a></li><li><a href="#impl-Unpin-for-CommonArgs">Unpin</a></li><li><a href="#impl-UnwindSafe-for-CommonArgs">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In quiche_apps::args</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">args</a>::<wbr><a class="struct" href="#">CommonArgs</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/args.rs.html#34-57">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct CommonArgs {<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 22 fields</span></summary>
+    pub alpns: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;&amp;'static [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;,
+    pub max_data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub max_window: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub max_stream_data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub max_stream_window: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub max_streams_bidi: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub max_streams_uni: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub idle_timeout: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub early_data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    pub dump_packet_path: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,
+    pub no_grease: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    pub cc_algorithm: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub disable_hystart: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    pub dgrams_enabled: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    pub dgram_count: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub dgram_data: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub max_active_cids: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub enable_active_migration: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    pub max_field_section_size: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub qpack_max_table_capacity: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub qpack_blocked_streams: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    pub initial_cwnd_packets: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+</details>}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Contains commons arguments for creating a quiche QUIC connection.</p>
+</div></details><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.alpns" class="structfield section-header"><a href="#structfield.alpns" class="anchor field">§</a><code>alpns: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;&amp;'static [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;</code></span><span id="structfield.max_data" class="structfield section-header"><a href="#structfield.max_data" class="anchor field">§</a><code>max_data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span id="structfield.max_window" class="structfield section-header"><a href="#structfield.max_window" class="anchor field">§</a><code>max_window: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span id="structfield.max_stream_data" class="structfield section-header"><a href="#structfield.max_stream_data" class="anchor field">§</a><code>max_stream_data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span id="structfield.max_stream_window" class="structfield section-header"><a href="#structfield.max_stream_window" class="anchor field">§</a><code>max_stream_window: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span id="structfield.max_streams_bidi" class="structfield section-header"><a href="#structfield.max_streams_bidi" class="anchor field">§</a><code>max_streams_bidi: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span id="structfield.max_streams_uni" class="structfield section-header"><a href="#structfield.max_streams_uni" class="anchor field">§</a><code>max_streams_uni: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span id="structfield.idle_timeout" class="structfield section-header"><a href="#structfield.idle_timeout" class="anchor field">§</a><code>idle_timeout: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span id="structfield.early_data" class="structfield section-header"><a href="#structfield.early_data" class="anchor field">§</a><code>early_data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><span id="structfield.dump_packet_path" class="structfield section-header"><a href="#structfield.dump_packet_path" class="anchor field">§</a><code>dump_packet_path: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></span><span id="structfield.no_grease" class="structfield section-header"><a href="#structfield.no_grease" class="anchor field">§</a><code>no_grease: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><span id="structfield.cc_algorithm" class="structfield section-header"><a href="#structfield.cc_algorithm" class="anchor field">§</a><code>cc_algorithm: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.disable_hystart" class="structfield section-header"><a href="#structfield.disable_hystart" class="anchor field">§</a><code>disable_hystart: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><span id="structfield.dgrams_enabled" class="structfield section-header"><a href="#structfield.dgrams_enabled" class="anchor field">§</a><code>dgrams_enabled: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><span id="structfield.dgram_count" class="structfield section-header"><a href="#structfield.dgram_count" class="anchor field">§</a><code>dgram_count: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span id="structfield.dgram_data" class="structfield section-header"><a href="#structfield.dgram_data" class="anchor field">§</a><code>dgram_data: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.max_active_cids" class="structfield section-header"><a href="#structfield.max_active_cids" class="anchor field">§</a><code>max_active_cids: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span id="structfield.enable_active_migration" class="structfield section-header"><a href="#structfield.enable_active_migration" class="anchor field">§</a><code>enable_active_migration: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><span id="structfield.max_field_section_size" class="structfield section-header"><a href="#structfield.max_field_section_size" class="anchor field">§</a><code>max_field_section_size: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.qpack_max_table_capacity" class="structfield section-header"><a href="#structfield.qpack_max_table_capacity" class="anchor field">§</a><code>qpack_max_table_capacity: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.qpack_blocked_streams" class="structfield section-header"><a href="#structfield.qpack_blocked_streams" class="anchor field">§</a><code>qpack_blocked_streams: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;</code></span><span id="structfield.initial_cwnd_packets" class="structfield section-header"><a href="#structfield.initial_cwnd_packets" class="anchor field">§</a><code>initial_cwnd_packets: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Args-for-CommonArgs" class="impl"><a class="src rightside" href="../../src/quiche_apps/args.rs.html#85-219">source</a><a href="#impl-Args-for-CommonArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Args.html" title="trait quiche_apps::args::Args">Args</a> for <a class="struct" href="struct.CommonArgs.html" title="struct quiche_apps::args::CommonArgs">CommonArgs</a></h3></section></summary><div class="docblock"><p>Creates a new <code>CommonArgs</code> structure using the provided <a href="https://docs.rs/docopt/1.1.0/docopt/"><code>Docopt</code></a>.</p>
+<p>The <code>Docopt</code> usage String needs to include the following:</p>
+<p>–http-version VERSION      HTTP version to use.
+–max-data BYTES            Connection-wide flow control limit.
+–max-window BYTES          Connection-wide max receiver window.
+–max-stream-data BYTES     Per-stream flow control limit.
+–max-stream-window BYTES   Per-stream max receiver window.
+–max-streams-bidi STREAMS  Number of allowed concurrent streams.
+–max-streams-uni STREAMS   Number of allowed concurrent streams.
+–dump-packets PATH         Dump the incoming packets in PATH.
+–no-grease                 Don’t send GREASE.
+–cc-algorithm NAME         Set a congestion control algorithm.
+–disable-hystart           Disable HyStart++.
+–dgram-proto PROTO         DATAGRAM application protocol.
+–dgram-count COUNT         Number of DATAGRAMs to send.
+–dgram-data DATA           DATAGRAM data to send.
+–max-active-cids NUM       Maximum number of active Connection IDs.
+–enable-active-migration   Enable active connection migration.
+–max-field-section-size BYTES  Max size of uncompressed field section.
+–qpack-max-table-capacity BYTES  Max capacity of dynamic QPACK decoding.
+–qpack-blocked-streams STREAMS  Limit of blocked streams while decoding.
+–initial-cwnd-packets      Size of initial congestion window, in packets.</p>
+</div><div class="impl-items"><section id="method.with_docopt" class="method trait-impl"><a class="src rightside" href="../../src/quiche_apps/args.rs.html#86-218">source</a><a href="#method.with_docopt" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Args.html#tymethod.with_docopt" class="fn">with_docopt</a>(docopt: &amp;<a class="struct" href="http://burntsushi.net/rustdoc/docopt/docopt/dopt/struct.Docopt.html" title="struct docopt::dopt::Docopt">Docopt</a>) -&gt; Self</h4></section></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-CommonArgs" class="impl"><a class="src rightside" href="../../src/quiche_apps/args.rs.html#221-248">source</a><a href="#impl-Default-for-CommonArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.CommonArgs.html" title="struct quiche_apps::args::CommonArgs">CommonArgs</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../../src/quiche_apps/args.rs.html#222-247">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -&gt; Self</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-CommonArgs" class="impl"><a href="#impl-Freeze-for-CommonArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.CommonArgs.html" title="struct quiche_apps::args::CommonArgs">CommonArgs</a></h3></section><section id="impl-RefUnwindSafe-for-CommonArgs" class="impl"><a href="#impl-RefUnwindSafe-for-CommonArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.CommonArgs.html" title="struct quiche_apps::args::CommonArgs">CommonArgs</a></h3></section><section id="impl-Send-for-CommonArgs" class="impl"><a href="#impl-Send-for-CommonArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.CommonArgs.html" title="struct quiche_apps::args::CommonArgs">CommonArgs</a></h3></section><section id="impl-Sync-for-CommonArgs" class="impl"><a href="#impl-Sync-for-CommonArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.CommonArgs.html" title="struct quiche_apps::args::CommonArgs">CommonArgs</a></h3></section><section id="impl-Unpin-for-CommonArgs" class="impl"><a href="#impl-Unpin-for-CommonArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.CommonArgs.html" title="struct quiche_apps::args::CommonArgs">CommonArgs</a></h3></section><section id="impl-UnwindSafe-for-CommonArgs" class="impl"><a href="#impl-UnwindSafe-for-CommonArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.CommonArgs.html" title="struct quiche_apps::args::CommonArgs">CommonArgs</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/args/struct.ServerArgs.html b/quiche_apps/args/struct.ServerArgs.html
new file mode 100644
index 0000000..13513e0
--- /dev/null
+++ b/quiche_apps/args/struct.ServerArgs.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ServerArgs` struct in crate `quiche_apps`."><title>ServerArgs in quiche_apps::args - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">ServerArgs</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.cert">cert</a></li><li><a href="#structfield.disable_gso">disable_gso</a></li><li><a href="#structfield.disable_pacing">disable_pacing</a></li><li><a href="#structfield.enable_pmtud">enable_pmtud</a></li><li><a href="#structfield.index">index</a></li><li><a href="#structfield.key">key</a></li><li><a href="#structfield.listen">listen</a></li><li><a href="#structfield.no_retry">no_retry</a></li><li><a href="#structfield.root">root</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Args-for-ServerArgs">Args</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-ServerArgs">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-ServerArgs">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ServerArgs">Send</a></li><li><a href="#impl-Sync-for-ServerArgs">Sync</a></li><li><a href="#impl-Unpin-for-ServerArgs">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ServerArgs">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In quiche_apps::args</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">args</a>::<wbr><a class="struct" href="#">ServerArgs</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/args.rs.html#471-481">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct ServerArgs {
+    pub listen: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub no_retry: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    pub root: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub index: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub cert: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub key: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub disable_gso: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    pub disable_pacing: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    pub enable_pmtud: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.listen" class="structfield section-header"><a href="#structfield.listen" class="anchor field">§</a><code>listen: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.no_retry" class="structfield section-header"><a href="#structfield.no_retry" class="anchor field">§</a><code>no_retry: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><span id="structfield.root" class="structfield section-header"><a href="#structfield.root" class="anchor field">§</a><code>root: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.index" class="structfield section-header"><a href="#structfield.index" class="anchor field">§</a><code>index: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.cert" class="structfield section-header"><a href="#structfield.cert" class="anchor field">§</a><code>cert: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.key" class="structfield section-header"><a href="#structfield.key" class="anchor field">§</a><code>key: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.disable_gso" class="structfield section-header"><a href="#structfield.disable_gso" class="anchor field">§</a><code>disable_gso: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><span id="structfield.disable_pacing" class="structfield section-header"><a href="#structfield.disable_pacing" class="anchor field">§</a><code>disable_pacing: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><span id="structfield.enable_pmtud" class="structfield section-header"><a href="#structfield.enable_pmtud" class="anchor field">§</a><code>enable_pmtud: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Args-for-ServerArgs" class="impl"><a class="src rightside" href="../../src/quiche_apps/args.rs.html#483-509">source</a><a href="#impl-Args-for-ServerArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Args.html" title="trait quiche_apps::args::Args">Args</a> for <a class="struct" href="struct.ServerArgs.html" title="struct quiche_apps::args::ServerArgs">ServerArgs</a></h3></section></summary><div class="impl-items"><section id="method.with_docopt" class="method trait-impl"><a class="src rightside" href="../../src/quiche_apps/args.rs.html#484-508">source</a><a href="#method.with_docopt" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Args.html#tymethod.with_docopt" class="fn">with_docopt</a>(docopt: &amp;<a class="struct" href="http://burntsushi.net/rustdoc/docopt/docopt/dopt/struct.Docopt.html" title="struct docopt::dopt::Docopt">Docopt</a>) -&gt; Self</h4></section></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-ServerArgs" class="impl"><a href="#impl-Freeze-for-ServerArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.ServerArgs.html" title="struct quiche_apps::args::ServerArgs">ServerArgs</a></h3></section><section id="impl-RefUnwindSafe-for-ServerArgs" class="impl"><a href="#impl-RefUnwindSafe-for-ServerArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.ServerArgs.html" title="struct quiche_apps::args::ServerArgs">ServerArgs</a></h3></section><section id="impl-Send-for-ServerArgs" class="impl"><a href="#impl-Send-for-ServerArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.ServerArgs.html" title="struct quiche_apps::args::ServerArgs">ServerArgs</a></h3></section><section id="impl-Sync-for-ServerArgs" class="impl"><a href="#impl-Sync-for-ServerArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.ServerArgs.html" title="struct quiche_apps::args::ServerArgs">ServerArgs</a></h3></section><section id="impl-Unpin-for-ServerArgs" class="impl"><a href="#impl-Unpin-for-ServerArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.ServerArgs.html" title="struct quiche_apps::args::ServerArgs">ServerArgs</a></h3></section><section id="impl-UnwindSafe-for-ServerArgs" class="impl"><a href="#impl-UnwindSafe-for-ServerArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.ServerArgs.html" title="struct quiche_apps::args::ServerArgs">ServerArgs</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/args/trait.Args.html b/quiche_apps/args/trait.Args.html
new file mode 100644
index 0000000..68f52f3
--- /dev/null
+++ b/quiche_apps/args/trait.Args.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `Args` trait in crate `quiche_apps`."><title>Args in quiche_apps::args - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">Args</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.with_docopt">with_docopt</a></li></ul><h3><a href="#object-safety">Object Safety</a></h3><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In quiche_apps::args</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Trait <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">args</a>::<wbr><a class="trait" href="#">Args</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/args.rs.html#29-31">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub trait Args {
+    // Required method
+    fn <a href="#tymethod.with_docopt" class="fn">with_docopt</a>(docopt: &amp;<a class="struct" href="http://burntsushi.net/rustdoc/docopt/docopt/dopt/struct.Docopt.html" title="struct docopt::dopt::Docopt">Docopt</a>) -&gt; Self;
+}</code></pre><h2 id="required-methods" class="section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><section id="tymethod.with_docopt" class="method"><a class="src rightside" href="../../src/quiche_apps/args.rs.html#30">source</a><h4 class="code-header">fn <a href="#tymethod.with_docopt" class="fn">with_docopt</a>(docopt: &amp;<a class="struct" href="http://burntsushi.net/rustdoc/docopt/docopt/dopt/struct.Docopt.html" title="struct docopt::dopt::Docopt">Docopt</a>) -&gt; Self</h4></section></div><h2 id="object-safety" class="section-header">Object Safety<a href="#object-safety" class="anchor">§</a></h2><div class="object-safety-info">This trait is <b>not</b> <a href="https://doc.rust-lang.org/nightly/reference/items/traits.html#object-safety">object safe</a>.</div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-Args-for-ClientArgs" class="impl"><a class="src rightside" href="../../src/quiche_apps/args.rs.html#314-407">source</a><a href="#impl-Args-for-ClientArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Args.html" title="trait quiche_apps::args::Args">Args</a> for <a class="struct" href="struct.ClientArgs.html" title="struct quiche_apps::args::ClientArgs">ClientArgs</a></h3></section><section id="impl-Args-for-CommonArgs" class="impl"><a class="src rightside" href="../../src/quiche_apps/args.rs.html#85-219">source</a><a href="#impl-Args-for-CommonArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Args.html" title="trait quiche_apps::args::Args">Args</a> for <a class="struct" href="struct.CommonArgs.html" title="struct quiche_apps::args::CommonArgs">CommonArgs</a></h3></section><div class="docblock"><p>Creates a new <code>CommonArgs</code> structure using the provided <a href="https://docs.rs/docopt/1.1.0/docopt/"><code>Docopt</code></a>.</p>
+<p>The <code>Docopt</code> usage String needs to include the following:</p>
+<p>–http-version VERSION      HTTP version to use.
+–max-data BYTES            Connection-wide flow control limit.
+–max-window BYTES          Connection-wide max receiver window.
+–max-stream-data BYTES     Per-stream flow control limit.
+–max-stream-window BYTES   Per-stream max receiver window.
+–max-streams-bidi STREAMS  Number of allowed concurrent streams.
+–max-streams-uni STREAMS   Number of allowed concurrent streams.
+–dump-packets PATH         Dump the incoming packets in PATH.
+–no-grease                 Don’t send GREASE.
+–cc-algorithm NAME         Set a congestion control algorithm.
+–disable-hystart           Disable HyStart++.
+–dgram-proto PROTO         DATAGRAM application protocol.
+–dgram-count COUNT         Number of DATAGRAMs to send.
+–dgram-data DATA           DATAGRAM data to send.
+–max-active-cids NUM       Maximum number of active Connection IDs.
+–enable-active-migration   Enable active connection migration.
+–max-field-section-size BYTES  Max size of uncompressed field section.
+–qpack-max-table-capacity BYTES  Max capacity of dynamic QPACK decoding.
+–qpack-blocked-streams STREAMS  Limit of blocked streams while decoding.
+–initial-cwnd-packets      Size of initial congestion window, in packets.</p>
+</div><section id="impl-Args-for-ServerArgs" class="impl"><a class="src rightside" href="../../src/quiche_apps/args.rs.html#483-509">source</a><a href="#impl-Args-for-ServerArgs" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Args.html" title="trait quiche_apps::args::Args">Args</a> for <a class="struct" href="struct.ServerArgs.html" title="struct quiche_apps::args::ServerArgs">ServerArgs</a></h3></section></div><script src="../../trait.impl/quiche_apps/args/trait.Args.js" async></script></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/client/enum.ClientError.html b/quiche_apps/client/enum.ClientError.html
new file mode 100644
index 0000000..095c431
--- /dev/null
+++ b/quiche_apps/client/enum.ClientError.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ClientError` enum in crate `quiche_apps`."><title>ClientError in quiche_apps::client - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">ClientError</a></h2><div class="sidebar-elems"><section><h3><a href="#variants">Variants</a></h3><ul class="block variant"><li><a href="#variant.HandshakeFail">HandshakeFail</a></li><li><a href="#variant.HttpFail">HttpFail</a></li><li><a href="#variant.Other">Other</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Debug-for-ClientError">Debug</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-ClientError">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-ClientError">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ClientError">Send</a></li><li><a href="#impl-Sync-for-ClientError">Sync</a></li><li><a href="#impl-Unpin-for-ClientError">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ClientError">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In quiche_apps::client</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Enum <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">client</a>::<wbr><a class="enum" href="#">ClientError</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/client.rs.html#43-47">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub enum ClientError {
+    HandshakeFail,
+    HttpFail,
+    Other(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>),
+}</code></pre><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.HandshakeFail" class="variant"><a href="#variant.HandshakeFail" class="anchor">§</a><h3 class="code-header">HandshakeFail</h3></section><section id="variant.HttpFail" class="variant"><a href="#variant.HttpFail" class="anchor">§</a><h3 class="code-header">HttpFail</h3></section><section id="variant.Other" class="variant"><a href="#variant.Other" class="anchor">§</a><h3 class="code-header">Other(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>)</h3></section></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-ClientError" class="impl"><a class="src rightside" href="../../src/quiche_apps/client.rs.html#42">source</a><a href="#impl-Debug-for-ClientError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="enum" href="enum.ClientError.html" title="enum quiche_apps::client::ClientError">ClientError</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/quiche_apps/client.rs.html#42">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-ClientError" class="impl"><a href="#impl-Freeze-for-ClientError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="enum" href="enum.ClientError.html" title="enum quiche_apps::client::ClientError">ClientError</a></h3></section><section id="impl-RefUnwindSafe-for-ClientError" class="impl"><a href="#impl-RefUnwindSafe-for-ClientError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="enum.ClientError.html" title="enum quiche_apps::client::ClientError">ClientError</a></h3></section><section id="impl-Send-for-ClientError" class="impl"><a href="#impl-Send-for-ClientError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="enum.ClientError.html" title="enum quiche_apps::client::ClientError">ClientError</a></h3></section><section id="impl-Sync-for-ClientError" class="impl"><a href="#impl-Sync-for-ClientError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="enum.ClientError.html" title="enum quiche_apps::client::ClientError">ClientError</a></h3></section><section id="impl-Unpin-for-ClientError" class="impl"><a href="#impl-Unpin-for-ClientError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="enum.ClientError.html" title="enum quiche_apps::client::ClientError">ClientError</a></h3></section><section id="impl-UnwindSafe-for-ClientError" class="impl"><a href="#impl-UnwindSafe-for-ClientError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="enum" href="enum.ClientError.html" title="enum quiche_apps::client::ClientError">ClientError</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/client/fn.connect.html b/quiche_apps/client/fn.connect.html
new file mode 100644
index 0000000..96fe9f7
--- /dev/null
+++ b/quiche_apps/client/fn.connect.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `connect` fn in crate `quiche_apps`."><title>connect in quiche_apps::client - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"><h2><a href="index.html">In quiche_apps::client</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">client</a>::<wbr><a class="fn" href="#">connect</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/client.rs.html#49-598">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub fn connect(
+    args: <a class="struct" href="../args/struct.ClientArgs.html" title="struct quiche_apps::args::ClientArgs">ClientArgs</a>,
+    conn_args: <a class="struct" href="../args/struct.CommonArgs.html" title="struct quiche_apps::args::CommonArgs">CommonArgs</a>,
+    output_sink: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>) + 'static
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="enum.ClientError.html" title="enum quiche_apps::client::ClientError">ClientError</a>&gt;</code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/client/index.html b/quiche_apps/client/index.html
new file mode 100644
index 0000000..f12b9f9
--- /dev/null
+++ b/quiche_apps/client/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `client` mod in crate `quiche_apps`."><title>quiche_apps::client - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">Module client</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#enums">Enums</a></li><li><a href="#functions">Functions</a></li></ul></section><h2><a href="../index.html">In crate quiche_apps</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../index.html">quiche_apps</a>::<wbr><a class="mod" href="#">client</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/client.rs.html#27-598">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="enum" href="enum.ClientError.html" title="enum quiche_apps::client::ClientError">ClientError</a></div></li></ul><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="fn" href="fn.connect.html" title="fn quiche_apps::client::connect">connect</a></div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/client/sidebar-items.js b/quiche_apps/client/sidebar-items.js
new file mode 100644
index 0000000..d95b41b
--- /dev/null
+++ b/quiche_apps/client/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"enum":["ClientError"],"fn":["connect"]};
\ No newline at end of file
diff --git a/quiche_apps/common/alpns/constant.HTTP_09.html b/quiche_apps/common/alpns/constant.HTTP_09.html
new file mode 100644
index 0000000..d7d25a2
--- /dev/null
+++ b/quiche_apps/common/alpns/constant.HTTP_09.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `HTTP_09` constant in crate `quiche_apps`."><title>HTTP_09 in quiche_apps::common::alpns - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc constant"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"><h2><a href="index.html">In quiche_apps::common::alpns</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Constant <a href="../../index.html">quiche_apps</a>::<wbr><a href="../index.html">common</a>::<wbr><a href="index.html">alpns</a>::<wbr><a class="constant" href="#">HTTP_09</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/quiche_apps/common.rs.html#64">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub const HTTP_09: [&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">2</a>];</code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/alpns/constant.HTTP_3.html b/quiche_apps/common/alpns/constant.HTTP_3.html
new file mode 100644
index 0000000..28250ce
--- /dev/null
+++ b/quiche_apps/common/alpns/constant.HTTP_3.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `HTTP_3` constant in crate `quiche_apps`."><title>HTTP_3 in quiche_apps::common::alpns - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc constant"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"><h2><a href="index.html">In quiche_apps::common::alpns</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Constant <a href="../../index.html">quiche_apps</a>::<wbr><a href="../index.html">common</a>::<wbr><a href="index.html">alpns</a>::<wbr><a class="constant" href="#">HTTP_3</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/quiche_apps/common.rs.html#65">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub const HTTP_3: [&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">1</a>];</code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/alpns/index.html b/quiche_apps/common/alpns/index.html
new file mode 100644
index 0000000..236f4d6
--- /dev/null
+++ b/quiche_apps/common/alpns/index.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="ALPN helpers."><title>quiche_apps::common::alpns - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">Module alpns</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#constants">Constants</a></li></ul></section><h2><a href="../index.html">In quiche_apps::common</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../../index.html">quiche_apps</a>::<wbr><a href="../index.html">common</a>::<wbr><a class="mod" href="#">alpns</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../../src/quiche_apps/common.rs.html#63">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>ALPN helpers.</p>
+<p>This module contains constants and functions for working with ALPN.</p>
+</div></details><h2 id="constants" class="section-header">Constants<a href="#constants" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="constant" href="constant.HTTP_3.html" title="constant quiche_apps::common::alpns::HTTP_3">HTTP_3</a></div></li><li><div class="item-name"><a class="constant" href="constant.HTTP_09.html" title="constant quiche_apps::common::alpns::HTTP_09">HTTP_09</a></div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/alpns/sidebar-items.js b/quiche_apps/common/alpns/sidebar-items.js
new file mode 100644
index 0000000..4cad1c9
--- /dev/null
+++ b/quiche_apps/common/alpns/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"constant":["HTTP_09","HTTP_3"]};
\ No newline at end of file
diff --git a/quiche_apps/common/fn.generate_cid_and_reset_token.html b/quiche_apps/common/fn.generate_cid_and_reset_token.html
new file mode 100644
index 0000000..c79dadc
--- /dev/null
+++ b/quiche_apps/common/fn.generate_cid_and_reset_token.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Generate a new pair of Source Connection ID and reset token."><title>generate_cid_and_reset_token in quiche_apps::common - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"><h2><a href="index.html">In quiche_apps::common</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">common</a>::<wbr><a class="fn" href="#">generate_cid_and_reset_token</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/common.rs.html#256-266">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub fn generate_cid_and_reset_token&lt;T: SecureRandom&gt;(
+    rng: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>
+) -&gt; (<a class="struct" href="../../quiche/packet/struct.ConnectionId.html" title="struct quiche::packet::ConnectionId">ConnectionId</a>&lt;'static&gt;, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u128.html">u128</a>)</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Generate a new pair of Source Connection ID and reset token.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/fn.hdrs_to_strings.html b/quiche_apps/common/fn.hdrs_to_strings.html
new file mode 100644
index 0000000..e73aa2b
--- /dev/null
+++ b/quiche_apps/common/fn.hdrs_to_strings.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `hdrs_to_strings` fn in crate `quiche_apps`."><title>hdrs_to_strings in quiche_apps::common - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"><h2><a href="index.html">In quiche_apps::common</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">common</a>::<wbr><a class="fn" href="#">hdrs_to_strings</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/common.rs.html#244-253">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub fn hdrs_to_strings(hdrs: &amp;[<a class="struct" href="../../quiche/h3/struct.Header.html" title="struct quiche::h3::Header">Header</a>]) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>)&gt;</code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/fn.make_qlog_writer.html b/quiche_apps/common/fn.make_qlog_writer.html
new file mode 100644
index 0000000..d418c59
--- /dev/null
+++ b/quiche_apps/common/fn.make_qlog_writer.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Makes a buffered writer for a qlog."><title>make_qlog_writer in quiche_apps::common - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"><h2><a href="index.html">In quiche_apps::common</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">common</a>::<wbr><a class="fn" href="#">make_qlog_writer</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/common.rs.html#150-165">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub fn make_qlog_writer(dir: &amp;<a class="struct" href="https://doc.rust-lang.org/nightly/std/ffi/os_str/struct.OsStr.html" title="struct std::ffi::os_str::OsStr">OsStr</a>, role: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, id: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/std/io/buffered/bufwriter/struct.BufWriter.html" title="struct std::io::buffered::bufwriter::BufWriter">BufWriter</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/std/fs/struct.File.html" title="struct std::fs::File">File</a>&gt;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Makes a buffered writer for a qlog.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/fn.priority_field_value_from_query_string.html b/quiche_apps/common/fn.priority_field_value_from_query_string.html
new file mode 100644
index 0000000..61f5129
--- /dev/null
+++ b/quiche_apps/common/fn.priority_field_value_from_query_string.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Construct a priority field value from quiche apps custom query string."><title>priority_field_value_from_query_string in quiche_apps::common - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"><h2><a href="index.html">In quiche_apps::common</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">common</a>::<wbr><a class="fn" href="#">priority_field_value_from_query_string</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/common.rs.html#269-289">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub fn priority_field_value_from_query_string(url: &amp;<a class="struct" href="https://docs.rs/url/1.7.0/url/struct.Url.html" title="struct url::Url">Url</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Construct a priority field value from quiche apps custom query string.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/fn.priority_from_query_string.html b/quiche_apps/common/fn.priority_from_query_string.html
new file mode 100644
index 0000000..dbd823a
--- /dev/null
+++ b/quiche_apps/common/fn.priority_from_query_string.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Construct a Priority from quiche apps custom query string."><title>priority_from_query_string in quiche_apps::common - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"><h2><a href="index.html">In quiche_apps::common</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">common</a>::<wbr><a class="fn" href="#">priority_from_query_string</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/common.rs.html#292-314">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub fn priority_from_query_string(url: &amp;<a class="struct" href="https://docs.rs/url/1.7.0/url/struct.Url.html" title="struct url::Url">Url</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../../quiche/h3/struct.Priority.html" title="struct quiche::h3::Priority">Priority</a>&gt;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Construct a Priority from quiche apps custom query string.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/fn.stdout_sink.html b/quiche_apps/common/fn.stdout_sink.html
new file mode 100644
index 0000000..b79e888
--- /dev/null
+++ b/quiche_apps/common/fn.stdout_sink.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `stdout_sink` fn in crate `quiche_apps`."><title>stdout_sink in quiche_apps::common - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"><h2><a href="index.html">In quiche_apps::common</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">common</a>::<wbr><a class="fn" href="#">stdout_sink</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/common.rs.html#54-56">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub fn stdout_sink(out: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>)</code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/index.html b/quiche_apps/common/index.html
new file mode 100644
index 0000000..ceb8552
--- /dev/null
+++ b/quiche_apps/common/index.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Quiche application utilities."><title>quiche_apps::common - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">Module common</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li><li><a href="#types">Type Aliases</a></li></ul></section><h2><a href="../index.html">In crate quiche_apps</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../index.html">quiche_apps</a>::<wbr><a class="mod" href="#">common</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/common.rs.html#27-1642">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Quiche application utilities.</p>
+<p>This module provides some utility functions that are common to quiche
+applications.</p>
+</div></details><h2 id="modules" class="section-header">Modules<a href="#modules" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="mod" href="alpns/index.html" title="mod quiche_apps::common::alpns">alpns</a></div><div class="desc docblock-short">ALPN helpers.</div></li></ul><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.Client.html" title="struct quiche_apps::common::Client">Client</a></div></li><li><div class="item-name"><a class="struct" href="struct.Http3Conn.html" title="struct quiche_apps::common::Http3Conn">Http3Conn</a></div></li><li><div class="item-name"><a class="struct" href="struct.Http3DgramSender.html" title="struct quiche_apps::common::Http3DgramSender">Http3DgramSender</a></div></li><li><div class="item-name"><a class="struct" href="struct.Http09Conn.html" title="struct quiche_apps::common::Http09Conn">Http09Conn</a></div></li><li><div class="item-name"><a class="struct" href="struct.Http09Request.html" title="struct quiche_apps::common::Http09Request">Http09Request</a></div><div class="desc docblock-short">Represents an HTTP/0.9 formatted request.</div></li><li><div class="item-name"><a class="struct" href="struct.PartialRequest.html" title="struct quiche_apps::common::PartialRequest">PartialRequest</a></div></li><li><div class="item-name"><a class="struct" href="struct.PartialResponse.html" title="struct quiche_apps::common::PartialResponse">PartialResponse</a></div></li></ul><h2 id="traits" class="section-header">Traits<a href="#traits" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="trait" href="trait.HttpConn.html" title="trait quiche_apps::common::HttpConn">HttpConn</a></div></li></ul><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="fn" href="fn.generate_cid_and_reset_token.html" title="fn quiche_apps::common::generate_cid_and_reset_token">generate_cid_and_reset_token</a></div><div class="desc docblock-short">Generate a new pair of Source Connection ID and reset token.</div></li><li><div class="item-name"><a class="fn" href="fn.hdrs_to_strings.html" title="fn quiche_apps::common::hdrs_to_strings">hdrs_to_strings</a></div></li><li><div class="item-name"><a class="fn" href="fn.make_qlog_writer.html" title="fn quiche_apps::common::make_qlog_writer">make_qlog_writer</a></div><div class="desc docblock-short">Makes a buffered writer for a qlog.</div></li><li><div class="item-name"><a class="fn" href="fn.priority_field_value_from_query_string.html" title="fn quiche_apps::common::priority_field_value_from_query_string">priority_field_value_from_query_string</a></div><div class="desc docblock-short">Construct a priority field value from quiche apps custom query string.</div></li><li><div class="item-name"><a class="fn" href="fn.priority_from_query_string.html" title="fn quiche_apps::common::priority_from_query_string">priority_from_query_string</a></div><div class="desc docblock-short">Construct a Priority from quiche apps custom query string.</div></li><li><div class="item-name"><a class="fn" href="fn.stdout_sink.html" title="fn quiche_apps::common::stdout_sink">stdout_sink</a></div></li></ul><h2 id="types" class="section-header">Type Aliases<a href="#types" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="type" href="type.ClientId.html" title="type quiche_apps::common::ClientId">ClientId</a></div></li><li><div class="item-name"><a class="type" href="type.ClientIdMap.html" title="type quiche_apps::common::ClientIdMap">ClientIdMap</a></div></li><li><div class="item-name"><a class="type" href="type.ClientMap.html" title="type quiche_apps::common::ClientMap">ClientMap</a></div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/sidebar-items.js b/quiche_apps/common/sidebar-items.js
new file mode 100644
index 0000000..816c67e
--- /dev/null
+++ b/quiche_apps/common/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"fn":["generate_cid_and_reset_token","hdrs_to_strings","make_qlog_writer","priority_field_value_from_query_string","priority_from_query_string","stdout_sink"],"mod":["alpns"],"struct":["Client","Http09Conn","Http09Request","Http3Conn","Http3DgramSender","PartialRequest","PartialResponse"],"trait":["HttpConn"],"type":["ClientId","ClientIdMap","ClientMap"]};
\ No newline at end of file
diff --git a/quiche_apps/common/struct.Client.html b/quiche_apps/common/struct.Client.html
new file mode 100644
index 0000000..cb5e76d
--- /dev/null
+++ b/quiche_apps/common/struct.Client.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `Client` struct in crate `quiche_apps`."><title>Client in quiche_apps::common - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">Client</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.app_proto_selected">app_proto_selected</a></li><li><a href="#structfield.client_id">client_id</a></li><li><a href="#structfield.conn">conn</a></li><li><a href="#structfield.http_conn">http_conn</a></li><li><a href="#structfield.loss_rate">loss_rate</a></li><li><a href="#structfield.max_datagram_size">max_datagram_size</a></li><li><a href="#structfield.max_send_burst">max_send_burst</a></li><li><a href="#structfield.partial_requests">partial_requests</a></li><li><a href="#structfield.partial_responses">partial_responses</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-RefUnwindSafe-for-Client">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-Client">!Send</a></li><li><a href="#impl-Sync-for-Client">!Sync</a></li><li><a href="#impl-UnwindSafe-for-Client">!UnwindSafe</a></li><li><a href="#impl-Freeze-for-Client">Freeze</a></li><li><a href="#impl-Unpin-for-Client">Unpin</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In quiche_apps::common</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">common</a>::<wbr><a class="struct" href="#">Client</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/common.rs.html#83-101">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Client {
+    pub conn: <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+    pub http_conn: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.HttpConn.html" title="trait quiche_apps::common::HttpConn">HttpConn</a>&gt;&gt;,
+    pub client_id: <a class="type" href="type.ClientId.html" title="type quiche_apps::common::ClientId">ClientId</a>,
+    pub app_proto_selected: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    pub partial_requests: <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="struct" href="struct.PartialRequest.html" title="struct quiche_apps::common::PartialRequest">PartialRequest</a>&gt;,
+    pub partial_responses: <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="struct" href="struct.PartialResponse.html" title="struct quiche_apps::common::PartialResponse">PartialResponse</a>&gt;,
+    pub max_datagram_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
+    pub loss_rate: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f64.html">f64</a>,
+    pub max_send_burst: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.conn" class="structfield section-header"><a href="#structfield.conn" class="anchor field">§</a><code>conn: <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a></code></span><span id="structfield.http_conn" class="structfield section-header"><a href="#structfield.http_conn" class="anchor field">§</a><code>http_conn: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.HttpConn.html" title="trait quiche_apps::common::HttpConn">HttpConn</a>&gt;&gt;</code></span><span id="structfield.client_id" class="structfield section-header"><a href="#structfield.client_id" class="anchor field">§</a><code>client_id: <a class="type" href="type.ClientId.html" title="type quiche_apps::common::ClientId">ClientId</a></code></span><span id="structfield.app_proto_selected" class="structfield section-header"><a href="#structfield.app_proto_selected" class="anchor field">§</a><code>app_proto_selected: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><span id="structfield.partial_requests" class="structfield section-header"><a href="#structfield.partial_requests" class="anchor field">§</a><code>partial_requests: <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="struct" href="struct.PartialRequest.html" title="struct quiche_apps::common::PartialRequest">PartialRequest</a>&gt;</code></span><span id="structfield.partial_responses" class="structfield section-header"><a href="#structfield.partial_responses" class="anchor field">§</a><code>partial_responses: <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="struct" href="struct.PartialResponse.html" title="struct quiche_apps::common::PartialResponse">PartialResponse</a>&gt;</code></span><span id="structfield.max_datagram_size" class="structfield section-header"><a href="#structfield.max_datagram_size" class="anchor field">§</a><code>max_datagram_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><span id="structfield.loss_rate" class="structfield section-header"><a href="#structfield.loss_rate" class="anchor field">§</a><code>loss_rate: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f64.html">f64</a></code></span><span id="structfield.max_send_burst" class="structfield section-header"><a href="#structfield.max_send_burst" class="anchor field">§</a><code>max_send_burst: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Client" class="impl"><a href="#impl-Freeze-for-Client" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Client.html" title="struct quiche_apps::common::Client">Client</a></h3></section><section id="impl-RefUnwindSafe-for-Client" class="impl"><a href="#impl-RefUnwindSafe-for-Client" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Client.html" title="struct quiche_apps::common::Client">Client</a></h3></section><section id="impl-Send-for-Client" class="impl"><a href="#impl-Send-for-Client" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Client.html" title="struct quiche_apps::common::Client">Client</a></h3></section><section id="impl-Sync-for-Client" class="impl"><a href="#impl-Sync-for-Client" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Client.html" title="struct quiche_apps::common::Client">Client</a></h3></section><section id="impl-Unpin-for-Client" class="impl"><a href="#impl-Unpin-for-Client" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Client.html" title="struct quiche_apps::common::Client">Client</a></h3></section><section id="impl-UnwindSafe-for-Client" class="impl"><a href="#impl-UnwindSafe-for-Client" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Client.html" title="struct quiche_apps::common::Client">Client</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/struct.Http09Conn.html b/quiche_apps/common/struct.Http09Conn.html
new file mode 100644
index 0000000..df10eec
--- /dev/null
+++ b/quiche_apps/common/struct.Http09Conn.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `Http09Conn` struct in crate `quiche_apps`."><title>Http09Conn in quiche_apps::common - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">Http09Conn</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.with_urls">with_urls</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Default-for-Http09Conn">Default</a></li><li><a href="#impl-HttpConn-for-Http09Conn">HttpConn</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-RefUnwindSafe-for-Http09Conn">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-Http09Conn">!Send</a></li><li><a href="#impl-Sync-for-Http09Conn">!Sync</a></li><li><a href="#impl-UnwindSafe-for-Http09Conn">!UnwindSafe</a></li><li><a href="#impl-Freeze-for-Http09Conn">Freeze</a></li><li><a href="#impl-Unpin-for-Http09Conn">Unpin</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In quiche_apps::common</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">common</a>::<wbr><a class="struct" href="#">Http09Conn</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/common.rs.html#388-394">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Http09Conn { <span class="comment">/* private fields */</span> }</code></pre><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Http09Conn" class="impl"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#408-437">source</a><a href="#impl-Http09Conn" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Http09Conn.html" title="struct quiche_apps::common::Http09Conn">Http09Conn</a></h3></section></summary><div class="impl-items"><section id="method.with_urls" class="method"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#409-436">source</a><h4 class="code-header">pub fn <a href="#method.with_urls" class="fn">with_urls</a>(
+    urls: &amp;[<a class="struct" href="https://docs.rs/url/1.7.0/url/struct.Url.html" title="struct url::Url">Url</a>],
+    reqs_cardinal: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    output_sink: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/rc/struct.Rc.html" title="struct alloc::rc::Rc">Rc</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/core/cell/struct.RefCell.html" title="struct core::cell::RefCell">RefCell</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>)&gt;&gt;
+) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.HttpConn.html" title="trait quiche_apps::common::HttpConn">HttpConn</a>&gt;</h4></section></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-Http09Conn" class="impl"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#396-406">source</a><a href="#impl-Default-for-Http09Conn" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.Http09Conn.html" title="struct quiche_apps::common::Http09Conn">Http09Conn</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#397-405">source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -&gt; Self</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-HttpConn-for-Http09Conn" class="impl"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#439-706">source</a><a href="#impl-HttpConn-for-Http09Conn" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.HttpConn.html" title="trait quiche_apps::common::HttpConn">HttpConn</a> for <a class="struct" href="struct.Http09Conn.html" title="struct quiche_apps::common::Http09Conn">Http09Conn</a></h3></section></summary><div class="impl-items"><section id="method.send_requests" class="method trait-impl"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#440-476">source</a><a href="#method.send_requests" class="anchor">§</a><h4 class="code-header">fn <a href="trait.HttpConn.html#tymethod.send_requests" class="fn">send_requests</a>(&amp;mut self, conn: &amp;mut <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a>, target_path: &amp;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;)</h4></section><section id="method.handle_responses" class="method trait-impl"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#478-548">source</a><a href="#method.handle_responses" class="anchor">§</a><h4 class="code-header">fn <a href="trait.HttpConn.html#tymethod.handle_responses" class="fn">handle_responses</a>(
+    &amp;mut self,
+    conn: &amp;mut <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+    buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
+    req_start: &amp;<a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>
+)</h4></section><section id="method.report_incomplete" class="method trait-impl"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#550-563">source</a><a href="#method.report_incomplete" class="anchor">§</a><h4 class="code-header">fn <a href="trait.HttpConn.html#tymethod.report_incomplete" class="fn">report_incomplete</a>(&amp;self, start: &amp;<a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section><section id="method.handle_requests" class="method trait-impl"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#565-672">source</a><a href="#method.handle_requests" class="anchor">§</a><h4 class="code-header">fn <a href="trait.HttpConn.html#tymethod.handle_requests" class="fn">handle_requests</a>(
+    &amp;mut self,
+    conn: &amp;mut <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+    partial_requests: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="struct" href="struct.PartialRequest.html" title="struct quiche_apps::common::PartialRequest">PartialRequest</a>&gt;,
+    partial_responses: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="struct" href="struct.PartialResponse.html" title="struct quiche_apps::common::PartialResponse">PartialResponse</a>&gt;,
+    root: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
+    index: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
+    buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]
+) -&gt; <a class="type" href="../../quiche/h3/type.Result.html" title="type quiche::h3::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section><section id="method.handle_writable" class="method trait-impl"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#674-705">source</a><a href="#method.handle_writable" class="anchor">§</a><h4 class="code-header">fn <a href="trait.HttpConn.html#tymethod.handle_writable" class="fn">handle_writable</a>(
+    &amp;mut self,
+    conn: &amp;mut <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+    partial_responses: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="struct" href="struct.PartialResponse.html" title="struct quiche_apps::common::PartialResponse">PartialResponse</a>&gt;,
+    stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>
+)</h4></section></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Http09Conn" class="impl"><a href="#impl-Freeze-for-Http09Conn" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Http09Conn.html" title="struct quiche_apps::common::Http09Conn">Http09Conn</a></h3></section><section id="impl-RefUnwindSafe-for-Http09Conn" class="impl"><a href="#impl-RefUnwindSafe-for-Http09Conn" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Http09Conn.html" title="struct quiche_apps::common::Http09Conn">Http09Conn</a></h3></section><section id="impl-Send-for-Http09Conn" class="impl"><a href="#impl-Send-for-Http09Conn" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Http09Conn.html" title="struct quiche_apps::common::Http09Conn">Http09Conn</a></h3></section><section id="impl-Sync-for-Http09Conn" class="impl"><a href="#impl-Sync-for-Http09Conn" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Http09Conn.html" title="struct quiche_apps::common::Http09Conn">Http09Conn</a></h3></section><section id="impl-Unpin-for-Http09Conn" class="impl"><a href="#impl-Unpin-for-Http09Conn" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Http09Conn.html" title="struct quiche_apps::common::Http09Conn">Http09Conn</a></h3></section><section id="impl-UnwindSafe-for-Http09Conn" class="impl"><a href="#impl-UnwindSafe-for-Http09Conn" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Http09Conn.html" title="struct quiche_apps::common::Http09Conn">Http09Conn</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/struct.Http09Request.html b/quiche_apps/common/struct.Http09Request.html
new file mode 100644
index 0000000..b22569b
--- /dev/null
+++ b/quiche_apps/common/struct.Http09Request.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Represents an HTTP/0.9 formatted request."><title>Http09Request in quiche_apps::common - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">Http09Request</a></h2><div class="sidebar-elems"><section><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Http09Request">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Http09Request">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Http09Request">Send</a></li><li><a href="#impl-Sync-for-Http09Request">Sync</a></li><li><a href="#impl-Unpin-for-Http09Request">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Http09Request">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In quiche_apps::common</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">common</a>::<wbr><a class="struct" href="#">Http09Request</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/common.rs.html#362-368">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Http09Request { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Represents an HTTP/0.9 formatted request.</p>
+</div></details><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Http09Request" class="impl"><a href="#impl-Freeze-for-Http09Request" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Http09Request.html" title="struct quiche_apps::common::Http09Request">Http09Request</a></h3></section><section id="impl-RefUnwindSafe-for-Http09Request" class="impl"><a href="#impl-RefUnwindSafe-for-Http09Request" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Http09Request.html" title="struct quiche_apps::common::Http09Request">Http09Request</a></h3></section><section id="impl-Send-for-Http09Request" class="impl"><a href="#impl-Send-for-Http09Request" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Http09Request.html" title="struct quiche_apps::common::Http09Request">Http09Request</a></h3></section><section id="impl-Sync-for-Http09Request" class="impl"><a href="#impl-Sync-for-Http09Request" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Http09Request.html" title="struct quiche_apps::common::Http09Request">Http09Request</a></h3></section><section id="impl-Unpin-for-Http09Request" class="impl"><a href="#impl-Unpin-for-Http09Request" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Http09Request.html" title="struct quiche_apps::common::Http09Request">Http09Request</a></h3></section><section id="impl-UnwindSafe-for-Http09Request" class="impl"><a href="#impl-UnwindSafe-for-Http09Request" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Http09Request.html" title="struct quiche_apps::common::Http09Request">Http09Request</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/struct.Http3Conn.html b/quiche_apps/common/struct.Http3Conn.html
new file mode 100644
index 0000000..89c8f73
--- /dev/null
+++ b/quiche_apps/common/struct.Http3Conn.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `Http3Conn` struct in crate `quiche_apps`."><title>Http3Conn in quiche_apps::common - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">Http3Conn</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.with_conn">with_conn</a></li><li><a href="#method.with_urls">with_urls</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-HttpConn-for-Http3Conn">HttpConn</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-RefUnwindSafe-for-Http3Conn">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-Http3Conn">!Send</a></li><li><a href="#impl-Sync-for-Http3Conn">!Sync</a></li><li><a href="#impl-UnwindSafe-for-Http3Conn">!UnwindSafe</a></li><li><a href="#impl-Freeze-for-Http3Conn">Freeze</a></li><li><a href="#impl-Unpin-for-Http3Conn">Unpin</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In quiche_apps::common</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">common</a>::<wbr><a class="struct" href="#">Http3Conn</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/common.rs.html#749-760">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Http3Conn { <span class="comment">/* private fields */</span> }</code></pre><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Http3Conn" class="impl"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#762-1113">source</a><a href="#impl-Http3Conn" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Http3Conn.html" title="struct quiche_apps::common::Http3Conn">Http3Conn</a></h3></section></summary><div class="impl-items"><section id="method.with_urls" class="method"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#764-856">source</a><h4 class="code-header">pub fn <a href="#method.with_urls" class="fn">with_urls</a>(
+    conn: &amp;mut <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+    urls: &amp;[<a class="struct" href="https://docs.rs/url/1.7.0/url/struct.Url.html" title="struct url::Url">Url</a>],
+    reqs_cardinal: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    req_headers: &amp;[<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>],
+    body: &amp;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;&gt;,
+    method: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
+    send_priority_update: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    max_field_section_size: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    qpack_max_table_capacity: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    qpack_blocked_streams: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    dump_json: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;,
+    dgram_sender: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.Http3DgramSender.html" title="struct quiche_apps::common::Http3DgramSender">Http3DgramSender</a>&gt;,
+    output_sink: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/rc/struct.Rc.html" title="struct alloc::rc::Rc">Rc</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/core/cell/struct.RefCell.html" title="struct core::cell::RefCell">RefCell</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>)&gt;&gt;
+) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.HttpConn.html" title="trait quiche_apps::common::HttpConn">HttpConn</a>&gt;</h4></section><section id="method.with_conn" class="method"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#858-888">source</a><h4 class="code-header">pub fn <a href="#method.with_conn" class="fn">with_conn</a>(
+    conn: &amp;mut <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+    max_field_section_size: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    qpack_max_table_capacity: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    qpack_blocked_streams: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;,
+    dgram_sender: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.Http3DgramSender.html" title="struct quiche_apps::common::Http3DgramSender">Http3DgramSender</a>&gt;,
+    output_sink: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/rc/struct.Rc.html" title="struct alloc::rc::Rc">Rc</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/core/cell/struct.RefCell.html" title="struct core::cell::RefCell">RefCell</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>)&gt;&gt;
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.HttpConn.html" title="trait quiche_apps::common::HttpConn">HttpConn</a>&gt;, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</h4></section></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-HttpConn-for-Http3Conn" class="impl"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#1115-1642">source</a><a href="#impl-HttpConn-for-Http3Conn" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.HttpConn.html" title="trait quiche_apps::common::HttpConn">HttpConn</a> for <a class="struct" href="struct.Http3Conn.html" title="struct quiche_apps::common::Http3Conn">Http3Conn</a></h3></section></summary><div class="impl-items"><section id="method.send_requests" class="method trait-impl"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#1116-1215">source</a><a href="#method.send_requests" class="anchor">§</a><h4 class="code-header">fn <a href="trait.HttpConn.html#tymethod.send_requests" class="fn">send_requests</a>(&amp;mut self, conn: &amp;mut <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a>, target_path: &amp;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;)</h4></section><section id="method.handle_responses" class="method trait-impl"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#1217-1368">source</a><a href="#method.handle_responses" class="anchor">§</a><h4 class="code-header">fn <a href="trait.HttpConn.html#tymethod.handle_responses" class="fn">handle_responses</a>(
+    &amp;mut self,
+    conn: &amp;mut <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+    buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
+    req_start: &amp;<a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>
+)</h4></section><section id="method.report_incomplete" class="method trait-impl"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#1370-1387">source</a><a href="#method.report_incomplete" class="anchor">§</a><h4 class="code-header">fn <a href="trait.HttpConn.html#tymethod.report_incomplete" class="fn">report_incomplete</a>(&amp;self, start: &amp;<a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section><section id="method.handle_requests" class="method trait-impl"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#1389-1587">source</a><a href="#method.handle_requests" class="anchor">§</a><h4 class="code-header">fn <a href="trait.HttpConn.html#tymethod.handle_requests" class="fn">handle_requests</a>(
+    &amp;mut self,
+    conn: &amp;mut <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+    _partial_requests: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="struct" href="struct.PartialRequest.html" title="struct quiche_apps::common::PartialRequest">PartialRequest</a>&gt;,
+    partial_responses: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="struct" href="struct.PartialResponse.html" title="struct quiche_apps::common::PartialResponse">PartialResponse</a>&gt;,
+    root: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
+    index: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
+    buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]
+) -&gt; <a class="type" href="../../quiche/h3/type.Result.html" title="type quiche::h3::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section><section id="method.handle_writable" class="method trait-impl"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#1589-1641">source</a><a href="#method.handle_writable" class="anchor">§</a><h4 class="code-header">fn <a href="trait.HttpConn.html#tymethod.handle_writable" class="fn">handle_writable</a>(
+    &amp;mut self,
+    conn: &amp;mut <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+    partial_responses: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="struct" href="struct.PartialResponse.html" title="struct quiche_apps::common::PartialResponse">PartialResponse</a>&gt;,
+    stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>
+)</h4></section></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Http3Conn" class="impl"><a href="#impl-Freeze-for-Http3Conn" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Http3Conn.html" title="struct quiche_apps::common::Http3Conn">Http3Conn</a></h3></section><section id="impl-RefUnwindSafe-for-Http3Conn" class="impl"><a href="#impl-RefUnwindSafe-for-Http3Conn" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Http3Conn.html" title="struct quiche_apps::common::Http3Conn">Http3Conn</a></h3></section><section id="impl-Send-for-Http3Conn" class="impl"><a href="#impl-Send-for-Http3Conn" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Http3Conn.html" title="struct quiche_apps::common::Http3Conn">Http3Conn</a></h3></section><section id="impl-Sync-for-Http3Conn" class="impl"><a href="#impl-Sync-for-Http3Conn" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Http3Conn.html" title="struct quiche_apps::common::Http3Conn">Http3Conn</a></h3></section><section id="impl-Unpin-for-Http3Conn" class="impl"><a href="#impl-Unpin-for-Http3Conn" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Http3Conn.html" title="struct quiche_apps::common::Http3Conn">Http3Conn</a></h3></section><section id="impl-UnwindSafe-for-Http3Conn" class="impl"><a href="#impl-UnwindSafe-for-Http3Conn" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Http3Conn.html" title="struct quiche_apps::common::Http3Conn">Http3Conn</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/struct.Http3DgramSender.html b/quiche_apps/common/struct.Http3DgramSender.html
new file mode 100644
index 0000000..371c60b
--- /dev/null
+++ b/quiche_apps/common/struct.Http3DgramSender.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `Http3DgramSender` struct in crate `quiche_apps`."><title>Http3DgramSender in quiche_apps::common - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">Http3DgramSender</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.dgram_content">dgram_content</a></li><li><a href="#structfield.dgrams_sent">dgrams_sent</a></li><li><a href="#structfield.flow_id">flow_id</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.new">new</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Http3DgramSender">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Http3DgramSender">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Http3DgramSender">Send</a></li><li><a href="#impl-Sync-for-Http3DgramSender">Sync</a></li><li><a href="#impl-Unpin-for-Http3DgramSender">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Http3DgramSender">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In quiche_apps::common</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">common</a>::<wbr><a class="struct" href="#">Http3DgramSender</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/common.rs.html#708-713">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Http3DgramSender {
+    pub dgram_content: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub flow_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub dgrams_sent: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    <span class="comment">/* private fields */</span>
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.dgram_content" class="structfield section-header"><a href="#structfield.dgram_content" class="anchor field">§</a><code>dgram_content: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.flow_id" class="structfield section-header"><a href="#structfield.flow_id" class="anchor field">§</a><code>flow_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span id="structfield.dgrams_sent" class="structfield section-header"><a href="#structfield.dgrams_sent" class="anchor field">§</a><code>dgrams_sent: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Http3DgramSender" class="impl"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#715-724">source</a><a href="#impl-Http3DgramSender" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Http3DgramSender.html" title="struct quiche_apps::common::Http3DgramSender">Http3DgramSender</a></h3></section></summary><div class="impl-items"><section id="method.new" class="method"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#716-723">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(dgram_count: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, dgram_content: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, flow_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -&gt; Self</h4></section></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Http3DgramSender" class="impl"><a href="#impl-Freeze-for-Http3DgramSender" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Http3DgramSender.html" title="struct quiche_apps::common::Http3DgramSender">Http3DgramSender</a></h3></section><section id="impl-RefUnwindSafe-for-Http3DgramSender" class="impl"><a href="#impl-RefUnwindSafe-for-Http3DgramSender" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Http3DgramSender.html" title="struct quiche_apps::common::Http3DgramSender">Http3DgramSender</a></h3></section><section id="impl-Send-for-Http3DgramSender" class="impl"><a href="#impl-Send-for-Http3DgramSender" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Http3DgramSender.html" title="struct quiche_apps::common::Http3DgramSender">Http3DgramSender</a></h3></section><section id="impl-Sync-for-Http3DgramSender" class="impl"><a href="#impl-Sync-for-Http3DgramSender" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Http3DgramSender.html" title="struct quiche_apps::common::Http3DgramSender">Http3DgramSender</a></h3></section><section id="impl-Unpin-for-Http3DgramSender" class="impl"><a href="#impl-Unpin-for-Http3DgramSender" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Http3DgramSender.html" title="struct quiche_apps::common::Http3DgramSender">Http3DgramSender</a></h3></section><section id="impl-UnwindSafe-for-Http3DgramSender" class="impl"><a href="#impl-UnwindSafe-for-Http3DgramSender" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Http3DgramSender.html" title="struct quiche_apps::common::Http3DgramSender">Http3DgramSender</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/struct.PartialRequest.html b/quiche_apps/common/struct.PartialRequest.html
new file mode 100644
index 0000000..22f3a19
--- /dev/null
+++ b/quiche_apps/common/struct.PartialRequest.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `PartialRequest` struct in crate `quiche_apps`."><title>PartialRequest in quiche_apps::common - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">PartialRequest</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.req">req</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-PartialRequest">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-PartialRequest">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PartialRequest">Send</a></li><li><a href="#impl-Sync-for-PartialRequest">Sync</a></li><li><a href="#impl-Unpin-for-PartialRequest">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PartialRequest">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In quiche_apps::common</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">common</a>::<wbr><a class="struct" href="#">PartialRequest</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/common.rs.html#68-70">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct PartialRequest {
+    pub req: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.req" class="structfield section-header"><a href="#structfield.req" class="anchor field">§</a><code>req: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</code></span><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-PartialRequest" class="impl"><a href="#impl-Freeze-for-PartialRequest" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.PartialRequest.html" title="struct quiche_apps::common::PartialRequest">PartialRequest</a></h3></section><section id="impl-RefUnwindSafe-for-PartialRequest" class="impl"><a href="#impl-RefUnwindSafe-for-PartialRequest" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.PartialRequest.html" title="struct quiche_apps::common::PartialRequest">PartialRequest</a></h3></section><section id="impl-Send-for-PartialRequest" class="impl"><a href="#impl-Send-for-PartialRequest" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.PartialRequest.html" title="struct quiche_apps::common::PartialRequest">PartialRequest</a></h3></section><section id="impl-Sync-for-PartialRequest" class="impl"><a href="#impl-Sync-for-PartialRequest" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.PartialRequest.html" title="struct quiche_apps::common::PartialRequest">PartialRequest</a></h3></section><section id="impl-Unpin-for-PartialRequest" class="impl"><a href="#impl-Unpin-for-PartialRequest" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.PartialRequest.html" title="struct quiche_apps::common::PartialRequest">PartialRequest</a></h3></section><section id="impl-UnwindSafe-for-PartialRequest" class="impl"><a href="#impl-UnwindSafe-for-PartialRequest" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.PartialRequest.html" title="struct quiche_apps::common::PartialRequest">PartialRequest</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/struct.PartialResponse.html b/quiche_apps/common/struct.PartialResponse.html
new file mode 100644
index 0000000..21f5b90
--- /dev/null
+++ b/quiche_apps/common/struct.PartialResponse.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `PartialResponse` struct in crate `quiche_apps`."><title>PartialResponse in quiche_apps::common - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">PartialResponse</a></h2><div class="sidebar-elems"><section><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.body">body</a></li><li><a href="#structfield.headers">headers</a></li><li><a href="#structfield.priority">priority</a></li><li><a href="#structfield.written">written</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-PartialResponse">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-PartialResponse">RefUnwindSafe</a></li><li><a href="#impl-Send-for-PartialResponse">Send</a></li><li><a href="#impl-Sync-for-PartialResponse">Sync</a></li><li><a href="#impl-Unpin-for-PartialResponse">Unpin</a></li><li><a href="#impl-UnwindSafe-for-PartialResponse">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-IntoEither-for-T">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In quiche_apps::common</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">common</a>::<wbr><a class="struct" href="#">PartialResponse</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/common.rs.html#72-79">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct PartialResponse {
+    pub headers: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../../quiche/h3/struct.Header.html" title="struct quiche::h3::Header">Header</a>&gt;&gt;,
+    pub priority: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../../quiche/h3/struct.Priority.html" title="struct quiche::h3::Priority">Priority</a>&gt;,
+    pub body: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;,
+    pub written: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
+}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.headers" class="structfield section-header"><a href="#structfield.headers" class="anchor field">§</a><code>headers: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../../quiche/h3/struct.Header.html" title="struct quiche::h3::Header">Header</a>&gt;&gt;</code></span><span id="structfield.priority" class="structfield section-header"><a href="#structfield.priority" class="anchor field">§</a><code>priority: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../../quiche/h3/struct.Priority.html" title="struct quiche::h3::Priority">Priority</a>&gt;</code></span><span id="structfield.body" class="structfield section-header"><a href="#structfield.body" class="anchor field">§</a><code>body: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</code></span><span id="structfield.written" class="structfield section-header"><a href="#structfield.written" class="anchor field">§</a><code>written: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-PartialResponse" class="impl"><a href="#impl-Freeze-for-PartialResponse" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.PartialResponse.html" title="struct quiche_apps::common::PartialResponse">PartialResponse</a></h3></section><section id="impl-RefUnwindSafe-for-PartialResponse" class="impl"><a href="#impl-RefUnwindSafe-for-PartialResponse" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.PartialResponse.html" title="struct quiche_apps::common::PartialResponse">PartialResponse</a></h3></section><section id="impl-Send-for-PartialResponse" class="impl"><a href="#impl-Send-for-PartialResponse" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.PartialResponse.html" title="struct quiche_apps::common::PartialResponse">PartialResponse</a></h3></section><section id="impl-Sync-for-PartialResponse" class="impl"><a href="#impl-Sync-for-PartialResponse" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.PartialResponse.html" title="struct quiche_apps::common::PartialResponse">PartialResponse</a></h3></section><section id="impl-Unpin-for-PartialResponse" class="impl"><a href="#impl-Unpin-for-PartialResponse" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.PartialResponse.html" title="struct quiche_apps::common::PartialResponse">PartialResponse</a></h3></section><section id="impl-UnwindSafe-for-PartialResponse" class="impl"><a href="#impl-UnwindSafe-for-PartialResponse" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.PartialResponse.html" title="struct quiche_apps::common::PartialResponse">PartialResponse</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left</code> is <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
+    F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Self</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+if <code>into_left(&amp;self)</code> returns <code>true</code>.
+Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
+otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/trait.HttpConn.html b/quiche_apps/common/trait.HttpConn.html
new file mode 100644
index 0000000..6a04e02
--- /dev/null
+++ b/quiche_apps/common/trait.HttpConn.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `HttpConn` trait in crate `quiche_apps`."><title>HttpConn in quiche_apps::common - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">HttpConn</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.handle_requests">handle_requests</a></li><li><a href="#tymethod.handle_responses">handle_responses</a></li><li><a href="#tymethod.handle_writable">handle_writable</a></li><li><a href="#tymethod.report_incomplete">report_incomplete</a></li><li><a href="#tymethod.send_requests">send_requests</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In quiche_apps::common</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Trait <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">common</a>::<wbr><a class="trait" href="#">HttpConn</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/common.rs.html#336-359">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub trait HttpConn {
+    // Required methods
+    fn <a href="#tymethod.send_requests" class="fn">send_requests</a>(
+        &amp;mut self,
+        conn: &amp;mut <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+        target_path: &amp;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;
+    );
+<span class="item-spacer"></span>    fn <a href="#tymethod.handle_responses" class="fn">handle_responses</a>(
+        &amp;mut self,
+        conn: &amp;mut <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+        buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
+        req_start: &amp;<a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>
+    );
+<span class="item-spacer"></span>    fn <a href="#tymethod.report_incomplete" class="fn">report_incomplete</a>(&amp;self, start: &amp;<a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>;
+<span class="item-spacer"></span>    fn <a href="#tymethod.handle_requests" class="fn">handle_requests</a>(
+        &amp;mut self,
+        conn: &amp;mut <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+        partial_requests: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="struct" href="struct.PartialRequest.html" title="struct quiche_apps::common::PartialRequest">PartialRequest</a>&gt;,
+        partial_responses: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="struct" href="struct.PartialResponse.html" title="struct quiche_apps::common::PartialResponse">PartialResponse</a>&gt;,
+        root: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
+        index: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
+        buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]
+    ) -&gt; <a class="type" href="../../quiche/h3/type.Result.html" title="type quiche::h3::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;;
+<span class="item-spacer"></span>    fn <a href="#tymethod.handle_writable" class="fn">handle_writable</a>(
+        &amp;mut self,
+        conn: &amp;mut <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+        partial_responses: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="struct" href="struct.PartialResponse.html" title="struct quiche_apps::common::PartialResponse">PartialResponse</a>&gt;,
+        stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>
+    );
+}</code></pre><h2 id="required-methods" class="section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><section id="tymethod.send_requests" class="method"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#337-339">source</a><h4 class="code-header">fn <a href="#tymethod.send_requests" class="fn">send_requests</a>(&amp;mut self, conn: &amp;mut <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a>, target_path: &amp;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;)</h4></section><section id="tymethod.handle_responses" class="method"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#341-344">source</a><h4 class="code-header">fn <a href="#tymethod.handle_responses" class="fn">handle_responses</a>(
+    &amp;mut self,
+    conn: &amp;mut <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+    buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
+    req_start: &amp;<a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>
+)</h4></section><section id="tymethod.report_incomplete" class="method"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#346">source</a><h4 class="code-header">fn <a href="#tymethod.report_incomplete" class="fn">report_incomplete</a>(&amp;self, start: &amp;<a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section><section id="tymethod.handle_requests" class="method"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#348-353">source</a><h4 class="code-header">fn <a href="#tymethod.handle_requests" class="fn">handle_requests</a>(
+    &amp;mut self,
+    conn: &amp;mut <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+    partial_requests: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="struct" href="struct.PartialRequest.html" title="struct quiche_apps::common::PartialRequest">PartialRequest</a>&gt;,
+    partial_responses: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="struct" href="struct.PartialResponse.html" title="struct quiche_apps::common::PartialResponse">PartialResponse</a>&gt;,
+    root: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
+    index: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
+    buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]
+) -&gt; <a class="type" href="../../quiche/h3/type.Result.html" title="type quiche::h3::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section><section id="tymethod.handle_writable" class="method"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#355-358">source</a><h4 class="code-header">fn <a href="#tymethod.handle_writable" class="fn">handle_writable</a>(
+    &amp;mut self,
+    conn: &amp;mut <a class="struct" href="../../quiche/struct.Connection.html" title="struct quiche::Connection">Connection</a>,
+    partial_responses: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="struct" href="struct.PartialResponse.html" title="struct quiche_apps::common::PartialResponse">PartialResponse</a>&gt;,
+    stream_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>
+)</h4></section></div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-HttpConn-for-Http3Conn" class="impl"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#1115-1642">source</a><a href="#impl-HttpConn-for-Http3Conn" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.HttpConn.html" title="trait quiche_apps::common::HttpConn">HttpConn</a> for <a class="struct" href="struct.Http3Conn.html" title="struct quiche_apps::common::Http3Conn">Http3Conn</a></h3></section><section id="impl-HttpConn-for-Http09Conn" class="impl"><a class="src rightside" href="../../src/quiche_apps/common.rs.html#439-706">source</a><a href="#impl-HttpConn-for-Http09Conn" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.HttpConn.html" title="trait quiche_apps::common::HttpConn">HttpConn</a> for <a class="struct" href="struct.Http09Conn.html" title="struct quiche_apps::common::Http09Conn">Http09Conn</a></h3></section></div><script src="../../trait.impl/quiche_apps/common/trait.HttpConn.js" async></script></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/type.ClientId.html b/quiche_apps/common/type.ClientId.html
new file mode 100644
index 0000000..9e0b802
--- /dev/null
+++ b/quiche_apps/common/type.ClientId.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ClientId` type in crate `quiche_apps`."><title>ClientId in quiche_apps::common - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">ClientId</a></h2><div class="sidebar-elems"><h2><a href="index.html">In quiche_apps::common</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Type Alias <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">common</a>::<wbr><a class="type" href="#">ClientId</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/common.rs.html#81">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub type ClientId = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>;</code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/type.ClientIdMap.html b/quiche_apps/common/type.ClientIdMap.html
new file mode 100644
index 0000000..eb3f02e
--- /dev/null
+++ b/quiche_apps/common/type.ClientIdMap.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ClientIdMap` type in crate `quiche_apps`."><title>ClientIdMap in quiche_apps::common - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">ClientIdMap</a></h2><div class="sidebar-elems"><section><h3><a href="#aliased-type">Aliased type</a></h3></section><h2><a href="index.html">In quiche_apps::common</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Type Alias <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">common</a>::<wbr><a class="type" href="#">ClientIdMap</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/common.rs.html#103">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub type ClientIdMap = <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="struct" href="../../quiche/packet/struct.ConnectionId.html" title="struct quiche::packet::ConnectionId">ConnectionId</a>&lt;'static&gt;, <a class="type" href="type.ClientId.html" title="type quiche_apps::common::ClientId">ClientId</a>&gt;;</code></pre><h2 id="aliased-type" class="section-header">Aliased Type<a href="#aliased-type" class="anchor">§</a></h2><pre class="rust item-decl"><code>struct ClientIdMap { <span class="comment">/* private fields */</span> }</code></pre><script src="../../type.impl/std/collections/hash/map/struct.HashMap.js" data-self-path="quiche_apps::common::ClientIdMap" async></script></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/common/type.ClientMap.html b/quiche_apps/common/type.ClientMap.html
new file mode 100644
index 0000000..0a39090
--- /dev/null
+++ b/quiche_apps/common/type.ClientMap.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ClientMap` type in crate `quiche_apps`."><title>ClientMap in quiche_apps::common - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc type"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">ClientMap</a></h2><div class="sidebar-elems"><section><h3><a href="#aliased-type">Aliased type</a></h3></section><h2><a href="index.html">In quiche_apps::common</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Type Alias <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">common</a>::<wbr><a class="type" href="#">ClientMap</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/common.rs.html#104">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub type ClientMap = <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="type" href="type.ClientId.html" title="type quiche_apps::common::ClientId">ClientId</a>, <a class="struct" href="struct.Client.html" title="struct quiche_apps::common::Client">Client</a>&gt;;</code></pre><h2 id="aliased-type" class="section-header">Aliased Type<a href="#aliased-type" class="anchor">§</a></h2><pre class="rust item-decl"><code>struct ClientMap { <span class="comment">/* private fields */</span> }</code></pre><script src="../../type.impl/std/collections/hash/map/struct.HashMap.js" data-self-path="quiche_apps::common::ClientMap" async></script></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/index.html b/quiche_apps/index.html
new file mode 100644
index 0000000..b14ad69
--- /dev/null
+++ b/quiche_apps/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `quiche_apps` crate."><title>quiche_apps - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="../crates.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"><ul class="block"><li><a id="all-types" href="all.html">All Items</a></li></ul><section><ul class="block"><li><a href="#modules">Modules</a></li></ul></section></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Crate <a class="mod" href="#">quiche_apps</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche_apps/lib.rs.html#27-33">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><h2 id="modules" class="section-header">Modules<a href="#modules" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="mod" href="args/index.html" title="mod quiche_apps::args">args</a></div></li><li><div class="item-name"><a class="mod" href="client/index.html" title="mod quiche_apps::client">client</a></div></li><li><div class="item-name"><a class="mod" href="common/index.html" title="mod quiche_apps::common">common</a></div><div class="desc docblock-short">Quiche application utilities.</div></li><li><div class="item-name"><a class="mod" href="sendto/index.html" title="mod quiche_apps::sendto">sendto</a></div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/sendto/fn.detect_gso.html b/quiche_apps/sendto/fn.detect_gso.html
new file mode 100644
index 0000000..45d7514
--- /dev/null
+++ b/quiche_apps/sendto/fn.detect_gso.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="For Linux, try to detect GSO is available."><title>detect_gso in quiche_apps::sendto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"><h2><a href="index.html">In quiche_apps::sendto</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">sendto</a>::<wbr><a class="fn" href="#">detect_gso</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/sendto.rs.html#33-42">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub fn detect_gso(socket: &amp;UdpSocket, segment_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>For Linux, try to detect GSO is available.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/sendto/fn.send_to.html b/quiche_apps/sendto/fn.send_to.html
new file mode 100644
index 0000000..8fec60b
--- /dev/null
+++ b/quiche_apps/sendto/fn.send_to.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A wrapper function of send_to()."><title>send_to in quiche_apps::sendto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"><h2><a href="index.html">In quiche_apps::sendto</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="../index.html">quiche_apps</a>::<wbr><a href="index.html">sendto</a>::<wbr><a class="fn" href="#">send_to</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/sendto.rs.html#99-133">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub fn send_to(
+    socket: &amp;UdpSocket,
+    buf: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
+    send_info: &amp;<a class="struct" href="../../quiche/struct.SendInfo.html" title="struct quiche::SendInfo">SendInfo</a>,
+    segment_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
+    pacing: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    enable_gso: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>
+) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A wrapper function of send_to().</p>
+<ul>
+<li>when GSO and SO_TXTIME enabled, send a packet using send_to_gso().
+Otherwise, send packet using socket.send_to().</li>
+</ul>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/sendto/index.html b/quiche_apps/sendto/index.html
new file mode 100644
index 0000000..0033ff6
--- /dev/null
+++ b/quiche_apps/sendto/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `sendto` mod in crate `quiche_apps`."><title>quiche_apps::sendto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../quiche_apps/index.html">quiche_apps</a><span class="version">0.1.0</span></h2></div><h2 class="location"><a href="#">Module sendto</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#functions">Functions</a></li></ul></section><h2><a href="../index.html">In crate quiche_apps</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../index.html">quiche_apps</a>::<wbr><a class="mod" href="#">sendto</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../../src/quiche_apps/sendto.rs.html#27-148">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="fn" href="fn.detect_gso.html" title="fn quiche_apps::sendto::detect_gso">detect_gso</a></div><div class="desc docblock-short">For Linux, try to detect GSO is available.</div></li><li><div class="item-name"><a class="fn" href="fn.send_to.html" title="fn quiche_apps::sendto::send_to">send_to</a></div><div class="desc docblock-short">A wrapper function of send_to().</div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_apps/sendto/sidebar-items.js b/quiche_apps/sendto/sidebar-items.js
new file mode 100644
index 0000000..5ed791d
--- /dev/null
+++ b/quiche_apps/sendto/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"fn":["detect_gso","send_to"]};
\ No newline at end of file
diff --git a/quiche_apps/sidebar-items.js b/quiche_apps/sidebar-items.js
new file mode 100644
index 0000000..3ea4a3e
--- /dev/null
+++ b/quiche_apps/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"mod":["args","client","common","sendto"]};
\ No newline at end of file
diff --git a/quiche_client/all.html b/quiche_client/all.html
new file mode 100644
index 0000000..a88b382
--- /dev/null
+++ b/quiche_client/all.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche_client" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod sys"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche_client/index.html">quiche_client</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"><section><ul class="block"><li><a href="#functions">Functions</a></li></ul></section></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche_client/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><h1>List of all items</h1><h3 id="functions">Functions</h3><ul class="all-items"><li><a href="fn.main.html">main</a></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_client/fn.main.html b/quiche_client/fn.main.html
new file mode 100644
index 0000000..9d12fd0
--- /dev/null
+++ b/quiche_client/fn.main.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `main` fn in crate `quiche_client`."><title>main in quiche_client - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche_client" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche_client/index.html">quiche_client</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche_client/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="index.html">quiche_client</a>::<wbr><a class="fn" href="#">main</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche_client/quiche-client.rs.html#33-50">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub(crate) fn main()</code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_client/index.html b/quiche_client/index.html
new file mode 100644
index 0000000..5f8a8f9
--- /dev/null
+++ b/quiche_client/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `quiche_client` crate."><title>quiche_client - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche_client" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="../crates.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche_client/index.html">quiche_client</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"><ul class="block"><li><a id="all-types" href="all.html">All Items</a></li></ul><section><ul class="block"><li><a href="#functions">Functions</a></li></ul></section></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche_client/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Crate <a class="mod" href="#">quiche_client</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche_client/quiche-client.rs.html#27-50">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="fn" href="fn.main.html" title="fn quiche_client::main">main</a><span title="Restricted Visibility">&nbsp;🔒</span> </div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_client/sidebar-items.js b/quiche_client/sidebar-items.js
new file mode 100644
index 0000000..9b556a0
--- /dev/null
+++ b/quiche_client/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"fn":["main"]};
\ No newline at end of file
diff --git a/quiche_server/all.html b/quiche_server/all.html
new file mode 100644
index 0000000..ca0fc7b
--- /dev/null
+++ b/quiche_server/all.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche_server" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod sys"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche_server/index.html">quiche_server</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"><section><ul class="block"><li><a href="#constants">Constants</a></li><li><a href="#functions">Functions</a></li></ul></section></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche_server/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><h1>List of all items</h1><h3 id="functions">Functions</h3><ul class="all-items"><li><a href="fn.handle_path_events.html">handle_path_events</a></li><li><a href="fn.main.html">main</a></li><li><a href="fn.mint_token.html">mint_token</a></li><li><a href="fn.set_txtime_sockopt.html">set_txtime_sockopt</a></li><li><a href="fn.validate_token.html">validate_token</a></li></ul><h3 id="constants">Constants</h3><ul class="all-items"><li><a href="constant.MAX_BUF_SIZE.html">MAX_BUF_SIZE</a></li><li><a href="constant.MAX_DATAGRAM_SIZE.html">MAX_DATAGRAM_SIZE</a></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_server/constant.MAX_BUF_SIZE.html b/quiche_server/constant.MAX_BUF_SIZE.html
new file mode 100644
index 0000000..9551025
--- /dev/null
+++ b/quiche_server/constant.MAX_BUF_SIZE.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `MAX_BUF_SIZE` constant in crate `quiche_server`."><title>MAX_BUF_SIZE in quiche_server - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche_server" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc constant"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche_server/index.html">quiche_server</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche_server/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Constant <a href="index.html">quiche_server</a>::<wbr><a class="constant" href="#">MAX_BUF_SIZE</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche_server/quiche-server.rs.html#52">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub(crate) const MAX_BUF_SIZE: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = 65507;</code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_server/constant.MAX_DATAGRAM_SIZE.html b/quiche_server/constant.MAX_DATAGRAM_SIZE.html
new file mode 100644
index 0000000..c2019af
--- /dev/null
+++ b/quiche_server/constant.MAX_DATAGRAM_SIZE.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `MAX_DATAGRAM_SIZE` constant in crate `quiche_server`."><title>MAX_DATAGRAM_SIZE in quiche_server - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche_server" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc constant"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche_server/index.html">quiche_server</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche_server/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Constant <a href="index.html">quiche_server</a>::<wbr><a class="constant" href="#">MAX_DATAGRAM_SIZE</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche_server/quiche-server.rs.html#54">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub(crate) const MAX_DATAGRAM_SIZE: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> = 1350;</code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_server/fn.handle_path_events.html b/quiche_server/fn.handle_path_events.html
new file mode 100644
index 0000000..5abe759
--- /dev/null
+++ b/quiche_server/fn.handle_path_events.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `handle_path_events` fn in crate `quiche_server`."><title>handle_path_events in quiche_server - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche_server" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche_server/index.html">quiche_server</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche_server/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="index.html">quiche_server</a>::<wbr><a class="fn" href="#">handle_path_events</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche_server/quiche-server.rs.html#691-756">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub(crate) fn handle_path_events(client: &amp;mut <a class="struct" href="../quiche_apps/common/struct.Client.html" title="struct quiche_apps::common::Client">Client</a>)</code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_server/fn.main.html b/quiche_server/fn.main.html
new file mode 100644
index 0000000..c1180b8
--- /dev/null
+++ b/quiche_server/fn.main.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `main` fn in crate `quiche_server`."><title>main in quiche_server - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche_server" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche_server/index.html">quiche_server</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche_server/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="index.html">quiche_server</a>::<wbr><a class="fn" href="#">main</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche_server/quiche-server.rs.html#56-633">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub(crate) fn main()</code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_server/fn.mint_token.html b/quiche_server/fn.mint_token.html
new file mode 100644
index 0000000..c1ac73c
--- /dev/null
+++ b/quiche_server/fn.mint_token.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Generate a stateless retry token."><title>mint_token in quiche_server - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche_server" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche_server/index.html">quiche_server</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche_server/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="index.html">quiche_server</a>::<wbr><a class="fn" href="#">mint_token</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche_server/quiche-server.rs.html#643-657">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub(crate) fn mint_token(hdr: &amp;<a class="struct" href="../quiche/packet/struct.Header.html" title="struct quiche::packet::Header">Header</a>&lt;'_&gt;, src: &amp;<a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Generate a stateless retry token.</p>
+<p>The token includes the static string <code>&quot;quiche&quot;</code> followed by the IP address
+of the client and by the original destination connection ID generated by the
+client.</p>
+<p>Note that this function is only an example and doesn’t do any cryptographic
+authenticate of the token. <em>It should not be used in production system</em>.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_server/fn.set_txtime_sockopt.html b/quiche_server/fn.set_txtime_sockopt.html
new file mode 100644
index 0000000..69eeb25
--- /dev/null
+++ b/quiche_server/fn.set_txtime_sockopt.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Set SO_TXTIME socket option."><title>set_txtime_sockopt in quiche_server - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche_server" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche_server/index.html">quiche_server</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche_server/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="index.html">quiche_server</a>::<wbr><a class="fn" href="#">set_txtime_sockopt</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche_server/quiche-server.rs.html#765-781">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub(crate) fn set_txtime_sockopt(sock: &amp;UdpSocket) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Set SO_TXTIME socket option.</p>
+<p>This socket option is set to send to kernel the outgoing UDP
+packet transmission time in the sendmsg syscall.</p>
+<p>Note that this socket option is set only on linux platforms.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_server/fn.validate_token.html b/quiche_server/fn.validate_token.html
new file mode 100644
index 0000000..9c9311b
--- /dev/null
+++ b/quiche_server/fn.validate_token.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Validates a stateless retry token."><title>validate_token in quiche_server - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche_server" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche_server/index.html">quiche_server</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche_server/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="index.html">quiche_server</a>::<wbr><a class="fn" href="#">validate_token</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche_server/quiche-server.rs.html#666-689">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub(crate) fn validate_token&lt;'a&gt;(
+    src: &amp;<a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>,
+    token: &amp;'a [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../quiche/packet/struct.ConnectionId.html" title="struct quiche::packet::ConnectionId">ConnectionId</a>&lt;'a&gt;&gt;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Validates a stateless retry token.</p>
+<p>This checks that the ticket includes the <code>&quot;quiche&quot;</code> static string, and that
+the client IP address matches the address stored in the ticket.</p>
+<p>Note that this function is only an example and doesn’t do any cryptographic
+authenticate of the token. <em>It should not be used in production system</em>.</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_server/index.html b/quiche_server/index.html
new file mode 100644
index 0000000..8667fdb
--- /dev/null
+++ b/quiche_server/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `quiche_server` crate."><title>quiche_server - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="quiche_server" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-e32f0c247825364d.js"></script><script defer src="../crates.js"></script><script defer src="../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../quiche_server/index.html">quiche_server</a><span class="version">0.1.0</span></h2></div><div class="sidebar-elems"><ul class="block"><li><a id="all-types" href="all.html">All Items</a></li></ul><section><ul class="block"><li><a href="#constants">Constants</a></li><li><a href="#functions">Functions</a></li></ul></section></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../quiche_server/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Crate <a class="mod" href="#">quiche_server</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/quiche_server/quiche-server.rs.html#27-792">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><h2 id="constants" class="section-header">Constants<a href="#constants" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="constant" href="constant.MAX_BUF_SIZE.html" title="constant quiche_server::MAX_BUF_SIZE">MAX_BUF_SIZE</a><span title="Restricted Visibility">&nbsp;🔒</span> </div></li><li><div class="item-name"><a class="constant" href="constant.MAX_DATAGRAM_SIZE.html" title="constant quiche_server::MAX_DATAGRAM_SIZE">MAX_DATAGRAM_SIZE</a><span title="Restricted Visibility">&nbsp;🔒</span> </div></li></ul><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="fn" href="fn.handle_path_events.html" title="fn quiche_server::handle_path_events">handle_path_events</a><span title="Restricted Visibility">&nbsp;🔒</span> </div></li><li><div class="item-name"><a class="fn" href="fn.main.html" title="fn quiche_server::main">main</a><span title="Restricted Visibility">&nbsp;🔒</span> </div></li><li><div class="item-name"><a class="fn" href="fn.mint_token.html" title="fn quiche_server::mint_token">mint_token</a><span title="Restricted Visibility">&nbsp;🔒</span> </div><div class="desc docblock-short">Generate a stateless retry token.</div></li><li><div class="item-name"><a class="fn" href="fn.set_txtime_sockopt.html" title="fn quiche_server::set_txtime_sockopt">set_txtime_sockopt</a><span title="Restricted Visibility">&nbsp;🔒</span> </div><div class="desc docblock-short">Set SO_TXTIME socket option.</div></li><li><div class="item-name"><a class="fn" href="fn.validate_token.html" title="fn quiche_server::validate_token">validate_token</a><span title="Restricted Visibility">&nbsp;🔒</span> </div><div class="desc docblock-short">Validates a stateless retry token.</div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/quiche_server/sidebar-items.js b/quiche_server/sidebar-items.js
new file mode 100644
index 0000000..82722c7
--- /dev/null
+++ b/quiche_server/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"constant":["MAX_BUF_SIZE","MAX_DATAGRAM_SIZE"],"fn":["handle_path_events","main","mint_token","set_txtime_sockopt","validate_token"]};
\ No newline at end of file
diff --git a/search-index.js b/search-index.js
new file mode 100644
index 0000000..f775907
--- /dev/null
+++ b/search-index.js
@@ -0,0 +1,10 @@
+var searchIndex = new Map(JSON.parse('[\
+["octets",{"t":"FPFFPINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHHNN","n":["BufferTooShortError","Err","Octets","OctetsMut","Ok","Result","as_mut","as_ref","as_ref","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buf","buf","cap","cap","clone","clone_into","eq","eq","eq","fmt","fmt","fmt","fmt","from","from","from","get_bytes","get_bytes","get_bytes_mut","get_bytes_with_u16_length","get_bytes_with_u16_length","get_bytes_with_u8_length","get_bytes_with_u8_length","get_bytes_with_varint_length","get_bytes_with_varint_length","get_u16","get_u16","get_u24","get_u24","get_u32","get_u32","get_u64","get_u64","get_u8","get_u8","get_varint","get_varint","into","into","into","is_empty","is_empty","len","len","off","off","peek_bytes","peek_bytes","peek_bytes_mut","peek_u8","peek_u8","put_bytes","put_u16","put_u24","put_u32","put_u64","put_u8","put_varint","put_varint_with_len","skip","skip","slice","slice","slice_last","slice_last","source","split_at","to_owned","to_string","to_vec","to_vec","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","varint_len","varint_parse_len","with_slice","with_slice"],"q":[[0,"octets"],[99,"core::fmt"],[100,"core::fmt"],[101,"core::option"],[102,"alloc::string"],[103,"alloc::vec"],[104,"core::result"],[105,"core::any"]],"i":[0,11,0,0,11,0,1,4,1,6,4,1,6,4,1,4,1,4,1,6,6,6,4,1,6,6,4,1,6,4,1,4,1,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,6,4,1,4,1,4,1,4,1,4,1,1,4,1,1,1,1,1,1,1,1,1,4,1,4,1,4,1,6,1,6,6,4,1,6,4,1,6,4,1,6,4,1,0,0,4,1],"f":"``````{b{{f{d}}}}{h{{f{d}}}}1{ce{}{}}0000012{hj}{bj}{ll}{{ce}n{}{}}{{ll}A`}{{hh}A`}{{bb}A`}{{lAb}Ad}0{{hAb}Ad}{{bAb}Ad}{cc{}}00{{hj}{{Af{h}}}}{{bj}{{Af{h}}}}{{bj}{{Af{b}}}}{h{{Af{h}}}}{b{{Af{h}}}}1010{h{{Af{Ah}}}}{b{{Af{Ah}}}}{h{{Af{Aj}}}}{b{{Af{Aj}}}}10{h{{Af{Al}}}}{b{{Af{Al}}}}{h{{Af{d}}}}{b{{Af{d}}}}32{ce{}{}}00{hA`}{bA`}{hj}{bj}10{{hj}{{Af{h}}}}{{bj}{{Af{h}}}}{{bj}{{Af{b}}}}98{{b{f{d}}}{{Af{n}}}}{{bAh}{{Af{{f{d}}}}}}{{bAj}{{Af{{f{d}}}}}}0{{bAl}{{Af{{f{d}}}}}}{{bd}{{Af{{f{d}}}}}}1{{bAlj}{{Af{{f{d}}}}}}{{hj}{{Af{n}}}}{{bj}{{Af{n}}}}{{hj}{{Af{{f{d}}}}}}{{bj}{{Af{{f{d}}}}}}10{l{{B`{An}}}}{{bj}{{Af{{Bb{bb}}}}}}{ce{}{}}{cBd{}}{h{{Bf{d}}}}{b{{Bf{d}}}}{c{{Bh{e}}}{}{}}00000{cBj{}}00{Alj}{dj}{{{f{d}}}h}{{{f{d}}}b}","D":"Hj","p":[[5,"OctetsMut",0],[1,"u8"],[1,"slice"],[5,"Octets",0],[1,"usize"],[5,"BufferTooShortError",0],[1,"unit"],[1,"bool"],[5,"Formatter",99],[8,"Result",99],[8,"Result",0],[1,"u16"],[1,"u32"],[1,"u64"],[10,"Error",100],[6,"Option",101],[1,"tuple"],[5,"String",102],[5,"Vec",103],[6,"Result",104],[5,"TypeId",105]],"b":[[24,"impl-Display-for-BufferTooShortError"],[25,"impl-Debug-for-BufferTooShortError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAB4ABgAAAAAABwAIABQACABRAAAAUwABAFcACAA="}],\
+["qlog",{"t":"PIPFFPPPGPFGPPPPPSFFIPPPIFGFFPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNOOOONNNNNNNNNNONNNNNNNNNNNNNNNNNNNNCOONNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNONNNOONOOOOOCONNNNNNNNNNNCOOOOOOOONNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNOOPPPPPPGPPPPPGPPPPPPGPPGPPPPPPPFGGGGKIPPGPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPPPPPPPPPPGPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOCMNNONNNNNNNNNNNNNNOOOOCCCNNNNNNNNNNNNMNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOPPPPPFPGFPFPGFPGPPPPPPPPPFPPPFPFPPGPONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNOOOOOOOOOOOOOOONNNNNNNNNNNOOOONNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPGPPPPPPPPPPPFFGFFGGFGFPPGGGPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPPPPPPPOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNOOOOOOOOOOOONNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPGFFGFGGFFFFGGFGFGGPPPPPPPPPOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNOOOOOOOONNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPGPFPPPPPPPPPPFPGPPPPPPPPPPFPPPPPPFPFPFPPPPPGPPPPFPPPPPPPPPPPPPPPPPPPPGFPFPPPPPPPFPPPPPPPPPFPGFPGFFPGGFPGFPGGFPPPPPPPPPPPPPFPPPPGGPPPGFPPPPPPPPPPPPPGPPPPPPPPPPPPGGPFPGPPPGGPGPFFPPPPPFPPPOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOONOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPFGGFPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNOOOOONNNNNNNNOONNNNNNNNNNNNGPPFNNNNNNNNNNNONNNNNNPPFPGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Base","Bytes","Client","CommonFields","Configuration","Core","Done","Err","Error","Extra","HexSlice","ImportanceLogLevel","InvalidFormat","InvalidState","IoError","Network","Ok","QLOG_VERSION","Qlog","QlogSeq","Result","Resumption","Retry","Server","StatelessResetToken","Token","TokenType","Trace","TraceSeq","Unknown","VantagePoint","VantagePointType","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","common_fields","common_fields","configuration","configuration","default","default","description","description","description","description","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","details","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","events","events","flow","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","group_id","into","into","into","into","into","into","into","into","into","into","into","into","into","maybe_string","name","new","new","new","original_uris","protocol_type","push_event","qlog_format","qlog_format","qlog_version","qlog_version","raw","reader","reference_time","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","source","streamer","summary","summary","time_format","time_offset","title","title","title","title","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","trace","traces","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","ty","ty","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vantage_point","vantage_point","Absolute","AlpnInformation","Application","ApplicationError","ApplicationError","ApplicationError","ApplicationErrorCode","Base","CongestionStateUpdated","ConnectionClosed","ConnectionError","ConnectionError","ConnectionErrorCode","ConnectionIdUpdated","ConnectionStarted","ConnectionStateUpdated","Connectivity","ConnectivityEventType","Core","CryptoError","CryptoError","DataMoved","DataRecipient","DatagramDropped","DatagramsReceived","DatagramsSent","Debug","Delta","Dropped","Error","Event","EventCategory","EventData","EventImportance","EventType","Eventable","ExData","Extra","FramesProcessed","GenericEventType","GenericEventType","H3FrameCreated","H3FrameParsed","H3ParametersRestored","H3ParametersSet","H3PushResolved","H3StreamTypeSet","Http","Http3EventType","Info","InternalError","InternalError","InternalWarning","InternalWarning","JsonEvent","KeyDiscarded","KeyUpdated","LossTimerUpdated","MarkedForRetransmit","Marker","Marker","Message","Message","MetricsUpdated","MtuUpdated","Network","None","PacketBuffered","PacketDropped","PacketLost","PacketReceived","PacketSent","PacketsAcked","Prefix","Qpack","QpackDynamicTableUpdated","QpackEventType","QpackHeadersDecoded","QpackHeadersEncoded","QpackInstructionCreated","QpackInstructionParsed","QpackStateUpdated","QpackStreamStateUpdated","RawInfo","Recovery","RecoveryEventType","RecoveryParametersSet","Relative","Security","SecurityEventType","ServerListening","Simulation","SpinBitUpdated","StreamStateUpdated","TimeFormat","Transport","Transport","TransportError","TransportEventType","TransportParametersRestored","TransportParametersSet","User","Value","Value","Verbose","VersionInformation","Warning","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","connectivity","contains_quic_frames","data","data","data","default","default","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","ex_data","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","group_id","h3","importance","importance","importance","importance","into","into","into","into","into","into","into","into","into","into","into","into","into","is_contained_in","length","name","payload_length","protocol_type","qpack","quic","security","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","set_time","set_time","set_time","time","time","time_format","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","with_time","with_time_ex","code","code","code","code","description","description","description","description","marker_type","message","message","Application","Attempted","Clean","Closed","Closing","ConnectionClosed","ConnectionClosed","ConnectionClosedTrigger","ConnectionIdUpdated","ConnectionIdUpdated","ConnectionStarted","ConnectionStarted","ConnectionState","ConnectionStateUpdated","ConnectionStateUpdated","ConnectivityEventType","Draining","EarlyWrite","Error","HandshakeCompleted","HandshakeConfirmed","HandshakeStarted","HandshakeTimeout","IdleTimeout","Local","MtuUpdated","MtuUpdated","PeerValidated","Remote","ServerListening","ServerListening","SpinBitUpdated","SpinBitUpdated","StatelessReset","TransportOwner","VersionMismatch","application_code","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","connection_code","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","done","dst_cid","dst_ip","dst_port","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","internal_code","into","into","into","into","into","into","into","into","into","into","into","ip_v4","ip_v6","ip_version","new","new","new","old","old","old","owner","owner","port_v4","port_v6","protocol","reason","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","src_cid","src_ip","src_port","state","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","trigger","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","Abandoned","ApplicationError","CancelPush","CancelPush","Claimed","Control","Data","Data","DuplicatePush","FrameCreated","FrameParsed","Goaway","Goaway","H3FrameCreated","H3FrameParsed","H3Owner","H3ParametersRestored","H3ParametersSet","H3PriorityTargetStreamType","H3PushDecision","H3PushResolved","H3StreamType","H3StreamTypeSet","Headers","Headers","Http3EventType","Http3Frame","Http3FrameTypeName","HttpClosedCriticalStream","HttpConnectError","HttpEarlyResponse","HttpExcessiveLoad","HttpFrameError","HttpGeneralProtocolError","HttpHeader","HttpIdError","HttpIncompleteRequest","HttpInternalError","HttpMissingSettings","HttpNoError","HttpRequestCancelled","HttpRequestRejection","HttpSettingsError","HttpStreamCreationError","HttpUnexpectedFrame","HttpVersionFallback","Local","MaxPushId","MaxPushId","ParametersRestored","ParametersSet","PriorityUpdate","Push","Push","PushPromise","PushPromise","PushResolved","QpackDecode","QpackEncode","Remote","Request","Request","Reserved","Reserved","Reserved","Setting","Settings","Settings","StreamTypeSet","Unknown","Unknown","Unknown","Unknown","associated_push_id","blocked_streams_count","blocked_streams_count","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","enable_connect_protocol","enable_connect_protocol","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","frame","frame","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","h3_datagram","h3_datagram","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","length","length","max_field_section_size","max_field_section_size","max_table_capacity","max_table_capacity","name","name","owner","owner","raw","raw","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","stream_id","stream_id","stream_id","stream_type","stream_type_value","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","value","value","waits_for_settings","frame_type_value","headers","headers","id","length","prioritized_element_id","priority_field_value","push_id","push_id","push_id","raw","raw","settings","target_stream_type","Added","Blocked","DuplicateInstruction","DuplicateInstruction","Dynamic","DynamicTableUpdated","Evicted","HeaderAcknowledgementInstruction","HeaderAcknowledgementInstruction","HeadersDecoded","HeadersEncoded","IndexedHeaderField","IndexedHeaderField","InsertCountIncrementInstruction","InsertCountIncrementInstruction","InsertWithNameReferenceInstruction","InsertWithNameReferenceInstruction","InsertWithoutNameReferenceInstruction","InsertWithoutNameReferenceInstruction","InstructionCreated","InstructionParsed","LiteralHeaderFieldWithName","LiteralHeaderFieldWithName","LiteralHeaderFieldWithoutName","LiteralHeaderFieldWithoutName","Local","QPackInstruction","QpackDynamicTableEntry","QpackDynamicTableUpdated","QpackEventType","QpackHeaderBlockPrefix","QpackHeaderBlockRepresentation","QpackHeaderBlockRepresentationTypeName","QpackHeadersDecoded","QpackHeadersEncoded","QpackInstructionCreated","QpackInstructionParsed","QpackInstructionTypeName","QpackOwner","QpackStateUpdated","QpackStreamState","QpackStreamStateUpdated","QpackTableType","QpackUpdateType","Remote","SetDynamicTableCapacityInstruction","SetDynamicTableCapacityInstruction","StateUpdated","Static","StreamCancellationInstruction","StreamCancellationInstruction","StreamStateUpdated","Unblocked","block_prefix","block_prefix","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","current_insert_count","delta_base","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","dynamic_table_capacity","dynamic_table_size","entries","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","header_block","header_block","headers","headers","index","instruction","instruction","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","known_received_count","name","owner","raw","raw","raw","raw","required_insert_count","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","sign_bit","state","stream_id","stream_id","stream_id","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_type","value","capacity","huffman_encoded_name","huffman_encoded_value","huffman_encoded_value","increment","index","instruction_type","instruction_type","instruction_type","instruction_type","instruction_type","instruction_type","instruction_type","name","name_index","name_length","stream_id","stream_id","table_type","value","value","value_length","value_length","header_field_type","header_field_type","header_field_type","huffman_encoded_name","huffman_encoded_value","huffman_encoded_value","index","is_post_base","is_post_base","is_post_base","name","name_index","name_index","name_length","preserve_literal","preserve_literal","table_type","table_type","table_type","value","value","value_length","value_length","Ack","Ack","Ack","AckedRanges","AeadLimitReached","AlpnInformation","AlpnInformation","ApplicationClose","ApplicationData","ApplicationError","ApplicationError","Backpressure","Bidirectional","Cancelled","CcBandwidthProbe","Closed","CongestionStateUpdated","CongestionStateUpdated","CongestionStateUpdatedTrigger","ConnectionClose","ConnectionClose","ConnectionIdLimitError","ConnectionRefused","ConnectionUnknown","Crypto","Crypto","CryptoBufferExceeded","DataBlocked","DataBlocked","DataMoved","DataMoved","DataRead","DataReceived","DataSent","Datagram","Datagram","DatagramDropped","DatagramDropped","DatagramsReceived","DatagramsReceived","DatagramsSent","DatagramsSent","DecryptionFailure","Destroyed","Double","Ecn","ErrorSpace","Expired","FinalSizeError","FlowControlError","FrameEncodingError","FramesProcessed","FramesProcessed","General","HalfClosedLocal","HalfClosedRemote","Handshake","Handshake","HandshakeDone","HandshakeDone","Idle","Initial","Initial","InternalError","InternalError","Invalid","InvalidToken","KeyDiscarded","KeyUpdateError","KeyUpdated","KeysUnavailable","KeysUnavailable","LossTimerEventType","LossTimerUpdated","LossTimerUpdated","MarkedForRetransmit","MarkedForRetransmit","MaxData","MaxData","MaxStreamData","MaxStreamData","MaxStreams","MaxStreams","MetricsUpdated","MetricsUpdated","NewConnectionId","NewConnectionId","NewToken","NewToken","NoError","NoViablePath","OneRtt","Open","PacketBuffered","PacketBuffered","PacketBufferedTrigger","PacketDropped","PacketDropped","PacketDroppedTrigger","PacketHeader","PacketLost","PacketLost","PacketLostTrigger","PacketNumberSpace","PacketReceived","PacketReceived","PacketReceivedTrigger","PacketSent","PacketSent","PacketSentTrigger","PacketType","PacketsAcked","PacketsAcked","Padding","Padding","ParametersRestored","ParametersSet","ParametersSet","PathChallenge","PathChallenge","PathResponse","PathResponse","PersistentCongestion","Ping","Ping","PreferredAddress","ProtocolViolation","Pto","PtoExpired","PtoProbe","QuicFrame","QuicFrameTypeName","Ready","Receive","Receiving","RecoveryEventType","RecoveryParametersSet","Rejected","ReorderingThreshold","ResetRead","ResetReceived","ResetSent","ResetStream","ResetStream","RetireConnectionId","RetireConnectionId","RetransmitCrypto","RetransmitReordered","RetransmitTimeout","Retry","SecurityEventType","Send","Sending","Set","Single","SizeKnown","StopSending","StopSending","Stream","Stream","StreamDataBlocked","StreamDataBlocked","StreamLimitError","StreamSide","StreamState","StreamStateError","StreamStateUpdated","StreamStateUpdated","StreamType","StreamsBlocked","StreamsBlocked","TimeThreshold","TimerType","TransportError","TransportError","TransportEventType","TransportParameterError","TransportParametersRestored","TransportParametersSet","Unidirectional","Unknown","Unknown","Unknown","Unsupported","VersionInformation","VersionInformation","VersionNegotiation","ZeroRtt","ack_delay_exponent","active_connection_id_limit","active_connection_id_limit","aead_tag_length","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bytes_in_flight","chosen_alpn","chosen_version","client_alpns","client_versions","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","congestion_window","connection_id","count","count","datagram_id","datagram_id","datagram_id","datagram_id","datagram_ids","datagram_ids","dcid","dcil","delta","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","details","disable_active_migration","disable_active_migration","early_data_enabled","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","event_type","flags","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","frames","frames","frames","frames","frames","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","header","header","header","header","header","initial_congestion_window","initial_max_data","initial_max_data","initial_max_stream_data_bidi_local","initial_max_stream_data_bidi_local","initial_max_stream_data_bidi_remote","initial_max_stream_data_bidi_remote","initial_max_stream_data_uni","initial_max_stream_data_uni","initial_max_streams_bidi","initial_max_streams_bidi","initial_max_streams_uni","initial_max_streams_uni","initial_rtt","initial_source_connection_id","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","ip_v4","ip_v6","is_coalesced","is_coalesced","latest_rtt","length","length","loss_reduction_factor","max_ack_delay","max_datagram_size","max_idle_timeout","max_idle_timeout","max_udp_payload_size","max_udp_payload_size","min_rtt","minimum_congestion_window","new","new","new","offset","old","old","original_destination_connection_id","owner","pacing_rate","packet_number","packet_number","packet_number_space","packet_number_space","packet_numbers","packet_type","packets_in_flight","persistent_congestion_threshold","port_v4","port_v6","preferred_address","pto_count","raw","raw","raw","raw","raw","raw","raw","raw","reordering_threshold","resumption_allowed","retry_source_connection_id","retry_token","retry_token","rtt_variance","scid","scil","send_at_time","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","server_alpns","server_versions","smoothed_rtt","ssthresh","stateless_reset_token","stateless_reset_token","stateless_reset_token","stateless_reset_token","stream_id","stream_id","stream_side","stream_type","supported_versions","supported_versions","time_threshold","timer_granularity","timer_type","tls_cipher","to","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","token","trigger","trigger","trigger","trigger","trigger","trigger","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","version","with_type","ack_delay","acked_ranges","ce","connection_id","connection_id_length","data","data","ect0","ect1","error_code","error_code","error_code","error_code_value","error_space","fin","final_size","frame_type_value","length","length","length","length","length","length","length","length","limit","limit","limit","maximum","maximum","maximum","offset","offset","payload_length","payload_length","payload_length","payload_length","payload_length","raw","raw","raw","raw_frame_type","reason","retire_prior_to","sequence_number","sequence_number","stateless_reset_token","stream_id","stream_id","stream_id","stream_id","stream_id","stream_type","stream_type","token","trigger_frame_type","Client0RttSecret","Client1RttSecret","ClientHandshakeSecret","ClientInitialSecret","KeyDiscarded","KeyType","KeyUpdateOrRetiredTrigger","KeyUpdated","LocalUpdate","RemoteUpdate","Server0RttSecret","Server1RttSecret","ServerHandshakeSecret","ServerInitialSecret","Tls","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","deserialize","deserialize","deserialize","deserialize","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","from","from","from","from","generation","generation","into","into","into","into","key","key_type","key_type","new","old","serialize","serialize","serialize","serialize","to_owned","to_owned","to_owned","to_owned","trigger","trigger","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","Event","Json","Qlog","QlogSeqReader","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","into_iter","new","next","qlog","try_from","try_from","try_into","try_into","type_id","type_id","Finished","Initial","QlogStreamer","Ready","StreamerState","add_event","add_event_data_ex_now","add_event_data_ex_with_instant","add_event_data_now","add_event_data_with_instant","add_event_now","add_event_with_instant","borrow","borrow","borrow_mut","borrow_mut","drop","eq","equivalent","equivalent","equivalent","finish_log","fmt","from","from","into","into","new","start_log","start_time","try_from","try_from","try_into","try_into","type_id","type_id","writer"],"q":[[0,"qlog"],[257,"qlog::events"],[600,"qlog::events::EventData"],[611,"qlog::events::connectivity"],[861,"qlog::events::h3"],[1235,"qlog::events::h3::Http3Frame"],[1249,"qlog::events::qpack"],[1637,"qlog::events::qpack::QPackInstruction"],[1660,"qlog::events::qpack::QpackHeaderBlockRepresentation"],[1683,"qlog::events::quic"],[2728,"qlog::events::quic::QuicFrame"],[2784,"qlog::events::security"],[2876,"qlog::reader"],[2898,"qlog::streamer"],[2935,"core::result"],[2936,"serde::de"],[2937,"core::fmt"],[2938,"core::fmt"],[2939,"core::option"],[2940,"alloc::string"],[2941,"core::marker"],[2942,"core::convert"],[2943,"serde::ser"],[2944,"core::error"],[2945,"core::any"],[2946,"std::io"],[2947,"alloc::boxed"],[2948,"serde::ser"],[2949,"std::io"]],"i":[3,0,7,0,0,3,19,147,0,3,0,0,19,19,19,7,147,0,0,0,0,10,10,7,0,0,0,0,0,7,0,0,16,19,1,2,3,4,5,6,7,8,9,10,11,16,19,1,2,3,4,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,10,11,4,5,4,5,8,9,1,2,4,5,1,2,4,5,6,7,8,9,10,11,11,4,5,6,7,8,9,10,11,6,6,6,7,7,7,10,10,10,11,11,11,0,4,6,16,19,19,2,4,5,6,7,8,9,10,11,16,19,19,1,2,3,4,5,6,7,8,9,10,11,9,16,19,1,2,3,4,5,6,7,8,9,10,11,16,6,16,4,5,8,9,4,1,2,1,2,11,0,9,1,2,4,5,6,7,8,9,10,11,19,0,1,2,9,8,1,2,4,5,1,2,3,4,5,6,7,8,9,10,11,16,19,2,1,16,19,1,2,3,4,5,6,7,8,9,10,11,16,19,1,2,3,4,5,6,7,8,9,10,11,6,11,16,19,1,2,3,4,5,6,7,8,9,10,11,4,5,32,38,36,38,39,41,0,34,38,38,38,39,0,38,38,38,35,31,34,0,40,38,0,38,38,38,35,32,36,35,0,0,0,0,0,0,0,34,38,0,31,38,38,38,38,38,38,35,31,35,38,39,38,39,0,38,38,38,38,38,39,38,39,38,38,36,31,38,38,38,38,38,38,42,35,38,31,38,38,38,38,38,38,0,35,31,38,32,35,31,38,35,38,38,0,35,36,40,31,38,38,36,40,41,35,38,35,31,32,27,33,34,35,36,37,38,39,40,41,42,31,32,27,33,34,35,36,37,38,39,40,41,42,31,32,27,33,34,35,36,37,38,39,40,41,42,31,32,27,33,34,35,36,37,38,39,40,41,42,0,38,27,33,37,31,34,31,32,27,33,35,36,37,38,39,40,41,42,31,32,27,36,37,38,39,40,41,42,31,31,31,32,32,32,36,36,36,37,37,37,39,39,39,40,40,40,41,41,41,42,42,42,27,31,32,27,33,34,35,35,36,37,38,39,40,41,42,31,31,32,27,33,34,34,35,35,36,37,38,39,40,41,42,27,0,44,27,33,33,31,32,27,33,34,35,36,37,38,39,40,41,42,34,37,33,37,27,0,0,0,31,32,27,33,35,36,37,38,39,40,41,42,44,27,33,27,33,27,31,32,27,33,34,35,36,37,38,39,40,41,42,35,31,32,27,33,34,35,36,37,38,39,40,41,42,31,32,27,33,34,35,36,37,38,39,40,41,42,31,32,27,33,34,35,36,37,38,39,40,41,42,27,27,152,153,154,155,152,153,154,155,156,157,156,50,48,50,48,48,0,49,0,0,49,0,49,0,0,49,0,48,48,50,48,48,48,50,50,47,0,49,48,47,0,49,0,49,50,0,50,53,47,48,49,50,51,52,53,54,55,56,57,47,48,49,50,51,52,53,54,55,56,57,47,48,49,50,51,52,53,54,55,56,57,47,48,49,50,51,52,53,54,55,56,57,53,47,48,49,50,51,52,53,54,55,56,57,57,52,52,52,47,48,49,50,51,52,53,54,55,56,57,47,47,47,48,48,48,49,49,49,50,50,50,51,51,51,52,52,52,53,53,53,54,54,54,55,55,55,56,56,56,57,57,57,47,48,49,50,51,52,53,54,55,56,57,47,48,49,50,51,52,53,54,55,56,57,53,47,48,49,50,51,52,53,54,55,56,57,51,51,52,54,56,57,54,56,57,53,54,51,51,52,53,47,48,49,50,51,52,53,54,55,56,57,52,52,52,55,47,48,49,50,51,52,53,54,55,56,57,53,47,48,49,50,51,52,53,54,55,56,57,47,48,49,50,51,52,53,54,55,56,57,47,48,49,50,51,52,53,54,55,56,57,60,0,66,67,60,59,66,67,66,62,62,66,67,0,0,0,0,0,0,0,0,0,0,66,67,0,0,0,63,63,63,63,63,63,0,63,63,63,63,63,63,63,63,63,63,63,58,66,67,62,62,67,59,61,66,67,62,59,59,58,59,61,59,66,67,0,66,67,62,59,63,66,67,70,68,69,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,68,69,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,58,58,58,59,59,59,60,60,60,61,61,61,62,62,62,63,63,63,64,64,64,65,65,65,66,66,66,67,67,67,68,68,68,69,69,69,70,70,70,71,71,71,72,72,72,73,73,73,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,71,72,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,68,69,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,71,72,68,69,68,69,64,65,68,70,71,72,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,70,71,72,70,70,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,64,65,68,158,159,160,161,162,163,163,164,160,165,166,158,167,163,77,76,80,82,81,74,77,80,82,74,74,83,84,80,82,80,82,80,82,74,74,83,84,83,84,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,80,82,74,81,80,82,74,76,88,89,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,85,79,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,85,85,87,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,74,74,74,75,75,75,76,76,76,77,77,77,78,78,78,79,79,79,80,80,80,81,81,81,82,82,82,83,83,83,84,84,84,85,85,85,86,86,86,87,87,87,88,88,88,89,89,89,90,90,90,91,91,91,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,88,89,88,89,78,90,91,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,85,78,85,88,89,90,91,79,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,79,86,86,88,89,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,87,78,168,169,170,169,171,172,168,170,169,172,173,174,171,169,170,169,173,174,170,170,169,170,169,175,176,177,177,176,177,175,175,176,177,177,176,177,177,176,177,175,176,177,176,177,176,177,110,112,113,0,99,0,100,112,93,98,99,104,95,109,101,97,0,106,0,112,113,99,99,103,112,113,99,112,113,0,100,97,97,97,112,113,0,100,0,100,0,100,103,97,111,107,0,109,99,99,99,0,100,103,97,97,92,93,112,113,97,92,93,99,103,103,99,105,99,105,102,104,0,0,106,0,106,112,113,112,113,112,113,0,106,112,113,112,113,99,99,92,97,0,100,0,0,100,0,0,0,106,0,0,0,100,0,0,100,0,0,0,100,112,113,100,100,106,112,113,112,113,107,112,113,0,99,110,108,101,0,0,97,97,96,0,0,103,108,97,97,97,112,113,112,113,101,101,101,92,0,97,96,109,111,97,112,113,112,113,112,113,99,0,0,99,0,100,0,112,113,108,0,0,98,0,99,0,0,95,92,112,113,103,0,100,92,92,117,117,118,117,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,131,116,115,116,115,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,131,114,119,120,122,123,124,125,119,120,94,94,133,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,124,117,118,117,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,92,92,92,93,93,93,94,94,94,95,95,95,96,96,96,97,97,97,98,98,98,99,99,99,100,100,100,101,101,101,102,102,102,103,103,103,104,104,104,105,105,105,106,106,106,107,107,107,108,108,108,109,109,109,110,110,110,111,111,111,112,112,112,114,114,114,115,115,115,116,116,116,117,117,117,118,118,118,119,119,119,120,120,120,121,121,121,124,124,124,125,125,125,126,126,126,127,127,127,129,129,129,132,132,132,133,94,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,122,123,128,134,135,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,129,122,123,124,125,134,130,117,118,117,118,117,118,117,118,117,118,117,118,130,117,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,114,114,122,123,131,94,129,130,117,130,117,118,117,118,131,130,94,127,132,129,127,132,117,117,131,94,128,126,133,126,94,131,130,114,114,117,131,119,120,121,122,123,124,125,129,130,117,117,122,123,131,94,94,123,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,116,115,131,131,114,117,122,123,127,129,127,127,122,123,130,130,133,117,129,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,94,122,123,124,125,132,134,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,94,94,178,178,178,179,179,180,181,178,178,182,183,184,184,184,185,182,186,187,188,178,182,183,189,185,190,191,192,193,194,195,196,189,185,187,188,178,182,183,185,190,186,186,184,179,179,197,179,182,183,185,195,192,196,193,198,184,139,139,139,139,0,0,0,0,140,140,139,139,139,139,140,139,140,141,142,139,140,141,142,139,140,141,142,139,140,141,142,139,140,141,142,139,140,141,142,139,139,139,140,140,140,141,141,141,142,142,142,139,140,141,142,139,140,141,142,141,142,139,140,141,142,142,141,142,141,141,139,140,141,142,139,140,141,142,141,142,139,140,141,142,139,140,141,142,139,140,141,142,0,199,199,0,199,145,199,145,199,145,199,145,145,145,145,145,199,145,199,145,199,145,150,150,0,150,0,146,146,146,146,146,146,146,146,150,146,150,146,150,150,150,150,146,150,146,150,146,150,146,146,146,146,150,146,150,146,150,146],"f":"````````````````````````````````{ce{}{}}0000000000000000000000000{bb}{dd}{ff}{hh}{jj}{ll}{nn}{A`A`}{AbAb}{AdAd}{AfAf}{{ce}Ah{}{}}0000000000````{{}A`}{{}Ab}````{c{{Aj{b}}}Al}{c{{Aj{d}}}Al}{c{{Aj{h}}}Al}{c{{Aj{j}}}Al}{c{{Aj{l}}}Al}{c{{Aj{n}}}Al}{c{{Aj{A`}}}Al}{c{{Aj{Ab}}}Al}{c{{Aj{Ad}}}Al}{c{{Aj{Af}}}Al}`{{hh}An}{{jj}An}{{ll}An}{{nn}An}{{A`A`}An}{{AbAb}An}{{AdAd}An}{{AfAf}An}{{ce}An{}{}}00000000000```{{B`Bb}Bd}{{BfBb}Bd}0{{dBb}Bd}{{hBb}Bd}{{jBb}Bd}{{lBb}Bd}{{nBb}Bd}{{A`Bb}Bd}{{AbBb}Bd}{{AdBb}Bd}{{AfBb}Bd}{cc{}}0{BhBf}11111111111`{ce{}{}}000000000000{{{Bj{c}}}{{Bj{Bl}}}{Bn{Cd{{Cb{C`}}}}}}`{cB`{Bn{Cd{{Cb{C`}}}}}}{{l{Bj{Bl}}{Bj{Bl}}{Bj{A`}}{Bj{Ab}}}h}{{l{Bj{Bl}}{Bj{Bl}}{Bj{A`}}{Bj{Ab}}}j}``{{hCf}Ah}```````{{bc}AjCh}{{dc}AjCh}{{hc}AjCh}{{jc}AjCh}{{lc}AjCh}{{nc}AjCh}{{A`c}AjCh}{{Abc}AjCh}{{Adc}AjCh}{{Afc}AjCh}{Bf{{Bj{Cj}}}}`````````{ce{}{}}0000000000{cBl{}}0``{c{{Aj{e}}}{}{}}0000000000000000000000000``{cCl{}}000000000000`````````````````````````````````````````````````````````````````````````````````````````````````````````````33333333333333333333333333{CnCn}{D`D`}{CfCf}{DbDb}{DdDd}{DfDf}{DhDh}{DjDj}{DlDl}{DnDn}{E`E`}{EbEb}{EdEd}{{ce}Ah{}{}}000000000000`{Dl{{Bj{Ef}}}}```{{}Cn}{{}Dd}{c{{Aj{Cn}}}Al}{c{{Aj{D`}}}Al}{c{{Aj{Cf}}}Al}{c{{Aj{Db}}}Al}{c{{Aj{Df}}}Al}{c{{Aj{Dh}}}Al}{c{{Aj{Dj}}}Al}{c{{Aj{Dl}}}Al}{c{{Aj{Dn}}}Al}{c{{Aj{E`}}}Al}{c{{Aj{Eb}}}Al}{c{{Aj{Ed}}}Al}{{CnCn}An}{{D`D`}An}{{CfCf}An}{{DhDh}An}{{DjDj}An}{{DlDl}An}{{DnDn}An}{{E`E`}An}{{EbEb}An}{{EdEd}An}{{ce}An{}{}}00000000000000000000000`{{CnBb}Bd}{{D`Bb}Bd}{{CfBb}Bd}{{DbBb}Bd}{{DdBb}Bd}{{DfBb}Bd}0{{DhBb}Bd}{{DjBb}Bd}{{DlBb}Bd}{{DnBb}Bd}{{E`Bb}Bd}{{EbBb}Bd}{{EdBb}Bd}{cc{}}{DlCn}1111{CnDd}2{CnDf}3333333``{EhDd}{CfDd}{DbDd}`{ce{}{}}000000000000{{DdDd}An}```````{{Cnc}AjCh}{{D`c}AjCh}{{Cfc}AjCh}{{Dbc}AjCh}{{Dfc}AjCh}{{Dhc}AjCh}{{Djc}AjCh}{{Dlc}AjCh}{{Dnc}AjCh}{{E`c}AjCh}{{Ebc}AjCh}{{Edc}AjCh}{{EhEj}Ah}{{CfEj}Ah}{{DbEj}Ah}```{ce{}{}}000000000000{cBl{}}{c{{Aj{e}}}{}{}}0000000000000000000000000{cCl{}}000000000000{{EjDl}Cf}{{EjDlEl}Cf}````````````````````````````````````````````````5555555555555555555555{EnEn}{F`F`}{FbFb}{FdFd}{FfFf}{FhFh}{FjFj}{FlFl}{FnFn}{G`G`}{GbGb}{{ce}Ah{}{}}0000000000`{c{{Aj{En}}}Al}{c{{Aj{F`}}}Al}{c{{Aj{Fb}}}Al}{c{{Aj{Fd}}}Al}{c{{Aj{Ff}}}Al}{c{{Aj{Fh}}}Al}{c{{Aj{Fj}}}Al}{c{{Aj{Fl}}}Al}{c{{Aj{Fn}}}Al}{c{{Aj{G`}}}Al}{c{{Aj{Gb}}}Al}````{{EnEn}An}{{F`F`}An}{{FbFb}An}{{FdFd}An}{{FfFf}An}{{FhFh}An}{{FjFj}An}{{FlFl}An}{{FnFn}An}{{G`G`}An}{{GbGb}An}{{ce}An{}{}}00000000000000000000000000000000{{EnBb}Bd}{{F`Bb}Bd}{{FbBb}Bd}{{FdBb}Bd}{{FfBb}Bd}{{FhBb}Bd}{{FjBb}Bd}{{FlBb}Bd}{{FnBb}Bd}{{G`Bb}Bd}{{GbBb}Bd}{cc{}}0000000000`{ce{}{}}0000000000```````````````{{Enc}AjCh}{{F`c}AjCh}{{Fbc}AjCh}{{Fdc}AjCh}{{Ffc}AjCh}{{Fhc}AjCh}{{Fjc}AjCh}{{Flc}AjCh}{{Fnc}AjCh}{{G`c}AjCh}{{Gbc}AjCh}````;;;;;;;;;;;`{c{{Aj{e}}}{}{}}000000000000000000000{cCl{}}0000000000````````````````````````````````````````````````````````````````````````````================================{GdGd}{GfGf}{GhGh}{GjGj}{GlGl}{GnGn}{H`H`}{HbHb}{HdHd}{HfHf}{HhHh}{HjHj}{HlHl}{HnHn}{I`I`}{IbIb}{{ce}Ah{}{}}000000000000000{c{{Aj{Gd}}}Al}{c{{Aj{Gf}}}Al}{c{{Aj{Gh}}}Al}{c{{Aj{Gj}}}Al}{c{{Aj{Gl}}}Al}{c{{Aj{Gn}}}Al}{c{{Aj{H`}}}Al}{c{{Aj{Hb}}}Al}{c{{Aj{Hd}}}Al}{c{{Aj{Hf}}}Al}{c{{Aj{Hh}}}Al}{c{{Aj{Hj}}}Al}{c{{Aj{Hl}}}Al}{c{{Aj{Hn}}}Al}{c{{Aj{I`}}}Al}{c{{Aj{Ib}}}Al}``{{GdGd}An}{{GfGf}An}{{GhGh}An}{{GjGj}An}{{GlGl}An}{{GnGn}An}{{H`H`}An}{{HbHb}An}{{HdHd}An}{{HfHf}An}{{HhHh}An}{{HjHj}An}{{HlHl}An}{{HnHn}An}{{I`I`}An}{{IbIb}An}{{ce}An{}{}}00000000000000000000000000000000000000000000000{{GdBb}Bd}{{GfBb}Bd}{{GhBb}Bd}{{GjBb}Bd}{{GlBb}Bd}{{GnBb}Bd}{{H`Bb}Bd}{{HbBb}Bd}{{HdBb}Bd}{{HfBb}Bd}{{HhBb}Bd}{{HjBb}Bd}{{HlBb}Bd}{{HnBb}Bd}{{I`Bb}Bd}{{IbBb}Bd}``{cc{}}000000000000000``{ce{}{}}000000000000000````````````{{Gdc}AjCh}{{Gfc}AjCh}{{Ghc}AjCh}{{Gjc}AjCh}{{Glc}AjCh}{{Gnc}AjCh}{{H`c}AjCh}{{Hbc}AjCh}{{Hdc}AjCh}{{Hfc}AjCh}{{Hhc}AjCh}{{Hjc}AjCh}{{Hlc}AjCh}{{Hnc}AjCh}{{I`c}AjCh}{{Ibc}AjCh}`````{ce{}{}}000000000000000{c{{Aj{e}}}{}{}}0000000000000000000000000000000{cCl{}}000000000000000````````````````````````````````````````````````````````````````````````222222222222222222222222222222222222{IdId}{IfIf}{IhIh}{IjIj}{IlIl}{InIn}{J`J`}{JbJb}{JdJd}{JfJf}{JhJh}{JjJj}{JlJl}{JnJn}{K`K`}{KbKb}{KdKd}{KfKf}{{ce}Ah{}{}}00000000000000000``{c{{Aj{Id}}}Al}{c{{Aj{If}}}Al}{c{{Aj{Ih}}}Al}{c{{Aj{Ij}}}Al}{c{{Aj{Il}}}Al}{c{{Aj{In}}}Al}{c{{Aj{J`}}}Al}{c{{Aj{Jb}}}Al}{c{{Aj{Jd}}}Al}{c{{Aj{Jf}}}Al}{c{{Aj{Jh}}}Al}{c{{Aj{Jj}}}Al}{c{{Aj{Jl}}}Al}{c{{Aj{Jn}}}Al}{c{{Aj{K`}}}Al}{c{{Aj{Kb}}}Al}{c{{Aj{Kd}}}Al}{c{{Aj{Kf}}}Al}```{{IdId}An}{{IfIf}An}{{IhIh}An}{{IjIj}An}{{IlIl}An}{{InIn}An}{{J`J`}An}{{JbJb}An}{{JdJd}An}{{JfJf}An}{{JhJh}An}{{JjJj}An}{{JlJl}An}{{JnJn}An}{{K`K`}An}{{KbKb}An}{{KdKd}An}{{KfKf}An}{{ce}An{}{}}00000000000000000000000000000000000000000000000000000{{IdBb}Bd}{{IfBb}Bd}{{IhBb}Bd}{{IjBb}Bd}{{IlBb}Bd}{{InBb}Bd}{{J`Bb}Bd}{{JbBb}Bd}{{JdBb}Bd}{{JfBb}Bd}{{JhBb}Bd}{{JjBb}Bd}{{JlBb}Bd}{{JnBb}Bd}{{K`Bb}Bd}{{KbBb}Bd}{{KdBb}Bd}{{KfBb}Bd}{cc{}}00000000000000000```````{ce{}{}}00000000000000000````````{{Idc}AjCh}{{Ifc}AjCh}{{Ihc}AjCh}{{Ijc}AjCh}{{Ilc}AjCh}{{Inc}AjCh}{{J`c}AjCh}{{Jbc}AjCh}{{Jdc}AjCh}{{Jfc}AjCh}{{Jhc}AjCh}{{Jjc}AjCh}{{Jlc}AjCh}{{Jnc}AjCh}{{K`c}AjCh}{{Kbc}AjCh}{{Kdc}AjCh}{{Kfc}AjCh}`````{ce{}{}}00000000000000000{c{{Aj{e}}}{}{}}00000000000000000000000000000000000{cCl{}}00000000000000000````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222`````{KhKh}{KjKj}{KlKl}{KnKn}{L`L`}{LbLb}{LdLd}{LfLf}{LhLh}{LjLj}{LlLl}{LnLn}{M`M`}{MbMb}{MdMd}{MfMf}{MhMh}{MjMj}{MlMl}{MnMn}{N`N`}{NbNb}{NdNd}{NfNf}{NhNh}{NjNj}{NlNl}{NnNn}{O`O`}{ObOb}{OdOd}{OfOf}{OhOh}{OjOj}{OlOl}{OnOn}{A@`A@`}{A@bA@b}{A@dA@d}{A@fA@f}{A@hA@h}{A@jA@j}{A@lA@l}{A@nA@n}{{ce}Ah{}{}}0000000000000000000000000000000000000000000`````````````{c{{Aj{Kh}}}Al}{c{{Aj{Kj}}}Al}{c{{Aj{Kl}}}Al}{c{{Aj{Kn}}}Al}{c{{Aj{L`}}}Al}{c{{Aj{Lb}}}Al}{c{{Aj{Ld}}}Al}{c{{Aj{Lf}}}Al}{c{{Aj{Lh}}}Al}{c{{Aj{Lj}}}Al}{c{{Aj{Ll}}}Al}{c{{Aj{Ln}}}Al}{c{{Aj{M`}}}Al}{c{{Aj{Mb}}}Al}{c{{Aj{Md}}}Al}{c{{Aj{Mf}}}Al}{c{{Aj{Mh}}}Al}{c{{Aj{Mj}}}Al}{c{{Aj{Ml}}}Al}{c{{Aj{Mn}}}Al}{c{{Aj{N`}}}Al}{c{{Aj{Nb}}}Al}{c{{Aj{Nd}}}Al}{c{{Aj{Nf}}}Al}{c{{Aj{Nh}}}Al}{c{{Aj{Nj}}}Al}{c{{Aj{Nl}}}Al}{c{{Aj{Nn}}}Al}{c{{Aj{O`}}}Al}{c{{Aj{Ob}}}Al}{c{{Aj{Od}}}Al}{c{{Aj{Of}}}Al}{c{{Aj{Oh}}}Al}{c{{Aj{Oj}}}Al}{c{{Aj{Ol}}}Al}{c{{Aj{On}}}Al}{c{{Aj{A@`}}}Al}{c{{Aj{A@b}}}Al}{c{{Aj{A@d}}}Al}{c{{Aj{A@f}}}Al}{c{{Aj{A@h}}}Al}{c{{Aj{A@j}}}Al}{c{{Aj{A@l}}}Al}{c{{Aj{A@n}}}Al}````{{KhKh}An}{{KjKj}An}{{KlKl}An}{{KnKn}An}{{L`L`}An}{{LbLb}An}{{LdLd}An}{{LfLf}An}{{LhLh}An}{{LjLj}An}{{LlLl}An}{{LnLn}An}{{M`M`}An}{{MbMb}An}{{MdMd}An}{{MfMf}An}{{MhMh}An}{{MjMj}An}{{MlMl}An}{{MnMn}An}{{N`N`}An}{{NbNb}An}{{NdNd}An}{{NfNf}An}{{NhNh}An}{{NjNj}An}{{NlNl}An}{{NnNn}An}{{O`O`}An}{{ObOb}An}{{OdOd}An}{{OfOf}An}{{OhOh}An}{{OjOj}An}{{OlOl}An}{{OnOn}An}{{A@`A@`}An}{{A@bA@b}An}{{A@dA@d}An}{{A@fA@f}An}{{A@hA@h}An}{{A@jA@j}An}{{A@lA@l}An}{{A@nA@n}An}{{ce}An{}{}}00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000``{{KhBb}Bd}{{KjBb}Bd}{{KlBb}Bd}{{KnBb}Bd}{{L`Bb}Bd}{{LbBb}Bd}{{LdBb}Bd}{{LfBb}Bd}{{LhBb}Bd}{{LjBb}Bd}{{LlBb}Bd}{{LnBb}Bd}{{M`Bb}Bd}{{MbBb}Bd}{{MdBb}Bd}{{MfBb}Bd}{{MhBb}Bd}{{MjBb}Bd}{{MlBb}Bd}{{MnBb}Bd}{{N`Bb}Bd}{{NbBb}Bd}{{NdBb}Bd}{{NfBb}Bd}{{NhBb}Bd}{{NjBb}Bd}{{NlBb}Bd}{{NnBb}Bd}{{O`Bb}Bd}{{ObBb}Bd}{{OdBb}Bd}{{OfBb}Bd}{{OhBb}Bd}{{OjBb}Bd}{{OlBb}Bd}{{OnBb}Bd}{{A@`Bb}Bd}{{A@bBb}Bd}{{A@dBb}Bd}{{A@fBb}Bd}{{A@hBb}Bd}{{A@jBb}Bd}{{A@lBb}Bd}{{A@nBb}Bd}`````{cc{}}0000000000000000000000000000000000000000000`````````````````````{ce{}{}}0000000000000000000000000000000000000000000````````````````{{Kh{Bj{AA`}}{Bj{C`}}{Bj{Af}}{Bj{AAb}}{Bj{AAd}}{Bj{{Cb{C`}}}}{Bj{{Cb{C`}}}}}Kl}`````````````````````````````````````{{Khc}AjCh}{{Kjc}AjCh}{{Klc}AjCh}{{Knc}AjCh}{{L`c}AjCh}{{Lbc}AjCh}{{Ldc}AjCh}{{Lfc}AjCh}{{Lhc}AjCh}{{Ljc}AjCh}{{Llc}AjCh}{{Lnc}AjCh}{{M`c}AjCh}{{Mbc}AjCh}{{Mdc}AjCh}{{Mfc}AjCh}{{Mhc}AjCh}{{Mjc}AjCh}{{Mlc}AjCh}{{Mnc}AjCh}{{N`c}AjCh}{{Nbc}AjCh}{{Ndc}AjCh}{{Nfc}AjCh}{{Nhc}AjCh}{{Njc}AjCh}{{Nlc}AjCh}{{Nnc}AjCh}{{O`c}AjCh}{{Obc}AjCh}{{Odc}AjCh}{{Ofc}AjCh}{{Ohc}AjCh}{{Ojc}AjCh}{{Olc}AjCh}{{Onc}AjCh}{{A@`c}AjCh}{{A@bc}AjCh}{{A@dc}AjCh}{{A@fc}AjCh}{{A@hc}AjCh}{{A@jc}AjCh}{{A@lc}AjCh}{{A@nc}AjCh}```````````````````{ce{}{}}0000000000000000000000000000000000000000000```````{c{{Aj{e}}}{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{cCl{}}0000000000000000000000000000000000000000000`{{Kh{Bj{AA`}}{Bj{AAd}}{Bj{{Cb{C`}}}}{Bj{{Cb{C`}}}}}Kl}```````````````````````````````````````````````````````````````````````33333333{AAfAAf}{AAhAAh}{AAjAAj}{AAlAAl}{{ce}Ah{}{}}000{c{{Aj{AAf}}}Al}{c{{Aj{AAh}}}Al}{c{{Aj{AAj}}}Al}{c{{Aj{AAl}}}Al}{{AAfAAf}An}{{AAhAAh}An}{{AAjAAj}An}{{AAlAAl}An}{{ce}An{}{}}00000000000{{AAfBb}Bd}{{AAhBb}Bd}{{AAjBb}Bd}{{AAlBb}Bd}{cc{}}000``{ce{}{}}000`````{{AAfc}AjCh}{{AAhc}AjCh}{{AAjc}AjCh}{{AAlc}AjCh}4444``{c{{Aj{e}}}{}{}}0000000{cCl{}}000````666677666{{{AB`{AAn}}}{{Aj{ABb{AB`{Cj}}}}}}{ABb{{Bj{c}}}{}}`333322`````{{ABdc}{{ABf{Ah}}}{ABhEh}}{{ABdDlEl}{{ABf{Ah}}}}{{ABdDlElABj}{{ABf{Ah}}}}{{ABdDl}{{ABf{Ah}}}}{{ABdDlABj}{{ABf{Ah}}}}4{{ABdcABj}{{ABf{Ah}}}{ABhEh}}>>>>{ABdAh}{{ABlABl}An}{{ce}An{}{}}00{ABd{{ABf{Ah}}}}{{ABlBb}Bd}{cc{}}0{ce{}{}}0{{Bl{Bj{Bl}}{Bj{Bl}}{Bj{Bl}}ABjjDd{AB`{ABn}}}ABd}4{ABdABj}{c{{Aj{e}}}{}{}}000{cCl{}}0{ABd{{AB`{ABn}}}}","D":"BBj","p":[[5,"Qlog",0],[5,"QlogSeq",0],[6,"ImportanceLogLevel",0],[5,"Trace",0],[5,"TraceSeq",0],[5,"VantagePoint",0],[6,"VantagePointType",0],[5,"Configuration",0],[5,"CommonFields",0],[6,"TokenType",0],[5,"Token",0],[1,"unit"],[6,"Result",2935],[10,"Deserializer",2936],[1,"bool"],[5,"HexSlice",0],[5,"Formatter",2937],[8,"Result",2937],[6,"Error",0],[5,"Error",2938],[6,"Option",2939],[5,"String",2940],[10,"Sized",2941],[1,"u8"],[1,"slice"],[10,"AsRef",2942],[5,"Event",257],[10,"Serializer",2943],[10,"Error",2944],[5,"TypeId",2945],[6,"EventType",257],[6,"TimeFormat",257],[5,"JsonEvent",257],[6,"EventImportance",257],[6,"EventCategory",257],[6,"DataRecipient",257],[5,"RawInfo",257],[6,"EventData",257],[6,"GenericEventType",257],[6,"ConnectionErrorCode",257],[6,"ApplicationErrorCode",257],[6,"CryptoError",257],[1,"usize"],[10,"Eventable",257],[1,"f32"],[8,"ExData",257],[6,"TransportOwner",611],[6,"ConnectionState",611],[6,"ConnectivityEventType",611],[6,"ConnectionClosedTrigger",611],[5,"ServerListening",611],[5,"ConnectionStarted",611],[5,"ConnectionClosed",611],[5,"ConnectionIdUpdated",611],[5,"SpinBitUpdated",611],[5,"ConnectionStateUpdated",611],[5,"MtuUpdated",611],[6,"H3Owner",861],[6,"H3StreamType",861],[6,"H3PushDecision",861],[6,"H3PriorityTargetStreamType",861],[6,"Http3EventType",861],[6,"ApplicationError",861],[5,"HttpHeader",861],[5,"Setting",861],[6,"Http3FrameTypeName",861],[6,"Http3Frame",861],[5,"H3ParametersSet",861],[5,"H3ParametersRestored",861],[5,"H3StreamTypeSet",861],[5,"H3FrameCreated",861],[5,"H3FrameParsed",861],[5,"H3PushResolved",861],[6,"QpackEventType",1249],[6,"QpackOwner",1249],[6,"QpackStreamState",1249],[6,"QpackUpdateType",1249],[5,"QpackDynamicTableEntry",1249],[5,"QpackHeaderBlockPrefix",1249],[6,"QpackInstructionTypeName",1249],[6,"QpackTableType",1249],[6,"QPackInstruction",1249],[6,"QpackHeaderBlockRepresentationTypeName",1249],[6,"QpackHeaderBlockRepresentation",1249],[5,"QpackStateUpdated",1249],[5,"QpackStreamStateUpdated",1249],[5,"QpackDynamicTableUpdated",1249],[5,"QpackHeadersEncoded",1249],[5,"QpackHeadersDecoded",1249],[5,"QpackInstructionCreated",1249],[5,"QpackInstructionParsed",1249],[6,"PacketType",1683],[6,"PacketNumberSpace",1683],[5,"PacketHeader",1683],[6,"StreamType",1683],[6,"StreamSide",1683],[6,"StreamState",1683],[6,"ErrorSpace",1683],[6,"TransportError",1683],[6,"TransportEventType",1683],[6,"PacketSentTrigger",1683],[6,"PacketReceivedTrigger",1683],[6,"PacketDroppedTrigger",1683],[6,"PacketBufferedTrigger",1683],[6,"SecurityEventType",1683],[6,"RecoveryEventType",1683],[6,"CongestionStateUpdatedTrigger",1683],[6,"PacketLostTrigger",1683],[6,"LossTimerEventType",1683],[6,"TimerType",1683],[6,"AckedRanges",1683],[6,"QuicFrameTypeName",1683],[6,"QuicFrame",1683],[5,"PreferredAddress",1683],[5,"VersionInformation",1683],[5,"AlpnInformation",1683],[5,"TransportParametersSet",1683],[5,"TransportParametersRestored",1683],[5,"DatagramsReceived",1683],[5,"DatagramsSent",1683],[5,"DatagramDropped",1683],[5,"PacketReceived",1683],[5,"PacketSent",1683],[5,"PacketDropped",1683],[5,"PacketBuffered",1683],[5,"PacketsAcked",1683],[5,"StreamStateUpdated",1683],[5,"FramesProcessed",1683],[5,"DataMoved",1683],[5,"RecoveryParametersSet",1683],[5,"MetricsUpdated",1683],[5,"CongestionStateUpdated",1683],[5,"LossTimerUpdated",1683],[5,"PacketLost",1683],[5,"MarkedForRetransmit",1683],[1,"u64"],[1,"u16"],[1,"u32"],[6,"KeyType",2784],[6,"KeyUpdateOrRetiredTrigger",2784],[5,"KeyUpdated",2784],[5,"KeyDiscarded",2784],[10,"BufRead",2946],[5,"Box",2947],[5,"QlogSeqReader",2876],[5,"QlogStreamer",2898],[8,"Result",0],[10,"Serialize",2943],[5,"Instant",2948],[6,"StreamerState",2898],[10,"Write",2946],[15,"ConnectionError",600],[15,"ApplicationError",600],[15,"InternalError",600],[15,"InternalWarning",600],[15,"Marker",600],[15,"Message",600],[15,"Unknown",1235],[15,"Headers",1235],[15,"PushPromise",1235],[15,"Goaway",1235],[15,"Reserved",1235],[15,"PriorityUpdate",1235],[15,"CancelPush",1235],[15,"MaxPushId",1235],[15,"Data",1235],[15,"Settings",1235],[15,"SetDynamicTableCapacityInstruction",1637],[15,"InsertWithoutNameReferenceInstruction",1637],[15,"InsertWithNameReferenceInstruction",1637],[15,"InsertCountIncrementInstruction",1637],[15,"DuplicateInstruction",1637],[15,"HeaderAcknowledgementInstruction",1637],[15,"StreamCancellationInstruction",1637],[15,"IndexedHeaderField",1660],[15,"LiteralHeaderFieldWithName",1660],[15,"LiteralHeaderFieldWithoutName",1660],[15,"Ack",2728],[15,"NewConnectionId",2728],[15,"PathChallenge",2728],[15,"PathResponse",2728],[15,"ResetStream",2728],[15,"StopSending",2728],[15,"ConnectionClose",2728],[15,"Stream",2728],[15,"Unknown",2728],[15,"Padding",2728],[15,"Ping",2728],[15,"Crypto",2728],[15,"Datagram",2728],[15,"DataBlocked",2728],[15,"StreamDataBlocked",2728],[15,"StreamsBlocked",2728],[15,"MaxData",2728],[15,"MaxStreamData",2728],[15,"MaxStreams",2728],[15,"RetireConnectionId",2728],[15,"NewToken",2728],[6,"Event",2876]],"b":[[125,"impl-Debug-for-Error"],[126,"impl-Display-for-Error"],[475,"impl-Debug-for-EventCategory"],[476,"impl-Display-for-EventCategory"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAGIKIwABAAUACgADABAAAAASAAIAFgByAIsAAACXAAAApQACAKoAAQCtAPQAowFBAOYBAADrAQAA7QEAAPUBBQAJAk0AWQKiAAcDAAATAzoBXgQBAHAEYQHkBQYA/QUQAzoJFAB7CQ8AjAkbAakKbgAcCwEAIgsaAD4LAABBCwMASQsOAF8LCABpCwAAcAsGAA=="}],\
+["quiche",{"t":"PPPPPPPPFPGFFFPPPPPPPPGPPPPPPPPFPPPPPPPPPPPSSPPPPPSGFPPGPFPIPPFPGFFFPPPPPPPFGPPPGPPHOOONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHOONNNNNONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNCNOOOOOOONNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNONNOOOOOOONONNOHNNNNNOONNONONNNNNNONNNONOOOOOONNNOOHOOOONNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONOONNNNNNOONNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNONOHONNSPPPFPPFPPPGGPPPPPPPPPFFPPPPPPPPPKPPFPPPPPPPPPIPPPPPPPPGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNOO","n":["AeadLimitReached","ApplicationError","BBR","BBR2","Base","BufferTooShort","CUBIC","Closed","Config","CongestionControl","CongestionControlAlgorithm","Connection","ConnectionError","ConnectionId","ConnectionIdLimitError","ConnectionRefused","Core","CryptoBufferExceeded","CryptoBufferExceeded","CryptoFail","Done","Err","Error","Extra","FailedValidation","FinalSize","FinalSizeError","FlowControl","FlowControlError","FrameEncodingError","Handshake","Header","IdLimit","Initial","InternalError","InvalidFrame","InvalidPacket","InvalidState","InvalidStreamState","InvalidToken","InvalidTransportParam","KeyUpdate","KeyUpdateError","MAX_CONN_ID_LEN","MIN_CLIENT_INITIAL_LEN","New","NoError","NoViablePath","Ok","OutOfIdentifiers","PROTOCOL_VERSION","PathEvent","PathStats","PeerMigrated","ProtocolViolation","QlogLevel","Read","RecvInfo","Reno","Result","Retry","ReusedSourceConnectionId","SendInfo","Short","Shutdown","SocketAddrIter","Stats","StreamIter","StreamLimit","StreamLimitError","StreamReset","StreamStateError","StreamStopped","TlsFail","TransportParameterError","TransportParams","Type","UnknownVersion","Validated","VersionNegotiation","WireErrorCode","Write","ZeroRTT","accept","ack_delay_exponent","active","active_conn_id_limit","active_scids","application_proto","as_mut","as_ref","at","available_dcids","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","close","connect","cwnd","dcid","default","default","default","default","default","delivery_rate","deref","destination_id","dgram_max_writable_len","dgram_purge_outgoing","dgram_recv","dgram_recv_front_len","dgram_recv_peek","dgram_recv_queue_byte_size","dgram_recv_queue_len","dgram_recv_vec","dgram_send","dgram_send_queue_byte_size","dgram_send_queue_len","dgram_send_vec","disable_active_migration","discover_pmtu","enable_dgram","enable_early_data","enable_hystart","enable_pacing","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","error_code","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_ref","from_slice","from_str","from_vec","grease","h3","hash","initial_max_data","initial_max_stream_data_bidi_local","initial_max_stream_data_bidi_remote","initial_max_stream_data_uni","initial_max_streams_bidi","initial_max_streams_uni","initial_source_connection_id","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","into_iter","into_owned","is_app","is_closed","is_dgram_recv_queue_full","is_dgram_send_queue_full","is_draining","is_established","is_in_early_data","is_path_validated","is_readable","is_resumed","is_server","is_timed_out","len","len","load_cert_chain_from_pem_file","load_priv_key_from_pem_file","load_verify_locations_from_directory","load_verify_locations_from_file","local_addr","local_error","log_keys","lost","lost","lost_bytes","lost_bytes","max_ack_delay","max_datagram_frame_size","max_idle_timeout","max_send_udp_payload_size","max_udp_payload_size","migrate","migrate_source","min_rtt","negotiate_version","new","new_scid","next","next","on_timeout","original_destination_connection_id","path_challenge_rx_count","path_event_next","path_stats","paths_count","paths_iter","peer_addr","peer_cert","peer_cert_chain","peer_error","peer_streams_left_bidi","peer_streams_left_uni","peer_transport_params","pmtu","probe_path","qlog_streamer","readable","reason","recv","recv","recv","recv_bytes","recv_bytes","reset_stream_count_local","reset_stream_count_remote","retire_dcid","retired_scid_next","retired_scids","retrans","retrans","retry","retry_source_connection_id","rtt","rttvar","scid","scids_left","send","send_ack_eliciting","send_ack_eliciting_on_path","send_on_path","send_quantum","send_quantum_on_path","sent","sent","sent_bytes","sent_bytes","server_name","session","set_ack_delay_exponent","set_active_connection_id_limit","set_application_protos","set_application_protos_wire_format","set_cc_algorithm","set_cc_algorithm_name","set_disable_active_migration","set_disable_dcid_reuse","set_initial_congestion_window_packets","set_initial_max_data","set_initial_max_stream_data_bidi_local","set_initial_max_stream_data_bidi_remote","set_initial_max_stream_data_uni","set_initial_max_streams_bidi","set_initial_max_streams_uni","set_keylog","set_max_ack_delay","set_max_connection_window","set_max_idle_timeout","set_max_pacing_rate","set_max_recv_udp_payload_size","set_max_send_udp_payload_size","set_max_stream_window","set_path_challenge_recv_max_queue_len","set_qlog","set_qlog_with_level","set_session","set_stateless_reset_token","set_ticket_key","source","source_id","source_ids","stateless_reset_token","stats","stopped_stream_count_local","stopped_stream_count_remote","stream_capacity","stream_finished","stream_priority","stream_readable","stream_readable_next","stream_recv","stream_retrans_bytes","stream_retrans_bytes","stream_send","stream_shutdown","stream_writable","stream_writable_next","timeout","timeout_instant","to","to","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_qlog","to_string","token","trace_id","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","ty","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","validation_state","verify_peer","version","version_is_supported","versions","with_boring_ssl_ctx_builder","writable","APPLICATION_PROTOCOL","BufferTooShort","ClosedCriticalStream","ClosedCriticalStream","Config","ConnectError","ConnectError","Connection","Data","Done","Err","Error","Event","ExcessiveLoad","ExcessiveLoad","Finished","FrameError","FrameError","FrameUnexpected","FrameUnexpected","GeneralProtocolError","GoAway","Header","HeaderRef","Headers","IdError","IdError","InternalError","InternalError","MessageError","MessageError","MissingSettings","MissingSettings","NameValue","NoError","Ok","Priority","PriorityUpdate","QpackDecompressionFailed","RequestCancelled","RequestCancelled","RequestIncomplete","RequestIncomplete","RequestRejected","RequestRejected","Reset","Result","SettingsError","SettingsError","StreamBlocked","StreamCreationError","StreamCreationError","TransportError","VersionFallback","VersionFallback","WireErrorCode","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","default","dgram_enabled_by_peer","enable_extended_connect","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","extended_connect_enabled_by_peer","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","grease_value","into","into","into","into","into","into","into","into","name","name","name","new","new","new","new","peer_settings_raw","poll","recv_body","send_body","send_goaway","send_priority_update_for_request","send_request","send_response","send_response_with_priority","set_additional_settings","set_max_field_section_size","set_qpack_blocked_streams","set_qpack_max_table_capacity","source","take_last_priority_update","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","value","value","value","with_transport","has_body","list"],"q":[[0,"quiche"],[519,"quiche::h3"],[704,"quiche::h3::Event"],[706,"core::option"],[707,"core::net::socket_addr"],[708,"boring::ssl"],[709,"core::ops::function"],[710,"alloc::vec"],[711,"core::fmt"],[712,"core::fmt"],[713,"core::result"],[714,"core::hash"],[715,"core::iter::traits::iterator"],[716,"qlog::streamer"],[717,"std::io"],[718,"alloc::boxed"],[719,"alloc::string"],[720,"core::error"],[721,"core::time"],[722,"std::time"],[723,"qlog::events::connectivity"],[724,"qlog::events"],[725,"core::any"],[726,"boring::ssl"]],"i":[63,63,21,21,46,11,21,19,0,11,0,0,0,0,63,63,46,63,11,11,11,6,0,46,19,11,63,11,63,63,17,0,11,17,63,11,11,11,11,63,11,11,63,0,0,19,63,63,6,11,0,0,0,19,63,0,31,0,21,0,17,19,0,17,0,0,0,0,11,63,11,63,11,11,63,0,0,11,19,17,0,31,17,0,16,20,16,5,5,5,1,13,5,63,46,4,5,1,11,12,13,14,31,15,16,17,18,19,26,20,21,27,63,46,4,5,1,11,12,13,14,31,15,16,17,18,19,26,20,21,27,1,11,12,13,14,15,16,17,18,19,20,21,1,11,12,13,14,15,16,17,18,19,20,21,5,0,20,18,1,15,16,26,27,20,1,5,5,5,5,5,5,5,5,5,5,5,5,5,16,4,4,4,4,4,1,11,12,13,14,31,16,17,18,19,21,1,1,1,11,11,11,12,12,12,13,13,13,14,14,14,31,31,31,17,17,17,18,18,18,19,19,19,21,21,21,14,1,11,11,12,13,14,15,16,17,18,19,20,21,63,46,4,5,1,1,11,11,12,13,14,31,15,16,17,18,19,26,20,21,27,12,13,1,18,21,1,4,0,1,16,16,16,16,16,16,16,63,46,4,5,1,11,12,13,14,31,15,16,17,18,19,26,20,21,27,26,27,1,14,5,5,5,5,5,5,5,5,5,5,5,26,27,4,4,4,4,20,5,4,15,20,15,20,16,16,16,5,16,5,5,20,0,4,5,26,27,5,16,15,5,5,15,5,20,5,5,5,5,5,5,20,5,5,5,14,5,15,20,15,20,15,15,5,5,5,15,20,0,16,20,20,18,5,5,5,5,5,5,5,15,20,15,20,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,4,4,4,4,4,4,4,4,5,5,5,4,4,11,5,5,16,5,15,15,5,5,5,5,5,5,15,20,5,5,5,5,5,5,12,13,1,11,12,13,14,15,16,17,18,19,20,21,16,11,18,5,63,46,4,5,1,11,12,13,14,31,15,16,17,18,19,26,20,21,27,63,46,4,5,1,11,12,13,14,31,15,16,17,18,19,26,20,21,27,18,63,46,4,5,1,11,12,13,14,31,15,16,17,18,19,26,20,21,27,20,4,18,0,18,4,5,0,54,64,54,0,64,54,0,57,54,62,0,0,64,54,57,64,54,64,54,64,57,0,0,57,64,54,64,54,64,54,64,54,0,64,62,0,57,54,64,54,64,54,64,54,57,0,64,54,54,64,54,54,64,54,0,64,60,59,54,55,56,57,58,64,60,59,54,55,56,57,58,54,55,56,57,54,55,56,57,58,59,60,54,55,56,57,58,54,54,54,55,55,55,56,56,56,57,57,57,58,58,58,59,54,54,55,56,57,58,64,60,59,54,54,54,55,56,57,58,0,64,60,59,54,55,56,57,58,61,55,56,60,55,56,58,59,59,59,59,59,59,59,59,59,60,60,60,60,54,59,54,55,56,57,54,64,60,59,54,55,56,57,58,58,64,60,59,54,55,56,57,58,64,60,59,54,55,56,57,58,61,55,56,59,65,65],"f":"```````````````````````````````````````````````````````````````````````````````````{{b{d{b}}ffh}{{l{j}}}}```{jn}{j{{Ab{A`}}}}{jAd}{b{{Ab{A`}}}}`3{ce{}{}}0000000000000000000000000000000000000{bb}{AfAf}{AhAh}{AjAj}{AlAl}{AnAn}{B`B`}{BbBb}{BdBd}{BfBf}{BhBh}{BjBj}{{ce}Bl{}{}}00000000000{{jBnC`{Ab{A`}}}{{l{Bl}}}}{{{d{Cb}}bffh}{{l{j}}}}``{{}b}{{}An}{{}B`}{{}Cd}{{}Cf}`{b{{Ab{A`}}}}{jb}{j{{d{n}}}}{{jc}Bl{{Cj{{Ab{A`}}}{{Ch{Bn}}}}}}{{j{Ab{A`}}}{{l{n}}}}2{{j{Ab{A`}}n}{{l{n}}}}{jn}0{j{{l{{Cl{A`}}}}}}{{j{Ab{A`}}}{{l{Bl}}}}22{{j{Cl{A`}}}{{l{Bl}}}}`{{hBn}Bl}{{hBnnn}Bl}{hBl}22{{bb}Bn}{{AfAf}Bn}{{AhAh}Bn}{{AjAj}Bn}{{AlAl}Bn}{{CnCn}Bn}{{B`B`}Bn}{{BbBb}Bn}{{BdBd}Bn}{{BfBf}Bn}{{BjBj}Bn}{{ce}Bn{}{}}00000000000000000000000000000`{{bD`}Db}{{AfD`}Db}0{{AhD`}Db}{{AjD`}Db}{{AlD`}Db}{{AnD`}Db}{{B`D`}Db}{{BbD`}Db}{{BdD`}Db}{{BfD`}Db}{{BhD`}Db}{{BjD`}Db}{cc{}}000{{{Cl{A`}}}b}11{DdAf}2222222222222``{{{Ab{A`}}}b}{{{Ab{A`}}n}{{l{Bd}}}}{Cb{{Df{Bjc}}}{}}4{{hBn}Bl}`{{bc}BlDh}```````{ce{}{}}00000000000000000000{bb}`{jBn}00000{{jff}{{l{Bn}}}}1111{Cdn}{Cfn}{{hCb}{{l{Bl}}}}000`{j{{d{Al}}}}{hBl}```````{jn}`{{jff}{{l{C`}}}}{{jf}{{l{C`}}}}`{{bb{Ab{A`}}}{{l{n}}}}{Dj{{l{h}}}}{{jbDlBn}{{l{C`}}}}{Cd{{d{c}}}{}}{Cf{{d{c}}}{}}{jBl}``{j{{d{Bf}}}}{j{{`{{E`{}{{Dn{Bh}}}}}}}}`{{jf}Cd}`{j{{d{{Ab{A`}}}}}}{j{{d{{Cl{{Ab{A`}}}}}}}}?{jC`}0{j{{d{B`}}}}`>{j{{d{Eb}}}}{jCf}`{{j{Ab{A`}}Ah}{{l{n}}}}``````{{jC`}{{l{Bl}}}}{j{{d{b}}}}{jn}``{{bbb{Ab{A`}}Dj{Ab{A`}}}{{l{n}}}}````1{{j{Ab{A`}}}{{l{{Ed{nAj}}}}}}{j{{l{Bl}}}}{{jff}{{l{Bl}}}}{{j{Ab{A`}}{d{f}}{d{f}}}{{l{{Ed{nAj}}}}}}5{{jff}n}````{j{{d{Cb}}}}{j{{d{{Ab{A`}}}}}}{{hC`}Bl}0{{h{Ab{{Ab{A`}}}}}{{l{Bl}}}}{{h{Ab{A`}}}{{l{Bl}}}}{{hBj}Bl}{{hCb}{{l{Bl}}}}{{hBn}Bl}0{{hn}Bl}666666{{j{Eh{Ef}}}Bl}77771171{{j{Eh{Ef}}EjEj}Bl}{{j{Eh{Ef}}EjEjEl}Bl}{{j{Ab{A`}}}{{l{Bl}}}}{{h{d{Dl}}}Bl}9{Af{{d{En}}}}{jb}{j{{`{{E`{}{{Dn{b}}}}}}}}`{jAn}``{{jC`}{{l{n}}}}{{jC`}Bn}{{jC`A`Bn}{{l{Bl}}}}1{j{{d{C`}}}}{{jC`{Ab{A`}}}{{l{{Ed{nBn}}}}}}``{{jC`{Ab{A`}}Bn}{{l{n}}}}{{jC`CnC`}{{l{Bl}}}}{{jC`n}{{l{Bn}}}}4{j{{d{F`}}}}{j{{d{Fb}}}}``{ce{}{}}00000000000{{B`Fd{d{`}}}Ff}{cEj{}}`{jCb}{c{{Df{e}}}{}{}}0000000000000000000000000000000000000`{cFh{}}000000000000000000`{{hBn}Bl}`{DjBn}`{{DjFj}{{l{h}}}}{jCf}````````````````````````````````````````````````````````9999999999999999{FlFl}{FnFn}{G`G`}{GbGb}{{ce}Bl{}{}}000{{}Gd}{{Gfj}Bn}{{GhBn}Bl}{{FlFl}Bn}{{FnFn}Bn}{{G`G`}Bn}{{GbGb}Bn}{{GdGd}Bn}{{ce}Bn{}{}}00000000000000{GfBn}{{FlD`}Db}0{{FnD`}Db}{{G`D`}Db}{{GbD`}Db}{{GdD`}Db}{cc{}}000{DdFl}{AfFl}2222{{}C`}{ce{}{}}0000000{Gj{{Ab{A`}}}}{Fn{{Ab{A`}}}}{G`{{Ab{A`}}}}{{}{{Gl{Gh}}}}{{{Ab{A`}}{Ab{A`}}}Fn}{{{Ab{A`}}{Ab{A`}}}G`}{{A`Bn}Gd}{Gf{{d{{Ab{{Ed{C`C`}}}}}}}}{{Gfj}{{Gl{{Ed{C`Gb}}}}}}{{GfjC`{Ab{A`}}}{{Gl{n}}}}{{GfjC`{Ab{A`}}Bn}{{Gl{n}}}}{{GfjC`}{{Gl{Bl}}}}{{GfjC`Gd}{{Gl{Bl}}}}{{Gfj{Ab{c}}Bn}{{Gl{C`}}}Gj}{{GfjC`{Ab{c}}Bn}{{Gl{Bl}}}Gj}{{GfjC`{Ab{c}}GdBn}{{Gl{Bl}}}Gj}{{Gh{Cl{{Ed{C`C`}}}}}{{Gl{Bl}}}}{{GhC`}Bl}00{Fl{{d{En}}}}{{GfC`}{{Gl{{Cl{A`}}}}}}{ce{}{}}000{cEj{}}{c{{Df{e}}}{}{}}000000{{{Ab{A`}}}{{Df{Gdc}}}{}}111111111{cFh{}}0000000{Gj{{Ab{A`}}}}{Fn{{Ab{A`}}}}{G`{{Ab{A`}}}}{{jGh}{{Gl{Gf}}}}``","D":"CD`","p":[[5,"ConnectionId",0],[6,"Option",706],[6,"SocketAddr",707],[5,"Config",0],[5,"Connection",0],[8,"Result",0],[1,"usize"],[1,"u8"],[1,"slice"],[5,"SslRef",708],[6,"Error",0],[5,"RecvInfo",0],[5,"SendInfo",0],[5,"ConnectionError",0],[5,"Stats",0],[5,"TransportParams",0],[6,"Type",0],[5,"Header",0],[6,"PathEvent",0],[5,"PathStats",0],[6,"CongestionControlAlgorithm",0],[1,"unit"],[1,"bool"],[1,"u64"],[1,"str"],[5,"SocketAddrIter",0],[5,"StreamIter",0],[17,"Output"],[10,"Fn",709],[5,"Vec",710],[6,"Shutdown",0],[5,"Formatter",711],[8,"Result",711],[5,"BufferTooShortError",712],[6,"Result",713],[10,"Hasher",714],[1,"u32"],[1,"u128"],[17,"Item"],[10,"Iterator",715],[5,"QlogStreamer",716],[1,"tuple"],[10,"Write",717],[5,"Box",718],[5,"String",719],[6,"QlogLevel",0],[10,"Error",720],[5,"Duration",721],[5,"Instant",722],[6,"TransportOwner",723],[6,"EventData",724],[5,"TypeId",725],[5,"SslContextBuilder",708],[6,"Error",519],[5,"Header",519],[5,"HeaderRef",519],[6,"Event",519],[5,"Priority",519],[5,"Connection",519],[5,"Config",519],[10,"NameValue",519],[8,"Result",519],[6,"WireErrorCode",0],[6,"WireErrorCode",519],[15,"Headers",704]],"b":[[228,"impl-Display-for-Error"],[229,"impl-Debug-for-Error"],[623,"impl-Display-for-Error"],[624,"impl-Debug-for-Error"],[633,"impl-From%3CBufferTooShortError%3E-for-Error"],[634,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACIBGgBaAAEAXgA9AKAABACmAAAAugAoAOQADAD1AAAA+AAAAA4BAAApAQEAOAEBAFABAQCgAQAAtwELAMQBAADHASUA7gESAEACGABbAhMAcAIFAHoCAQCKAgEAnQIAAJ8CCwCsAhAAvgIBAA=="}],\
+["quiche_apps",{"t":"CCCCKSFFSFOONNNNNNOOONNOOOOOOOOOOOONNNOOONNNOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNOOMNNNGPPPNNHNNNNNNFIIIFFFFKFFCOONNNNNNNNNNNNNNOONOOONNNNNNNHMNNMNNMNNHOONNNNNNNOHOONOOOHHMNNOMNNHNNNNNNNNNNNNNNNNNNNNNNNNOSSHH","n":["args","client","common","sendto","Args","CLIENT_USAGE","ClientArgs","CommonArgs","SERVER_USAGE","ServerArgs","alpns","body","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cc_algorithm","cert","connect_to","default","default","dgram_count","dgram_data","dgrams_enabled","disable_gso","disable_hystart","disable_pacing","dump_json","dump_packet_path","dump_response_path","early_data","enable_active_migration","enable_pmtud","from","from","from","idle_timeout","index","initial_cwnd_packets","into","into","into","key","listen","max_active_cids","max_data","max_field_section_size","max_stream_data","max_stream_window","max_streams_bidi","max_streams_uni","max_window","method","no_grease","no_retry","no_verify","perform_migration","qpack_blocked_streams","qpack_max_table_capacity","req_headers","reqs_cardinal","root","send_priority_update","session_file","source_port","trust_origin_ca_pem","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","urls","version","with_docopt","with_docopt","with_docopt","with_docopt","ClientError","HandshakeFail","HttpFail","Other","borrow","borrow_mut","connect","fmt","from","into","try_from","try_into","type_id","Client","ClientId","ClientIdMap","ClientMap","Http09Conn","Http09Request","Http3Conn","Http3DgramSender","HttpConn","PartialRequest","PartialResponse","alpns","app_proto_selected","body","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","client_id","conn","default","dgram_content","dgrams_sent","flow_id","from","from","from","from","from","from","from","generate_cid_and_reset_token","handle_requests","handle_requests","handle_requests","handle_responses","handle_responses","handle_responses","handle_writable","handle_writable","handle_writable","hdrs_to_strings","headers","http_conn","into","into","into","into","into","into","into","loss_rate","make_qlog_writer","max_datagram_size","max_send_burst","new","partial_requests","partial_responses","priority","priority_field_value_from_query_string","priority_from_query_string","report_incomplete","report_incomplete","report_incomplete","req","send_requests","send_requests","send_requests","stdout_sink","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","with_conn","with_urls","with_urls","written","HTTP_09","HTTP_3","detect_gso","send_to"],"q":[[0,"quiche_apps"],[4,"quiche_apps::args"],[83,"quiche_apps::client"],[96,"quiche_apps::common"],[200,"quiche_apps::common::alpns"],[202,"quiche_apps::sendto"],[204,"core::result"],[205,"core::any"],[206,"docopt::dopt"],[207,"alloc::string"],[208,"core::ops::function"],[209,"core::fmt"],[210,"core::fmt"],[211,"ring::rand"],[212,"quiche"],[213,"std::collections::hash::map"],[214,"quiche::h3"],[215,"std::time"],[216,"quiche::h3"],[217,"std::ffi::os_str"],[218,"std::fs"],[219,"std::io::buffered::bufwriter"],[220,"url"],[221,"core::option"],[222,"quiche::h3"],[223,"alloc::rc"],[224,"alloc::boxed"],[225,"mio::net::udp"],[226,"quiche"]],"i":[0,0,0,0,0,0,0,0,0,0,1,2,1,2,7,1,2,7,1,7,2,1,2,1,1,1,7,1,7,2,1,2,1,1,7,1,2,7,1,7,1,1,2,7,7,7,1,1,1,1,1,1,1,1,2,1,7,2,2,1,1,2,2,7,2,2,2,2,1,2,7,1,2,7,1,2,7,2,2,6,1,2,7,0,9,9,9,9,9,0,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,48,24,22,24,48,49,14,36,29,22,24,48,49,14,36,29,48,48,14,36,36,36,22,24,48,49,14,36,29,0,19,14,29,19,14,29,19,14,29,0,24,48,22,24,48,49,14,36,29,48,0,48,48,36,48,48,24,0,0,19,14,29,22,19,14,29,0,22,24,48,49,14,36,29,22,24,48,49,14,36,29,22,24,48,49,14,36,29,29,14,29,24,0,0,0,0],"f":"````````````{ce{}{}}00000```{{}b}{{}d}````````````{cc{}}00```333````````````````````````{c{{f{e}}}{}{}}00000{ch{}}00``{jl}{jb}{jd}{jn}````99{{dbc}{{f{A`Ab}}}{{Af{Ad}}}}{{AbAh}Aj}8;776``````````````;;;;;;;;;;;;;;``{{}Al}```9999999{c{{Bb{AnB`}}}Bd}{{BfBh{Bn{BjBl}}{Bn{BjC`}}CbCb{Cf{Cd}}}{{Ch{A`}}}}{{AlBh{Bn{BjBl}}{Bn{BjC`}}CbCb{Cf{Cd}}}{{Ch{A`}}}}{{CjBh{Bn{BjBl}}{Bn{BjC`}}CbCb{Cf{Cd}}}{{Ch{A`}}}}{{BfBh{Cf{Cd}}Cl}A`}{{AlBh{Cf{Cd}}Cl}A`}{{CjBh{Cf{Cd}}Cl}A`}{{BfBh{Bn{BjC`}}Bj}A`}{{AlBh{Bn{BjC`}}Bj}A`}{{CjBh{Bn{BjC`}}Bj}A`}{{{Cf{Cn}}}{{D`{{Bb{AdAd}}}}}}``{ce{}{}}000000`{{DbCbCb}{{Df{Dd}}}}``{{BjAdBj}Dh}```{Dj{{Dl{Ad}}}}{Dj{{Dl{Dn}}}}{{BfCl}E`}{{AlCl}E`}{{CjCl}E`}`{{BfBh{Dl{Ad}}}A`}{{AlBh{Dl{Ad}}}A`}{{CjBh{Dl{Ad}}}A`}{AdA`}{c{{f{e}}}{}{}}0000000000000{ch{}}000000{{Bh{Dl{Bj}}{Dl{Bj}}{Dl{Bj}}{Dl{Dh}}{Ed{{Eb{Af}}}}}{{f{{Ef{Bf}}Ad}}}}{{{Cf{Dj}}Bj{Ed{{Eb{Af}}}}}{{Ef{Bf}}}}{{Bh{Cf{Dj}}Bj{Cf{Ad}}{Dl{{D`{Cd}}}}CbE`{Dl{Bj}}{Dl{Bj}}{Dl{Bj}}{Dl{Eh}}{Dl{Dh}}{Ed{{Eb{Af}}}}}{{Ef{Bf}}}}```{{EjEh}E`}{{Ej{Cf{Cd}}ElEhE`E`}{{En{Eh}}}}","D":"Db","p":[[5,"CommonArgs",4],[5,"ClientArgs",4],[6,"Result",204],[5,"TypeId",205],[5,"Docopt",206],[10,"Args",4],[5,"ServerArgs",4],[1,"unit"],[6,"ClientError",83],[5,"String",207],[10,"FnMut",208],[5,"Formatter",209],[8,"Result",209],[5,"Http09Conn",96],[5,"ConnectionId",210],[1,"u128"],[1,"tuple"],[10,"SecureRandom",211],[10,"HttpConn",96],[5,"Connection",212],[1,"u64"],[5,"PartialRequest",96],[5,"HashMap",213],[5,"PartialResponse",96],[1,"str"],[1,"u8"],[1,"slice"],[8,"Result",214],[5,"Http3Conn",96],[5,"Instant",215],[5,"Header",214],[5,"Vec",216],[5,"OsStr",217],[5,"File",218],[5,"BufWriter",219],[5,"Http3DgramSender",96],[5,"Url",220],[6,"Option",221],[5,"Priority",214],[1,"bool"],[5,"RefCell",222],[5,"Rc",223],[5,"Box",224],[1,"usize"],[5,"UdpSocket",225],[5,"SendInfo",212],[8,"Result",226],[5,"Client",96],[5,"Http09Request",96]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAKsADAAAAAIABAACAAkAGgAnAAIALQAuAF4ABwBnAAQAbQAVAIsACwCeAAAAoAAFAKgAIgA="}],\
+["quiche_client",{"t":"H","n":["main"],"q":[[0,"quiche_client"]],"i":[0],"f":"{{}b}","D":"`","p":[[1,"unit"]],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAEAEAAAAAAAAQA="}],\
+["quiche_server",{"t":"SSHHHHH","n":["MAX_BUF_SIZE","MAX_DATAGRAM_SIZE","handle_path_events","main","mint_token","set_txtime_sockopt","validate_token"],"q":[[0,"quiche_server"],[7,"quiche_apps::common"],[8,"quiche::packet"],[9,"core::net::socket_addr"],[10,"alloc::vec"],[11,"mio::net::udp"],[12,"std::io::error"],[13,"quiche::packet"]],"i":[0,0,0,0,0,0,0],"f":"``{bd}{{}d}{{fh}{{l{j}}}}{n{{A`{d}}}}{{h{Ab{j}}}{{Af{Ad}}}}","D":"f","p":[[5,"Client",7],[1,"unit"],[5,"Header",8],[6,"SocketAddr",9],[1,"u8"],[5,"Vec",10],[5,"UdpSocket",11],[8,"Result",12],[1,"slice"],[5,"ConnectionId",8],[6,"Option",13]],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAQAEAAAAAAAAQACAAMABAA="}]\
+]'));
+if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
+else if (window.initSearch) window.initSearch(searchIndex);
diff --git a/search.desc/octets/octets-desc-0-.js b/search.desc/octets/octets-desc-0-.js
new file mode 100644
index 0000000..5de63e5
--- /dev/null
+++ b/search.desc/octets/octets-desc-0-.js
@@ -0,0 +1 @@
+searchState.loadedDescShard("octets", 0, "An error indicating that the provided <code>OctetsMut</code> is not big …\nContains the error value\nA zero-copy immutable byte buffer.\nA zero-copy mutable byte buffer.\nContains the success value\nA specialized <code>Result</code> type for <code>OctetsMut</code> operations.\nReturns a reference to the internal buffer.\nReturns a reference to the internal buffer.\nReturns the remaining capacity in the buffer.\nReturns the remaining capacity in the buffer.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReads <code>len</code> bytes from the current offset without copying …\nReads <code>len</code> bytes from the current offset without copying …\nReads <code>len</code> bytes from the current offset without copying …\nReads <code>len</code> bytes from the current offset without copying …\nReads <code>len</code> bytes from the current offset without copying …\nReads <code>len</code> bytes from the current offset without copying …\nReads <code>len</code> bytes from the current offset without copying …\nReads <code>len</code> bytes from the current offset without copying …\nReads <code>len</code> bytes from the current offset without copying …\nReads an unsigned 16-bit integer in network byte-order …\nReads an unsigned 16-bit integer in network byte-order …\nReads an unsigned 24-bit integer in network byte-order …\nReads an unsigned 24-bit integer in network byte-order …\nReads an unsigned 32-bit integer in network byte-order …\nReads an unsigned 32-bit integer in network byte-order …\nReads an unsigned 64-bit integer in network byte-order …\nReads an unsigned 64-bit integer in network byte-order …\nReads an unsigned 8-bit integer from the current offset …\nReads an unsigned 8-bit integer from the current offset …\nReads an unsigned variable-length integer in network …\nReads an unsigned variable-length integer in network …\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nReturns <code>true</code> if the buffer is empty.\nReturns <code>true</code> if the buffer is empty.\nReturns the total length of the buffer.\nReturns the total length of the buffer.\nReturns the current offset of the buffer.\nReturns the current offset of the buffer.\nReads <code>len</code> bytes from the current offset without copying …\nReads <code>len</code> bytes from the current offset without copying …\nReads <code>len</code> bytes from the current offset without copying …\nReads an unsigned 8-bit integer from the current offset …\nReads an unsigned 8-bit integer from the current offset …\nWrites <code>len</code> bytes from the current offset without copying …\nWrites an unsigned 16-bit integer in network byte-order at …\nWrites an unsigned 24-bit integer in network byte-order at …\nWrites an unsigned 32-bit integer in network byte-order at …\nWrites an unsigned 64-bit integer in network byte-order at …\nWrites an unsigned 8-bit integer at the current offset and …\nWrites an unsigned variable-length integer in network …\nWrites an unsigned variable-length integer of the …\nAdvances the buffer’s offset.\nAdvances the buffer’s offset.\nReturns a slice of <code>len</code> elements from the current offset.\nReturns a slice of <code>len</code> elements from the current offset.\nReturns a slice of <code>len</code> elements from the end of the buffer.\nReturns a slice of <code>len</code> elements from the end of the buffer.\nSplits the buffer in two at the given absolute offset.\nCopies the buffer from the current offset into a new …\nCopies the buffer from the current offset into a new …\nReturns how many bytes it would take to encode <code>v</code> as a …\nReturns how long the variable-length integer is, given its …\nCreates an <code>Octets</code> from the given slice, without copying.\nCreates an <code>OctetsMut</code> from the given slice, without copying.")
\ No newline at end of file
diff --git a/search.desc/qlog/qlog-desc-0-.js b/search.desc/qlog/qlog-desc-0-.js
new file mode 100644
index 0000000..2937d77
--- /dev/null
+++ b/search.desc/qlog/qlog-desc-0-.js
@@ -0,0 +1 @@
+searchState.loadedDescShard("qlog", 0, "The qlog crate is an implementation of the qlog main …\nThere is no more work to do.\nContains the error value\nA quiche qlog error.\nThe operation cannot be completed because it was attempted …\nI/O error.\nContains the success value\nA specialized <code>Result</code> type for quiche qlog operations.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCreates a new qlog Trace\nCreates a new qlog TraceSeq\nAppend an Event to a Trace\nReturns size of <code>EventData</code> array of <code>QuicFrame</code>s if it exists.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nReturns true if this importance level is included by <code>other</code>.\nReturns a new <code>Event</code> object with the provided time and data.\nReturns a new <code>Event</code> object with the provided time, data …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCreates a new PacketHeader.\nCreates a new PacketHeader.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nRepresents the format of the read event.\nA native qlog event type.\nA helper object specialized for reading JSON-SEQ qlog from …\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nWrites a JSON-SEQ-serialized Event using the provided Event…\nWrites an Event based on the provided EventData and ExData …\nWrites an Event based on the provided EventData, ExData, …\nWrites an Event based on the provided EventData to a …\nWrites an Event based on the provided EventData and …\nWrites a serializable to a JSON-SEQ record using …\nWrites a serializable to a JSON-SEQ record using the …\nFinishes qlog streaming serialization.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCreates a QlogStreamer object.\nStarts qlog streaming serialization.\nReturns the writer.")
\ No newline at end of file
diff --git a/search.desc/quiche/quiche-desc-0-.js b/search.desc/quiche/quiche-desc-0-.js
new file mode 100644
index 0000000..66d279d
--- /dev/null
+++ b/search.desc/quiche/quiche-desc-0-.js
@@ -0,0 +1 @@
+searchState.loadedDescShard("quiche", 0, "🥧 Savoury implementation of the QUIC transport protocol …\nAn endpoint has reached the confidentiality or integrity …\nThe application or application protocol caused the …\nBBR congestion control algorithm. <code>bbr</code> in a string form.\nBBRv2 congestion control algorithm. <code>bbr2</code> in a string form.\nLogs any events of Core and Base importance.\nThe provided buffer is too short.\nCUBIC congestion control algorithm (default). <code>cubic</code> in a …\nThe related network path between local <code>SocketAddr</code> and peer …\nStores configuration shared between multiple connections.\nError in congestion control.\nAvailable congestion control algorithms.\nA QUIC connection.\nRepresents information carried by <code>CONNECTION_CLOSE</code> frames.\nA QUIC connection ID.\nAn endpoint received transport parameters that were badly …\nThe server refused to accept a new connection.\nLogs any events of Core importance.\nAn endpoint has received more data in CRYPTO frames than …\nThe peer sent more data in CRYPTO frames than we can …\nA cryptographic operation failed.\nThere is no more work to do.\nContains the error value\nA QUIC error.\nLogs any events of Core, Base and Extra importance\nThe related network path between local <code>SocketAddr</code> and peer …\nThe received data exceeds the stream’s final size.\n(1) An endpoint received a STREAM frame containing data …\nThe peer violated the local flow control limits.\nAn endpoint received more data than it permitted in its …\nAn endpoint received a frame that was badly formatted – …\nHandshake packet.\nA QUIC packet’s header.\nToo many identifiers were provided.\nInitial packet.\nThe endpoint encountered an internal error and cannot …\nThe provided packet cannot be parsed because it contains …\nThe provided packet cannot be parsed.\nThe operation cannot be completed because the connection …\nThe operation cannot be completed because the stream is in …\nA server received a client Initial that contained an …\nThe peer’s transport params cannot be parsed.\nError in key update.\nAn endpoint detected errors in performing key updates.\nThe maximum length of a connection ID.\nThe minimum length of Initial packets sent by a client.\nA new network path (local address, peer address) has been …\nAn endpoint uses this with CONNECTION_CLOSE to signal that …\nAn endpoint has determined that the network path is …\nContains the success value\nNot enough available identifiers.\nThe current QUIC wire version.\nA path-specific event.\nStatistics about the path of a connection.\nThe connection observed that the peer migrated over the …\nAn endpoint detected an error with protocol compliance …\nQlog logging level.\nStop receiving stream data.\nAncillary information about incoming packets.\nReno congestion control algorithm. <code>reno</code> in a string form.\nA specialized <code>Result</code> type for quiche operations.\nRetry packet.\nThe stack observes that the Source Connection ID with the …\nAncillary information about outgoing packets.\n1-RTT short header packet.\nThe side of the stream to be shut down.\nAn iterator over SocketAddr.\nStatistics about the connection.\nAn iterator over QUIC streams.\nThe peer violated the local stream limits.\nAn endpoint received a frame for a stream identifier that …\nThe specified stream was reset by the peer.\nAn endpoint received a frame for a stream that was not in …\nThe specified stream was stopped by the peer.\nThe TLS handshake failed.\nAn endpoint received transport parameters that were badly …\nQUIC Transport Parameters\nQUIC packet type.\nThe provided packet cannot be parsed because its version …\nThe related network path between local <code>SocketAddr</code> and peer …\nVersion negotiation packet.\nQUIC error codes sent on the wire.\nStop sending stream data.\n0-RTT packet.\nCreates a new server-side connection.\nThe ACK delay exponent.\nWhether the path is marked as active.\nThe active connection ID limit.\nReturns the number of source Connection IDs that are …\nReturns the negotiated ALPN protocol.\nThe time to send the packet out.\nReturns the number of spare Destination Connection IDs, …\nCloses the connection with the given error and reason.\nCreates a new client-side connection.\nThe size of the connection’s congestion window in bytes.\nThe destination connection ID of the packet.\nThe most recent data delivery rate estimate in bytes/s.\nReturns the destination connection ID.\nReturns the maximum DATAGRAM payload that can be sent.\nPurges queued outgoing DATAGRAMs matching the predicate.\nReads the first received DATAGRAM.\nReturns the length of the first stored DATAGRAM.\nReads the first received DATAGRAM without removing it from …\nReturns the total size of all items in the DATAGRAM …\nReturns the number of items in the DATAGRAM receive queue.\nReads the first received DATAGRAM.\nSends data in a DATAGRAM frame.\nReturns the total size of all items in the DATAGRAM send …\nReturns the number of items in the DATAGRAM send queue.\nSends data in a DATAGRAM frame.\nWhether active migration is disabled.\nConfigures whether to do path MTU discovery.\nConfigures whether to enable receiving DATAGRAM frames.\nEnables sending or receiving early data.\nConfigures whether to enable HyStart++.\nConfigures whether to enable pacing.\nThe error code carried by the <code>CONNECTION_CLOSE</code> frame.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nThe remote address the packet was received from.\nThe local address the packet should be sent from.\nCreates a new connection ID from the given slice.\nParses a QUIC packet header from the given buffer.\nConverts a string to <code>CongestionControlAlgorithm</code>.\nCreates a new connection ID from the given vector.\nConfigures whether to send GREASE values.\nHTTP/3 wire protocol and QPACK implementation.\nThe initial flow control maximum data for the connection.\nThe initial flow control maximum data for local …\nThe initial flow control maximum data for remote …\nThe initial flow control maximum data for unidirectional …\nThe initial maximum bidirectional streams.\nThe initial maximum unidirectional streams.\nThe value that the endpoint included in the Source CID …\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nReturns a new owning connection ID from the given existing …\nWhether the error came from the application or the …\nReturns true if the connection is closed.\nReturns whether or not the DATAGRAM recv queue is full.\nReturns whether or not the DATAGRAM send queue is full.\nReturns true if the connection is draining.\nReturns true if the connection handshake is complete.\nReturns true if the connection has a pending handshake …\nReturns whether the network path with local address <code>from</code> …\nReturns whether there is stream or DATAGRAM data available …\nReturns true if the connection is resumed.\nReturns whether or not this is a server-side connection.\nReturns true if the connection was closed due to the idle …\nConfigures the given certificate chain.\nConfigures the given private key.\nSpecifies a directory where trusted CA certificates are …\nSpecifies a file where trusted CA certificates are stored …\nThe local address of the path.\nReturns the error <code>close()</code> was called with, or internally …\nEnables logging of secrets.\nThe number of QUIC packets that were lost.\nThe number of QUIC packets that were lost.\nThe number of bytes sent lost.\nThe number of bytes lost.\nThe max ACK delay.\nDATAGRAM frame extension parameter, if any.\nThe maximum idle timeout.\nReturns the maximum possible size of egress UDP payloads.\nThe maximum UDP payload size.\nMigrates the connection over the given network path …\nMigrates the connection to a new local address <code>local_addr</code>.\nThe minimum round-trip time observed.\nWrites a version negotiation packet.\nCreates a config object with the given version.\nProvides additional source Connection IDs that the peer …\nProcesses a timeout event.\nValue of Destination CID field from first Initial packet …\nThe total number of PATH_CHALLENGE frames that were …\nProcesses path-specific events.\nCollects and returns statistics about each known path for …\nThe number of known paths for the connection.\nReturns an iterator over destination <code>SockAddr</code>s whose …\nThe peer address of the path.\nReturns the peer’s leaf certificate (if any) as a …\nReturns the peer’s certificate chain (if any) as a …\nReturns the error received from the peer, if any.\nReturns the number of bidirectional streams that can be …\nReturns the number of unidirectional streams that can be …\nReturns reference to peer’s transport parameters. …\nThe current PMTU for the connection.\nRequests the stack to perform path validation of the …\nReturns a mutable reference to the QlogStreamer, if it …\nReturns an iterator over streams that have outstanding …\nThe reason carried by the <code>CONNECTION_CLOSE</code> frame.\nProcesses QUIC packets received from the peer.\nThe number of QUIC packets received.\nThe number of QUIC packets received.\nThe number of received bytes.\nThe number of received bytes.\nThe number of streams reset by local.\nThe number of streams reset by remote.\nRequests the retirement of the destination Connection ID …\nReturns a source <code>ConnectionId</code> that has been retired.\nReturns the number of source Connection IDs that are …\nThe number of sent QUIC packets with retransmitted data.\nThe number of sent QUIC packets with retransmitted data.\nWrites a stateless retry packet.\nThe value that the server included in the Source CID field …\nThe estimated round-trip time of the connection.\nThe estimated round-trip time variation in samples using a …\nThe source connection ID of the packet.\nReturns the number of source Connection IDs that should be …\nWrites a single QUIC packet to be sent to the peer.\nSchedule an ack-eliciting packet on the active path.\nSchedule an ack-eliciting packet on the specified path.\nWrites a single QUIC packet to be sent to the peer from …\nReturns the size of the send quantum, in bytes.\nReturns the size of the send quantum over the given …\nThe number of QUIC packets sent.\nThe number of QUIC packets sent.\nThe number of sent bytes.\nThe number of sent bytes.\nReturns the server name requested by the client.\nReturns the serialized cryptographic session for the …\nSets the <code>ack_delay_exponent</code> transport parameter.\nSets the <code>active_connection_id_limit</code> transport parameter.\nConfigures the list of supported application protocols.\nConfigures the list of supported application protocols …\nSets the congestion control algorithm used.\nSets the congestion control algorithm used by string.\nSets the <code>disable_active_migration</code> transport parameter.\nSets whether the QUIC connection should avoid reusing …\nSets initial congestion window size in terms of packet …\nSets the <code>initial_max_data</code> transport parameter.\nSets the <code>initial_max_stream_data_bidi_local</code> transport …\nSets the <code>initial_max_stream_data_bidi_remote</code> transport …\nSets the <code>initial_max_stream_data_uni</code> transport parameter.\nSets the <code>initial_max_streams_bidi</code> transport parameter.\nSets the <code>initial_max_streams_uni</code> transport parameter.\nSets keylog output to the designated <code>Writer</code>.\nSets the <code>max_ack_delay</code> transport parameter.\nSets the maximum size of the connection window.\nSets the <code>max_idle_timeout</code> transport parameter, in …\nSets the max value for pacing rate.\nSets the <code>max_udp_payload_size transport</code> parameter.\nSets the maximum outgoing UDP payload size.\nSets the maximum size of the stream window.\nConfigures the max number of queued received …\nSets qlog output to the designated <code>Writer</code>.\nSets qlog output to the designated <code>Writer</code>.\nConfigures the given session for resumption.\nSets the initial stateless reset token.\nConfigures the session ticket key material.\nReturns the source connection ID.\nReturns all active source connection IDs.\nToken used for verifying stateless resets\nCollects and returns statistics about the connection.\nThe number of streams stopped by local.\nThe number of streams stopped by remote.\nReturns the stream’s send capacity in bytes.\nReturns true if all the data has been read from the …\nSets the priority for a stream.\nReturns true if the stream has data that can be read.\nReturns the next stream that has data to read.\nReads contiguous data from a stream into the provided …\nThe number of stream bytes retransmitted.\nThe number of stream bytes retransmitted.\nWrites data to a stream.\nShuts down reading or writing from/to the specified stream.\nReturns true if the stream has enough send capacity.\nReturns the next stream that can be written to.\nReturns the amount of time until the next timeout event.\nReturns when the next timeout event will occur.\nThe local address the packet was received on.\nThe remote address the packet should be sent to.\nCreates a qlog event for connection transport parameters …\nThe address verification token of the packet. Only present …\nReturns a string uniquely representing the connection.\nThe type of the packet.\nThe path validation state.\nConfigures whether to verify the peer’s certificate.\nThe version of the packet.\nReturns true if the given protocol version is supported.\nThe list of versions in the packet. Only present in …\nCreates a config object with the given version and …\nReturns an iterator over streams that can be written in …\nList of ALPN tokens of supported HTTP/3 versions.\nThe provided buffer is too short.\nA stream required by the HTTP/3 connection was closed or …\nA required critical stream was closed.\nAn HTTP/3 configuration.\nThe TCP connection established in response to a CONNECT …\nThe TCP connection established in response to a CONNECT …\nAn HTTP/3 connection.\nData was received.\nThere is no error or no work to do\nContains the error value\nAn HTTP/3 error.\nAn HTTP/3 connection event.\nThe endpoint detected that its peer is exhibiting a …\nEndpoint detected that the peer is exhibiting behavior …\nStream was closed,\nA frame that fails to satisfy layout requirements or with …\nFrame violated layout or size rules.\nA frame was received that was not permitted in the current …\nA frame was received which is not permitted in the current …\nPeer violated protocol requirements in a way that does not …\nGOAWAY was received.\nAn owned name-value pair representing a raw HTTP header.\nA non-owned name-value pair representing a raw HTTP header.\nRequest/response headers were received.\nA stream ID or push ID was used incorrectly, such as …\nStream ID or Push ID greater that current maximum was used …\nAn internal error has occurred in the HTTP stack.\nInternal error in the HTTP/3 stack.\nAn HTTP message was malformed and cannot be processed.\nAn HTTP message was malformed and cannot be processed.\nNo SETTINGS frame was received at the beginning of the …\nNo SETTINGS frame at beginning of control stream.\nA trait for types with associated string name and value.\nNo error. This is used when the connection or stream needs …\nContains the success value\nExtensible Priorities parameters.\nPRIORITY_UPDATE was received.\nQPACK Header block decompression failure.\nThe request or its response (including pushed response) is …\nRequest or its response cancelled.\nThe client’s stream terminated without containing a …\nClient’s request stream terminated without containing a …\nA server rejected a request without performing any …\nServer rejected request.\nStream was reset.\nA specialized <code>Result</code> type for quiche HTTP/3 operations.\nAn endpoint detected an error in the payload of a SETTINGS …\nError in the payload of a SETTINGS frame.\nThe underlying QUIC stream (or connection) doesn’t have …\nThe endpoint detected that its peer created a stream that …\nThe endpoint detected that its peer created a stream that …\nError originated from the transport layer.\nThe requested operation cannot be served over HTTP/3. The …\nThe requested operation cannot be served over HTTP/3. Peer …\nHTTP/3 error codes sent on the wire.\nReturns whether the peer enabled HTTP/3 DATAGRAM frame …\nSets or omits the <code>SETTINGS_ENABLE_CONNECT_PROTOCOL</code> setting.\nReturns whether the peer enabled extended CONNECT support.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGenerates an HTTP/3 GREASE variable length integer.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nReturns the object’s name.\nCreates a new configuration object with default settings.\nCreates a new header.\nCreates a new header.\nCreates a new Priority.\nGets the raw settings from peer including unknown and …\nProcesses HTTP/3 data received from the peer.\nReads request or response body data into the provided …\nSends an HTTP/3 body chunk on the given stream.\nSends a GOAWAY frame to initiate graceful connection …\nSends a PRIORITY_UPDATE frame on the control stream with …\nSends an HTTP/3 request.\nSends an HTTP/3 response on the specified stream with …\nSends an HTTP/3 response on the specified stream with …\nSets additional HTTP/3 settings.\nSets the <code>SETTINGS_MAX_FIELD_SECTION_SIZE</code> setting.\nSets the <code>SETTINGS_QPACK_BLOCKED_STREAMS</code> setting.\nSets the <code>SETTINGS_QPACK_MAX_TABLE_CAPACITY</code> setting.\nTake the last PRIORITY_UPDATE for a prioritized element ID.\nTry to parse an Extensible Priority field value.\nReturns the object’s value.\nCreates a new HTTP/3 connection using the provided QUIC …\nWhether data will follow the headers on the stream.\nThe list of received header fields. The application should …")
\ No newline at end of file
diff --git a/search.desc/quiche_apps/quiche_apps-desc-0-.js b/search.desc/quiche_apps/quiche_apps-desc-0-.js
new file mode 100644
index 0000000..49cb2b2
--- /dev/null
+++ b/search.desc/quiche_apps/quiche_apps-desc-0-.js
@@ -0,0 +1 @@
+searchState.loadedDescShard("quiche_apps", 0, "Quiche application utilities.\nApplication-specific arguments that compliment the …\nContains commons arguments for creating a quiche QUIC …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nReturns the argument unchanged.\nCalls <code>U::from(self)</code>.\nRepresents an HTTP/0.9 formatted request.\nALPN helpers.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGenerate a new pair of Source Connection ID and reset …\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nCalls <code>U::from(self)</code>.\nMakes a buffered writer for a qlog.\nConstruct a priority field value from quiche apps custom …\nConstruct a Priority from quiche apps custom query string.\nFor Linux, try to detect GSO is available.\nA wrapper function of send_to().")
\ No newline at end of file
diff --git a/search.desc/quiche_client/quiche_client-desc-0-.js b/search.desc/quiche_client/quiche_client-desc-0-.js
new file mode 100644
index 0000000..1df98e1
--- /dev/null
+++ b/search.desc/quiche_client/quiche_client-desc-0-.js
@@ -0,0 +1 @@
+searchState.loadedDescShard("quiche_client", 0, "")
\ No newline at end of file
diff --git a/search.desc/quiche_server/quiche_server-desc-0-.js b/search.desc/quiche_server/quiche_server-desc-0-.js
new file mode 100644
index 0000000..6cfec0a
--- /dev/null
+++ b/search.desc/quiche_server/quiche_server-desc-0-.js
@@ -0,0 +1 @@
+searchState.loadedDescShard("quiche_server", 0, "Generate a stateless retry token.\nSet SO_TXTIME socket option.\nValidates a stateless retry token.")
\ No newline at end of file
diff --git a/settings.html b/settings.html
new file mode 100644
index 0000000..bdb3e53
--- /dev/null
+++ b/settings.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Settings of Rustdoc"><title>Settings</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/${f}">`).join(""))</script><link rel="stylesheet" href="./static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="./static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="./" data-static-root-path="./static.files/" data-current-crate="quiche_server" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="./static.files/storage-e32f0c247825364d.js"></script><script defer src="./static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="./static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="./static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="./static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod sys"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button><a class="logo-container" href="./index.html"><img class="rust-logo" src="./static.files/rust-logo-151179464ae7ed46.svg" alt=""></a></nav><nav class="sidebar"><div class="sidebar-crate"><a class="logo-container" href="./index.html"><img class="rust-logo" src="./static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2><a href="./index.html">Rustdoc</a><span class="version">1.79.0-nightly</span></h2></div><div class="version">(0d8b3346a 2024-04-14)</div><h2 class="location">Settings</h2><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="./quiche_server/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="./help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="./settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Rustdoc settings</h1><span class="out-of-band"><a id="back" href="javascript:void(0)" onclick="history.back();">Back</a></span></div><noscript><section>You need to enable JavaScript be able to update your settings.</section></noscript><script defer src="./static.files/settings-4313503d2e1961c2.js"></script></section></div></main></body></html>
\ No newline at end of file
diff --git a/src-files.js b/src-files.js
new file mode 100644
index 0000000..a6ae85c
--- /dev/null
+++ b/src-files.js
@@ -0,0 +1,9 @@
+var srcIndex = new Map(JSON.parse('[\
+["octets",["",[],["lib.rs"]]],\
+["qlog",["",[["events",[],["connectivity.rs","h3.rs","mod.rs","qpack.rs","quic.rs","security.rs"]]],["lib.rs","reader.rs","streamer.rs"]]],\
+["quiche",["",[["crypto",[],["mod.rs","openssl_quictls.rs"]],["h3",[["qpack",[["huffman",[],["mod.rs","table.rs"]]],["decoder.rs","encoder.rs","mod.rs","static_table.rs"]]],["ffi.rs","frame.rs","mod.rs","stream.rs"]],["recovery",[["bbr",[],["init.rs","mod.rs","pacing.rs","per_ack.rs","per_transmit.rs"]],["bbr2",[],["init.rs","mod.rs","pacing.rs","per_ack.rs","per_loss.rs","per_transmit.rs"]]],["cubic.rs","delivery_rate.rs","hystart.rs","mod.rs","pacer.rs","prr.rs","reno.rs"]],["stream",[],["mod.rs","recv_buf.rs","send_buf.rs"]],["tls",[],["mod.rs","openssl_quictls.rs"]]],["cid.rs","dgram.rs","ffi.rs","flowcontrol.rs","frame.rs","lib.rs","minmax.rs","packet.rs","path.rs","pmtud.rs","rand.rs","ranges.rs"]]],\
+["quiche_apps",["",[],["args.rs","client.rs","common.rs","lib.rs","sendto.rs"]]],\
+["quiche_client",["",[],["quiche-client.rs"]]],\
+["quiche_server",["",[],["quiche-server.rs"]]]\
+]'));
+createSrcSidebar();
diff --git a/src/octets/lib.rs.html b/src/octets/lib.rs.html
new file mode 100644
index 0000000..1222b11
--- /dev/null
+++ b/src/octets/lib.rs.html
@@ -0,0 +1,2569 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `octets/src/lib.rs`."><title>lib.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="octets" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../octets/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+<a href="#1217" id="1217">1217</a>
+<a href="#1218" id="1218">1218</a>
+<a href="#1219" id="1219">1219</a>
+<a href="#1220" id="1220">1220</a>
+<a href="#1221" id="1221">1221</a>
+<a href="#1222" id="1222">1222</a>
+<a href="#1223" id="1223">1223</a>
+<a href="#1224" id="1224">1224</a>
+<a href="#1225" id="1225">1225</a>
+<a href="#1226" id="1226">1226</a>
+<a href="#1227" id="1227">1227</a>
+<a href="#1228" id="1228">1228</a>
+<a href="#1229" id="1229">1229</a>
+<a href="#1230" id="1230">1230</a>
+<a href="#1231" id="1231">1231</a>
+<a href="#1232" id="1232">1232</a>
+<a href="#1233" id="1233">1233</a>
+<a href="#1234" id="1234">1234</a>
+<a href="#1235" id="1235">1235</a>
+<a href="#1236" id="1236">1236</a>
+<a href="#1237" id="1237">1237</a>
+<a href="#1238" id="1238">1238</a>
+<a href="#1239" id="1239">1239</a>
+<a href="#1240" id="1240">1240</a>
+<a href="#1241" id="1241">1241</a>
+<a href="#1242" id="1242">1242</a>
+<a href="#1243" id="1243">1243</a>
+<a href="#1244" id="1244">1244</a>
+<a href="#1245" id="1245">1245</a>
+<a href="#1246" id="1246">1246</a>
+<a href="#1247" id="1247">1247</a>
+<a href="#1248" id="1248">1248</a>
+<a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</a>
+<a href="#1259" id="1259">1259</a>
+<a href="#1260" id="1260">1260</a>
+<a href="#1261" id="1261">1261</a>
+<a href="#1262" id="1262">1262</a>
+<a href="#1263" id="1263">1263</a>
+<a href="#1264" id="1264">1264</a>
+<a href="#1265" id="1265">1265</a>
+<a href="#1266" id="1266">1266</a>
+<a href="#1267" id="1267">1267</a>
+<a href="#1268" id="1268">1268</a>
+<a href="#1269" id="1269">1269</a>
+<a href="#1270" id="1270">1270</a>
+<a href="#1271" id="1271">1271</a>
+<a href="#1272" id="1272">1272</a>
+<a href="#1273" id="1273">1273</a>
+<a href="#1274" id="1274">1274</a>
+<a href="#1275" id="1275">1275</a>
+<a href="#1276" id="1276">1276</a>
+<a href="#1277" id="1277">1277</a>
+<a href="#1278" id="1278">1278</a>
+<a href="#1279" id="1279">1279</a>
+<a href="#1280" id="1280">1280</a>
+<a href="#1281" id="1281">1281</a>
+<a href="#1282" id="1282">1282</a>
+<a href="#1283" id="1283">1283</a>
+<a href="#1284" id="1284">1284</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2018-2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="doccomment">/// Zero-copy abstraction for parsing and constructing network packets.
+</span><span class="kw">use </span>std::mem;
+<span class="kw">use </span>std::ptr;
+
+<span class="doccomment">/// A specialized [`Result`] type for [`OctetsMut`] operations.
+///
+/// [`Result`]: https://doc.rust-lang.org/std/result/enum.Result.html
+/// [`OctetsMut`]: struct.OctetsMut.html
+</span><span class="kw">pub type </span><span class="prelude-ty">Result</span>&lt;T&gt; = std::result::Result&lt;T, BufferTooShortError&gt;;
+
+<span class="doccomment">/// An error indicating that the provided [`OctetsMut`] is not big enough.
+///
+/// [`OctetsMut`]: struct.OctetsMut.html
+</span><span class="attr">#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+</span><span class="kw">pub struct </span>BufferTooShortError;
+
+<span class="kw">impl </span>std::fmt::Display <span class="kw">for </span>BufferTooShortError {
+    <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+        <span class="macro">write!</span>(f, <span class="string">"BufferTooShortError"</span>)
+    }
+}
+
+<span class="kw">impl </span>std::error::Error <span class="kw">for </span>BufferTooShortError {
+    <span class="kw">fn </span>source(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>(<span class="kw">dyn </span>std::error::Error + <span class="lifetime">'static</span>)&gt; {
+        <span class="prelude-val">None
+    </span>}
+}
+
+<span class="macro">macro_rules!</span> peek_u {
+    (<span class="macro-nonterminal">$b</span>:expr, <span class="macro-nonterminal">$ty</span>:ty, <span class="macro-nonterminal">$len</span>:expr) =&gt; {{
+        <span class="kw">let </span>len = <span class="macro-nonterminal">$len</span>;
+        <span class="kw">let </span>src = <span class="kw-2">&amp;</span><span class="macro-nonterminal">$b</span>.buf[<span class="macro-nonterminal">$b</span>.off..];
+
+        <span class="kw">if </span>src.len() &lt; len {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(BufferTooShortError);
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>out: <span class="macro-nonterminal">$ty </span>= <span class="number">0</span>;
+        <span class="kw">unsafe </span>{
+            <span class="kw">let </span>dst = <span class="kw-2">&amp;mut </span>out <span class="kw">as </span><span class="kw-2">*mut </span><span class="macro-nonterminal">$ty </span><span class="kw">as </span><span class="kw-2">*mut </span>u8;
+            <span class="kw">let </span>off = (mem::size_of::&lt;<span class="macro-nonterminal">$ty</span>&gt;() - len) <span class="kw">as </span>isize;
+
+            ptr::copy_nonoverlapping(src.as_ptr(), dst.offset(off), len);
+        };
+
+        <span class="prelude-val">Ok</span>(&lt;<span class="macro-nonterminal">$ty</span>&gt;::from_be(out))
+    }};
+}
+
+<span class="macro">macro_rules!</span> get_u {
+    (<span class="macro-nonterminal">$b</span>:expr, <span class="macro-nonterminal">$ty</span>:ty, <span class="macro-nonterminal">$len</span>:expr) =&gt; {{
+        <span class="kw">let </span>out = <span class="macro">peek_u!</span>(<span class="macro-nonterminal">$b</span>, <span class="macro-nonterminal">$ty</span>, <span class="macro-nonterminal">$len</span>);
+
+        <span class="macro-nonterminal">$b</span>.off += <span class="macro-nonterminal">$len</span>;
+
+        out
+    }};
+}
+
+<span class="macro">macro_rules!</span> put_u {
+    (<span class="macro-nonterminal">$b</span>:expr, <span class="macro-nonterminal">$ty</span>:ty, <span class="macro-nonterminal">$v</span>:expr, <span class="macro-nonterminal">$len</span>:expr) =&gt; {{
+        <span class="kw">let </span>len = <span class="macro-nonterminal">$len</span>;
+
+        <span class="kw">if </span><span class="macro-nonterminal">$b</span>.buf.len() &lt; <span class="macro-nonterminal">$b</span>.off + len {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(BufferTooShortError);
+        }
+
+        <span class="kw">let </span>v = <span class="macro-nonterminal">$v</span>;
+
+        <span class="kw">let </span>dst = <span class="kw-2">&amp;mut </span><span class="macro-nonterminal">$b</span>.buf[<span class="macro-nonterminal">$b</span>.off..(<span class="macro-nonterminal">$b</span>.off + len)];
+
+        <span class="kw">unsafe </span>{
+            <span class="kw">let </span>src = <span class="kw-2">&amp;</span>&lt;<span class="macro-nonterminal">$ty</span>&gt;::to_be(v) <span class="kw">as </span><span class="kw-2">*const </span><span class="macro-nonterminal">$ty </span><span class="kw">as </span><span class="kw-2">*const </span>u8;
+            <span class="kw">let </span>off = (mem::size_of::&lt;<span class="macro-nonterminal">$ty</span>&gt;() - len) <span class="kw">as </span>isize;
+
+            ptr::copy_nonoverlapping(src.offset(off), dst.as_mut_ptr(), len);
+        }
+
+        <span class="macro-nonterminal">$b</span>.off += <span class="macro-nonterminal">$len</span>;
+
+        <span class="prelude-val">Ok</span>(dst)
+    }};
+}
+
+<span class="doccomment">/// A zero-copy immutable byte buffer.
+///
+/// `Octets` wraps an in-memory buffer of bytes and provides utility functions
+/// for manipulating it. The underlying buffer is provided by the user and is
+/// not copied when creating an `Octets`. Operations are panic-free and will
+/// avoid indexing the buffer past its end.
+///
+/// Additionally, an offset (initially set to the start of the buffer) is
+/// incremented as bytes are read from / written to the buffer, to allow for
+/// sequential operations.
+</span><span class="attr">#[derive(Debug, PartialEq, Eq)]
+</span><span class="kw">pub struct </span>Octets&lt;<span class="lifetime">'a</span>&gt; {
+    buf: <span class="kw-2">&amp;</span><span class="lifetime">'a </span>[u8],
+    off: usize,
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; Octets&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="doccomment">/// Creates an `Octets` from the given slice, without copying.
+    ///
+    /// Since the `Octets` is immutable, the input slice needs to be
+    /// immutable.
+    </span><span class="kw">pub fn </span>with_slice(buf: <span class="kw-2">&amp;</span><span class="lifetime">'a </span>[u8]) -&gt; <span class="self">Self </span>{
+        Octets { buf, off: <span class="number">0 </span>}
+    }
+
+    <span class="doccomment">/// Reads an unsigned 8-bit integer from the current offset and advances
+    /// the buffer.
+    </span><span class="kw">pub fn </span>get_u8(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;u8&gt; {
+        <span class="macro">get_u!</span>(<span class="self">self</span>, u8, <span class="number">1</span>)
+    }
+
+    <span class="doccomment">/// Reads an unsigned 8-bit integer from the current offset without
+    /// advancing the buffer.
+    </span><span class="kw">pub fn </span>peek_u8(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;u8&gt; {
+        <span class="macro">peek_u!</span>(<span class="self">self</span>, u8, <span class="number">1</span>)
+    }
+
+    <span class="doccomment">/// Reads an unsigned 16-bit integer in network byte-order from the current
+    /// offset and advances the buffer.
+    </span><span class="kw">pub fn </span>get_u16(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;u16&gt; {
+        <span class="macro">get_u!</span>(<span class="self">self</span>, u16, <span class="number">2</span>)
+    }
+
+    <span class="doccomment">/// Reads an unsigned 24-bit integer in network byte-order from the current
+    /// offset and advances the buffer.
+    </span><span class="kw">pub fn </span>get_u24(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;u32&gt; {
+        <span class="macro">get_u!</span>(<span class="self">self</span>, u32, <span class="number">3</span>)
+    }
+
+    <span class="doccomment">/// Reads an unsigned 32-bit integer in network byte-order from the current
+    /// offset and advances the buffer.
+    </span><span class="kw">pub fn </span>get_u32(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;u32&gt; {
+        <span class="macro">get_u!</span>(<span class="self">self</span>, u32, <span class="number">4</span>)
+    }
+
+    <span class="doccomment">/// Reads an unsigned 64-bit integer in network byte-order from the current
+    /// offset and advances the buffer.
+    </span><span class="kw">pub fn </span>get_u64(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;u64&gt; {
+        <span class="macro">get_u!</span>(<span class="self">self</span>, u64, <span class="number">8</span>)
+    }
+
+    <span class="doccomment">/// Reads an unsigned variable-length integer in network byte-order from
+    /// the current offset and advances the buffer.
+    </span><span class="kw">pub fn </span>get_varint(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;u64&gt; {
+        <span class="kw">let </span>first = <span class="self">self</span>.peek_u8()<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>len = varint_parse_len(first);
+
+        <span class="kw">if </span>len &gt; <span class="self">self</span>.cap() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(BufferTooShortError);
+        }
+
+        <span class="kw">let </span>out = <span class="kw">match </span>len {
+            <span class="number">1 </span>=&gt; u64::from(<span class="self">self</span>.get_u8()<span class="question-mark">?</span>),
+
+            <span class="number">2 </span>=&gt; u64::from(<span class="self">self</span>.get_u16()<span class="question-mark">? </span>&amp; <span class="number">0x3fff</span>),
+
+            <span class="number">4 </span>=&gt; u64::from(<span class="self">self</span>.get_u32()<span class="question-mark">? </span>&amp; <span class="number">0x3fffffff</span>),
+
+            <span class="number">8 </span>=&gt; <span class="self">self</span>.get_u64()<span class="question-mark">? </span>&amp; <span class="number">0x3fffffffffffffff</span>,
+
+            <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+        };
+
+        <span class="prelude-val">Ok</span>(out)
+    }
+
+    <span class="doccomment">/// Reads `len` bytes from the current offset without copying and advances
+    /// the buffer.
+    </span><span class="kw">pub fn </span>get_bytes(<span class="kw-2">&amp;mut </span><span class="self">self</span>, len: usize) -&gt; <span class="prelude-ty">Result</span>&lt;Octets&lt;<span class="lifetime">'a</span>&gt;&gt; {
+        <span class="kw">if </span><span class="self">self</span>.cap() &lt; len {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(BufferTooShortError);
+        }
+
+        <span class="kw">let </span>out = Octets {
+            buf: <span class="kw-2">&amp;</span><span class="self">self</span>.buf[<span class="self">self</span>.off..<span class="self">self</span>.off + len],
+            off: <span class="number">0</span>,
+        };
+
+        <span class="self">self</span>.off += len;
+
+        <span class="prelude-val">Ok</span>(out)
+    }
+
+    <span class="doccomment">/// Reads `len` bytes from the current offset without copying and advances
+    /// the buffer, where `len` is an unsigned 8-bit integer prefix.
+    </span><span class="kw">pub fn </span>get_bytes_with_u8_length(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;Octets&lt;<span class="lifetime">'a</span>&gt;&gt; {
+        <span class="kw">let </span>len = <span class="self">self</span>.get_u8()<span class="question-mark">?</span>;
+        <span class="self">self</span>.get_bytes(len <span class="kw">as </span>usize)
+    }
+
+    <span class="doccomment">/// Reads `len` bytes from the current offset without copying and advances
+    /// the buffer, where `len` is an unsigned 16-bit integer prefix in network
+    /// byte-order.
+    </span><span class="kw">pub fn </span>get_bytes_with_u16_length(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;Octets&lt;<span class="lifetime">'a</span>&gt;&gt; {
+        <span class="kw">let </span>len = <span class="self">self</span>.get_u16()<span class="question-mark">?</span>;
+        <span class="self">self</span>.get_bytes(len <span class="kw">as </span>usize)
+    }
+
+    <span class="doccomment">/// Reads `len` bytes from the current offset without copying and advances
+    /// the buffer, where `len` is an unsigned variable-length integer prefix
+    /// in network byte-order.
+    </span><span class="kw">pub fn </span>get_bytes_with_varint_length(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;Octets&lt;<span class="lifetime">'a</span>&gt;&gt; {
+        <span class="kw">let </span>len = <span class="self">self</span>.get_varint()<span class="question-mark">?</span>;
+        <span class="self">self</span>.get_bytes(len <span class="kw">as </span>usize)
+    }
+
+    <span class="doccomment">/// Reads `len` bytes from the current offset without copying and without
+    /// advancing the buffer.
+    </span><span class="kw">pub fn </span>peek_bytes(<span class="kw-2">&amp;</span><span class="self">self</span>, len: usize) -&gt; <span class="prelude-ty">Result</span>&lt;Octets&lt;<span class="lifetime">'a</span>&gt;&gt; {
+        <span class="kw">if </span><span class="self">self</span>.cap() &lt; len {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(BufferTooShortError);
+        }
+
+        <span class="kw">let </span>out = Octets {
+            buf: <span class="kw-2">&amp;</span><span class="self">self</span>.buf[<span class="self">self</span>.off..<span class="self">self</span>.off + len],
+            off: <span class="number">0</span>,
+        };
+
+        <span class="prelude-val">Ok</span>(out)
+    }
+
+    <span class="doccomment">/// Returns a slice of `len` elements from the current offset.
+    </span><span class="kw">pub fn </span>slice(<span class="kw-2">&amp;</span><span class="self">self</span>, len: usize) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;</span><span class="lifetime">'a </span>[u8]&gt; {
+        <span class="kw">if </span>len &gt; <span class="self">self</span>.cap() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(BufferTooShortError);
+        }
+
+        <span class="prelude-val">Ok</span>(<span class="kw-2">&amp;</span><span class="self">self</span>.buf[<span class="self">self</span>.off..<span class="self">self</span>.off + len])
+    }
+
+    <span class="doccomment">/// Returns a slice of `len` elements from the end of the buffer.
+    </span><span class="kw">pub fn </span>slice_last(<span class="kw-2">&amp;</span><span class="self">self</span>, len: usize) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;</span><span class="lifetime">'a </span>[u8]&gt; {
+        <span class="kw">if </span>len &gt; <span class="self">self</span>.cap() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(BufferTooShortError);
+        }
+
+        <span class="kw">let </span>cap = <span class="self">self</span>.cap();
+        <span class="prelude-val">Ok</span>(<span class="kw-2">&amp;</span><span class="self">self</span>.buf[cap - len..])
+    }
+
+    <span class="doccomment">/// Advances the buffer's offset.
+    </span><span class="kw">pub fn </span>skip(<span class="kw-2">&amp;mut </span><span class="self">self</span>, skip: usize) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if </span>skip &gt; <span class="self">self</span>.cap() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(BufferTooShortError);
+        }
+
+        <span class="self">self</span>.off += skip;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Returns the remaining capacity in the buffer.
+    </span><span class="kw">pub fn </span>cap(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.buf.len() - <span class="self">self</span>.off
+    }
+
+    <span class="doccomment">/// Returns the total length of the buffer.
+    </span><span class="kw">pub fn </span>len(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.buf.len()
+    }
+
+    <span class="doccomment">/// Returns `true` if the buffer is empty.
+    </span><span class="kw">pub fn </span>is_empty(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.buf.len() == <span class="number">0
+    </span>}
+
+    <span class="doccomment">/// Returns the current offset of the buffer.
+    </span><span class="kw">pub fn </span>off(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.off
+    }
+
+    <span class="doccomment">/// Returns a reference to the internal buffer.
+    </span><span class="kw">pub fn </span>buf(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span><span class="lifetime">'a </span>[u8] {
+        <span class="self">self</span>.buf
+    }
+
+    <span class="doccomment">/// Copies the buffer from the current offset into a new `Vec&lt;u8&gt;`.
+    </span><span class="kw">pub fn </span>to_vec(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; Vec&lt;u8&gt; {
+        <span class="self">self</span>.as_ref().to_vec()
+    }
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; AsRef&lt;[u8]&gt; <span class="kw">for </span>Octets&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="kw">fn </span>as_ref(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>[u8] {
+        <span class="kw-2">&amp;</span><span class="self">self</span>.buf[<span class="self">self</span>.off..]
+    }
+}
+
+<span class="doccomment">/// A zero-copy mutable byte buffer.
+///
+/// Like `Octets` but mutable.
+</span><span class="attr">#[derive(Debug, PartialEq, Eq)]
+</span><span class="kw">pub struct </span>OctetsMut&lt;<span class="lifetime">'a</span>&gt; {
+    buf: <span class="kw-2">&amp;</span><span class="lifetime">'a </span><span class="kw-2">mut </span>[u8],
+    off: usize,
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; OctetsMut&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="doccomment">/// Creates an `OctetsMut` from the given slice, without copying.
+    ///
+    /// Since there's no copy, the input slice needs to be mutable to allow
+    /// modifications.
+    </span><span class="kw">pub fn </span>with_slice(buf: <span class="kw-2">&amp;</span><span class="lifetime">'a </span><span class="kw-2">mut </span>[u8]) -&gt; <span class="self">Self </span>{
+        OctetsMut { buf, off: <span class="number">0 </span>}
+    }
+
+    <span class="doccomment">/// Reads an unsigned 8-bit integer from the current offset and advances
+    /// the buffer.
+    </span><span class="kw">pub fn </span>get_u8(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;u8&gt; {
+        <span class="macro">get_u!</span>(<span class="self">self</span>, u8, <span class="number">1</span>)
+    }
+
+    <span class="doccomment">/// Reads an unsigned 8-bit integer from the current offset without
+    /// advancing the buffer.
+    </span><span class="kw">pub fn </span>peek_u8(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;u8&gt; {
+        <span class="macro">peek_u!</span>(<span class="self">self</span>, u8, <span class="number">1</span>)
+    }
+
+    <span class="doccomment">/// Writes an unsigned 8-bit integer at the current offset and advances
+    /// the buffer.
+    </span><span class="kw">pub fn </span>put_u8(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u8) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;mut </span>[u8]&gt; {
+        <span class="macro">put_u!</span>(<span class="self">self</span>, u8, v, <span class="number">1</span>)
+    }
+
+    <span class="doccomment">/// Reads an unsigned 16-bit integer in network byte-order from the current
+    /// offset and advances the buffer.
+    </span><span class="kw">pub fn </span>get_u16(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;u16&gt; {
+        <span class="macro">get_u!</span>(<span class="self">self</span>, u16, <span class="number">2</span>)
+    }
+
+    <span class="doccomment">/// Writes an unsigned 16-bit integer in network byte-order at the current
+    /// offset and advances the buffer.
+    </span><span class="kw">pub fn </span>put_u16(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u16) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;mut </span>[u8]&gt; {
+        <span class="macro">put_u!</span>(<span class="self">self</span>, u16, v, <span class="number">2</span>)
+    }
+
+    <span class="doccomment">/// Reads an unsigned 24-bit integer in network byte-order from the current
+    /// offset and advances the buffer.
+    </span><span class="kw">pub fn </span>get_u24(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;u32&gt; {
+        <span class="macro">get_u!</span>(<span class="self">self</span>, u32, <span class="number">3</span>)
+    }
+
+    <span class="doccomment">/// Writes an unsigned 24-bit integer in network byte-order at the current
+    /// offset and advances the buffer.
+    </span><span class="kw">pub fn </span>put_u24(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u32) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;mut </span>[u8]&gt; {
+        <span class="macro">put_u!</span>(<span class="self">self</span>, u32, v, <span class="number">3</span>)
+    }
+
+    <span class="doccomment">/// Reads an unsigned 32-bit integer in network byte-order from the current
+    /// offset and advances the buffer.
+    </span><span class="kw">pub fn </span>get_u32(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;u32&gt; {
+        <span class="macro">get_u!</span>(<span class="self">self</span>, u32, <span class="number">4</span>)
+    }
+
+    <span class="doccomment">/// Writes an unsigned 32-bit integer in network byte-order at the current
+    /// offset and advances the buffer.
+    </span><span class="kw">pub fn </span>put_u32(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u32) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;mut </span>[u8]&gt; {
+        <span class="macro">put_u!</span>(<span class="self">self</span>, u32, v, <span class="number">4</span>)
+    }
+
+    <span class="doccomment">/// Reads an unsigned 64-bit integer in network byte-order from the current
+    /// offset and advances the buffer.
+    </span><span class="kw">pub fn </span>get_u64(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;u64&gt; {
+        <span class="macro">get_u!</span>(<span class="self">self</span>, u64, <span class="number">8</span>)
+    }
+
+    <span class="doccomment">/// Writes an unsigned 64-bit integer in network byte-order at the current
+    /// offset and advances the buffer.
+    </span><span class="kw">pub fn </span>put_u64(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;mut </span>[u8]&gt; {
+        <span class="macro">put_u!</span>(<span class="self">self</span>, u64, v, <span class="number">8</span>)
+    }
+
+    <span class="doccomment">/// Reads an unsigned variable-length integer in network byte-order from
+    /// the current offset and advances the buffer.
+    </span><span class="kw">pub fn </span>get_varint(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;u64&gt; {
+        <span class="kw">let </span>first = <span class="self">self</span>.peek_u8()<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>len = varint_parse_len(first);
+
+        <span class="kw">if </span>len &gt; <span class="self">self</span>.cap() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(BufferTooShortError);
+        }
+
+        <span class="kw">let </span>out = <span class="kw">match </span>len {
+            <span class="number">1 </span>=&gt; u64::from(<span class="self">self</span>.get_u8()<span class="question-mark">?</span>),
+
+            <span class="number">2 </span>=&gt; u64::from(<span class="self">self</span>.get_u16()<span class="question-mark">? </span>&amp; <span class="number">0x3fff</span>),
+
+            <span class="number">4 </span>=&gt; u64::from(<span class="self">self</span>.get_u32()<span class="question-mark">? </span>&amp; <span class="number">0x3fffffff</span>),
+
+            <span class="number">8 </span>=&gt; <span class="self">self</span>.get_u64()<span class="question-mark">? </span>&amp; <span class="number">0x3fffffffffffffff</span>,
+
+            <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+        };
+
+        <span class="prelude-val">Ok</span>(out)
+    }
+
+    <span class="doccomment">/// Writes an unsigned variable-length integer in network byte-order at the
+    /// current offset and advances the buffer.
+    </span><span class="kw">pub fn </span>put_varint(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;mut </span>[u8]&gt; {
+        <span class="self">self</span>.put_varint_with_len(v, varint_len(v))
+    }
+
+    <span class="doccomment">/// Writes an unsigned variable-length integer of the specified length, in
+    /// network byte-order at the current offset and advances the buffer.
+    </span><span class="kw">pub fn </span>put_varint_with_len(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64, len: usize,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;mut </span>[u8]&gt; {
+        <span class="kw">if </span><span class="self">self</span>.cap() &lt; len {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(BufferTooShortError);
+        }
+
+        <span class="kw">let </span>buf = <span class="kw">match </span>len {
+            <span class="number">1 </span>=&gt; <span class="self">self</span>.put_u8(v <span class="kw">as </span>u8)<span class="question-mark">?</span>,
+
+            <span class="number">2 </span>=&gt; {
+                <span class="kw">let </span>buf = <span class="self">self</span>.put_u16(v <span class="kw">as </span>u16)<span class="question-mark">?</span>;
+                buf[<span class="number">0</span>] |= <span class="number">0x40</span>;
+                buf
+            },
+
+            <span class="number">4 </span>=&gt; {
+                <span class="kw">let </span>buf = <span class="self">self</span>.put_u32(v <span class="kw">as </span>u32)<span class="question-mark">?</span>;
+                buf[<span class="number">0</span>] |= <span class="number">0x80</span>;
+                buf
+            },
+
+            <span class="number">8 </span>=&gt; {
+                <span class="kw">let </span>buf = <span class="self">self</span>.put_u64(v)<span class="question-mark">?</span>;
+                buf[<span class="number">0</span>] |= <span class="number">0xc0</span>;
+                buf
+            },
+
+            <span class="kw">_ </span>=&gt; <span class="macro">panic!</span>(<span class="string">"value is too large for varint"</span>),
+        };
+
+        <span class="prelude-val">Ok</span>(buf)
+    }
+
+    <span class="doccomment">/// Reads `len` bytes from the current offset without copying and advances
+    /// the buffer.
+    </span><span class="kw">pub fn </span>get_bytes(<span class="kw-2">&amp;mut </span><span class="self">self</span>, len: usize) -&gt; <span class="prelude-ty">Result</span>&lt;Octets&gt; {
+        <span class="kw">if </span><span class="self">self</span>.cap() &lt; len {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(BufferTooShortError);
+        }
+
+        <span class="kw">let </span>out = Octets {
+            buf: <span class="kw-2">&amp;</span><span class="self">self</span>.buf[<span class="self">self</span>.off..<span class="self">self</span>.off + len],
+            off: <span class="number">0</span>,
+        };
+
+        <span class="self">self</span>.off += len;
+
+        <span class="prelude-val">Ok</span>(out)
+    }
+
+    <span class="doccomment">/// Reads `len` bytes from the current offset without copying and advances
+    /// the buffer.
+    </span><span class="kw">pub fn </span>get_bytes_mut(<span class="kw-2">&amp;mut </span><span class="self">self</span>, len: usize) -&gt; <span class="prelude-ty">Result</span>&lt;OctetsMut&gt; {
+        <span class="kw">if </span><span class="self">self</span>.cap() &lt; len {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(BufferTooShortError);
+        }
+
+        <span class="kw">let </span>out = OctetsMut {
+            buf: <span class="kw-2">&amp;mut </span><span class="self">self</span>.buf[<span class="self">self</span>.off..<span class="self">self</span>.off + len],
+            off: <span class="number">0</span>,
+        };
+
+        <span class="self">self</span>.off += len;
+
+        <span class="prelude-val">Ok</span>(out)
+    }
+
+    <span class="doccomment">/// Reads `len` bytes from the current offset without copying and advances
+    /// the buffer, where `len` is an unsigned 8-bit integer prefix.
+    </span><span class="kw">pub fn </span>get_bytes_with_u8_length(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;Octets&gt; {
+        <span class="kw">let </span>len = <span class="self">self</span>.get_u8()<span class="question-mark">?</span>;
+        <span class="self">self</span>.get_bytes(len <span class="kw">as </span>usize)
+    }
+
+    <span class="doccomment">/// Reads `len` bytes from the current offset without copying and advances
+    /// the buffer, where `len` is an unsigned 16-bit integer prefix in network
+    /// byte-order.
+    </span><span class="kw">pub fn </span>get_bytes_with_u16_length(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;Octets&gt; {
+        <span class="kw">let </span>len = <span class="self">self</span>.get_u16()<span class="question-mark">?</span>;
+        <span class="self">self</span>.get_bytes(len <span class="kw">as </span>usize)
+    }
+
+    <span class="doccomment">/// Reads `len` bytes from the current offset without copying and advances
+    /// the buffer, where `len` is an unsigned variable-length integer prefix
+    /// in network byte-order.
+    </span><span class="kw">pub fn </span>get_bytes_with_varint_length(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;Octets&gt; {
+        <span class="kw">let </span>len = <span class="self">self</span>.get_varint()<span class="question-mark">?</span>;
+        <span class="self">self</span>.get_bytes(len <span class="kw">as </span>usize)
+    }
+
+    <span class="doccomment">/// Reads `len` bytes from the current offset without copying and without
+    /// advancing the buffer.
+    </span><span class="kw">pub fn </span>peek_bytes(<span class="kw-2">&amp;mut </span><span class="self">self</span>, len: usize) -&gt; <span class="prelude-ty">Result</span>&lt;Octets&gt; {
+        <span class="kw">if </span><span class="self">self</span>.cap() &lt; len {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(BufferTooShortError);
+        }
+
+        <span class="kw">let </span>out = Octets {
+            buf: <span class="kw-2">&amp;</span><span class="self">self</span>.buf[<span class="self">self</span>.off..<span class="self">self</span>.off + len],
+            off: <span class="number">0</span>,
+        };
+
+        <span class="prelude-val">Ok</span>(out)
+    }
+
+    <span class="doccomment">/// Reads `len` bytes from the current offset without copying and without
+    /// advancing the buffer.
+    </span><span class="kw">pub fn </span>peek_bytes_mut(<span class="kw-2">&amp;mut </span><span class="self">self</span>, len: usize) -&gt; <span class="prelude-ty">Result</span>&lt;OctetsMut&gt; {
+        <span class="kw">if </span><span class="self">self</span>.cap() &lt; len {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(BufferTooShortError);
+        }
+
+        <span class="kw">let </span>out = OctetsMut {
+            buf: <span class="kw-2">&amp;mut </span><span class="self">self</span>.buf[<span class="self">self</span>.off..<span class="self">self</span>.off + len],
+            off: <span class="number">0</span>,
+        };
+
+        <span class="prelude-val">Ok</span>(out)
+    }
+
+    <span class="doccomment">/// Writes `len` bytes from the current offset without copying and advances
+    /// the buffer.
+    </span><span class="kw">pub fn </span>put_bytes(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: <span class="kw-2">&amp;</span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>len = v.len();
+
+        <span class="kw">if </span><span class="self">self</span>.cap() &lt; len {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(BufferTooShortError);
+        }
+
+        <span class="kw">if </span>len == <span class="number">0 </span>{
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+        }
+
+        <span class="self">self</span>.as_mut()[..len].copy_from_slice(v);
+
+        <span class="self">self</span>.off += len;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Splits the buffer in two at the given absolute offset.
+    </span><span class="kw">pub fn </span>split_at(<span class="kw-2">&amp;mut </span><span class="self">self</span>, off: usize) -&gt; <span class="prelude-ty">Result</span>&lt;(OctetsMut, OctetsMut)&gt; {
+        <span class="kw">if </span><span class="self">self</span>.len() &lt; off {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(BufferTooShortError);
+        }
+
+        <span class="kw">let </span>(left, right) = <span class="self">self</span>.buf.split_at_mut(off);
+
+        <span class="kw">let </span>first = OctetsMut { buf: left, off: <span class="number">0 </span>};
+
+        <span class="kw">let </span>last = OctetsMut { buf: right, off: <span class="number">0 </span>};
+
+        <span class="prelude-val">Ok</span>((first, last))
+    }
+
+    <span class="doccomment">/// Returns a slice of `len` elements from the current offset.
+    </span><span class="kw">pub fn </span>slice(<span class="kw-2">&amp;</span><span class="lifetime">'a </span><span class="kw-2">mut </span><span class="self">self</span>, len: usize) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;</span><span class="lifetime">'a </span><span class="kw-2">mut </span>[u8]&gt; {
+        <span class="kw">if </span>len &gt; <span class="self">self</span>.cap() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(BufferTooShortError);
+        }
+
+        <span class="prelude-val">Ok</span>(<span class="kw-2">&amp;mut </span><span class="self">self</span>.buf[<span class="self">self</span>.off..<span class="self">self</span>.off + len])
+    }
+
+    <span class="doccomment">/// Returns a slice of `len` elements from the end of the buffer.
+    </span><span class="kw">pub fn </span>slice_last(<span class="kw-2">&amp;</span><span class="lifetime">'a </span><span class="kw-2">mut </span><span class="self">self</span>, len: usize) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;</span><span class="lifetime">'a </span><span class="kw-2">mut </span>[u8]&gt; {
+        <span class="kw">if </span>len &gt; <span class="self">self</span>.cap() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(BufferTooShortError);
+        }
+
+        <span class="kw">let </span>cap = <span class="self">self</span>.cap();
+        <span class="prelude-val">Ok</span>(<span class="kw-2">&amp;mut </span><span class="self">self</span>.buf[cap - len..])
+    }
+
+    <span class="doccomment">/// Advances the buffer's offset.
+    </span><span class="kw">pub fn </span>skip(<span class="kw-2">&amp;mut </span><span class="self">self</span>, skip: usize) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if </span>skip &gt; <span class="self">self</span>.cap() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(BufferTooShortError);
+        }
+
+        <span class="self">self</span>.off += skip;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Returns the remaining capacity in the buffer.
+    </span><span class="kw">pub fn </span>cap(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.buf.len() - <span class="self">self</span>.off
+    }
+
+    <span class="doccomment">/// Returns the total length of the buffer.
+    </span><span class="kw">pub fn </span>len(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.buf.len()
+    }
+
+    <span class="doccomment">/// Returns `true` if the buffer is empty.
+    </span><span class="kw">pub fn </span>is_empty(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.buf.len() == <span class="number">0
+    </span>}
+
+    <span class="doccomment">/// Returns the current offset of the buffer.
+    </span><span class="kw">pub fn </span>off(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.off
+    }
+
+    <span class="doccomment">/// Returns a reference to the internal buffer.
+    </span><span class="kw">pub fn </span>buf(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>[u8] {
+        <span class="self">self</span>.buf
+    }
+
+    <span class="doccomment">/// Copies the buffer from the current offset into a new `Vec&lt;u8&gt;`.
+    </span><span class="kw">pub fn </span>to_vec(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; Vec&lt;u8&gt; {
+        <span class="self">self</span>.as_ref().to_vec()
+    }
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; AsRef&lt;[u8]&gt; <span class="kw">for </span>OctetsMut&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="kw">fn </span>as_ref(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>[u8] {
+        <span class="kw-2">&amp;</span><span class="self">self</span>.buf[<span class="self">self</span>.off..]
+    }
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; AsMut&lt;[u8]&gt; <span class="kw">for </span>OctetsMut&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="kw">fn </span>as_mut(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;mut </span>[u8] {
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>.buf[<span class="self">self</span>.off..]
+    }
+}
+
+<span class="doccomment">/// Returns how many bytes it would take to encode `v` as a variable-length
+/// integer.
+</span><span class="kw">pub const fn </span>varint_len(v: u64) -&gt; usize {
+    <span class="kw">if </span>v &lt;= <span class="number">63 </span>{
+        <span class="number">1
+    </span>} <span class="kw">else if </span>v &lt;= <span class="number">16383 </span>{
+        <span class="number">2
+    </span>} <span class="kw">else if </span>v &lt;= <span class="number">1_073_741_823 </span>{
+        <span class="number">4
+    </span>} <span class="kw">else if </span>v &lt;= <span class="number">4_611_686_018_427_387_903 </span>{
+        <span class="number">8
+    </span>} <span class="kw">else </span>{
+        <span class="macro">unreachable!</span>()
+    }
+}
+
+<span class="doccomment">/// Returns how long the variable-length integer is, given its first byte.
+</span><span class="kw">pub const fn </span>varint_parse_len(first: u8) -&gt; usize {
+    <span class="kw">match </span>first &gt;&gt; <span class="number">6 </span>{
+        <span class="number">0 </span>=&gt; <span class="number">1</span>,
+        <span class="number">1 </span>=&gt; <span class="number">2</span>,
+        <span class="number">2 </span>=&gt; <span class="number">4</span>,
+        <span class="number">3 </span>=&gt; <span class="number">8</span>,
+        <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>get_u() {
+        <span class="kw">let </span>d = [
+            <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>, <span class="number">13</span>, <span class="number">14</span>, <span class="number">15</span>, <span class="number">16</span>, <span class="number">17</span>, <span class="number">18</span>,
+        ];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">18</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(b.get_u8().unwrap(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">17</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">1</span>);
+
+        <span class="macro">assert_eq!</span>(b.get_u16().unwrap(), <span class="number">0x203</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">15</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">3</span>);
+
+        <span class="macro">assert_eq!</span>(b.get_u24().unwrap(), <span class="number">0x40506</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">12</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">6</span>);
+
+        <span class="macro">assert_eq!</span>(b.get_u32().unwrap(), <span class="number">0x0708090a</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">8</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">10</span>);
+
+        <span class="macro">assert_eq!</span>(b.get_u64().unwrap(), <span class="number">0x0b0c0d0e0f101112</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">18</span>);
+
+        <span class="macro">assert!</span>(b.get_u8().is_err());
+        <span class="macro">assert!</span>(b.get_u16().is_err());
+        <span class="macro">assert!</span>(b.get_u24().is_err());
+        <span class="macro">assert!</span>(b.get_u32().is_err());
+        <span class="macro">assert!</span>(b.get_u64().is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>get_u_mut() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [
+            <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>, <span class="number">13</span>, <span class="number">14</span>, <span class="number">15</span>, <span class="number">16</span>, <span class="number">17</span>, <span class="number">18</span>,
+        ];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">18</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(b.get_u8().unwrap(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">17</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">1</span>);
+
+        <span class="macro">assert_eq!</span>(b.get_u16().unwrap(), <span class="number">0x203</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">15</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">3</span>);
+
+        <span class="macro">assert_eq!</span>(b.get_u24().unwrap(), <span class="number">0x40506</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">12</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">6</span>);
+
+        <span class="macro">assert_eq!</span>(b.get_u32().unwrap(), <span class="number">0x0708090a</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">8</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">10</span>);
+
+        <span class="macro">assert_eq!</span>(b.get_u64().unwrap(), <span class="number">0x0b0c0d0e0f101112</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">18</span>);
+
+        <span class="macro">assert!</span>(b.get_u8().is_err());
+        <span class="macro">assert!</span>(b.get_u16().is_err());
+        <span class="macro">assert!</span>(b.get_u24().is_err());
+        <span class="macro">assert!</span>(b.get_u32().is_err());
+        <span class="macro">assert!</span>(b.get_u64().is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>peek_u() {
+        <span class="kw">let </span>d = [<span class="number">1</span>, <span class="number">2</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(b.peek_u8().unwrap(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(b.peek_u8().unwrap(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+
+        b.get_u16().unwrap();
+
+        <span class="macro">assert!</span>(b.peek_u8().is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>peek_u_mut() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">1</span>, <span class="number">2</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(b.peek_u8().unwrap(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(b.peek_u8().unwrap(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+
+        b.get_u16().unwrap();
+
+        <span class="macro">assert!</span>(b.peek_u8().is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>get_bytes() {
+        <span class="kw">let </span>d = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(b.get_bytes(<span class="number">5</span>).unwrap().as_ref(), [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>]);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">5</span>);
+
+        <span class="macro">assert_eq!</span>(b.get_bytes(<span class="number">3</span>).unwrap().as_ref(), [<span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>]);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">8</span>);
+
+        <span class="macro">assert!</span>(b.get_bytes(<span class="number">3</span>).is_err());
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">8</span>);
+
+        <span class="macro">assert_eq!</span>(b.get_bytes(<span class="number">2</span>).unwrap().as_ref(), [<span class="number">9</span>, <span class="number">10</span>]);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">10</span>);
+
+        <span class="macro">assert!</span>(b.get_bytes(<span class="number">2</span>).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>get_bytes_mut() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(b.get_bytes(<span class="number">5</span>).unwrap().as_ref(), [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>]);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">5</span>);
+
+        <span class="macro">assert_eq!</span>(b.get_bytes(<span class="number">3</span>).unwrap().as_ref(), [<span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>]);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">8</span>);
+
+        <span class="macro">assert!</span>(b.get_bytes(<span class="number">3</span>).is_err());
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">8</span>);
+
+        <span class="macro">assert_eq!</span>(b.get_bytes(<span class="number">2</span>).unwrap().as_ref(), [<span class="number">9</span>, <span class="number">10</span>]);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">10</span>);
+
+        <span class="macro">assert!</span>(b.get_bytes(<span class="number">2</span>).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>peek_bytes() {
+        <span class="kw">let </span>d = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(b.peek_bytes(<span class="number">5</span>).unwrap().as_ref(), [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>]);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(b.peek_bytes(<span class="number">5</span>).unwrap().as_ref(), [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>]);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+
+        b.get_bytes(<span class="number">5</span>).unwrap();
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>peek_bytes_mut() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(b.peek_bytes(<span class="number">5</span>).unwrap().as_ref(), [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>]);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(b.peek_bytes(<span class="number">5</span>).unwrap().as_ref(), [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>]);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+
+        b.get_bytes(<span class="number">5</span>).unwrap();
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>get_varint() {
+        <span class="kw">let </span>d = [<span class="number">0xc2</span>, <span class="number">0x19</span>, <span class="number">0x7c</span>, <span class="number">0x5e</span>, <span class="number">0xff</span>, <span class="number">0x14</span>, <span class="number">0xe8</span>, <span class="number">0x8c</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(b.get_varint().unwrap(), <span class="number">151288809941952652</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">8</span>);
+
+        <span class="kw">let </span>d = [<span class="number">0x9d</span>, <span class="number">0x7f</span>, <span class="number">0x3e</span>, <span class="number">0x7d</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(b.get_varint().unwrap(), <span class="number">494878333</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">4</span>);
+
+        <span class="kw">let </span>d = [<span class="number">0x7b</span>, <span class="number">0xbd</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(b.get_varint().unwrap(), <span class="number">15293</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">2</span>);
+
+        <span class="kw">let </span>d = [<span class="number">0x40</span>, <span class="number">0x25</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(b.get_varint().unwrap(), <span class="number">37</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">2</span>);
+
+        <span class="kw">let </span>d = [<span class="number">0x25</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(b.get_varint().unwrap(), <span class="number">37</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">1</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>get_varint_mut() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0xc2</span>, <span class="number">0x19</span>, <span class="number">0x7c</span>, <span class="number">0x5e</span>, <span class="number">0xff</span>, <span class="number">0x14</span>, <span class="number">0xe8</span>, <span class="number">0x8c</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert_eq!</span>(b.get_varint().unwrap(), <span class="number">151288809941952652</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">8</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0x9d</span>, <span class="number">0x7f</span>, <span class="number">0x3e</span>, <span class="number">0x7d</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert_eq!</span>(b.get_varint().unwrap(), <span class="number">494878333</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">4</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0x7b</span>, <span class="number">0xbd</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert_eq!</span>(b.get_varint().unwrap(), <span class="number">15293</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">2</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0x40</span>, <span class="number">0x25</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert_eq!</span>(b.get_varint().unwrap(), <span class="number">37</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">2</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0x25</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert_eq!</span>(b.get_varint().unwrap(), <span class="number">37</span>);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">1</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>put_varint() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0</span>; <span class="number">8</span>];
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            <span class="macro">assert!</span>(b.put_varint(<span class="number">151288809941952652</span>).is_ok());
+            <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+            <span class="macro">assert_eq!</span>(b.off(), <span class="number">8</span>);
+        }
+        <span class="kw">let </span>exp = [<span class="number">0xc2</span>, <span class="number">0x19</span>, <span class="number">0x7c</span>, <span class="number">0x5e</span>, <span class="number">0xff</span>, <span class="number">0x14</span>, <span class="number">0xe8</span>, <span class="number">0x8c</span>];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>d, <span class="kw-2">&amp;</span>exp);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0</span>; <span class="number">4</span>];
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            <span class="macro">assert!</span>(b.put_varint(<span class="number">494878333</span>).is_ok());
+            <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+            <span class="macro">assert_eq!</span>(b.off(), <span class="number">4</span>);
+        }
+        <span class="kw">let </span>exp = [<span class="number">0x9d</span>, <span class="number">0x7f</span>, <span class="number">0x3e</span>, <span class="number">0x7d</span>];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>d, <span class="kw-2">&amp;</span>exp);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0</span>; <span class="number">2</span>];
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            <span class="macro">assert!</span>(b.put_varint(<span class="number">15293</span>).is_ok());
+            <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+            <span class="macro">assert_eq!</span>(b.off(), <span class="number">2</span>);
+        }
+        <span class="kw">let </span>exp = [<span class="number">0x7b</span>, <span class="number">0xbd</span>];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>d, <span class="kw-2">&amp;</span>exp);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0</span>; <span class="number">1</span>];
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            <span class="macro">assert!</span>(b.put_varint(<span class="number">37</span>).is_ok());
+            <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+            <span class="macro">assert_eq!</span>(b.off(), <span class="number">1</span>);
+        }
+        <span class="kw">let </span>exp = [<span class="number">0x25</span>];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>d, <span class="kw-2">&amp;</span>exp);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0</span>; <span class="number">3</span>];
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            <span class="macro">assert!</span>(b.put_varint(<span class="number">151288809941952652</span>).is_err());
+            <span class="macro">assert_eq!</span>(b.cap(), <span class="number">3</span>);
+            <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+        }
+        <span class="kw">let </span>exp = [<span class="number">0</span>; <span class="number">3</span>];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>d, <span class="kw-2">&amp;</span>exp);
+    }
+
+    <span class="attr">#[test]
+    #[should_panic]
+    </span><span class="kw">fn </span>varint_too_large() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0</span>; <span class="number">3</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert!</span>(b.put_varint(u64::MAX).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>put_u() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0</span>; <span class="number">18</span>];
+
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            <span class="macro">assert_eq!</span>(b.cap(), <span class="number">18</span>);
+            <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+
+            <span class="macro">assert!</span>(b.put_u8(<span class="number">1</span>).is_ok());
+            <span class="macro">assert_eq!</span>(b.cap(), <span class="number">17</span>);
+            <span class="macro">assert_eq!</span>(b.off(), <span class="number">1</span>);
+
+            <span class="macro">assert!</span>(b.put_u16(<span class="number">0x203</span>).is_ok());
+            <span class="macro">assert_eq!</span>(b.cap(), <span class="number">15</span>);
+            <span class="macro">assert_eq!</span>(b.off(), <span class="number">3</span>);
+
+            <span class="macro">assert!</span>(b.put_u24(<span class="number">0x40506</span>).is_ok());
+            <span class="macro">assert_eq!</span>(b.cap(), <span class="number">12</span>);
+            <span class="macro">assert_eq!</span>(b.off(), <span class="number">6</span>);
+
+            <span class="macro">assert!</span>(b.put_u32(<span class="number">0x0708090a</span>).is_ok());
+            <span class="macro">assert_eq!</span>(b.cap(), <span class="number">8</span>);
+            <span class="macro">assert_eq!</span>(b.off(), <span class="number">10</span>);
+
+            <span class="macro">assert!</span>(b.put_u64(<span class="number">0x0b0c0d0e0f101112</span>).is_ok());
+            <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+            <span class="macro">assert_eq!</span>(b.off(), <span class="number">18</span>);
+
+            <span class="macro">assert!</span>(b.put_u8(<span class="number">1</span>).is_err());
+        }
+
+        <span class="kw">let </span>exp = [
+            <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>, <span class="number">13</span>, <span class="number">14</span>, <span class="number">15</span>, <span class="number">16</span>, <span class="number">17</span>, <span class="number">18</span>,
+        ];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>d, <span class="kw-2">&amp;</span>exp);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>put_bytes() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0</span>; <span class="number">5</span>];
+
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            <span class="macro">assert_eq!</span>(b.cap(), <span class="number">5</span>);
+            <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+
+            <span class="kw">let </span>p = [<span class="number">0x0a</span>, <span class="number">0x0b</span>, <span class="number">0x0c</span>, <span class="number">0x0d</span>, <span class="number">0x0e</span>];
+            <span class="macro">assert!</span>(b.put_bytes(<span class="kw-2">&amp;</span>p).is_ok());
+            <span class="macro">assert_eq!</span>(b.cap(), <span class="number">0</span>);
+            <span class="macro">assert_eq!</span>(b.off(), <span class="number">5</span>);
+
+            <span class="macro">assert!</span>(b.put_u8(<span class="number">1</span>).is_err());
+        }
+
+        <span class="kw">let </span>exp = [<span class="number">0xa</span>, <span class="number">0xb</span>, <span class="number">0xc</span>, <span class="number">0xd</span>, <span class="number">0xe</span>];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>d, <span class="kw-2">&amp;</span>exp);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>split() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="string">b"helloworld"</span>.to_vec();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(b.as_ref(), <span class="string">b"helloworld"</span>);
+
+        <span class="macro">assert!</span>(b.get_bytes(<span class="number">5</span>).is_ok());
+        <span class="macro">assert_eq!</span>(b.cap(), <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(b.off(), <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(b.as_ref(), <span class="string">b"world"</span>);
+
+        <span class="kw">let </span>off = b.off();
+
+        <span class="kw">let </span>(first, last) = b.split_at(off).unwrap();
+        <span class="macro">assert_eq!</span>(first.cap(), <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(first.off(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(first.as_ref(), <span class="string">b"hello"</span>);
+
+        <span class="macro">assert_eq!</span>(last.cap(), <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(last.off(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(last.as_ref(), <span class="string">b"world"</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>split_at() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="string">b"helloworld"</span>.to_vec();
+
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            <span class="kw">let </span>(first, second) = b.split_at(<span class="number">5</span>).unwrap();
+
+            <span class="kw">let </span><span class="kw-2">mut </span>exp1 = <span class="string">b"hello"</span>.to_vec();
+            <span class="macro">assert_eq!</span>(first.as_ref(), <span class="kw-2">&amp;mut </span>exp1[..]);
+
+            <span class="kw">let </span><span class="kw-2">mut </span>exp2 = <span class="string">b"world"</span>.to_vec();
+            <span class="macro">assert_eq!</span>(second.as_ref(), <span class="kw-2">&amp;mut </span>exp2[..]);
+        }
+
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            <span class="kw">let </span>(first, second) = b.split_at(<span class="number">10</span>).unwrap();
+
+            <span class="kw">let </span><span class="kw-2">mut </span>exp1 = <span class="string">b"helloworld"</span>.to_vec();
+            <span class="macro">assert_eq!</span>(first.as_ref(), <span class="kw-2">&amp;mut </span>exp1[..]);
+
+            <span class="kw">let </span><span class="kw-2">mut </span>exp2 = <span class="string">b""</span>.to_vec();
+            <span class="macro">assert_eq!</span>(second.as_ref(), <span class="kw-2">&amp;mut </span>exp2[..]);
+        }
+
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            <span class="kw">let </span>(first, second) = b.split_at(<span class="number">9</span>).unwrap();
+
+            <span class="kw">let </span><span class="kw-2">mut </span>exp1 = <span class="string">b"helloworl"</span>.to_vec();
+            <span class="macro">assert_eq!</span>(first.as_ref(), <span class="kw-2">&amp;mut </span>exp1[..]);
+
+            <span class="kw">let </span><span class="kw-2">mut </span>exp2 = <span class="string">b"d"</span>.to_vec();
+            <span class="macro">assert_eq!</span>(second.as_ref(), <span class="kw-2">&amp;mut </span>exp2[..]);
+        }
+
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            <span class="macro">assert!</span>(b.split_at(<span class="number">11</span>).is_err());
+        }
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>slice() {
+        <span class="kw">let </span>d = <span class="string">b"helloworld"</span>.to_vec();
+
+        {
+            <span class="kw">let </span>b = Octets::with_slice(<span class="kw-2">&amp;</span>d);
+            <span class="kw">let </span>exp = <span class="string">b"hello"</span>.to_vec();
+            <span class="macro">assert_eq!</span>(b.slice(<span class="number">5</span>), <span class="prelude-val">Ok</span>(<span class="kw-2">&amp;</span>exp[..]));
+        }
+
+        {
+            <span class="kw">let </span>b = Octets::with_slice(<span class="kw-2">&amp;</span>d);
+            <span class="kw">let </span>exp = <span class="string">b""</span>.to_vec();
+            <span class="macro">assert_eq!</span>(b.slice(<span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="kw-2">&amp;</span>exp[..]));
+        }
+
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = Octets::with_slice(<span class="kw-2">&amp;</span>d);
+            b.get_bytes(<span class="number">5</span>).unwrap();
+
+            <span class="kw">let </span>exp = <span class="string">b"world"</span>.to_vec();
+            <span class="macro">assert_eq!</span>(b.slice(<span class="number">5</span>), <span class="prelude-val">Ok</span>(<span class="kw-2">&amp;</span>exp[..]));
+        }
+
+        {
+            <span class="kw">let </span>b = Octets::with_slice(<span class="kw-2">&amp;</span>d);
+            <span class="macro">assert!</span>(b.slice(<span class="number">11</span>).is_err());
+        }
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>slice_mut() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="string">b"helloworld"</span>.to_vec();
+
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            <span class="kw">let </span><span class="kw-2">mut </span>exp = <span class="string">b"hello"</span>.to_vec();
+            <span class="macro">assert_eq!</span>(b.slice(<span class="number">5</span>), <span class="prelude-val">Ok</span>(<span class="kw-2">&amp;mut </span>exp[..]));
+        }
+
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            <span class="kw">let </span><span class="kw-2">mut </span>exp = <span class="string">b""</span>.to_vec();
+            <span class="macro">assert_eq!</span>(b.slice(<span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="kw-2">&amp;mut </span>exp[..]));
+        }
+
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            b.get_bytes(<span class="number">5</span>).unwrap();
+
+            <span class="kw">let </span><span class="kw-2">mut </span>exp = <span class="string">b"world"</span>.to_vec();
+            <span class="macro">assert_eq!</span>(b.slice(<span class="number">5</span>), <span class="prelude-val">Ok</span>(<span class="kw-2">&amp;mut </span>exp[..]));
+        }
+
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            <span class="macro">assert!</span>(b.slice(<span class="number">11</span>).is_err());
+        }
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>slice_last() {
+        <span class="kw">let </span>d = <span class="string">b"helloworld"</span>.to_vec();
+
+        {
+            <span class="kw">let </span>b = Octets::with_slice(<span class="kw-2">&amp;</span>d);
+            <span class="kw">let </span>exp = <span class="string">b"orld"</span>.to_vec();
+            <span class="macro">assert_eq!</span>(b.slice_last(<span class="number">4</span>), <span class="prelude-val">Ok</span>(<span class="kw-2">&amp;</span>exp[..]));
+        }
+
+        {
+            <span class="kw">let </span>b = Octets::with_slice(<span class="kw-2">&amp;</span>d);
+            <span class="kw">let </span>exp = <span class="string">b"d"</span>.to_vec();
+            <span class="macro">assert_eq!</span>(b.slice_last(<span class="number">1</span>), <span class="prelude-val">Ok</span>(<span class="kw-2">&amp;</span>exp[..]));
+        }
+
+        {
+            <span class="kw">let </span>b = Octets::with_slice(<span class="kw-2">&amp;</span>d);
+            <span class="kw">let </span>exp = <span class="string">b""</span>.to_vec();
+            <span class="macro">assert_eq!</span>(b.slice_last(<span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="kw-2">&amp;</span>exp[..]));
+        }
+
+        {
+            <span class="kw">let </span>b = Octets::with_slice(<span class="kw-2">&amp;</span>d);
+            <span class="kw">let </span>exp = <span class="string">b"helloworld"</span>.to_vec();
+            <span class="macro">assert_eq!</span>(b.slice_last(<span class="number">10</span>), <span class="prelude-val">Ok</span>(<span class="kw-2">&amp;</span>exp[..]));
+        }
+
+        {
+            <span class="kw">let </span>b = Octets::with_slice(<span class="kw-2">&amp;</span>d);
+            <span class="macro">assert!</span>(b.slice_last(<span class="number">11</span>).is_err());
+        }
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>slice_last_mut() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="string">b"helloworld"</span>.to_vec();
+
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            <span class="kw">let </span><span class="kw-2">mut </span>exp = <span class="string">b"orld"</span>.to_vec();
+            <span class="macro">assert_eq!</span>(b.slice_last(<span class="number">4</span>), <span class="prelude-val">Ok</span>(<span class="kw-2">&amp;mut </span>exp[..]));
+        }
+
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            <span class="kw">let </span><span class="kw-2">mut </span>exp = <span class="string">b"d"</span>.to_vec();
+            <span class="macro">assert_eq!</span>(b.slice_last(<span class="number">1</span>), <span class="prelude-val">Ok</span>(<span class="kw-2">&amp;mut </span>exp[..]));
+        }
+
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            <span class="kw">let </span><span class="kw-2">mut </span>exp = <span class="string">b""</span>.to_vec();
+            <span class="macro">assert_eq!</span>(b.slice_last(<span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="kw-2">&amp;mut </span>exp[..]));
+        }
+
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            <span class="kw">let </span><span class="kw-2">mut </span>exp = <span class="string">b"helloworld"</span>.to_vec();
+            <span class="macro">assert_eq!</span>(b.slice_last(<span class="number">10</span>), <span class="prelude-val">Ok</span>(<span class="kw-2">&amp;mut </span>exp[..]));
+        }
+
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            <span class="macro">assert!</span>(b.slice_last(<span class="number">11</span>).is_err());
+        }
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/qlog/events/connectivity.rs.html b/src/qlog/events/connectivity.rs.html
new file mode 100644
index 0000000..e6aff8c
--- /dev/null
+++ b/src/qlog/events/connectivity.rs.html
@@ -0,0 +1,295 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `qlog/src/events/connectivity.rs`."><title>connectivity.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2021, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span>serde::Deserialize;
+<span class="kw">use </span>serde::Serialize;
+
+<span class="kw">use </span><span class="kw">super</span>::ApplicationErrorCode;
+<span class="kw">use </span><span class="kw">super</span>::Bytes;
+<span class="kw">use </span><span class="kw">super</span>::ConnectionErrorCode;
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>TransportOwner {
+    Local,
+    Remote,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>ConnectionState {
+    Attempted,
+    PeerValidated,
+    HandshakeStarted,
+    EarlyWrite,
+    HandshakeCompleted,
+    HandshakeConfirmed,
+    Closing,
+    Draining,
+    Closed,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>ConnectivityEventType {
+    ServerListening,
+    ConnectionStarted,
+    ConnectionClosed,
+    ConnectionIdUpdated,
+    SpinBitUpdated,
+    ConnectionStateUpdated,
+    MtuUpdated,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>ConnectionClosedTrigger {
+    Clean,
+    HandshakeTimeout,
+    IdleTimeout,
+    Error,
+    StatelessReset,
+    VersionMismatch,
+    Application,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>ServerListening {
+    <span class="kw">pub </span>ip_v4: <span class="prelude-ty">Option</span>&lt;String&gt;, <span class="comment">// human-readable or bytes
+    </span><span class="kw">pub </span>ip_v6: <span class="prelude-ty">Option</span>&lt;String&gt;, <span class="comment">// human-readable or bytes
+    </span><span class="kw">pub </span>port_v4: <span class="prelude-ty">Option</span>&lt;u16&gt;,
+    <span class="kw">pub </span>port_v6: <span class="prelude-ty">Option</span>&lt;u16&gt;,
+
+    retry_required: <span class="prelude-ty">Option</span>&lt;bool&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>ConnectionStarted {
+    <span class="kw">pub </span>ip_version: <span class="prelude-ty">Option</span>&lt;String&gt;, <span class="comment">// "v4" or "v6"
+    </span><span class="kw">pub </span>src_ip: String,             <span class="comment">// human-readable or bytes
+    </span><span class="kw">pub </span>dst_ip: String,             <span class="comment">// human-readable or bytes
+
+    </span><span class="kw">pub </span>protocol: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    <span class="kw">pub </span>src_port: <span class="prelude-ty">Option</span>&lt;u16&gt;,
+    <span class="kw">pub </span>dst_port: <span class="prelude-ty">Option</span>&lt;u16&gt;,
+
+    <span class="kw">pub </span>src_cid: <span class="prelude-ty">Option</span>&lt;Bytes&gt;,
+    <span class="kw">pub </span>dst_cid: <span class="prelude-ty">Option</span>&lt;Bytes&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>ConnectionClosed {
+    <span class="kw">pub </span>owner: <span class="prelude-ty">Option</span>&lt;TransportOwner&gt;,
+
+    <span class="kw">pub </span>connection_code: <span class="prelude-ty">Option</span>&lt;ConnectionErrorCode&gt;,
+    <span class="kw">pub </span>application_code: <span class="prelude-ty">Option</span>&lt;ApplicationErrorCode&gt;,
+    <span class="kw">pub </span>internal_code: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+
+    <span class="kw">pub </span>reason: <span class="prelude-ty">Option</span>&lt;String&gt;,
+
+    <span class="kw">pub </span>trigger: <span class="prelude-ty">Option</span>&lt;ConnectionClosedTrigger&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>ConnectionIdUpdated {
+    <span class="kw">pub </span>owner: <span class="prelude-ty">Option</span>&lt;TransportOwner&gt;,
+
+    <span class="kw">pub </span>old: <span class="prelude-ty">Option</span>&lt;Bytes&gt;,
+    <span class="kw">pub </span>new: <span class="prelude-ty">Option</span>&lt;Bytes&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>SpinBitUpdated {
+    <span class="kw">pub </span>state: bool,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>ConnectionStateUpdated {
+    <span class="kw">pub </span>old: <span class="prelude-ty">Option</span>&lt;ConnectionState&gt;,
+    <span class="kw">pub </span>new: ConnectionState,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>MtuUpdated {
+    <span class="kw">pub </span>old: <span class="prelude-ty">Option</span>&lt;u16&gt;,
+    <span class="kw">pub </span>new: u16,
+    <span class="kw">pub </span>done: <span class="prelude-ty">Option</span>&lt;bool&gt;,
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/qlog/events/h3.rs.html b/src/qlog/events/h3.rs.html
new file mode 100644
index 0000000..e8060aa
--- /dev/null
+++ b/src/qlog/events/h3.rs.html
@@ -0,0 +1,489 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `qlog/src/events/h3.rs`."><title>h3.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2021, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span>serde::Deserialize;
+<span class="kw">use </span>serde::Serialize;
+
+<span class="kw">use </span><span class="kw">super</span>::RawInfo;
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>H3Owner {
+    Local,
+    Remote,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>H3StreamType {
+    Request,
+    Control,
+    Push,
+    Reserved,
+    Unknown,
+    QpackEncode,
+    QpackDecode,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>H3PushDecision {
+    Claimed,
+    Abandoned,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>H3PriorityTargetStreamType {
+    Request,
+    Push,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>Http3EventType {
+    ParametersSet,
+    ParametersRestored,
+    StreamTypeSet,
+    FrameCreated,
+    FrameParsed,
+    PushResolved,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>ApplicationError {
+    HttpNoError,
+    HttpGeneralProtocolError,
+    HttpInternalError,
+    HttpRequestCancelled,
+    HttpIncompleteRequest,
+    HttpConnectError,
+    HttpFrameError,
+    HttpExcessiveLoad,
+    HttpVersionFallback,
+    HttpIdError,
+    HttpStreamCreationError,
+    HttpClosedCriticalStream,
+    HttpEarlyResponse,
+    HttpMissingSettings,
+    HttpUnexpectedFrame,
+    HttpRequestRejection,
+    HttpSettingsError,
+    Unknown,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>HttpHeader {
+    <span class="kw">pub </span>name: String,
+    <span class="kw">pub </span>value: String,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>Setting {
+    <span class="kw">pub </span>name: String,
+    <span class="kw">pub </span>value: u64,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>Http3FrameTypeName {
+    Data,
+    Headers,
+    CancelPush,
+    Settings,
+    PushPromise,
+    Goaway,
+    MaxPushId,
+    DuplicatePush,
+    Reserved,
+    Unknown,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(tag = <span class="string">"frame_type"</span>)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="comment">// Strictly, the qlog spec says that all these frame types have a frame_type
+// field. But instead of making that a rust object property, just use serde to
+// ensure it goes out on the wire. This means that deserialization of frames
+// also works automatically.
+</span><span class="kw">pub enum </span>Http3Frame {
+    Data {
+        raw: <span class="prelude-ty">Option</span>&lt;RawInfo&gt;,
+    },
+
+    Headers {
+        headers: Vec&lt;HttpHeader&gt;,
+    },
+
+    CancelPush {
+        push_id: u64,
+    },
+
+    Settings {
+        settings: Vec&lt;Setting&gt;,
+    },
+
+    PushPromise {
+        push_id: u64,
+        headers: Vec&lt;HttpHeader&gt;,
+    },
+
+    Goaway {
+        id: u64,
+    },
+
+    MaxPushId {
+        push_id: u64,
+    },
+
+    PriorityUpdate {
+        target_stream_type: H3PriorityTargetStreamType,
+        prioritized_element_id: u64,
+        priority_field_value: String,
+    },
+
+    Reserved {
+        length: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    },
+
+    Unknown {
+        frame_type_value: u64,
+        raw: <span class="prelude-ty">Option</span>&lt;RawInfo&gt;,
+    },
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>H3ParametersSet {
+    <span class="kw">pub </span>owner: <span class="prelude-ty">Option</span>&lt;H3Owner&gt;,
+
+    <span class="attr">#[serde(alias = <span class="string">"max_header_list_size"</span>)]
+    </span><span class="kw">pub </span>max_field_section_size: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>max_table_capacity: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>blocked_streams_count: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>enable_connect_protocol: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>h3_datagram: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    <span class="comment">// qlog-defined
+    </span><span class="kw">pub </span>waits_for_settings: <span class="prelude-ty">Option</span>&lt;bool&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>H3ParametersRestored {
+    <span class="attr">#[serde(alias = <span class="string">"max_header_list_size"</span>)]
+    </span><span class="kw">pub </span>max_field_section_size: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>max_table_capacity: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>blocked_streams_count: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>enable_connect_protocol: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>h3_datagram: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>H3StreamTypeSet {
+    <span class="kw">pub </span>owner: <span class="prelude-ty">Option</span>&lt;H3Owner&gt;,
+    <span class="kw">pub </span>stream_id: u64,
+    <span class="kw">pub </span>stream_type: H3StreamType,
+    <span class="kw">pub </span>stream_type_value: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>associated_push_id: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>H3FrameCreated {
+    <span class="kw">pub </span>stream_id: u64,
+    <span class="kw">pub </span>length: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>frame: Http3Frame,
+
+    <span class="kw">pub </span>raw: <span class="prelude-ty">Option</span>&lt;RawInfo&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>H3FrameParsed {
+    <span class="kw">pub </span>stream_id: u64,
+    <span class="kw">pub </span>length: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>frame: Http3Frame,
+
+    <span class="kw">pub </span>raw: <span class="prelude-ty">Option</span>&lt;RawInfo&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>H3PushResolved {
+    push_id: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    stream_id: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    decision: <span class="prelude-ty">Option</span>&lt;H3PushDecision&gt;,
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/qlog/events/mod.rs.html b/src/qlog/events/mod.rs.html
new file mode 100644
index 0000000..cc05fa9
--- /dev/null
+++ b/src/qlog/events/mod.rs.html
@@ -0,0 +1,1517 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `qlog/src/events/mod.rs`."><title>mod.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2021, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span><span class="kw">crate</span>::Bytes;
+<span class="kw">use </span><span class="kw">crate</span>::Token;
+<span class="kw">use </span>h3::<span class="kw-2">*</span>;
+<span class="kw">use </span>qpack::<span class="kw-2">*</span>;
+<span class="kw">use </span>quic::<span class="kw-2">*</span>;
+
+<span class="kw">use </span>connectivity::ConnectivityEventType;
+
+<span class="kw">use </span>serde::Deserialize;
+<span class="kw">use </span>serde::Serialize;
+
+<span class="kw">use </span>std::collections::BTreeMap;
+
+<span class="kw">pub type </span>ExData = BTreeMap&lt;String, serde_json::Value&gt;;
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Debug, Default)]
+#[serde(untagged)]
+</span><span class="kw">pub enum </span>EventType {
+    ConnectivityEventType(ConnectivityEventType),
+
+    TransportEventType(TransportEventType),
+
+    SecurityEventType(SecurityEventType),
+
+    RecoveryEventType(RecoveryEventType),
+
+    Http3EventType(Http3EventType),
+
+    QpackEventType(QpackEventType),
+
+    GenericEventType(GenericEventType),
+
+    <span class="attr">#[default]
+    </span><span class="prelude-val">None</span>,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub enum </span>TimeFormat {
+    Absolute,
+    Delta,
+    Relative,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, Debug)]
+</span><span class="kw">pub struct </span>Event {
+    <span class="kw">pub </span>time: f32,
+
+    <span class="comment">// Strictly, the qlog 02 spec says we should have a name field in the
+    // `Event` structure. However, serde's autogenerated Deserialize code
+    // struggles to read Events properly because the `EventData` types often
+    // alias. In order to work around that, we use can use a trick that will
+    // give serde autogen all the information that it needs while also produced
+    // a legal qlog. Specifically, strongly linking an EventData enum variant
+    // with the wire-format name.
+    //
+    // The trick is to use Adjacent Tagging
+    // (https://serde.rs/enum-representations.html#adjacently-tagged) with
+    // Struct flattening (https://serde.rs/attr-flatten.html). At a high level
+    // this first creates an `EventData` JSON object:
+    //
+    // {name: &lt;enum variant name&gt;, data: enum variant data }
+    //
+    // and then flattens those fields into the `Event` object.
+    </span><span class="attr">#[serde(flatten)]
+    </span><span class="kw">pub </span>data: EventData,
+
+    <span class="attr">#[serde(flatten)]
+    </span><span class="kw">pub </span>ex_data: ExData,
+
+    <span class="kw">pub </span>protocol_type: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    <span class="kw">pub </span>group_id: <span class="prelude-ty">Option</span>&lt;String&gt;,
+
+    <span class="kw">pub </span>time_format: <span class="prelude-ty">Option</span>&lt;TimeFormat&gt;,
+
+    <span class="attr">#[serde(skip)]
+    </span>ty: EventType,
+}
+
+<span class="kw">impl </span>Event {
+    <span class="doccomment">/// Returns a new `Event` object with the provided time and data.
+    </span><span class="kw">pub fn </span>with_time(time: f32, data: EventData) -&gt; <span class="self">Self </span>{
+        <span class="self">Self</span>::with_time_ex(time, data, Default::default())
+    }
+
+    <span class="doccomment">/// Returns a new `Event` object with the provided time, data and ex_data.
+    </span><span class="kw">pub fn </span>with_time_ex(time: f32, data: EventData, ex_data: ExData) -&gt; <span class="self">Self </span>{
+        <span class="kw">let </span>ty = EventType::from(<span class="kw-2">&amp;</span>data);
+        Event {
+            time,
+            data,
+            ex_data,
+            protocol_type: Default::default(),
+            group_id: Default::default(),
+            time_format: Default::default(),
+            ty,
+        }
+    }
+}
+
+<span class="kw">impl </span>Eventable <span class="kw">for </span>Event {
+    <span class="kw">fn </span>importance(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; EventImportance {
+        <span class="self">self</span>.ty.into()
+    }
+
+    <span class="kw">fn </span>set_time(<span class="kw-2">&amp;mut </span><span class="self">self</span>, time: f32) {
+        <span class="self">self</span>.time = time;
+    }
+}
+
+<span class="kw">impl </span>PartialEq <span class="kw">for </span>Event {
+    <span class="comment">// custom comparison to skip over the `ty` field
+    </span><span class="kw">fn </span>eq(<span class="kw-2">&amp;</span><span class="self">self</span>, other: <span class="kw-2">&amp;</span>Event) -&gt; bool {
+        <span class="self">self</span>.time == other.time &amp;&amp;
+            <span class="self">self</span>.data == other.data &amp;&amp;
+            <span class="self">self</span>.ex_data == other.ex_data &amp;&amp;
+            <span class="self">self</span>.protocol_type == other.protocol_type &amp;&amp;
+            <span class="self">self</span>.group_id == other.group_id &amp;&amp;
+            <span class="self">self</span>.time_format == other.time_format
+    }
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, Debug)]
+</span><span class="kw">pub struct </span>JsonEvent {
+    <span class="kw">pub </span>time: f32,
+
+    <span class="attr">#[serde(skip)]
+    </span><span class="kw">pub </span>importance: EventImportance,
+
+    <span class="kw">pub </span>name: String,
+    <span class="kw">pub </span>data: serde_json::Value,
+}
+
+<span class="kw">impl </span>Eventable <span class="kw">for </span>JsonEvent {
+    <span class="kw">fn </span>importance(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; EventImportance {
+        <span class="self">self</span>.importance
+    }
+
+    <span class="kw">fn </span>set_time(<span class="kw-2">&amp;mut </span><span class="self">self</span>, time: f32) {
+        <span class="self">self</span>.time = time;
+    }
+}
+
+<span class="attr">#[derive(Clone, Copy, Debug, Default)]
+</span><span class="kw">pub enum </span>EventImportance {
+    <span class="attr">#[default]
+    </span>Core,
+    Base,
+    Extra,
+}
+
+<span class="kw">impl </span>EventImportance {
+    <span class="doccomment">/// Returns true if this importance level is included by `other`.
+    </span><span class="kw">pub fn </span>is_contained_in(<span class="kw-2">&amp;</span><span class="self">self</span>, other: <span class="kw-2">&amp;</span>EventImportance) -&gt; bool {
+        <span class="kw">match </span>(other, <span class="self">self</span>) {
+            (EventImportance::Core, EventImportance::Core) =&gt; <span class="bool-val">true</span>,
+
+            (EventImportance::Base, EventImportance::Core) |
+            (EventImportance::Base, EventImportance::Base) =&gt; <span class="bool-val">true</span>,
+
+            (EventImportance::Extra, EventImportance::Core) |
+            (EventImportance::Extra, EventImportance::Base) |
+            (EventImportance::Extra, EventImportance::Extra) =&gt; <span class="bool-val">true</span>,
+
+            (..) =&gt; <span class="bool-val">false</span>,
+        }
+    }
+}
+
+<span class="kw">impl </span>From&lt;EventType&gt; <span class="kw">for </span>EventImportance {
+    <span class="kw">fn </span>from(ty: EventType) -&gt; <span class="self">Self </span>{
+        <span class="kw">match </span>ty {
+            EventType::ConnectivityEventType(
+                ConnectivityEventType::ServerListening,
+            ) =&gt; EventImportance::Extra,
+            EventType::ConnectivityEventType(
+                ConnectivityEventType::ConnectionStarted,
+            ) =&gt; EventImportance::Base,
+            EventType::ConnectivityEventType(
+                ConnectivityEventType::ConnectionClosed,
+            ) =&gt; EventImportance::Base,
+            EventType::ConnectivityEventType(
+                ConnectivityEventType::ConnectionIdUpdated,
+            ) =&gt; EventImportance::Base,
+            EventType::ConnectivityEventType(
+                ConnectivityEventType::SpinBitUpdated,
+            ) =&gt; EventImportance::Base,
+            EventType::ConnectivityEventType(
+                ConnectivityEventType::ConnectionStateUpdated,
+            ) =&gt; EventImportance::Base,
+            EventType::ConnectivityEventType(
+                ConnectivityEventType::MtuUpdated,
+            ) =&gt; EventImportance::Extra,
+
+            EventType::SecurityEventType(SecurityEventType::KeyUpdated) =&gt;
+                EventImportance::Base,
+            EventType::SecurityEventType(SecurityEventType::KeyDiscarded) =&gt;
+                EventImportance::Base,
+
+            EventType::TransportEventType(
+                TransportEventType::VersionInformation,
+            ) =&gt; EventImportance::Core,
+            EventType::TransportEventType(
+                TransportEventType::AlpnInformation,
+            ) =&gt; EventImportance::Core,
+            EventType::TransportEventType(TransportEventType::ParametersSet) =&gt;
+                EventImportance::Core,
+            EventType::TransportEventType(
+                TransportEventType::ParametersRestored,
+            ) =&gt; EventImportance::Base,
+            EventType::TransportEventType(
+                TransportEventType::DatagramsReceived,
+            ) =&gt; EventImportance::Extra,
+            EventType::TransportEventType(TransportEventType::DatagramsSent) =&gt;
+                EventImportance::Extra,
+            EventType::TransportEventType(
+                TransportEventType::DatagramDropped,
+            ) =&gt; EventImportance::Extra,
+            EventType::TransportEventType(TransportEventType::PacketReceived) =&gt;
+                EventImportance::Core,
+            EventType::TransportEventType(TransportEventType::PacketSent) =&gt;
+                EventImportance::Core,
+            EventType::TransportEventType(TransportEventType::PacketDropped) =&gt;
+                EventImportance::Base,
+            EventType::TransportEventType(TransportEventType::PacketBuffered) =&gt;
+                EventImportance::Base,
+            EventType::TransportEventType(TransportEventType::PacketsAcked) =&gt;
+                EventImportance::Extra,
+            EventType::TransportEventType(
+                TransportEventType::StreamStateUpdated,
+            ) =&gt; EventImportance::Base,
+            EventType::TransportEventType(
+                TransportEventType::FramesProcessed,
+            ) =&gt; EventImportance::Extra,
+            EventType::TransportEventType(TransportEventType::DataMoved) =&gt;
+                EventImportance::Base,
+
+            EventType::RecoveryEventType(RecoveryEventType::ParametersSet) =&gt;
+                EventImportance::Base,
+            EventType::RecoveryEventType(RecoveryEventType::MetricsUpdated) =&gt;
+                EventImportance::Core,
+            EventType::RecoveryEventType(
+                RecoveryEventType::CongestionStateUpdated,
+            ) =&gt; EventImportance::Base,
+            EventType::RecoveryEventType(RecoveryEventType::LossTimerUpdated) =&gt;
+                EventImportance::Extra,
+            EventType::RecoveryEventType(RecoveryEventType::PacketLost) =&gt;
+                EventImportance::Core,
+            EventType::RecoveryEventType(
+                RecoveryEventType::MarkedForRetransmit,
+            ) =&gt; EventImportance::Extra,
+
+            EventType::Http3EventType(Http3EventType::ParametersSet) =&gt;
+                EventImportance::Base,
+            EventType::Http3EventType(Http3EventType::StreamTypeSet) =&gt;
+                EventImportance::Base,
+            EventType::Http3EventType(Http3EventType::FrameCreated) =&gt;
+                EventImportance::Core,
+            EventType::Http3EventType(Http3EventType::FrameParsed) =&gt;
+                EventImportance::Core,
+            EventType::Http3EventType(Http3EventType::PushResolved) =&gt;
+                EventImportance::Extra,
+
+            EventType::QpackEventType(QpackEventType::StateUpdated) =&gt;
+                EventImportance::Base,
+            EventType::QpackEventType(QpackEventType::StreamStateUpdated) =&gt;
+                EventImportance::Base,
+            EventType::QpackEventType(QpackEventType::DynamicTableUpdated) =&gt;
+                EventImportance::Extra,
+            EventType::QpackEventType(QpackEventType::HeadersEncoded) =&gt;
+                EventImportance::Base,
+            EventType::QpackEventType(QpackEventType::HeadersDecoded) =&gt;
+                EventImportance::Base,
+            EventType::QpackEventType(QpackEventType::InstructionCreated) =&gt;
+                EventImportance::Base,
+            EventType::QpackEventType(QpackEventType::InstructionParsed) =&gt;
+                EventImportance::Base,
+
+            <span class="kw">_ </span>=&gt; <span class="macro">unimplemented!</span>(),
+        }
+    }
+}
+
+<span class="kw">pub trait </span>Eventable {
+    <span class="kw">fn </span>importance(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; EventImportance;
+
+    <span class="kw">fn </span>set_time(<span class="kw-2">&amp;mut </span><span class="self">self</span>, time: f32);
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>EventCategory {
+    Connectivity,
+    Security,
+    Transport,
+    Recovery,
+    Http,
+    Qpack,
+
+    Error,
+    Warning,
+    Info,
+    Debug,
+    Verbose,
+    Simulation,
+}
+
+<span class="kw">impl </span>std::fmt::Display <span class="kw">for </span>EventCategory {
+    <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+        <span class="kw">let </span>v = <span class="kw">match </span><span class="self">self </span>{
+            EventCategory::Connectivity =&gt; <span class="string">"connectivity"</span>,
+            EventCategory::Security =&gt; <span class="string">"security"</span>,
+            EventCategory::Transport =&gt; <span class="string">"transport"</span>,
+            EventCategory::Recovery =&gt; <span class="string">"recovery"</span>,
+            EventCategory::Http =&gt; <span class="string">"http"</span>,
+            EventCategory::Qpack =&gt; <span class="string">"qpack"</span>,
+            EventCategory::Error =&gt; <span class="string">"error"</span>,
+            EventCategory::Warning =&gt; <span class="string">"warning"</span>,
+            EventCategory::Info =&gt; <span class="string">"info"</span>,
+            EventCategory::Debug =&gt; <span class="string">"debug"</span>,
+            EventCategory::Verbose =&gt; <span class="string">"verbose"</span>,
+            EventCategory::Simulation =&gt; <span class="string">"simulation"</span>,
+        };
+
+        <span class="macro">write!</span>(f, <span class="string">"{v}"</span>,)
+    }
+}
+
+<span class="kw">impl </span>From&lt;EventType&gt; <span class="kw">for </span>EventCategory {
+    <span class="kw">fn </span>from(ty: EventType) -&gt; <span class="self">Self </span>{
+        <span class="kw">match </span>ty {
+            EventType::ConnectivityEventType(<span class="kw">_</span>) =&gt; EventCategory::Connectivity,
+            EventType::SecurityEventType(<span class="kw">_</span>) =&gt; EventCategory::Security,
+            EventType::TransportEventType(<span class="kw">_</span>) =&gt; EventCategory::Transport,
+            EventType::RecoveryEventType(<span class="kw">_</span>) =&gt; EventCategory::Recovery,
+            EventType::Http3EventType(<span class="kw">_</span>) =&gt; EventCategory::Http,
+            EventType::QpackEventType(<span class="kw">_</span>) =&gt; EventCategory::Qpack,
+
+            <span class="kw">_ </span>=&gt; <span class="macro">unimplemented!</span>(),
+        }
+    }
+}
+
+<span class="kw">impl </span>From&lt;<span class="kw-2">&amp;</span>EventData&gt; <span class="kw">for </span>EventType {
+    <span class="kw">fn </span>from(event_data: <span class="kw-2">&amp;</span>EventData) -&gt; <span class="self">Self </span>{
+        <span class="kw">match </span>event_data {
+            EventData::ServerListening { .. } =&gt;
+                EventType::ConnectivityEventType(
+                    ConnectivityEventType::ServerListening,
+                ),
+            EventData::ConnectionStarted { .. } =&gt;
+                EventType::ConnectivityEventType(
+                    ConnectivityEventType::ConnectionStarted,
+                ),
+            EventData::ConnectionClosed { .. } =&gt;
+                EventType::ConnectivityEventType(
+                    ConnectivityEventType::ConnectionClosed,
+                ),
+            EventData::ConnectionIdUpdated { .. } =&gt;
+                EventType::ConnectivityEventType(
+                    ConnectivityEventType::ConnectionIdUpdated,
+                ),
+            EventData::SpinBitUpdated { .. } =&gt; EventType::ConnectivityEventType(
+                ConnectivityEventType::SpinBitUpdated,
+            ),
+            EventData::ConnectionStateUpdated { .. } =&gt;
+                EventType::ConnectivityEventType(
+                    ConnectivityEventType::ConnectionStateUpdated,
+                ),
+            EventData::MtuUpdated { .. } =&gt; EventType::ConnectivityEventType(
+                ConnectivityEventType::MtuUpdated,
+            ),
+
+            EventData::KeyUpdated { .. } =&gt;
+                EventType::SecurityEventType(SecurityEventType::KeyUpdated),
+            EventData::KeyDiscarded { .. } =&gt;
+                EventType::SecurityEventType(SecurityEventType::KeyDiscarded),
+
+            EventData::VersionInformation { .. } =&gt;
+                EventType::TransportEventType(
+                    TransportEventType::VersionInformation,
+                ),
+            EventData::AlpnInformation { .. } =&gt;
+                EventType::TransportEventType(TransportEventType::AlpnInformation),
+            EventData::TransportParametersSet { .. } =&gt;
+                EventType::TransportEventType(TransportEventType::ParametersSet),
+            EventData::TransportParametersRestored { .. } =&gt;
+                EventType::TransportEventType(
+                    TransportEventType::ParametersRestored,
+                ),
+            EventData::DatagramsReceived { .. } =&gt; EventType::TransportEventType(
+                TransportEventType::DatagramsReceived,
+            ),
+            EventData::DatagramsSent { .. } =&gt;
+                EventType::TransportEventType(TransportEventType::DatagramsSent),
+            EventData::DatagramDropped { .. } =&gt;
+                EventType::TransportEventType(TransportEventType::DatagramDropped),
+            EventData::PacketReceived { .. } =&gt;
+                EventType::TransportEventType(TransportEventType::PacketReceived),
+            EventData::PacketSent { .. } =&gt;
+                EventType::TransportEventType(TransportEventType::PacketSent),
+            EventData::PacketDropped { .. } =&gt;
+                EventType::TransportEventType(TransportEventType::PacketDropped),
+            EventData::PacketBuffered { .. } =&gt;
+                EventType::TransportEventType(TransportEventType::PacketBuffered),
+            EventData::PacketsAcked { .. } =&gt;
+                EventType::TransportEventType(TransportEventType::PacketsAcked),
+            EventData::StreamStateUpdated { .. } =&gt;
+                EventType::TransportEventType(
+                    TransportEventType::StreamStateUpdated,
+                ),
+            EventData::FramesProcessed { .. } =&gt;
+                EventType::TransportEventType(TransportEventType::FramesProcessed),
+            EventData::DataMoved { .. } =&gt;
+                EventType::TransportEventType(TransportEventType::DataMoved),
+
+            EventData::RecoveryParametersSet { .. } =&gt;
+                EventType::RecoveryEventType(RecoveryEventType::ParametersSet),
+            EventData::MetricsUpdated { .. } =&gt;
+                EventType::RecoveryEventType(RecoveryEventType::MetricsUpdated),
+            EventData::CongestionStateUpdated { .. } =&gt;
+                EventType::RecoveryEventType(
+                    RecoveryEventType::CongestionStateUpdated,
+                ),
+            EventData::LossTimerUpdated { .. } =&gt;
+                EventType::RecoveryEventType(RecoveryEventType::LossTimerUpdated),
+            EventData::PacketLost { .. } =&gt;
+                EventType::RecoveryEventType(RecoveryEventType::PacketLost),
+            EventData::MarkedForRetransmit { .. } =&gt;
+                EventType::RecoveryEventType(
+                    RecoveryEventType::MarkedForRetransmit,
+                ),
+
+            EventData::H3ParametersSet { .. } =&gt;
+                EventType::Http3EventType(Http3EventType::ParametersSet),
+            EventData::H3ParametersRestored { .. } =&gt;
+                EventType::Http3EventType(Http3EventType::ParametersRestored),
+            EventData::H3StreamTypeSet { .. } =&gt;
+                EventType::Http3EventType(Http3EventType::StreamTypeSet),
+            EventData::H3FrameCreated { .. } =&gt;
+                EventType::Http3EventType(Http3EventType::FrameCreated),
+            EventData::H3FrameParsed { .. } =&gt;
+                EventType::Http3EventType(Http3EventType::FrameParsed),
+            EventData::H3PushResolved { .. } =&gt;
+                EventType::Http3EventType(Http3EventType::PushResolved),
+
+            EventData::QpackStateUpdated { .. } =&gt;
+                EventType::QpackEventType(QpackEventType::StateUpdated),
+            EventData::QpackStreamStateUpdated { .. } =&gt;
+                EventType::QpackEventType(QpackEventType::StreamStateUpdated),
+            EventData::QpackDynamicTableUpdated { .. } =&gt;
+                EventType::QpackEventType(QpackEventType::DynamicTableUpdated),
+            EventData::QpackHeadersEncoded { .. } =&gt;
+                EventType::QpackEventType(QpackEventType::HeadersEncoded),
+            EventData::QpackHeadersDecoded { .. } =&gt;
+                EventType::QpackEventType(QpackEventType::HeadersDecoded),
+            EventData::QpackInstructionCreated { .. } =&gt;
+                EventType::QpackEventType(QpackEventType::InstructionCreated),
+            EventData::QpackInstructionParsed { .. } =&gt;
+                EventType::QpackEventType(QpackEventType::InstructionParsed),
+
+            EventData::ConnectionError { .. } =&gt;
+                EventType::GenericEventType(GenericEventType::ConnectionError),
+            EventData::ApplicationError { .. } =&gt;
+                EventType::GenericEventType(GenericEventType::ApplicationError),
+            EventData::InternalError { .. } =&gt;
+                EventType::GenericEventType(GenericEventType::InternalError),
+            EventData::InternalWarning { .. } =&gt;
+                EventType::GenericEventType(GenericEventType::InternalError),
+            EventData::Message { .. } =&gt;
+                EventType::GenericEventType(GenericEventType::Message),
+            EventData::Marker { .. } =&gt;
+                EventType::GenericEventType(GenericEventType::Marker),
+        }
+    }
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>DataRecipient {
+    User,
+    Application,
+    Transport,
+    Network,
+    Dropped,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>RawInfo {
+    <span class="kw">pub </span>length: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>payload_length: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    <span class="kw">pub </span>data: <span class="prelude-ty">Option</span>&lt;Bytes&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
+#[serde(tag = <span class="string">"name"</span>, content = <span class="string">"data"</span>)]
+#[allow(clippy::large_enum_variant)]
+</span><span class="kw">pub enum </span>EventData {
+    <span class="comment">// Connectivity
+    </span><span class="attr">#[serde(rename = <span class="string">"connectivity:server_listening"</span>)]
+    </span>ServerListening(connectivity::ServerListening),
+
+    <span class="attr">#[serde(rename = <span class="string">"connectivity:connection_started"</span>)]
+    </span>ConnectionStarted(connectivity::ConnectionStarted),
+
+    <span class="attr">#[serde(rename = <span class="string">"connectivity:connection_closed"</span>)]
+    </span>ConnectionClosed(connectivity::ConnectionClosed),
+
+    <span class="attr">#[serde(rename = <span class="string">"connectivity:connection_id_updated"</span>)]
+    </span>ConnectionIdUpdated(connectivity::ConnectionIdUpdated),
+
+    <span class="attr">#[serde(rename = <span class="string">"connectivity:spin_bit_updated"</span>)]
+    </span>SpinBitUpdated(connectivity::SpinBitUpdated),
+
+    <span class="attr">#[serde(rename = <span class="string">"connectivity:connection_state_updated"</span>)]
+    </span>ConnectionStateUpdated(connectivity::ConnectionStateUpdated),
+
+    <span class="attr">#[serde(rename = <span class="string">"connectivity:mtu_updated"</span>)]
+    </span>MtuUpdated(connectivity::MtuUpdated),
+
+    <span class="comment">// Security
+    </span><span class="attr">#[serde(rename = <span class="string">"security:key_updated"</span>)]
+    </span>KeyUpdated(security::KeyUpdated),
+
+    <span class="attr">#[serde(rename = <span class="string">"security:key_retired"</span>)]
+    </span>KeyDiscarded(security::KeyDiscarded),
+
+    <span class="comment">// Transport
+    </span><span class="attr">#[serde(rename = <span class="string">"transport:version_information"</span>)]
+    </span>VersionInformation(quic::VersionInformation),
+
+    <span class="attr">#[serde(rename = <span class="string">"transport:alpn_information"</span>)]
+    </span>AlpnInformation(quic::AlpnInformation),
+
+    <span class="attr">#[serde(rename = <span class="string">"transport:parameters_set"</span>)]
+    </span>TransportParametersSet(quic::TransportParametersSet),
+
+    <span class="attr">#[serde(rename = <span class="string">"transport:parameters_restored"</span>)]
+    </span>TransportParametersRestored(quic::TransportParametersRestored),
+
+    <span class="attr">#[serde(rename = <span class="string">"transport:datagrams_received"</span>)]
+    </span>DatagramsReceived(quic::DatagramsReceived),
+
+    <span class="attr">#[serde(rename = <span class="string">"transport:datagrams_sent"</span>)]
+    </span>DatagramsSent(quic::DatagramsSent),
+
+    <span class="attr">#[serde(rename = <span class="string">"transport:datagram_dropped"</span>)]
+    </span>DatagramDropped(quic::DatagramDropped),
+
+    <span class="attr">#[serde(rename = <span class="string">"transport:packet_received"</span>)]
+    </span>PacketReceived(quic::PacketReceived),
+
+    <span class="attr">#[serde(rename = <span class="string">"transport:packet_sent"</span>)]
+    </span>PacketSent(quic::PacketSent),
+
+    <span class="attr">#[serde(rename = <span class="string">"transport:packet_dropped"</span>)]
+    </span>PacketDropped(quic::PacketDropped),
+
+    <span class="attr">#[serde(rename = <span class="string">"transport:packet_buffered"</span>)]
+    </span>PacketBuffered(quic::PacketBuffered),
+
+    <span class="attr">#[serde(rename = <span class="string">"transport:packets_acked"</span>)]
+    </span>PacketsAcked(quic::PacketsAcked),
+
+    <span class="attr">#[serde(rename = <span class="string">"transport:stream_state_updated"</span>)]
+    </span>StreamStateUpdated(quic::StreamStateUpdated),
+
+    <span class="attr">#[serde(rename = <span class="string">"transport:frames_processed"</span>)]
+    </span>FramesProcessed(quic::FramesProcessed),
+
+    <span class="attr">#[serde(rename = <span class="string">"transport:data_moved"</span>)]
+    </span>DataMoved(quic::DataMoved),
+
+    <span class="comment">// Recovery
+    </span><span class="attr">#[serde(rename = <span class="string">"recovery:parameters_set"</span>)]
+    </span>RecoveryParametersSet(quic::RecoveryParametersSet),
+
+    <span class="attr">#[serde(rename = <span class="string">"recovery:metrics_updated"</span>)]
+    </span>MetricsUpdated(quic::MetricsUpdated),
+
+    <span class="attr">#[serde(rename = <span class="string">"recovery:congestion_state_updated"</span>)]
+    </span>CongestionStateUpdated(quic::CongestionStateUpdated),
+
+    <span class="attr">#[serde(rename = <span class="string">"recovery:loss_timer_updated"</span>)]
+    </span>LossTimerUpdated(quic::LossTimerUpdated),
+
+    <span class="attr">#[serde(rename = <span class="string">"recovery:packet_lost"</span>)]
+    </span>PacketLost(quic::PacketLost),
+
+    <span class="attr">#[serde(rename = <span class="string">"recovery:marked_for_retransmit"</span>)]
+    </span>MarkedForRetransmit(quic::MarkedForRetransmit),
+
+    <span class="comment">// HTTP/3
+    </span><span class="attr">#[serde(rename = <span class="string">"http:parameters_set"</span>)]
+    </span>H3ParametersSet(h3::H3ParametersSet),
+
+    <span class="attr">#[serde(rename = <span class="string">"http:parameters_restored"</span>)]
+    </span>H3ParametersRestored(h3::H3ParametersRestored),
+
+    <span class="attr">#[serde(rename = <span class="string">"http:stream_type_set"</span>)]
+    </span>H3StreamTypeSet(h3::H3StreamTypeSet),
+
+    <span class="attr">#[serde(rename = <span class="string">"http:frame_created"</span>)]
+    </span>H3FrameCreated(h3::H3FrameCreated),
+
+    <span class="attr">#[serde(rename = <span class="string">"http:frame_parsed"</span>)]
+    </span>H3FrameParsed(h3::H3FrameParsed),
+
+    <span class="attr">#[serde(rename = <span class="string">"http:push_resolved"</span>)]
+    </span>H3PushResolved(h3::H3PushResolved),
+
+    <span class="comment">// QPACK
+    </span><span class="attr">#[serde(rename = <span class="string">"qpack:state_updated"</span>)]
+    </span>QpackStateUpdated(qpack::QpackStateUpdated),
+
+    <span class="attr">#[serde(rename = <span class="string">"qpack:stream_state_updated"</span>)]
+    </span>QpackStreamStateUpdated(qpack::QpackStreamStateUpdated),
+
+    <span class="attr">#[serde(rename = <span class="string">"qpack:dynamic_table_updated"</span>)]
+    </span>QpackDynamicTableUpdated(qpack::QpackDynamicTableUpdated),
+
+    <span class="attr">#[serde(rename = <span class="string">"qpack:headers_encoded"</span>)]
+    </span>QpackHeadersEncoded(qpack::QpackHeadersEncoded),
+
+    <span class="attr">#[serde(rename = <span class="string">"qpack:headers_decoded"</span>)]
+    </span>QpackHeadersDecoded(qpack::QpackHeadersDecoded),
+
+    <span class="attr">#[serde(rename = <span class="string">"qpack:instruction_created"</span>)]
+    </span>QpackInstructionCreated(qpack::QpackInstructionCreated),
+
+    <span class="attr">#[serde(rename = <span class="string">"qpack:instruction_parsed"</span>)]
+    </span>QpackInstructionParsed(qpack::QpackInstructionParsed),
+
+    <span class="comment">// Generic
+    </span><span class="attr">#[serde(rename = <span class="string">"generic:connection_error"</span>)]
+    </span>ConnectionError {
+        code: <span class="prelude-ty">Option</span>&lt;ConnectionErrorCode&gt;,
+        description: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    },
+
+    <span class="attr">#[serde(rename = <span class="string">"generic:application_error"</span>)]
+    </span>ApplicationError {
+        code: <span class="prelude-ty">Option</span>&lt;ApplicationErrorCode&gt;,
+        description: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    },
+
+    <span class="attr">#[serde(rename = <span class="string">"generic:internal_error"</span>)]
+    </span>InternalError {
+        code: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+        description: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    },
+
+    <span class="attr">#[serde(rename = <span class="string">"generic:internal_warning"</span>)]
+    </span>InternalWarning {
+        code: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+        description: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    },
+
+    <span class="attr">#[serde(rename = <span class="string">"generic:message"</span>)]
+    </span>Message { message: String },
+
+    <span class="attr">#[serde(rename = <span class="string">"generic:marker"</span>)]
+    </span>Marker {
+        marker_type: String,
+        message: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    },
+}
+
+<span class="kw">impl </span>EventData {
+    <span class="doccomment">/// Returns size of `EventData` array of `QuicFrame`s if it exists.
+    </span><span class="kw">pub fn </span>contains_quic_frames(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;usize&gt; {
+        <span class="comment">// For some EventData variants, the frame array is optional
+        // but for others it is mandatory.
+        </span><span class="kw">match </span><span class="self">self </span>{
+            EventData::PacketSent(pkt) =&gt; pkt.frames.as_ref().map(|f| f.len()),
+
+            EventData::PacketReceived(pkt) =&gt;
+                pkt.frames.as_ref().map(|f| f.len()),
+
+            EventData::PacketLost(pkt) =&gt; pkt.frames.as_ref().map(|f| f.len()),
+
+            EventData::MarkedForRetransmit(ev) =&gt; <span class="prelude-val">Some</span>(ev.frames.len()),
+            EventData::FramesProcessed(ev) =&gt; <span class="prelude-val">Some</span>(ev.frames.len()),
+
+            <span class="kw">_ </span>=&gt; <span class="prelude-val">None</span>,
+        }
+    }
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>GenericEventType {
+    ConnectionError,
+    ApplicationError,
+    InternalError,
+    InternalWarning,
+
+    Message,
+    Marker,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(untagged)]
+</span><span class="kw">pub enum </span>ConnectionErrorCode {
+    TransportError(TransportError),
+    CryptoError(CryptoError),
+    Value(u64),
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(untagged)]
+</span><span class="kw">pub enum </span>ApplicationErrorCode {
+    ApplicationError(ApplicationError),
+    Value(u64),
+}
+
+<span class="comment">// TODO
+</span><span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>CryptoError {
+    Prefix,
+}
+
+<span class="kw">pub mod </span>quic;
+
+<span class="kw">pub mod </span>connectivity;
+<span class="kw">pub mod </span>h3;
+<span class="kw">pub mod </span>qpack;
+<span class="kw">pub mod </span>security;
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/qlog/events/qpack.rs.html b/src/qlog/events/qpack.rs.html
new file mode 100644
index 0000000..7df5ff1
--- /dev/null
+++ b/src/qlog/events/qpack.rs.html
@@ -0,0 +1,553 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `qlog/src/events/qpack.rs`."><title>qpack.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2021, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span>serde::Deserialize;
+<span class="kw">use </span>serde::Serialize;
+
+<span class="kw">use </span><span class="kw">super</span>::h3::HttpHeader;
+<span class="kw">use </span><span class="kw">super</span>::RawInfo;
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>QpackEventType {
+    StateUpdated,
+    StreamStateUpdated,
+    DynamicTableUpdated,
+    HeadersEncoded,
+    HeadersDecoded,
+    InstructionCreated,
+    InstructionParsed,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>QpackOwner {
+    Local,
+    Remote,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>QpackStreamState {
+    Blocked,
+    Unblocked,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>QpackUpdateType {
+    Added,
+    Evicted,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>QpackDynamicTableEntry {
+    <span class="kw">pub </span>index: u64,
+    <span class="kw">pub </span>name: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    <span class="kw">pub </span>value: <span class="prelude-ty">Option</span>&lt;String&gt;,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>QpackHeaderBlockPrefix {
+    <span class="kw">pub </span>required_insert_count: u64,
+    <span class="kw">pub </span>sign_bit: bool,
+    <span class="kw">pub </span>delta_base: u64,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>QpackInstructionTypeName {
+    SetDynamicTableCapacityInstruction,
+    InsertWithNameReferenceInstruction,
+    InsertWithoutNameReferenceInstruction,
+    DuplicateInstruction,
+    HeaderAcknowledgementInstruction,
+    StreamCancellationInstruction,
+    InsertCountIncrementInstruction,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>QpackTableType {
+    Static,
+    Dynamic,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub enum </span>QPackInstruction {
+    SetDynamicTableCapacityInstruction {
+        instruction_type: QpackInstructionTypeName,
+
+        capacity: u64,
+    },
+
+    InsertWithNameReferenceInstruction {
+        instruction_type: QpackInstructionTypeName,
+
+        table_type: QpackTableType,
+
+        name_index: u64,
+
+        huffman_encoded_value: bool,
+        value_length: u64,
+        value: String,
+    },
+
+    InsertWithoutNameReferenceInstruction {
+        instruction_type: QpackInstructionTypeName,
+
+        huffman_encoded_name: bool,
+        name_length: u64,
+        name: String,
+
+        huffman_encoded_value: bool,
+        value_length: u64,
+        value: String,
+    },
+
+    DuplicateInstruction {
+        instruction_type: QpackInstructionTypeName,
+
+        index: u64,
+    },
+
+    HeaderAcknowledgementInstruction {
+        instruction_type: QpackInstructionTypeName,
+
+        stream_id: String,
+    },
+
+    StreamCancellationInstruction {
+        instruction_type: QpackInstructionTypeName,
+
+        stream_id: String,
+    },
+
+    InsertCountIncrementInstruction {
+        instruction_type: QpackInstructionTypeName,
+
+        increment: u64,
+    },
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>QpackHeaderBlockRepresentationTypeName {
+    IndexedHeaderField,
+    LiteralHeaderFieldWithName,
+    LiteralHeaderFieldWithoutName,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub enum </span>QpackHeaderBlockRepresentation {
+    IndexedHeaderField {
+        header_field_type: QpackHeaderBlockRepresentationTypeName,
+
+        table_type: QpackTableType,
+        index: u64,
+
+        is_post_base: <span class="prelude-ty">Option</span>&lt;bool&gt;,
+    },
+
+    LiteralHeaderFieldWithName {
+        header_field_type: QpackHeaderBlockRepresentationTypeName,
+
+        preserve_literal: bool,
+        table_type: QpackTableType,
+        name_index: u64,
+
+        huffman_encoded_value: bool,
+        value_length: u64,
+        value: String,
+
+        is_post_base: <span class="prelude-ty">Option</span>&lt;bool&gt;,
+    },
+
+    LiteralHeaderFieldWithoutName {
+        header_field_type: QpackHeaderBlockRepresentationTypeName,
+
+        preserve_literal: bool,
+        table_type: QpackTableType,
+        name_index: u64,
+
+        huffman_encoded_name: bool,
+        name_length: u64,
+        name: String,
+
+        huffman_encoded_value: bool,
+        value_length: u64,
+        value: String,
+
+        is_post_base: <span class="prelude-ty">Option</span>&lt;bool&gt;,
+    },
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>QpackStateUpdated {
+    <span class="kw">pub </span>owner: <span class="prelude-ty">Option</span>&lt;QpackOwner&gt;,
+
+    <span class="kw">pub </span>dynamic_table_capacity: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>dynamic_table_size: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    <span class="kw">pub </span>known_received_count: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>current_insert_count: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>QpackStreamStateUpdated {
+    <span class="kw">pub </span>stream_id: u64,
+
+    <span class="kw">pub </span>state: QpackStreamState,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>QpackDynamicTableUpdated {
+    <span class="kw">pub </span>update_type: QpackUpdateType,
+
+    <span class="kw">pub </span>entries: Vec&lt;QpackDynamicTableEntry&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>QpackHeadersEncoded {
+    <span class="kw">pub </span>stream_id: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    <span class="kw">pub </span>headers: <span class="prelude-ty">Option</span>&lt;HttpHeader&gt;,
+
+    <span class="kw">pub </span>block_prefix: QpackHeaderBlockPrefix,
+    <span class="kw">pub </span>header_block: Vec&lt;QpackHeaderBlockRepresentation&gt;,
+
+    <span class="kw">pub </span>raw: <span class="prelude-ty">Option</span>&lt;RawInfo&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>QpackHeadersDecoded {
+    <span class="kw">pub </span>stream_id: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    <span class="kw">pub </span>headers: <span class="prelude-ty">Option</span>&lt;HttpHeader&gt;,
+
+    <span class="kw">pub </span>block_prefix: QpackHeaderBlockPrefix,
+    <span class="kw">pub </span>header_block: Vec&lt;QpackHeaderBlockRepresentation&gt;,
+
+    <span class="kw">pub </span>raw: <span class="prelude-ty">Option</span>&lt;RawInfo&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>QpackInstructionCreated {
+    <span class="kw">pub </span>instruction: QPackInstruction,
+
+    <span class="kw">pub </span>raw: <span class="prelude-ty">Option</span>&lt;RawInfo&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>QpackInstructionParsed {
+    <span class="kw">pub </span>instruction: QPackInstruction,
+
+    <span class="kw">pub </span>raw: <span class="prelude-ty">Option</span>&lt;RawInfo&gt;,
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/qlog/events/quic.rs.html b/src/qlog/events/quic.rs.html
new file mode 100644
index 0000000..871dcbd
--- /dev/null
+++ b/src/qlog/events/quic.rs.html
@@ -0,0 +1,1649 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `qlog/src/events/quic.rs`."><title>quic.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2021, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span>serde::Deserialize;
+<span class="kw">use </span>serde::Serialize;
+
+<span class="kw">use </span>smallvec::SmallVec;
+
+<span class="kw">use </span><span class="kw">super</span>::connectivity::TransportOwner;
+<span class="kw">use </span><span class="kw">super</span>::Bytes;
+<span class="kw">use </span><span class="kw">super</span>::DataRecipient;
+<span class="kw">use </span><span class="kw">super</span>::RawInfo;
+<span class="kw">use </span><span class="kw">super</span>::Token;
+<span class="kw">use </span><span class="kw">crate</span>::HexSlice;
+<span class="kw">use </span><span class="kw">crate</span>::StatelessResetToken;
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>PacketType {
+    Initial,
+    Handshake,
+
+    <span class="attr">#[serde(rename = <span class="string">"0RTT"</span>)]
+    </span>ZeroRtt,
+
+    <span class="attr">#[serde(rename = <span class="string">"1RTT"</span>)]
+    </span>OneRtt,
+
+    Retry,
+    VersionNegotiation,
+    Unknown,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>PacketNumberSpace {
+    Initial,
+    Handshake,
+    ApplicationData,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Clone, Serialize, Deserialize, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>PacketHeader {
+    <span class="kw">pub </span>packet_type: PacketType,
+    <span class="kw">pub </span>packet_number: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    <span class="kw">pub </span>flags: <span class="prelude-ty">Option</span>&lt;u8&gt;,
+    <span class="kw">pub </span>token: <span class="prelude-ty">Option</span>&lt;Token&gt;,
+
+    <span class="kw">pub </span>length: <span class="prelude-ty">Option</span>&lt;u16&gt;,
+
+    <span class="kw">pub </span>version: <span class="prelude-ty">Option</span>&lt;Bytes&gt;,
+
+    <span class="kw">pub </span>scil: <span class="prelude-ty">Option</span>&lt;u8&gt;,
+    <span class="kw">pub </span>dcil: <span class="prelude-ty">Option</span>&lt;u8&gt;,
+    <span class="kw">pub </span>scid: <span class="prelude-ty">Option</span>&lt;Bytes&gt;,
+    <span class="kw">pub </span>dcid: <span class="prelude-ty">Option</span>&lt;Bytes&gt;,
+}
+
+<span class="kw">impl </span>PacketHeader {
+    <span class="attr">#[allow(clippy::too_many_arguments)]
+    </span><span class="doccomment">/// Creates a new PacketHeader.
+    </span><span class="kw">pub fn </span>new(
+        packet_type: PacketType, packet_number: <span class="prelude-ty">Option</span>&lt;u64&gt;, flags: <span class="prelude-ty">Option</span>&lt;u8&gt;,
+        token: <span class="prelude-ty">Option</span>&lt;Token&gt;, length: <span class="prelude-ty">Option</span>&lt;u16&gt;, version: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+        scid: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>[u8]&gt;, dcid: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>[u8]&gt;,
+    ) -&gt; <span class="self">Self </span>{
+        <span class="kw">let </span>(scil, scid) = <span class="kw">match </span>scid {
+            <span class="prelude-val">Some</span>(cid) =&gt; (
+                <span class="prelude-val">Some</span>(cid.len() <span class="kw">as </span>u8),
+                <span class="prelude-val">Some</span>(<span class="macro">format!</span>(<span class="string">"{}"</span>, HexSlice::new(<span class="kw-2">&amp;</span>cid))),
+            ),
+
+            <span class="prelude-val">None </span>=&gt; (<span class="prelude-val">None</span>, <span class="prelude-val">None</span>),
+        };
+
+        <span class="kw">let </span>(dcil, dcid) = <span class="kw">match </span>dcid {
+            <span class="prelude-val">Some</span>(cid) =&gt; (
+                <span class="prelude-val">Some</span>(cid.len() <span class="kw">as </span>u8),
+                <span class="prelude-val">Some</span>(<span class="macro">format!</span>(<span class="string">"{}"</span>, HexSlice::new(<span class="kw-2">&amp;</span>cid))),
+            ),
+
+            <span class="prelude-val">None </span>=&gt; (<span class="prelude-val">None</span>, <span class="prelude-val">None</span>),
+        };
+
+        <span class="kw">let </span>version = version.map(|v| <span class="macro">format!</span>(<span class="string">"{v:x?}"</span>));
+
+        PacketHeader {
+            packet_type,
+            packet_number,
+            flags,
+            token,
+            length,
+            version,
+            scil,
+            dcil,
+            scid,
+            dcid,
+        }
+    }
+
+    <span class="doccomment">/// Creates a new PacketHeader.
+    ///
+    /// Once a QUIC connection has formed, version, dcid and scid are stable, so
+    /// there are space benefits to not logging them in every packet, especially
+    /// PacketType::OneRtt.
+    </span><span class="kw">pub fn </span>with_type(
+        ty: PacketType, packet_number: <span class="prelude-ty">Option</span>&lt;u64&gt;, version: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+        scid: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>[u8]&gt;, dcid: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>[u8]&gt;,
+    ) -&gt; <span class="self">Self </span>{
+        <span class="kw">match </span>ty {
+            PacketType::OneRtt =&gt; PacketHeader::new(
+                ty,
+                packet_number,
+                <span class="prelude-val">None</span>,
+                <span class="prelude-val">None</span>,
+                <span class="prelude-val">None</span>,
+                <span class="prelude-val">None</span>,
+                <span class="prelude-val">None</span>,
+                <span class="prelude-val">None</span>,
+            ),
+
+            <span class="kw">_ </span>=&gt; PacketHeader::new(
+                ty,
+                packet_number,
+                <span class="prelude-val">None</span>,
+                <span class="prelude-val">None</span>,
+                <span class="prelude-val">None</span>,
+                version,
+                scid,
+                dcid,
+            ),
+        }
+    }
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>StreamType {
+    Bidirectional,
+    Unidirectional,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>StreamSide {
+    Sending,
+    Receiving,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>StreamState {
+    <span class="comment">// bidirectional stream states, draft-23 3.4.
+    </span>Idle,
+    Open,
+    HalfClosedLocal,
+    HalfClosedRemote,
+    Closed,
+
+    <span class="comment">// sending-side stream states, draft-23 3.1.
+    </span>Ready,
+    Send,
+    DataSent,
+    ResetSent,
+    ResetReceived,
+
+    <span class="comment">// receive-side stream states, draft-23 3.2.
+    </span>Receive,
+    SizeKnown,
+    DataRead,
+    ResetRead,
+
+    <span class="comment">// both-side states
+    </span>DataReceived,
+
+    <span class="comment">// qlog-defined
+    </span>Destroyed,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>ErrorSpace {
+    TransportError,
+    ApplicationError,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>TransportError {
+    NoError,
+    InternalError,
+    ConnectionRefused,
+    FlowControlError,
+    StreamLimitError,
+    StreamStateError,
+    FinalSizeError,
+    FrameEncodingError,
+    TransportParameterError,
+    ConnectionIdLimitError,
+    ProtocolViolation,
+    InvalidToken,
+    ApplicationError,
+    CryptoBufferExceeded,
+    KeyUpdateError,
+    AeadLimitReached,
+    NoViablePath,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>TransportEventType {
+    VersionInformation,
+    AlpnInformation,
+
+    ParametersSet,
+    ParametersRestored,
+
+    DatagramsSent,
+    DatagramsReceived,
+    DatagramDropped,
+
+    PacketSent,
+    PacketReceived,
+    PacketDropped,
+    PacketBuffered,
+    PacketsAcked,
+
+    FramesProcessed,
+
+    StreamStateUpdated,
+
+    DataMoved,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>PacketSentTrigger {
+    RetransmitReordered,
+    RetransmitTimeout,
+    PtoProbe,
+    RetransmitCrypto,
+    CcBandwidthProbe,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>PacketReceivedTrigger {
+    KeysUnavailable,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>PacketDroppedTrigger {
+    InternalError,
+    Rejected,
+    Unsupported,
+    Invalid,
+    ConnectionUnknown,
+    DecryptionFailure,
+    General,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>PacketBufferedTrigger {
+    Backpressure,
+    KeysUnavailable,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>SecurityEventType {
+    KeyUpdated,
+    KeyDiscarded,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>RecoveryEventType {
+    ParametersSet,
+    MetricsUpdated,
+    CongestionStateUpdated,
+    LossTimerUpdated,
+    PacketLost,
+    MarkedForRetransmit,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>CongestionStateUpdatedTrigger {
+    PersistentCongestion,
+    Ecn,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>PacketLostTrigger {
+    ReorderingThreshold,
+    TimeThreshold,
+    PtoExpired,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>LossTimerEventType {
+    Set,
+    Expired,
+    Cancelled,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>TimerType {
+    Ack,
+    Pto,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(untagged)]
+</span><span class="kw">pub enum </span>AckedRanges {
+    Single(Vec&lt;Vec&lt;u64&gt;&gt;),
+    Double(Vec&lt;(u64, u64)&gt;),
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>QuicFrameTypeName {
+    Padding,
+    Ping,
+    Ack,
+    ResetStream,
+    StopSending,
+    Crypto,
+    NewToken,
+    Stream,
+    MaxData,
+    MaxStreamData,
+    MaxStreams,
+    DataBlocked,
+    StreamDataBlocked,
+    StreamsBlocked,
+    NewConnectionId,
+    RetireConnectionId,
+    PathChallenge,
+    PathResponse,
+    ConnectionClose,
+    ApplicationClose,
+    HandshakeDone,
+    Datagram,
+    Unknown,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
+#[serde(tag = <span class="string">"frame_type"</span>)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="comment">// Strictly, the qlog spec says that all these frame types have a frame_type
+// field. But instead of making that a rust object property, just use serde to
+// ensure it goes out on the wire. This means that deserialization of frames
+// also works automatically.
+</span><span class="kw">pub enum </span>QuicFrame {
+    Padding {
+        length: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+        payload_length: u32,
+    },
+
+    Ping {
+        length: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+        payload_length: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+    },
+
+    Ack {
+        ack_delay: <span class="prelude-ty">Option</span>&lt;f32&gt;,
+        acked_ranges: <span class="prelude-ty">Option</span>&lt;AckedRanges&gt;,
+
+        ect1: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+        ect0: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+        ce: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+        length: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+        payload_length: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+    },
+
+    ResetStream {
+        stream_id: u64,
+        error_code: u64,
+        final_size: u64,
+
+        length: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+        payload_length: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+    },
+
+    StopSending {
+        stream_id: u64,
+        error_code: u64,
+
+        length: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+        payload_length: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+    },
+
+    Crypto {
+        offset: u64,
+        length: u64,
+    },
+
+    NewToken {
+        token: Token,
+    },
+
+    Stream {
+        stream_id: u64,
+        offset: u64,
+        length: u64,
+        fin: <span class="prelude-ty">Option</span>&lt;bool&gt;,
+
+        raw: <span class="prelude-ty">Option</span>&lt;RawInfo&gt;,
+    },
+
+    MaxData {
+        maximum: u64,
+    },
+
+    MaxStreamData {
+        stream_id: u64,
+        maximum: u64,
+    },
+
+    MaxStreams {
+        stream_type: StreamType,
+        maximum: u64,
+    },
+
+    DataBlocked {
+        limit: u64,
+    },
+
+    StreamDataBlocked {
+        stream_id: u64,
+        limit: u64,
+    },
+
+    StreamsBlocked {
+        stream_type: StreamType,
+        limit: u64,
+    },
+
+    NewConnectionId {
+        sequence_number: u32,
+        retire_prior_to: u32,
+        connection_id_length: <span class="prelude-ty">Option</span>&lt;u8&gt;,
+        connection_id: Bytes,
+        stateless_reset_token: <span class="prelude-ty">Option</span>&lt;StatelessResetToken&gt;,
+    },
+
+    RetireConnectionId {
+        sequence_number: u32,
+    },
+
+    PathChallenge {
+        data: <span class="prelude-ty">Option</span>&lt;Bytes&gt;,
+    },
+
+    PathResponse {
+        data: <span class="prelude-ty">Option</span>&lt;Bytes&gt;,
+    },
+
+    ConnectionClose {
+        error_space: <span class="prelude-ty">Option</span>&lt;ErrorSpace&gt;,
+        error_code: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+        error_code_value: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+        reason: <span class="prelude-ty">Option</span>&lt;String&gt;,
+
+        trigger_frame_type: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    },
+
+    HandshakeDone,
+
+    Datagram {
+        length: u64,
+
+        raw: <span class="prelude-ty">Option</span>&lt;Bytes&gt;,
+    },
+
+    Unknown {
+        raw_frame_type: u64,
+        frame_type_value: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+        raw: <span class="prelude-ty">Option</span>&lt;RawInfo&gt;,
+    },
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>PreferredAddress {
+    <span class="kw">pub </span>ip_v4: String,
+    <span class="kw">pub </span>ip_v6: String,
+
+    <span class="kw">pub </span>port_v4: u16,
+    <span class="kw">pub </span>port_v6: u16,
+
+    <span class="kw">pub </span>connection_id: Bytes,
+    <span class="kw">pub </span>stateless_reset_token: StatelessResetToken,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>VersionInformation {
+    <span class="kw">pub </span>server_versions: <span class="prelude-ty">Option</span>&lt;Vec&lt;Bytes&gt;&gt;,
+    <span class="kw">pub </span>client_versions: <span class="prelude-ty">Option</span>&lt;Vec&lt;Bytes&gt;&gt;,
+    <span class="kw">pub </span>chosen_version: <span class="prelude-ty">Option</span>&lt;Bytes&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>AlpnInformation {
+    <span class="kw">pub </span>server_alpns: <span class="prelude-ty">Option</span>&lt;Vec&lt;Bytes&gt;&gt;,
+    <span class="kw">pub </span>client_alpns: <span class="prelude-ty">Option</span>&lt;Vec&lt;Bytes&gt;&gt;,
+    <span class="kw">pub </span>chosen_alpn: <span class="prelude-ty">Option</span>&lt;Bytes&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>TransportParametersSet {
+    <span class="kw">pub </span>owner: <span class="prelude-ty">Option</span>&lt;TransportOwner&gt;,
+
+    <span class="kw">pub </span>resumption_allowed: <span class="prelude-ty">Option</span>&lt;bool&gt;,
+    <span class="kw">pub </span>early_data_enabled: <span class="prelude-ty">Option</span>&lt;bool&gt;,
+    <span class="kw">pub </span>tls_cipher: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    <span class="kw">pub </span>aead_tag_length: <span class="prelude-ty">Option</span>&lt;u8&gt;,
+
+    <span class="kw">pub </span>original_destination_connection_id: <span class="prelude-ty">Option</span>&lt;Bytes&gt;,
+    <span class="kw">pub </span>initial_source_connection_id: <span class="prelude-ty">Option</span>&lt;Bytes&gt;,
+    <span class="kw">pub </span>retry_source_connection_id: <span class="prelude-ty">Option</span>&lt;Bytes&gt;,
+    <span class="kw">pub </span>stateless_reset_token: <span class="prelude-ty">Option</span>&lt;StatelessResetToken&gt;,
+    <span class="kw">pub </span>disable_active_migration: <span class="prelude-ty">Option</span>&lt;bool&gt;,
+
+    <span class="kw">pub </span>max_idle_timeout: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>max_udp_payload_size: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+    <span class="kw">pub </span>ack_delay_exponent: <span class="prelude-ty">Option</span>&lt;u16&gt;,
+    <span class="kw">pub </span>max_ack_delay: <span class="prelude-ty">Option</span>&lt;u16&gt;,
+    <span class="kw">pub </span>active_connection_id_limit: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+
+    <span class="kw">pub </span>initial_max_data: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>initial_max_stream_data_bidi_local: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>initial_max_stream_data_bidi_remote: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>initial_max_stream_data_uni: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>initial_max_streams_bidi: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>initial_max_streams_uni: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    <span class="kw">pub </span>preferred_address: <span class="prelude-ty">Option</span>&lt;PreferredAddress&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>TransportParametersRestored {
+    <span class="kw">pub </span>disable_active_migration: <span class="prelude-ty">Option</span>&lt;bool&gt;,
+
+    <span class="kw">pub </span>max_idle_timeout: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>max_udp_payload_size: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+    <span class="kw">pub </span>active_connection_id_limit: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+
+    <span class="kw">pub </span>initial_max_data: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>initial_max_stream_data_bidi_local: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>initial_max_stream_data_bidi_remote: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>initial_max_stream_data_uni: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>initial_max_streams_bidi: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>initial_max_streams_uni: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>DatagramsReceived {
+    <span class="kw">pub </span>count: <span class="prelude-ty">Option</span>&lt;u16&gt;,
+
+    <span class="kw">pub </span>raw: <span class="prelude-ty">Option</span>&lt;Vec&lt;RawInfo&gt;&gt;,
+
+    <span class="kw">pub </span>datagram_ids: <span class="prelude-ty">Option</span>&lt;Vec&lt;u32&gt;&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>DatagramsSent {
+    <span class="kw">pub </span>count: <span class="prelude-ty">Option</span>&lt;u16&gt;,
+
+    <span class="kw">pub </span>raw: <span class="prelude-ty">Option</span>&lt;Vec&lt;RawInfo&gt;&gt;,
+
+    <span class="kw">pub </span>datagram_ids: <span class="prelude-ty">Option</span>&lt;Vec&lt;u32&gt;&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>DatagramDropped {
+    <span class="kw">pub </span>raw: <span class="prelude-ty">Option</span>&lt;RawInfo&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
+</span><span class="kw">pub struct </span>PacketReceived {
+    <span class="kw">pub </span>header: PacketHeader,
+    <span class="comment">// `frames` is defined here in the QLog schema specification. However,
+    // our streaming serializer requires serde to put the object at the end,
+    // so we define it there and depend on serde's preserve_order feature.
+    </span><span class="kw">pub </span>is_coalesced: <span class="prelude-ty">Option</span>&lt;bool&gt;,
+
+    <span class="kw">pub </span>retry_token: <span class="prelude-ty">Option</span>&lt;Token&gt;,
+
+    <span class="kw">pub </span>stateless_reset_token: <span class="prelude-ty">Option</span>&lt;StatelessResetToken&gt;,
+
+    <span class="kw">pub </span>supported_versions: <span class="prelude-ty">Option</span>&lt;Vec&lt;Bytes&gt;&gt;,
+
+    <span class="kw">pub </span>raw: <span class="prelude-ty">Option</span>&lt;RawInfo&gt;,
+    <span class="kw">pub </span>datagram_id: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+
+    <span class="kw">pub </span>trigger: <span class="prelude-ty">Option</span>&lt;PacketReceivedTrigger&gt;,
+
+    <span class="kw">pub </span>frames: <span class="prelude-ty">Option</span>&lt;Vec&lt;QuicFrame&gt;&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
+</span><span class="kw">pub struct </span>PacketSent {
+    <span class="kw">pub </span>header: PacketHeader,
+    <span class="comment">// `frames` is defined here in the QLog schema specification. However,
+    // our streaming serializer requires serde to put the object at the end,
+    // so we define it there and depend on serde's preserve_order feature.
+    </span><span class="kw">pub </span>is_coalesced: <span class="prelude-ty">Option</span>&lt;bool&gt;,
+
+    <span class="kw">pub </span>retry_token: <span class="prelude-ty">Option</span>&lt;Token&gt;,
+
+    <span class="kw">pub </span>stateless_reset_token: <span class="prelude-ty">Option</span>&lt;StatelessResetToken&gt;,
+
+    <span class="kw">pub </span>supported_versions: <span class="prelude-ty">Option</span>&lt;Vec&lt;Bytes&gt;&gt;,
+
+    <span class="kw">pub </span>raw: <span class="prelude-ty">Option</span>&lt;RawInfo&gt;,
+    <span class="kw">pub </span>datagram_id: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+
+    <span class="kw">pub </span>trigger: <span class="prelude-ty">Option</span>&lt;PacketSentTrigger&gt;,
+
+    <span class="kw">pub </span>send_at_time: <span class="prelude-ty">Option</span>&lt;f32&gt;,
+
+    <span class="kw">pub </span>frames: <span class="prelude-ty">Option</span>&lt;SmallVec&lt;[QuicFrame; <span class="number">1</span>]&gt;&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>PacketDropped {
+    <span class="kw">pub </span>header: <span class="prelude-ty">Option</span>&lt;PacketHeader&gt;,
+
+    <span class="kw">pub </span>raw: <span class="prelude-ty">Option</span>&lt;RawInfo&gt;,
+    <span class="kw">pub </span>datagram_id: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+
+    <span class="kw">pub </span>details: <span class="prelude-ty">Option</span>&lt;String&gt;,
+
+    <span class="kw">pub </span>trigger: <span class="prelude-ty">Option</span>&lt;PacketDroppedTrigger&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>PacketBuffered {
+    <span class="kw">pub </span>header: <span class="prelude-ty">Option</span>&lt;PacketHeader&gt;,
+
+    <span class="kw">pub </span>raw: <span class="prelude-ty">Option</span>&lt;RawInfo&gt;,
+    <span class="kw">pub </span>datagram_id: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+
+    <span class="kw">pub </span>trigger: <span class="prelude-ty">Option</span>&lt;PacketBufferedTrigger&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>PacketsAcked {
+    <span class="kw">pub </span>packet_number_space: <span class="prelude-ty">Option</span>&lt;PacketNumberSpace&gt;,
+    <span class="kw">pub </span>packet_numbers: <span class="prelude-ty">Option</span>&lt;Vec&lt;u64&gt;&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>StreamStateUpdated {
+    <span class="kw">pub </span>stream_id: u64,
+    <span class="kw">pub </span>stream_type: <span class="prelude-ty">Option</span>&lt;StreamType&gt;,
+
+    <span class="kw">pub </span>old: <span class="prelude-ty">Option</span>&lt;StreamState&gt;,
+    <span class="kw">pub </span>new: StreamState,
+
+    <span class="kw">pub </span>stream_side: <span class="prelude-ty">Option</span>&lt;StreamSide&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
+</span><span class="kw">pub struct </span>FramesProcessed {
+    <span class="kw">pub </span>frames: Vec&lt;QuicFrame&gt;,
+
+    <span class="kw">pub </span>packet_number: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>DataMoved {
+    <span class="kw">pub </span>stream_id: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>offset: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>length: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    <span class="kw">pub </span>from: <span class="prelude-ty">Option</span>&lt;DataRecipient&gt;,
+    <span class="kw">pub </span>to: <span class="prelude-ty">Option</span>&lt;DataRecipient&gt;,
+
+    <span class="kw">pub </span>raw: <span class="prelude-ty">Option</span>&lt;RawInfo&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
+</span><span class="kw">pub struct </span>RecoveryParametersSet {
+    <span class="kw">pub </span>reordering_threshold: <span class="prelude-ty">Option</span>&lt;u16&gt;,
+    <span class="kw">pub </span>time_threshold: <span class="prelude-ty">Option</span>&lt;f32&gt;,
+    <span class="kw">pub </span>timer_granularity: <span class="prelude-ty">Option</span>&lt;u16&gt;,
+    <span class="kw">pub </span>initial_rtt: <span class="prelude-ty">Option</span>&lt;f32&gt;,
+
+    <span class="kw">pub </span>max_datagram_size: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+    <span class="kw">pub </span>initial_congestion_window: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>minimum_congestion_window: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+    <span class="kw">pub </span>loss_reduction_factor: <span class="prelude-ty">Option</span>&lt;f32&gt;,
+    <span class="kw">pub </span>persistent_congestion_threshold: <span class="prelude-ty">Option</span>&lt;u16&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
+</span><span class="kw">pub struct </span>MetricsUpdated {
+    <span class="kw">pub </span>min_rtt: <span class="prelude-ty">Option</span>&lt;f32&gt;,
+    <span class="kw">pub </span>smoothed_rtt: <span class="prelude-ty">Option</span>&lt;f32&gt;,
+    <span class="kw">pub </span>latest_rtt: <span class="prelude-ty">Option</span>&lt;f32&gt;,
+    <span class="kw">pub </span>rtt_variance: <span class="prelude-ty">Option</span>&lt;f32&gt;,
+
+    <span class="kw">pub </span>pto_count: <span class="prelude-ty">Option</span>&lt;u16&gt;,
+
+    <span class="kw">pub </span>congestion_window: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>bytes_in_flight: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    <span class="kw">pub </span>ssthresh: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    <span class="comment">// qlog defined
+    </span><span class="kw">pub </span>packets_in_flight: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    <span class="kw">pub </span>pacing_rate: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>CongestionStateUpdated {
+    <span class="kw">pub </span>old: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    <span class="kw">pub </span>new: String,
+
+    <span class="kw">pub </span>trigger: <span class="prelude-ty">Option</span>&lt;CongestionStateUpdatedTrigger&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
+</span><span class="kw">pub struct </span>LossTimerUpdated {
+    <span class="kw">pub </span>timer_type: <span class="prelude-ty">Option</span>&lt;TimerType&gt;,
+    <span class="kw">pub </span>packet_number_space: <span class="prelude-ty">Option</span>&lt;PacketNumberSpace&gt;,
+
+    <span class="kw">pub </span>event_type: LossTimerEventType,
+
+    <span class="kw">pub </span>delta: <span class="prelude-ty">Option</span>&lt;f32&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
+</span><span class="kw">pub struct </span>PacketLost {
+    <span class="kw">pub </span>header: <span class="prelude-ty">Option</span>&lt;PacketHeader&gt;,
+
+    <span class="kw">pub </span>frames: <span class="prelude-ty">Option</span>&lt;Vec&lt;QuicFrame&gt;&gt;,
+
+    <span class="kw">pub </span>trigger: <span class="prelude-ty">Option</span>&lt;PacketLostTrigger&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
+</span><span class="kw">pub struct </span>MarkedForRetransmit {
+    <span class="kw">pub </span>frames: Vec&lt;QuicFrame&gt;,
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+    <span class="kw">use </span><span class="kw">crate</span>::testing::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>packet_header() {
+        <span class="kw">let </span>pkt_hdr = make_pkt_hdr(PacketType::Initial);
+
+        <span class="kw">let </span>log_string = <span class="string">r#"{
+  "packet_type": "initial",
+  "packet_number": 0,
+  "version": "1",
+  "scil": 8,
+  "dcil": 8,
+  "scid": "7e37e4dcc6682da8",
+  "dcid": "36ce104eee50101c"
+}"#</span>;
+
+        <span class="macro">assert_eq!</span>(serde_json::to_string_pretty(<span class="kw-2">&amp;</span>pkt_hdr).unwrap(), log_string);
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/qlog/events/security.rs.html b/src/qlog/events/security.rs.html
new file mode 100644
index 0000000..846720d
--- /dev/null
+++ b/src/qlog/events/security.rs.html
@@ -0,0 +1,163 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `qlog/src/events/security.rs`."><title>security.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2021, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span>serde::Deserialize;
+<span class="kw">use </span>serde::Serialize;
+
+<span class="kw">use </span><span class="kw">super</span>::Bytes;
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>KeyType {
+    ServerInitialSecret,
+    ClientInitialSecret,
+
+    ServerHandshakeSecret,
+    ClientHandshakeSecret,
+
+    <span class="attr">#[serde(rename = <span class="string">"server_0rtt_secret"</span>)]
+    </span>Server0RttSecret,
+    <span class="attr">#[serde(rename = <span class="string">"client_0rtt_secret"</span>)]
+    </span>Client0RttSecret,
+    <span class="attr">#[serde(rename = <span class="string">"server_1rtt_secret"</span>)]
+    </span>Server1RttSecret,
+    <span class="attr">#[serde(rename = <span class="string">"client_1rtt_secret"</span>)]
+    </span>Client1RttSecret,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>KeyUpdateOrRetiredTrigger {
+    Tls,
+    RemoteUpdate,
+    LocalUpdate,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>KeyUpdated {
+    <span class="kw">pub </span>key_type: KeyType,
+
+    <span class="kw">pub </span>old: <span class="prelude-ty">Option</span>&lt;Bytes&gt;,
+    <span class="kw">pub </span>new: Bytes,
+
+    <span class="kw">pub </span>generation: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+
+    <span class="kw">pub </span>trigger: <span class="prelude-ty">Option</span>&lt;KeyUpdateOrRetiredTrigger&gt;,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>KeyDiscarded {
+    <span class="kw">pub </span>key_type: KeyType,
+    <span class="kw">pub </span>key: <span class="prelude-ty">Option</span>&lt;Bytes&gt;,
+
+    <span class="kw">pub </span>generation: <span class="prelude-ty">Option</span>&lt;u32&gt;,
+
+    <span class="kw">pub </span>trigger: <span class="prelude-ty">Option</span>&lt;KeyUpdateOrRetiredTrigger&gt;,
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/qlog/lib.rs.html b/src/qlog/lib.rs.html
new file mode 100644
index 0000000..6ede0ed
--- /dev/null
+++ b/src/qlog/lib.rs.html
@@ -0,0 +1,1975 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `qlog/src/lib.rs`."><title>lib.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="doccomment">//! The qlog crate is an implementation of the qlog [main logging schema],
+//! [QUIC event definitions], and [HTTP/3 and QPACK event definitions].
+//! The crate provides a qlog data model that can be used for traces with
+//! events. It supports serialization and deserialization but defers logging IO
+//! choices to applications.
+//!
+//! Serialization operates in either a [buffered mode] or a [streaming mode].
+//!
+//! The crate uses Serde for conversion between Rust and JSON.
+//!
+//! [main logging schema]: https://datatracker.ietf.org/doc/html/draft-ietf-quic-qlog-main-schema
+//! [QUIC event definitions]:
+//! https://datatracker.ietf.org/doc/html/draft-ietf-quic-qlog-quic-events.html
+//! [HTTP/3 and QPACK event definitions]:
+//! https://datatracker.ietf.org/doc/html/draft-ietf-quic-qlog-h3-events.html
+//! [buffered mode]: #buffered-traces-with-standard-json
+//! [streaming mode]: #streaming-traces-with-json-seq
+//!
+//! Overview
+//! ---------------
+//! qlog is a hierarchical logging format, with a rough structure of:
+//!
+//! * Log
+//!   * Trace(s)
+//!     * Event(s)
+//!
+//! In practice, a single QUIC connection maps to a single Trace file with one
+//! or more Events. Applications can decide whether to combine Traces from
+//! different connections into the same Log.
+//!
+//! ## Buffered Traces with standard JSON
+//!
+//! A [`Trace`] is a single JSON object. It contains metadata such as the
+//! [`VantagePoint`] of capture and the [`Configuration`], and protocol event
+//! data in the [`Event`] array.
+//!
+//! JSON Traces allow applications to appends events to them before eventually
+//! being serialized as a complete JSON object.
+//!
+//! ### Creating a Trace
+//!
+//! ```
+//! let mut trace = qlog::Trace::new(
+//!     qlog::VantagePoint {
+//!         name: Some("Example client".to_string()),
+//!         ty: qlog::VantagePointType::Client,
+//!         flow: None,
+//!     },
+//!     Some("Example qlog trace".to_string()),
+//!     Some("Example qlog trace description".to_string()),
+//!     Some(qlog::Configuration {
+//!         time_offset: Some(0.0),
+//!         original_uris: None,
+//!     }),
+//!     None,
+//! );
+//! ```
+//!
+//! ### Adding events to a Trace
+//!
+//! Qlog [`Event`] objects are added to [`qlog::Trace.events`].
+//!
+//! The following example demonstrates how to log a qlog QUIC `packet_sent`
+//! event containing a single Crypto frame. It constructs the necessary elements
+//! of the [`Event`], then appends it to the trace with [`push_event()`].
+//!
+//! ```
+//! # let mut trace = qlog::Trace::new (
+//! #     qlog::VantagePoint {
+//! #         name: Some("Example client".to_string()),
+//! #         ty: qlog::VantagePointType::Client,
+//! #         flow: None,
+//! #     },
+//! #     Some("Example qlog trace".to_string()),
+//! #     Some("Example qlog trace description".to_string()),
+//! #     Some(qlog::Configuration {
+//! #         time_offset: Some(0.0),
+//! #         original_uris: None,
+//! #     }),
+//! #     None
+//! # );
+//!
+//! let scid = [0x7e, 0x37, 0xe4, 0xdc, 0xc6, 0x68, 0x2d, 0xa8];
+//! let dcid = [0x36, 0xce, 0x10, 0x4e, 0xee, 0x50, 0x10, 0x1c];
+//!
+//! let pkt_hdr = qlog::events::quic::PacketHeader::new(
+//!     qlog::events::quic::PacketType::Initial,
+//!     Some(0),          // packet_number
+//!     None,             // flags
+//!     None,             // token
+//!     None,             // length
+//!     Some(0x00000001), // version
+//!     Some(&amp;scid),
+//!     Some(&amp;dcid),
+//! );
+//!
+//! let frames = vec![qlog::events::quic::QuicFrame::Crypto {
+//!     offset: 0,
+//!     length: 0,
+//! }];
+//!
+//! let raw = qlog::events::RawInfo {
+//!     length: Some(1251),
+//!     payload_length: Some(1224),
+//!     data: None,
+//! };
+//!
+//! let event_data =
+//!     qlog::events::EventData::PacketSent(qlog::events::quic::PacketSent {
+//!         header: pkt_hdr,
+//!         frames: Some(frames.into()),
+//!         is_coalesced: None,
+//!         retry_token: None,
+//!         stateless_reset_token: None,
+//!         supported_versions: None,
+//!         raw: Some(raw),
+//!         datagram_id: None,
+//!         send_at_time: None,
+//!         trigger: None,
+//!     });
+//!
+//! trace.push_event(qlog::events::Event::with_time(0.0, event_data));
+//! ```
+//!
+//! ### Serializing
+//!
+//! The qlog crate has only been tested with `serde_json`, however
+//! other serializer targets might work.
+//!
+//! For example, serializing the trace created above:
+//!
+//! ```
+//! # let mut trace = qlog::Trace::new (
+//! #     qlog::VantagePoint {
+//! #         name: Some("Example client".to_string()),
+//! #         ty: qlog::VantagePointType::Client,
+//! #         flow: None,
+//! #     },
+//! #     Some("Example qlog trace".to_string()),
+//! #     Some("Example qlog trace description".to_string()),
+//! #     Some(qlog::Configuration {
+//! #         time_offset: Some(0.0),
+//! #         original_uris: None,
+//! #     }),
+//! #     None
+//! # );
+//! serde_json::to_string_pretty(&amp;trace).unwrap();
+//! ```
+//!
+//! which would generate the following:
+//!
+//! ```ignore
+//! {
+//!   "vantage_point": {
+//!     "name": "Example client",
+//!     "type": "client"
+//!   },
+//!   "title": "Example qlog trace",
+//!   "description": "Example qlog trace description",
+//!   "configuration": {
+//!     "time_offset": 0.0
+//!   },
+//!   "events": [
+//!     {
+//!       "time": 0.0,
+//!       "name": "transport:packet_sent",
+//!       "data": {
+//!         "header": {
+//!           "packet_type": "initial",
+//!           "packet_number": 0,
+//!           "version": "1",
+//!           "scil": 8,
+//!           "dcil": 8,
+//!           "scid": "7e37e4dcc6682da8",
+//!           "dcid": "36ce104eee50101c"
+//!         },
+//!         "raw": {
+//!           "length": 1251,
+//!           "payload_length": 1224
+//!         },
+//!         "frames": [
+//!           {
+//!             "frame_type": "crypto",
+//!             "offset": 0,
+//!             "length": 0
+//!           }
+//!         ]
+//!       }
+//!     }
+//!   ]
+//! }
+//! ```
+//!
+//! ## Streaming Traces with JSON-SEQ
+//!
+//! To help support streaming serialization of qlogs,
+//! draft-ietf-quic-qlog-main-schema-01 introduced support for RFC 7464 JSON
+//! Text Sequences (JSON-SEQ). The qlog crate supports this format and provides
+//! utilities that aid streaming.
+//!
+//! A [`TraceSeq`] contains metadata such as the [`VantagePoint`] of capture and
+//! the [`Configuration`]. However, protocol event data is handled as separate
+//! lines containing a record separator character, a serialized [`Event`], and a
+//! newline.
+//!
+//! ### Creating a TraceSeq
+//!
+//! ```
+//! let mut trace = qlog::TraceSeq::new(
+//!     qlog::VantagePoint {
+//!         name: Some("Example client".to_string()),
+//!         ty: qlog::VantagePointType::Client,
+//!         flow: None,
+//!     },
+//!     Some("Example qlog trace".to_string()),
+//!     Some("Example qlog trace description".to_string()),
+//!     Some(qlog::Configuration {
+//!         time_offset: Some(0.0),
+//!         original_uris: None,
+//!     }),
+//!     None,
+//! );
+//! ```
+//!
+//! Create an object with the [`Write`] trait:
+//!
+//! ```
+//! let mut file = std::fs::File::create("foo.sqlog").unwrap();
+//! ```
+//!
+//! Create a [`QlogStreamer`] and start serialization to foo.sqlog
+//! using [`start_log()`]:
+//!
+//! ```
+//! # let mut trace = qlog::TraceSeq::new(
+//! #    qlog::VantagePoint {
+//! #        name: Some("Example client".to_string()),
+//! #        ty: qlog::VantagePointType::Client,
+//! #        flow: None,
+//! #    },
+//! #    Some("Example qlog trace".to_string()),
+//! #    Some("Example qlog trace description".to_string()),
+//! #    Some(qlog::Configuration {
+//! #        time_offset: Some(0.0),
+//! #        original_uris: None,
+//! #    }),
+//! #    None,
+//! # );
+//! # let mut file = std::fs::File::create("foo.sqlog").unwrap();
+//! let mut streamer = qlog::streamer::QlogStreamer::new(
+//!     qlog::QLOG_VERSION.to_string(),
+//!     Some("Example qlog".to_string()),
+//!     Some("Example qlog description".to_string()),
+//!     None,
+//!     std::time::Instant::now(),
+//!     trace,
+//!     qlog::events::EventImportance::Base,
+//!     Box::new(file),
+//! );
+//!
+//! streamer.start_log().ok();
+//! ```
+//!
+//! ### Adding events
+//!
+//! Once logging has started you can stream events. Events
+//! are written in one step using one of [`add_event()`],
+//! [`add_event_with_instant()`], [`add_event_now()`],
+//! [`add_event_data_with_instant()`], or [`add_event_data_now()`] :
+//!
+//! ```
+//! # let mut trace = qlog::TraceSeq::new(
+//! #    qlog::VantagePoint {
+//! #        name: Some("Example client".to_string()),
+//! #        ty: qlog::VantagePointType::Client,
+//! #        flow: None,
+//! #    },
+//! #    Some("Example qlog trace".to_string()),
+//! #    Some("Example qlog trace description".to_string()),
+//! #    Some(qlog::Configuration {
+//! #        time_offset: Some(0.0),
+//! #        original_uris: None,
+//! #    }),
+//! #    None,
+//! # );
+//! # let mut file = std::fs::File::create("foo.qlog").unwrap();
+//! # let mut streamer = qlog::streamer::QlogStreamer::new(
+//! #     qlog::QLOG_VERSION.to_string(),
+//! #     Some("Example qlog".to_string()),
+//! #     Some("Example qlog description".to_string()),
+//! #     None,
+//! #     std::time::Instant::now(),
+//! #     trace,
+//! #     qlog::events::EventImportance::Base,
+//! #     Box::new(file),
+//! # );
+//!
+//! let scid = [0x7e, 0x37, 0xe4, 0xdc, 0xc6, 0x68, 0x2d, 0xa8];
+//! let dcid = [0x36, 0xce, 0x10, 0x4e, 0xee, 0x50, 0x10, 0x1c];
+//!
+//! let pkt_hdr = qlog::events::quic::PacketHeader::with_type(
+//!     qlog::events::quic::PacketType::OneRtt,
+//!     Some(0),
+//!     Some(0x00000001),
+//!     Some(&amp;scid),
+//!     Some(&amp;dcid),
+//! );
+//!
+//! let ping = qlog::events::quic::QuicFrame::Ping {
+//!     length: None,
+//!     payload_length: None,
+//! };
+//! let padding = qlog::events::quic::QuicFrame::Padding {
+//!     length: None,
+//!     payload_length: 1234,
+//! };
+//!
+//! let event_data =
+//!     qlog::events::EventData::PacketSent(qlog::events::quic::PacketSent {
+//!         header: pkt_hdr,
+//!         frames: Some(vec![ping, padding].into()),
+//!         is_coalesced: None,
+//!         retry_token: None,
+//!         stateless_reset_token: None,
+//!         supported_versions: None,
+//!         raw: None,
+//!         datagram_id: None,
+//!         send_at_time: None,
+//!         trigger: None,
+//!     });
+//!
+//! let event = qlog::events::Event::with_time(0.0, event_data);
+//!
+//! streamer.add_event(event).ok();
+//! ```
+//!
+//! Once all events have been written, the log
+//! can be finalized with [`finish_log()`]:
+//!
+//! ```
+//! # let mut trace = qlog::TraceSeq::new(
+//! #    qlog::VantagePoint {
+//! #        name: Some("Example client".to_string()),
+//! #        ty: qlog::VantagePointType::Client,
+//! #        flow: None,
+//! #    },
+//! #    Some("Example qlog trace".to_string()),
+//! #    Some("Example qlog trace description".to_string()),
+//! #    Some(qlog::Configuration {
+//! #        time_offset: Some(0.0),
+//! #        original_uris: None,
+//! #    }),
+//! #    None,
+//! # );
+//! # let mut file = std::fs::File::create("foo.qlog").unwrap();
+//! # let mut streamer = qlog::streamer::QlogStreamer::new(
+//! #     qlog::QLOG_VERSION.to_string(),
+//! #     Some("Example qlog".to_string()),
+//! #     Some("Example qlog description".to_string()),
+//! #     None,
+//! #     std::time::Instant::now(),
+//! #     trace,
+//! #     qlog::events::EventImportance::Base,
+//! #     Box::new(file),
+//! # );
+//! streamer.finish_log().ok();
+//! ```
+//!
+//! ### Serializing
+//!
+//! Serialization to JSON occurs as methods on the [`QlogStreamer`]
+//! are called. No additional steps are required.
+//!
+//! [`Trace`]: struct.Trace.html
+//! [`TraceSeq`]: struct.TraceSeq.html
+//! [`VantagePoint`]: struct.VantagePoint.html
+//! [`Configuration`]: struct.Configuration.html
+//! [`qlog::Trace.events`]: struct.Trace.html#structfield.events
+//! [`push_event()`]: struct.Trace.html#method.push_event
+//! [`QlogStreamer`]: struct.QlogStreamer.html
+//! [`Write`]: https://doc.rust-lang.org/std/io/trait.Write.html
+//! [`start_log()`]: streamer/struct.QlogStreamer.html#method.start_log
+//! [`add_event()`]: streamer/struct.QlogStreamer.html#method.add_event
+//! [`add_event_with_instant()`]: streamer/struct.QlogStreamer.html#method.add_event_with_instant
+//! [`add_event_now()`]: streamer/struct.QlogStreamer.html#method.add_event_now
+//! [`add_event_data_with_instant()`]: streamer/struct.QlogStreamer.html#method.add_event_data_with_instant
+//! [`add_event_data_now()`]: streamer/struct.QlogStreamer.html#method.add_event_data_now
+//! [`finish_log()`]: streamer/struct.QlogStreamer.html#method.finish_log
+
+</span><span class="kw">use </span><span class="kw">crate</span>::events::quic::PacketHeader;
+<span class="kw">use </span><span class="kw">crate</span>::events::Event;
+
+<span class="kw">use </span>serde::Deserialize;
+<span class="kw">use </span>serde::Serialize;
+
+<span class="doccomment">/// A quiche qlog error.
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub enum </span>Error {
+    <span class="doccomment">/// There is no more work to do.
+    </span>Done,
+
+    <span class="doccomment">/// The operation cannot be completed because it was attempted
+    /// in an invalid state.
+    </span>InvalidState,
+
+    <span class="comment">// Invalid Qlog format
+    </span>InvalidFormat,
+
+    <span class="doccomment">/// I/O error.
+    </span>IoError(std::io::Error),
+}
+
+<span class="kw">impl </span>std::fmt::Display <span class="kw">for </span>Error {
+    <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+        <span class="macro">write!</span>(f, <span class="string">"{self:?}"</span>)
+    }
+}
+
+<span class="kw">impl </span>std::error::Error <span class="kw">for </span>Error {
+    <span class="kw">fn </span>source(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>(<span class="kw">dyn </span>std::error::Error + <span class="lifetime">'static</span>)&gt; {
+        <span class="prelude-val">None
+    </span>}
+}
+
+<span class="kw">impl </span>std::convert::From&lt;std::io::Error&gt; <span class="kw">for </span>Error {
+    <span class="kw">fn </span>from(err: std::io::Error) -&gt; <span class="self">Self </span>{
+        Error::IoError(err)
+    }
+}
+
+<span class="kw">pub const </span>QLOG_VERSION: <span class="kw-2">&amp;</span>str = <span class="string">"0.3"</span>;
+
+<span class="kw">pub type </span>Bytes = String;
+<span class="kw">pub type </span>StatelessResetToken = Bytes;
+
+<span class="doccomment">/// A specialized [`Result`] type for quiche qlog operations.
+///
+/// This type is used throughout the public API for any operation that
+/// can produce an error.
+///
+/// [`Result`]: https://doc.rust-lang.org/std/result/enum.Result.html
+</span><span class="kw">pub type </span><span class="prelude-ty">Result</span>&lt;T&gt; = std::result::Result&lt;T, Error&gt;;
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone)]
+</span><span class="kw">pub struct </span>Qlog {
+    <span class="kw">pub </span>qlog_version: String,
+    <span class="kw">pub </span>qlog_format: String,
+    <span class="kw">pub </span>title: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    <span class="kw">pub </span>description: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    <span class="kw">pub </span>summary: <span class="prelude-ty">Option</span>&lt;String&gt;,
+
+    <span class="kw">pub </span>traces: Vec&lt;Trace&gt;,
+}
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, Debug)]
+</span><span class="kw">pub struct </span>QlogSeq {
+    <span class="kw">pub </span>qlog_version: String,
+    <span class="kw">pub </span>qlog_format: String,
+    <span class="kw">pub </span>title: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    <span class="kw">pub </span>description: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    <span class="kw">pub </span>summary: <span class="prelude-ty">Option</span>&lt;String&gt;,
+
+    <span class="kw">pub </span>trace: TraceSeq,
+}
+
+<span class="attr">#[derive(Clone, Copy)]
+</span><span class="kw">pub enum </span>ImportanceLogLevel {
+    Core  = <span class="number">0</span>,
+    Base  = <span class="number">1</span>,
+    Extra = <span class="number">2</span>,
+}
+
+<span class="comment">// We now commence data definitions heavily styled on the QLOG
+// schema definition. Data is serialized using serde.
+</span><span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
+</span><span class="kw">pub struct </span>Trace {
+    <span class="kw">pub </span>vantage_point: VantagePoint,
+    <span class="kw">pub </span>title: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    <span class="kw">pub </span>description: <span class="prelude-ty">Option</span>&lt;String&gt;,
+
+    <span class="kw">pub </span>configuration: <span class="prelude-ty">Option</span>&lt;Configuration&gt;,
+
+    <span class="kw">pub </span>common_fields: <span class="prelude-ty">Option</span>&lt;CommonFields&gt;,
+
+    <span class="kw">pub </span>events: Vec&lt;Event&gt;,
+}
+
+<span class="doccomment">/// Helper functions for using a qlog [Trace].
+</span><span class="kw">impl </span>Trace {
+    <span class="doccomment">/// Creates a new qlog [Trace]
+    </span><span class="kw">pub fn </span>new(
+        vantage_point: VantagePoint, title: <span class="prelude-ty">Option</span>&lt;String&gt;,
+        description: <span class="prelude-ty">Option</span>&lt;String&gt;, configuration: <span class="prelude-ty">Option</span>&lt;Configuration&gt;,
+        common_fields: <span class="prelude-ty">Option</span>&lt;CommonFields&gt;,
+    ) -&gt; <span class="self">Self </span>{
+        Trace {
+            vantage_point,
+            title,
+            description,
+            configuration,
+            common_fields,
+            events: Vec::new(),
+        }
+    }
+
+    <span class="doccomment">/// Append an [Event] to a [Trace]
+    </span><span class="kw">pub fn </span>push_event(<span class="kw-2">&amp;mut </span><span class="self">self</span>, event: Event) {
+        <span class="self">self</span>.events.push(event);
+    }
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
+</span><span class="kw">pub struct </span>TraceSeq {
+    <span class="kw">pub </span>vantage_point: VantagePoint,
+    <span class="kw">pub </span>title: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    <span class="kw">pub </span>description: <span class="prelude-ty">Option</span>&lt;String&gt;,
+
+    <span class="kw">pub </span>configuration: <span class="prelude-ty">Option</span>&lt;Configuration&gt;,
+
+    <span class="kw">pub </span>common_fields: <span class="prelude-ty">Option</span>&lt;CommonFields&gt;,
+}
+
+<span class="doccomment">/// Helper functions for using a qlog [TraceSeq].
+</span><span class="kw">impl </span>TraceSeq {
+    <span class="doccomment">/// Creates a new qlog [TraceSeq]
+    </span><span class="kw">pub fn </span>new(
+        vantage_point: VantagePoint, title: <span class="prelude-ty">Option</span>&lt;String&gt;,
+        description: <span class="prelude-ty">Option</span>&lt;String&gt;, configuration: <span class="prelude-ty">Option</span>&lt;Configuration&gt;,
+        common_fields: <span class="prelude-ty">Option</span>&lt;CommonFields&gt;,
+    ) -&gt; <span class="self">Self </span>{
+        TraceSeq {
+            vantage_point,
+            title,
+            description,
+            configuration,
+            common_fields,
+        }
+    }
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>VantagePoint {
+    <span class="kw">pub </span>name: <span class="prelude-ty">Option</span>&lt;String&gt;,
+
+    <span class="attr">#[serde(rename = <span class="string">"type"</span>)]
+    </span><span class="kw">pub </span>ty: VantagePointType,
+
+    <span class="kw">pub </span>flow: <span class="prelude-ty">Option</span>&lt;VantagePointType&gt;,
+}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>VantagePointType {
+    Client,
+    Server,
+    Network,
+    Unknown,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
+</span><span class="kw">pub struct </span>Configuration {
+    <span class="kw">pub </span>time_offset: <span class="prelude-ty">Option</span>&lt;f64&gt;,
+
+    <span class="kw">pub </span>original_uris: <span class="prelude-ty">Option</span>&lt;Vec&lt;String&gt;&gt;,
+    <span class="comment">// TODO: additionalUserSpecifiedProperty
+</span>}
+
+<span class="kw">impl </span>Default <span class="kw">for </span>Configuration {
+    <span class="kw">fn </span>default() -&gt; <span class="self">Self </span>{
+        Configuration {
+            time_offset: <span class="prelude-val">Some</span>(<span class="number">0.0</span>),
+            original_uris: <span class="prelude-val">None</span>,
+        }
+    }
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Serialize, Deserialize, Clone, Default, PartialEq, Debug)]
+</span><span class="kw">pub struct </span>CommonFields {
+    <span class="kw">pub </span>group_id: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    <span class="kw">pub </span>protocol_type: <span class="prelude-ty">Option</span>&lt;Vec&lt;String&gt;&gt;,
+
+    <span class="kw">pub </span>reference_time: <span class="prelude-ty">Option</span>&lt;f64&gt;,
+    <span class="kw">pub </span>time_format: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    <span class="comment">// TODO: additionalUserSpecifiedProperty
+</span>}
+
+<span class="attr">#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
+#[serde(rename_all = <span class="string">"snake_case"</span>)]
+</span><span class="kw">pub enum </span>TokenType {
+    Retry,
+    Resumption,
+}
+
+<span class="attr">#[serde_with::skip_serializing_none]
+#[derive(Clone, Serialize, Deserialize, PartialEq, Eq, Debug)]
+</span><span class="kw">pub struct </span>Token {
+    <span class="attr">#[serde(rename(serialize = <span class="string">"type"</span>))]
+    </span><span class="kw">pub </span>ty: <span class="prelude-ty">Option</span>&lt;TokenType&gt;,
+
+    <span class="kw">pub </span>details: <span class="prelude-ty">Option</span>&lt;String&gt;,
+
+    <span class="kw">pub </span>raw: <span class="prelude-ty">Option</span>&lt;events::RawInfo&gt;,
+}
+
+<span class="kw">pub struct </span>HexSlice&lt;<span class="lifetime">'a</span>&gt;(<span class="kw-2">&amp;</span><span class="lifetime">'a </span>[u8]);
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; HexSlice&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="kw">pub fn </span>new&lt;T&gt;(data: <span class="kw-2">&amp;</span><span class="lifetime">'a </span>T) -&gt; HexSlice&lt;<span class="lifetime">'a</span>&gt;
+    <span class="kw">where
+        </span>T: <span class="question-mark">?</span>Sized + AsRef&lt;[u8]&gt; + <span class="lifetime">'a</span>,
+    {
+        HexSlice(data.as_ref())
+    }
+
+    <span class="kw">pub fn </span>maybe_string&lt;T&gt;(data: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span><span class="lifetime">'a </span>T&gt;) -&gt; <span class="prelude-ty">Option</span>&lt;String&gt;
+    <span class="kw">where
+        </span>T: <span class="question-mark">?</span>Sized + AsRef&lt;[u8]&gt; + <span class="lifetime">'a</span>,
+    {
+        data.map(|d| <span class="macro">format!</span>(<span class="string">"{}"</span>, HexSlice::new(d)))
+    }
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; std::fmt::Display <span class="kw">for </span>HexSlice&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+        <span class="kw">for </span>byte <span class="kw">in </span><span class="self">self</span>.<span class="number">0 </span>{
+            <span class="macro">write!</span>(f, <span class="string">"{byte:02x}"</span>)<span class="question-mark">?</span>;
+        }
+        <span class="prelude-val">Ok</span>(())
+    }
+}
+
+<span class="attr">#[doc(hidden)]
+</span><span class="kw">pub mod </span>testing {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+    <span class="kw">use </span><span class="kw">crate</span>::events::quic::PacketType;
+
+    <span class="kw">pub fn </span>make_pkt_hdr(packet_type: PacketType) -&gt; PacketHeader {
+        <span class="kw">let </span>scid = [<span class="number">0x7e</span>, <span class="number">0x37</span>, <span class="number">0xe4</span>, <span class="number">0xdc</span>, <span class="number">0xc6</span>, <span class="number">0x68</span>, <span class="number">0x2d</span>, <span class="number">0xa8</span>];
+        <span class="kw">let </span>dcid = [<span class="number">0x36</span>, <span class="number">0xce</span>, <span class="number">0x10</span>, <span class="number">0x4e</span>, <span class="number">0xee</span>, <span class="number">0x50</span>, <span class="number">0x10</span>, <span class="number">0x1c</span>];
+
+        <span class="comment">// Some(1251),
+        // Some(1224),
+
+        </span>PacketHeader::new(
+            packet_type,
+            <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            <span class="prelude-val">None</span>,
+            <span class="prelude-val">None</span>,
+            <span class="prelude-val">None</span>,
+            <span class="prelude-val">Some</span>(<span class="number">0x0000_0001</span>),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>scid),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>dcid),
+        )
+    }
+
+    <span class="kw">pub fn </span>make_trace() -&gt; Trace {
+        Trace::new(
+            VantagePoint {
+                name: <span class="prelude-val">None</span>,
+                ty: VantagePointType::Server,
+                flow: <span class="prelude-val">None</span>,
+            },
+            <span class="prelude-val">Some</span>(<span class="string">"Quiche qlog trace"</span>.to_string()),
+            <span class="prelude-val">Some</span>(<span class="string">"Quiche qlog trace description"</span>.to_string()),
+            <span class="prelude-val">Some</span>(Configuration {
+                time_offset: <span class="prelude-val">Some</span>(<span class="number">0.0</span>),
+                original_uris: <span class="prelude-val">None</span>,
+            }),
+            <span class="prelude-val">None</span>,
+        )
+    }
+
+    <span class="kw">pub fn </span>make_trace_seq() -&gt; TraceSeq {
+        TraceSeq::new(
+            VantagePoint {
+                name: <span class="prelude-val">None</span>,
+                ty: VantagePointType::Server,
+                flow: <span class="prelude-val">None</span>,
+            },
+            <span class="prelude-val">Some</span>(<span class="string">"Quiche qlog trace"</span>.to_string()),
+            <span class="prelude-val">Some</span>(<span class="string">"Quiche qlog trace description"</span>.to_string()),
+            <span class="prelude-val">Some</span>(Configuration {
+                time_offset: <span class="prelude-val">Some</span>(<span class="number">0.0</span>),
+                original_uris: <span class="prelude-val">None</span>,
+            }),
+            <span class="prelude-val">None</span>,
+        )
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+    <span class="kw">use </span><span class="kw">crate</span>::events::quic::PacketSent;
+    <span class="kw">use </span><span class="kw">crate</span>::events::quic::PacketType;
+    <span class="kw">use </span><span class="kw">crate</span>::events::quic::QuicFrame;
+    <span class="kw">use </span><span class="kw">crate</span>::events::EventData;
+    <span class="kw">use </span><span class="kw">crate</span>::events::RawInfo;
+    <span class="kw">use </span>testing::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>packet_sent_event_no_frames() {
+        <span class="kw">let </span>log_string = <span class="string">r#"{
+  "time": 0.0,
+  "name": "transport:packet_sent",
+  "data": {
+    "header": {
+      "packet_type": "initial",
+      "packet_number": 0,
+      "version": "1",
+      "scil": 8,
+      "dcil": 8,
+      "scid": "7e37e4dcc6682da8",
+      "dcid": "36ce104eee50101c"
+    },
+    "raw": {
+      "length": 1251,
+      "payload_length": 1224
+    }
+  }
+}"#</span>;
+
+        <span class="kw">let </span>pkt_hdr = make_pkt_hdr(PacketType::Initial);
+        <span class="kw">let </span>ev_data = EventData::PacketSent(PacketSent {
+            header: pkt_hdr,
+            frames: <span class="prelude-val">None</span>,
+            is_coalesced: <span class="prelude-val">None</span>,
+            retry_token: <span class="prelude-val">None</span>,
+            stateless_reset_token: <span class="prelude-val">None</span>,
+            supported_versions: <span class="prelude-val">None</span>,
+            raw: <span class="prelude-val">Some</span>(RawInfo {
+                length: <span class="prelude-val">Some</span>(<span class="number">1251</span>),
+                payload_length: <span class="prelude-val">Some</span>(<span class="number">1224</span>),
+                data: <span class="prelude-val">None</span>,
+            }),
+            datagram_id: <span class="prelude-val">None</span>,
+            send_at_time: <span class="prelude-val">None</span>,
+            trigger: <span class="prelude-val">None</span>,
+        });
+
+        <span class="kw">let </span>ev = Event::with_time(<span class="number">0.0</span>, ev_data);
+
+        <span class="macro">assert_eq!</span>(serde_json::to_string_pretty(<span class="kw-2">&amp;</span>ev).unwrap(), log_string);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>packet_sent_event_some_frames() {
+        <span class="kw">let </span>log_string = <span class="string">r#"{
+  "time": 0.0,
+  "name": "transport:packet_sent",
+  "data": {
+    "header": {
+      "packet_type": "initial",
+      "packet_number": 0,
+      "version": "1",
+      "scil": 8,
+      "dcil": 8,
+      "scid": "7e37e4dcc6682da8",
+      "dcid": "36ce104eee50101c"
+    },
+    "raw": {
+      "length": 1251,
+      "payload_length": 1224
+    },
+    "frames": [
+      {
+        "frame_type": "padding",
+        "payload_length": 1234
+      },
+      {
+        "frame_type": "ping"
+      },
+      {
+        "frame_type": "stream",
+        "stream_id": 0,
+        "offset": 0,
+        "length": 100,
+        "fin": true
+      }
+    ]
+  }
+}"#</span>;
+
+        <span class="kw">let </span>pkt_hdr = make_pkt_hdr(PacketType::Initial);
+
+        <span class="kw">let </span>frames = <span class="macro">vec!</span>[
+            QuicFrame::Padding {
+                payload_length: <span class="number">1234</span>,
+                length: <span class="prelude-val">None</span>,
+            },
+            QuicFrame::Ping {
+                payload_length: <span class="prelude-val">None</span>,
+                length: <span class="prelude-val">None</span>,
+            },
+            QuicFrame::Stream {
+                stream_id: <span class="number">0</span>,
+                offset: <span class="number">0</span>,
+                length: <span class="number">100</span>,
+                fin: <span class="prelude-val">Some</span>(<span class="bool-val">true</span>),
+                raw: <span class="prelude-val">None</span>,
+            },
+        ];
+
+        <span class="kw">let </span>ev_data = EventData::PacketSent(PacketSent {
+            header: pkt_hdr,
+            frames: <span class="prelude-val">Some</span>(frames.into()),
+            is_coalesced: <span class="prelude-val">None</span>,
+            retry_token: <span class="prelude-val">None</span>,
+            stateless_reset_token: <span class="prelude-val">None</span>,
+            supported_versions: <span class="prelude-val">None</span>,
+            raw: <span class="prelude-val">Some</span>(RawInfo {
+                length: <span class="prelude-val">Some</span>(<span class="number">1251</span>),
+                payload_length: <span class="prelude-val">Some</span>(<span class="number">1224</span>),
+                data: <span class="prelude-val">None</span>,
+            }),
+            datagram_id: <span class="prelude-val">None</span>,
+            send_at_time: <span class="prelude-val">None</span>,
+            trigger: <span class="prelude-val">None</span>,
+        });
+
+        <span class="kw">let </span>ev = Event::with_time(<span class="number">0.0</span>, ev_data);
+        <span class="macro">assert_eq!</span>(serde_json::to_string_pretty(<span class="kw-2">&amp;</span>ev).unwrap(), log_string);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>trace_no_events() {
+        <span class="kw">let </span>log_string = <span class="string">r#"{
+  "vantage_point": {
+    "type": "server"
+  },
+  "title": "Quiche qlog trace",
+  "description": "Quiche qlog trace description",
+  "configuration": {
+    "time_offset": 0.0
+  },
+  "events": []
+}"#</span>;
+
+        <span class="kw">let </span>trace = make_trace();
+
+        <span class="kw">let </span>serialized = serde_json::to_string_pretty(<span class="kw-2">&amp;</span>trace).unwrap();
+        <span class="macro">assert_eq!</span>(serialized, log_string);
+
+        <span class="kw">let </span>deserialized: Trace = serde_json::from_str(<span class="kw-2">&amp;</span>serialized).unwrap();
+        <span class="macro">assert_eq!</span>(deserialized, trace);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>trace_seq_no_events() {
+        <span class="kw">let </span>log_string = <span class="string">r#"{
+  "vantage_point": {
+    "type": "server"
+  },
+  "title": "Quiche qlog trace",
+  "description": "Quiche qlog trace description",
+  "configuration": {
+    "time_offset": 0.0
+  }
+}"#</span>;
+
+        <span class="kw">let </span>trace = make_trace_seq();
+
+        <span class="kw">let </span>serialized = serde_json::to_string_pretty(<span class="kw-2">&amp;</span>trace).unwrap();
+        <span class="macro">assert_eq!</span>(serialized, log_string);
+
+        <span class="kw">let </span>deserialized: TraceSeq = serde_json::from_str(<span class="kw-2">&amp;</span>serialized).unwrap();
+        <span class="macro">assert_eq!</span>(deserialized, trace);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>trace_single_transport_event() {
+        <span class="kw">let </span>log_string = <span class="string">r#"{
+  "vantage_point": {
+    "type": "server"
+  },
+  "title": "Quiche qlog trace",
+  "description": "Quiche qlog trace description",
+  "configuration": {
+    "time_offset": 0.0
+  },
+  "events": [
+    {
+      "time": 0.0,
+      "name": "transport:packet_sent",
+      "data": {
+        "header": {
+          "packet_type": "initial",
+          "packet_number": 0,
+          "version": "1",
+          "scil": 8,
+          "dcil": 8,
+          "scid": "7e37e4dcc6682da8",
+          "dcid": "36ce104eee50101c"
+        },
+        "raw": {
+          "length": 1251,
+          "payload_length": 1224
+        },
+        "frames": [
+          {
+            "frame_type": "stream",
+            "stream_id": 0,
+            "offset": 0,
+            "length": 100,
+            "fin": true
+          }
+        ]
+      }
+    }
+  ]
+}"#</span>;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>trace = make_trace();
+
+        <span class="kw">let </span>pkt_hdr = make_pkt_hdr(PacketType::Initial);
+
+        <span class="kw">let </span>frames = <span class="macro">vec!</span>[QuicFrame::Stream {
+            stream_id: <span class="number">0</span>,
+            offset: <span class="number">0</span>,
+            length: <span class="number">100</span>,
+            fin: <span class="prelude-val">Some</span>(<span class="bool-val">true</span>),
+            raw: <span class="prelude-val">None</span>,
+        }];
+        <span class="kw">let </span>event_data = EventData::PacketSent(PacketSent {
+            header: pkt_hdr,
+            frames: <span class="prelude-val">Some</span>(frames.into()),
+            is_coalesced: <span class="prelude-val">None</span>,
+            retry_token: <span class="prelude-val">None</span>,
+            stateless_reset_token: <span class="prelude-val">None</span>,
+            supported_versions: <span class="prelude-val">None</span>,
+            raw: <span class="prelude-val">Some</span>(RawInfo {
+                length: <span class="prelude-val">Some</span>(<span class="number">1251</span>),
+                payload_length: <span class="prelude-val">Some</span>(<span class="number">1224</span>),
+                data: <span class="prelude-val">None</span>,
+            }),
+            datagram_id: <span class="prelude-val">None</span>,
+            send_at_time: <span class="prelude-val">None</span>,
+            trigger: <span class="prelude-val">None</span>,
+        });
+
+        <span class="kw">let </span>ev = Event::with_time(<span class="number">0.0</span>, event_data);
+
+        trace.push_event(ev);
+
+        <span class="kw">let </span>serialized = serde_json::to_string_pretty(<span class="kw-2">&amp;</span>trace).unwrap();
+        <span class="macro">assert_eq!</span>(serialized, log_string);
+
+        <span class="kw">let </span>deserialized: Trace = serde_json::from_str(<span class="kw-2">&amp;</span>serialized).unwrap();
+        <span class="macro">assert_eq!</span>(deserialized, trace);
+    }
+}
+
+<span class="kw">pub mod </span>events;
+<span class="kw">pub mod </span>reader;
+<span class="kw">pub mod </span>streamer;
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/qlog/reader.rs.html b/src/qlog/reader.rs.html
new file mode 100644
index 0000000..feae67e
--- /dev/null
+++ b/src/qlog/reader.rs.html
@@ -0,0 +1,223 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `qlog/src/reader.rs`."><title>reader.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2023, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span><span class="kw">crate</span>::QlogSeq;
+
+<span class="doccomment">/// Represents the format of the read event.
+</span><span class="attr">#[allow(clippy::large_enum_variant)]
+</span><span class="kw">pub enum </span>Event {
+    <span class="doccomment">/// A native qlog event type.
+    </span>Qlog(<span class="kw">crate</span>::events::Event),
+
+    <span class="comment">// An extended JSON event type.
+    </span>Json(<span class="kw">crate</span>::events::JsonEvent),
+}
+
+<span class="doccomment">/// A helper object specialized for reading JSON-SEQ qlog from a [`BufRead`]
+/// trait.
+///
+/// [`BufRead`]: https://doc.rust-lang.org/std/io/trait.BufRead.html
+</span><span class="kw">pub struct </span>QlogSeqReader {
+    <span class="kw">pub </span>qlog: QlogSeq,
+    reader: Box&lt;<span class="kw">dyn </span>std::io::BufRead + Send + Sync&gt;,
+}
+
+<span class="kw">impl </span>QlogSeqReader {
+    <span class="kw">pub fn </span>new(
+        <span class="kw-2">mut </span>reader: Box&lt;<span class="kw">dyn </span>std::io::BufRead + Send + Sync&gt;,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="self">Self</span>, Box&lt;<span class="kw">dyn </span>std::error::Error&gt;&gt; {
+        <span class="comment">// "null record" skip it
+        </span><span class="self">Self</span>::read_record(reader.as_mut());
+
+        <span class="kw">let </span>header = <span class="self">Self</span>::read_record(reader.as_mut()).ok_or_else(|| {
+            std::io::Error::new(
+                std::io::ErrorKind::Other,
+                <span class="string">"error reading file header bytes"</span>,
+            )
+        })<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>res: <span class="prelude-ty">Result</span>&lt;QlogSeq, serde_json::Error&gt; =
+            serde_json::from_slice(<span class="kw-2">&amp;</span>header);
+        <span class="kw">match </span>res {
+            <span class="prelude-val">Ok</span>(qlog) =&gt; <span class="prelude-val">Ok</span>(<span class="self">Self </span>{ qlog, reader }),
+
+            <span class="prelude-val">Err</span>(e) =&gt; <span class="prelude-val">Err</span>(e.into()),
+        }
+    }
+
+    <span class="kw">fn </span>read_record(
+        reader: <span class="kw-2">&amp;mut </span>(<span class="kw">dyn </span>std::io::BufRead + Send + Sync),
+    ) -&gt; <span class="prelude-ty">Option</span>&lt;Vec&lt;u8&gt;&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = Vec::&lt;u8&gt;::new();
+        <span class="kw">let </span>size = reader.read_until(<span class="string">b''</span>, <span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="kw">if </span>size &lt;= <span class="number">1 </span>{
+            <span class="kw">return </span><span class="prelude-val">None</span>;
+        }
+
+        buf.truncate(buf.len() - <span class="number">1</span>);
+
+        <span class="prelude-val">Some</span>(buf)
+    }
+}
+
+<span class="kw">impl </span>Iterator <span class="kw">for </span>QlogSeqReader {
+    <span class="kw">type </span>Item = Event;
+
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>next(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="self">Self</span>::Item&gt; {
+        <span class="comment">// Attempt to deserialize events but skip them if that fails for any
+        // reason, ensuring we always read all bytes in the reader.
+        </span><span class="kw">while let </span><span class="prelude-val">Some</span>(bytes) = <span class="self">Self</span>::read_record(<span class="kw-2">&amp;mut </span><span class="self">self</span>.reader) {
+            <span class="kw">let </span>r: serde_json::Result&lt;<span class="kw">crate</span>::events::Event&gt; =
+                serde_json::from_slice(<span class="kw-2">&amp;</span>bytes);
+
+            <span class="kw">if let </span><span class="prelude-val">Ok</span>(event) = r {
+                <span class="kw">return </span><span class="prelude-val">Some</span>(Event::Qlog(event));
+            }
+
+            <span class="kw">let </span>r: serde_json::Result&lt;<span class="kw">crate</span>::events::JsonEvent&gt; =
+                serde_json::from_slice(<span class="kw-2">&amp;</span>bytes);
+
+            <span class="kw">if let </span><span class="prelude-val">Ok</span>(event) = r {
+                <span class="kw">return </span><span class="prelude-val">Some</span>(Event::Json(event));
+            }
+        }
+
+        <span class="prelude-val">None
+    </span>}
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/qlog/streamer.rs.html b/src/qlog/streamer.rs.html
new file mode 100644
index 0000000..2be694c
--- /dev/null
+++ b/src/qlog/streamer.rs.html
@@ -0,0 +1,1089 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `qlog/src/streamer.rs`."><title>streamer.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="qlog" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../qlog/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2021, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span><span class="kw">crate</span>::events::EventData;
+<span class="kw">use </span><span class="kw">crate</span>::events::EventImportance;
+<span class="kw">use </span><span class="kw">crate</span>::events::EventType;
+<span class="kw">use </span><span class="kw">crate</span>::events::Eventable;
+<span class="kw">use </span><span class="kw">crate</span>::events::ExData;
+
+<span class="doccomment">/// A helper object specialized for streaming JSON-serialized qlog to a
+/// [`Write`] trait.
+///
+/// The object is responsible for the `Qlog` object that contains the
+/// provided `Trace`.
+///
+/// Serialization is progressively driven by method calls; once log streaming
+/// is started, `event::Events` can be written using `add_event()`.
+///
+/// [`Write`]: https://doc.rust-lang.org/std/io/trait.Write.html
+</span><span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+<span class="attr">#[derive(PartialEq, Eq, Debug)]
+</span><span class="kw">pub enum </span>StreamerState {
+    Initial,
+    Ready,
+    Finished,
+}
+
+<span class="kw">pub struct </span>QlogStreamer {
+    start_time: std::time::Instant,
+    writer: Box&lt;<span class="kw">dyn </span>std::io::Write + Send + Sync&gt;,
+    qlog: QlogSeq,
+    state: StreamerState,
+    log_level: EventImportance,
+}
+
+<span class="kw">impl </span>QlogStreamer {
+    <span class="doccomment">/// Creates a [QlogStreamer] object.
+    ///
+    /// It owns a [QlogSeq] object that contains the provided [TraceSeq]
+    /// containing [Event]s.
+    ///
+    /// All serialization will be written to the provided [`Write`] using the
+    /// JSON-SEQ format.
+    ///
+    /// [`Write`]: https://doc.rust-lang.org/std/io/trait.Write.html
+    </span><span class="attr">#[allow(clippy::too_many_arguments)]
+    </span><span class="kw">pub fn </span>new(
+        qlog_version: String, title: <span class="prelude-ty">Option</span>&lt;String&gt;, description: <span class="prelude-ty">Option</span>&lt;String&gt;,
+        summary: <span class="prelude-ty">Option</span>&lt;String&gt;, start_time: std::time::Instant, trace: TraceSeq,
+        log_level: EventImportance,
+        writer: Box&lt;<span class="kw">dyn </span>std::io::Write + Send + Sync&gt;,
+    ) -&gt; <span class="self">Self </span>{
+        <span class="kw">let </span>qlog = QlogSeq {
+            qlog_version,
+            qlog_format: <span class="string">"JSON-SEQ"</span>.to_string(),
+            title,
+            description,
+            summary,
+            trace,
+        };
+
+        QlogStreamer {
+            start_time,
+            writer,
+            qlog,
+            state: StreamerState::Initial,
+            log_level,
+        }
+    }
+
+    <span class="doccomment">/// Starts qlog streaming serialization.
+    ///
+    /// This writes out the JSON-SEQ-serialized form of all initial qlog
+    /// information. [Event]s are separately appended using [add_event()],
+    /// [add_event_with_instant()], [add_event_now()],
+    /// [add_event_data_with_instant()], or [add_event_data_now()].
+    ///
+    /// [add_event()]: #method.add_event
+    /// [add_event_with_instant()]: #method.add_event_with_instant
+    /// [add_event_now()]: #method.add_event_now
+    /// [add_event_data_with_instant()]: #method.add_event_data_with_instant
+    /// [add_event_data_now()]: #method.add_event_data_now
+    </span><span class="kw">pub fn </span>start_log(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if </span><span class="self">self</span>.state != StreamerState::Initial {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="self">self</span>.writer.as_mut().write_all(<span class="string">b""</span>)<span class="question-mark">?</span>;
+        serde_json::to_writer(<span class="self">self</span>.writer.as_mut(), <span class="kw-2">&amp;</span><span class="self">self</span>.qlog)
+            .map_err(|<span class="kw">_</span>| Error::Done)<span class="question-mark">?</span>;
+        <span class="self">self</span>.writer.as_mut().write_all(<span class="string">b"\n"</span>)<span class="question-mark">?</span>;
+
+        <span class="self">self</span>.state = StreamerState::Ready;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Finishes qlog streaming serialization.
+    ///
+    /// After this is called, no more serialization will occur.
+    </span><span class="kw">pub fn </span>finish_log(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if </span><span class="self">self</span>.state == StreamerState::Initial ||
+            <span class="self">self</span>.state == StreamerState::Finished
+        {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState);
+        }
+
+        <span class="self">self</span>.state = StreamerState::Finished;
+
+        <span class="self">self</span>.writer.as_mut().flush()<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Writes a serializable to a JSON-SEQ record using
+    /// [std::time::Instant::now()].
+    </span><span class="kw">pub fn </span>add_event_now&lt;E: Serialize + Eventable&gt;(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, event: E,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>now = std::time::Instant::now();
+
+        <span class="self">self</span>.add_event_with_instant(event, now)
+    }
+
+    <span class="doccomment">/// Writes a serializable to a JSON-SEQ record using the provided
+    /// [std::time::Instant].
+    </span><span class="kw">pub fn </span>add_event_with_instant&lt;E: Serialize + Eventable&gt;(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, <span class="kw-2">mut </span>event: E, now: std::time::Instant,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if </span><span class="self">self</span>.state != StreamerState::Ready {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState);
+        }
+
+        <span class="kw">if </span>!event.importance().is_contained_in(<span class="kw-2">&amp;</span><span class="self">self</span>.log_level) {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="kw">let </span>dur = <span class="kw">if </span><span class="macro">cfg!</span>(test) {
+            std::time::Duration::from_secs(<span class="number">0</span>)
+        } <span class="kw">else </span>{
+            now.duration_since(<span class="self">self</span>.start_time)
+        };
+
+        <span class="kw">let </span>rel_time = dur.as_secs_f32() * <span class="number">1000.0</span>;
+        event.set_time(rel_time);
+
+        <span class="self">self</span>.add_event(event)
+    }
+
+    <span class="doccomment">/// Writes an [Event] based on the provided [EventData] to a JSON-SEQ record
+    /// at time [std::time::Instant::now()].
+    </span><span class="kw">pub fn </span>add_event_data_now(<span class="kw-2">&amp;mut </span><span class="self">self</span>, event_data: EventData) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="self">self</span>.add_event_data_ex_now(event_data, Default::default())
+    }
+
+    <span class="doccomment">/// Writes an [Event] based on the provided [EventData] and [ExData] to a
+    /// JSON-SEQ record at time [std::time::Instant::now()].
+    </span><span class="kw">pub fn </span>add_event_data_ex_now(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, event_data: EventData, ex_data: ExData,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>now = std::time::Instant::now();
+
+        <span class="self">self</span>.add_event_data_ex_with_instant(event_data, ex_data, now)
+    }
+
+    <span class="doccomment">/// Writes an [Event] based on the provided [EventData] and
+    /// [std::time::Instant] to a JSON-SEQ record.
+    </span><span class="kw">pub fn </span>add_event_data_with_instant(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, event_data: EventData, now: std::time::Instant,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="self">self</span>.add_event_data_ex_with_instant(event_data, Default::default(), now)
+    }
+
+    <span class="doccomment">/// Writes an [Event] based on the provided [EventData], [ExData], and
+    /// [std::time::Instant] to a JSON-SEQ record.
+    </span><span class="kw">pub fn </span>add_event_data_ex_with_instant(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, event_data: EventData, ex_data: ExData,
+        now: std::time::Instant,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if </span><span class="self">self</span>.state != StreamerState::Ready {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState);
+        }
+
+        <span class="kw">let </span>ty = EventType::from(<span class="kw-2">&amp;</span>event_data);
+        <span class="kw">if </span>!EventImportance::from(ty).is_contained_in(<span class="kw-2">&amp;</span><span class="self">self</span>.log_level) {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="kw">let </span>dur = <span class="kw">if </span><span class="macro">cfg!</span>(test) {
+            std::time::Duration::from_secs(<span class="number">0</span>)
+        } <span class="kw">else </span>{
+            now.duration_since(<span class="self">self</span>.start_time)
+        };
+
+        <span class="kw">let </span>rel_time = dur.as_secs_f32() * <span class="number">1000.0</span>;
+        <span class="kw">let </span>event = Event::with_time_ex(rel_time, event_data, ex_data);
+
+        <span class="self">self</span>.add_event(event)
+    }
+
+    <span class="doccomment">/// Writes a JSON-SEQ-serialized [Event] using the provided [Event].
+    </span><span class="kw">pub fn </span>add_event&lt;E: Serialize + Eventable&gt;(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, event: E,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if </span><span class="self">self</span>.state != StreamerState::Ready {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState);
+        }
+
+        <span class="kw">if </span>!event.importance().is_contained_in(<span class="kw-2">&amp;</span><span class="self">self</span>.log_level) {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="self">self</span>.writer.as_mut().write_all(<span class="string">b""</span>)<span class="question-mark">?</span>;
+        serde_json::to_writer(<span class="self">self</span>.writer.as_mut(), <span class="kw-2">&amp;</span>event)
+            .map_err(|<span class="kw">_</span>| Error::Done)<span class="question-mark">?</span>;
+        <span class="self">self</span>.writer.as_mut().write_all(<span class="string">b"\n"</span>)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Returns the writer.
+    </span><span class="attr">#[allow(clippy::borrowed_box)]
+    </span><span class="kw">pub fn </span>writer(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>Box&lt;<span class="kw">dyn </span>std::io::Write + Send + Sync&gt; {
+        <span class="kw-2">&amp;</span><span class="self">self</span>.writer
+    }
+
+    <span class="kw">pub fn </span>start_time(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; std::time::Instant {
+        <span class="self">self</span>.start_time
+    }
+}
+
+<span class="kw">impl </span>Drop <span class="kw">for </span>QlogStreamer {
+    <span class="kw">fn </span>drop(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="kw">let _ </span>= <span class="self">self</span>.finish_log();
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use </span>std::collections::BTreeMap;
+
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+    <span class="kw">use </span><span class="kw">crate</span>::events::quic;
+    <span class="kw">use </span><span class="kw">crate</span>::events::quic::QuicFrame;
+    <span class="kw">use </span><span class="kw">crate</span>::events::RawInfo;
+    <span class="kw">use </span>smallvec::smallvec;
+    <span class="kw">use </span>testing::<span class="kw-2">*</span>;
+
+    <span class="kw">use </span>serde_json::json;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>serialization_states() {
+        <span class="kw">let </span>v: Vec&lt;u8&gt; = Vec::new();
+        <span class="kw">let </span>buff = std::io::Cursor::new(v);
+        <span class="kw">let </span>writer = Box::new(buff);
+
+        <span class="kw">let </span>trace = make_trace_seq();
+        <span class="kw">let </span>pkt_hdr = make_pkt_hdr(quic::PacketType::Handshake);
+        <span class="kw">let </span>raw = <span class="prelude-val">Some</span>(RawInfo {
+            length: <span class="prelude-val">Some</span>(<span class="number">1251</span>),
+            payload_length: <span class="prelude-val">Some</span>(<span class="number">1224</span>),
+            data: <span class="prelude-val">None</span>,
+        });
+
+        <span class="kw">let </span>frame1 = QuicFrame::Stream {
+            stream_id: <span class="number">40</span>,
+            offset: <span class="number">40</span>,
+            length: <span class="number">400</span>,
+            fin: <span class="prelude-val">Some</span>(<span class="bool-val">true</span>),
+            raw: <span class="prelude-val">None</span>,
+        };
+
+        <span class="kw">let </span>event_data1 = EventData::PacketSent(quic::PacketSent {
+            header: pkt_hdr.clone(),
+            frames: <span class="prelude-val">Some</span>(<span class="macro">smallvec!</span>[frame1]),
+            is_coalesced: <span class="prelude-val">None</span>,
+            retry_token: <span class="prelude-val">None</span>,
+            stateless_reset_token: <span class="prelude-val">None</span>,
+            supported_versions: <span class="prelude-val">None</span>,
+            raw: raw.clone(),
+            datagram_id: <span class="prelude-val">None</span>,
+            send_at_time: <span class="prelude-val">None</span>,
+            trigger: <span class="prelude-val">None</span>,
+        });
+
+        <span class="kw">let </span>ev1 = Event::with_time(<span class="number">0.0</span>, event_data1);
+
+        <span class="kw">let </span>frame2 = QuicFrame::Stream {
+            stream_id: <span class="number">0</span>,
+            offset: <span class="number">0</span>,
+            length: <span class="number">100</span>,
+            fin: <span class="prelude-val">Some</span>(<span class="bool-val">true</span>),
+            raw: <span class="prelude-val">None</span>,
+        };
+
+        <span class="kw">let </span>frame3 = QuicFrame::Stream {
+            stream_id: <span class="number">0</span>,
+            offset: <span class="number">0</span>,
+            length: <span class="number">100</span>,
+            fin: <span class="prelude-val">Some</span>(<span class="bool-val">true</span>),
+            raw: <span class="prelude-val">None</span>,
+        };
+
+        <span class="kw">let </span>event_data2 = EventData::PacketSent(quic::PacketSent {
+            header: pkt_hdr.clone(),
+            frames: <span class="prelude-val">Some</span>(<span class="macro">smallvec!</span>[frame2]),
+            is_coalesced: <span class="prelude-val">None</span>,
+            retry_token: <span class="prelude-val">None</span>,
+            stateless_reset_token: <span class="prelude-val">None</span>,
+            supported_versions: <span class="prelude-val">None</span>,
+            raw: raw.clone(),
+            datagram_id: <span class="prelude-val">None</span>,
+            send_at_time: <span class="prelude-val">None</span>,
+            trigger: <span class="prelude-val">None</span>,
+        });
+
+        <span class="kw">let </span>ev2 = Event::with_time(<span class="number">0.0</span>, event_data2);
+
+        <span class="kw">let </span>event_data3 = EventData::PacketSent(quic::PacketSent {
+            header: pkt_hdr,
+            frames: <span class="prelude-val">Some</span>(<span class="macro">smallvec!</span>[frame3]),
+            is_coalesced: <span class="prelude-val">None</span>,
+            retry_token: <span class="prelude-val">None</span>,
+            stateless_reset_token: <span class="prelude-val">Some</span>(<span class="string">"reset_token"</span>.to_string()),
+            supported_versions: <span class="prelude-val">None</span>,
+            raw,
+            datagram_id: <span class="prelude-val">None</span>,
+            send_at_time: <span class="prelude-val">None</span>,
+            trigger: <span class="prelude-val">None</span>,
+        });
+
+        <span class="kw">let </span>ev3 = Event::with_time(<span class="number">0.0</span>, event_data3);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>s = streamer::QlogStreamer::new(
+            <span class="string">"version"</span>.to_string(),
+            <span class="prelude-val">Some</span>(<span class="string">"title"</span>.to_string()),
+            <span class="prelude-val">Some</span>(<span class="string">"description"</span>.to_string()),
+            <span class="prelude-val">None</span>,
+            std::time::Instant::now(),
+            trace,
+            EventImportance::Base,
+            writer,
+        );
+
+        <span class="comment">// Before the log is started all other operations should fail.
+        </span><span class="macro">assert!</span>(<span class="macro">matches!</span>(s.add_event(ev2.clone()), <span class="prelude-val">Err</span>(Error::InvalidState)));
+        <span class="macro">assert!</span>(<span class="macro">matches!</span>(s.finish_log(), <span class="prelude-val">Err</span>(Error::InvalidState)));
+
+        <span class="comment">// Start log and add a simple event.
+        </span><span class="macro">assert!</span>(<span class="macro">matches!</span>(s.start_log(), <span class="prelude-val">Ok</span>(())));
+        <span class="macro">assert!</span>(<span class="macro">matches!</span>(s.add_event(ev1), <span class="prelude-val">Ok</span>(())));
+
+        <span class="comment">// Add some more events.
+        </span><span class="macro">assert!</span>(<span class="macro">matches!</span>(s.add_event(ev2), <span class="prelude-val">Ok</span>(())));
+        <span class="macro">assert!</span>(<span class="macro">matches!</span>(s.add_event(ev3.clone()), <span class="prelude-val">Ok</span>(())));
+
+        <span class="comment">// Adding an event with an external time should work too.
+        // For tests, it will resolve to 0 but we care about proving the API
+        // here, not timing specifics.
+        </span><span class="kw">let </span>now = std::time::Instant::now();
+
+        <span class="macro">assert!</span>(<span class="macro">matches!</span>(s.add_event_with_instant(ev3, now), <span class="prelude-val">Ok</span>(())));
+
+        <span class="macro">assert!</span>(<span class="macro">matches!</span>(s.finish_log(), <span class="prelude-val">Ok</span>(())));
+
+        <span class="kw">let </span>r = s.writer();
+        <span class="attr">#[allow(clippy::borrowed_box)]
+        </span><span class="kw">let </span>w: <span class="kw-2">&amp;</span>Box&lt;std::io::Cursor&lt;Vec&lt;u8&gt;&gt;&gt; = <span class="kw">unsafe </span>{ std::mem::transmute(r) };
+
+        <span class="kw">let </span>log_string = <span class="string">r#"{"qlog_version":"version","qlog_format":"JSON-SEQ","title":"title","description":"description","trace":{"vantage_point":{"type":"server"},"title":"Quiche qlog trace","description":"Quiche qlog trace description","configuration":{"time_offset":0.0}}}
+{"time":0.0,"name":"transport:packet_sent","data":{"header":{"packet_type":"handshake","packet_number":0,"version":"1","scil":8,"dcil":8,"scid":"7e37e4dcc6682da8","dcid":"36ce104eee50101c"},"raw":{"length":1251,"payload_length":1224},"frames":[{"frame_type":"stream","stream_id":40,"offset":40,"length":400,"fin":true}]}}
+{"time":0.0,"name":"transport:packet_sent","data":{"header":{"packet_type":"handshake","packet_number":0,"version":"1","scil":8,"dcil":8,"scid":"7e37e4dcc6682da8","dcid":"36ce104eee50101c"},"raw":{"length":1251,"payload_length":1224},"frames":[{"frame_type":"stream","stream_id":0,"offset":0,"length":100,"fin":true}]}}
+{"time":0.0,"name":"transport:packet_sent","data":{"header":{"packet_type":"handshake","packet_number":0,"version":"1","scil":8,"dcil":8,"scid":"7e37e4dcc6682da8","dcid":"36ce104eee50101c"},"stateless_reset_token":"reset_token","raw":{"length":1251,"payload_length":1224},"frames":[{"frame_type":"stream","stream_id":0,"offset":0,"length":100,"fin":true}]}}
+{"time":0.0,"name":"transport:packet_sent","data":{"header":{"packet_type":"handshake","packet_number":0,"version":"1","scil":8,"dcil":8,"scid":"7e37e4dcc6682da8","dcid":"36ce104eee50101c"},"stateless_reset_token":"reset_token","raw":{"length":1251,"payload_length":1224},"frames":[{"frame_type":"stream","stream_id":0,"offset":0,"length":100,"fin":true}]}}
+"#</span>;
+
+        <span class="kw">let </span>written_string = std::str::from_utf8(w.as_ref().get_ref()).unwrap();
+
+        <span class="macro">assert_eq!</span>(log_string, written_string);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_json_event() {
+        <span class="kw">let </span>data = <span class="macro">json!</span>({<span class="string">"foo"</span>: <span class="string">"Bar"</span>, <span class="string">"hello"</span>: <span class="number">123</span>});
+        <span class="kw">let </span>ev = events::JsonEvent {
+            time: <span class="number">0.0</span>,
+            importance: events::EventImportance::Core,
+            name: <span class="string">"jsonevent:sample"</span>.into(),
+            data,
+        };
+
+        <span class="kw">let </span>v: Vec&lt;u8&gt; = Vec::new();
+        <span class="kw">let </span>buff = std::io::Cursor::new(v);
+        <span class="kw">let </span>writer = Box::new(buff);
+
+        <span class="kw">let </span>trace = make_trace_seq();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>s = streamer::QlogStreamer::new(
+            <span class="string">"version"</span>.to_string(),
+            <span class="prelude-val">Some</span>(<span class="string">"title"</span>.to_string()),
+            <span class="prelude-val">Some</span>(<span class="string">"description"</span>.to_string()),
+            <span class="prelude-val">None</span>,
+            std::time::Instant::now(),
+            trace,
+            EventImportance::Base,
+            writer,
+        );
+
+        <span class="macro">assert!</span>(<span class="macro">matches!</span>(s.start_log(), <span class="prelude-val">Ok</span>(())));
+        <span class="macro">assert!</span>(<span class="macro">matches!</span>(s.add_event(ev), <span class="prelude-val">Ok</span>(())));
+        <span class="macro">assert!</span>(<span class="macro">matches!</span>(s.finish_log(), <span class="prelude-val">Ok</span>(())));
+
+        <span class="kw">let </span>r = s.writer();
+        <span class="attr">#[allow(clippy::borrowed_box)]
+        </span><span class="kw">let </span>w: <span class="kw-2">&amp;</span>Box&lt;std::io::Cursor&lt;Vec&lt;u8&gt;&gt;&gt; = <span class="kw">unsafe </span>{ std::mem::transmute(r) };
+
+        <span class="kw">let </span>log_string = <span class="string">r#"{"qlog_version":"version","qlog_format":"JSON-SEQ","title":"title","description":"description","trace":{"vantage_point":{"type":"server"},"title":"Quiche qlog trace","description":"Quiche qlog trace description","configuration":{"time_offset":0.0}}}
+{"time":0.0,"name":"jsonevent:sample","data":{"foo":"Bar","hello":123}}
+"#</span>;
+
+        <span class="kw">let </span>written_string = std::str::from_utf8(w.as_ref().get_ref()).unwrap();
+
+        <span class="macro">assert_eq!</span>(log_string, written_string);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_data_ex() {
+        <span class="kw">let </span>v: Vec&lt;u8&gt; = Vec::new();
+        <span class="kw">let </span>buff = std::io::Cursor::new(v);
+        <span class="kw">let </span>writer = Box::new(buff);
+
+        <span class="kw">let </span>trace = make_trace_seq();
+        <span class="kw">let </span>pkt_hdr = make_pkt_hdr(quic::PacketType::Handshake);
+        <span class="kw">let </span>raw = <span class="prelude-val">Some</span>(RawInfo {
+            length: <span class="prelude-val">Some</span>(<span class="number">1251</span>),
+            payload_length: <span class="prelude-val">Some</span>(<span class="number">1224</span>),
+            data: <span class="prelude-val">None</span>,
+        });
+
+        <span class="kw">let </span>frame1 = QuicFrame::Stream {
+            stream_id: <span class="number">40</span>,
+            offset: <span class="number">40</span>,
+            length: <span class="number">400</span>,
+            fin: <span class="prelude-val">Some</span>(<span class="bool-val">true</span>),
+            raw: <span class="prelude-val">None</span>,
+        };
+
+        <span class="kw">let </span>event_data1 = EventData::PacketSent(quic::PacketSent {
+            header: pkt_hdr.clone(),
+            frames: <span class="prelude-val">Some</span>(<span class="macro">smallvec!</span>[frame1]),
+            is_coalesced: <span class="prelude-val">None</span>,
+            retry_token: <span class="prelude-val">None</span>,
+            stateless_reset_token: <span class="prelude-val">None</span>,
+            supported_versions: <span class="prelude-val">None</span>,
+            raw: raw.clone(),
+            datagram_id: <span class="prelude-val">None</span>,
+            send_at_time: <span class="prelude-val">None</span>,
+            trigger: <span class="prelude-val">None</span>,
+        });
+        <span class="kw">let </span>j1 = <span class="macro">json!</span>({<span class="string">"foo"</span>: <span class="string">"Bar"</span>, <span class="string">"hello"</span>: <span class="number">123</span>});
+        <span class="kw">let </span>j2 = <span class="macro">json!</span>({<span class="string">"baz"</span>: [<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>]});
+        <span class="kw">let </span><span class="kw-2">mut </span>ex_data = BTreeMap::new();
+        ex_data.insert(<span class="string">"first"</span>.to_string(), j1);
+        ex_data.insert(<span class="string">"second"</span>.to_string(), j2);
+
+        <span class="kw">let </span>ev1 = Event::with_time_ex(<span class="number">0.0</span>, event_data1, ex_data);
+
+        <span class="kw">let </span>frame2 = QuicFrame::Stream {
+            stream_id: <span class="number">1</span>,
+            offset: <span class="number">0</span>,
+            length: <span class="number">100</span>,
+            fin: <span class="prelude-val">Some</span>(<span class="bool-val">true</span>),
+            raw: <span class="prelude-val">None</span>,
+        };
+
+        <span class="kw">let </span>event_data2 = EventData::PacketSent(quic::PacketSent {
+            header: pkt_hdr.clone(),
+            frames: <span class="prelude-val">Some</span>(<span class="macro">smallvec!</span>[frame2]),
+            is_coalesced: <span class="prelude-val">None</span>,
+            retry_token: <span class="prelude-val">None</span>,
+            stateless_reset_token: <span class="prelude-val">None</span>,
+            supported_versions: <span class="prelude-val">None</span>,
+            raw: raw.clone(),
+            datagram_id: <span class="prelude-val">None</span>,
+            send_at_time: <span class="prelude-val">None</span>,
+            trigger: <span class="prelude-val">None</span>,
+        });
+
+        <span class="kw">let </span>ev2 = Event::with_time(<span class="number">0.0</span>, event_data2);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>s = streamer::QlogStreamer::new(
+            <span class="string">"version"</span>.to_string(),
+            <span class="prelude-val">Some</span>(<span class="string">"title"</span>.to_string()),
+            <span class="prelude-val">Some</span>(<span class="string">"description"</span>.to_string()),
+            <span class="prelude-val">None</span>,
+            std::time::Instant::now(),
+            trace,
+            EventImportance::Base,
+            writer,
+        );
+
+        <span class="macro">assert!</span>(<span class="macro">matches!</span>(s.start_log(), <span class="prelude-val">Ok</span>(())));
+        <span class="macro">assert!</span>(<span class="macro">matches!</span>(s.add_event(ev1), <span class="prelude-val">Ok</span>(())));
+        <span class="macro">assert!</span>(<span class="macro">matches!</span>(s.add_event(ev2), <span class="prelude-val">Ok</span>(())));
+        <span class="macro">assert!</span>(<span class="macro">matches!</span>(s.finish_log(), <span class="prelude-val">Ok</span>(())));
+
+        <span class="kw">let </span>r = s.writer();
+        <span class="attr">#[allow(clippy::borrowed_box)]
+        </span><span class="kw">let </span>w: <span class="kw-2">&amp;</span>Box&lt;std::io::Cursor&lt;Vec&lt;u8&gt;&gt;&gt; = <span class="kw">unsafe </span>{ std::mem::transmute(r) };
+
+        <span class="kw">let </span>log_string = <span class="string">r#"{"qlog_version":"version","qlog_format":"JSON-SEQ","title":"title","description":"description","trace":{"vantage_point":{"type":"server"},"title":"Quiche qlog trace","description":"Quiche qlog trace description","configuration":{"time_offset":0.0}}}
+{"time":0.0,"name":"transport:packet_sent","data":{"header":{"packet_type":"handshake","packet_number":0,"version":"1","scil":8,"dcil":8,"scid":"7e37e4dcc6682da8","dcid":"36ce104eee50101c"},"raw":{"length":1251,"payload_length":1224},"frames":[{"frame_type":"stream","stream_id":40,"offset":40,"length":400,"fin":true}]},"first":{"foo":"Bar","hello":123},"second":{"baz":[1,2,3,4]}}
+{"time":0.0,"name":"transport:packet_sent","data":{"header":{"packet_type":"handshake","packet_number":0,"version":"1","scil":8,"dcil":8,"scid":"7e37e4dcc6682da8","dcid":"36ce104eee50101c"},"raw":{"length":1251,"payload_length":1224},"frames":[{"frame_type":"stream","stream_id":1,"offset":0,"length":100,"fin":true}]}}
+"#</span>;
+
+        <span class="kw">let </span>written_string = std::str::from_utf8(w.as_ref().get_ref()).unwrap();
+
+        <span class="macro">assert_eq!</span>(log_string, written_string);
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/cid.rs.html b/src/quiche/cid.rs.html
new file mode 100644
index 0000000..e47b0e6
--- /dev/null
+++ b/src/quiche/cid.rs.html
@@ -0,0 +1,2159 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/cid.rs`."><title>cid.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2022, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span><span class="kw">crate</span>::Error;
+<span class="kw">use </span><span class="kw">crate</span>::Result;
+
+<span class="kw">use </span><span class="kw">crate</span>::frame;
+
+<span class="kw">use </span><span class="kw">crate</span>::packet::ConnectionId;
+
+<span class="kw">use </span>std::collections::HashSet;
+<span class="kw">use </span>std::collections::VecDeque;
+
+<span class="kw">use </span>smallvec::SmallVec;
+
+<span class="doccomment">/// Used to calculate the cap for the queue of retired connection IDs for which
+/// a RETIRED_CONNECTION_ID frame have not been sent, as a multiple of
+/// `active_conn_id_limit` (see RFC 9000, section 5.1.2).
+</span><span class="kw">const </span>RETIRED_CONN_ID_LIMIT_MULTIPLIER: usize = <span class="number">3</span>;
+
+<span class="attr">#[derive(Default)]
+</span><span class="kw">struct </span>BoundedConnectionIdSeqSet {
+    <span class="doccomment">/// The inner set.
+    </span>inner: HashSet&lt;u64&gt;,
+
+    <span class="doccomment">/// The maximum number of elements that the set can have.
+    </span>capacity: usize,
+}
+
+<span class="kw">impl </span>BoundedConnectionIdSeqSet {
+    <span class="doccomment">/// Creates a set bounded by `capacity`.
+    </span><span class="kw">fn </span>new(capacity: usize) -&gt; <span class="self">Self </span>{
+        <span class="self">Self </span>{
+            inner: HashSet::new(),
+            capacity,
+        }
+    }
+
+    <span class="kw">fn </span>insert(<span class="kw-2">&amp;mut </span><span class="self">self</span>, e: u64) -&gt; <span class="prelude-ty">Result</span>&lt;bool&gt; {
+        <span class="kw">if </span><span class="self">self</span>.inner.len() &gt;= <span class="self">self</span>.capacity {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::IdLimit);
+        }
+
+        <span class="prelude-val">Ok</span>(<span class="self">self</span>.inner.insert(e))
+    }
+
+    <span class="kw">fn </span>remove(<span class="kw-2">&amp;mut </span><span class="self">self</span>, e: <span class="kw-2">&amp;</span>u64) -&gt; bool {
+        <span class="self">self</span>.inner.remove(e)
+    }
+
+    <span class="kw">fn </span>front(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;u64&gt; {
+        <span class="self">self</span>.inner.iter().next().copied()
+    }
+
+    <span class="kw">fn </span>is_empty(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.inner.is_empty()
+    }
+}
+
+<span class="doccomment">/// A structure holding a `ConnectionId` and all its related metadata.
+</span><span class="attr">#[derive(Debug, Default)]
+</span><span class="kw">pub struct </span>ConnectionIdEntry {
+    <span class="doccomment">/// The Connection ID.
+    </span><span class="kw">pub </span>cid: ConnectionId&lt;<span class="lifetime">'static</span>&gt;,
+
+    <span class="doccomment">/// Its associated sequence number.
+    </span><span class="kw">pub </span>seq: u64,
+
+    <span class="doccomment">/// Its associated reset token. Initial CIDs may not have any reset token.
+    </span><span class="kw">pub </span>reset_token: <span class="prelude-ty">Option</span>&lt;u128&gt;,
+
+    <span class="doccomment">/// The path identifier using this CID, if any.
+    </span><span class="kw">pub </span>path_id: <span class="prelude-ty">Option</span>&lt;usize&gt;,
+}
+
+<span class="attr">#[derive(Default)]
+</span><span class="kw">struct </span>BoundedNonEmptyConnectionIdVecDeque {
+    <span class="doccomment">/// The inner `VecDeque`.
+    </span>inner: VecDeque&lt;ConnectionIdEntry&gt;,
+
+    <span class="doccomment">/// The maximum number of elements that the `VecDeque` can have.
+    </span>capacity: usize,
+}
+
+<span class="kw">impl </span>BoundedNonEmptyConnectionIdVecDeque {
+    <span class="doccomment">/// Creates a `VecDeque` bounded by `capacity` and inserts
+    /// `initial_entry` in it.
+    </span><span class="kw">fn </span>new(capacity: usize, initial_entry: ConnectionIdEntry) -&gt; <span class="self">Self </span>{
+        <span class="kw">let </span><span class="kw-2">mut </span>inner = VecDeque::with_capacity(<span class="number">1</span>);
+        inner.push_back(initial_entry);
+        <span class="self">Self </span>{ inner, capacity }
+    }
+
+    <span class="doccomment">/// Updates the maximum capacity of the inner `VecDeque` to `new_capacity`.
+    /// Does nothing if `new_capacity` is lower or equal to the current
+    /// `capacity`.
+    </span><span class="kw">fn </span>resize(<span class="kw-2">&amp;mut </span><span class="self">self</span>, new_capacity: usize) {
+        <span class="kw">if </span>new_capacity &gt; <span class="self">self</span>.capacity {
+            <span class="self">self</span>.capacity = new_capacity;
+        }
+    }
+
+    <span class="doccomment">/// Returns the oldest inserted entry still present in the `VecDeque`.
+    </span><span class="kw">fn </span>get_oldest(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>ConnectionIdEntry {
+        <span class="self">self</span>.inner.front().expect(<span class="string">"vecdeque is empty"</span>)
+    }
+
+    <span class="doccomment">/// Gets a immutable reference to the entry having the provided `seq`.
+    </span><span class="kw">fn </span>get(<span class="kw-2">&amp;</span><span class="self">self</span>, seq: u64) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>ConnectionIdEntry&gt; {
+        <span class="comment">// We need to iterate over the whole map to find the key.
+        </span><span class="self">self</span>.inner.iter().find(|e| e.seq == seq)
+    }
+
+    <span class="doccomment">/// Gets a mutable reference to the entry having the provided `seq`.
+    </span><span class="kw">fn </span>get_mut(<span class="kw-2">&amp;mut </span><span class="self">self</span>, seq: u64) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;mut </span>ConnectionIdEntry&gt; {
+        <span class="comment">// We need to iterate over the whole map to find the key.
+        </span><span class="self">self</span>.inner.iter_mut().find(|e| e.seq == seq)
+    }
+
+    <span class="doccomment">/// Returns an iterator over the entries in the `VecDeque`.
+    </span><span class="kw">fn </span>iter(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw">impl </span>Iterator&lt;Item = <span class="kw-2">&amp;</span>ConnectionIdEntry&gt; {
+        <span class="self">self</span>.inner.iter()
+    }
+
+    <span class="doccomment">/// Returns the number of elements in the `VecDeque`.
+    </span><span class="kw">fn </span>len(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.inner.len()
+    }
+
+    <span class="doccomment">/// Inserts the provided entry in the `VecDeque`.
+    ///
+    /// This method ensures the unicity of the `seq` associated to an entry. If
+    /// an entry has the same `seq` than `e`, this method updates the entry in
+    /// the `VecDeque` and the number of stored elements remains unchanged.
+    ///
+    /// If inserting a new element would exceed the collection's capacity, this
+    /// method raises an [`IdLimit`].
+    ///
+    /// [`IdLimit`]: enum.Error.html#IdLimit
+    </span><span class="kw">fn </span>insert(<span class="kw-2">&amp;mut </span><span class="self">self</span>, e: ConnectionIdEntry) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="comment">// Ensure we don't have duplicates.
+        </span><span class="kw">match </span><span class="self">self</span>.get_mut(e.seq) {
+            <span class="prelude-val">Some</span>(oe) =&gt; <span class="kw-2">*</span>oe = e,
+            <span class="prelude-val">None </span>=&gt; {
+                <span class="kw">if </span><span class="self">self</span>.inner.len() &gt;= <span class="self">self</span>.capacity {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::IdLimit);
+                }
+                <span class="self">self</span>.inner.push_back(e);
+            },
+        };
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Removes all the elements in the collection and inserts the provided one.
+    </span><span class="kw">fn </span>clear_and_insert(<span class="kw-2">&amp;mut </span><span class="self">self</span>, e: ConnectionIdEntry) {
+        <span class="self">self</span>.inner.clear();
+        <span class="self">self</span>.inner.push_back(e);
+    }
+
+    <span class="doccomment">/// Removes the element in the collection having the provided `seq`.
+    ///
+    /// If this method is called when there remains a single element in the
+    /// collection, this method raises an [`OutOfIdentifiers`].
+    ///
+    /// Returns `Some` if the element was in the collection and removed, or
+    /// `None` if it was not and nothing was modified.
+    ///
+    /// [`OutOfIdentifiers`]: enum.Error.html#OutOfIdentifiers
+    </span><span class="kw">fn </span>remove(<span class="kw-2">&amp;mut </span><span class="self">self</span>, seq: u64) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="prelude-ty">Option</span>&lt;ConnectionIdEntry&gt;&gt; {
+        <span class="kw">if </span><span class="self">self</span>.inner.len() &lt;= <span class="number">1 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::OutOfIdentifiers);
+        }
+
+        <span class="prelude-val">Ok</span>(<span class="self">self
+            </span>.inner
+            .iter()
+            .position(|e| e.seq == seq)
+            .and_then(|index| <span class="self">self</span>.inner.remove(index)))
+    }
+}
+
+<span class="attr">#[derive(Default)]
+</span><span class="kw">pub struct </span>ConnectionIdentifiers {
+    <span class="doccomment">/// All the Destination Connection IDs provided by our peer.
+    </span>dcids: BoundedNonEmptyConnectionIdVecDeque,
+
+    <span class="doccomment">/// All the Source Connection IDs we provide to our peer.
+    </span>scids: BoundedNonEmptyConnectionIdVecDeque,
+
+    <span class="doccomment">/// Source Connection IDs that should be announced to the peer.
+    </span>advertise_new_scid_seqs: VecDeque&lt;u64&gt;,
+
+    <span class="doccomment">/// Retired Destination Connection IDs that should be announced to the peer.
+    </span>retire_dcid_seqs: BoundedConnectionIdSeqSet,
+
+    <span class="doccomment">/// Retired Source Connection IDs that should be notified to the
+    /// application.
+    </span>retired_scids: VecDeque&lt;ConnectionId&lt;<span class="lifetime">'static</span>&gt;&gt;,
+
+    <span class="doccomment">/// Largest "Retire Prior To" we received from the peer.
+    </span>largest_peer_retire_prior_to: u64,
+
+    <span class="doccomment">/// Largest sequence number we received from the peer.
+    </span>largest_destination_seq: u64,
+
+    <span class="doccomment">/// Next sequence number to use.
+    </span>next_scid_seq: u64,
+
+    <span class="doccomment">/// "Retire Prior To" value to advertise to the peer.
+    </span>retire_prior_to: u64,
+
+    <span class="doccomment">/// The maximum number of source Connection IDs our peer allows us.
+    </span>source_conn_id_limit: usize,
+
+    <span class="doccomment">/// Does the host use zero-length source Connection ID.
+    </span>zero_length_scid: bool,
+
+    <span class="doccomment">/// Does the host use zero-length destination Connection ID.
+    </span>zero_length_dcid: bool,
+}
+
+<span class="kw">impl </span>ConnectionIdentifiers {
+    <span class="doccomment">/// Creates a new `ConnectionIdentifiers` with the specified destination
+    /// connection ID limit and initial source Connection ID. The destination
+    /// Connection ID is set to the empty one.
+    </span><span class="kw">pub fn </span>new(
+        <span class="kw-2">mut </span>destination_conn_id_limit: usize, initial_scid: <span class="kw-2">&amp;</span>ConnectionId,
+        initial_path_id: usize, reset_token: <span class="prelude-ty">Option</span>&lt;u128&gt;,
+    ) -&gt; ConnectionIdentifiers {
+        <span class="comment">// It must be at least 2.
+        </span><span class="kw">if </span>destination_conn_id_limit &lt; <span class="number">2 </span>{
+            destination_conn_id_limit = <span class="number">2</span>;
+        }
+
+        <span class="comment">// Initially, the limit of active source connection IDs is 2.
+        </span><span class="kw">let </span>source_conn_id_limit = <span class="number">2</span>;
+
+        <span class="comment">// Record the zero-length SCID status.
+        </span><span class="kw">let </span>zero_length_scid = initial_scid.is_empty();
+
+        <span class="kw">let </span>initial_scid =
+            ConnectionId::from_ref(initial_scid.as_ref()).into_owned();
+
+        <span class="comment">// We need to track up to (2 * source_conn_id_limit - 1) source
+        // Connection IDs when the host wants to force their renewal.
+        </span><span class="kw">let </span>scids = BoundedNonEmptyConnectionIdVecDeque::new(
+            <span class="number">2 </span>* source_conn_id_limit - <span class="number">1</span>,
+            ConnectionIdEntry {
+                cid: initial_scid,
+                seq: <span class="number">0</span>,
+                reset_token,
+                path_id: <span class="prelude-val">Some</span>(initial_path_id),
+            },
+        );
+
+        <span class="kw">let </span>dcids = BoundedNonEmptyConnectionIdVecDeque::new(
+            destination_conn_id_limit,
+            ConnectionIdEntry {
+                cid: ConnectionId::default(),
+                seq: <span class="number">0</span>,
+                reset_token: <span class="prelude-val">None</span>,
+                path_id: <span class="prelude-val">Some</span>(initial_path_id),
+            },
+        );
+
+        <span class="comment">// Because we already inserted the initial SCID.
+        </span><span class="kw">let </span>next_scid_seq = <span class="number">1</span>;
+        ConnectionIdentifiers {
+            scids,
+            dcids,
+            retire_dcid_seqs: BoundedConnectionIdSeqSet::new(
+                destination_conn_id_limit * RETIRED_CONN_ID_LIMIT_MULTIPLIER,
+            ),
+            next_scid_seq,
+            source_conn_id_limit,
+            zero_length_scid,
+            ..Default::default()
+        }
+    }
+
+    <span class="doccomment">/// Sets the maximum number of source connection IDs our peer allows us.
+    </span><span class="kw">pub fn </span>set_source_conn_id_limit(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) {
+        <span class="comment">// Bound conn id limit so our scids queue sizing is valid.
+        </span><span class="kw">let </span>v = std::cmp::min(v, (usize::MAX / <span class="number">2</span>) <span class="kw">as </span>u64) <span class="kw">as </span>usize;
+
+        <span class="comment">// It must be at least 2.
+        </span><span class="kw">if </span>v &gt;= <span class="number">2 </span>{
+            <span class="self">self</span>.source_conn_id_limit = v;
+            <span class="comment">// We need to track up to (2 * source_conn_id_limit - 1) source
+            // Connection IDs when the host wants to force their renewal.
+            </span><span class="self">self</span>.scids.resize(<span class="number">2 </span>* v - <span class="number">1</span>);
+        }
+    }
+
+    <span class="doccomment">/// Gets the destination Connection ID associated with the provided sequence
+    /// number.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>get_dcid(<span class="kw-2">&amp;</span><span class="self">self</span>, seq_num: u64) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;</span>ConnectionIdEntry&gt; {
+        <span class="self">self</span>.dcids.get(seq_num).ok_or(Error::InvalidState)
+    }
+
+    <span class="doccomment">/// Gets the source Connection ID associated with the provided sequence
+    /// number.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>get_scid(<span class="kw-2">&amp;</span><span class="self">self</span>, seq_num: u64) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;</span>ConnectionIdEntry&gt; {
+        <span class="self">self</span>.scids.get(seq_num).ok_or(Error::InvalidState)
+    }
+
+    <span class="doccomment">/// Adds a new source identifier, and indicates whether it should be
+    /// advertised through a `NEW_CONNECTION_ID` frame or not.
+    ///
+    /// At any time, the peer cannot have more Destination Connection IDs than
+    /// the maximum number of active Connection IDs it negotiated. In such case
+    /// (i.e., when [`active_source_cids()`] - `peer_active_conn_id_limit` = 0,
+    /// if the caller agrees to request the removal of previous connection IDs,
+    /// it sets the `retire_if_needed` parameter. Otherwise, an [`IdLimit`] is
+    /// returned.
+    ///
+    /// Note that setting `retire_if_needed` does not prevent this function from
+    /// returning an [`IdLimit`] in the case the caller wants to retire still
+    /// unannounced Connection IDs.
+    ///
+    /// When setting the initial Source Connection ID, the `reset_token` may be
+    /// `None`. However, other Source CIDs must have an associated
+    /// `reset_token`. Providing `None` as the `reset_token` for non-initial
+    /// SCIDs raises an [`InvalidState`].
+    ///
+    /// In the case the provided `cid` is already present, it does not add it.
+    /// If the provided `reset_token` differs from the one already registered,
+    /// returns an `InvalidState`.
+    ///
+    /// Returns the sequence number associated to that new source identifier.
+    ///
+    /// [`active_source_cids()`]:  struct.ConnectionIdentifiers.html#method.active_source_cids
+    /// [`InvalidState`]: enum.Error.html#InvalidState
+    /// [`IdLimit`]: enum.Error.html#IdLimit
+    </span><span class="kw">pub fn </span>new_scid(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, cid: ConnectionId&lt;<span class="lifetime">'static</span>&gt;, reset_token: <span class="prelude-ty">Option</span>&lt;u128&gt;,
+        advertise: bool, path_id: <span class="prelude-ty">Option</span>&lt;usize&gt;, retire_if_needed: bool,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;u64&gt; {
+        <span class="kw">if </span><span class="self">self</span>.zero_length_scid {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState);
+        }
+
+        <span class="comment">// Check whether the number of source Connection IDs does not exceed the
+        // limit. If the host agrees to retire old CIDs, it can store up to
+        // (2 * source_active_conn_id - 1) source CIDs. This limit is enforced
+        // when calling `self.scids.insert()`.
+        </span><span class="kw">if </span><span class="self">self</span>.scids.len() &gt;= <span class="self">self</span>.source_conn_id_limit {
+            <span class="kw">if </span>!retire_if_needed {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::IdLimit);
+            }
+
+            <span class="comment">// We need to retire the lowest one.
+            </span><span class="self">self</span>.retire_prior_to = <span class="self">self</span>.lowest_usable_scid_seq()<span class="question-mark">? </span>+ <span class="number">1</span>;
+        }
+
+        <span class="kw">let </span>seq = <span class="self">self</span>.next_scid_seq;
+
+        <span class="kw">if </span>reset_token.is_none() &amp;&amp; seq != <span class="number">0 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState);
+        }
+
+        <span class="comment">// Check first that the SCID has not been inserted before.
+        </span><span class="kw">if let </span><span class="prelude-val">Some</span>(e) = <span class="self">self</span>.scids.iter().find(|e| e.cid == cid) {
+            <span class="kw">if </span>e.reset_token != reset_token {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState);
+            }
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(e.seq);
+        }
+
+        <span class="self">self</span>.scids.insert(ConnectionIdEntry {
+            cid,
+            seq,
+            reset_token,
+            path_id,
+        })<span class="question-mark">?</span>;
+        <span class="self">self</span>.next_scid_seq += <span class="number">1</span>;
+
+        <span class="self">self</span>.mark_advertise_new_scid_seq(seq, advertise);
+
+        <span class="prelude-val">Ok</span>(seq)
+    }
+
+    <span class="doccomment">/// Sets the initial destination identifier.
+    </span><span class="kw">pub fn </span>set_initial_dcid(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, cid: ConnectionId&lt;<span class="lifetime">'static</span>&gt;, reset_token: <span class="prelude-ty">Option</span>&lt;u128&gt;,
+        path_id: <span class="prelude-ty">Option</span>&lt;usize&gt;,
+    ) {
+        <span class="comment">// Record the zero-length DCID status.
+        </span><span class="self">self</span>.zero_length_dcid = cid.is_empty();
+        <span class="self">self</span>.dcids.clear_and_insert(ConnectionIdEntry {
+            cid,
+            seq: <span class="number">0</span>,
+            reset_token,
+            path_id,
+        });
+    }
+
+    <span class="doccomment">/// Adds a new Destination Connection ID (originating from a
+    /// NEW_CONNECTION_ID frame) and process all its related metadata.
+    ///
+    /// Returns an error if the provided Connection ID or its metadata are
+    /// invalid.
+    ///
+    /// Returns a list of tuples (DCID sequence number, Path ID), containing the
+    /// sequence number of retired DCIDs that were linked to their respective
+    /// Path ID.
+    </span><span class="kw">pub fn </span>new_dcid(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, cid: ConnectionId&lt;<span class="lifetime">'static</span>&gt;, seq: u64, reset_token: u128,
+        retire_prior_to: u64, retired_path_ids: <span class="kw-2">&amp;mut </span>SmallVec&lt;[(u64, usize); <span class="number">1</span>]&gt;,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if </span><span class="self">self</span>.zero_length_dcid {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState);
+        }
+
+        <span class="comment">// If an endpoint receives a NEW_CONNECTION_ID frame that repeats a
+        // previously issued connection ID with a different Stateless Reset
+        // Token field value or a different Sequence Number field value, or if a
+        // sequence number is used for different connection IDs, the endpoint
+        // MAY treat that receipt as a connection error of type
+        // PROTOCOL_VIOLATION.
+        </span><span class="kw">if let </span><span class="prelude-val">Some</span>(e) = <span class="self">self</span>.dcids.iter().find(|e| e.cid == cid || e.seq == seq)
+        {
+            <span class="kw">if </span>e.cid != cid || e.seq != seq || e.reset_token != <span class="prelude-val">Some</span>(reset_token)
+            {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidFrame);
+            }
+            <span class="comment">// The identifier is already there, nothing to do.
+            </span><span class="kw">return </span><span class="prelude-val">Ok</span>(());
+        }
+
+        <span class="comment">// The value in the Retire Prior To field MUST be less than or equal to
+        // the value in the Sequence Number field. Receiving a value in the
+        // Retire Prior To field that is greater than that in the Sequence
+        // Number field MUST be treated as a connection error of type
+        // FRAME_ENCODING_ERROR.
+        </span><span class="kw">if </span>retire_prior_to &gt; seq {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidFrame);
+        }
+
+        <span class="comment">// An endpoint that receives a NEW_CONNECTION_ID frame with a sequence
+        // number smaller than the Retire Prior To field of a previously
+        // received NEW_CONNECTION_ID frame MUST send a corresponding
+        // RETIRE_CONNECTION_ID frame that retires the newly received connection
+        // ID, unless it has already done so for that sequence number.
+        </span><span class="kw">if </span>seq &lt; <span class="self">self</span>.largest_peer_retire_prior_to {
+            <span class="self">self</span>.mark_retire_dcid_seq(seq, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+        }
+
+        <span class="kw">if </span>seq &gt; <span class="self">self</span>.largest_destination_seq {
+            <span class="self">self</span>.largest_destination_seq = seq;
+        }
+
+        <span class="kw">let </span>new_entry = ConnectionIdEntry {
+            cid: cid.clone(),
+            seq,
+            reset_token: <span class="prelude-val">Some</span>(reset_token),
+            path_id: <span class="prelude-val">None</span>,
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>retired_dcid_queue_err = <span class="prelude-val">None</span>;
+
+        <span class="comment">// A receiver MUST ignore any Retire Prior To fields that do not
+        // increase the largest received Retire Prior To value.
+        //
+        // After processing a NEW_CONNECTION_ID frame and adding and retiring
+        // active connection IDs, if the number of active connection IDs exceeds
+        // the value advertised in its active_connection_id_limit transport
+        // parameter, an endpoint MUST close the connection with an error of type
+        // CONNECTION_ID_LIMIT_ERROR.
+        </span><span class="kw">if </span>retire_prior_to &gt; <span class="self">self</span>.largest_peer_retire_prior_to {
+            <span class="kw">let </span>retired = <span class="kw-2">&amp;mut </span><span class="self">self</span>.retire_dcid_seqs;
+
+            <span class="comment">// The insert entry MUST have a sequence higher or equal to the ones
+            // being retired.
+            </span><span class="kw">if </span>new_entry.seq &lt; retire_prior_to {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::OutOfIdentifiers);
+            }
+
+            <span class="comment">// To avoid exceeding the capacity of the inner `VecDeque`, we first
+            // remove the elements and then insert the new one.
+            </span><span class="kw">let </span>index = <span class="self">self
+                </span>.dcids
+                .inner
+                .partition_point(|e| e.seq &lt; retire_prior_to);
+
+            <span class="kw">for </span>e <span class="kw">in </span><span class="self">self</span>.dcids.inner.drain(..index) {
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(pid) = e.path_id {
+                    retired_path_ids.push((e.seq, pid));
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Err</span>(e) = retired.insert(e.seq) {
+                    <span class="comment">// Delay propagating the error as we need to try to insert
+                    // the new DCID first.
+                    </span>retired_dcid_queue_err = <span class="prelude-val">Some</span>(e);
+                    <span class="kw">break</span>;
+                }
+            }
+
+            <span class="self">self</span>.largest_peer_retire_prior_to = retire_prior_to;
+        }
+
+        <span class="comment">// Note that if no element has been retired and the `VecDeque` reaches
+        // its capacity limit, this will raise an `IdLimit`.
+        </span><span class="self">self</span>.dcids.insert(new_entry)<span class="question-mark">?</span>;
+
+        <span class="comment">// Propagate the error triggered when inserting a retired DCID seq to
+        // the queue.
+        </span><span class="kw">if let </span><span class="prelude-val">Some</span>(e) = retired_dcid_queue_err {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(e);
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Retires the Source Connection ID having the provided sequence number.
+    ///
+    /// In case the retired Connection ID is the same as the one used by the
+    /// packet requesting the retiring, or if the retired sequence number is
+    /// greater than any previously advertised sequence numbers, it returns an
+    /// [`InvalidState`].
+    ///
+    /// Returns the path ID that was associated to the retired CID, if any.
+    ///
+    /// [`InvalidState`]: enum.Error.html#InvalidState
+    </span><span class="kw">pub fn </span>retire_scid(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, seq: u64, pkt_dcid: <span class="kw-2">&amp;</span>ConnectionId,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="prelude-ty">Option</span>&lt;usize&gt;&gt; {
+        <span class="kw">if </span>seq &gt;= <span class="self">self</span>.next_scid_seq {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState);
+        }
+
+        <span class="kw">let </span>pid = <span class="kw">if let </span><span class="prelude-val">Some</span>(e) = <span class="self">self</span>.scids.remove(seq)<span class="question-mark">? </span>{
+            <span class="kw">if </span>e.cid == <span class="kw-2">*</span>pkt_dcid {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState);
+            }
+
+            <span class="comment">// Notifies the application.
+            </span><span class="self">self</span>.retired_scids.push_back(e.cid);
+
+            <span class="comment">// Retiring this SCID may increase the retire prior to.
+            </span><span class="kw">let </span>lowest_scid_seq = <span class="self">self</span>.lowest_usable_scid_seq()<span class="question-mark">?</span>;
+            <span class="self">self</span>.retire_prior_to = lowest_scid_seq;
+
+            e.path_id
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="prelude-val">Ok</span>(pid)
+    }
+
+    <span class="doccomment">/// Retires the Destination Connection ID having the provided sequence
+    /// number.
+    ///
+    /// If the caller tries to retire the last destination Connection ID, this
+    /// method triggers an [`OutOfIdentifiers`].
+    ///
+    /// If the caller tries to retire a non-existing Destination Connection
+    /// ID sequence number, this method returns an [`InvalidState`].
+    ///
+    /// Returns the path ID that was associated to the retired CID, if any.
+    ///
+    /// [`OutOfIdentifiers`]: enum.Error.html#OutOfIdentifiers
+    /// [`InvalidState`]: enum.Error.html#InvalidState
+    </span><span class="kw">pub fn </span>retire_dcid(<span class="kw-2">&amp;mut </span><span class="self">self</span>, seq: u64) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="prelude-ty">Option</span>&lt;usize&gt;&gt; {
+        <span class="kw">if </span><span class="self">self</span>.zero_length_dcid {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState);
+        }
+
+        <span class="kw">let </span>e = <span class="self">self</span>.dcids.remove(seq)<span class="question-mark">?</span>.ok_or(Error::InvalidState)<span class="question-mark">?</span>;
+
+        <span class="self">self</span>.mark_retire_dcid_seq(seq, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(e.path_id)
+    }
+
+    <span class="doccomment">/// Returns an iterator over the source connection IDs.
+    </span><span class="kw">pub fn </span>scids_iter(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw">impl </span>Iterator&lt;Item = <span class="kw-2">&amp;</span>ConnectionId&gt; {
+        <span class="self">self</span>.scids.iter().map(|e| <span class="kw-2">&amp;</span>e.cid)
+    }
+
+    <span class="doccomment">/// Updates the Source Connection ID entry with the provided sequence number
+    /// to indicate that it is now linked to the provided path ID.
+    </span><span class="kw">pub fn </span>link_scid_to_path_id(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, dcid_seq: u64, path_id: usize,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>e = <span class="self">self</span>.scids.get_mut(dcid_seq).ok_or(Error::InvalidState)<span class="question-mark">?</span>;
+        e.path_id = <span class="prelude-val">Some</span>(path_id);
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Updates the Destination Connection ID entry with the provided sequence
+    /// number to indicate that it is now linked to the provided path ID.
+    </span><span class="kw">pub fn </span>link_dcid_to_path_id(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, dcid_seq: u64, path_id: usize,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>e = <span class="self">self</span>.dcids.get_mut(dcid_seq).ok_or(Error::InvalidState)<span class="question-mark">?</span>;
+        e.path_id = <span class="prelude-val">Some</span>(path_id);
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Gets the minimum Source Connection ID sequence number whose removal has
+    /// not been requested yet.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>lowest_usable_scid_seq(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;u64&gt; {
+        <span class="self">self</span>.scids
+            .iter()
+            .filter_map(|e| {
+                <span class="kw">if </span>e.seq &gt;= <span class="self">self</span>.retire_prior_to {
+                    <span class="prelude-val">Some</span>(e.seq)
+                } <span class="kw">else </span>{
+                    <span class="prelude-val">None
+                </span>}
+            })
+            .min()
+            .ok_or(Error::InvalidState)
+    }
+
+    <span class="doccomment">/// Gets the lowest Destination Connection ID sequence number that is not
+    /// associated to a path.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>lowest_available_dcid_seq(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;u64&gt; {
+        <span class="self">self</span>.dcids
+            .iter()
+            .filter_map(|e| {
+                <span class="kw">if </span>e.path_id.is_none() {
+                    <span class="prelude-val">Some</span>(e.seq)
+                } <span class="kw">else </span>{
+                    <span class="prelude-val">None
+                </span>}
+            })
+            .min()
+    }
+
+    <span class="doccomment">/// Finds the sequence number of the Source Connection ID having the
+    /// provided value and the identifier of the path using it, if any.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>find_scid_seq(
+        <span class="kw-2">&amp;</span><span class="self">self</span>, scid: <span class="kw-2">&amp;</span>ConnectionId,
+    ) -&gt; <span class="prelude-ty">Option</span>&lt;(u64, <span class="prelude-ty">Option</span>&lt;usize&gt;)&gt; {
+        <span class="self">self</span>.scids.iter().find_map(|e| {
+            <span class="kw">if </span>e.cid == <span class="kw-2">*</span>scid {
+                <span class="prelude-val">Some</span>((e.seq, e.path_id))
+            } <span class="kw">else </span>{
+                <span class="prelude-val">None
+            </span>}
+        })
+    }
+
+    <span class="doccomment">/// Returns the number of Source Connection IDs that have not been
+    /// assigned to a path yet.
+    ///
+    /// Note that this function is only meaningful if the host uses non-zero
+    /// length Source Connection IDs.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>available_scids(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.scids.iter().filter(|e| e.path_id.is_none()).count()
+    }
+
+    <span class="doccomment">/// Returns the number of Destination Connection IDs that have not been
+    /// assigned to a path yet.
+    ///
+    /// Note that this function returns 0 if the host uses zero length
+    /// Destination Connection IDs.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>available_dcids(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="kw">if </span><span class="self">self</span>.zero_length_dcid() {
+            <span class="kw">return </span><span class="number">0</span>;
+        }
+        <span class="self">self</span>.dcids.iter().filter(|e| e.path_id.is_none()).count()
+    }
+
+    <span class="doccomment">/// Returns the oldest active source Connection ID of this connection.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>oldest_scid(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>ConnectionIdEntry {
+        <span class="self">self</span>.scids.get_oldest()
+    }
+
+    <span class="doccomment">/// Returns the oldest known active destination Connection ID of this
+    /// connection.
+    ///
+    /// Note that due to e.g., reordering at reception side, the oldest known
+    /// active destination Connection ID is not necessarily the one having the
+    /// lowest sequence.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>oldest_dcid(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>ConnectionIdEntry {
+        <span class="self">self</span>.dcids.get_oldest()
+    }
+
+    <span class="doccomment">/// Adds or remove the source Connection ID sequence number from the
+    /// source Connection ID set that need to be advertised to the peer through
+    /// NEW_CONNECTION_ID frames.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>mark_advertise_new_scid_seq(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, scid_seq: u64, advertise: bool,
+    ) {
+        <span class="kw">if </span>advertise {
+            <span class="self">self</span>.advertise_new_scid_seqs.push_back(scid_seq);
+        } <span class="kw">else if let </span><span class="prelude-val">Some</span>(index) = <span class="self">self
+            </span>.advertise_new_scid_seqs
+            .iter()
+            .position(|s| <span class="kw-2">*</span>s == scid_seq)
+        {
+            <span class="self">self</span>.advertise_new_scid_seqs.remove(index);
+        }
+    }
+
+    <span class="doccomment">/// Adds or remove the destination Connection ID sequence number from the
+    /// retired destination Connection ID set that need to be advertised to the
+    /// peer through RETIRE_CONNECTION_ID frames.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>mark_retire_dcid_seq(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, dcid_seq: u64, retire: bool,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if </span>retire {
+            <span class="self">self</span>.retire_dcid_seqs.insert(dcid_seq)<span class="question-mark">?</span>;
+        } <span class="kw">else </span>{
+            <span class="self">self</span>.retire_dcid_seqs.remove(<span class="kw-2">&amp;</span>dcid_seq);
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Gets a source Connection ID's sequence number requiring advertising it
+    /// to the peer through NEW_CONNECTION_ID frame, if any.
+    ///
+    /// If `Some`, it always returns the same value until it has been removed
+    /// using `mark_advertise_new_scid_seq`.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>next_advertise_new_scid_seq(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;u64&gt; {
+        <span class="self">self</span>.advertise_new_scid_seqs.front().copied()
+    }
+
+    <span class="doccomment">/// Gets a destination Connection IDs's sequence number that need to send
+    /// RETIRE_CONNECTION_ID frames.
+    ///
+    /// If `Some`, it always returns the same value until it has been removed
+    /// using `mark_retire_dcid_seq`.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>next_retire_dcid_seq(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;u64&gt; {
+        <span class="self">self</span>.retire_dcid_seqs.front()
+    }
+
+    <span class="doccomment">/// Returns true if there are new source Connection IDs to advertise.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>has_new_scids(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        !<span class="self">self</span>.advertise_new_scid_seqs.is_empty()
+    }
+
+    <span class="doccomment">/// Returns true if there are retired destination Connection IDs to\
+    /// advertise.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>has_retire_dcids(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        !<span class="self">self</span>.retire_dcid_seqs.is_empty()
+    }
+
+    <span class="doccomment">/// Returns whether zero-length source CIDs are used.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>zero_length_scid(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.zero_length_scid
+    }
+
+    <span class="doccomment">/// Returns whether zero-length destination CIDs are used.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>zero_length_dcid(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.zero_length_dcid
+    }
+
+    <span class="doccomment">/// Gets the NEW_CONNECTION_ID frame related to the source connection ID
+    /// with sequence `seq_num`.
+    </span><span class="kw">pub fn </span>get_new_connection_id_frame_for(
+        <span class="kw-2">&amp;</span><span class="self">self</span>, seq_num: u64,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;frame::Frame&gt; {
+        <span class="kw">let </span>e = <span class="self">self</span>.scids.get(seq_num).ok_or(Error::InvalidState)<span class="question-mark">?</span>;
+        <span class="prelude-val">Ok</span>(frame::Frame::NewConnectionId {
+            seq_num,
+            retire_prior_to: <span class="self">self</span>.retire_prior_to,
+            conn_id: e.cid.to_vec(),
+            reset_token: e.reset_token.ok_or(Error::InvalidState)<span class="question-mark">?</span>.to_be_bytes(),
+        })
+    }
+
+    <span class="doccomment">/// Returns the number of source Connection IDs that are active. This is
+    /// only meaningful if the host uses non-zero length Source Connection IDs.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>active_source_cids(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.scids.len()
+    }
+
+    <span class="doccomment">/// Returns the number of source Connection IDs that are retired. This is
+    /// only meaningful if the host uses non-zero length Source Connection IDs.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>retired_source_cids(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.retired_scids.len()
+    }
+
+    <span class="kw">pub fn </span>pop_retired_scid(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;ConnectionId&lt;<span class="lifetime">'static</span>&gt;&gt; {
+        <span class="self">self</span>.retired_scids.pop_front()
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+    <span class="kw">use </span><span class="kw">crate</span>::testing::create_cid_and_reset_token;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>ids_new_scids() {
+        <span class="kw">let </span>(scid, <span class="kw">_</span>) = create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="kw">let </span>(dcid, <span class="kw">_</span>) = create_cid_and_reset_token(<span class="number">16</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>ids = ConnectionIdentifiers::new(<span class="number">2</span>, <span class="kw-2">&amp;</span>scid, <span class="number">0</span>, <span class="prelude-val">None</span>);
+        ids.set_source_conn_id_limit(<span class="number">3</span>);
+        ids.set_initial_dcid(dcid, <span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(<span class="number">0</span>));
+
+        <span class="macro">assert_eq!</span>(ids.available_dcids(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(ids.available_scids(), <span class="number">0</span>);
+        <span class="macro">assert!</span>(!ids.has_new_scids());
+        <span class="macro">assert_eq!</span>(ids.next_advertise_new_scid_seq(), <span class="prelude-val">None</span>);
+
+        <span class="kw">let </span>(scid2, rt2) = create_cid_and_reset_token(<span class="number">16</span>);
+
+        <span class="macro">assert_eq!</span>(ids.new_scid(scid2, <span class="prelude-val">Some</span>(rt2), <span class="bool-val">true</span>, <span class="prelude-val">None</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(ids.available_dcids(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(ids.available_scids(), <span class="number">1</span>);
+        <span class="macro">assert!</span>(ids.has_new_scids());
+        <span class="macro">assert_eq!</span>(ids.next_advertise_new_scid_seq(), <span class="prelude-val">Some</span>(<span class="number">1</span>));
+
+        <span class="kw">let </span>(scid3, rt3) = create_cid_and_reset_token(<span class="number">16</span>);
+
+        <span class="macro">assert_eq!</span>(ids.new_scid(scid3, <span class="prelude-val">Some</span>(rt3), <span class="bool-val">true</span>, <span class="prelude-val">None</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">2</span>));
+        <span class="macro">assert_eq!</span>(ids.available_dcids(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(ids.available_scids(), <span class="number">2</span>);
+        <span class="macro">assert!</span>(ids.has_new_scids());
+        <span class="macro">assert_eq!</span>(ids.next_advertise_new_scid_seq(), <span class="prelude-val">Some</span>(<span class="number">1</span>));
+
+        <span class="comment">// If now we give another CID, it reports an error since it exceeds the
+        // limit of active CIDs.
+        </span><span class="kw">let </span>(scid4, rt4) = create_cid_and_reset_token(<span class="number">16</span>);
+
+        <span class="macro">assert_eq!</span>(
+            ids.new_scid(scid4, <span class="prelude-val">Some</span>(rt4), <span class="bool-val">true</span>, <span class="prelude-val">None</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Err</span>(Error::IdLimit),
+        );
+        <span class="macro">assert_eq!</span>(ids.available_dcids(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(ids.available_scids(), <span class="number">2</span>);
+        <span class="macro">assert!</span>(ids.has_new_scids());
+        <span class="macro">assert_eq!</span>(ids.next_advertise_new_scid_seq(), <span class="prelude-val">Some</span>(<span class="number">1</span>));
+
+        <span class="comment">// Assume we sent one of them.
+        </span>ids.mark_advertise_new_scid_seq(<span class="number">1</span>, <span class="bool-val">false</span>);
+        <span class="macro">assert_eq!</span>(ids.available_dcids(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(ids.available_scids(), <span class="number">2</span>);
+        <span class="macro">assert!</span>(ids.has_new_scids());
+        <span class="macro">assert_eq!</span>(ids.next_advertise_new_scid_seq(), <span class="prelude-val">Some</span>(<span class="number">2</span>));
+
+        <span class="comment">// Send the other.
+        </span>ids.mark_advertise_new_scid_seq(<span class="number">2</span>, <span class="bool-val">false</span>);
+
+        <span class="macro">assert_eq!</span>(ids.available_dcids(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(ids.available_scids(), <span class="number">2</span>);
+        <span class="macro">assert!</span>(!ids.has_new_scids());
+        <span class="macro">assert_eq!</span>(ids.next_advertise_new_scid_seq(), <span class="prelude-val">None</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>new_dcid_event() {
+        <span class="kw">let </span>(scid, <span class="kw">_</span>) = create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="kw">let </span>(dcid, <span class="kw">_</span>) = create_cid_and_reset_token(<span class="number">16</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>retired_path_ids = SmallVec::new();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>ids = ConnectionIdentifiers::new(<span class="number">2</span>, <span class="kw-2">&amp;</span>scid, <span class="number">0</span>, <span class="prelude-val">None</span>);
+        ids.set_initial_dcid(dcid, <span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(<span class="number">0</span>));
+
+        <span class="macro">assert_eq!</span>(ids.available_dcids(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(ids.dcids.len(), <span class="number">1</span>);
+
+        <span class="kw">let </span>(dcid2, rt2) = create_cid_and_reset_token(<span class="number">16</span>);
+
+        <span class="macro">assert_eq!</span>(
+            ids.new_dcid(dcid2, <span class="number">1</span>, rt2, <span class="number">0</span>, <span class="kw-2">&amp;mut </span>retired_path_ids),
+            <span class="prelude-val">Ok</span>(()),
+        );
+        <span class="macro">assert_eq!</span>(retired_path_ids, SmallVec::from_buf([]));
+        <span class="macro">assert_eq!</span>(ids.available_dcids(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(ids.dcids.len(), <span class="number">2</span>);
+
+        <span class="comment">// Now we assume that the client wants to advertise more source
+        // Connection IDs than the advertised limit. This is valid if it
+        // requests its peer to retire enough Connection IDs to fit within the
+        // limits.
+        </span><span class="kw">let </span>(dcid3, rt3) = create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert_eq!</span>(
+            ids.new_dcid(dcid3, <span class="number">2</span>, rt3, <span class="number">1</span>, <span class="kw-2">&amp;mut </span>retired_path_ids),
+            <span class="prelude-val">Ok</span>(())
+        );
+        <span class="macro">assert_eq!</span>(retired_path_ids, SmallVec::from_buf([(<span class="number">0</span>, <span class="number">0</span>)]));
+        <span class="comment">// The CID module does not handle path replacing. Fake it now.
+        </span>ids.link_dcid_to_path_id(<span class="number">1</span>, <span class="number">0</span>).unwrap();
+        <span class="macro">assert_eq!</span>(ids.available_dcids(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(ids.dcids.len(), <span class="number">2</span>);
+        <span class="macro">assert!</span>(ids.has_retire_dcids());
+        <span class="macro">assert_eq!</span>(ids.next_retire_dcid_seq(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+
+        <span class="comment">// Fake RETIRE_CONNECTION_ID sending.
+        </span><span class="kw">let _ </span>= ids.mark_retire_dcid_seq(<span class="number">0</span>, <span class="bool-val">false</span>);
+        <span class="macro">assert!</span>(!ids.has_retire_dcids());
+        <span class="macro">assert_eq!</span>(ids.next_retire_dcid_seq(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Now tries to experience CID retirement. If the server tries to remove
+        // non-existing DCIDs, it fails.
+        </span><span class="macro">assert_eq!</span>(ids.retire_dcid(<span class="number">0</span>), <span class="prelude-val">Err</span>(Error::InvalidState));
+        <span class="macro">assert_eq!</span>(ids.retire_dcid(<span class="number">3</span>), <span class="prelude-val">Err</span>(Error::InvalidState));
+        <span class="macro">assert!</span>(!ids.has_retire_dcids());
+        <span class="macro">assert_eq!</span>(ids.dcids.len(), <span class="number">2</span>);
+
+        <span class="comment">// Now it removes DCID with sequence 1.
+        </span><span class="macro">assert_eq!</span>(ids.retire_dcid(<span class="number">1</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="number">0</span>)));
+        <span class="comment">// The CID module does not handle path replacing. Fake it now.
+        </span>ids.link_dcid_to_path_id(<span class="number">2</span>, <span class="number">0</span>).unwrap();
+        <span class="macro">assert_eq!</span>(ids.available_dcids(), <span class="number">0</span>);
+        <span class="macro">assert!</span>(ids.has_retire_dcids());
+        <span class="macro">assert_eq!</span>(ids.next_retire_dcid_seq(), <span class="prelude-val">Some</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(ids.dcids.len(), <span class="number">1</span>);
+
+        <span class="comment">// Fake RETIRE_CONNECTION_ID sending.
+        </span><span class="kw">let _ </span>= ids.mark_retire_dcid_seq(<span class="number">1</span>, <span class="bool-val">false</span>);
+        <span class="macro">assert!</span>(!ids.has_retire_dcids());
+        <span class="macro">assert_eq!</span>(ids.next_retire_dcid_seq(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Trying to remove the last DCID triggers an error.
+        </span><span class="macro">assert_eq!</span>(ids.retire_dcid(<span class="number">2</span>), <span class="prelude-val">Err</span>(Error::OutOfIdentifiers));
+        <span class="macro">assert_eq!</span>(ids.available_dcids(), <span class="number">0</span>);
+        <span class="macro">assert!</span>(!ids.has_retire_dcids());
+        <span class="macro">assert_eq!</span>(ids.dcids.len(), <span class="number">1</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>new_dcid_reordered() {
+        <span class="kw">let </span>(scid, <span class="kw">_</span>) = create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="kw">let </span>(dcid, <span class="kw">_</span>) = create_cid_and_reset_token(<span class="number">16</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>retired_path_ids = SmallVec::new();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>ids = ConnectionIdentifiers::new(<span class="number">2</span>, <span class="kw-2">&amp;</span>scid, <span class="number">0</span>, <span class="prelude-val">None</span>);
+        ids.set_initial_dcid(dcid, <span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(<span class="number">0</span>));
+
+        <span class="macro">assert_eq!</span>(ids.available_dcids(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(ids.dcids.len(), <span class="number">1</span>);
+
+        <span class="comment">// Skip DCID #1 (e.g due to packet loss) and insert DCID #2.
+        </span><span class="kw">let </span>(dcid, rt) = create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert!</span>(ids.new_dcid(dcid, <span class="number">2</span>, rt, <span class="number">1</span>, <span class="kw-2">&amp;mut </span>retired_path_ids).is_ok());
+        <span class="macro">assert_eq!</span>(ids.dcids.len(), <span class="number">1</span>);
+
+        <span class="kw">let </span>(dcid, rt) = create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert!</span>(ids.new_dcid(dcid, <span class="number">3</span>, rt, <span class="number">2</span>, <span class="kw-2">&amp;mut </span>retired_path_ids).is_ok());
+        <span class="macro">assert_eq!</span>(ids.dcids.len(), <span class="number">2</span>);
+
+        <span class="kw">let </span>(dcid, rt) = create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert!</span>(ids.new_dcid(dcid, <span class="number">4</span>, rt, <span class="number">3</span>, <span class="kw-2">&amp;mut </span>retired_path_ids).is_ok());
+        <span class="macro">assert_eq!</span>(ids.dcids.len(), <span class="number">2</span>);
+
+        <span class="comment">// Insert DCID #1 (e.g due to packet reordering).
+        </span><span class="kw">let </span>(dcid, rt) = create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert!</span>(ids.new_dcid(dcid, <span class="number">1</span>, rt, <span class="number">0</span>, <span class="kw-2">&amp;mut </span>retired_path_ids).is_ok());
+        <span class="macro">assert_eq!</span>(ids.dcids.len(), <span class="number">2</span>);
+
+        <span class="comment">// Try inserting DCID #1 again (e.g. due to retransmission).
+        </span><span class="kw">let </span>(dcid, rt) = create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert!</span>(ids.new_dcid(dcid, <span class="number">1</span>, rt, <span class="number">0</span>, <span class="kw-2">&amp;mut </span>retired_path_ids).is_ok());
+        <span class="macro">assert_eq!</span>(ids.dcids.len(), <span class="number">2</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>new_dcid_partial_retire_prior_to() {
+        <span class="kw">let </span>(scid, <span class="kw">_</span>) = create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="kw">let </span>(dcid, <span class="kw">_</span>) = create_cid_and_reset_token(<span class="number">16</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>retired_path_ids = SmallVec::new();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>ids = ConnectionIdentifiers::new(<span class="number">5</span>, <span class="kw-2">&amp;</span>scid, <span class="number">0</span>, <span class="prelude-val">None</span>);
+        ids.set_initial_dcid(dcid, <span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(<span class="number">0</span>));
+
+        <span class="macro">assert_eq!</span>(ids.available_dcids(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(ids.dcids.len(), <span class="number">1</span>);
+
+        <span class="kw">let </span>(dcid, rt) = create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert!</span>(ids.new_dcid(dcid, <span class="number">1</span>, rt, <span class="number">0</span>, <span class="kw-2">&amp;mut </span>retired_path_ids).is_ok());
+        <span class="macro">assert_eq!</span>(ids.dcids.len(), <span class="number">2</span>);
+
+        <span class="kw">let </span>(dcid, rt) = create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert!</span>(ids.new_dcid(dcid, <span class="number">2</span>, rt, <span class="number">0</span>, <span class="kw-2">&amp;mut </span>retired_path_ids).is_ok());
+        <span class="macro">assert_eq!</span>(ids.dcids.len(), <span class="number">3</span>);
+
+        <span class="kw">let </span>(dcid, rt) = create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert!</span>(ids.new_dcid(dcid, <span class="number">3</span>, rt, <span class="number">0</span>, <span class="kw-2">&amp;mut </span>retired_path_ids).is_ok());
+        <span class="macro">assert_eq!</span>(ids.dcids.len(), <span class="number">4</span>);
+
+        <span class="kw">let </span>(dcid, rt) = create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert!</span>(ids.new_dcid(dcid, <span class="number">4</span>, rt, <span class="number">0</span>, <span class="kw-2">&amp;mut </span>retired_path_ids).is_ok());
+        <span class="macro">assert_eq!</span>(ids.dcids.len(), <span class="number">5</span>);
+
+        <span class="comment">// Retire a DCID from the middle of the list
+        </span><span class="macro">assert!</span>(ids.retire_dcid(<span class="number">3</span>).is_ok());
+
+        <span class="comment">// Retire prior to DCID that was just retired.
+        //
+        // This is largely to test that the `partition_point()` call above
+        // returns a meaningful value even if the actual sequence that is
+        // searched isn't present in the list.
+        </span><span class="kw">let </span>(dcid, rt) = create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert!</span>(ids.new_dcid(dcid, <span class="number">5</span>, rt, <span class="number">3</span>, <span class="kw-2">&amp;mut </span>retired_path_ids).is_ok());
+        <span class="macro">assert_eq!</span>(ids.dcids.len(), <span class="number">2</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>retire_scids() {
+        <span class="kw">let </span>(scid, <span class="kw">_</span>) = create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="kw">let </span>(dcid, <span class="kw">_</span>) = create_cid_and_reset_token(<span class="number">16</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>ids = ConnectionIdentifiers::new(<span class="number">3</span>, <span class="kw-2">&amp;</span>scid, <span class="number">0</span>, <span class="prelude-val">None</span>);
+        ids.set_initial_dcid(dcid, <span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        ids.set_source_conn_id_limit(<span class="number">3</span>);
+
+        <span class="kw">let </span>(scid2, rt2) = create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="kw">let </span>(scid3, rt3) = create_cid_and_reset_token(<span class="number">16</span>);
+
+        <span class="macro">assert_eq!</span>(
+            ids.new_scid(scid2.clone(), <span class="prelude-val">Some</span>(rt2), <span class="bool-val">true</span>, <span class="prelude-val">None</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Ok</span>(<span class="number">1</span>),
+        );
+        <span class="macro">assert_eq!</span>(ids.scids.len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(
+            ids.new_scid(scid3.clone(), <span class="prelude-val">Some</span>(rt3), <span class="bool-val">true</span>, <span class="prelude-val">None</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Ok</span>(<span class="number">2</span>),
+        );
+        <span class="macro">assert_eq!</span>(ids.scids.len(), <span class="number">3</span>);
+
+        <span class="macro">assert_eq!</span>(ids.pop_retired_scid(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(ids.retire_scid(<span class="number">0</span>, <span class="kw-2">&amp;</span>scid2), <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="number">0</span>)));
+
+        <span class="macro">assert_eq!</span>(ids.pop_retired_scid(), <span class="prelude-val">Some</span>(scid));
+        <span class="macro">assert_eq!</span>(ids.pop_retired_scid(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(ids.retire_scid(<span class="number">1</span>, <span class="kw-2">&amp;</span>scid3), <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>));
+
+        <span class="macro">assert_eq!</span>(ids.pop_retired_scid(), <span class="prelude-val">Some</span>(scid2));
+        <span class="macro">assert_eq!</span>(ids.pop_retired_scid(), <span class="prelude-val">None</span>);
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/crypto/mod.rs.html b/src/quiche/crypto/mod.rs.html
new file mode 100644
index 0000000..874dc7b
--- /dev/null
+++ b/src/quiche/crypto/mod.rs.html
@@ -0,0 +1,1273 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/crypto/mod.rs`."><title>mod.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2018-2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span>ring::aead;
+<span class="kw">use </span>ring::hkdf;
+
+<span class="kw">use </span>libc::c_void;
+
+<span class="kw">use </span><span class="kw">crate</span>::Error;
+<span class="kw">use </span><span class="kw">crate</span>::Result;
+
+<span class="kw">use </span><span class="kw">crate</span>::packet;
+
+<span class="attr">#[repr(C)]
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+</span><span class="kw">pub enum </span>Level {
+    Initial   = <span class="number">0</span>,
+    ZeroRTT   = <span class="number">1</span>,
+    Handshake = <span class="number">2</span>,
+    OneRTT    = <span class="number">3</span>,
+}
+
+<span class="kw">impl </span>Level {
+    <span class="kw">pub fn </span>from_epoch(e: packet::Epoch) -&gt; Level {
+        <span class="kw">match </span>e {
+            packet::Epoch::Initial =&gt; Level::Initial,
+
+            packet::Epoch::Handshake =&gt; Level::Handshake,
+
+            packet::Epoch::Application =&gt; Level::OneRTT,
+        }
+    }
+}
+
+<span class="attr">#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+</span><span class="kw">pub enum </span>Algorithm {
+    <span class="attr">#[allow(non_camel_case_types)]
+    </span>AES128_GCM,
+
+    <span class="attr">#[allow(non_camel_case_types)]
+    </span>AES256_GCM,
+
+    <span class="attr">#[allow(non_camel_case_types)]
+    </span>ChaCha20_Poly1305,
+}
+
+<span class="kw">impl </span>Algorithm {
+    <span class="comment">// Note: some vendor-specific methods are implemented by each vendor's
+    // submodule (openssl-quictls / boringssl).
+    </span><span class="kw">fn </span>get_ring_hp(<span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span><span class="lifetime">'static </span>aead::quic::Algorithm {
+        <span class="kw">match </span><span class="self">self </span>{
+            Algorithm::AES128_GCM =&gt; <span class="kw-2">&amp;</span>aead::quic::AES_128,
+            Algorithm::AES256_GCM =&gt; <span class="kw-2">&amp;</span>aead::quic::AES_256,
+            Algorithm::ChaCha20_Poly1305 =&gt; <span class="kw-2">&amp;</span>aead::quic::CHACHA20,
+        }
+    }
+
+    <span class="kw">fn </span>get_ring_digest(<span class="self">self</span>) -&gt; hkdf::Algorithm {
+        <span class="kw">match </span><span class="self">self </span>{
+            Algorithm::AES128_GCM =&gt; hkdf::HKDF_SHA256,
+            Algorithm::AES256_GCM =&gt; hkdf::HKDF_SHA384,
+            Algorithm::ChaCha20_Poly1305 =&gt; hkdf::HKDF_SHA256,
+        }
+    }
+
+    <span class="kw">pub fn </span>key_len(<span class="self">self</span>) -&gt; usize {
+        <span class="kw">match </span><span class="self">self </span>{
+            Algorithm::AES128_GCM =&gt; <span class="number">16</span>,
+            Algorithm::AES256_GCM =&gt; <span class="number">32</span>,
+            Algorithm::ChaCha20_Poly1305 =&gt; <span class="number">32</span>,
+        }
+    }
+
+    <span class="kw">pub fn </span>tag_len(<span class="self">self</span>) -&gt; usize {
+        <span class="kw">if </span><span class="macro">cfg!</span>(feature = <span class="string">"fuzzing"</span>) {
+            <span class="kw">return </span><span class="number">0</span>;
+        }
+
+        <span class="kw">match </span><span class="self">self </span>{
+            Algorithm::AES128_GCM =&gt; <span class="number">16</span>,
+            Algorithm::AES256_GCM =&gt; <span class="number">16</span>,
+            Algorithm::ChaCha20_Poly1305 =&gt; <span class="number">16</span>,
+        }
+    }
+
+    <span class="kw">pub fn </span>nonce_len(<span class="self">self</span>) -&gt; usize {
+        <span class="kw">match </span><span class="self">self </span>{
+            Algorithm::AES128_GCM =&gt; <span class="number">12</span>,
+            Algorithm::AES256_GCM =&gt; <span class="number">12</span>,
+            Algorithm::ChaCha20_Poly1305 =&gt; <span class="number">12</span>,
+        }
+    }
+}
+
+<span class="attr">#[allow(non_camel_case_types)]
+#[repr(transparent)]
+</span><span class="kw">pub struct </span>EVP_AEAD {
+    _unused: c_void,
+}
+
+<span class="kw">pub struct </span>Open {
+    alg: Algorithm,
+
+    secret: Vec&lt;u8&gt;,
+
+    header: HeaderProtectionKey,
+
+    packet: PacketKey,
+}
+
+<span class="kw">impl </span>Open {
+    <span class="comment">// Note: some vendor-specific methods are implemented by each vendor's
+    // submodule (openssl-quictls / boringssl).
+    </span><span class="kw">pub const </span>DECRYPT: u32 = <span class="number">0</span>;
+
+    <span class="kw">pub fn </span>new(
+        alg: Algorithm, key: Vec&lt;u8&gt;, iv: Vec&lt;u8&gt;, hp_key: Vec&lt;u8&gt;,
+        secret: Vec&lt;u8&gt;,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;Open&gt; {
+        <span class="prelude-val">Ok</span>(Open {
+            alg,
+
+            header: HeaderProtectionKey::new(alg, hp_key)<span class="question-mark">?</span>,
+
+            packet: PacketKey::new(alg, key, iv, <span class="self">Self</span>::DECRYPT)<span class="question-mark">?</span>,
+
+            secret,
+        })
+    }
+
+    <span class="kw">pub fn </span>from_secret(aead: Algorithm, secret: Vec&lt;u8&gt;) -&gt; <span class="prelude-ty">Result</span>&lt;Open&gt; {
+        <span class="prelude-val">Ok</span>(Open {
+            alg: aead,
+
+            header: HeaderProtectionKey::from_secret(aead, <span class="kw-2">&amp;</span>secret)<span class="question-mark">?</span>,
+
+            packet: PacketKey::from_secret(aead, <span class="kw-2">&amp;</span>secret, <span class="self">Self</span>::DECRYPT)<span class="question-mark">?</span>,
+
+            secret,
+        })
+    }
+
+    <span class="kw">pub fn </span>new_mask(<span class="kw-2">&amp;</span><span class="self">self</span>, sample: <span class="kw-2">&amp;</span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;[u8; <span class="number">5</span>]&gt; {
+        <span class="kw">if </span><span class="macro">cfg!</span>(feature = <span class="string">"fuzzing"</span>) {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(&lt;[u8; <span class="number">5</span>]&gt;::default());
+        }
+
+        <span class="kw">let </span>mask = <span class="self">self
+            </span>.header
+            .hpk
+            .new_mask(sample)
+            .map_err(|<span class="kw">_</span>| Error::CryptoFail)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(mask)
+    }
+
+    <span class="kw">pub fn </span>alg(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; Algorithm {
+        <span class="self">self</span>.alg
+    }
+
+    <span class="kw">pub fn </span>derive_next_packet_key(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;Open&gt; {
+        <span class="kw">let </span>next_secret = derive_next_secret(<span class="self">self</span>.alg, <span class="kw-2">&amp;</span><span class="self">self</span>.secret)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>next_packet_key =
+            PacketKey::from_secret(<span class="self">self</span>.alg, <span class="kw-2">&amp;</span>next_secret, <span class="self">Self</span>::DECRYPT)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(Open {
+            alg: <span class="self">self</span>.alg,
+
+            secret: next_secret,
+
+            header: HeaderProtectionKey::new(
+                <span class="self">self</span>.alg,
+                <span class="self">self</span>.header.hp_key.clone(),
+            )<span class="question-mark">?</span>,
+
+            packet: next_packet_key,
+        })
+    }
+}
+
+<span class="kw">pub struct </span>Seal {
+    alg: Algorithm,
+
+    secret: Vec&lt;u8&gt;,
+
+    header: HeaderProtectionKey,
+
+    packet: PacketKey,
+}
+
+<span class="kw">impl </span>Seal {
+    <span class="comment">// Note: some vendor-specific methods are implemented by each vendor's
+    // submodule (openssl-quictls / boringssl).
+    </span><span class="kw">const </span>ENCRYPT: u32 = <span class="number">1</span>;
+
+    <span class="kw">pub fn </span>new(
+        alg: Algorithm, key: Vec&lt;u8&gt;, iv: Vec&lt;u8&gt;, hp_key: Vec&lt;u8&gt;,
+        secret: Vec&lt;u8&gt;,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;Seal&gt; {
+        <span class="prelude-val">Ok</span>(Seal {
+            alg,
+
+            header: HeaderProtectionKey::new(alg, hp_key)<span class="question-mark">?</span>,
+
+            packet: PacketKey::new(alg, key, iv, <span class="self">Self</span>::ENCRYPT)<span class="question-mark">?</span>,
+
+            secret,
+        })
+    }
+
+    <span class="kw">pub fn </span>from_secret(aead: Algorithm, secret: Vec&lt;u8&gt;) -&gt; <span class="prelude-ty">Result</span>&lt;Seal&gt; {
+        <span class="prelude-val">Ok</span>(Seal {
+            alg: aead,
+
+            header: HeaderProtectionKey::from_secret(aead, <span class="kw-2">&amp;</span>secret)<span class="question-mark">?</span>,
+
+            packet: PacketKey::from_secret(aead, <span class="kw-2">&amp;</span>secret, <span class="self">Self</span>::ENCRYPT)<span class="question-mark">?</span>,
+
+            secret,
+        })
+    }
+
+    <span class="kw">pub fn </span>new_mask(<span class="kw-2">&amp;</span><span class="self">self</span>, sample: <span class="kw-2">&amp;</span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;[u8; <span class="number">5</span>]&gt; {
+        <span class="kw">if </span><span class="macro">cfg!</span>(feature = <span class="string">"fuzzing"</span>) {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(&lt;[u8; <span class="number">5</span>]&gt;::default());
+        }
+
+        <span class="kw">let </span>mask = <span class="self">self
+            </span>.header
+            .hpk
+            .new_mask(sample)
+            .map_err(|<span class="kw">_</span>| Error::CryptoFail)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(mask)
+    }
+
+    <span class="kw">pub fn </span>alg(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; Algorithm {
+        <span class="self">self</span>.alg
+    }
+
+    <span class="kw">pub fn </span>derive_next_packet_key(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;Seal&gt; {
+        <span class="kw">let </span>next_secret = derive_next_secret(<span class="self">self</span>.alg, <span class="kw-2">&amp;</span><span class="self">self</span>.secret)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>next_packet_key =
+            PacketKey::from_secret(<span class="self">self</span>.alg, <span class="kw-2">&amp;</span>next_secret, <span class="self">Self</span>::ENCRYPT)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(Seal {
+            alg: <span class="self">self</span>.alg,
+
+            secret: next_secret,
+
+            header: HeaderProtectionKey::new(
+                <span class="self">self</span>.alg,
+                <span class="self">self</span>.header.hp_key.clone(),
+            )<span class="question-mark">?</span>,
+
+            packet: next_packet_key,
+        })
+    }
+}
+
+<span class="kw">pub struct </span>HeaderProtectionKey {
+    hpk: aead::quic::HeaderProtectionKey,
+
+    hp_key: Vec&lt;u8&gt;,
+}
+
+<span class="kw">impl </span>HeaderProtectionKey {
+    <span class="kw">pub fn </span>new(alg: Algorithm, hp_key: Vec&lt;u8&gt;) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="self">Self</span>&gt; {
+        aead::quic::HeaderProtectionKey::new(alg.get_ring_hp(), <span class="kw-2">&amp;</span>hp_key)
+            .map(|hpk| <span class="self">Self </span>{ hpk, hp_key })
+            .map_err(|<span class="kw">_</span>| Error::CryptoFail)
+    }
+
+    <span class="kw">pub fn </span>from_secret(aead: Algorithm, secret: <span class="kw-2">&amp;</span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="self">Self</span>&gt; {
+        <span class="kw">let </span>key_len = aead.key_len();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>hp_key = <span class="macro">vec!</span>[<span class="number">0</span>; key_len];
+
+        derive_hdr_key(aead, secret, <span class="kw-2">&amp;mut </span>hp_key)<span class="question-mark">?</span>;
+
+        <span class="self">Self</span>::new(aead, hp_key)
+    }
+}
+
+<span class="kw">pub fn </span>derive_initial_key_material(
+    cid: <span class="kw-2">&amp;</span>[u8], version: u32, is_server: bool,
+) -&gt; <span class="prelude-ty">Result</span>&lt;(Open, Seal)&gt; {
+    <span class="kw">let </span><span class="kw-2">mut </span>client_secret = [<span class="number">0</span>; <span class="number">32</span>];
+    <span class="kw">let </span><span class="kw-2">mut </span>server_secret = [<span class="number">0</span>; <span class="number">32</span>];
+
+    <span class="kw">let </span>aead = Algorithm::AES128_GCM;
+
+    <span class="kw">let </span>key_len = aead.key_len();
+    <span class="kw">let </span>nonce_len = aead.nonce_len();
+
+    <span class="kw">let </span>initial_secret = derive_initial_secret(cid, version);
+
+    <span class="comment">// Client.
+    </span><span class="kw">let </span><span class="kw-2">mut </span>client_key = <span class="macro">vec!</span>[<span class="number">0</span>; key_len];
+    <span class="kw">let </span><span class="kw-2">mut </span>client_iv = <span class="macro">vec!</span>[<span class="number">0</span>; nonce_len];
+    <span class="kw">let </span><span class="kw-2">mut </span>client_hp_key = <span class="macro">vec!</span>[<span class="number">0</span>; key_len];
+
+    derive_client_initial_secret(<span class="kw-2">&amp;</span>initial_secret, <span class="kw-2">&amp;mut </span>client_secret)<span class="question-mark">?</span>;
+    derive_pkt_key(aead, <span class="kw-2">&amp;</span>client_secret, <span class="kw-2">&amp;mut </span>client_key)<span class="question-mark">?</span>;
+    derive_pkt_iv(aead, <span class="kw-2">&amp;</span>client_secret, <span class="kw-2">&amp;mut </span>client_iv)<span class="question-mark">?</span>;
+    derive_hdr_key(aead, <span class="kw-2">&amp;</span>client_secret, <span class="kw-2">&amp;mut </span>client_hp_key)<span class="question-mark">?</span>;
+
+    <span class="comment">// Server.
+    </span><span class="kw">let </span><span class="kw-2">mut </span>server_key = <span class="macro">vec!</span>[<span class="number">0</span>; key_len];
+    <span class="kw">let </span><span class="kw-2">mut </span>server_iv = <span class="macro">vec!</span>[<span class="number">0</span>; nonce_len];
+    <span class="kw">let </span><span class="kw-2">mut </span>server_hp_key = <span class="macro">vec!</span>[<span class="number">0</span>; key_len];
+
+    derive_server_initial_secret(<span class="kw-2">&amp;</span>initial_secret, <span class="kw-2">&amp;mut </span>server_secret)<span class="question-mark">?</span>;
+    derive_pkt_key(aead, <span class="kw-2">&amp;</span>server_secret, <span class="kw-2">&amp;mut </span>server_key)<span class="question-mark">?</span>;
+    derive_pkt_iv(aead, <span class="kw-2">&amp;</span>server_secret, <span class="kw-2">&amp;mut </span>server_iv)<span class="question-mark">?</span>;
+    derive_hdr_key(aead, <span class="kw-2">&amp;</span>server_secret, <span class="kw-2">&amp;mut </span>server_hp_key)<span class="question-mark">?</span>;
+
+    <span class="kw">let </span>(open, seal) = <span class="kw">if </span>is_server {
+        (
+            Open::new(
+                aead,
+                client_key,
+                client_iv,
+                client_hp_key,
+                client_secret.to_vec(),
+            )<span class="question-mark">?</span>,
+            Seal::new(
+                aead,
+                server_key,
+                server_iv,
+                server_hp_key,
+                server_secret.to_vec(),
+            )<span class="question-mark">?</span>,
+        )
+    } <span class="kw">else </span>{
+        (
+            Open::new(
+                aead,
+                server_key,
+                server_iv,
+                server_hp_key,
+                server_secret.to_vec(),
+            )<span class="question-mark">?</span>,
+            Seal::new(
+                aead,
+                client_key,
+                client_iv,
+                client_hp_key,
+                client_secret.to_vec(),
+            )<span class="question-mark">?</span>,
+        )
+    };
+
+    <span class="prelude-val">Ok</span>((open, seal))
+}
+
+<span class="kw">fn </span>derive_initial_secret(secret: <span class="kw-2">&amp;</span>[u8], version: u32) -&gt; hkdf::Prk {
+    <span class="kw">const </span>INITIAL_SALT_V1: [u8; <span class="number">20</span>] = [
+        <span class="number">0x38</span>, <span class="number">0x76</span>, <span class="number">0x2c</span>, <span class="number">0xf7</span>, <span class="number">0xf5</span>, <span class="number">0x59</span>, <span class="number">0x34</span>, <span class="number">0xb3</span>, <span class="number">0x4d</span>, <span class="number">0x17</span>, <span class="number">0x9a</span>, <span class="number">0xe6</span>,
+        <span class="number">0xa4</span>, <span class="number">0xc8</span>, <span class="number">0x0c</span>, <span class="number">0xad</span>, <span class="number">0xcc</span>, <span class="number">0xbb</span>, <span class="number">0x7f</span>, <span class="number">0x0a</span>,
+    ];
+
+    <span class="kw">let </span>salt = <span class="kw">match </span>version {
+        <span class="kw">crate</span>::PROTOCOL_VERSION_V1 =&gt; <span class="kw-2">&amp;</span>INITIAL_SALT_V1,
+
+        <span class="kw">_ </span>=&gt; <span class="kw-2">&amp;</span>INITIAL_SALT_V1,
+    };
+
+    <span class="kw">let </span>salt = hkdf::Salt::new(hkdf::HKDF_SHA256, salt);
+    salt.extract(secret)
+}
+
+<span class="kw">fn </span>derive_client_initial_secret(prk: <span class="kw-2">&amp;</span>hkdf::Prk, out: <span class="kw-2">&amp;mut </span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+    <span class="kw">const </span>LABEL: <span class="kw-2">&amp;</span>[u8] = <span class="string">b"client in"</span>;
+    hkdf_expand_label(prk, LABEL, out)
+}
+
+<span class="kw">fn </span>derive_server_initial_secret(prk: <span class="kw-2">&amp;</span>hkdf::Prk, out: <span class="kw-2">&amp;mut </span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+    <span class="kw">const </span>LABEL: <span class="kw-2">&amp;</span>[u8] = <span class="string">b"server in"</span>;
+    hkdf_expand_label(prk, LABEL, out)
+}
+
+<span class="kw">fn </span>derive_next_secret(aead: Algorithm, secret: <span class="kw-2">&amp;</span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;Vec&lt;u8&gt;&gt; {
+    <span class="kw">const </span>LABEL: <span class="kw-2">&amp;</span>[u8] = <span class="string">b"quic ku"</span>;
+
+    <span class="kw">let </span><span class="kw-2">mut </span>next_secret = <span class="macro">vec!</span>[<span class="number">0</span>; secret.len()];
+
+    <span class="kw">let </span>secret_prk = hkdf::Prk::new_less_safe(aead.get_ring_digest(), secret);
+    hkdf_expand_label(<span class="kw-2">&amp;</span>secret_prk, LABEL, <span class="kw-2">&amp;mut </span>next_secret)<span class="question-mark">?</span>;
+
+    <span class="prelude-val">Ok</span>(next_secret)
+}
+
+<span class="kw">pub fn </span>derive_hdr_key(
+    aead: Algorithm, secret: <span class="kw-2">&amp;</span>[u8], out: <span class="kw-2">&amp;mut </span>[u8],
+) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+    <span class="kw">const </span>LABEL: <span class="kw-2">&amp;</span>[u8] = <span class="string">b"quic hp"</span>;
+
+    <span class="kw">let </span>key_len = aead.key_len();
+
+    <span class="kw">if </span>key_len &gt; out.len() {
+        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::CryptoFail);
+    }
+
+    <span class="kw">let </span>secret = hkdf::Prk::new_less_safe(aead.get_ring_digest(), secret);
+    hkdf_expand_label(<span class="kw-2">&amp;</span>secret, LABEL, <span class="kw-2">&amp;mut </span>out[..key_len])
+}
+
+<span class="kw">pub fn </span>derive_pkt_key(
+    aead: Algorithm, secret: <span class="kw-2">&amp;</span>[u8], out: <span class="kw-2">&amp;mut </span>[u8],
+) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+    <span class="kw">const </span>LABEL: <span class="kw-2">&amp;</span>[u8] = <span class="string">b"quic key"</span>;
+
+    <span class="kw">let </span>key_len: usize = aead.key_len();
+
+    <span class="kw">if </span>key_len &gt; out.len() {
+        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::CryptoFail);
+    }
+
+    <span class="kw">let </span>secret = hkdf::Prk::new_less_safe(aead.get_ring_digest(), secret);
+    hkdf_expand_label(<span class="kw-2">&amp;</span>secret, LABEL, <span class="kw-2">&amp;mut </span>out[..key_len])
+}
+
+<span class="kw">pub fn </span>derive_pkt_iv(
+    aead: Algorithm, secret: <span class="kw-2">&amp;</span>[u8], out: <span class="kw-2">&amp;mut </span>[u8],
+) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+    <span class="kw">const </span>LABEL: <span class="kw-2">&amp;</span>[u8] = <span class="string">b"quic iv"</span>;
+
+    <span class="kw">let </span>nonce_len = aead.nonce_len();
+
+    <span class="kw">if </span>nonce_len &gt; out.len() {
+        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::CryptoFail);
+    }
+
+    <span class="kw">let </span>secret = hkdf::Prk::new_less_safe(aead.get_ring_digest(), secret);
+    hkdf_expand_label(<span class="kw-2">&amp;</span>secret, LABEL, <span class="kw-2">&amp;mut </span>out[..nonce_len])
+}
+
+<span class="kw">fn </span>hkdf_expand_label(
+    prk: <span class="kw-2">&amp;</span>hkdf::Prk, label: <span class="kw-2">&amp;</span>[u8], out: <span class="kw-2">&amp;mut </span>[u8],
+) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+    <span class="kw">const </span>LABEL_PREFIX: <span class="kw-2">&amp;</span>[u8] = <span class="string">b"tls13 "</span>;
+
+    <span class="kw">let </span>out_len = (out.len() <span class="kw">as </span>u16).to_be_bytes();
+    <span class="kw">let </span>label_len = (LABEL_PREFIX.len() + label.len()) <span class="kw">as </span>u8;
+
+    <span class="kw">let </span>info = [<span class="kw-2">&amp;</span>out_len, <span class="kw-2">&amp;</span>[label_len][..], LABEL_PREFIX, label, <span class="kw-2">&amp;</span>[<span class="number">0</span>][..]];
+
+    prk.expand(<span class="kw-2">&amp;</span>info, ArbitraryOutputLen(out.len()))
+        .map_err(|<span class="kw">_</span>| Error::CryptoFail)<span class="question-mark">?
+        </span>.fill(out)
+        .map_err(|<span class="kw">_</span>| Error::CryptoFail)<span class="question-mark">?</span>;
+
+    <span class="prelude-val">Ok</span>(())
+}
+
+<span class="kw">fn </span>make_nonce(iv: <span class="kw-2">&amp;</span>[u8], counter: u64) -&gt; [u8; aead::NONCE_LEN] {
+    <span class="kw">let </span><span class="kw-2">mut </span>nonce = [<span class="number">0</span>; aead::NONCE_LEN];
+    nonce.copy_from_slice(iv);
+
+    <span class="comment">// XOR the last bytes of the IV with the counter. This is equivalent to
+    // left-padding the counter with zero bytes.
+    </span><span class="kw">for </span>(a, b) <span class="kw">in </span>nonce[<span class="number">4</span>..].iter_mut().zip(counter.to_be_bytes().iter()) {
+        <span class="kw-2">*</span>a ^= b;
+    }
+
+    nonce
+}
+
+<span class="comment">// The ring HKDF expand() API does not accept an arbitrary output length, so we
+// need to hide the `usize` length as part of a type that implements the trait
+// `ring::hkdf::KeyType` in order to trick ring into accepting it.
+</span><span class="kw">struct </span>ArbitraryOutputLen(usize);
+
+<span class="kw">impl </span>hkdf::KeyType <span class="kw">for </span>ArbitraryOutputLen {
+    <span class="kw">fn </span>len(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.<span class="number">0
+    </span>}
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>derive_initial_secrets_v1() {
+        <span class="kw">let </span>dcid = [<span class="number">0x83</span>, <span class="number">0x94</span>, <span class="number">0xc8</span>, <span class="number">0xf0</span>, <span class="number">0x3e</span>, <span class="number">0x51</span>, <span class="number">0x57</span>, <span class="number">0x08</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>secret = [<span class="number">0</span>; <span class="number">32</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>pkt_key = [<span class="number">0</span>; <span class="number">16</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>pkt_iv = [<span class="number">0</span>; <span class="number">12</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>hdr_key = [<span class="number">0</span>; <span class="number">16</span>];
+
+        <span class="kw">let </span>aead = Algorithm::AES128_GCM;
+
+        <span class="kw">let </span>initial_secret =
+            derive_initial_secret(<span class="kw-2">&amp;</span>dcid, <span class="kw">crate</span>::PROTOCOL_VERSION_V1);
+
+        <span class="comment">// Client.
+        </span><span class="macro">assert!</span>(
+            derive_client_initial_secret(<span class="kw-2">&amp;</span>initial_secret, <span class="kw-2">&amp;mut </span>secret).is_ok()
+        );
+        <span class="kw">let </span>expected_client_initial_secret = [
+            <span class="number">0xc0</span>, <span class="number">0x0c</span>, <span class="number">0xf1</span>, <span class="number">0x51</span>, <span class="number">0xca</span>, <span class="number">0x5b</span>, <span class="number">0xe0</span>, <span class="number">0x75</span>, <span class="number">0xed</span>, <span class="number">0x0e</span>, <span class="number">0xbf</span>,
+            <span class="number">0xb5</span>, <span class="number">0xc8</span>, <span class="number">0x03</span>, <span class="number">0x23</span>, <span class="number">0xc4</span>, <span class="number">0x2d</span>, <span class="number">0x6b</span>, <span class="number">0x7d</span>, <span class="number">0xb6</span>, <span class="number">0x78</span>, <span class="number">0x81</span>,
+            <span class="number">0x28</span>, <span class="number">0x9a</span>, <span class="number">0xf4</span>, <span class="number">0x00</span>, <span class="number">0x8f</span>, <span class="number">0x1f</span>, <span class="number">0x6c</span>, <span class="number">0x35</span>, <span class="number">0x7a</span>, <span class="number">0xea</span>,
+        ];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>secret, <span class="kw-2">&amp;</span>expected_client_initial_secret);
+
+        <span class="macro">assert!</span>(derive_pkt_key(aead, <span class="kw-2">&amp;</span>secret, <span class="kw-2">&amp;mut </span>pkt_key).is_ok());
+        <span class="kw">let </span>expected_client_pkt_key = [
+            <span class="number">0x1f</span>, <span class="number">0x36</span>, <span class="number">0x96</span>, <span class="number">0x13</span>, <span class="number">0xdd</span>, <span class="number">0x76</span>, <span class="number">0xd5</span>, <span class="number">0x46</span>, <span class="number">0x77</span>, <span class="number">0x30</span>, <span class="number">0xef</span>,
+            <span class="number">0xcb</span>, <span class="number">0xe3</span>, <span class="number">0xb1</span>, <span class="number">0xa2</span>, <span class="number">0x2d</span>,
+        ];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>pkt_key, <span class="kw-2">&amp;</span>expected_client_pkt_key);
+
+        <span class="macro">assert!</span>(derive_pkt_iv(aead, <span class="kw-2">&amp;</span>secret, <span class="kw-2">&amp;mut </span>pkt_iv).is_ok());
+        <span class="kw">let </span>expected_client_pkt_iv = [
+            <span class="number">0xfa</span>, <span class="number">0x04</span>, <span class="number">0x4b</span>, <span class="number">0x2f</span>, <span class="number">0x42</span>, <span class="number">0xa3</span>, <span class="number">0xfd</span>, <span class="number">0x3b</span>, <span class="number">0x46</span>, <span class="number">0xfb</span>, <span class="number">0x25</span>,
+            <span class="number">0x5c</span>,
+        ];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>pkt_iv, <span class="kw-2">&amp;</span>expected_client_pkt_iv);
+
+        <span class="macro">assert!</span>(derive_hdr_key(aead, <span class="kw-2">&amp;</span>secret, <span class="kw-2">&amp;mut </span>hdr_key).is_ok());
+        <span class="kw">let </span>expected_client_hdr_key = [
+            <span class="number">0x9f</span>, <span class="number">0x50</span>, <span class="number">0x44</span>, <span class="number">0x9e</span>, <span class="number">0x04</span>, <span class="number">0xa0</span>, <span class="number">0xe8</span>, <span class="number">0x10</span>, <span class="number">0x28</span>, <span class="number">0x3a</span>, <span class="number">0x1e</span>,
+            <span class="number">0x99</span>, <span class="number">0x33</span>, <span class="number">0xad</span>, <span class="number">0xed</span>, <span class="number">0xd2</span>,
+        ];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>hdr_key, <span class="kw-2">&amp;</span>expected_client_hdr_key);
+
+        <span class="comment">// Server.
+        </span><span class="macro">assert!</span>(
+            derive_server_initial_secret(<span class="kw-2">&amp;</span>initial_secret, <span class="kw-2">&amp;mut </span>secret).is_ok()
+        );
+        <span class="kw">let </span>expected_server_initial_secret = [
+            <span class="number">0x3c</span>, <span class="number">0x19</span>, <span class="number">0x98</span>, <span class="number">0x28</span>, <span class="number">0xfd</span>, <span class="number">0x13</span>, <span class="number">0x9e</span>, <span class="number">0xfd</span>, <span class="number">0x21</span>, <span class="number">0x6c</span>, <span class="number">0x15</span>,
+            <span class="number">0x5a</span>, <span class="number">0xd8</span>, <span class="number">0x44</span>, <span class="number">0xcc</span>, <span class="number">0x81</span>, <span class="number">0xfb</span>, <span class="number">0x82</span>, <span class="number">0xfa</span>, <span class="number">0x8d</span>, <span class="number">0x74</span>, <span class="number">0x46</span>,
+            <span class="number">0xfa</span>, <span class="number">0x7d</span>, <span class="number">0x78</span>, <span class="number">0xbe</span>, <span class="number">0x80</span>, <span class="number">0x3a</span>, <span class="number">0xcd</span>, <span class="number">0xda</span>, <span class="number">0x95</span>, <span class="number">0x1b</span>,
+        ];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>secret, <span class="kw-2">&amp;</span>expected_server_initial_secret);
+
+        <span class="macro">assert!</span>(derive_pkt_key(aead, <span class="kw-2">&amp;</span>secret, <span class="kw-2">&amp;mut </span>pkt_key).is_ok());
+        <span class="kw">let </span>expected_server_pkt_key = [
+            <span class="number">0xcf</span>, <span class="number">0x3a</span>, <span class="number">0x53</span>, <span class="number">0x31</span>, <span class="number">0x65</span>, <span class="number">0x3c</span>, <span class="number">0x36</span>, <span class="number">0x4c</span>, <span class="number">0x88</span>, <span class="number">0xf0</span>, <span class="number">0xf3</span>,
+            <span class="number">0x79</span>, <span class="number">0xb6</span>, <span class="number">0x06</span>, <span class="number">0x7e</span>, <span class="number">0x37</span>,
+        ];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>pkt_key, <span class="kw-2">&amp;</span>expected_server_pkt_key);
+
+        <span class="macro">assert!</span>(derive_pkt_iv(aead, <span class="kw-2">&amp;</span>secret, <span class="kw-2">&amp;mut </span>pkt_iv).is_ok());
+        <span class="kw">let </span>expected_server_pkt_iv = [
+            <span class="number">0x0a</span>, <span class="number">0xc1</span>, <span class="number">0x49</span>, <span class="number">0x3c</span>, <span class="number">0xa1</span>, <span class="number">0x90</span>, <span class="number">0x58</span>, <span class="number">0x53</span>, <span class="number">0xb0</span>, <span class="number">0xbb</span>, <span class="number">0xa0</span>,
+            <span class="number">0x3e</span>,
+        ];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>pkt_iv, <span class="kw-2">&amp;</span>expected_server_pkt_iv);
+
+        <span class="macro">assert!</span>(derive_hdr_key(aead, <span class="kw-2">&amp;</span>secret, <span class="kw-2">&amp;mut </span>hdr_key).is_ok());
+        <span class="kw">let </span>expected_server_hdr_key = [
+            <span class="number">0xc2</span>, <span class="number">0x06</span>, <span class="number">0xb8</span>, <span class="number">0xd9</span>, <span class="number">0xb9</span>, <span class="number">0xf0</span>, <span class="number">0xf3</span>, <span class="number">0x76</span>, <span class="number">0x44</span>, <span class="number">0x43</span>, <span class="number">0x0b</span>,
+            <span class="number">0x49</span>, <span class="number">0x0e</span>, <span class="number">0xea</span>, <span class="number">0xa3</span>, <span class="number">0x14</span>,
+        ];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>hdr_key, <span class="kw-2">&amp;</span>expected_server_hdr_key);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>derive_chacha20_secrets() {
+        <span class="kw">let </span>secret = [
+            <span class="number">0x9a</span>, <span class="number">0xc3</span>, <span class="number">0x12</span>, <span class="number">0xa7</span>, <span class="number">0xf8</span>, <span class="number">0x77</span>, <span class="number">0x46</span>, <span class="number">0x8e</span>, <span class="number">0xbe</span>, <span class="number">0x69</span>, <span class="number">0x42</span>,
+            <span class="number">0x27</span>, <span class="number">0x48</span>, <span class="number">0xad</span>, <span class="number">0x00</span>, <span class="number">0xa1</span>, <span class="number">0x54</span>, <span class="number">0x43</span>, <span class="number">0xf1</span>, <span class="number">0x82</span>, <span class="number">0x03</span>, <span class="number">0xa0</span>,
+            <span class="number">0x7d</span>, <span class="number">0x60</span>, <span class="number">0x60</span>, <span class="number">0xf6</span>, <span class="number">0x88</span>, <span class="number">0xf3</span>, <span class="number">0x0f</span>, <span class="number">0x21</span>, <span class="number">0x63</span>, <span class="number">0x2b</span>,
+        ];
+
+        <span class="kw">let </span>aead = Algorithm::ChaCha20_Poly1305;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pkt_key = [<span class="number">0</span>; <span class="number">32</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>pkt_iv = [<span class="number">0</span>; <span class="number">12</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>hdr_key = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="macro">assert!</span>(derive_pkt_key(aead, <span class="kw-2">&amp;</span>secret, <span class="kw-2">&amp;mut </span>pkt_key).is_ok());
+        <span class="kw">let </span>expected_pkt_key = [
+            <span class="number">0xc6</span>, <span class="number">0xd9</span>, <span class="number">0x8f</span>, <span class="number">0xf3</span>, <span class="number">0x44</span>, <span class="number">0x1c</span>, <span class="number">0x3f</span>, <span class="number">0xe1</span>, <span class="number">0xb2</span>, <span class="number">0x18</span>, <span class="number">0x20</span>,
+            <span class="number">0x94</span>, <span class="number">0xf6</span>, <span class="number">0x9c</span>, <span class="number">0xaa</span>, <span class="number">0x2e</span>, <span class="number">0xd4</span>, <span class="number">0xb7</span>, <span class="number">0x16</span>, <span class="number">0xb6</span>, <span class="number">0x54</span>, <span class="number">0x88</span>,
+            <span class="number">0x96</span>, <span class="number">0x0a</span>, <span class="number">0x7a</span>, <span class="number">0x98</span>, <span class="number">0x49</span>, <span class="number">0x79</span>, <span class="number">0xfb</span>, <span class="number">0x23</span>, <span class="number">0xe1</span>, <span class="number">0xc8</span>,
+        ];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>pkt_key, <span class="kw-2">&amp;</span>expected_pkt_key);
+
+        <span class="macro">assert!</span>(derive_pkt_iv(aead, <span class="kw-2">&amp;</span>secret, <span class="kw-2">&amp;mut </span>pkt_iv).is_ok());
+        <span class="kw">let </span>expected_pkt_iv = [
+            <span class="number">0xe0</span>, <span class="number">0x45</span>, <span class="number">0x9b</span>, <span class="number">0x34</span>, <span class="number">0x74</span>, <span class="number">0xbd</span>, <span class="number">0xd0</span>, <span class="number">0xe4</span>, <span class="number">0x4a</span>, <span class="number">0x41</span>, <span class="number">0xc1</span>,
+            <span class="number">0x44</span>,
+        ];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>pkt_iv, <span class="kw-2">&amp;</span>expected_pkt_iv);
+
+        <span class="macro">assert!</span>(derive_hdr_key(aead, <span class="kw-2">&amp;</span>secret, <span class="kw-2">&amp;mut </span>hdr_key).is_ok());
+        <span class="kw">let </span>expected_hdr_key = [
+            <span class="number">0x25</span>, <span class="number">0xa2</span>, <span class="number">0x82</span>, <span class="number">0xb9</span>, <span class="number">0xe8</span>, <span class="number">0x2f</span>, <span class="number">0x06</span>, <span class="number">0xf2</span>, <span class="number">0x1f</span>, <span class="number">0x48</span>, <span class="number">0x89</span>,
+            <span class="number">0x17</span>, <span class="number">0xa4</span>, <span class="number">0xfc</span>, <span class="number">0x8f</span>, <span class="number">0x1b</span>, <span class="number">0x73</span>, <span class="number">0x57</span>, <span class="number">0x36</span>, <span class="number">0x85</span>, <span class="number">0x60</span>, <span class="number">0x85</span>,
+            <span class="number">0x97</span>, <span class="number">0xd0</span>, <span class="number">0xef</span>, <span class="number">0xcb</span>, <span class="number">0x07</span>, <span class="number">0x6b</span>, <span class="number">0x0a</span>, <span class="number">0xb7</span>, <span class="number">0xa7</span>, <span class="number">0xa4</span>,
+        ];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>hdr_key, <span class="kw-2">&amp;</span>expected_hdr_key);
+    }
+}
+
+<span class="attr">#[cfg(not(feature = <span class="string">"openssl"</span>))]
+</span><span class="kw">mod </span>boringssl;
+<span class="attr">#[cfg(not(feature = <span class="string">"openssl"</span>))]
+</span><span class="kw">use </span>boringssl::<span class="kw-2">*</span>;
+
+<span class="attr">#[cfg(feature = <span class="string">"openssl"</span>)]
+</span><span class="kw">mod </span>openssl_quictls;
+<span class="attr">#[cfg(feature = <span class="string">"openssl"</span>)]
+</span><span class="kw">use </span>openssl_quictls::<span class="kw-2">*</span>;
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/crypto/openssl_quictls.rs.html b/src/quiche/crypto/openssl_quictls.rs.html
new file mode 100644
index 0000000..1991617
--- /dev/null
+++ b/src/quiche/crypto/openssl_quictls.rs.html
@@ -0,0 +1,725 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/crypto/openssl_quictls.rs`."><title>openssl_quictls.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+</pre></div><pre class="rust"><code><span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+<span class="kw">use </span>libc::c_int;
+<span class="kw">use </span>libc::c_uchar;
+
+<span class="attr">#[allow(non_camel_case_types)]
+#[repr(transparent)]
+</span><span class="kw">struct </span>EVP_CIPHER_CTX {
+    _unused: <span class="kw-2">*mut </span>EVP_CIPHER_CTX,
+}
+<span class="attr">#[allow(non_camel_case_types)]
+#[repr(transparent)]
+</span><span class="kw">struct </span>OSSL_PARAM {
+    _unused: c_void,
+}
+
+<span class="kw">impl </span>Drop <span class="kw">for </span>EVP_CIPHER_CTX {
+    <span class="kw">fn </span>drop(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="kw">unsafe </span>{ EVP_CIPHER_CTX_free(<span class="self">self</span>) }
+    }
+}
+
+<span class="kw">impl </span>Algorithm {
+    <span class="kw">pub fn </span>get_evp_aead(<span class="self">self</span>) -&gt; <span class="kw-2">*const </span>EVP_AEAD {
+        <span class="kw">match </span><span class="self">self </span>{
+            Algorithm::AES128_GCM =&gt; <span class="kw">unsafe </span>{ EVP_aes_128_gcm() },
+            Algorithm::AES256_GCM =&gt; <span class="kw">unsafe </span>{ EVP_aes_256_gcm() },
+            Algorithm::ChaCha20_Poly1305 =&gt; <span class="kw">unsafe </span>{ EVP_chacha20_poly1305() },
+        }
+    }
+}
+
+<span class="kw">impl </span>Open {
+    <span class="kw">pub fn </span>open_with_u64_counter(
+        <span class="kw-2">&amp;</span><span class="self">self</span>, counter: u64, ad: <span class="kw-2">&amp;</span>[u8], buf: <span class="kw-2">&amp;mut </span>[u8],
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="kw">if </span><span class="macro">cfg!</span>(feature = <span class="string">"fuzzing"</span>) {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(buf.len());
+        }
+
+        <span class="kw">let </span>in_buf = buf.to_owned(); <span class="comment">// very inefficient
+        </span><span class="kw">let </span>tag_len = <span class="self">self</span>.alg().tag_len();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>cipher_len = buf.len();
+
+        <span class="kw">let </span>nonce = make_nonce(<span class="kw-2">&amp;</span><span class="self">self</span>.packet.nonce, counter);
+
+        <span class="comment">// Set the IV len.
+        </span><span class="kw">const </span>EVP_CTRL_AEAD_SET_IVLEN: i32 = <span class="number">0x9</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>rc = <span class="kw">unsafe </span>{
+            EVP_CIPHER_CTX_ctrl(
+                <span class="self">self</span>.packet.ctx,
+                EVP_CTRL_AEAD_SET_IVLEN,
+                nonce.len() <span class="kw">as </span>i32,
+                std::ptr::null_mut(),
+            )
+        };
+        <span class="kw">if </span>rc != <span class="number">1 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::CryptoFail);
+        }
+
+        rc = <span class="kw">unsafe </span>{
+            EVP_CipherInit_ex2(
+                <span class="self">self</span>.packet.ctx,
+                std::ptr::null_mut(), <span class="comment">// already set
+                </span><span class="self">self</span>.packet.key.as_ptr(),
+                nonce[..].as_ptr(),
+                <span class="self">Self</span>::DECRYPT <span class="kw">as </span>i32,
+                std::ptr::null(),
+            )
+        };
+
+        <span class="kw">if </span>rc != <span class="number">1 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::CryptoFail);
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>olen: i32 = <span class="number">0</span>;
+
+        <span class="kw">if </span>!ad.is_empty() {
+            rc = <span class="kw">unsafe </span>{
+                EVP_CipherUpdate(
+                    <span class="self">self</span>.packet.ctx,
+                    std::ptr::null_mut(),
+                    <span class="kw-2">&amp;mut </span>olen,
+                    ad.as_ptr(),
+                    ad.len() <span class="kw">as </span>i32,
+                )
+            };
+
+            <span class="kw">if </span>rc != <span class="number">1 </span>{
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::CryptoFail);
+            }
+        }
+
+        <span class="kw">if </span>cipher_len &lt; tag_len {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::CryptoFail);
+        }
+
+        cipher_len -= tag_len;
+
+        rc = <span class="kw">unsafe </span>{
+            EVP_CipherUpdate(
+                <span class="self">self</span>.packet.ctx,
+                buf.as_mut_ptr(),
+                <span class="kw-2">&amp;mut </span>olen,
+                in_buf.as_ptr(),
+                cipher_len <span class="kw">as </span>i32,
+            )
+        };
+
+        <span class="kw">if </span>rc != <span class="number">1 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::CryptoFail);
+        }
+
+        <span class="kw">let </span>plaintext_len = olen <span class="kw">as </span>usize;
+
+        <span class="kw">const </span>EVP_CTRL_AEAD_SET_TAG: i32 = <span class="number">0x11</span>;
+        rc = <span class="kw">unsafe </span>{
+            EVP_CIPHER_CTX_ctrl(
+                <span class="self">self</span>.packet.ctx,
+                EVP_CTRL_AEAD_SET_TAG,
+                tag_len <span class="kw">as </span>i32,
+                buf[cipher_len..].as_mut_ptr() <span class="kw">as </span><span class="kw-2">*mut </span>c_void,
+            )
+        };
+
+        <span class="kw">if </span>rc != <span class="number">1 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::CryptoFail);
+        }
+
+        rc = <span class="kw">unsafe </span>{
+            EVP_CipherFinal_ex(
+                <span class="self">self</span>.packet.ctx,
+                buf[plaintext_len..].as_mut_ptr(),
+                <span class="kw-2">&amp;mut </span>olen,
+            )
+        };
+
+        <span class="kw">if </span>rc != <span class="number">1 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::CryptoFail);
+        }
+
+        <span class="prelude-val">Ok</span>(plaintext_len + olen <span class="kw">as </span>usize)
+    }
+}
+
+<span class="kw">impl </span>Seal {
+    <span class="kw">pub fn </span>seal_with_u64_counter(
+        <span class="kw-2">&amp;</span><span class="self">self</span>, counter: u64, ad: <span class="kw-2">&amp;</span>[u8], buf: <span class="kw-2">&amp;mut </span>[u8], in_len: usize,
+        extra_in: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>[u8]&gt;,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="kw">if </span><span class="macro">cfg!</span>(feature = <span class="string">"fuzzing"</span>) {
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(extra) = extra_in {
+                buf[in_len..in_len + extra.len()].copy_from_slice(extra);
+                <span class="kw">return </span><span class="prelude-val">Ok</span>(in_len + extra.len());
+            }
+
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(in_len);
+        }
+        <span class="comment">// very inefficient
+        </span><span class="kw">let </span>in_buf = buf.to_owned();
+
+        <span class="kw">let </span>nonce = make_nonce(<span class="kw-2">&amp;</span><span class="self">self</span>.packet.nonce, counter);
+
+        <span class="comment">// Set the IV len.
+        </span><span class="kw">const </span>EVP_CTRL_AEAD_SET_IVLEN: i32 = <span class="number">0x9</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>rc = <span class="kw">unsafe </span>{
+            EVP_CIPHER_CTX_ctrl(
+                <span class="self">self</span>.packet.ctx,
+                EVP_CTRL_AEAD_SET_IVLEN,
+                nonce.len() <span class="kw">as </span>i32,
+                std::ptr::null_mut(),
+            )
+        };
+
+        <span class="kw">if </span>rc != <span class="number">1 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::CryptoFail);
+        }
+
+        rc = <span class="kw">unsafe </span>{
+            EVP_CipherInit_ex2(
+                <span class="self">self</span>.packet.ctx,
+                std::ptr::null_mut(), <span class="comment">// already set
+                </span><span class="self">self</span>.packet.key.as_ptr(),
+                nonce[..].as_ptr(),
+                <span class="self">Self</span>::ENCRYPT <span class="kw">as </span>i32,
+                std::ptr::null(),
+            )
+        };
+        <span class="kw">if </span>rc != <span class="number">1 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::CryptoFail);
+        }
+
+        <span class="kw">let </span>tag_len = <span class="self">self</span>.alg().tag_len();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>olen: i32 = <span class="number">0</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>rc;
+
+        <span class="kw">if </span>!ad.is_empty() {
+            rc = <span class="kw">unsafe </span>{
+                EVP_CipherUpdate(
+                    <span class="self">self</span>.packet.ctx,
+                    std::ptr::null_mut(),
+                    <span class="kw-2">&amp;mut </span>olen,
+                    ad.as_ptr(),
+                    ad.len() <span class="kw">as </span>i32,
+                )
+            };
+
+            <span class="kw">if </span>rc != <span class="number">1 </span>{
+                <span class="comment">// We had AD but we couldn't set it.
+                </span><span class="kw">return </span><span class="prelude-val">Err</span>(Error::CryptoFail);
+            }
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>ciphertext_len: usize = <span class="number">0</span>;
+
+        rc = <span class="kw">unsafe </span>{
+            EVP_CipherUpdate(
+                <span class="self">self</span>.packet.ctx,
+                buf.as_mut_ptr(),
+                <span class="kw-2">&amp;mut </span>olen,
+                in_buf.as_ptr(),
+                in_len <span class="kw">as </span>i32,
+            )
+        };
+
+        <span class="kw">if </span>rc != <span class="number">1 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::CryptoFail);
+        };
+
+        ciphertext_len += olen <span class="kw">as </span>usize;
+
+        <span class="kw">let </span>len = olen <span class="kw">as </span>usize;
+        rc = <span class="kw">unsafe </span>{
+            EVP_CipherFinal_ex(
+                <span class="self">self</span>.packet.ctx,
+                buf[len..].as_mut_ptr(),
+                <span class="kw-2">&amp;mut </span>olen,
+            )
+        };
+
+        <span class="kw">if </span>rc != <span class="number">1 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::CryptoFail);
+        }
+
+        ciphertext_len += olen <span class="kw">as </span>usize;
+
+        <span class="kw">const </span>EVP_CTRL_AEAD_GET_TAG: i32 = <span class="number">0x10</span>;
+        rc = <span class="kw">unsafe </span>{
+            EVP_CIPHER_CTX_ctrl(
+                <span class="self">self</span>.packet.ctx,
+                EVP_CTRL_AEAD_GET_TAG,
+                tag_len <span class="kw">as </span>i32,
+                buf[ciphertext_len..].as_mut_ptr() <span class="kw">as </span><span class="kw-2">*mut </span>c_void,
+            )
+        };
+
+        <span class="kw">if </span>rc != <span class="number">1 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::CryptoFail);
+        }
+
+        <span class="prelude-val">Ok</span>(in_len + tag_len)
+    }
+}
+
+<span class="kw">fn </span>make_evp_cipher_ctx_basic(
+    alg: Algorithm, enc: u32,
+) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">*mut </span>EVP_CIPHER_CTX&gt; {
+    <span class="kw">let </span>ctx: <span class="kw-2">*mut </span>EVP_CIPHER_CTX = <span class="kw">unsafe </span>{
+        <span class="kw">let </span>cipher: <span class="kw-2">*const </span>EVP_AEAD = alg.get_evp_aead();
+
+        <span class="kw">let </span>ctx = EVP_CIPHER_CTX_new();
+        <span class="kw">if </span>ctx.is_null() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::CryptoFail);
+        }
+
+        <span class="kw">let </span>rc = EVP_CipherInit_ex2(
+            ctx,
+            cipher,
+            std::ptr::null_mut(),
+            std::ptr::null_mut(),
+            enc <span class="kw">as </span>c_int, <span class="comment">// Following calls can use -1 once this is set.
+            </span>std::ptr::null(),
+        );
+
+        <span class="kw">if </span>rc != <span class="number">1 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::CryptoFail);
+        }
+        ctx
+    };
+    <span class="prelude-val">Ok</span>(ctx)
+}
+
+<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">struct </span>PacketKey {
+    ctx: <span class="kw-2">*mut </span>EVP_CIPHER_CTX,
+    nonce: Vec&lt;u8&gt;,
+    <span class="comment">// Note: We'd need the key for later use as it is needed by the openssl API.
+    // TODO: check if we can avoid this and get the key when needed and not
+    // have it stored here.
+    </span>key: Vec&lt;u8&gt;,
+}
+
+<span class="kw">impl </span>PacketKey {
+    <span class="kw">pub fn </span>new(
+        algo: Algorithm, key: Vec&lt;u8&gt;, iv: Vec&lt;u8&gt;, enc: u32,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="self">Self</span>&gt; {
+        <span class="prelude-val">Ok</span>(<span class="self">Self </span>{
+            ctx: make_evp_cipher_ctx_basic(algo, enc)<span class="question-mark">?</span>,
+            nonce: iv,
+            key,
+        })
+    }
+
+    <span class="kw">pub fn </span>from_secret(aead: Algorithm, secret: <span class="kw-2">&amp;</span>[u8], enc: u32) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="self">Self</span>&gt; {
+        <span class="kw">let </span>key_len = aead.key_len();
+        <span class="kw">let </span>nonce_len = aead.nonce_len();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>key = <span class="macro">vec!</span>[<span class="number">0</span>; key_len];
+        <span class="kw">let </span><span class="kw-2">mut </span>iv = <span class="macro">vec!</span>[<span class="number">0</span>; nonce_len];
+
+        derive_pkt_key(aead, secret, <span class="kw-2">&amp;mut </span>key)<span class="question-mark">?</span>;
+        derive_pkt_iv(aead, secret, <span class="kw-2">&amp;mut </span>iv)<span class="question-mark">?</span>;
+
+        <span class="self">Self</span>::new(aead, key, iv, enc)
+    }
+}
+
+<span class="kw">unsafe impl </span>std::marker::Send <span class="kw">for </span>PacketKey {}
+<span class="kw">unsafe impl </span>std::marker::Sync <span class="kw">for </span>PacketKey {}
+
+<span class="kw">extern </span>{
+    <span class="comment">// EVP
+    </span><span class="kw">fn </span>EVP_aes_128_gcm() -&gt; <span class="kw-2">*const </span>EVP_AEAD;
+
+    <span class="kw">fn </span>EVP_aes_256_gcm() -&gt; <span class="kw-2">*const </span>EVP_AEAD;
+
+    <span class="kw">fn </span>EVP_chacha20_poly1305() -&gt; <span class="kw-2">*const </span>EVP_AEAD;
+
+    <span class="comment">// EVP_CIPHER_CTX
+    </span><span class="kw">fn </span>EVP_CIPHER_CTX_new() -&gt; <span class="kw-2">*mut </span>EVP_CIPHER_CTX;
+
+    <span class="kw">fn </span>EVP_CIPHER_CTX_free(ctx: <span class="kw-2">*mut </span>EVP_CIPHER_CTX);
+
+    <span class="kw">fn </span>EVP_CipherInit_ex2(
+        ctx: <span class="kw-2">*mut </span>EVP_CIPHER_CTX, cipher: <span class="kw-2">*const </span>EVP_AEAD, key: <span class="kw-2">*const </span>c_uchar,
+        iv: <span class="kw-2">*const </span>c_uchar, enc: c_int, params: <span class="kw-2">*const </span>OSSL_PARAM,
+    ) -&gt; c_int;
+
+    <span class="kw">fn </span>EVP_CIPHER_CTX_ctrl(
+        ctx: <span class="kw-2">*mut </span>EVP_CIPHER_CTX, type_: i32, arg: i32, ptr: <span class="kw-2">*mut </span>c_void,
+    ) -&gt; c_int;
+
+    <span class="kw">fn </span>EVP_CipherUpdate(
+        ctx: <span class="kw-2">*mut </span>EVP_CIPHER_CTX, out: <span class="kw-2">*mut </span>c_uchar, outl: <span class="kw-2">*mut </span>c_int,
+        in_: <span class="kw-2">*const </span>c_uchar, inl: i32,
+    ) -&gt; c_int;
+
+    <span class="kw">fn </span>EVP_CipherFinal_ex(
+        ctx: <span class="kw-2">*mut </span>EVP_CIPHER_CTX, out: <span class="kw-2">*mut </span>c_uchar, outl: <span class="kw-2">*mut </span>c_int,
+    ) -&gt; c_int;
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/dgram.rs.html b/src/quiche/dgram.rs.html
new file mode 100644
index 0000000..c2d560a
--- /dev/null
+++ b/src/quiche/dgram.rs.html
@@ -0,0 +1,235 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/dgram.rs`."><title>dgram.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2020, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span><span class="kw">crate</span>::Error;
+<span class="kw">use </span><span class="kw">crate</span>::Result;
+
+<span class="kw">use </span>std::collections::VecDeque;
+
+<span class="doccomment">/// Keeps track of DATAGRAM frames.
+</span><span class="attr">#[derive(Default)]
+</span><span class="kw">pub struct </span>DatagramQueue {
+    queue: <span class="prelude-ty">Option</span>&lt;VecDeque&lt;Vec&lt;u8&gt;&gt;&gt;,
+    queue_max_len: usize,
+    queue_bytes_size: usize,
+}
+
+<span class="kw">impl </span>DatagramQueue {
+    <span class="kw">pub fn </span>new(queue_max_len: usize) -&gt; <span class="self">Self </span>{
+        DatagramQueue {
+            queue: <span class="prelude-val">None</span>,
+            queue_bytes_size: <span class="number">0</span>,
+            queue_max_len,
+        }
+    }
+
+    <span class="kw">pub fn </span>push(<span class="kw-2">&amp;mut </span><span class="self">self</span>, data: Vec&lt;u8&gt;) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if </span><span class="self">self</span>.is_full() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="self">self</span>.queue_bytes_size += data.len();
+        <span class="self">self</span>.queue
+            .get_or_insert_with(Default::default)
+            .push_back(data);
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="kw">pub fn </span>peek_front_len(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;usize&gt; {
+        <span class="self">self</span>.queue.as_ref().and_then(|q| q.front().map(|d| d.len()))
+    }
+
+    <span class="kw">pub fn </span>peek_front_bytes(<span class="kw-2">&amp;</span><span class="self">self</span>, buf: <span class="kw-2">&amp;mut </span>[u8], len: usize) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="kw">match </span><span class="self">self</span>.queue.as_ref().and_then(|q| q.front()) {
+            <span class="prelude-val">Some</span>(d) =&gt; {
+                <span class="kw">let </span>len = std::cmp::min(len, d.len());
+                <span class="kw">if </span>buf.len() &lt; len {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::BufferTooShort);
+                }
+
+                buf[..len].copy_from_slice(<span class="kw-2">&amp;</span>d[..len]);
+                <span class="prelude-val">Ok</span>(len)
+            },
+
+            <span class="prelude-val">None </span>=&gt; <span class="prelude-val">Err</span>(Error::Done),
+        }
+    }
+
+    <span class="kw">pub fn </span>pop(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;Vec&lt;u8&gt;&gt; {
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(d) = <span class="self">self</span>.queue.as_mut().and_then(|q| q.pop_front()) {
+            <span class="self">self</span>.queue_bytes_size = <span class="self">self</span>.queue_bytes_size.saturating_sub(d.len());
+            <span class="kw">return </span><span class="prelude-val">Some</span>(d);
+        }
+
+        <span class="prelude-val">None
+    </span>}
+
+    <span class="kw">pub fn </span>has_pending(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        !<span class="self">self</span>.queue.as_ref().map(|q| q.is_empty()).unwrap_or(<span class="bool-val">true</span>)
+    }
+
+    <span class="kw">pub fn </span>purge&lt;F: Fn(<span class="kw-2">&amp;</span>[u8]) -&gt; bool&gt;(<span class="kw-2">&amp;mut </span><span class="self">self</span>, f: F) {
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(q) = <span class="self">self</span>.queue.as_mut() {
+            q.retain(|d| !f(d));
+            <span class="self">self</span>.queue_bytes_size = q.iter().fold(<span class="number">0</span>, |total, d| total + d.len());
+        }
+    }
+
+    <span class="kw">pub fn </span>is_full(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.len() == <span class="self">self</span>.queue_max_len
+    }
+
+    <span class="kw">pub fn </span>is_empty(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.len() == <span class="number">0
+    </span>}
+
+    <span class="kw">pub fn </span>len(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.queue.as_ref().map(|q| q.len()).unwrap_or(<span class="number">0</span>)
+    }
+
+    <span class="kw">pub fn </span>byte_size(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.queue_bytes_size
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/ffi.rs.html b/src/quiche/ffi.rs.html
new file mode 100644
index 0000000..882d84a
--- /dev/null
+++ b/src/quiche/ffi.rs.html
@@ -0,0 +1,4179 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/ffi.rs`."><title>ffi.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+<a href="#1217" id="1217">1217</a>
+<a href="#1218" id="1218">1218</a>
+<a href="#1219" id="1219">1219</a>
+<a href="#1220" id="1220">1220</a>
+<a href="#1221" id="1221">1221</a>
+<a href="#1222" id="1222">1222</a>
+<a href="#1223" id="1223">1223</a>
+<a href="#1224" id="1224">1224</a>
+<a href="#1225" id="1225">1225</a>
+<a href="#1226" id="1226">1226</a>
+<a href="#1227" id="1227">1227</a>
+<a href="#1228" id="1228">1228</a>
+<a href="#1229" id="1229">1229</a>
+<a href="#1230" id="1230">1230</a>
+<a href="#1231" id="1231">1231</a>
+<a href="#1232" id="1232">1232</a>
+<a href="#1233" id="1233">1233</a>
+<a href="#1234" id="1234">1234</a>
+<a href="#1235" id="1235">1235</a>
+<a href="#1236" id="1236">1236</a>
+<a href="#1237" id="1237">1237</a>
+<a href="#1238" id="1238">1238</a>
+<a href="#1239" id="1239">1239</a>
+<a href="#1240" id="1240">1240</a>
+<a href="#1241" id="1241">1241</a>
+<a href="#1242" id="1242">1242</a>
+<a href="#1243" id="1243">1243</a>
+<a href="#1244" id="1244">1244</a>
+<a href="#1245" id="1245">1245</a>
+<a href="#1246" id="1246">1246</a>
+<a href="#1247" id="1247">1247</a>
+<a href="#1248" id="1248">1248</a>
+<a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</a>
+<a href="#1259" id="1259">1259</a>
+<a href="#1260" id="1260">1260</a>
+<a href="#1261" id="1261">1261</a>
+<a href="#1262" id="1262">1262</a>
+<a href="#1263" id="1263">1263</a>
+<a href="#1264" id="1264">1264</a>
+<a href="#1265" id="1265">1265</a>
+<a href="#1266" id="1266">1266</a>
+<a href="#1267" id="1267">1267</a>
+<a href="#1268" id="1268">1268</a>
+<a href="#1269" id="1269">1269</a>
+<a href="#1270" id="1270">1270</a>
+<a href="#1271" id="1271">1271</a>
+<a href="#1272" id="1272">1272</a>
+<a href="#1273" id="1273">1273</a>
+<a href="#1274" id="1274">1274</a>
+<a href="#1275" id="1275">1275</a>
+<a href="#1276" id="1276">1276</a>
+<a href="#1277" id="1277">1277</a>
+<a href="#1278" id="1278">1278</a>
+<a href="#1279" id="1279">1279</a>
+<a href="#1280" id="1280">1280</a>
+<a href="#1281" id="1281">1281</a>
+<a href="#1282" id="1282">1282</a>
+<a href="#1283" id="1283">1283</a>
+<a href="#1284" id="1284">1284</a>
+<a href="#1285" id="1285">1285</a>
+<a href="#1286" id="1286">1286</a>
+<a href="#1287" id="1287">1287</a>
+<a href="#1288" id="1288">1288</a>
+<a href="#1289" id="1289">1289</a>
+<a href="#1290" id="1290">1290</a>
+<a href="#1291" id="1291">1291</a>
+<a href="#1292" id="1292">1292</a>
+<a href="#1293" id="1293">1293</a>
+<a href="#1294" id="1294">1294</a>
+<a href="#1295" id="1295">1295</a>
+<a href="#1296" id="1296">1296</a>
+<a href="#1297" id="1297">1297</a>
+<a href="#1298" id="1298">1298</a>
+<a href="#1299" id="1299">1299</a>
+<a href="#1300" id="1300">1300</a>
+<a href="#1301" id="1301">1301</a>
+<a href="#1302" id="1302">1302</a>
+<a href="#1303" id="1303">1303</a>
+<a href="#1304" id="1304">1304</a>
+<a href="#1305" id="1305">1305</a>
+<a href="#1306" id="1306">1306</a>
+<a href="#1307" id="1307">1307</a>
+<a href="#1308" id="1308">1308</a>
+<a href="#1309" id="1309">1309</a>
+<a href="#1310" id="1310">1310</a>
+<a href="#1311" id="1311">1311</a>
+<a href="#1312" id="1312">1312</a>
+<a href="#1313" id="1313">1313</a>
+<a href="#1314" id="1314">1314</a>
+<a href="#1315" id="1315">1315</a>
+<a href="#1316" id="1316">1316</a>
+<a href="#1317" id="1317">1317</a>
+<a href="#1318" id="1318">1318</a>
+<a href="#1319" id="1319">1319</a>
+<a href="#1320" id="1320">1320</a>
+<a href="#1321" id="1321">1321</a>
+<a href="#1322" id="1322">1322</a>
+<a href="#1323" id="1323">1323</a>
+<a href="#1324" id="1324">1324</a>
+<a href="#1325" id="1325">1325</a>
+<a href="#1326" id="1326">1326</a>
+<a href="#1327" id="1327">1327</a>
+<a href="#1328" id="1328">1328</a>
+<a href="#1329" id="1329">1329</a>
+<a href="#1330" id="1330">1330</a>
+<a href="#1331" id="1331">1331</a>
+<a href="#1332" id="1332">1332</a>
+<a href="#1333" id="1333">1333</a>
+<a href="#1334" id="1334">1334</a>
+<a href="#1335" id="1335">1335</a>
+<a href="#1336" id="1336">1336</a>
+<a href="#1337" id="1337">1337</a>
+<a href="#1338" id="1338">1338</a>
+<a href="#1339" id="1339">1339</a>
+<a href="#1340" id="1340">1340</a>
+<a href="#1341" id="1341">1341</a>
+<a href="#1342" id="1342">1342</a>
+<a href="#1343" id="1343">1343</a>
+<a href="#1344" id="1344">1344</a>
+<a href="#1345" id="1345">1345</a>
+<a href="#1346" id="1346">1346</a>
+<a href="#1347" id="1347">1347</a>
+<a href="#1348" id="1348">1348</a>
+<a href="#1349" id="1349">1349</a>
+<a href="#1350" id="1350">1350</a>
+<a href="#1351" id="1351">1351</a>
+<a href="#1352" id="1352">1352</a>
+<a href="#1353" id="1353">1353</a>
+<a href="#1354" id="1354">1354</a>
+<a href="#1355" id="1355">1355</a>
+<a href="#1356" id="1356">1356</a>
+<a href="#1357" id="1357">1357</a>
+<a href="#1358" id="1358">1358</a>
+<a href="#1359" id="1359">1359</a>
+<a href="#1360" id="1360">1360</a>
+<a href="#1361" id="1361">1361</a>
+<a href="#1362" id="1362">1362</a>
+<a href="#1363" id="1363">1363</a>
+<a href="#1364" id="1364">1364</a>
+<a href="#1365" id="1365">1365</a>
+<a href="#1366" id="1366">1366</a>
+<a href="#1367" id="1367">1367</a>
+<a href="#1368" id="1368">1368</a>
+<a href="#1369" id="1369">1369</a>
+<a href="#1370" id="1370">1370</a>
+<a href="#1371" id="1371">1371</a>
+<a href="#1372" id="1372">1372</a>
+<a href="#1373" id="1373">1373</a>
+<a href="#1374" id="1374">1374</a>
+<a href="#1375" id="1375">1375</a>
+<a href="#1376" id="1376">1376</a>
+<a href="#1377" id="1377">1377</a>
+<a href="#1378" id="1378">1378</a>
+<a href="#1379" id="1379">1379</a>
+<a href="#1380" id="1380">1380</a>
+<a href="#1381" id="1381">1381</a>
+<a href="#1382" id="1382">1382</a>
+<a href="#1383" id="1383">1383</a>
+<a href="#1384" id="1384">1384</a>
+<a href="#1385" id="1385">1385</a>
+<a href="#1386" id="1386">1386</a>
+<a href="#1387" id="1387">1387</a>
+<a href="#1388" id="1388">1388</a>
+<a href="#1389" id="1389">1389</a>
+<a href="#1390" id="1390">1390</a>
+<a href="#1391" id="1391">1391</a>
+<a href="#1392" id="1392">1392</a>
+<a href="#1393" id="1393">1393</a>
+<a href="#1394" id="1394">1394</a>
+<a href="#1395" id="1395">1395</a>
+<a href="#1396" id="1396">1396</a>
+<a href="#1397" id="1397">1397</a>
+<a href="#1398" id="1398">1398</a>
+<a href="#1399" id="1399">1399</a>
+<a href="#1400" id="1400">1400</a>
+<a href="#1401" id="1401">1401</a>
+<a href="#1402" id="1402">1402</a>
+<a href="#1403" id="1403">1403</a>
+<a href="#1404" id="1404">1404</a>
+<a href="#1405" id="1405">1405</a>
+<a href="#1406" id="1406">1406</a>
+<a href="#1407" id="1407">1407</a>
+<a href="#1408" id="1408">1408</a>
+<a href="#1409" id="1409">1409</a>
+<a href="#1410" id="1410">1410</a>
+<a href="#1411" id="1411">1411</a>
+<a href="#1412" id="1412">1412</a>
+<a href="#1413" id="1413">1413</a>
+<a href="#1414" id="1414">1414</a>
+<a href="#1415" id="1415">1415</a>
+<a href="#1416" id="1416">1416</a>
+<a href="#1417" id="1417">1417</a>
+<a href="#1418" id="1418">1418</a>
+<a href="#1419" id="1419">1419</a>
+<a href="#1420" id="1420">1420</a>
+<a href="#1421" id="1421">1421</a>
+<a href="#1422" id="1422">1422</a>
+<a href="#1423" id="1423">1423</a>
+<a href="#1424" id="1424">1424</a>
+<a href="#1425" id="1425">1425</a>
+<a href="#1426" id="1426">1426</a>
+<a href="#1427" id="1427">1427</a>
+<a href="#1428" id="1428">1428</a>
+<a href="#1429" id="1429">1429</a>
+<a href="#1430" id="1430">1430</a>
+<a href="#1431" id="1431">1431</a>
+<a href="#1432" id="1432">1432</a>
+<a href="#1433" id="1433">1433</a>
+<a href="#1434" id="1434">1434</a>
+<a href="#1435" id="1435">1435</a>
+<a href="#1436" id="1436">1436</a>
+<a href="#1437" id="1437">1437</a>
+<a href="#1438" id="1438">1438</a>
+<a href="#1439" id="1439">1439</a>
+<a href="#1440" id="1440">1440</a>
+<a href="#1441" id="1441">1441</a>
+<a href="#1442" id="1442">1442</a>
+<a href="#1443" id="1443">1443</a>
+<a href="#1444" id="1444">1444</a>
+<a href="#1445" id="1445">1445</a>
+<a href="#1446" id="1446">1446</a>
+<a href="#1447" id="1447">1447</a>
+<a href="#1448" id="1448">1448</a>
+<a href="#1449" id="1449">1449</a>
+<a href="#1450" id="1450">1450</a>
+<a href="#1451" id="1451">1451</a>
+<a href="#1452" id="1452">1452</a>
+<a href="#1453" id="1453">1453</a>
+<a href="#1454" id="1454">1454</a>
+<a href="#1455" id="1455">1455</a>
+<a href="#1456" id="1456">1456</a>
+<a href="#1457" id="1457">1457</a>
+<a href="#1458" id="1458">1458</a>
+<a href="#1459" id="1459">1459</a>
+<a href="#1460" id="1460">1460</a>
+<a href="#1461" id="1461">1461</a>
+<a href="#1462" id="1462">1462</a>
+<a href="#1463" id="1463">1463</a>
+<a href="#1464" id="1464">1464</a>
+<a href="#1465" id="1465">1465</a>
+<a href="#1466" id="1466">1466</a>
+<a href="#1467" id="1467">1467</a>
+<a href="#1468" id="1468">1468</a>
+<a href="#1469" id="1469">1469</a>
+<a href="#1470" id="1470">1470</a>
+<a href="#1471" id="1471">1471</a>
+<a href="#1472" id="1472">1472</a>
+<a href="#1473" id="1473">1473</a>
+<a href="#1474" id="1474">1474</a>
+<a href="#1475" id="1475">1475</a>
+<a href="#1476" id="1476">1476</a>
+<a href="#1477" id="1477">1477</a>
+<a href="#1478" id="1478">1478</a>
+<a href="#1479" id="1479">1479</a>
+<a href="#1480" id="1480">1480</a>
+<a href="#1481" id="1481">1481</a>
+<a href="#1482" id="1482">1482</a>
+<a href="#1483" id="1483">1483</a>
+<a href="#1484" id="1484">1484</a>
+<a href="#1485" id="1485">1485</a>
+<a href="#1486" id="1486">1486</a>
+<a href="#1487" id="1487">1487</a>
+<a href="#1488" id="1488">1488</a>
+<a href="#1489" id="1489">1489</a>
+<a href="#1490" id="1490">1490</a>
+<a href="#1491" id="1491">1491</a>
+<a href="#1492" id="1492">1492</a>
+<a href="#1493" id="1493">1493</a>
+<a href="#1494" id="1494">1494</a>
+<a href="#1495" id="1495">1495</a>
+<a href="#1496" id="1496">1496</a>
+<a href="#1497" id="1497">1497</a>
+<a href="#1498" id="1498">1498</a>
+<a href="#1499" id="1499">1499</a>
+<a href="#1500" id="1500">1500</a>
+<a href="#1501" id="1501">1501</a>
+<a href="#1502" id="1502">1502</a>
+<a href="#1503" id="1503">1503</a>
+<a href="#1504" id="1504">1504</a>
+<a href="#1505" id="1505">1505</a>
+<a href="#1506" id="1506">1506</a>
+<a href="#1507" id="1507">1507</a>
+<a href="#1508" id="1508">1508</a>
+<a href="#1509" id="1509">1509</a>
+<a href="#1510" id="1510">1510</a>
+<a href="#1511" id="1511">1511</a>
+<a href="#1512" id="1512">1512</a>
+<a href="#1513" id="1513">1513</a>
+<a href="#1514" id="1514">1514</a>
+<a href="#1515" id="1515">1515</a>
+<a href="#1516" id="1516">1516</a>
+<a href="#1517" id="1517">1517</a>
+<a href="#1518" id="1518">1518</a>
+<a href="#1519" id="1519">1519</a>
+<a href="#1520" id="1520">1520</a>
+<a href="#1521" id="1521">1521</a>
+<a href="#1522" id="1522">1522</a>
+<a href="#1523" id="1523">1523</a>
+<a href="#1524" id="1524">1524</a>
+<a href="#1525" id="1525">1525</a>
+<a href="#1526" id="1526">1526</a>
+<a href="#1527" id="1527">1527</a>
+<a href="#1528" id="1528">1528</a>
+<a href="#1529" id="1529">1529</a>
+<a href="#1530" id="1530">1530</a>
+<a href="#1531" id="1531">1531</a>
+<a href="#1532" id="1532">1532</a>
+<a href="#1533" id="1533">1533</a>
+<a href="#1534" id="1534">1534</a>
+<a href="#1535" id="1535">1535</a>
+<a href="#1536" id="1536">1536</a>
+<a href="#1537" id="1537">1537</a>
+<a href="#1538" id="1538">1538</a>
+<a href="#1539" id="1539">1539</a>
+<a href="#1540" id="1540">1540</a>
+<a href="#1541" id="1541">1541</a>
+<a href="#1542" id="1542">1542</a>
+<a href="#1543" id="1543">1543</a>
+<a href="#1544" id="1544">1544</a>
+<a href="#1545" id="1545">1545</a>
+<a href="#1546" id="1546">1546</a>
+<a href="#1547" id="1547">1547</a>
+<a href="#1548" id="1548">1548</a>
+<a href="#1549" id="1549">1549</a>
+<a href="#1550" id="1550">1550</a>
+<a href="#1551" id="1551">1551</a>
+<a href="#1552" id="1552">1552</a>
+<a href="#1553" id="1553">1553</a>
+<a href="#1554" id="1554">1554</a>
+<a href="#1555" id="1555">1555</a>
+<a href="#1556" id="1556">1556</a>
+<a href="#1557" id="1557">1557</a>
+<a href="#1558" id="1558">1558</a>
+<a href="#1559" id="1559">1559</a>
+<a href="#1560" id="1560">1560</a>
+<a href="#1561" id="1561">1561</a>
+<a href="#1562" id="1562">1562</a>
+<a href="#1563" id="1563">1563</a>
+<a href="#1564" id="1564">1564</a>
+<a href="#1565" id="1565">1565</a>
+<a href="#1566" id="1566">1566</a>
+<a href="#1567" id="1567">1567</a>
+<a href="#1568" id="1568">1568</a>
+<a href="#1569" id="1569">1569</a>
+<a href="#1570" id="1570">1570</a>
+<a href="#1571" id="1571">1571</a>
+<a href="#1572" id="1572">1572</a>
+<a href="#1573" id="1573">1573</a>
+<a href="#1574" id="1574">1574</a>
+<a href="#1575" id="1575">1575</a>
+<a href="#1576" id="1576">1576</a>
+<a href="#1577" id="1577">1577</a>
+<a href="#1578" id="1578">1578</a>
+<a href="#1579" id="1579">1579</a>
+<a href="#1580" id="1580">1580</a>
+<a href="#1581" id="1581">1581</a>
+<a href="#1582" id="1582">1582</a>
+<a href="#1583" id="1583">1583</a>
+<a href="#1584" id="1584">1584</a>
+<a href="#1585" id="1585">1585</a>
+<a href="#1586" id="1586">1586</a>
+<a href="#1587" id="1587">1587</a>
+<a href="#1588" id="1588">1588</a>
+<a href="#1589" id="1589">1589</a>
+<a href="#1590" id="1590">1590</a>
+<a href="#1591" id="1591">1591</a>
+<a href="#1592" id="1592">1592</a>
+<a href="#1593" id="1593">1593</a>
+<a href="#1594" id="1594">1594</a>
+<a href="#1595" id="1595">1595</a>
+<a href="#1596" id="1596">1596</a>
+<a href="#1597" id="1597">1597</a>
+<a href="#1598" id="1598">1598</a>
+<a href="#1599" id="1599">1599</a>
+<a href="#1600" id="1600">1600</a>
+<a href="#1601" id="1601">1601</a>
+<a href="#1602" id="1602">1602</a>
+<a href="#1603" id="1603">1603</a>
+<a href="#1604" id="1604">1604</a>
+<a href="#1605" id="1605">1605</a>
+<a href="#1606" id="1606">1606</a>
+<a href="#1607" id="1607">1607</a>
+<a href="#1608" id="1608">1608</a>
+<a href="#1609" id="1609">1609</a>
+<a href="#1610" id="1610">1610</a>
+<a href="#1611" id="1611">1611</a>
+<a href="#1612" id="1612">1612</a>
+<a href="#1613" id="1613">1613</a>
+<a href="#1614" id="1614">1614</a>
+<a href="#1615" id="1615">1615</a>
+<a href="#1616" id="1616">1616</a>
+<a href="#1617" id="1617">1617</a>
+<a href="#1618" id="1618">1618</a>
+<a href="#1619" id="1619">1619</a>
+<a href="#1620" id="1620">1620</a>
+<a href="#1621" id="1621">1621</a>
+<a href="#1622" id="1622">1622</a>
+<a href="#1623" id="1623">1623</a>
+<a href="#1624" id="1624">1624</a>
+<a href="#1625" id="1625">1625</a>
+<a href="#1626" id="1626">1626</a>
+<a href="#1627" id="1627">1627</a>
+<a href="#1628" id="1628">1628</a>
+<a href="#1629" id="1629">1629</a>
+<a href="#1630" id="1630">1630</a>
+<a href="#1631" id="1631">1631</a>
+<a href="#1632" id="1632">1632</a>
+<a href="#1633" id="1633">1633</a>
+<a href="#1634" id="1634">1634</a>
+<a href="#1635" id="1635">1635</a>
+<a href="#1636" id="1636">1636</a>
+<a href="#1637" id="1637">1637</a>
+<a href="#1638" id="1638">1638</a>
+<a href="#1639" id="1639">1639</a>
+<a href="#1640" id="1640">1640</a>
+<a href="#1641" id="1641">1641</a>
+<a href="#1642" id="1642">1642</a>
+<a href="#1643" id="1643">1643</a>
+<a href="#1644" id="1644">1644</a>
+<a href="#1645" id="1645">1645</a>
+<a href="#1646" id="1646">1646</a>
+<a href="#1647" id="1647">1647</a>
+<a href="#1648" id="1648">1648</a>
+<a href="#1649" id="1649">1649</a>
+<a href="#1650" id="1650">1650</a>
+<a href="#1651" id="1651">1651</a>
+<a href="#1652" id="1652">1652</a>
+<a href="#1653" id="1653">1653</a>
+<a href="#1654" id="1654">1654</a>
+<a href="#1655" id="1655">1655</a>
+<a href="#1656" id="1656">1656</a>
+<a href="#1657" id="1657">1657</a>
+<a href="#1658" id="1658">1658</a>
+<a href="#1659" id="1659">1659</a>
+<a href="#1660" id="1660">1660</a>
+<a href="#1661" id="1661">1661</a>
+<a href="#1662" id="1662">1662</a>
+<a href="#1663" id="1663">1663</a>
+<a href="#1664" id="1664">1664</a>
+<a href="#1665" id="1665">1665</a>
+<a href="#1666" id="1666">1666</a>
+<a href="#1667" id="1667">1667</a>
+<a href="#1668" id="1668">1668</a>
+<a href="#1669" id="1669">1669</a>
+<a href="#1670" id="1670">1670</a>
+<a href="#1671" id="1671">1671</a>
+<a href="#1672" id="1672">1672</a>
+<a href="#1673" id="1673">1673</a>
+<a href="#1674" id="1674">1674</a>
+<a href="#1675" id="1675">1675</a>
+<a href="#1676" id="1676">1676</a>
+<a href="#1677" id="1677">1677</a>
+<a href="#1678" id="1678">1678</a>
+<a href="#1679" id="1679">1679</a>
+<a href="#1680" id="1680">1680</a>
+<a href="#1681" id="1681">1681</a>
+<a href="#1682" id="1682">1682</a>
+<a href="#1683" id="1683">1683</a>
+<a href="#1684" id="1684">1684</a>
+<a href="#1685" id="1685">1685</a>
+<a href="#1686" id="1686">1686</a>
+<a href="#1687" id="1687">1687</a>
+<a href="#1688" id="1688">1688</a>
+<a href="#1689" id="1689">1689</a>
+<a href="#1690" id="1690">1690</a>
+<a href="#1691" id="1691">1691</a>
+<a href="#1692" id="1692">1692</a>
+<a href="#1693" id="1693">1693</a>
+<a href="#1694" id="1694">1694</a>
+<a href="#1695" id="1695">1695</a>
+<a href="#1696" id="1696">1696</a>
+<a href="#1697" id="1697">1697</a>
+<a href="#1698" id="1698">1698</a>
+<a href="#1699" id="1699">1699</a>
+<a href="#1700" id="1700">1700</a>
+<a href="#1701" id="1701">1701</a>
+<a href="#1702" id="1702">1702</a>
+<a href="#1703" id="1703">1703</a>
+<a href="#1704" id="1704">1704</a>
+<a href="#1705" id="1705">1705</a>
+<a href="#1706" id="1706">1706</a>
+<a href="#1707" id="1707">1707</a>
+<a href="#1708" id="1708">1708</a>
+<a href="#1709" id="1709">1709</a>
+<a href="#1710" id="1710">1710</a>
+<a href="#1711" id="1711">1711</a>
+<a href="#1712" id="1712">1712</a>
+<a href="#1713" id="1713">1713</a>
+<a href="#1714" id="1714">1714</a>
+<a href="#1715" id="1715">1715</a>
+<a href="#1716" id="1716">1716</a>
+<a href="#1717" id="1717">1717</a>
+<a href="#1718" id="1718">1718</a>
+<a href="#1719" id="1719">1719</a>
+<a href="#1720" id="1720">1720</a>
+<a href="#1721" id="1721">1721</a>
+<a href="#1722" id="1722">1722</a>
+<a href="#1723" id="1723">1723</a>
+<a href="#1724" id="1724">1724</a>
+<a href="#1725" id="1725">1725</a>
+<a href="#1726" id="1726">1726</a>
+<a href="#1727" id="1727">1727</a>
+<a href="#1728" id="1728">1728</a>
+<a href="#1729" id="1729">1729</a>
+<a href="#1730" id="1730">1730</a>
+<a href="#1731" id="1731">1731</a>
+<a href="#1732" id="1732">1732</a>
+<a href="#1733" id="1733">1733</a>
+<a href="#1734" id="1734">1734</a>
+<a href="#1735" id="1735">1735</a>
+<a href="#1736" id="1736">1736</a>
+<a href="#1737" id="1737">1737</a>
+<a href="#1738" id="1738">1738</a>
+<a href="#1739" id="1739">1739</a>
+<a href="#1740" id="1740">1740</a>
+<a href="#1741" id="1741">1741</a>
+<a href="#1742" id="1742">1742</a>
+<a href="#1743" id="1743">1743</a>
+<a href="#1744" id="1744">1744</a>
+<a href="#1745" id="1745">1745</a>
+<a href="#1746" id="1746">1746</a>
+<a href="#1747" id="1747">1747</a>
+<a href="#1748" id="1748">1748</a>
+<a href="#1749" id="1749">1749</a>
+<a href="#1750" id="1750">1750</a>
+<a href="#1751" id="1751">1751</a>
+<a href="#1752" id="1752">1752</a>
+<a href="#1753" id="1753">1753</a>
+<a href="#1754" id="1754">1754</a>
+<a href="#1755" id="1755">1755</a>
+<a href="#1756" id="1756">1756</a>
+<a href="#1757" id="1757">1757</a>
+<a href="#1758" id="1758">1758</a>
+<a href="#1759" id="1759">1759</a>
+<a href="#1760" id="1760">1760</a>
+<a href="#1761" id="1761">1761</a>
+<a href="#1762" id="1762">1762</a>
+<a href="#1763" id="1763">1763</a>
+<a href="#1764" id="1764">1764</a>
+<a href="#1765" id="1765">1765</a>
+<a href="#1766" id="1766">1766</a>
+<a href="#1767" id="1767">1767</a>
+<a href="#1768" id="1768">1768</a>
+<a href="#1769" id="1769">1769</a>
+<a href="#1770" id="1770">1770</a>
+<a href="#1771" id="1771">1771</a>
+<a href="#1772" id="1772">1772</a>
+<a href="#1773" id="1773">1773</a>
+<a href="#1774" id="1774">1774</a>
+<a href="#1775" id="1775">1775</a>
+<a href="#1776" id="1776">1776</a>
+<a href="#1777" id="1777">1777</a>
+<a href="#1778" id="1778">1778</a>
+<a href="#1779" id="1779">1779</a>
+<a href="#1780" id="1780">1780</a>
+<a href="#1781" id="1781">1781</a>
+<a href="#1782" id="1782">1782</a>
+<a href="#1783" id="1783">1783</a>
+<a href="#1784" id="1784">1784</a>
+<a href="#1785" id="1785">1785</a>
+<a href="#1786" id="1786">1786</a>
+<a href="#1787" id="1787">1787</a>
+<a href="#1788" id="1788">1788</a>
+<a href="#1789" id="1789">1789</a>
+<a href="#1790" id="1790">1790</a>
+<a href="#1791" id="1791">1791</a>
+<a href="#1792" id="1792">1792</a>
+<a href="#1793" id="1793">1793</a>
+<a href="#1794" id="1794">1794</a>
+<a href="#1795" id="1795">1795</a>
+<a href="#1796" id="1796">1796</a>
+<a href="#1797" id="1797">1797</a>
+<a href="#1798" id="1798">1798</a>
+<a href="#1799" id="1799">1799</a>
+<a href="#1800" id="1800">1800</a>
+<a href="#1801" id="1801">1801</a>
+<a href="#1802" id="1802">1802</a>
+<a href="#1803" id="1803">1803</a>
+<a href="#1804" id="1804">1804</a>
+<a href="#1805" id="1805">1805</a>
+<a href="#1806" id="1806">1806</a>
+<a href="#1807" id="1807">1807</a>
+<a href="#1808" id="1808">1808</a>
+<a href="#1809" id="1809">1809</a>
+<a href="#1810" id="1810">1810</a>
+<a href="#1811" id="1811">1811</a>
+<a href="#1812" id="1812">1812</a>
+<a href="#1813" id="1813">1813</a>
+<a href="#1814" id="1814">1814</a>
+<a href="#1815" id="1815">1815</a>
+<a href="#1816" id="1816">1816</a>
+<a href="#1817" id="1817">1817</a>
+<a href="#1818" id="1818">1818</a>
+<a href="#1819" id="1819">1819</a>
+<a href="#1820" id="1820">1820</a>
+<a href="#1821" id="1821">1821</a>
+<a href="#1822" id="1822">1822</a>
+<a href="#1823" id="1823">1823</a>
+<a href="#1824" id="1824">1824</a>
+<a href="#1825" id="1825">1825</a>
+<a href="#1826" id="1826">1826</a>
+<a href="#1827" id="1827">1827</a>
+<a href="#1828" id="1828">1828</a>
+<a href="#1829" id="1829">1829</a>
+<a href="#1830" id="1830">1830</a>
+<a href="#1831" id="1831">1831</a>
+<a href="#1832" id="1832">1832</a>
+<a href="#1833" id="1833">1833</a>
+<a href="#1834" id="1834">1834</a>
+<a href="#1835" id="1835">1835</a>
+<a href="#1836" id="1836">1836</a>
+<a href="#1837" id="1837">1837</a>
+<a href="#1838" id="1838">1838</a>
+<a href="#1839" id="1839">1839</a>
+<a href="#1840" id="1840">1840</a>
+<a href="#1841" id="1841">1841</a>
+<a href="#1842" id="1842">1842</a>
+<a href="#1843" id="1843">1843</a>
+<a href="#1844" id="1844">1844</a>
+<a href="#1845" id="1845">1845</a>
+<a href="#1846" id="1846">1846</a>
+<a href="#1847" id="1847">1847</a>
+<a href="#1848" id="1848">1848</a>
+<a href="#1849" id="1849">1849</a>
+<a href="#1850" id="1850">1850</a>
+<a href="#1851" id="1851">1851</a>
+<a href="#1852" id="1852">1852</a>
+<a href="#1853" id="1853">1853</a>
+<a href="#1854" id="1854">1854</a>
+<a href="#1855" id="1855">1855</a>
+<a href="#1856" id="1856">1856</a>
+<a href="#1857" id="1857">1857</a>
+<a href="#1858" id="1858">1858</a>
+<a href="#1859" id="1859">1859</a>
+<a href="#1860" id="1860">1860</a>
+<a href="#1861" id="1861">1861</a>
+<a href="#1862" id="1862">1862</a>
+<a href="#1863" id="1863">1863</a>
+<a href="#1864" id="1864">1864</a>
+<a href="#1865" id="1865">1865</a>
+<a href="#1866" id="1866">1866</a>
+<a href="#1867" id="1867">1867</a>
+<a href="#1868" id="1868">1868</a>
+<a href="#1869" id="1869">1869</a>
+<a href="#1870" id="1870">1870</a>
+<a href="#1871" id="1871">1871</a>
+<a href="#1872" id="1872">1872</a>
+<a href="#1873" id="1873">1873</a>
+<a href="#1874" id="1874">1874</a>
+<a href="#1875" id="1875">1875</a>
+<a href="#1876" id="1876">1876</a>
+<a href="#1877" id="1877">1877</a>
+<a href="#1878" id="1878">1878</a>
+<a href="#1879" id="1879">1879</a>
+<a href="#1880" id="1880">1880</a>
+<a href="#1881" id="1881">1881</a>
+<a href="#1882" id="1882">1882</a>
+<a href="#1883" id="1883">1883</a>
+<a href="#1884" id="1884">1884</a>
+<a href="#1885" id="1885">1885</a>
+<a href="#1886" id="1886">1886</a>
+<a href="#1887" id="1887">1887</a>
+<a href="#1888" id="1888">1888</a>
+<a href="#1889" id="1889">1889</a>
+<a href="#1890" id="1890">1890</a>
+<a href="#1891" id="1891">1891</a>
+<a href="#1892" id="1892">1892</a>
+<a href="#1893" id="1893">1893</a>
+<a href="#1894" id="1894">1894</a>
+<a href="#1895" id="1895">1895</a>
+<a href="#1896" id="1896">1896</a>
+<a href="#1897" id="1897">1897</a>
+<a href="#1898" id="1898">1898</a>
+<a href="#1899" id="1899">1899</a>
+<a href="#1900" id="1900">1900</a>
+<a href="#1901" id="1901">1901</a>
+<a href="#1902" id="1902">1902</a>
+<a href="#1903" id="1903">1903</a>
+<a href="#1904" id="1904">1904</a>
+<a href="#1905" id="1905">1905</a>
+<a href="#1906" id="1906">1906</a>
+<a href="#1907" id="1907">1907</a>
+<a href="#1908" id="1908">1908</a>
+<a href="#1909" id="1909">1909</a>
+<a href="#1910" id="1910">1910</a>
+<a href="#1911" id="1911">1911</a>
+<a href="#1912" id="1912">1912</a>
+<a href="#1913" id="1913">1913</a>
+<a href="#1914" id="1914">1914</a>
+<a href="#1915" id="1915">1915</a>
+<a href="#1916" id="1916">1916</a>
+<a href="#1917" id="1917">1917</a>
+<a href="#1918" id="1918">1918</a>
+<a href="#1919" id="1919">1919</a>
+<a href="#1920" id="1920">1920</a>
+<a href="#1921" id="1921">1921</a>
+<a href="#1922" id="1922">1922</a>
+<a href="#1923" id="1923">1923</a>
+<a href="#1924" id="1924">1924</a>
+<a href="#1925" id="1925">1925</a>
+<a href="#1926" id="1926">1926</a>
+<a href="#1927" id="1927">1927</a>
+<a href="#1928" id="1928">1928</a>
+<a href="#1929" id="1929">1929</a>
+<a href="#1930" id="1930">1930</a>
+<a href="#1931" id="1931">1931</a>
+<a href="#1932" id="1932">1932</a>
+<a href="#1933" id="1933">1933</a>
+<a href="#1934" id="1934">1934</a>
+<a href="#1935" id="1935">1935</a>
+<a href="#1936" id="1936">1936</a>
+<a href="#1937" id="1937">1937</a>
+<a href="#1938" id="1938">1938</a>
+<a href="#1939" id="1939">1939</a>
+<a href="#1940" id="1940">1940</a>
+<a href="#1941" id="1941">1941</a>
+<a href="#1942" id="1942">1942</a>
+<a href="#1943" id="1943">1943</a>
+<a href="#1944" id="1944">1944</a>
+<a href="#1945" id="1945">1945</a>
+<a href="#1946" id="1946">1946</a>
+<a href="#1947" id="1947">1947</a>
+<a href="#1948" id="1948">1948</a>
+<a href="#1949" id="1949">1949</a>
+<a href="#1950" id="1950">1950</a>
+<a href="#1951" id="1951">1951</a>
+<a href="#1952" id="1952">1952</a>
+<a href="#1953" id="1953">1953</a>
+<a href="#1954" id="1954">1954</a>
+<a href="#1955" id="1955">1955</a>
+<a href="#1956" id="1956">1956</a>
+<a href="#1957" id="1957">1957</a>
+<a href="#1958" id="1958">1958</a>
+<a href="#1959" id="1959">1959</a>
+<a href="#1960" id="1960">1960</a>
+<a href="#1961" id="1961">1961</a>
+<a href="#1962" id="1962">1962</a>
+<a href="#1963" id="1963">1963</a>
+<a href="#1964" id="1964">1964</a>
+<a href="#1965" id="1965">1965</a>
+<a href="#1966" id="1966">1966</a>
+<a href="#1967" id="1967">1967</a>
+<a href="#1968" id="1968">1968</a>
+<a href="#1969" id="1969">1969</a>
+<a href="#1970" id="1970">1970</a>
+<a href="#1971" id="1971">1971</a>
+<a href="#1972" id="1972">1972</a>
+<a href="#1973" id="1973">1973</a>
+<a href="#1974" id="1974">1974</a>
+<a href="#1975" id="1975">1975</a>
+<a href="#1976" id="1976">1976</a>
+<a href="#1977" id="1977">1977</a>
+<a href="#1978" id="1978">1978</a>
+<a href="#1979" id="1979">1979</a>
+<a href="#1980" id="1980">1980</a>
+<a href="#1981" id="1981">1981</a>
+<a href="#1982" id="1982">1982</a>
+<a href="#1983" id="1983">1983</a>
+<a href="#1984" id="1984">1984</a>
+<a href="#1985" id="1985">1985</a>
+<a href="#1986" id="1986">1986</a>
+<a href="#1987" id="1987">1987</a>
+<a href="#1988" id="1988">1988</a>
+<a href="#1989" id="1989">1989</a>
+<a href="#1990" id="1990">1990</a>
+<a href="#1991" id="1991">1991</a>
+<a href="#1992" id="1992">1992</a>
+<a href="#1993" id="1993">1993</a>
+<a href="#1994" id="1994">1994</a>
+<a href="#1995" id="1995">1995</a>
+<a href="#1996" id="1996">1996</a>
+<a href="#1997" id="1997">1997</a>
+<a href="#1998" id="1998">1998</a>
+<a href="#1999" id="1999">1999</a>
+<a href="#2000" id="2000">2000</a>
+<a href="#2001" id="2001">2001</a>
+<a href="#2002" id="2002">2002</a>
+<a href="#2003" id="2003">2003</a>
+<a href="#2004" id="2004">2004</a>
+<a href="#2005" id="2005">2005</a>
+<a href="#2006" id="2006">2006</a>
+<a href="#2007" id="2007">2007</a>
+<a href="#2008" id="2008">2008</a>
+<a href="#2009" id="2009">2009</a>
+<a href="#2010" id="2010">2010</a>
+<a href="#2011" id="2011">2011</a>
+<a href="#2012" id="2012">2012</a>
+<a href="#2013" id="2013">2013</a>
+<a href="#2014" id="2014">2014</a>
+<a href="#2015" id="2015">2015</a>
+<a href="#2016" id="2016">2016</a>
+<a href="#2017" id="2017">2017</a>
+<a href="#2018" id="2018">2018</a>
+<a href="#2019" id="2019">2019</a>
+<a href="#2020" id="2020">2020</a>
+<a href="#2021" id="2021">2021</a>
+<a href="#2022" id="2022">2022</a>
+<a href="#2023" id="2023">2023</a>
+<a href="#2024" id="2024">2024</a>
+<a href="#2025" id="2025">2025</a>
+<a href="#2026" id="2026">2026</a>
+<a href="#2027" id="2027">2027</a>
+<a href="#2028" id="2028">2028</a>
+<a href="#2029" id="2029">2029</a>
+<a href="#2030" id="2030">2030</a>
+<a href="#2031" id="2031">2031</a>
+<a href="#2032" id="2032">2032</a>
+<a href="#2033" id="2033">2033</a>
+<a href="#2034" id="2034">2034</a>
+<a href="#2035" id="2035">2035</a>
+<a href="#2036" id="2036">2036</a>
+<a href="#2037" id="2037">2037</a>
+<a href="#2038" id="2038">2038</a>
+<a href="#2039" id="2039">2039</a>
+<a href="#2040" id="2040">2040</a>
+<a href="#2041" id="2041">2041</a>
+<a href="#2042" id="2042">2042</a>
+<a href="#2043" id="2043">2043</a>
+<a href="#2044" id="2044">2044</a>
+<a href="#2045" id="2045">2045</a>
+<a href="#2046" id="2046">2046</a>
+<a href="#2047" id="2047">2047</a>
+<a href="#2048" id="2048">2048</a>
+<a href="#2049" id="2049">2049</a>
+<a href="#2050" id="2050">2050</a>
+<a href="#2051" id="2051">2051</a>
+<a href="#2052" id="2052">2052</a>
+<a href="#2053" id="2053">2053</a>
+<a href="#2054" id="2054">2054</a>
+<a href="#2055" id="2055">2055</a>
+<a href="#2056" id="2056">2056</a>
+<a href="#2057" id="2057">2057</a>
+<a href="#2058" id="2058">2058</a>
+<a href="#2059" id="2059">2059</a>
+<a href="#2060" id="2060">2060</a>
+<a href="#2061" id="2061">2061</a>
+<a href="#2062" id="2062">2062</a>
+<a href="#2063" id="2063">2063</a>
+<a href="#2064" id="2064">2064</a>
+<a href="#2065" id="2065">2065</a>
+<a href="#2066" id="2066">2066</a>
+<a href="#2067" id="2067">2067</a>
+<a href="#2068" id="2068">2068</a>
+<a href="#2069" id="2069">2069</a>
+<a href="#2070" id="2070">2070</a>
+<a href="#2071" id="2071">2071</a>
+<a href="#2072" id="2072">2072</a>
+<a href="#2073" id="2073">2073</a>
+<a href="#2074" id="2074">2074</a>
+<a href="#2075" id="2075">2075</a>
+<a href="#2076" id="2076">2076</a>
+<a href="#2077" id="2077">2077</a>
+<a href="#2078" id="2078">2078</a>
+<a href="#2079" id="2079">2079</a>
+<a href="#2080" id="2080">2080</a>
+<a href="#2081" id="2081">2081</a>
+<a href="#2082" id="2082">2082</a>
+<a href="#2083" id="2083">2083</a>
+<a href="#2084" id="2084">2084</a>
+<a href="#2085" id="2085">2085</a>
+<a href="#2086" id="2086">2086</a>
+<a href="#2087" id="2087">2087</a>
+<a href="#2088" id="2088">2088</a>
+<a href="#2089" id="2089">2089</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2018-2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span>std::ffi;
+<span class="kw">use </span>std::ptr;
+<span class="kw">use </span>std::slice;
+<span class="kw">use </span>std::sync::atomic;
+
+<span class="kw">use </span>std::net::Ipv4Addr;
+<span class="kw">use </span>std::net::Ipv6Addr;
+<span class="kw">use </span>std::net::SocketAddrV4;
+<span class="kw">use </span>std::net::SocketAddrV6;
+
+<span class="attr">#[cfg(unix)]
+</span><span class="kw">use </span>std::os::unix::io::FromRawFd;
+
+<span class="kw">use </span>libc::c_char;
+<span class="kw">use </span>libc::c_int;
+<span class="kw">use </span>libc::c_void;
+<span class="kw">use </span>libc::size_t;
+<span class="kw">use </span>libc::sockaddr;
+<span class="kw">use </span>libc::ssize_t;
+<span class="kw">use </span>libc::timespec;
+
+<span class="attr">#[cfg(not(windows))]
+</span><span class="kw">use </span>libc::AF_INET;
+<span class="attr">#[cfg(windows)]
+</span><span class="kw">use </span>winapi::shared::ws2def::AF_INET;
+
+<span class="attr">#[cfg(not(windows))]
+</span><span class="kw">use </span>libc::AF_INET6;
+<span class="attr">#[cfg(windows)]
+</span><span class="kw">use </span>winapi::shared::ws2def::AF_INET6;
+
+<span class="attr">#[cfg(not(windows))]
+</span><span class="kw">use </span>libc::in_addr;
+<span class="attr">#[cfg(windows)]
+</span><span class="kw">use </span>winapi::shared::inaddr::IN_ADDR <span class="kw">as </span>in_addr;
+
+<span class="attr">#[cfg(not(windows))]
+</span><span class="kw">use </span>libc::in6_addr;
+<span class="attr">#[cfg(windows)]
+</span><span class="kw">use </span>winapi::shared::in6addr::IN6_ADDR <span class="kw">as </span>in6_addr;
+
+<span class="attr">#[cfg(not(windows))]
+</span><span class="kw">use </span>libc::sa_family_t;
+<span class="attr">#[cfg(windows)]
+</span><span class="kw">use </span>winapi::shared::ws2def::ADDRESS_FAMILY <span class="kw">as </span>sa_family_t;
+
+<span class="attr">#[cfg(not(windows))]
+</span><span class="kw">use </span>libc::sockaddr_in;
+<span class="attr">#[cfg(windows)]
+</span><span class="kw">use </span>winapi::shared::ws2def::SOCKADDR_IN <span class="kw">as </span>sockaddr_in;
+
+<span class="attr">#[cfg(not(windows))]
+</span><span class="kw">use </span>libc::sockaddr_in6;
+<span class="attr">#[cfg(windows)]
+</span><span class="kw">use </span>winapi::shared::ws2ipdef::SOCKADDR_IN6_LH <span class="kw">as </span>sockaddr_in6;
+
+<span class="attr">#[cfg(not(windows))]
+</span><span class="kw">use </span>libc::sockaddr_storage;
+<span class="attr">#[cfg(windows)]
+</span><span class="kw">use </span>winapi::shared::ws2def::SOCKADDR_STORAGE_LH <span class="kw">as </span>sockaddr_storage;
+
+<span class="attr">#[cfg(windows)]
+</span><span class="kw">use </span>libc::c_int <span class="kw">as </span>socklen_t;
+<span class="attr">#[cfg(not(windows))]
+</span><span class="kw">use </span>libc::socklen_t;
+
+<span class="attr">#[cfg(windows)]
+</span><span class="kw">use </span>winapi::shared::in6addr::in6_addr_u;
+<span class="attr">#[cfg(windows)]
+</span><span class="kw">use </span>winapi::shared::inaddr::in_addr_S_un;
+<span class="attr">#[cfg(windows)]
+</span><span class="kw">use </span>winapi::shared::ws2ipdef::SOCKADDR_IN6_LH_u;
+
+<span class="kw">use crate</span>::<span class="kw-2">*</span>;
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_version() -&gt; <span class="kw-2">*const </span>u8 {
+    <span class="kw">static </span>VERSION: <span class="kw-2">&amp;</span>str = <span class="macro">concat!</span>(<span class="macro">env!</span>(<span class="string">"CARGO_PKG_VERSION"</span>), <span class="string">"\0"</span>);
+    VERSION.as_ptr()
+}
+
+<span class="kw">struct </span>Logger {
+    cb: <span class="kw">extern fn</span>(line: <span class="kw-2">*const </span>u8, argp: <span class="kw-2">*mut </span>c_void),
+    argp: std::sync::atomic::AtomicPtr&lt;c_void&gt;,
+}
+
+<span class="kw">impl </span>log::Log <span class="kw">for </span>Logger {
+    <span class="kw">fn </span>enabled(<span class="kw-2">&amp;</span><span class="self">self</span>, _metadata: <span class="kw-2">&amp;</span>log::Metadata) -&gt; bool {
+        <span class="bool-val">true
+    </span>}
+
+    <span class="kw">fn </span>log(<span class="kw-2">&amp;</span><span class="self">self</span>, record: <span class="kw-2">&amp;</span>log::Record) {
+        <span class="kw">let </span>line = <span class="macro">format!</span>(<span class="string">"{}: {}\0"</span>, record.target(), record.args());
+        (<span class="self">self</span>.cb)(line.as_ptr(), <span class="self">self</span>.argp.load(atomic::Ordering::Relaxed));
+    }
+
+    <span class="kw">fn </span>flush(<span class="kw-2">&amp;</span><span class="self">self</span>) {}
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_enable_debug_logging(
+    cb: <span class="kw">extern fn</span>(line: <span class="kw-2">*const </span>u8, argp: <span class="kw-2">*mut </span>c_void), argp: <span class="kw-2">*mut </span>c_void,
+) -&gt; c_int {
+    <span class="kw">let </span>argp = atomic::AtomicPtr::new(argp);
+    <span class="kw">let </span>logger = Box::new(Logger { cb, argp });
+
+    <span class="kw">if </span>log::set_boxed_logger(logger).is_err() {
+        <span class="kw">return </span>-<span class="number">1</span>;
+    }
+
+    log::set_max_level(log::LevelFilter::Trace);
+
+    <span class="number">0
+</span>}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_new(version: u32) -&gt; <span class="kw-2">*mut </span>Config {
+    <span class="kw">match </span>Config::new(version) {
+        <span class="prelude-val">Ok</span>(c) =&gt; Box::into_raw(Box::new(c)),
+
+        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; ptr::null_mut(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_load_cert_chain_from_pem_file(
+    config: <span class="kw-2">&amp;mut </span>Config, path: <span class="kw-2">*const </span>c_char,
+) -&gt; c_int {
+    <span class="kw">let </span>path = <span class="kw">unsafe </span>{ ffi::CStr::from_ptr(path).to_str().unwrap() };
+
+    <span class="kw">match </span>config.load_cert_chain_from_pem_file(path) {
+        <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; <span class="number">0</span>,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_load_priv_key_from_pem_file(
+    config: <span class="kw-2">&amp;mut </span>Config, path: <span class="kw-2">*const </span>c_char,
+) -&gt; c_int {
+    <span class="kw">let </span>path = <span class="kw">unsafe </span>{ ffi::CStr::from_ptr(path).to_str().unwrap() };
+
+    <span class="kw">match </span>config.load_priv_key_from_pem_file(path) {
+        <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; <span class="number">0</span>,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_load_verify_locations_from_file(
+    config: <span class="kw-2">&amp;mut </span>Config, path: <span class="kw-2">*const </span>c_char,
+) -&gt; c_int {
+    <span class="kw">let </span>path = <span class="kw">unsafe </span>{ ffi::CStr::from_ptr(path).to_str().unwrap() };
+
+    <span class="kw">match </span>config.load_verify_locations_from_file(path) {
+        <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; <span class="number">0</span>,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_load_verify_locations_from_directory(
+    config: <span class="kw-2">&amp;mut </span>Config, path: <span class="kw-2">*const </span>c_char,
+) -&gt; c_int {
+    <span class="kw">let </span>path = <span class="kw">unsafe </span>{ ffi::CStr::from_ptr(path).to_str().unwrap() };
+
+    <span class="kw">match </span>config.load_verify_locations_from_directory(path) {
+        <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; <span class="number">0</span>,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_verify_peer(config: <span class="kw-2">&amp;mut </span>Config, v: bool) {
+    config.verify_peer(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_grease(config: <span class="kw-2">&amp;mut </span>Config, v: bool) {
+    config.grease(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_discover_pmtu(config: <span class="kw-2">&amp;mut </span>Config, v: bool) {
+    config.discover_pmtu(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_log_keys(config: <span class="kw-2">&amp;mut </span>Config) {
+    config.log_keys();
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_enable_early_data(config: <span class="kw-2">&amp;mut </span>Config) {
+    config.enable_early_data();
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="doccomment">/// Corresponds to the `Config::set_application_protos_wire_format` Rust
+/// function.
+</span><span class="kw">pub extern fn </span>quiche_config_set_application_protos(
+    config: <span class="kw-2">&amp;mut </span>Config, protos: <span class="kw-2">*const </span>u8, protos_len: size_t,
+) -&gt; c_int {
+    <span class="kw">let </span>protos = <span class="kw">unsafe </span>{ slice::from_raw_parts(protos, protos_len) };
+
+    <span class="kw">match </span>config.set_application_protos_wire_format(protos) {
+        <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; <span class="number">0</span>,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_max_idle_timeout(config: <span class="kw-2">&amp;mut </span>Config, v: u64) {
+    config.set_max_idle_timeout(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_max_recv_udp_payload_size(
+    config: <span class="kw-2">&amp;mut </span>Config, v: size_t,
+) {
+    config.set_max_recv_udp_payload_size(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_initial_max_data(config: <span class="kw-2">&amp;mut </span>Config, v: u64) {
+    config.set_initial_max_data(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_initial_max_stream_data_bidi_local(
+    config: <span class="kw-2">&amp;mut </span>Config, v: u64,
+) {
+    config.set_initial_max_stream_data_bidi_local(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_initial_max_stream_data_bidi_remote(
+    config: <span class="kw-2">&amp;mut </span>Config, v: u64,
+) {
+    config.set_initial_max_stream_data_bidi_remote(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_initial_max_stream_data_uni(
+    config: <span class="kw-2">&amp;mut </span>Config, v: u64,
+) {
+    config.set_initial_max_stream_data_uni(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_initial_max_streams_bidi(
+    config: <span class="kw-2">&amp;mut </span>Config, v: u64,
+) {
+    config.set_initial_max_streams_bidi(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_initial_max_streams_uni(
+    config: <span class="kw-2">&amp;mut </span>Config, v: u64,
+) {
+    config.set_initial_max_streams_uni(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_ack_delay_exponent(config: <span class="kw-2">&amp;mut </span>Config, v: u64) {
+    config.set_ack_delay_exponent(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_max_ack_delay(config: <span class="kw-2">&amp;mut </span>Config, v: u64) {
+    config.set_max_ack_delay(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_disable_active_migration(
+    config: <span class="kw-2">&amp;mut </span>Config, v: bool,
+) {
+    config.set_disable_active_migration(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_cc_algorithm_name(
+    config: <span class="kw-2">&amp;mut </span>Config, name: <span class="kw-2">*const </span>c_char,
+) -&gt; c_int {
+    <span class="kw">let </span>name = <span class="kw">unsafe </span>{ ffi::CStr::from_ptr(name).to_str().unwrap() };
+    <span class="kw">match </span>config.set_cc_algorithm_name(name) {
+        <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; <span class="number">0</span>,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_cc_algorithm(
+    config: <span class="kw-2">&amp;mut </span>Config, algo: CongestionControlAlgorithm,
+) {
+    config.set_cc_algorithm(algo);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_initial_congestion_window_packets(
+    config: <span class="kw-2">&amp;mut </span>Config, packets: size_t,
+) {
+    config.set_initial_congestion_window_packets(packets);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_enable_hystart(config: <span class="kw-2">&amp;mut </span>Config, v: bool) {
+    config.enable_hystart(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_enable_pacing(config: <span class="kw-2">&amp;mut </span>Config, v: bool) {
+    config.enable_pacing(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_max_pacing_rate(config: <span class="kw-2">&amp;mut </span>Config, v: u64) {
+    config.set_max_pacing_rate(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_enable_dgram(
+    config: <span class="kw-2">&amp;mut </span>Config, enabled: bool, recv_queue_len: size_t,
+    send_queue_len: size_t,
+) {
+    config.enable_dgram(enabled, recv_queue_len, send_queue_len);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_max_send_udp_payload_size(
+    config: <span class="kw-2">&amp;mut </span>Config, v: size_t,
+) {
+    config.set_max_send_udp_payload_size(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_max_connection_window(
+    config: <span class="kw-2">&amp;mut </span>Config, v: u64,
+) {
+    config.set_max_connection_window(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_max_stream_window(config: <span class="kw-2">&amp;mut </span>Config, v: u64) {
+    config.set_max_stream_window(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_active_connection_id_limit(
+    config: <span class="kw-2">&amp;mut </span>Config, v: u64,
+) {
+    config.set_active_connection_id_limit(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_stateless_reset_token(
+    config: <span class="kw-2">&amp;mut </span>Config, v: <span class="kw-2">*const </span>u8,
+) {
+    <span class="kw">let </span>reset_token = <span class="kw">unsafe </span>{ slice::from_raw_parts(v, <span class="number">16</span>) };
+    <span class="kw">let </span>reset_token = <span class="kw">match </span>reset_token.try_into() {
+        <span class="prelude-val">Ok</span>(rt) =&gt; rt,
+        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="macro">unreachable!</span>(),
+    };
+    <span class="kw">let </span>reset_token = u128::from_be_bytes(reset_token);
+    config.set_stateless_reset_token(<span class="prelude-val">Some</span>(reset_token));
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_disable_dcid_reuse(config: <span class="kw-2">&amp;mut </span>Config, v: bool) {
+    config.set_disable_dcid_reuse(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_set_ticket_key(
+    config: <span class="kw-2">&amp;mut </span>Config, key: <span class="kw-2">*const </span>u8, key_len: size_t,
+) -&gt; c_int {
+    <span class="kw">let </span>key = <span class="kw">unsafe </span>{ slice::from_raw_parts(key, key_len) };
+
+    <span class="kw">match </span>config.set_ticket_key(key) {
+        <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; <span class="number">0</span>,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_config_free(config: <span class="kw-2">*mut </span>Config) {
+    drop(<span class="kw">unsafe </span>{ Box::from_raw(config) });
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_header_info(
+    buf: <span class="kw-2">*mut </span>u8, buf_len: size_t, dcil: size_t, version: <span class="kw-2">*mut </span>u32, ty: <span class="kw-2">*mut </span>u8,
+    scid: <span class="kw-2">*mut </span>u8, scid_len: <span class="kw-2">*mut </span>size_t, dcid: <span class="kw-2">*mut </span>u8, dcid_len: <span class="kw-2">*mut </span>size_t,
+    token: <span class="kw-2">*mut </span>u8, token_len: <span class="kw-2">*mut </span>size_t,
+) -&gt; c_int {
+    <span class="kw">let </span>buf = <span class="kw">unsafe </span>{ slice::from_raw_parts_mut(buf, buf_len) };
+    <span class="kw">let </span>hdr = <span class="kw">match </span>Header::from_slice(buf, dcil) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+        <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span>e.to_c() <span class="kw">as </span>c_int,
+    };
+
+    <span class="kw">unsafe </span>{
+        <span class="kw-2">*</span>version = hdr.version;
+
+        <span class="kw-2">*</span>ty = <span class="kw">match </span>hdr.ty {
+            Type::Initial =&gt; <span class="number">1</span>,
+            Type::Retry =&gt; <span class="number">2</span>,
+            Type::Handshake =&gt; <span class="number">3</span>,
+            Type::ZeroRTT =&gt; <span class="number">4</span>,
+            Type::Short =&gt; <span class="number">5</span>,
+            Type::VersionNegotiation =&gt; <span class="number">6</span>,
+        };
+
+        <span class="kw">if </span><span class="kw-2">*</span>scid_len &lt; hdr.scid.len() {
+            <span class="kw">return </span>-<span class="number">1</span>;
+        }
+
+        <span class="kw">let </span>scid = slice::from_raw_parts_mut(scid, <span class="kw-2">*</span>scid_len);
+        <span class="kw">let </span>scid = <span class="kw-2">&amp;mut </span>scid[..hdr.scid.len()];
+        scid.copy_from_slice(<span class="kw-2">&amp;</span>hdr.scid);
+
+        <span class="kw-2">*</span>scid_len = hdr.scid.len();
+
+        <span class="kw">if </span><span class="kw-2">*</span>dcid_len &lt; hdr.dcid.len() {
+            <span class="kw">return </span>-<span class="number">1</span>;
+        }
+
+        <span class="kw">let </span>dcid = slice::from_raw_parts_mut(dcid, <span class="kw-2">*</span>dcid_len);
+        <span class="kw">let </span>dcid = <span class="kw-2">&amp;mut </span>dcid[..hdr.dcid.len()];
+        dcid.copy_from_slice(<span class="kw-2">&amp;</span>hdr.dcid);
+
+        <span class="kw-2">*</span>dcid_len = hdr.dcid.len();
+
+        <span class="kw">match </span>hdr.token {
+            <span class="prelude-val">Some</span>(tok) =&gt; {
+                <span class="kw">if </span><span class="kw-2">*</span>token_len &lt; tok.len() {
+                    <span class="kw">return </span>-<span class="number">1</span>;
+                }
+
+                <span class="kw">let </span>token = slice::from_raw_parts_mut(token, <span class="kw-2">*</span>token_len);
+                <span class="kw">let </span>token = <span class="kw-2">&amp;mut </span>token[..tok.len()];
+                token.copy_from_slice(<span class="kw-2">&amp;</span>tok);
+
+                <span class="kw-2">*</span>token_len = tok.len();
+            },
+
+            <span class="prelude-val">None </span>=&gt; <span class="kw-2">*</span>token_len = <span class="number">0</span>,
+        }
+    }
+
+    <span class="number">0
+</span>}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_accept(
+    scid: <span class="kw-2">*const </span>u8, scid_len: size_t, odcid: <span class="kw-2">*const </span>u8, odcid_len: size_t,
+    local: <span class="kw-2">&amp;</span>sockaddr, local_len: socklen_t, peer: <span class="kw-2">&amp;</span>sockaddr, peer_len: socklen_t,
+    config: <span class="kw-2">&amp;mut </span>Config,
+) -&gt; <span class="kw-2">*mut </span>Connection {
+    <span class="kw">let </span>scid = <span class="kw">unsafe </span>{ slice::from_raw_parts(scid, scid_len) };
+    <span class="kw">let </span>scid = ConnectionId::from_ref(scid);
+
+    <span class="kw">let </span>odcid = <span class="kw">if </span>!odcid.is_null() &amp;&amp; odcid_len &gt; <span class="number">0 </span>{
+        <span class="prelude-val">Some</span>(ConnectionId::from_ref(<span class="kw">unsafe </span>{
+            slice::from_raw_parts(odcid, odcid_len)
+        }))
+    } <span class="kw">else </span>{
+        <span class="prelude-val">None
+    </span>};
+
+    <span class="kw">let </span>local = std_addr_from_c(local, local_len);
+    <span class="kw">let </span>peer = std_addr_from_c(peer, peer_len);
+
+    <span class="kw">match </span>accept(<span class="kw-2">&amp;</span>scid, odcid.as_ref(), local, peer, config) {
+        <span class="prelude-val">Ok</span>(c) =&gt; Box::into_raw(Box::new(c)),
+
+        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; ptr::null_mut(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_connect(
+    server_name: <span class="kw-2">*const </span>c_char, scid: <span class="kw-2">*const </span>u8, scid_len: size_t,
+    local: <span class="kw-2">&amp;</span>sockaddr, local_len: socklen_t, peer: <span class="kw-2">&amp;</span>sockaddr, peer_len: socklen_t,
+    config: <span class="kw-2">&amp;mut </span>Config,
+) -&gt; <span class="kw-2">*mut </span>Connection {
+    <span class="kw">let </span>server_name = <span class="kw">if </span>server_name.is_null() {
+        <span class="prelude-val">None
+    </span>} <span class="kw">else </span>{
+        <span class="prelude-val">Some</span>(<span class="kw">unsafe </span>{ ffi::CStr::from_ptr(server_name).to_str().unwrap() })
+    };
+
+    <span class="kw">let </span>scid = <span class="kw">unsafe </span>{ slice::from_raw_parts(scid, scid_len) };
+    <span class="kw">let </span>scid = ConnectionId::from_ref(scid);
+
+    <span class="kw">let </span>local = std_addr_from_c(local, local_len);
+    <span class="kw">let </span>peer = std_addr_from_c(peer, peer_len);
+
+    <span class="kw">match </span>connect(server_name, <span class="kw-2">&amp;</span>scid, local, peer, config) {
+        <span class="prelude-val">Ok</span>(c) =&gt; Box::into_raw(Box::new(c)),
+
+        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; ptr::null_mut(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_negotiate_version(
+    scid: <span class="kw-2">*const </span>u8, scid_len: size_t, dcid: <span class="kw-2">*const </span>u8, dcid_len: size_t,
+    out: <span class="kw-2">*mut </span>u8, out_len: size_t,
+) -&gt; ssize_t {
+    <span class="kw">let </span>scid = <span class="kw">unsafe </span>{ slice::from_raw_parts(scid, scid_len) };
+    <span class="kw">let </span>scid = ConnectionId::from_ref(scid);
+
+    <span class="kw">let </span>dcid = <span class="kw">unsafe </span>{ slice::from_raw_parts(dcid, dcid_len) };
+    <span class="kw">let </span>dcid = ConnectionId::from_ref(dcid);
+
+    <span class="kw">let </span>out = <span class="kw">unsafe </span>{ slice::from_raw_parts_mut(out, out_len) };
+
+    <span class="kw">match </span>negotiate_version(<span class="kw-2">&amp;</span>scid, <span class="kw-2">&amp;</span>dcid, out) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v <span class="kw">as </span>ssize_t,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_version_is_supported(version: u32) -&gt; bool {
+    version_is_supported(version)
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_retry(
+    scid: <span class="kw-2">*const </span>u8, scid_len: size_t, dcid: <span class="kw-2">*const </span>u8, dcid_len: size_t,
+    new_scid: <span class="kw-2">*const </span>u8, new_scid_len: size_t, token: <span class="kw-2">*const </span>u8,
+    token_len: size_t, version: u32, out: <span class="kw-2">*mut </span>u8, out_len: size_t,
+) -&gt; ssize_t {
+    <span class="kw">let </span>scid = <span class="kw">unsafe </span>{ slice::from_raw_parts(scid, scid_len) };
+    <span class="kw">let </span>scid = ConnectionId::from_ref(scid);
+
+    <span class="kw">let </span>dcid = <span class="kw">unsafe </span>{ slice::from_raw_parts(dcid, dcid_len) };
+    <span class="kw">let </span>dcid = ConnectionId::from_ref(dcid);
+
+    <span class="kw">let </span>new_scid = <span class="kw">unsafe </span>{ slice::from_raw_parts(new_scid, new_scid_len) };
+    <span class="kw">let </span>new_scid = ConnectionId::from_ref(new_scid);
+
+    <span class="kw">let </span>token = <span class="kw">unsafe </span>{ slice::from_raw_parts(token, token_len) };
+    <span class="kw">let </span>out = <span class="kw">unsafe </span>{ slice::from_raw_parts_mut(out, out_len) };
+
+    <span class="kw">match </span>retry(<span class="kw-2">&amp;</span>scid, <span class="kw-2">&amp;</span>dcid, <span class="kw-2">&amp;</span>new_scid, token, version, out) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v <span class="kw">as </span>ssize_t,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_new_with_tls(
+    scid: <span class="kw-2">*const </span>u8, scid_len: size_t, odcid: <span class="kw-2">*const </span>u8, odcid_len: size_t,
+    local: <span class="kw-2">&amp;</span>sockaddr, local_len: socklen_t, peer: <span class="kw-2">&amp;</span>sockaddr, peer_len: socklen_t,
+    config: <span class="kw-2">&amp;</span>Config, ssl: <span class="kw-2">*mut </span>c_void, is_server: bool,
+) -&gt; <span class="kw-2">*mut </span>Connection {
+    <span class="kw">let </span>scid = <span class="kw">unsafe </span>{ slice::from_raw_parts(scid, scid_len) };
+    <span class="kw">let </span>scid = ConnectionId::from_ref(scid);
+
+    <span class="kw">let </span>odcid = <span class="kw">if </span>!odcid.is_null() &amp;&amp; odcid_len &gt; <span class="number">0 </span>{
+        <span class="prelude-val">Some</span>(ConnectionId::from_ref(<span class="kw">unsafe </span>{
+            slice::from_raw_parts(odcid, odcid_len)
+        }))
+    } <span class="kw">else </span>{
+        <span class="prelude-val">None
+    </span>};
+
+    <span class="kw">let </span>local = std_addr_from_c(local, local_len);
+    <span class="kw">let </span>peer = std_addr_from_c(peer, peer_len);
+
+    <span class="kw">let </span>tls = <span class="kw">unsafe </span>{ tls::Handshake::from_ptr(ssl) };
+
+    <span class="kw">match </span>Connection::with_tls(
+        <span class="kw-2">&amp;</span>scid,
+        odcid.as_ref(),
+        local,
+        peer,
+        config,
+        tls,
+        is_server,
+    ) {
+        <span class="prelude-val">Ok</span>(c) =&gt; Box::into_raw(Box::new(c)),
+
+        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; ptr::null_mut(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_set_keylog_path(
+    conn: <span class="kw-2">&amp;mut </span>Connection, path: <span class="kw-2">*const </span>c_char,
+) -&gt; bool {
+    <span class="kw">let </span>filename = <span class="kw">unsafe </span>{ ffi::CStr::from_ptr(path).to_str().unwrap() };
+
+    <span class="kw">let </span>file = std::fs::OpenOptions::new()
+        .create(<span class="bool-val">true</span>)
+        .append(<span class="bool-val">true</span>)
+        .open(filename);
+
+    <span class="kw">let </span>writer = <span class="kw">match </span>file {
+        <span class="prelude-val">Ok</span>(f) =&gt; std::io::BufWriter::new(f),
+
+        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="kw">return </span><span class="bool-val">false</span>,
+    };
+
+    conn.set_keylog(Box::new(writer));
+
+    <span class="bool-val">true
+</span>}
+
+<span class="attr">#[no_mangle]
+#[cfg(unix)]
+</span><span class="kw">pub extern fn </span>quiche_conn_set_keylog_fd(conn: <span class="kw-2">&amp;mut </span>Connection, fd: c_int) {
+    <span class="kw">let </span>f = <span class="kw">unsafe </span>{ std::fs::File::from_raw_fd(fd) };
+    <span class="kw">let </span>writer = std::io::BufWriter::new(f);
+
+    conn.set_keylog(Box::new(writer));
+}
+
+<span class="attr">#[no_mangle]
+#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">pub extern fn </span>quiche_conn_set_qlog_path(
+    conn: <span class="kw-2">&amp;mut </span>Connection, path: <span class="kw-2">*const </span>c_char, log_title: <span class="kw-2">*const </span>c_char,
+    log_desc: <span class="kw-2">*const </span>c_char,
+) -&gt; bool {
+    <span class="kw">let </span>filename = <span class="kw">unsafe </span>{ ffi::CStr::from_ptr(path).to_str().unwrap() };
+
+    <span class="kw">let </span>file = std::fs::OpenOptions::new()
+        .write(<span class="bool-val">true</span>)
+        .create_new(<span class="bool-val">true</span>)
+        .open(filename);
+
+    <span class="kw">let </span>writer = <span class="kw">match </span>file {
+        <span class="prelude-val">Ok</span>(f) =&gt; std::io::BufWriter::new(f),
+
+        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="kw">return </span><span class="bool-val">false</span>,
+    };
+
+    <span class="kw">let </span>title = <span class="kw">unsafe </span>{ ffi::CStr::from_ptr(log_title).to_str().unwrap() };
+    <span class="kw">let </span>description = <span class="kw">unsafe </span>{ ffi::CStr::from_ptr(log_desc).to_str().unwrap() };
+
+    conn.set_qlog(
+        Box::new(writer),
+        title.to_string(),
+        <span class="macro">format!</span>(<span class="string">"{} id={}"</span>, description, conn.trace_id),
+    );
+
+    <span class="bool-val">true
+</span>}
+
+<span class="attr">#[no_mangle]
+#[cfg(all(unix, feature = <span class="string">"qlog"</span>))]
+</span><span class="kw">pub extern fn </span>quiche_conn_set_qlog_fd(
+    conn: <span class="kw-2">&amp;mut </span>Connection, fd: c_int, log_title: <span class="kw-2">*const </span>c_char,
+    log_desc: <span class="kw-2">*const </span>c_char,
+) {
+    <span class="kw">let </span>f = <span class="kw">unsafe </span>{ std::fs::File::from_raw_fd(fd) };
+    <span class="kw">let </span>writer = std::io::BufWriter::new(f);
+
+    <span class="kw">let </span>title = <span class="kw">unsafe </span>{ ffi::CStr::from_ptr(log_title).to_str().unwrap() };
+    <span class="kw">let </span>description = <span class="kw">unsafe </span>{ ffi::CStr::from_ptr(log_desc).to_str().unwrap() };
+
+    conn.set_qlog(
+        Box::new(writer),
+        title.to_string(),
+        <span class="macro">format!</span>(<span class="string">"{} id={}"</span>, description, conn.trace_id),
+    );
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_set_session(
+    conn: <span class="kw-2">&amp;mut </span>Connection, buf: <span class="kw-2">*const </span>u8, buf_len: size_t,
+) -&gt; c_int {
+    <span class="kw">let </span>buf = <span class="kw">unsafe </span>{ slice::from_raw_parts(buf, buf_len) };
+
+    <span class="kw">match </span>conn.set_session(buf) {
+        <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; <span class="number">0</span>,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[repr(C)]
+</span><span class="kw">pub struct </span>RecvInfo&lt;<span class="lifetime">'a</span>&gt; {
+    from: <span class="kw-2">&amp;</span><span class="lifetime">'a </span>sockaddr,
+    from_len: socklen_t,
+    to: <span class="kw-2">&amp;</span><span class="lifetime">'a </span>sockaddr,
+    to_len: socklen_t,
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; From&lt;<span class="kw-2">&amp;</span>RecvInfo&lt;<span class="lifetime">'a</span>&gt;&gt; <span class="kw">for </span><span class="kw">crate</span>::RecvInfo {
+    <span class="kw">fn </span>from(info: <span class="kw-2">&amp;</span>RecvInfo) -&gt; <span class="kw">crate</span>::RecvInfo {
+        <span class="kw">crate</span>::RecvInfo {
+            from: std_addr_from_c(info.from, info.from_len),
+            to: std_addr_from_c(info.to, info.to_len),
+        }
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_recv(
+    conn: <span class="kw-2">&amp;mut </span>Connection, buf: <span class="kw-2">*mut </span>u8, buf_len: size_t, info: <span class="kw-2">&amp;</span>RecvInfo,
+) -&gt; ssize_t {
+    <span class="kw">if </span>buf_len &gt; &lt;ssize_t&gt;::max_value() <span class="kw">as </span>usize {
+        <span class="macro">panic!</span>(<span class="string">"The provided buffer is too large"</span>);
+    }
+
+    <span class="kw">let </span>buf = <span class="kw">unsafe </span>{ slice::from_raw_parts_mut(buf, buf_len) };
+
+    <span class="kw">match </span>conn.recv(buf, info.into()) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v <span class="kw">as </span>ssize_t,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c(),
+    }
+}
+
+<span class="attr">#[repr(C)]
+</span><span class="kw">pub struct </span>SendInfo {
+    from: sockaddr_storage,
+    from_len: socklen_t,
+    to: sockaddr_storage,
+    to_len: socklen_t,
+
+    at: timespec,
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_send(
+    conn: <span class="kw-2">&amp;mut </span>Connection, out: <span class="kw-2">*mut </span>u8, out_len: size_t, out_info: <span class="kw-2">&amp;mut </span>SendInfo,
+) -&gt; ssize_t {
+    <span class="kw">if </span>out_len &gt; &lt;ssize_t&gt;::max_value() <span class="kw">as </span>usize {
+        <span class="macro">panic!</span>(<span class="string">"The provided buffer is too large"</span>);
+    }
+
+    <span class="kw">let </span>out = <span class="kw">unsafe </span>{ slice::from_raw_parts_mut(out, out_len) };
+
+    <span class="kw">match </span>conn.send(out) {
+        <span class="prelude-val">Ok</span>((v, info)) =&gt; {
+            out_info.from_len = std_addr_to_c(<span class="kw-2">&amp;</span>info.from, <span class="kw-2">&amp;mut </span>out_info.from);
+            out_info.to_len = std_addr_to_c(<span class="kw-2">&amp;</span>info.to, <span class="kw-2">&amp;mut </span>out_info.to);
+
+            std_time_to_c(<span class="kw-2">&amp;</span>info.at, <span class="kw-2">&amp;mut </span>out_info.at);
+
+            v <span class="kw">as </span>ssize_t
+        },
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_send_on_path(
+    conn: <span class="kw-2">&amp;mut </span>Connection, out: <span class="kw-2">*mut </span>u8, out_len: size_t, from: <span class="kw-2">*const </span>sockaddr,
+    from_len: socklen_t, to: <span class="kw-2">*const </span>sockaddr, to_len: socklen_t,
+    out_info: <span class="kw-2">&amp;mut </span>SendInfo,
+) -&gt; ssize_t {
+    <span class="kw">if </span>out_len &gt; &lt;ssize_t&gt;::max_value() <span class="kw">as </span>usize {
+        <span class="macro">panic!</span>(<span class="string">"The provided buffer is too large"</span>);
+    }
+
+    <span class="kw">let </span>from = optional_std_addr_from_c(from, from_len);
+    <span class="kw">let </span>to = optional_std_addr_from_c(to, to_len);
+    <span class="kw">let </span>out = <span class="kw">unsafe </span>{ slice::from_raw_parts_mut(out, out_len) };
+
+    <span class="kw">match </span>conn.send_on_path(out, from, to) {
+        <span class="prelude-val">Ok</span>((v, info)) =&gt; {
+            out_info.from_len = std_addr_to_c(<span class="kw-2">&amp;</span>info.from, <span class="kw-2">&amp;mut </span>out_info.from);
+            out_info.to_len = std_addr_to_c(<span class="kw-2">&amp;</span>info.to, <span class="kw-2">&amp;mut </span>out_info.to);
+
+            std_time_to_c(<span class="kw-2">&amp;</span>info.at, <span class="kw-2">&amp;mut </span>out_info.at);
+
+            v <span class="kw">as </span>ssize_t
+        },
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_stream_recv(
+    conn: <span class="kw-2">&amp;mut </span>Connection, stream_id: u64, out: <span class="kw-2">*mut </span>u8, out_len: size_t,
+    fin: <span class="kw-2">&amp;mut </span>bool,
+) -&gt; ssize_t {
+    <span class="kw">if </span>out_len &gt; &lt;ssize_t&gt;::max_value() <span class="kw">as </span>usize {
+        <span class="macro">panic!</span>(<span class="string">"The provided buffer is too large"</span>);
+    }
+
+    <span class="kw">let </span>out = <span class="kw">unsafe </span>{ slice::from_raw_parts_mut(out, out_len) };
+
+    <span class="kw">let </span>(out_len, out_fin) = <span class="kw">match </span>conn.stream_recv(stream_id, out) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+        <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span>e.to_c(),
+    };
+
+    <span class="kw-2">*</span>fin = out_fin;
+
+    out_len <span class="kw">as </span>ssize_t
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_stream_send(
+    conn: <span class="kw-2">&amp;mut </span>Connection, stream_id: u64, buf: <span class="kw-2">*const </span>u8, buf_len: size_t,
+    fin: bool,
+) -&gt; ssize_t {
+    <span class="kw">if </span>buf_len &gt; &lt;ssize_t&gt;::max_value() <span class="kw">as </span>usize {
+        <span class="macro">panic!</span>(<span class="string">"The provided buffer is too large"</span>);
+    }
+
+    <span class="kw">let </span>buf = <span class="kw">unsafe </span>{ slice::from_raw_parts(buf, buf_len) };
+
+    <span class="kw">match </span>conn.stream_send(stream_id, buf, fin) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v <span class="kw">as </span>ssize_t,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_stream_priority(
+    conn: <span class="kw-2">&amp;mut </span>Connection, stream_id: u64, urgency: u8, incremental: bool,
+) -&gt; c_int {
+    <span class="kw">match </span>conn.stream_priority(stream_id, urgency, incremental) {
+        <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; <span class="number">0</span>,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_stream_shutdown(
+    conn: <span class="kw-2">&amp;mut </span>Connection, stream_id: u64, direction: Shutdown, err: u64,
+) -&gt; c_int {
+    <span class="kw">match </span>conn.stream_shutdown(stream_id, direction, err) {
+        <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; <span class="number">0</span>,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_stream_capacity(
+    conn: <span class="kw-2">&amp;</span>Connection, stream_id: u64,
+) -&gt; ssize_t {
+    <span class="kw">match </span>conn.stream_capacity(stream_id) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v <span class="kw">as </span>ssize_t,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_stream_readable(
+    conn: <span class="kw-2">&amp;</span>Connection, stream_id: u64,
+) -&gt; bool {
+    conn.stream_readable(stream_id)
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_stream_readable_next(conn: <span class="kw-2">&amp;mut </span>Connection) -&gt; i64 {
+    conn.stream_readable_next().map(|v| v <span class="kw">as </span>i64).unwrap_or(-<span class="number">1</span>)
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_stream_writable(
+    conn: <span class="kw-2">&amp;mut </span>Connection, stream_id: u64, len: usize,
+) -&gt; c_int {
+    <span class="kw">match </span>conn.stream_writable(stream_id, len) {
+        <span class="prelude-val">Ok</span>(<span class="bool-val">true</span>) =&gt; <span class="number">1</span>,
+
+        <span class="prelude-val">Ok</span>(<span class="bool-val">false</span>) =&gt; <span class="number">0</span>,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_stream_writable_next(conn: <span class="kw-2">&amp;mut </span>Connection) -&gt; i64 {
+    conn.stream_writable_next().map(|v| v <span class="kw">as </span>i64).unwrap_or(-<span class="number">1</span>)
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_stream_finished(
+    conn: <span class="kw-2">&amp;</span>Connection, stream_id: u64,
+) -&gt; bool {
+    conn.stream_finished(stream_id)
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_readable(conn: <span class="kw-2">&amp;</span>Connection) -&gt; <span class="kw-2">*mut </span>StreamIter {
+    Box::into_raw(Box::new(conn.readable()))
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_writable(conn: <span class="kw-2">&amp;</span>Connection) -&gt; <span class="kw-2">*mut </span>StreamIter {
+    Box::into_raw(Box::new(conn.writable()))
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_max_send_udp_payload_size(conn: <span class="kw-2">&amp;</span>Connection) -&gt; usize {
+    conn.max_send_udp_payload_size()
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_is_readable(conn: <span class="kw-2">&amp;</span>Connection) -&gt; bool {
+    conn.is_readable()
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_close(
+    conn: <span class="kw-2">&amp;mut </span>Connection, app: bool, err: u64, reason: <span class="kw-2">*const </span>u8,
+    reason_len: size_t,
+) -&gt; c_int {
+    <span class="kw">let </span>reason = <span class="kw">unsafe </span>{ slice::from_raw_parts(reason, reason_len) };
+
+    <span class="kw">match </span>conn.close(app, err, reason) {
+        <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; <span class="number">0</span>,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_timeout_as_nanos(conn: <span class="kw-2">&amp;</span>Connection) -&gt; u64 {
+    <span class="kw">match </span>conn.timeout() {
+        <span class="prelude-val">Some</span>(timeout) =&gt; timeout.as_nanos() <span class="kw">as </span>u64,
+
+        <span class="prelude-val">None </span>=&gt; u64::MAX,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_timeout_as_millis(conn: <span class="kw-2">&amp;</span>Connection) -&gt; u64 {
+    <span class="kw">match </span>conn.timeout() {
+        <span class="prelude-val">Some</span>(timeout) =&gt; timeout.as_millis() <span class="kw">as </span>u64,
+
+        <span class="prelude-val">None </span>=&gt; u64::MAX,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_on_timeout(conn: <span class="kw-2">&amp;mut </span>Connection) {
+    conn.on_timeout()
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_trace_id(
+    conn: <span class="kw-2">&amp;</span>Connection, out: <span class="kw-2">&amp;mut *const </span>u8, out_len: <span class="kw-2">&amp;mut </span>size_t,
+) {
+    <span class="kw">let </span>trace_id = conn.trace_id();
+
+    <span class="kw-2">*</span>out = trace_id.as_ptr();
+    <span class="kw-2">*</span>out_len = trace_id.len();
+}
+
+<span class="doccomment">/// An iterator over connection ids.
+</span><span class="attr">#[derive(Default)]
+</span><span class="kw">pub struct </span>ConnectionIdIter&lt;<span class="lifetime">'a</span>&gt; {
+    cids: Vec&lt;ConnectionId&lt;<span class="lifetime">'a</span>&gt;&gt;,
+    index: usize,
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; Iterator <span class="kw">for </span>ConnectionIdIter&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="kw">type </span>Item = ConnectionId&lt;<span class="lifetime">'a</span>&gt;;
+
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>next(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="self">Self</span>::Item&gt; {
+        <span class="kw">let </span>v = <span class="self">self</span>.cids.get(<span class="self">self</span>.index)<span class="question-mark">?</span>;
+        <span class="self">self</span>.index += <span class="number">1</span>;
+        <span class="prelude-val">Some</span>(v.clone())
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_source_ids(conn: <span class="kw-2">&amp;</span>Connection) -&gt; <span class="kw-2">*mut </span>ConnectionIdIter {
+    <span class="kw">let </span>vec = conn.source_ids().cloned().collect();
+    Box::into_raw(Box::new(ConnectionIdIter {
+        cids: vec,
+        index: <span class="number">0</span>,
+    }))
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_connection_id_iter_next(
+    iter: <span class="kw-2">&amp;mut </span>ConnectionIdIter, out: <span class="kw-2">&amp;mut *const </span>u8, out_len: <span class="kw-2">&amp;mut </span>size_t,
+) -&gt; bool {
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(conn_id) = iter.next() {
+        <span class="kw">let </span>id = conn_id.as_ref();
+        <span class="kw-2">*</span>out = id.as_ptr();
+        <span class="kw-2">*</span>out_len = id.len();
+        <span class="kw">return </span><span class="bool-val">true</span>;
+    }
+
+    <span class="bool-val">false
+</span>}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_connection_id_iter_free(iter: <span class="kw-2">*mut </span>ConnectionIdIter) {
+    drop(<span class="kw">unsafe </span>{ Box::from_raw(iter) });
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_source_id(
+    conn: <span class="kw-2">&amp;</span>Connection, out: <span class="kw-2">&amp;mut *const </span>u8, out_len: <span class="kw-2">&amp;mut </span>size_t,
+) {
+    <span class="kw">let </span>conn_id = conn.source_id();
+    <span class="kw">let </span>id = conn_id.as_ref();
+    <span class="kw-2">*</span>out = id.as_ptr();
+    <span class="kw-2">*</span>out_len = id.len();
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_destination_id(
+    conn: <span class="kw-2">&amp;</span>Connection, out: <span class="kw-2">&amp;mut *const </span>u8, out_len: <span class="kw-2">&amp;mut </span>size_t,
+) {
+    <span class="kw">let </span>conn_id = conn.destination_id();
+    <span class="kw">let </span>id = conn_id.as_ref();
+
+    <span class="kw-2">*</span>out = id.as_ptr();
+    <span class="kw-2">*</span>out_len = id.len();
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_application_proto(
+    conn: <span class="kw-2">&amp;</span>Connection, out: <span class="kw-2">&amp;mut *const </span>u8, out_len: <span class="kw-2">&amp;mut </span>size_t,
+) {
+    <span class="kw">let </span>proto = conn.application_proto();
+
+    <span class="kw-2">*</span>out = proto.as_ptr();
+    <span class="kw-2">*</span>out_len = proto.len();
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_peer_cert(
+    conn: <span class="kw-2">&amp;</span>Connection, out: <span class="kw-2">&amp;mut *const </span>u8, out_len: <span class="kw-2">&amp;mut </span>size_t,
+) {
+    <span class="kw">match </span>conn.peer_cert() {
+        <span class="prelude-val">Some</span>(peer_cert) =&gt; {
+            <span class="kw-2">*</span>out = peer_cert.as_ptr();
+            <span class="kw-2">*</span>out_len = peer_cert.len();
+        },
+
+        <span class="prelude-val">None </span>=&gt; <span class="kw-2">*</span>out_len = <span class="number">0</span>,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_session(
+    conn: <span class="kw-2">&amp;</span>Connection, out: <span class="kw-2">&amp;mut *const </span>u8, out_len: <span class="kw-2">&amp;mut </span>size_t,
+) {
+    <span class="kw">match </span>conn.session() {
+        <span class="prelude-val">Some</span>(session) =&gt; {
+            <span class="kw-2">*</span>out = session.as_ptr();
+            <span class="kw-2">*</span>out_len = session.len();
+        },
+
+        <span class="prelude-val">None </span>=&gt; <span class="kw-2">*</span>out_len = <span class="number">0</span>,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_is_established(conn: <span class="kw-2">&amp;</span>Connection) -&gt; bool {
+    conn.is_established()
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_is_resumed(conn: <span class="kw-2">&amp;</span>Connection) -&gt; bool {
+    conn.is_resumed()
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_is_in_early_data(conn: <span class="kw-2">&amp;</span>Connection) -&gt; bool {
+    conn.is_in_early_data()
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_is_draining(conn: <span class="kw-2">&amp;</span>Connection) -&gt; bool {
+    conn.is_draining()
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_is_closed(conn: <span class="kw-2">&amp;</span>Connection) -&gt; bool {
+    conn.is_closed()
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_is_timed_out(conn: <span class="kw-2">&amp;</span>Connection) -&gt; bool {
+    conn.is_timed_out()
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_peer_error(
+    conn: <span class="kw-2">&amp;</span>Connection, is_app: <span class="kw-2">*mut </span>bool, error_code: <span class="kw-2">*mut </span>u64,
+    reason: <span class="kw-2">&amp;mut *const </span>u8, reason_len: <span class="kw-2">&amp;mut </span>size_t,
+) -&gt; bool {
+    <span class="kw">match </span><span class="kw-2">&amp;</span>conn.peer_error {
+        <span class="prelude-val">Some</span>(conn_err) =&gt; <span class="kw">unsafe </span>{
+            <span class="kw-2">*</span>is_app = conn_err.is_app;
+            <span class="kw-2">*</span>error_code = conn_err.error_code;
+            <span class="kw-2">*</span>reason = conn_err.reason.as_ptr();
+            <span class="kw-2">*</span>reason_len = conn_err.reason.len();
+
+            <span class="bool-val">true
+        </span>},
+
+        <span class="prelude-val">None </span>=&gt; <span class="bool-val">false</span>,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_local_error(
+    conn: <span class="kw-2">&amp;</span>Connection, is_app: <span class="kw-2">*mut </span>bool, error_code: <span class="kw-2">*mut </span>u64,
+    reason: <span class="kw-2">&amp;mut *const </span>u8, reason_len: <span class="kw-2">&amp;mut </span>size_t,
+) -&gt; bool {
+    <span class="kw">match </span><span class="kw-2">&amp;</span>conn.local_error {
+        <span class="prelude-val">Some</span>(conn_err) =&gt; <span class="kw">unsafe </span>{
+            <span class="kw-2">*</span>is_app = conn_err.is_app;
+            <span class="kw-2">*</span>error_code = conn_err.error_code;
+            <span class="kw-2">*</span>reason = conn_err.reason.as_ptr();
+            <span class="kw-2">*</span>reason_len = conn_err.reason.len();
+
+            <span class="bool-val">true
+        </span>},
+
+        <span class="prelude-val">None </span>=&gt; <span class="bool-val">false</span>,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_stream_iter_next(
+    iter: <span class="kw-2">&amp;mut </span>StreamIter, stream_id: <span class="kw-2">*mut </span>u64,
+) -&gt; bool {
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(v) = iter.next() {
+        <span class="kw">unsafe </span>{ <span class="kw-2">*</span>stream_id = v };
+        <span class="kw">return </span><span class="bool-val">true</span>;
+    }
+
+    <span class="bool-val">false
+</span>}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_stream_iter_free(iter: <span class="kw-2">*mut </span>StreamIter) {
+    drop(<span class="kw">unsafe </span>{ Box::from_raw(iter) });
+}
+
+<span class="attr">#[repr(C)]
+</span><span class="kw">pub struct </span>Stats {
+    recv: usize,
+    sent: usize,
+    lost: usize,
+    retrans: usize,
+    sent_bytes: u64,
+    recv_bytes: u64,
+    lost_bytes: u64,
+    stream_retrans_bytes: u64,
+    paths_count: usize,
+    reset_stream_count_local: u64,
+    stopped_stream_count_local: u64,
+    reset_stream_count_remote: u64,
+    stopped_stream_count_remote: u64,
+}
+
+<span class="kw">pub struct </span>TransportParams {
+    max_idle_timeout: u64,
+    max_udp_payload_size: u64,
+    initial_max_data: u64,
+    initial_max_stream_data_bidi_local: u64,
+    initial_max_stream_data_bidi_remote: u64,
+    initial_max_stream_data_uni: u64,
+    initial_max_streams_bidi: u64,
+    initial_max_streams_uni: u64,
+    ack_delay_exponent: u64,
+    max_ack_delay: u64,
+    disable_active_migration: bool,
+    active_conn_id_limit: u64,
+    max_datagram_frame_size: ssize_t,
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_stats(conn: <span class="kw-2">&amp;</span>Connection, out: <span class="kw-2">&amp;mut </span>Stats) {
+    <span class="kw">let </span>stats = conn.stats();
+
+    out.recv = stats.recv;
+    out.sent = stats.sent;
+    out.lost = stats.lost;
+    out.retrans = stats.retrans;
+    out.sent_bytes = stats.sent_bytes;
+    out.recv_bytes = stats.recv_bytes;
+    out.lost_bytes = stats.lost_bytes;
+    out.stream_retrans_bytes = stats.stream_retrans_bytes;
+    out.paths_count = stats.paths_count;
+    out.reset_stream_count_local = stats.reset_stream_count_local;
+    out.stopped_stream_count_local = stats.stopped_stream_count_local;
+    out.reset_stream_count_remote = stats.reset_stream_count_remote;
+    out.stopped_stream_count_remote = stats.stopped_stream_count_remote;
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_peer_transport_params(
+    conn: <span class="kw-2">&amp;</span>Connection, out: <span class="kw-2">&amp;mut </span>TransportParams,
+) -&gt; bool {
+    <span class="kw">let </span>tps = <span class="kw">match </span>conn.peer_transport_params() {
+        <span class="prelude-val">Some</span>(v) =&gt; v,
+        <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="bool-val">false</span>,
+    };
+
+    out.max_idle_timeout = tps.max_idle_timeout;
+    out.max_udp_payload_size = tps.max_udp_payload_size;
+    out.initial_max_data = tps.initial_max_data;
+    out.initial_max_stream_data_bidi_local =
+        tps.initial_max_stream_data_bidi_local;
+    out.initial_max_stream_data_bidi_remote =
+        tps.initial_max_stream_data_bidi_remote;
+    out.initial_max_stream_data_uni = tps.initial_max_stream_data_uni;
+    out.initial_max_streams_bidi = tps.initial_max_streams_bidi;
+    out.initial_max_streams_uni = tps.initial_max_streams_uni;
+    out.ack_delay_exponent = tps.ack_delay_exponent;
+    out.max_ack_delay = tps.max_ack_delay;
+    out.disable_active_migration = tps.disable_active_migration;
+    out.active_conn_id_limit = tps.active_conn_id_limit;
+    out.max_datagram_frame_size = <span class="kw">match </span>tps.max_datagram_frame_size {
+        <span class="prelude-val">None </span>=&gt; Error::Done.to_c(),
+
+        <span class="prelude-val">Some</span>(v) =&gt; v <span class="kw">as </span>ssize_t,
+    };
+
+    <span class="bool-val">true
+</span>}
+
+<span class="attr">#[repr(C)]
+</span><span class="kw">pub struct </span>PathStats {
+    local_addr: sockaddr_storage,
+    local_addr_len: socklen_t,
+    peer_addr: sockaddr_storage,
+    peer_addr_len: socklen_t,
+    validation_state: ssize_t,
+    active: bool,
+    recv: usize,
+    sent: usize,
+    lost: usize,
+    retrans: usize,
+    rtt: u64,
+    cwnd: usize,
+    sent_bytes: u64,
+    recv_bytes: u64,
+    lost_bytes: u64,
+    stream_retrans_bytes: u64,
+    pmtu: usize,
+    delivery_rate: u64,
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_path_stats(
+    conn: <span class="kw-2">&amp;</span>Connection, idx: usize, out: <span class="kw-2">&amp;mut </span>PathStats,
+) -&gt; c_int {
+    <span class="kw">let </span>stats = <span class="kw">match </span>conn.path_stats().nth(idx) {
+        <span class="prelude-val">Some</span>(p) =&gt; p,
+        <span class="prelude-val">None </span>=&gt; <span class="kw">return </span>Error::Done.to_c() <span class="kw">as </span>c_int,
+    };
+
+    out.local_addr_len = std_addr_to_c(<span class="kw-2">&amp;</span>stats.local_addr, <span class="kw-2">&amp;mut </span>out.local_addr);
+    out.peer_addr_len = std_addr_to_c(<span class="kw-2">&amp;</span>stats.peer_addr, <span class="kw-2">&amp;mut </span>out.peer_addr);
+    out.validation_state = stats.validation_state.to_c();
+    out.active = stats.active;
+    out.recv = stats.recv;
+    out.sent = stats.sent;
+    out.lost = stats.lost;
+    out.retrans = stats.retrans;
+    out.rtt = stats.rtt.as_nanos() <span class="kw">as </span>u64;
+    out.cwnd = stats.cwnd;
+    out.sent_bytes = stats.sent_bytes;
+    out.recv_bytes = stats.recv_bytes;
+    out.lost_bytes = stats.lost_bytes;
+    out.stream_retrans_bytes = stats.stream_retrans_bytes;
+    out.pmtu = stats.pmtu;
+    out.delivery_rate = stats.delivery_rate;
+
+    <span class="number">0
+</span>}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_is_server(conn: <span class="kw-2">&amp;</span>Connection) -&gt; bool {
+    conn.is_server()
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_dgram_max_writable_len(conn: <span class="kw-2">&amp;</span>Connection) -&gt; ssize_t {
+    <span class="kw">match </span>conn.dgram_max_writable_len() {
+        <span class="prelude-val">None </span>=&gt; Error::Done.to_c(),
+
+        <span class="prelude-val">Some</span>(v) =&gt; v <span class="kw">as </span>ssize_t,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_dgram_recv_front_len(conn: <span class="kw-2">&amp;</span>Connection) -&gt; ssize_t {
+    <span class="kw">match </span>conn.dgram_recv_front_len() {
+        <span class="prelude-val">None </span>=&gt; Error::Done.to_c(),
+
+        <span class="prelude-val">Some</span>(v) =&gt; v <span class="kw">as </span>ssize_t,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_dgram_recv_queue_len(conn: <span class="kw-2">&amp;</span>Connection) -&gt; ssize_t {
+    conn.dgram_recv_queue_len() <span class="kw">as </span>ssize_t
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_dgram_recv_queue_byte_size(
+    conn: <span class="kw-2">&amp;</span>Connection,
+) -&gt; ssize_t {
+    conn.dgram_recv_queue_byte_size() <span class="kw">as </span>ssize_t
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_dgram_send_queue_len(conn: <span class="kw-2">&amp;</span>Connection) -&gt; ssize_t {
+    conn.dgram_send_queue_len() <span class="kw">as </span>ssize_t
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_dgram_send_queue_byte_size(
+    conn: <span class="kw-2">&amp;</span>Connection,
+) -&gt; ssize_t {
+    conn.dgram_send_queue_byte_size() <span class="kw">as </span>ssize_t
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_dgram_send(
+    conn: <span class="kw-2">&amp;mut </span>Connection, buf: <span class="kw-2">*const </span>u8, buf_len: size_t,
+) -&gt; ssize_t {
+    <span class="kw">if </span>buf_len &gt; &lt;ssize_t&gt;::max_value() <span class="kw">as </span>usize {
+        <span class="macro">panic!</span>(<span class="string">"The provided buffer is too large"</span>);
+    }
+
+    <span class="kw">let </span>buf = <span class="kw">unsafe </span>{ slice::from_raw_parts(buf, buf_len) };
+
+    <span class="kw">match </span>conn.dgram_send(buf) {
+        <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; buf_len <span class="kw">as </span>ssize_t,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_dgram_recv(
+    conn: <span class="kw-2">&amp;mut </span>Connection, out: <span class="kw-2">*mut </span>u8, out_len: size_t,
+) -&gt; ssize_t {
+    <span class="kw">if </span>out_len &gt; &lt;ssize_t&gt;::max_value() <span class="kw">as </span>usize {
+        <span class="macro">panic!</span>(<span class="string">"The provided buffer is too large"</span>);
+    }
+
+    <span class="kw">let </span>out = <span class="kw">unsafe </span>{ slice::from_raw_parts_mut(out, out_len) };
+
+    <span class="kw">let </span>out_len = <span class="kw">match </span>conn.dgram_recv(out) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+        <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span>e.to_c(),
+    };
+
+    out_len <span class="kw">as </span>ssize_t
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_dgram_purge_outgoing(
+    conn: <span class="kw-2">&amp;mut </span>Connection, f: <span class="kw">extern fn</span>(<span class="kw-2">*const </span>u8, size_t) -&gt; bool,
+) {
+    conn.dgram_purge_outgoing(|d: <span class="kw-2">&amp;</span>[u8]| -&gt; bool {
+        <span class="kw">let </span>ptr: <span class="kw-2">*const </span>u8 = d.as_ptr();
+        <span class="kw">let </span>len: size_t = d.len();
+
+        f(ptr, len)
+    });
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_is_dgram_send_queue_full(conn: <span class="kw-2">&amp;</span>Connection) -&gt; bool {
+    conn.is_dgram_send_queue_full()
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_is_dgram_recv_queue_full(conn: <span class="kw-2">&amp;</span>Connection) -&gt; bool {
+    conn.is_dgram_recv_queue_full()
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_send_ack_eliciting(conn: <span class="kw-2">&amp;mut </span>Connection) -&gt; ssize_t {
+    <span class="kw">match </span>conn.send_ack_eliciting() {
+        <span class="prelude-val">Ok</span>(()) =&gt; <span class="number">0</span>,
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_send_ack_eliciting_on_path(
+    conn: <span class="kw-2">&amp;mut </span>Connection, local: <span class="kw-2">&amp;</span>sockaddr, local_len: socklen_t,
+    peer: <span class="kw-2">&amp;</span>sockaddr, peer_len: socklen_t,
+) -&gt; ssize_t {
+    <span class="kw">let </span>local = std_addr_from_c(local, local_len);
+    <span class="kw">let </span>peer = std_addr_from_c(peer, peer_len);
+    <span class="kw">match </span>conn.send_ack_eliciting_on_path(local, peer) {
+        <span class="prelude-val">Ok</span>(()) =&gt; <span class="number">0</span>,
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_free(conn: <span class="kw-2">*mut </span>Connection) {
+    drop(<span class="kw">unsafe </span>{ Box::from_raw(conn) });
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_peer_streams_left_bidi(conn: <span class="kw-2">&amp;</span>Connection) -&gt; u64 {
+    conn.peer_streams_left_bidi()
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_peer_streams_left_uni(conn: <span class="kw-2">&amp;</span>Connection) -&gt; u64 {
+    conn.peer_streams_left_uni()
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_send_quantum(conn: <span class="kw-2">&amp;</span>Connection) -&gt; size_t {
+    conn.send_quantum() <span class="kw">as </span>size_t
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_active_scids(conn: <span class="kw-2">&amp;</span>Connection) -&gt; size_t {
+    conn.active_scids() <span class="kw">as </span>size_t
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_scids_left(conn: <span class="kw-2">&amp;</span>Connection) -&gt; size_t {
+    conn.scids_left() <span class="kw">as </span>size_t
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_new_scid(
+    conn: <span class="kw-2">&amp;mut </span>Connection, scid: <span class="kw-2">*const </span>u8, scid_len: size_t,
+    reset_token: <span class="kw-2">*const </span>u8, retire_if_needed: bool, scid_seq: <span class="kw-2">*mut </span>u64,
+) -&gt; c_int {
+    <span class="kw">let </span>scid = <span class="kw">unsafe </span>{ slice::from_raw_parts(scid, scid_len) };
+    <span class="kw">let </span>scid = ConnectionId::from_ref(scid);
+
+    <span class="kw">let </span>reset_token = <span class="kw">unsafe </span>{ slice::from_raw_parts(reset_token, <span class="number">16</span>) };
+    <span class="kw">let </span>reset_token = <span class="kw">match </span>reset_token.try_into() {
+        <span class="prelude-val">Ok</span>(rt) =&gt; rt,
+        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="macro">unreachable!</span>(),
+    };
+    <span class="kw">let </span>reset_token = u128::from_be_bytes(reset_token);
+
+    <span class="kw">match </span>conn.new_scid(<span class="kw-2">&amp;</span>scid, reset_token, retire_if_needed) {
+        <span class="prelude-val">Ok</span>(c) =&gt; {
+            <span class="kw">unsafe </span>{ <span class="kw-2">*</span>scid_seq = c }
+            <span class="number">0
+        </span>},
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_retire_dcid(
+    conn: <span class="kw-2">&amp;mut </span>Connection, dcid_seq: u64,
+) -&gt; c_int {
+    <span class="kw">match </span>conn.retire_dcid(dcid_seq) {
+        <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; <span class="number">0</span>,
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_available_dcids(conn: <span class="kw-2">&amp;</span>Connection) -&gt; size_t {
+    conn.available_dcids() <span class="kw">as </span>size_t
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_retired_scids(conn: <span class="kw-2">&amp;</span>Connection) -&gt; size_t {
+    conn.retired_scids() <span class="kw">as </span>size_t
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_retired_scid_next(
+    conn: <span class="kw-2">&amp;mut </span>Connection, out: <span class="kw-2">&amp;mut *const </span>u8, out_len: <span class="kw-2">&amp;mut </span>size_t,
+) -&gt; bool {
+    <span class="kw">match </span>conn.retired_scid_next() {
+        <span class="prelude-val">None </span>=&gt; <span class="bool-val">false</span>,
+
+        <span class="prelude-val">Some</span>(conn_id) =&gt; {
+            <span class="kw">let </span>id = conn_id.as_ref();
+            <span class="kw-2">*</span>out = id.as_ptr();
+            <span class="kw-2">*</span>out_len = id.len();
+            <span class="bool-val">true
+        </span>},
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_send_quantum_on_path(
+    conn: <span class="kw-2">&amp;</span>Connection, local: <span class="kw-2">&amp;</span>sockaddr, local_len: socklen_t, peer: <span class="kw-2">&amp;</span>sockaddr,
+    peer_len: socklen_t,
+) -&gt; size_t {
+    <span class="kw">let </span>local = std_addr_from_c(local, local_len);
+    <span class="kw">let </span>peer = std_addr_from_c(peer, peer_len);
+
+    conn.send_quantum_on_path(local, peer) <span class="kw">as </span>size_t
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_paths_iter(
+    conn: <span class="kw-2">&amp;</span>Connection, from: <span class="kw-2">&amp;</span>sockaddr, from_len: socklen_t,
+) -&gt; <span class="kw-2">*mut </span>SocketAddrIter {
+    <span class="kw">let </span>addr = std_addr_from_c(from, from_len);
+
+    Box::into_raw(Box::new(conn.paths_iter(addr)))
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_socket_addr_iter_next(
+    iter: <span class="kw-2">&amp;mut </span>SocketAddrIter, peer: <span class="kw-2">&amp;mut </span>sockaddr_storage,
+    peer_len: <span class="kw-2">*mut </span>socklen_t,
+) -&gt; bool {
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(v) = iter.next() {
+        <span class="kw">unsafe </span>{ <span class="kw-2">*</span>peer_len = std_addr_to_c(<span class="kw-2">&amp;</span>v, peer) }
+        <span class="kw">return </span><span class="bool-val">true</span>;
+    }
+
+    <span class="bool-val">false
+</span>}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_socket_addr_iter_free(iter: <span class="kw-2">*mut </span>SocketAddrIter) {
+    drop(<span class="kw">unsafe </span>{ Box::from_raw(iter) });
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_is_path_validated(
+    conn: <span class="kw-2">&amp;</span>Connection, from: <span class="kw-2">&amp;</span>sockaddr, from_len: socklen_t, to: <span class="kw-2">&amp;</span>sockaddr,
+    to_len: socklen_t,
+) -&gt; c_int {
+    <span class="kw">let </span>from = std_addr_from_c(from, from_len);
+    <span class="kw">let </span>to = std_addr_from_c(to, to_len);
+    <span class="kw">match </span>conn.is_path_validated(from, to) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v <span class="kw">as </span>c_int,
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_probe_path(
+    conn: <span class="kw-2">&amp;mut </span>Connection, local: <span class="kw-2">&amp;</span>sockaddr, local_len: socklen_t,
+    peer: <span class="kw-2">&amp;</span>sockaddr, peer_len: socklen_t, seq: <span class="kw-2">*mut </span>u64,
+) -&gt; c_int {
+    <span class="kw">let </span>local = std_addr_from_c(local, local_len);
+    <span class="kw">let </span>peer = std_addr_from_c(peer, peer_len);
+    <span class="kw">match </span>conn.probe_path(local, peer) {
+        <span class="prelude-val">Ok</span>(v) =&gt; {
+            <span class="kw">unsafe </span>{ <span class="kw-2">*</span>seq = v }
+            <span class="number">0
+        </span>},
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_migrate_source(
+    conn: <span class="kw-2">&amp;mut </span>Connection, local: <span class="kw-2">&amp;</span>sockaddr, local_len: socklen_t, seq: <span class="kw-2">*mut </span>u64,
+) -&gt; c_int {
+    <span class="kw">let </span>local = std_addr_from_c(local, local_len);
+    <span class="kw">match </span>conn.migrate_source(local) {
+        <span class="prelude-val">Ok</span>(v) =&gt; {
+            <span class="kw">unsafe </span>{ <span class="kw-2">*</span>seq = v }
+            <span class="number">0
+        </span>},
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_migrate(
+    conn: <span class="kw-2">&amp;mut </span>Connection, local: <span class="kw-2">&amp;</span>sockaddr, local_len: socklen_t,
+    peer: <span class="kw-2">&amp;</span>sockaddr, peer_len: socklen_t, seq: <span class="kw-2">*mut </span>u64,
+) -&gt; c_int {
+    <span class="kw">let </span>local = std_addr_from_c(local, local_len);
+    <span class="kw">let </span>peer = std_addr_from_c(peer, peer_len);
+    <span class="kw">match </span>conn.migrate(local, peer) {
+        <span class="prelude-val">Ok</span>(v) =&gt; {
+            <span class="kw">unsafe </span>{ <span class="kw-2">*</span>seq = v }
+            <span class="number">0
+        </span>},
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_conn_path_event_next(
+    conn: <span class="kw-2">&amp;mut </span>Connection,
+) -&gt; <span class="kw-2">*const </span>PathEvent {
+    <span class="kw">match </span>conn.path_event_next() {
+        <span class="prelude-val">Some</span>(v) =&gt; Box::into_raw(Box::new(v)),
+        <span class="prelude-val">None </span>=&gt; ptr::null(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_path_event_type(ev: <span class="kw-2">&amp;</span>PathEvent) -&gt; u32 {
+    <span class="kw">match </span>ev {
+        PathEvent::New { .. } =&gt; <span class="number">0</span>,
+
+        PathEvent::Validated { .. } =&gt; <span class="number">1</span>,
+
+        PathEvent::FailedValidation { .. } =&gt; <span class="number">2</span>,
+
+        PathEvent::Closed { .. } =&gt; <span class="number">3</span>,
+
+        PathEvent::ReusedSourceConnectionId { .. } =&gt; <span class="number">4</span>,
+
+        PathEvent::PeerMigrated { .. } =&gt; <span class="number">5</span>,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_path_event_new(
+    ev: <span class="kw-2">&amp;</span>PathEvent, local_addr: <span class="kw-2">&amp;mut </span>sockaddr_storage,
+    local_addr_len: <span class="kw-2">&amp;mut </span>socklen_t, peer_addr: <span class="kw-2">&amp;mut </span>sockaddr_storage,
+    peer_addr_len: <span class="kw-2">&amp;mut </span>socklen_t,
+) {
+    <span class="kw">match </span>ev {
+        PathEvent::New(local, peer) =&gt; {
+            <span class="kw-2">*</span>local_addr_len = std_addr_to_c(local, local_addr);
+            <span class="kw-2">*</span>peer_addr_len = std_addr_to_c(peer, peer_addr)
+        },
+
+        <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_path_event_validated(
+    ev: <span class="kw-2">&amp;</span>PathEvent, local_addr: <span class="kw-2">&amp;mut </span>sockaddr_storage,
+    local_addr_len: <span class="kw-2">&amp;mut </span>socklen_t, peer_addr: <span class="kw-2">&amp;mut </span>sockaddr_storage,
+    peer_addr_len: <span class="kw-2">&amp;mut </span>socklen_t,
+) {
+    <span class="kw">match </span>ev {
+        PathEvent::Validated(local, peer) =&gt; {
+            <span class="kw-2">*</span>local_addr_len = std_addr_to_c(local, local_addr);
+            <span class="kw-2">*</span>peer_addr_len = std_addr_to_c(peer, peer_addr)
+        },
+
+        <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_path_event_failed_validation(
+    ev: <span class="kw-2">&amp;</span>PathEvent, local_addr: <span class="kw-2">&amp;mut </span>sockaddr_storage,
+    local_addr_len: <span class="kw-2">&amp;mut </span>socklen_t, peer_addr: <span class="kw-2">&amp;mut </span>sockaddr_storage,
+    peer_addr_len: <span class="kw-2">&amp;mut </span>socklen_t,
+) {
+    <span class="kw">match </span>ev {
+        PathEvent::FailedValidation(local, peer) =&gt; {
+            <span class="kw-2">*</span>local_addr_len = std_addr_to_c(local, local_addr);
+            <span class="kw-2">*</span>peer_addr_len = std_addr_to_c(peer, peer_addr)
+        },
+
+        <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_path_event_closed(
+    ev: <span class="kw-2">&amp;</span>PathEvent, local_addr: <span class="kw-2">&amp;mut </span>sockaddr_storage,
+    local_addr_len: <span class="kw-2">&amp;mut </span>socklen_t, peer_addr: <span class="kw-2">&amp;mut </span>sockaddr_storage,
+    peer_addr_len: <span class="kw-2">&amp;mut </span>socklen_t,
+) {
+    <span class="kw">match </span>ev {
+        PathEvent::Closed(local, peer) =&gt; {
+            <span class="kw-2">*</span>local_addr_len = std_addr_to_c(local, local_addr);
+            <span class="kw-2">*</span>peer_addr_len = std_addr_to_c(peer, peer_addr)
+        },
+
+        <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_path_event_reused_source_connection_id(
+    ev: <span class="kw-2">&amp;</span>PathEvent, cid_sequence_number: <span class="kw-2">&amp;mut </span>u64,
+    old_local_addr: <span class="kw-2">&amp;mut </span>sockaddr_storage, old_local_addr_len: <span class="kw-2">&amp;mut </span>socklen_t,
+    old_peer_addr: <span class="kw-2">&amp;mut </span>sockaddr_storage, old_peer_addr_len: <span class="kw-2">&amp;mut </span>socklen_t,
+    local_addr: <span class="kw-2">&amp;mut </span>sockaddr_storage, local_addr_len: <span class="kw-2">&amp;mut </span>socklen_t,
+    peer_addr: <span class="kw-2">&amp;mut </span>sockaddr_storage, peer_addr_len: <span class="kw-2">&amp;mut </span>socklen_t,
+) {
+    <span class="kw">match </span>ev {
+        PathEvent::ReusedSourceConnectionId(id, old, new) =&gt; {
+            <span class="kw-2">*</span>cid_sequence_number = <span class="kw-2">*</span>id;
+            <span class="kw-2">*</span>old_local_addr_len = std_addr_to_c(<span class="kw-2">&amp;</span>old.<span class="number">0</span>, old_local_addr);
+            <span class="kw-2">*</span>old_peer_addr_len = std_addr_to_c(<span class="kw-2">&amp;</span>old.<span class="number">1</span>, old_peer_addr);
+
+            <span class="kw-2">*</span>local_addr_len = std_addr_to_c(<span class="kw-2">&amp;</span>new.<span class="number">0</span>, local_addr);
+            <span class="kw-2">*</span>peer_addr_len = std_addr_to_c(<span class="kw-2">&amp;</span>new.<span class="number">1</span>, peer_addr)
+        },
+
+        <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_path_event_peer_migrated(
+    ev: <span class="kw-2">&amp;</span>PathEvent, local_addr: <span class="kw-2">&amp;mut </span>sockaddr_storage,
+    local_addr_len: <span class="kw-2">&amp;mut </span>socklen_t, peer_addr: <span class="kw-2">&amp;mut </span>sockaddr_storage,
+    peer_addr_len: <span class="kw-2">&amp;mut </span>socklen_t,
+) {
+    <span class="kw">match </span>ev {
+        PathEvent::PeerMigrated(local, peer) =&gt; {
+            <span class="kw-2">*</span>local_addr_len = std_addr_to_c(local, local_addr);
+            <span class="kw-2">*</span>peer_addr_len = std_addr_to_c(peer, peer_addr);
+        },
+
+        <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_path_event_free(ev: <span class="kw-2">*mut </span>PathEvent) {
+    drop(<span class="kw">unsafe </span>{ Box::from_raw(ev) });
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_put_varint(
+    buf: <span class="kw-2">*mut </span>u8, buf_len: size_t, val: u64,
+) -&gt; c_int {
+    <span class="kw">let </span>buf = <span class="kw">unsafe </span>{ slice::from_raw_parts_mut(buf, buf_len) };
+
+    <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(buf);
+    <span class="kw">match </span>b.put_varint(val) {
+        <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; <span class="number">0</span>,
+
+        <span class="prelude-val">Err</span>(e) =&gt; {
+            <span class="kw">let </span>err: Error = e.into();
+            err.to_c() <span class="kw">as </span>c_int
+        },
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_get_varint(
+    buf: <span class="kw-2">*const </span>u8, buf_len: size_t, val: <span class="kw-2">*mut </span>u64,
+) -&gt; ssize_t {
+    <span class="kw">let </span>buf = <span class="kw">unsafe </span>{ slice::from_raw_parts(buf, buf_len) };
+
+    <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(buf);
+    <span class="kw">match </span>b.get_varint() {
+        <span class="prelude-val">Ok</span>(v) =&gt; <span class="kw">unsafe </span>{ <span class="kw-2">*</span>val = v },
+
+        <span class="prelude-val">Err</span>(e) =&gt; {
+            <span class="kw">let </span>err: Error = e.into();
+            <span class="kw">return </span>err.to_c();
+        },
+    };
+
+    b.off() <span class="kw">as </span>ssize_t
+}
+
+<span class="kw">fn </span>optional_std_addr_from_c(
+    addr: <span class="kw-2">*const </span>sockaddr, addr_len: socklen_t,
+) -&gt; <span class="prelude-ty">Option</span>&lt;SocketAddr&gt; {
+    <span class="kw">if </span>addr.is_null() || addr_len == <span class="number">0 </span>{
+        <span class="kw">return </span><span class="prelude-val">None</span>;
+    }
+
+    <span class="prelude-val">Some</span>({
+        <span class="kw">let </span>addr = <span class="kw">unsafe </span>{ slice::from_raw_parts(addr, addr_len <span class="kw">as </span>usize) };
+        std_addr_from_c(addr.first().unwrap(), addr_len)
+    })
+}
+
+<span class="kw">fn </span>std_addr_from_c(addr: <span class="kw-2">&amp;</span>sockaddr, addr_len: socklen_t) -&gt; SocketAddr {
+    <span class="kw">match </span>addr.sa_family <span class="kw">as </span>i32 {
+        AF_INET =&gt; {
+            <span class="macro">assert!</span>(addr_len <span class="kw">as </span>usize == std::mem::size_of::&lt;sockaddr_in&gt;());
+
+            <span class="kw">let </span>in4 = <span class="kw">unsafe </span>{ <span class="kw-2">*</span>(addr <span class="kw">as </span><span class="kw-2">*const </span><span class="kw">_ as </span><span class="kw-2">*const </span>sockaddr_in) };
+
+            <span class="attr">#[cfg(not(windows))]
+            </span><span class="kw">let </span>ip_addr = Ipv4Addr::from(u32::from_be(in4.sin_addr.s_addr));
+            <span class="attr">#[cfg(windows)]
+            </span><span class="kw">let </span>ip_addr = {
+                <span class="kw">let </span>ip_bytes = <span class="kw">unsafe </span>{ in4.sin_addr.S_un.S_un_b() };
+
+                Ipv4Addr::from([
+                    ip_bytes.s_b1,
+                    ip_bytes.s_b2,
+                    ip_bytes.s_b3,
+                    ip_bytes.s_b4,
+                ])
+            };
+
+            <span class="kw">let </span>port = u16::from_be(in4.sin_port);
+
+            <span class="kw">let </span>out = SocketAddrV4::new(ip_addr, port);
+
+            out.into()
+        },
+
+        AF_INET6 =&gt; {
+            <span class="macro">assert!</span>(addr_len <span class="kw">as </span>usize == std::mem::size_of::&lt;sockaddr_in6&gt;());
+
+            <span class="kw">let </span>in6 = <span class="kw">unsafe </span>{ <span class="kw-2">*</span>(addr <span class="kw">as </span><span class="kw-2">*const </span><span class="kw">_ as </span><span class="kw-2">*const </span>sockaddr_in6) };
+
+            <span class="kw">let </span>ip_addr = Ipv6Addr::from(
+                <span class="attr">#[cfg(not(windows))]
+                </span>in6.sin6_addr.s6_addr,
+                <span class="attr">#[cfg(windows)]
+                </span><span class="kw-2">*</span><span class="kw">unsafe </span>{ in6.sin6_addr.u.Byte() },
+            );
+
+            <span class="kw">let </span>port = u16::from_be(in6.sin6_port);
+
+            <span class="attr">#[cfg(not(windows))]
+            </span><span class="kw">let </span>scope_id = in6.sin6_scope_id;
+            <span class="attr">#[cfg(windows)]
+            </span><span class="kw">let </span>scope_id = <span class="kw">unsafe </span>{ <span class="kw-2">*</span>in6.u.sin6_scope_id() };
+
+            <span class="kw">let </span>out =
+                SocketAddrV6::new(ip_addr, port, in6.sin6_flowinfo, scope_id);
+
+            out.into()
+        },
+
+        <span class="kw">_ </span>=&gt; <span class="macro">unimplemented!</span>(<span class="string">"unsupported address type"</span>),
+    }
+}
+
+<span class="kw">fn </span>std_addr_to_c(addr: <span class="kw-2">&amp;</span>SocketAddr, out: <span class="kw-2">&amp;mut </span>sockaddr_storage) -&gt; socklen_t {
+    <span class="kw">let </span>sin_port = addr.port().to_be();
+
+    <span class="kw">match </span>addr {
+        SocketAddr::V4(addr) =&gt; <span class="kw">unsafe </span>{
+            <span class="kw">let </span>sa_len = std::mem::size_of::&lt;sockaddr_in&gt;();
+            <span class="kw">let </span>out_in = out <span class="kw">as </span><span class="kw-2">*mut </span><span class="kw">_ as </span><span class="kw-2">*mut </span>sockaddr_in;
+
+            <span class="kw">let </span>s_addr = u32::from_ne_bytes(addr.ip().octets());
+
+            <span class="attr">#[cfg(not(windows))]
+            </span><span class="kw">let </span>sin_addr = in_addr { s_addr };
+            <span class="attr">#[cfg(windows)]
+            </span><span class="kw">let </span>sin_addr = {
+                <span class="kw">let </span><span class="kw-2">mut </span>s_un = std::mem::zeroed::&lt;in_addr_S_un&gt;();
+                <span class="kw-2">*</span>s_un.S_addr_mut() = s_addr;
+                in_addr { S_un: s_un }
+            };
+
+            <span class="kw-2">*</span>out_in = sockaddr_in {
+                sin_family: AF_INET <span class="kw">as </span>sa_family_t,
+
+                sin_addr,
+
+                <span class="attr">#[cfg(any(
+                    target_os = <span class="string">"macos"</span>,
+                    target_os = <span class="string">"ios"</span>,
+                    target_os = <span class="string">"watchos"</span>,
+                    target_os = <span class="string">"freebsd"</span>,
+                    target_os = <span class="string">"dragonfly"</span>,
+                    target_os = <span class="string">"openbsd"</span>,
+                    target_os = <span class="string">"netbsd"
+                </span>))]
+                </span>sin_len: sa_len <span class="kw">as </span>u8,
+
+                sin_port,
+
+                sin_zero: std::mem::zeroed(),
+            };
+
+            sa_len <span class="kw">as </span>socklen_t
+        },
+
+        SocketAddr::V6(addr) =&gt; <span class="kw">unsafe </span>{
+            <span class="kw">let </span>sa_len = std::mem::size_of::&lt;sockaddr_in6&gt;();
+            <span class="kw">let </span>out_in6 = out <span class="kw">as </span><span class="kw-2">*mut </span><span class="kw">_ as </span><span class="kw-2">*mut </span>sockaddr_in6;
+
+            <span class="attr">#[cfg(not(windows))]
+            </span><span class="kw">let </span>sin6_addr = in6_addr {
+                s6_addr: addr.ip().octets(),
+            };
+            <span class="attr">#[cfg(windows)]
+            </span><span class="kw">let </span>sin6_addr = {
+                <span class="kw">let </span><span class="kw-2">mut </span>u = std::mem::zeroed::&lt;in6_addr_u&gt;();
+                <span class="kw-2">*</span>u.Byte_mut() = addr.ip().octets();
+                in6_addr { u }
+            };
+
+            <span class="attr">#[cfg(windows)]
+            </span><span class="kw">let </span>u = {
+                <span class="kw">let </span><span class="kw-2">mut </span>u = std::mem::zeroed::&lt;SOCKADDR_IN6_LH_u&gt;();
+                <span class="kw-2">*</span>u.sin6_scope_id_mut() = addr.scope_id();
+                u
+            };
+
+            <span class="kw-2">*</span>out_in6 = sockaddr_in6 {
+                sin6_family: AF_INET6 <span class="kw">as </span>sa_family_t,
+
+                sin6_addr,
+
+                <span class="attr">#[cfg(any(
+                    target_os = <span class="string">"macos"</span>,
+                    target_os = <span class="string">"ios"</span>,
+                    target_os = <span class="string">"watchos"</span>,
+                    target_os = <span class="string">"freebsd"</span>,
+                    target_os = <span class="string">"dragonfly"</span>,
+                    target_os = <span class="string">"openbsd"</span>,
+                    target_os = <span class="string">"netbsd"
+                </span>))]
+                </span>sin6_len: sa_len <span class="kw">as </span>u8,
+
+                sin6_port: sin_port,
+
+                sin6_flowinfo: addr.flowinfo(),
+
+                <span class="attr">#[cfg(not(windows))]
+                </span>sin6_scope_id: addr.scope_id(),
+                <span class="attr">#[cfg(windows)]
+                </span>u,
+            };
+
+            sa_len <span class="kw">as </span>socklen_t
+        },
+    }
+}
+
+<span class="attr">#[cfg(not(any(target_os = <span class="string">"macos"</span>, target_os = <span class="string">"ios"</span>, target_os = <span class="string">"windows"</span>)))]
+</span><span class="kw">fn </span>std_time_to_c(time: <span class="kw-2">&amp;</span>std::time::Instant, out: <span class="kw-2">&amp;mut </span>timespec) {
+    <span class="kw">const </span>INSTANT_ZERO: std::time::Instant =
+        <span class="kw">unsafe </span>{ std::mem::transmute(std::time::UNIX_EPOCH) };
+
+    <span class="kw">let </span>raw_time = time.duration_since(INSTANT_ZERO);
+
+    out.tv_sec = raw_time.as_secs() <span class="kw">as </span>libc::time_t;
+    out.tv_nsec = raw_time.subsec_nanos() <span class="kw">as </span>libc::c_long;
+}
+
+<span class="attr">#[cfg(any(target_os = <span class="string">"macos"</span>, target_os = <span class="string">"ios"</span>, target_os = <span class="string">"windows"</span>))]
+</span><span class="kw">fn </span>std_time_to_c(_time: <span class="kw-2">&amp;</span>std::time::Instant, out: <span class="kw-2">&amp;mut </span>timespec) {
+    <span class="comment">// TODO: implement Instant conversion for systems that don't use timespec.
+    </span>out.tv_sec = <span class="number">0</span>;
+    out.tv_nsec = <span class="number">0</span>;
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[cfg(windows)]
+    </span><span class="kw">use </span>winapi::um::ws2tcpip::inet_ntop;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>addr_v4() {
+        <span class="kw">let </span>addr = <span class="string">"127.0.0.1:8080"</span>.parse().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>out: sockaddr_storage = <span class="kw">unsafe </span>{ std::mem::zeroed() };
+
+        <span class="macro">assert_eq!</span>(
+            std_addr_to_c(<span class="kw-2">&amp;</span>addr, <span class="kw-2">&amp;mut </span>out),
+            std::mem::size_of::&lt;sockaddr_in&gt;() <span class="kw">as </span>socklen_t
+        );
+
+        <span class="kw">let </span>s = std::ffi::CString::new(<span class="string">"ddd.ddd.ddd.ddd"</span>).unwrap();
+
+        <span class="kw">let </span>s = <span class="kw">unsafe </span>{
+            <span class="kw">let </span>in_addr = <span class="kw-2">&amp;</span>out <span class="kw">as </span><span class="kw-2">*const </span><span class="kw">_ as </span><span class="kw-2">*const </span>sockaddr_in;
+            <span class="macro">assert_eq!</span>(u16::from_be((<span class="kw-2">*</span>in_addr).sin_port), addr.port());
+
+            <span class="kw">let </span>dst = s.into_raw();
+
+            inet_ntop(
+                AF_INET,
+                <span class="kw-2">&amp;</span>((<span class="kw-2">*</span>in_addr).sin_addr) <span class="kw">as </span><span class="kw-2">*const </span><span class="kw">_ as </span><span class="kw-2">*const </span>c_void,
+                dst,
+                <span class="number">16</span>,
+            );
+
+            std::ffi::CString::from_raw(dst).into_string().unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(s, <span class="string">"127.0.0.1"</span>);
+
+        <span class="kw">let </span>addr = <span class="kw">unsafe </span>{
+            std_addr_from_c(
+                <span class="kw-2">&amp;*</span>(<span class="kw-2">&amp;</span>out <span class="kw">as </span><span class="kw-2">*const </span><span class="kw">_ as </span><span class="kw-2">*const </span>sockaddr),
+                std::mem::size_of::&lt;sockaddr_in&gt;() <span class="kw">as </span>socklen_t,
+            )
+        };
+
+        <span class="macro">assert_eq!</span>(addr, <span class="string">"127.0.0.1:8080"</span>.parse().unwrap());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>addr_v6() {
+        <span class="kw">let </span>addr = <span class="string">"[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:8080"
+            </span>.parse()
+            .unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>out: sockaddr_storage = <span class="kw">unsafe </span>{ std::mem::zeroed() };
+
+        <span class="macro">assert_eq!</span>(
+            std_addr_to_c(<span class="kw-2">&amp;</span>addr, <span class="kw-2">&amp;mut </span>out),
+            std::mem::size_of::&lt;sockaddr_in6&gt;() <span class="kw">as </span>socklen_t
+        );
+
+        <span class="kw">let </span>s = std::ffi::CString::new(<span class="string">"dddd:dddd:dddd:dddd:dddd:dddd:dddd:dddd"</span>)
+            .unwrap();
+
+        <span class="kw">let </span>s = <span class="kw">unsafe </span>{
+            <span class="kw">let </span>in6_addr = <span class="kw-2">&amp;</span>out <span class="kw">as </span><span class="kw-2">*const </span><span class="kw">_ as </span><span class="kw-2">*const </span>sockaddr_in6;
+            <span class="macro">assert_eq!</span>(u16::from_be((<span class="kw-2">*</span>in6_addr).sin6_port), addr.port());
+
+            <span class="kw">let </span>dst = s.into_raw();
+
+            inet_ntop(
+                AF_INET6,
+                <span class="kw-2">&amp;</span>((<span class="kw-2">*</span>in6_addr).sin6_addr) <span class="kw">as </span><span class="kw-2">*const </span><span class="kw">_ as </span><span class="kw-2">*const </span>c_void,
+                dst,
+                <span class="number">45</span>,
+            );
+
+            std::ffi::CString::from_raw(dst).into_string().unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(s, <span class="string">"2001:db8:85a3::8a2e:370:7334"</span>);
+
+        <span class="kw">let </span>addr = <span class="kw">unsafe </span>{
+            std_addr_from_c(
+                <span class="kw-2">&amp;*</span>(<span class="kw-2">&amp;</span>out <span class="kw">as </span><span class="kw-2">*const </span><span class="kw">_ as </span><span class="kw-2">*const </span>sockaddr),
+                std::mem::size_of::&lt;sockaddr_in6&gt;() <span class="kw">as </span>socklen_t,
+            )
+        };
+
+        <span class="macro">assert_eq!</span>(
+            addr,
+            <span class="string">"[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:8080"
+                </span>.parse()
+                .unwrap()
+        );
+    }
+
+    <span class="attr">#[cfg(not(windows))]
+    </span><span class="kw">extern </span>{
+        <span class="kw">fn </span>inet_ntop(
+            af: c_int, src: <span class="kw-2">*const </span>c_void, dst: <span class="kw-2">*mut </span>c_char, size: socklen_t,
+        ) -&gt; <span class="kw-2">*mut </span>c_char;
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/flowcontrol.rs.html b/src/quiche/flowcontrol.rs.html
new file mode 100644
index 0000000..12a1856
--- /dev/null
+++ b/src/quiche/flowcontrol.rs.html
@@ -0,0 +1,441 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/flowcontrol.rs`."><title>flowcontrol.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2021, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span>std::time::Duration;
+<span class="kw">use </span>std::time::Instant;
+
+<span class="comment">// When autotuning the receiver window, decide how much
+// we increase the window.
+</span><span class="kw">const </span>WINDOW_INCREASE_FACTOR: u64 = <span class="number">2</span>;
+
+<span class="comment">// When autotuning the receiver window, check if the last
+// update is within RTT * this constant.
+</span><span class="kw">const </span>WINDOW_TRIGGER_FACTOR: u32 = <span class="number">2</span>;
+
+<span class="attr">#[derive(Default, Debug)]
+</span><span class="kw">pub struct </span>FlowControl {
+    <span class="doccomment">/// Total consumed bytes by the receiver.
+    </span>consumed: u64,
+
+    <span class="doccomment">/// Flow control limit.
+    </span>max_data: u64,
+
+    <span class="doccomment">/// The receive window. This value is used for updating
+    /// flow control limit.
+    </span>window: u64,
+
+    <span class="doccomment">/// The maximum receive window.
+    </span>max_window: u64,
+
+    <span class="doccomment">/// Last update time of max_data for autotuning the window.
+    </span>last_update: <span class="prelude-ty">Option</span>&lt;Instant&gt;,
+}
+
+<span class="kw">impl </span>FlowControl {
+    <span class="kw">pub fn </span>new(max_data: u64, window: u64, max_window: u64) -&gt; <span class="self">Self </span>{
+        <span class="self">Self </span>{
+            max_data,
+
+            window,
+
+            max_window,
+
+            ..Default::default()
+        }
+    }
+
+    <span class="doccomment">/// Returns the current window size.
+    </span><span class="kw">pub fn </span>window(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.window
+    }
+
+    <span class="doccomment">/// Returns the current flow limit.
+    </span><span class="kw">pub fn </span>max_data(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.max_data
+    }
+
+    <span class="doccomment">/// Update consumed bytes.
+    </span><span class="kw">pub fn </span>add_consumed(<span class="kw-2">&amp;mut </span><span class="self">self</span>, consumed: u64) {
+        <span class="self">self</span>.consumed += consumed;
+    }
+
+    <span class="doccomment">/// Returns true if the flow control needs to update max_data.
+    ///
+    /// This happens when the available window is smaller than the half
+    /// of the current window.
+    </span><span class="kw">pub fn </span>should_update_max_data(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="kw">let </span>available_window = <span class="self">self</span>.max_data - <span class="self">self</span>.consumed;
+
+        available_window &lt; (<span class="self">self</span>.window / <span class="number">2</span>)
+    }
+
+    <span class="doccomment">/// Returns the new max_data limit.
+    </span><span class="kw">pub fn </span>max_data_next(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.consumed + <span class="self">self</span>.window
+    }
+
+    <span class="doccomment">/// Commits the new max_data limit.
+    </span><span class="kw">pub fn </span>update_max_data(<span class="kw-2">&amp;mut </span><span class="self">self</span>, now: Instant) {
+        <span class="self">self</span>.max_data = <span class="self">self</span>.max_data_next();
+        <span class="self">self</span>.last_update = <span class="prelude-val">Some</span>(now);
+    }
+
+    <span class="doccomment">/// Autotune the window size. When there is an another update
+    /// within RTT x 2, bump the window x 1.5, capped by
+    /// max_window.
+    </span><span class="kw">pub fn </span>autotune_window(<span class="kw-2">&amp;mut </span><span class="self">self</span>, now: Instant, rtt: Duration) {
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(last_update) = <span class="self">self</span>.last_update {
+            <span class="kw">if </span>now - last_update &lt; rtt * WINDOW_TRIGGER_FACTOR {
+                <span class="self">self</span>.window = std::cmp::min(
+                    <span class="self">self</span>.window * WINDOW_INCREASE_FACTOR,
+                    <span class="self">self</span>.max_window,
+                );
+            }
+        }
+    }
+
+    <span class="doccomment">/// Make sure the lower bound of the window is same to
+    /// the current window.
+    </span><span class="kw">pub fn </span>ensure_window_lower_bound(<span class="kw-2">&amp;mut </span><span class="self">self</span>, min_window: u64) {
+        <span class="kw">if </span>min_window &gt; <span class="self">self</span>.window {
+            <span class="self">self</span>.window = min_window;
+        }
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>max_data() {
+        <span class="kw">let </span>fc = FlowControl::new(<span class="number">100</span>, <span class="number">20</span>, <span class="number">100</span>);
+
+        <span class="macro">assert_eq!</span>(fc.max_data(), <span class="number">100</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>should_update_max_data() {
+        <span class="kw">let </span><span class="kw-2">mut </span>fc = FlowControl::new(<span class="number">100</span>, <span class="number">20</span>, <span class="number">100</span>);
+
+        fc.add_consumed(<span class="number">85</span>);
+        <span class="macro">assert!</span>(!fc.should_update_max_data());
+
+        fc.add_consumed(<span class="number">10</span>);
+        <span class="macro">assert!</span>(fc.should_update_max_data());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>max_data_next() {
+        <span class="kw">let </span><span class="kw-2">mut </span>fc = FlowControl::new(<span class="number">100</span>, <span class="number">20</span>, <span class="number">100</span>);
+
+        <span class="kw">let </span>consumed = <span class="number">95</span>;
+
+        fc.add_consumed(consumed);
+        <span class="macro">assert!</span>(fc.should_update_max_data());
+        <span class="macro">assert_eq!</span>(fc.max_data_next(), consumed + <span class="number">20</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>update_max_data() {
+        <span class="kw">let </span><span class="kw-2">mut </span>fc = FlowControl::new(<span class="number">100</span>, <span class="number">20</span>, <span class="number">100</span>);
+
+        <span class="kw">let </span>consumed = <span class="number">95</span>;
+
+        fc.add_consumed(consumed);
+        <span class="macro">assert!</span>(fc.should_update_max_data());
+
+        <span class="kw">let </span>max_data_next = fc.max_data_next();
+        <span class="macro">assert_eq!</span>(fc.max_data_next(), consumed + <span class="number">20</span>);
+
+        fc.update_max_data(Instant::now());
+        <span class="macro">assert_eq!</span>(fc.max_data(), max_data_next);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>autotune_window() {
+        <span class="kw">let </span>w = <span class="number">20</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>fc = FlowControl::new(<span class="number">100</span>, w, <span class="number">100</span>);
+
+        <span class="kw">let </span>consumed = <span class="number">95</span>;
+
+        fc.add_consumed(consumed);
+        <span class="macro">assert!</span>(fc.should_update_max_data());
+
+        <span class="kw">let </span>max_data_next = fc.max_data_next();
+        <span class="macro">assert_eq!</span>(max_data_next, consumed + w);
+
+        fc.update_max_data(Instant::now());
+        <span class="macro">assert_eq!</span>(fc.max_data(), max_data_next);
+
+        <span class="comment">// Window size should be doubled.
+        </span>fc.autotune_window(Instant::now(), Duration::from_millis(<span class="number">100</span>));
+
+        <span class="kw">let </span>w = w * <span class="number">2</span>;
+        <span class="kw">let </span>consumed_inc = <span class="number">15</span>;
+
+        fc.add_consumed(consumed_inc);
+        <span class="macro">assert!</span>(fc.should_update_max_data());
+
+        <span class="kw">let </span>max_data_next = fc.max_data_next();
+        <span class="macro">assert_eq!</span>(max_data_next, consumed + consumed_inc + w);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>ensure_window_lower_bound() {
+        <span class="kw">let </span>w = <span class="number">20</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>fc = FlowControl::new(<span class="number">100</span>, w, <span class="number">100</span>);
+
+        <span class="comment">// Window doesn't change.
+        </span>fc.ensure_window_lower_bound(w);
+        <span class="macro">assert_eq!</span>(fc.window(), <span class="number">20</span>);
+
+        <span class="comment">// Window changed to the new value.
+        </span>fc.ensure_window_lower_bound(w * <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(fc.window(), <span class="number">40</span>);
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/frame.rs.html b/src/quiche/frame.rs.html
new file mode 100644
index 0000000..652e75e
--- /dev/null
+++ b/src/quiche/frame.rs.html
@@ -0,0 +1,4243 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/frame.rs`."><title>frame.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+<a href="#1217" id="1217">1217</a>
+<a href="#1218" id="1218">1218</a>
+<a href="#1219" id="1219">1219</a>
+<a href="#1220" id="1220">1220</a>
+<a href="#1221" id="1221">1221</a>
+<a href="#1222" id="1222">1222</a>
+<a href="#1223" id="1223">1223</a>
+<a href="#1224" id="1224">1224</a>
+<a href="#1225" id="1225">1225</a>
+<a href="#1226" id="1226">1226</a>
+<a href="#1227" id="1227">1227</a>
+<a href="#1228" id="1228">1228</a>
+<a href="#1229" id="1229">1229</a>
+<a href="#1230" id="1230">1230</a>
+<a href="#1231" id="1231">1231</a>
+<a href="#1232" id="1232">1232</a>
+<a href="#1233" id="1233">1233</a>
+<a href="#1234" id="1234">1234</a>
+<a href="#1235" id="1235">1235</a>
+<a href="#1236" id="1236">1236</a>
+<a href="#1237" id="1237">1237</a>
+<a href="#1238" id="1238">1238</a>
+<a href="#1239" id="1239">1239</a>
+<a href="#1240" id="1240">1240</a>
+<a href="#1241" id="1241">1241</a>
+<a href="#1242" id="1242">1242</a>
+<a href="#1243" id="1243">1243</a>
+<a href="#1244" id="1244">1244</a>
+<a href="#1245" id="1245">1245</a>
+<a href="#1246" id="1246">1246</a>
+<a href="#1247" id="1247">1247</a>
+<a href="#1248" id="1248">1248</a>
+<a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</a>
+<a href="#1259" id="1259">1259</a>
+<a href="#1260" id="1260">1260</a>
+<a href="#1261" id="1261">1261</a>
+<a href="#1262" id="1262">1262</a>
+<a href="#1263" id="1263">1263</a>
+<a href="#1264" id="1264">1264</a>
+<a href="#1265" id="1265">1265</a>
+<a href="#1266" id="1266">1266</a>
+<a href="#1267" id="1267">1267</a>
+<a href="#1268" id="1268">1268</a>
+<a href="#1269" id="1269">1269</a>
+<a href="#1270" id="1270">1270</a>
+<a href="#1271" id="1271">1271</a>
+<a href="#1272" id="1272">1272</a>
+<a href="#1273" id="1273">1273</a>
+<a href="#1274" id="1274">1274</a>
+<a href="#1275" id="1275">1275</a>
+<a href="#1276" id="1276">1276</a>
+<a href="#1277" id="1277">1277</a>
+<a href="#1278" id="1278">1278</a>
+<a href="#1279" id="1279">1279</a>
+<a href="#1280" id="1280">1280</a>
+<a href="#1281" id="1281">1281</a>
+<a href="#1282" id="1282">1282</a>
+<a href="#1283" id="1283">1283</a>
+<a href="#1284" id="1284">1284</a>
+<a href="#1285" id="1285">1285</a>
+<a href="#1286" id="1286">1286</a>
+<a href="#1287" id="1287">1287</a>
+<a href="#1288" id="1288">1288</a>
+<a href="#1289" id="1289">1289</a>
+<a href="#1290" id="1290">1290</a>
+<a href="#1291" id="1291">1291</a>
+<a href="#1292" id="1292">1292</a>
+<a href="#1293" id="1293">1293</a>
+<a href="#1294" id="1294">1294</a>
+<a href="#1295" id="1295">1295</a>
+<a href="#1296" id="1296">1296</a>
+<a href="#1297" id="1297">1297</a>
+<a href="#1298" id="1298">1298</a>
+<a href="#1299" id="1299">1299</a>
+<a href="#1300" id="1300">1300</a>
+<a href="#1301" id="1301">1301</a>
+<a href="#1302" id="1302">1302</a>
+<a href="#1303" id="1303">1303</a>
+<a href="#1304" id="1304">1304</a>
+<a href="#1305" id="1305">1305</a>
+<a href="#1306" id="1306">1306</a>
+<a href="#1307" id="1307">1307</a>
+<a href="#1308" id="1308">1308</a>
+<a href="#1309" id="1309">1309</a>
+<a href="#1310" id="1310">1310</a>
+<a href="#1311" id="1311">1311</a>
+<a href="#1312" id="1312">1312</a>
+<a href="#1313" id="1313">1313</a>
+<a href="#1314" id="1314">1314</a>
+<a href="#1315" id="1315">1315</a>
+<a href="#1316" id="1316">1316</a>
+<a href="#1317" id="1317">1317</a>
+<a href="#1318" id="1318">1318</a>
+<a href="#1319" id="1319">1319</a>
+<a href="#1320" id="1320">1320</a>
+<a href="#1321" id="1321">1321</a>
+<a href="#1322" id="1322">1322</a>
+<a href="#1323" id="1323">1323</a>
+<a href="#1324" id="1324">1324</a>
+<a href="#1325" id="1325">1325</a>
+<a href="#1326" id="1326">1326</a>
+<a href="#1327" id="1327">1327</a>
+<a href="#1328" id="1328">1328</a>
+<a href="#1329" id="1329">1329</a>
+<a href="#1330" id="1330">1330</a>
+<a href="#1331" id="1331">1331</a>
+<a href="#1332" id="1332">1332</a>
+<a href="#1333" id="1333">1333</a>
+<a href="#1334" id="1334">1334</a>
+<a href="#1335" id="1335">1335</a>
+<a href="#1336" id="1336">1336</a>
+<a href="#1337" id="1337">1337</a>
+<a href="#1338" id="1338">1338</a>
+<a href="#1339" id="1339">1339</a>
+<a href="#1340" id="1340">1340</a>
+<a href="#1341" id="1341">1341</a>
+<a href="#1342" id="1342">1342</a>
+<a href="#1343" id="1343">1343</a>
+<a href="#1344" id="1344">1344</a>
+<a href="#1345" id="1345">1345</a>
+<a href="#1346" id="1346">1346</a>
+<a href="#1347" id="1347">1347</a>
+<a href="#1348" id="1348">1348</a>
+<a href="#1349" id="1349">1349</a>
+<a href="#1350" id="1350">1350</a>
+<a href="#1351" id="1351">1351</a>
+<a href="#1352" id="1352">1352</a>
+<a href="#1353" id="1353">1353</a>
+<a href="#1354" id="1354">1354</a>
+<a href="#1355" id="1355">1355</a>
+<a href="#1356" id="1356">1356</a>
+<a href="#1357" id="1357">1357</a>
+<a href="#1358" id="1358">1358</a>
+<a href="#1359" id="1359">1359</a>
+<a href="#1360" id="1360">1360</a>
+<a href="#1361" id="1361">1361</a>
+<a href="#1362" id="1362">1362</a>
+<a href="#1363" id="1363">1363</a>
+<a href="#1364" id="1364">1364</a>
+<a href="#1365" id="1365">1365</a>
+<a href="#1366" id="1366">1366</a>
+<a href="#1367" id="1367">1367</a>
+<a href="#1368" id="1368">1368</a>
+<a href="#1369" id="1369">1369</a>
+<a href="#1370" id="1370">1370</a>
+<a href="#1371" id="1371">1371</a>
+<a href="#1372" id="1372">1372</a>
+<a href="#1373" id="1373">1373</a>
+<a href="#1374" id="1374">1374</a>
+<a href="#1375" id="1375">1375</a>
+<a href="#1376" id="1376">1376</a>
+<a href="#1377" id="1377">1377</a>
+<a href="#1378" id="1378">1378</a>
+<a href="#1379" id="1379">1379</a>
+<a href="#1380" id="1380">1380</a>
+<a href="#1381" id="1381">1381</a>
+<a href="#1382" id="1382">1382</a>
+<a href="#1383" id="1383">1383</a>
+<a href="#1384" id="1384">1384</a>
+<a href="#1385" id="1385">1385</a>
+<a href="#1386" id="1386">1386</a>
+<a href="#1387" id="1387">1387</a>
+<a href="#1388" id="1388">1388</a>
+<a href="#1389" id="1389">1389</a>
+<a href="#1390" id="1390">1390</a>
+<a href="#1391" id="1391">1391</a>
+<a href="#1392" id="1392">1392</a>
+<a href="#1393" id="1393">1393</a>
+<a href="#1394" id="1394">1394</a>
+<a href="#1395" id="1395">1395</a>
+<a href="#1396" id="1396">1396</a>
+<a href="#1397" id="1397">1397</a>
+<a href="#1398" id="1398">1398</a>
+<a href="#1399" id="1399">1399</a>
+<a href="#1400" id="1400">1400</a>
+<a href="#1401" id="1401">1401</a>
+<a href="#1402" id="1402">1402</a>
+<a href="#1403" id="1403">1403</a>
+<a href="#1404" id="1404">1404</a>
+<a href="#1405" id="1405">1405</a>
+<a href="#1406" id="1406">1406</a>
+<a href="#1407" id="1407">1407</a>
+<a href="#1408" id="1408">1408</a>
+<a href="#1409" id="1409">1409</a>
+<a href="#1410" id="1410">1410</a>
+<a href="#1411" id="1411">1411</a>
+<a href="#1412" id="1412">1412</a>
+<a href="#1413" id="1413">1413</a>
+<a href="#1414" id="1414">1414</a>
+<a href="#1415" id="1415">1415</a>
+<a href="#1416" id="1416">1416</a>
+<a href="#1417" id="1417">1417</a>
+<a href="#1418" id="1418">1418</a>
+<a href="#1419" id="1419">1419</a>
+<a href="#1420" id="1420">1420</a>
+<a href="#1421" id="1421">1421</a>
+<a href="#1422" id="1422">1422</a>
+<a href="#1423" id="1423">1423</a>
+<a href="#1424" id="1424">1424</a>
+<a href="#1425" id="1425">1425</a>
+<a href="#1426" id="1426">1426</a>
+<a href="#1427" id="1427">1427</a>
+<a href="#1428" id="1428">1428</a>
+<a href="#1429" id="1429">1429</a>
+<a href="#1430" id="1430">1430</a>
+<a href="#1431" id="1431">1431</a>
+<a href="#1432" id="1432">1432</a>
+<a href="#1433" id="1433">1433</a>
+<a href="#1434" id="1434">1434</a>
+<a href="#1435" id="1435">1435</a>
+<a href="#1436" id="1436">1436</a>
+<a href="#1437" id="1437">1437</a>
+<a href="#1438" id="1438">1438</a>
+<a href="#1439" id="1439">1439</a>
+<a href="#1440" id="1440">1440</a>
+<a href="#1441" id="1441">1441</a>
+<a href="#1442" id="1442">1442</a>
+<a href="#1443" id="1443">1443</a>
+<a href="#1444" id="1444">1444</a>
+<a href="#1445" id="1445">1445</a>
+<a href="#1446" id="1446">1446</a>
+<a href="#1447" id="1447">1447</a>
+<a href="#1448" id="1448">1448</a>
+<a href="#1449" id="1449">1449</a>
+<a href="#1450" id="1450">1450</a>
+<a href="#1451" id="1451">1451</a>
+<a href="#1452" id="1452">1452</a>
+<a href="#1453" id="1453">1453</a>
+<a href="#1454" id="1454">1454</a>
+<a href="#1455" id="1455">1455</a>
+<a href="#1456" id="1456">1456</a>
+<a href="#1457" id="1457">1457</a>
+<a href="#1458" id="1458">1458</a>
+<a href="#1459" id="1459">1459</a>
+<a href="#1460" id="1460">1460</a>
+<a href="#1461" id="1461">1461</a>
+<a href="#1462" id="1462">1462</a>
+<a href="#1463" id="1463">1463</a>
+<a href="#1464" id="1464">1464</a>
+<a href="#1465" id="1465">1465</a>
+<a href="#1466" id="1466">1466</a>
+<a href="#1467" id="1467">1467</a>
+<a href="#1468" id="1468">1468</a>
+<a href="#1469" id="1469">1469</a>
+<a href="#1470" id="1470">1470</a>
+<a href="#1471" id="1471">1471</a>
+<a href="#1472" id="1472">1472</a>
+<a href="#1473" id="1473">1473</a>
+<a href="#1474" id="1474">1474</a>
+<a href="#1475" id="1475">1475</a>
+<a href="#1476" id="1476">1476</a>
+<a href="#1477" id="1477">1477</a>
+<a href="#1478" id="1478">1478</a>
+<a href="#1479" id="1479">1479</a>
+<a href="#1480" id="1480">1480</a>
+<a href="#1481" id="1481">1481</a>
+<a href="#1482" id="1482">1482</a>
+<a href="#1483" id="1483">1483</a>
+<a href="#1484" id="1484">1484</a>
+<a href="#1485" id="1485">1485</a>
+<a href="#1486" id="1486">1486</a>
+<a href="#1487" id="1487">1487</a>
+<a href="#1488" id="1488">1488</a>
+<a href="#1489" id="1489">1489</a>
+<a href="#1490" id="1490">1490</a>
+<a href="#1491" id="1491">1491</a>
+<a href="#1492" id="1492">1492</a>
+<a href="#1493" id="1493">1493</a>
+<a href="#1494" id="1494">1494</a>
+<a href="#1495" id="1495">1495</a>
+<a href="#1496" id="1496">1496</a>
+<a href="#1497" id="1497">1497</a>
+<a href="#1498" id="1498">1498</a>
+<a href="#1499" id="1499">1499</a>
+<a href="#1500" id="1500">1500</a>
+<a href="#1501" id="1501">1501</a>
+<a href="#1502" id="1502">1502</a>
+<a href="#1503" id="1503">1503</a>
+<a href="#1504" id="1504">1504</a>
+<a href="#1505" id="1505">1505</a>
+<a href="#1506" id="1506">1506</a>
+<a href="#1507" id="1507">1507</a>
+<a href="#1508" id="1508">1508</a>
+<a href="#1509" id="1509">1509</a>
+<a href="#1510" id="1510">1510</a>
+<a href="#1511" id="1511">1511</a>
+<a href="#1512" id="1512">1512</a>
+<a href="#1513" id="1513">1513</a>
+<a href="#1514" id="1514">1514</a>
+<a href="#1515" id="1515">1515</a>
+<a href="#1516" id="1516">1516</a>
+<a href="#1517" id="1517">1517</a>
+<a href="#1518" id="1518">1518</a>
+<a href="#1519" id="1519">1519</a>
+<a href="#1520" id="1520">1520</a>
+<a href="#1521" id="1521">1521</a>
+<a href="#1522" id="1522">1522</a>
+<a href="#1523" id="1523">1523</a>
+<a href="#1524" id="1524">1524</a>
+<a href="#1525" id="1525">1525</a>
+<a href="#1526" id="1526">1526</a>
+<a href="#1527" id="1527">1527</a>
+<a href="#1528" id="1528">1528</a>
+<a href="#1529" id="1529">1529</a>
+<a href="#1530" id="1530">1530</a>
+<a href="#1531" id="1531">1531</a>
+<a href="#1532" id="1532">1532</a>
+<a href="#1533" id="1533">1533</a>
+<a href="#1534" id="1534">1534</a>
+<a href="#1535" id="1535">1535</a>
+<a href="#1536" id="1536">1536</a>
+<a href="#1537" id="1537">1537</a>
+<a href="#1538" id="1538">1538</a>
+<a href="#1539" id="1539">1539</a>
+<a href="#1540" id="1540">1540</a>
+<a href="#1541" id="1541">1541</a>
+<a href="#1542" id="1542">1542</a>
+<a href="#1543" id="1543">1543</a>
+<a href="#1544" id="1544">1544</a>
+<a href="#1545" id="1545">1545</a>
+<a href="#1546" id="1546">1546</a>
+<a href="#1547" id="1547">1547</a>
+<a href="#1548" id="1548">1548</a>
+<a href="#1549" id="1549">1549</a>
+<a href="#1550" id="1550">1550</a>
+<a href="#1551" id="1551">1551</a>
+<a href="#1552" id="1552">1552</a>
+<a href="#1553" id="1553">1553</a>
+<a href="#1554" id="1554">1554</a>
+<a href="#1555" id="1555">1555</a>
+<a href="#1556" id="1556">1556</a>
+<a href="#1557" id="1557">1557</a>
+<a href="#1558" id="1558">1558</a>
+<a href="#1559" id="1559">1559</a>
+<a href="#1560" id="1560">1560</a>
+<a href="#1561" id="1561">1561</a>
+<a href="#1562" id="1562">1562</a>
+<a href="#1563" id="1563">1563</a>
+<a href="#1564" id="1564">1564</a>
+<a href="#1565" id="1565">1565</a>
+<a href="#1566" id="1566">1566</a>
+<a href="#1567" id="1567">1567</a>
+<a href="#1568" id="1568">1568</a>
+<a href="#1569" id="1569">1569</a>
+<a href="#1570" id="1570">1570</a>
+<a href="#1571" id="1571">1571</a>
+<a href="#1572" id="1572">1572</a>
+<a href="#1573" id="1573">1573</a>
+<a href="#1574" id="1574">1574</a>
+<a href="#1575" id="1575">1575</a>
+<a href="#1576" id="1576">1576</a>
+<a href="#1577" id="1577">1577</a>
+<a href="#1578" id="1578">1578</a>
+<a href="#1579" id="1579">1579</a>
+<a href="#1580" id="1580">1580</a>
+<a href="#1581" id="1581">1581</a>
+<a href="#1582" id="1582">1582</a>
+<a href="#1583" id="1583">1583</a>
+<a href="#1584" id="1584">1584</a>
+<a href="#1585" id="1585">1585</a>
+<a href="#1586" id="1586">1586</a>
+<a href="#1587" id="1587">1587</a>
+<a href="#1588" id="1588">1588</a>
+<a href="#1589" id="1589">1589</a>
+<a href="#1590" id="1590">1590</a>
+<a href="#1591" id="1591">1591</a>
+<a href="#1592" id="1592">1592</a>
+<a href="#1593" id="1593">1593</a>
+<a href="#1594" id="1594">1594</a>
+<a href="#1595" id="1595">1595</a>
+<a href="#1596" id="1596">1596</a>
+<a href="#1597" id="1597">1597</a>
+<a href="#1598" id="1598">1598</a>
+<a href="#1599" id="1599">1599</a>
+<a href="#1600" id="1600">1600</a>
+<a href="#1601" id="1601">1601</a>
+<a href="#1602" id="1602">1602</a>
+<a href="#1603" id="1603">1603</a>
+<a href="#1604" id="1604">1604</a>
+<a href="#1605" id="1605">1605</a>
+<a href="#1606" id="1606">1606</a>
+<a href="#1607" id="1607">1607</a>
+<a href="#1608" id="1608">1608</a>
+<a href="#1609" id="1609">1609</a>
+<a href="#1610" id="1610">1610</a>
+<a href="#1611" id="1611">1611</a>
+<a href="#1612" id="1612">1612</a>
+<a href="#1613" id="1613">1613</a>
+<a href="#1614" id="1614">1614</a>
+<a href="#1615" id="1615">1615</a>
+<a href="#1616" id="1616">1616</a>
+<a href="#1617" id="1617">1617</a>
+<a href="#1618" id="1618">1618</a>
+<a href="#1619" id="1619">1619</a>
+<a href="#1620" id="1620">1620</a>
+<a href="#1621" id="1621">1621</a>
+<a href="#1622" id="1622">1622</a>
+<a href="#1623" id="1623">1623</a>
+<a href="#1624" id="1624">1624</a>
+<a href="#1625" id="1625">1625</a>
+<a href="#1626" id="1626">1626</a>
+<a href="#1627" id="1627">1627</a>
+<a href="#1628" id="1628">1628</a>
+<a href="#1629" id="1629">1629</a>
+<a href="#1630" id="1630">1630</a>
+<a href="#1631" id="1631">1631</a>
+<a href="#1632" id="1632">1632</a>
+<a href="#1633" id="1633">1633</a>
+<a href="#1634" id="1634">1634</a>
+<a href="#1635" id="1635">1635</a>
+<a href="#1636" id="1636">1636</a>
+<a href="#1637" id="1637">1637</a>
+<a href="#1638" id="1638">1638</a>
+<a href="#1639" id="1639">1639</a>
+<a href="#1640" id="1640">1640</a>
+<a href="#1641" id="1641">1641</a>
+<a href="#1642" id="1642">1642</a>
+<a href="#1643" id="1643">1643</a>
+<a href="#1644" id="1644">1644</a>
+<a href="#1645" id="1645">1645</a>
+<a href="#1646" id="1646">1646</a>
+<a href="#1647" id="1647">1647</a>
+<a href="#1648" id="1648">1648</a>
+<a href="#1649" id="1649">1649</a>
+<a href="#1650" id="1650">1650</a>
+<a href="#1651" id="1651">1651</a>
+<a href="#1652" id="1652">1652</a>
+<a href="#1653" id="1653">1653</a>
+<a href="#1654" id="1654">1654</a>
+<a href="#1655" id="1655">1655</a>
+<a href="#1656" id="1656">1656</a>
+<a href="#1657" id="1657">1657</a>
+<a href="#1658" id="1658">1658</a>
+<a href="#1659" id="1659">1659</a>
+<a href="#1660" id="1660">1660</a>
+<a href="#1661" id="1661">1661</a>
+<a href="#1662" id="1662">1662</a>
+<a href="#1663" id="1663">1663</a>
+<a href="#1664" id="1664">1664</a>
+<a href="#1665" id="1665">1665</a>
+<a href="#1666" id="1666">1666</a>
+<a href="#1667" id="1667">1667</a>
+<a href="#1668" id="1668">1668</a>
+<a href="#1669" id="1669">1669</a>
+<a href="#1670" id="1670">1670</a>
+<a href="#1671" id="1671">1671</a>
+<a href="#1672" id="1672">1672</a>
+<a href="#1673" id="1673">1673</a>
+<a href="#1674" id="1674">1674</a>
+<a href="#1675" id="1675">1675</a>
+<a href="#1676" id="1676">1676</a>
+<a href="#1677" id="1677">1677</a>
+<a href="#1678" id="1678">1678</a>
+<a href="#1679" id="1679">1679</a>
+<a href="#1680" id="1680">1680</a>
+<a href="#1681" id="1681">1681</a>
+<a href="#1682" id="1682">1682</a>
+<a href="#1683" id="1683">1683</a>
+<a href="#1684" id="1684">1684</a>
+<a href="#1685" id="1685">1685</a>
+<a href="#1686" id="1686">1686</a>
+<a href="#1687" id="1687">1687</a>
+<a href="#1688" id="1688">1688</a>
+<a href="#1689" id="1689">1689</a>
+<a href="#1690" id="1690">1690</a>
+<a href="#1691" id="1691">1691</a>
+<a href="#1692" id="1692">1692</a>
+<a href="#1693" id="1693">1693</a>
+<a href="#1694" id="1694">1694</a>
+<a href="#1695" id="1695">1695</a>
+<a href="#1696" id="1696">1696</a>
+<a href="#1697" id="1697">1697</a>
+<a href="#1698" id="1698">1698</a>
+<a href="#1699" id="1699">1699</a>
+<a href="#1700" id="1700">1700</a>
+<a href="#1701" id="1701">1701</a>
+<a href="#1702" id="1702">1702</a>
+<a href="#1703" id="1703">1703</a>
+<a href="#1704" id="1704">1704</a>
+<a href="#1705" id="1705">1705</a>
+<a href="#1706" id="1706">1706</a>
+<a href="#1707" id="1707">1707</a>
+<a href="#1708" id="1708">1708</a>
+<a href="#1709" id="1709">1709</a>
+<a href="#1710" id="1710">1710</a>
+<a href="#1711" id="1711">1711</a>
+<a href="#1712" id="1712">1712</a>
+<a href="#1713" id="1713">1713</a>
+<a href="#1714" id="1714">1714</a>
+<a href="#1715" id="1715">1715</a>
+<a href="#1716" id="1716">1716</a>
+<a href="#1717" id="1717">1717</a>
+<a href="#1718" id="1718">1718</a>
+<a href="#1719" id="1719">1719</a>
+<a href="#1720" id="1720">1720</a>
+<a href="#1721" id="1721">1721</a>
+<a href="#1722" id="1722">1722</a>
+<a href="#1723" id="1723">1723</a>
+<a href="#1724" id="1724">1724</a>
+<a href="#1725" id="1725">1725</a>
+<a href="#1726" id="1726">1726</a>
+<a href="#1727" id="1727">1727</a>
+<a href="#1728" id="1728">1728</a>
+<a href="#1729" id="1729">1729</a>
+<a href="#1730" id="1730">1730</a>
+<a href="#1731" id="1731">1731</a>
+<a href="#1732" id="1732">1732</a>
+<a href="#1733" id="1733">1733</a>
+<a href="#1734" id="1734">1734</a>
+<a href="#1735" id="1735">1735</a>
+<a href="#1736" id="1736">1736</a>
+<a href="#1737" id="1737">1737</a>
+<a href="#1738" id="1738">1738</a>
+<a href="#1739" id="1739">1739</a>
+<a href="#1740" id="1740">1740</a>
+<a href="#1741" id="1741">1741</a>
+<a href="#1742" id="1742">1742</a>
+<a href="#1743" id="1743">1743</a>
+<a href="#1744" id="1744">1744</a>
+<a href="#1745" id="1745">1745</a>
+<a href="#1746" id="1746">1746</a>
+<a href="#1747" id="1747">1747</a>
+<a href="#1748" id="1748">1748</a>
+<a href="#1749" id="1749">1749</a>
+<a href="#1750" id="1750">1750</a>
+<a href="#1751" id="1751">1751</a>
+<a href="#1752" id="1752">1752</a>
+<a href="#1753" id="1753">1753</a>
+<a href="#1754" id="1754">1754</a>
+<a href="#1755" id="1755">1755</a>
+<a href="#1756" id="1756">1756</a>
+<a href="#1757" id="1757">1757</a>
+<a href="#1758" id="1758">1758</a>
+<a href="#1759" id="1759">1759</a>
+<a href="#1760" id="1760">1760</a>
+<a href="#1761" id="1761">1761</a>
+<a href="#1762" id="1762">1762</a>
+<a href="#1763" id="1763">1763</a>
+<a href="#1764" id="1764">1764</a>
+<a href="#1765" id="1765">1765</a>
+<a href="#1766" id="1766">1766</a>
+<a href="#1767" id="1767">1767</a>
+<a href="#1768" id="1768">1768</a>
+<a href="#1769" id="1769">1769</a>
+<a href="#1770" id="1770">1770</a>
+<a href="#1771" id="1771">1771</a>
+<a href="#1772" id="1772">1772</a>
+<a href="#1773" id="1773">1773</a>
+<a href="#1774" id="1774">1774</a>
+<a href="#1775" id="1775">1775</a>
+<a href="#1776" id="1776">1776</a>
+<a href="#1777" id="1777">1777</a>
+<a href="#1778" id="1778">1778</a>
+<a href="#1779" id="1779">1779</a>
+<a href="#1780" id="1780">1780</a>
+<a href="#1781" id="1781">1781</a>
+<a href="#1782" id="1782">1782</a>
+<a href="#1783" id="1783">1783</a>
+<a href="#1784" id="1784">1784</a>
+<a href="#1785" id="1785">1785</a>
+<a href="#1786" id="1786">1786</a>
+<a href="#1787" id="1787">1787</a>
+<a href="#1788" id="1788">1788</a>
+<a href="#1789" id="1789">1789</a>
+<a href="#1790" id="1790">1790</a>
+<a href="#1791" id="1791">1791</a>
+<a href="#1792" id="1792">1792</a>
+<a href="#1793" id="1793">1793</a>
+<a href="#1794" id="1794">1794</a>
+<a href="#1795" id="1795">1795</a>
+<a href="#1796" id="1796">1796</a>
+<a href="#1797" id="1797">1797</a>
+<a href="#1798" id="1798">1798</a>
+<a href="#1799" id="1799">1799</a>
+<a href="#1800" id="1800">1800</a>
+<a href="#1801" id="1801">1801</a>
+<a href="#1802" id="1802">1802</a>
+<a href="#1803" id="1803">1803</a>
+<a href="#1804" id="1804">1804</a>
+<a href="#1805" id="1805">1805</a>
+<a href="#1806" id="1806">1806</a>
+<a href="#1807" id="1807">1807</a>
+<a href="#1808" id="1808">1808</a>
+<a href="#1809" id="1809">1809</a>
+<a href="#1810" id="1810">1810</a>
+<a href="#1811" id="1811">1811</a>
+<a href="#1812" id="1812">1812</a>
+<a href="#1813" id="1813">1813</a>
+<a href="#1814" id="1814">1814</a>
+<a href="#1815" id="1815">1815</a>
+<a href="#1816" id="1816">1816</a>
+<a href="#1817" id="1817">1817</a>
+<a href="#1818" id="1818">1818</a>
+<a href="#1819" id="1819">1819</a>
+<a href="#1820" id="1820">1820</a>
+<a href="#1821" id="1821">1821</a>
+<a href="#1822" id="1822">1822</a>
+<a href="#1823" id="1823">1823</a>
+<a href="#1824" id="1824">1824</a>
+<a href="#1825" id="1825">1825</a>
+<a href="#1826" id="1826">1826</a>
+<a href="#1827" id="1827">1827</a>
+<a href="#1828" id="1828">1828</a>
+<a href="#1829" id="1829">1829</a>
+<a href="#1830" id="1830">1830</a>
+<a href="#1831" id="1831">1831</a>
+<a href="#1832" id="1832">1832</a>
+<a href="#1833" id="1833">1833</a>
+<a href="#1834" id="1834">1834</a>
+<a href="#1835" id="1835">1835</a>
+<a href="#1836" id="1836">1836</a>
+<a href="#1837" id="1837">1837</a>
+<a href="#1838" id="1838">1838</a>
+<a href="#1839" id="1839">1839</a>
+<a href="#1840" id="1840">1840</a>
+<a href="#1841" id="1841">1841</a>
+<a href="#1842" id="1842">1842</a>
+<a href="#1843" id="1843">1843</a>
+<a href="#1844" id="1844">1844</a>
+<a href="#1845" id="1845">1845</a>
+<a href="#1846" id="1846">1846</a>
+<a href="#1847" id="1847">1847</a>
+<a href="#1848" id="1848">1848</a>
+<a href="#1849" id="1849">1849</a>
+<a href="#1850" id="1850">1850</a>
+<a href="#1851" id="1851">1851</a>
+<a href="#1852" id="1852">1852</a>
+<a href="#1853" id="1853">1853</a>
+<a href="#1854" id="1854">1854</a>
+<a href="#1855" id="1855">1855</a>
+<a href="#1856" id="1856">1856</a>
+<a href="#1857" id="1857">1857</a>
+<a href="#1858" id="1858">1858</a>
+<a href="#1859" id="1859">1859</a>
+<a href="#1860" id="1860">1860</a>
+<a href="#1861" id="1861">1861</a>
+<a href="#1862" id="1862">1862</a>
+<a href="#1863" id="1863">1863</a>
+<a href="#1864" id="1864">1864</a>
+<a href="#1865" id="1865">1865</a>
+<a href="#1866" id="1866">1866</a>
+<a href="#1867" id="1867">1867</a>
+<a href="#1868" id="1868">1868</a>
+<a href="#1869" id="1869">1869</a>
+<a href="#1870" id="1870">1870</a>
+<a href="#1871" id="1871">1871</a>
+<a href="#1872" id="1872">1872</a>
+<a href="#1873" id="1873">1873</a>
+<a href="#1874" id="1874">1874</a>
+<a href="#1875" id="1875">1875</a>
+<a href="#1876" id="1876">1876</a>
+<a href="#1877" id="1877">1877</a>
+<a href="#1878" id="1878">1878</a>
+<a href="#1879" id="1879">1879</a>
+<a href="#1880" id="1880">1880</a>
+<a href="#1881" id="1881">1881</a>
+<a href="#1882" id="1882">1882</a>
+<a href="#1883" id="1883">1883</a>
+<a href="#1884" id="1884">1884</a>
+<a href="#1885" id="1885">1885</a>
+<a href="#1886" id="1886">1886</a>
+<a href="#1887" id="1887">1887</a>
+<a href="#1888" id="1888">1888</a>
+<a href="#1889" id="1889">1889</a>
+<a href="#1890" id="1890">1890</a>
+<a href="#1891" id="1891">1891</a>
+<a href="#1892" id="1892">1892</a>
+<a href="#1893" id="1893">1893</a>
+<a href="#1894" id="1894">1894</a>
+<a href="#1895" id="1895">1895</a>
+<a href="#1896" id="1896">1896</a>
+<a href="#1897" id="1897">1897</a>
+<a href="#1898" id="1898">1898</a>
+<a href="#1899" id="1899">1899</a>
+<a href="#1900" id="1900">1900</a>
+<a href="#1901" id="1901">1901</a>
+<a href="#1902" id="1902">1902</a>
+<a href="#1903" id="1903">1903</a>
+<a href="#1904" id="1904">1904</a>
+<a href="#1905" id="1905">1905</a>
+<a href="#1906" id="1906">1906</a>
+<a href="#1907" id="1907">1907</a>
+<a href="#1908" id="1908">1908</a>
+<a href="#1909" id="1909">1909</a>
+<a href="#1910" id="1910">1910</a>
+<a href="#1911" id="1911">1911</a>
+<a href="#1912" id="1912">1912</a>
+<a href="#1913" id="1913">1913</a>
+<a href="#1914" id="1914">1914</a>
+<a href="#1915" id="1915">1915</a>
+<a href="#1916" id="1916">1916</a>
+<a href="#1917" id="1917">1917</a>
+<a href="#1918" id="1918">1918</a>
+<a href="#1919" id="1919">1919</a>
+<a href="#1920" id="1920">1920</a>
+<a href="#1921" id="1921">1921</a>
+<a href="#1922" id="1922">1922</a>
+<a href="#1923" id="1923">1923</a>
+<a href="#1924" id="1924">1924</a>
+<a href="#1925" id="1925">1925</a>
+<a href="#1926" id="1926">1926</a>
+<a href="#1927" id="1927">1927</a>
+<a href="#1928" id="1928">1928</a>
+<a href="#1929" id="1929">1929</a>
+<a href="#1930" id="1930">1930</a>
+<a href="#1931" id="1931">1931</a>
+<a href="#1932" id="1932">1932</a>
+<a href="#1933" id="1933">1933</a>
+<a href="#1934" id="1934">1934</a>
+<a href="#1935" id="1935">1935</a>
+<a href="#1936" id="1936">1936</a>
+<a href="#1937" id="1937">1937</a>
+<a href="#1938" id="1938">1938</a>
+<a href="#1939" id="1939">1939</a>
+<a href="#1940" id="1940">1940</a>
+<a href="#1941" id="1941">1941</a>
+<a href="#1942" id="1942">1942</a>
+<a href="#1943" id="1943">1943</a>
+<a href="#1944" id="1944">1944</a>
+<a href="#1945" id="1945">1945</a>
+<a href="#1946" id="1946">1946</a>
+<a href="#1947" id="1947">1947</a>
+<a href="#1948" id="1948">1948</a>
+<a href="#1949" id="1949">1949</a>
+<a href="#1950" id="1950">1950</a>
+<a href="#1951" id="1951">1951</a>
+<a href="#1952" id="1952">1952</a>
+<a href="#1953" id="1953">1953</a>
+<a href="#1954" id="1954">1954</a>
+<a href="#1955" id="1955">1955</a>
+<a href="#1956" id="1956">1956</a>
+<a href="#1957" id="1957">1957</a>
+<a href="#1958" id="1958">1958</a>
+<a href="#1959" id="1959">1959</a>
+<a href="#1960" id="1960">1960</a>
+<a href="#1961" id="1961">1961</a>
+<a href="#1962" id="1962">1962</a>
+<a href="#1963" id="1963">1963</a>
+<a href="#1964" id="1964">1964</a>
+<a href="#1965" id="1965">1965</a>
+<a href="#1966" id="1966">1966</a>
+<a href="#1967" id="1967">1967</a>
+<a href="#1968" id="1968">1968</a>
+<a href="#1969" id="1969">1969</a>
+<a href="#1970" id="1970">1970</a>
+<a href="#1971" id="1971">1971</a>
+<a href="#1972" id="1972">1972</a>
+<a href="#1973" id="1973">1973</a>
+<a href="#1974" id="1974">1974</a>
+<a href="#1975" id="1975">1975</a>
+<a href="#1976" id="1976">1976</a>
+<a href="#1977" id="1977">1977</a>
+<a href="#1978" id="1978">1978</a>
+<a href="#1979" id="1979">1979</a>
+<a href="#1980" id="1980">1980</a>
+<a href="#1981" id="1981">1981</a>
+<a href="#1982" id="1982">1982</a>
+<a href="#1983" id="1983">1983</a>
+<a href="#1984" id="1984">1984</a>
+<a href="#1985" id="1985">1985</a>
+<a href="#1986" id="1986">1986</a>
+<a href="#1987" id="1987">1987</a>
+<a href="#1988" id="1988">1988</a>
+<a href="#1989" id="1989">1989</a>
+<a href="#1990" id="1990">1990</a>
+<a href="#1991" id="1991">1991</a>
+<a href="#1992" id="1992">1992</a>
+<a href="#1993" id="1993">1993</a>
+<a href="#1994" id="1994">1994</a>
+<a href="#1995" id="1995">1995</a>
+<a href="#1996" id="1996">1996</a>
+<a href="#1997" id="1997">1997</a>
+<a href="#1998" id="1998">1998</a>
+<a href="#1999" id="1999">1999</a>
+<a href="#2000" id="2000">2000</a>
+<a href="#2001" id="2001">2001</a>
+<a href="#2002" id="2002">2002</a>
+<a href="#2003" id="2003">2003</a>
+<a href="#2004" id="2004">2004</a>
+<a href="#2005" id="2005">2005</a>
+<a href="#2006" id="2006">2006</a>
+<a href="#2007" id="2007">2007</a>
+<a href="#2008" id="2008">2008</a>
+<a href="#2009" id="2009">2009</a>
+<a href="#2010" id="2010">2010</a>
+<a href="#2011" id="2011">2011</a>
+<a href="#2012" id="2012">2012</a>
+<a href="#2013" id="2013">2013</a>
+<a href="#2014" id="2014">2014</a>
+<a href="#2015" id="2015">2015</a>
+<a href="#2016" id="2016">2016</a>
+<a href="#2017" id="2017">2017</a>
+<a href="#2018" id="2018">2018</a>
+<a href="#2019" id="2019">2019</a>
+<a href="#2020" id="2020">2020</a>
+<a href="#2021" id="2021">2021</a>
+<a href="#2022" id="2022">2022</a>
+<a href="#2023" id="2023">2023</a>
+<a href="#2024" id="2024">2024</a>
+<a href="#2025" id="2025">2025</a>
+<a href="#2026" id="2026">2026</a>
+<a href="#2027" id="2027">2027</a>
+<a href="#2028" id="2028">2028</a>
+<a href="#2029" id="2029">2029</a>
+<a href="#2030" id="2030">2030</a>
+<a href="#2031" id="2031">2031</a>
+<a href="#2032" id="2032">2032</a>
+<a href="#2033" id="2033">2033</a>
+<a href="#2034" id="2034">2034</a>
+<a href="#2035" id="2035">2035</a>
+<a href="#2036" id="2036">2036</a>
+<a href="#2037" id="2037">2037</a>
+<a href="#2038" id="2038">2038</a>
+<a href="#2039" id="2039">2039</a>
+<a href="#2040" id="2040">2040</a>
+<a href="#2041" id="2041">2041</a>
+<a href="#2042" id="2042">2042</a>
+<a href="#2043" id="2043">2043</a>
+<a href="#2044" id="2044">2044</a>
+<a href="#2045" id="2045">2045</a>
+<a href="#2046" id="2046">2046</a>
+<a href="#2047" id="2047">2047</a>
+<a href="#2048" id="2048">2048</a>
+<a href="#2049" id="2049">2049</a>
+<a href="#2050" id="2050">2050</a>
+<a href="#2051" id="2051">2051</a>
+<a href="#2052" id="2052">2052</a>
+<a href="#2053" id="2053">2053</a>
+<a href="#2054" id="2054">2054</a>
+<a href="#2055" id="2055">2055</a>
+<a href="#2056" id="2056">2056</a>
+<a href="#2057" id="2057">2057</a>
+<a href="#2058" id="2058">2058</a>
+<a href="#2059" id="2059">2059</a>
+<a href="#2060" id="2060">2060</a>
+<a href="#2061" id="2061">2061</a>
+<a href="#2062" id="2062">2062</a>
+<a href="#2063" id="2063">2063</a>
+<a href="#2064" id="2064">2064</a>
+<a href="#2065" id="2065">2065</a>
+<a href="#2066" id="2066">2066</a>
+<a href="#2067" id="2067">2067</a>
+<a href="#2068" id="2068">2068</a>
+<a href="#2069" id="2069">2069</a>
+<a href="#2070" id="2070">2070</a>
+<a href="#2071" id="2071">2071</a>
+<a href="#2072" id="2072">2072</a>
+<a href="#2073" id="2073">2073</a>
+<a href="#2074" id="2074">2074</a>
+<a href="#2075" id="2075">2075</a>
+<a href="#2076" id="2076">2076</a>
+<a href="#2077" id="2077">2077</a>
+<a href="#2078" id="2078">2078</a>
+<a href="#2079" id="2079">2079</a>
+<a href="#2080" id="2080">2080</a>
+<a href="#2081" id="2081">2081</a>
+<a href="#2082" id="2082">2082</a>
+<a href="#2083" id="2083">2083</a>
+<a href="#2084" id="2084">2084</a>
+<a href="#2085" id="2085">2085</a>
+<a href="#2086" id="2086">2086</a>
+<a href="#2087" id="2087">2087</a>
+<a href="#2088" id="2088">2088</a>
+<a href="#2089" id="2089">2089</a>
+<a href="#2090" id="2090">2090</a>
+<a href="#2091" id="2091">2091</a>
+<a href="#2092" id="2092">2092</a>
+<a href="#2093" id="2093">2093</a>
+<a href="#2094" id="2094">2094</a>
+<a href="#2095" id="2095">2095</a>
+<a href="#2096" id="2096">2096</a>
+<a href="#2097" id="2097">2097</a>
+<a href="#2098" id="2098">2098</a>
+<a href="#2099" id="2099">2099</a>
+<a href="#2100" id="2100">2100</a>
+<a href="#2101" id="2101">2101</a>
+<a href="#2102" id="2102">2102</a>
+<a href="#2103" id="2103">2103</a>
+<a href="#2104" id="2104">2104</a>
+<a href="#2105" id="2105">2105</a>
+<a href="#2106" id="2106">2106</a>
+<a href="#2107" id="2107">2107</a>
+<a href="#2108" id="2108">2108</a>
+<a href="#2109" id="2109">2109</a>
+<a href="#2110" id="2110">2110</a>
+<a href="#2111" id="2111">2111</a>
+<a href="#2112" id="2112">2112</a>
+<a href="#2113" id="2113">2113</a>
+<a href="#2114" id="2114">2114</a>
+<a href="#2115" id="2115">2115</a>
+<a href="#2116" id="2116">2116</a>
+<a href="#2117" id="2117">2117</a>
+<a href="#2118" id="2118">2118</a>
+<a href="#2119" id="2119">2119</a>
+<a href="#2120" id="2120">2120</a>
+<a href="#2121" id="2121">2121</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2018-2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span>std::convert::TryInto;
+
+<span class="kw">use </span><span class="kw">crate</span>::Error;
+<span class="kw">use </span><span class="kw">crate</span>::Result;
+
+<span class="kw">use </span><span class="kw">crate</span>::packet;
+<span class="kw">use </span><span class="kw">crate</span>::ranges;
+<span class="kw">use </span><span class="kw">crate</span>::stream;
+
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::quic::AckedRanges;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::quic::ErrorSpace;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::quic::QuicFrame;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::quic::StreamType;
+
+<span class="kw">pub const </span>MAX_CRYPTO_OVERHEAD: usize = <span class="number">8</span>;
+<span class="kw">pub const </span>MAX_DGRAM_OVERHEAD: usize = <span class="number">2</span>;
+<span class="kw">pub const </span>MAX_STREAM_OVERHEAD: usize = <span class="number">12</span>;
+<span class="kw">pub const </span>MAX_STREAM_SIZE: u64 = <span class="number">1 </span>&lt;&lt; <span class="number">62</span>;
+
+<span class="attr">#[derive(Clone, Debug, PartialEq, Eq)]
+</span><span class="kw">pub struct </span>EcnCounts {
+    ect0_count: u64,
+    ect1_count: u64,
+    ecn_ce_count: u64,
+}
+
+<span class="attr">#[derive(Clone, PartialEq, Eq)]
+</span><span class="kw">pub enum </span>Frame {
+    Padding {
+        len: usize,
+    },
+
+    Ping {
+        <span class="comment">// Attach metadata to the Ping frame. This doesn't appear on the wire,
+        // but does tell us if this frame was part of a PMTUD probe and how
+        // large the probe was. This will only show up on sent frames and be
+        // None otherwise. This is the total size of the QUIC packet in the
+        // probe.
+        </span>mtu_probe: <span class="prelude-ty">Option</span>&lt;usize&gt;,
+    },
+
+    ACK {
+        ack_delay: u64,
+        ranges: ranges::RangeSet,
+        ecn_counts: <span class="prelude-ty">Option</span>&lt;EcnCounts&gt;,
+    },
+
+    ResetStream {
+        stream_id: u64,
+        error_code: u64,
+        final_size: u64,
+    },
+
+    StopSending {
+        stream_id: u64,
+        error_code: u64,
+    },
+
+    Crypto {
+        data: stream::RangeBuf,
+    },
+
+    CryptoHeader {
+        offset: u64,
+        length: usize,
+    },
+
+    NewToken {
+        token: Vec&lt;u8&gt;,
+    },
+
+    Stream {
+        stream_id: u64,
+        data: stream::RangeBuf,
+    },
+
+    StreamHeader {
+        stream_id: u64,
+        offset: u64,
+        length: usize,
+        fin: bool,
+    },
+
+    MaxData {
+        max: u64,
+    },
+
+    MaxStreamData {
+        stream_id: u64,
+        max: u64,
+    },
+
+    MaxStreamsBidi {
+        max: u64,
+    },
+
+    MaxStreamsUni {
+        max: u64,
+    },
+
+    DataBlocked {
+        limit: u64,
+    },
+
+    StreamDataBlocked {
+        stream_id: u64,
+        limit: u64,
+    },
+
+    StreamsBlockedBidi {
+        limit: u64,
+    },
+
+    StreamsBlockedUni {
+        limit: u64,
+    },
+
+    NewConnectionId {
+        seq_num: u64,
+        retire_prior_to: u64,
+        conn_id: Vec&lt;u8&gt;,
+        reset_token: [u8; <span class="number">16</span>],
+    },
+
+    RetireConnectionId {
+        seq_num: u64,
+    },
+
+    PathChallenge {
+        data: [u8; <span class="number">8</span>],
+    },
+
+    PathResponse {
+        data: [u8; <span class="number">8</span>],
+    },
+
+    ConnectionClose {
+        error_code: u64,
+        frame_type: u64,
+        reason: Vec&lt;u8&gt;,
+    },
+
+    ApplicationClose {
+        error_code: u64,
+        reason: Vec&lt;u8&gt;,
+    },
+
+    HandshakeDone,
+
+    Datagram {
+        data: Vec&lt;u8&gt;,
+    },
+
+    DatagramHeader {
+        length: usize,
+    },
+}
+
+<span class="kw">impl </span>Frame {
+    <span class="kw">pub fn </span>from_bytes(
+        b: <span class="kw-2">&amp;mut </span>octets::Octets, pkt: packet::Type,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;Frame&gt; {
+        <span class="kw">let </span>frame_type = b.get_varint()<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>frame = <span class="kw">match </span>frame_type {
+            <span class="number">0x00 </span>=&gt; {
+                <span class="kw">let </span><span class="kw-2">mut </span>len = <span class="number">1</span>;
+
+                <span class="kw">while </span>b.peek_u8() == <span class="prelude-val">Ok</span>(<span class="number">0x00</span>) {
+                    b.get_u8()<span class="question-mark">?</span>;
+
+                    len += <span class="number">1</span>;
+                }
+
+                Frame::Padding { len }
+            },
+
+            <span class="number">0x01 </span>=&gt; Frame::Ping { mtu_probe: <span class="prelude-val">None </span>},
+
+            <span class="number">0x02</span>..=<span class="number">0x03 </span>=&gt; parse_ack_frame(frame_type, b)<span class="question-mark">?</span>,
+
+            <span class="number">0x04 </span>=&gt; Frame::ResetStream {
+                stream_id: b.get_varint()<span class="question-mark">?</span>,
+                error_code: b.get_varint()<span class="question-mark">?</span>,
+                final_size: b.get_varint()<span class="question-mark">?</span>,
+            },
+
+            <span class="number">0x05 </span>=&gt; Frame::StopSending {
+                stream_id: b.get_varint()<span class="question-mark">?</span>,
+                error_code: b.get_varint()<span class="question-mark">?</span>,
+            },
+
+            <span class="number">0x06 </span>=&gt; {
+                <span class="kw">let </span>offset = b.get_varint()<span class="question-mark">?</span>;
+                <span class="kw">let </span>data = b.get_bytes_with_varint_length()<span class="question-mark">?</span>;
+                <span class="kw">let </span>data = stream::RangeBuf::from(data.as_ref(), offset, <span class="bool-val">false</span>);
+
+                Frame::Crypto { data }
+            },
+
+            <span class="number">0x07 </span>=&gt; {
+                <span class="kw">let </span>len = b.get_varint()<span class="question-mark">?</span>;
+                <span class="kw">if </span>len == <span class="number">0 </span>{
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidFrame);
+                }
+
+                Frame::NewToken {
+                    token: b.get_bytes(len <span class="kw">as </span>usize)<span class="question-mark">?</span>.to_vec(),
+                }
+            },
+
+            <span class="number">0x08</span>..=<span class="number">0x0f </span>=&gt; parse_stream_frame(frame_type, b)<span class="question-mark">?</span>,
+
+            <span class="number">0x10 </span>=&gt; Frame::MaxData {
+                max: b.get_varint()<span class="question-mark">?</span>,
+            },
+
+            <span class="number">0x11 </span>=&gt; Frame::MaxStreamData {
+                stream_id: b.get_varint()<span class="question-mark">?</span>,
+                max: b.get_varint()<span class="question-mark">?</span>,
+            },
+
+            <span class="number">0x12 </span>=&gt; Frame::MaxStreamsBidi {
+                max: b.get_varint()<span class="question-mark">?</span>,
+            },
+
+            <span class="number">0x13 </span>=&gt; Frame::MaxStreamsUni {
+                max: b.get_varint()<span class="question-mark">?</span>,
+            },
+
+            <span class="number">0x14 </span>=&gt; Frame::DataBlocked {
+                limit: b.get_varint()<span class="question-mark">?</span>,
+            },
+
+            <span class="number">0x15 </span>=&gt; Frame::StreamDataBlocked {
+                stream_id: b.get_varint()<span class="question-mark">?</span>,
+                limit: b.get_varint()<span class="question-mark">?</span>,
+            },
+
+            <span class="number">0x16 </span>=&gt; Frame::StreamsBlockedBidi {
+                limit: b.get_varint()<span class="question-mark">?</span>,
+            },
+
+            <span class="number">0x17 </span>=&gt; Frame::StreamsBlockedUni {
+                limit: b.get_varint()<span class="question-mark">?</span>,
+            },
+
+            <span class="number">0x18 </span>=&gt; {
+                <span class="kw">let </span>seq_num = b.get_varint()<span class="question-mark">?</span>;
+                <span class="kw">let </span>retire_prior_to = b.get_varint()<span class="question-mark">?</span>;
+                <span class="kw">let </span>conn_id_len = b.get_u8()<span class="question-mark">?</span>;
+
+                <span class="kw">if </span>!(<span class="number">1</span>..=packet::MAX_CID_LEN).contains(<span class="kw-2">&amp;</span>conn_id_len) {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidFrame);
+                }
+
+                Frame::NewConnectionId {
+                    seq_num,
+                    retire_prior_to,
+                    conn_id: b.get_bytes(conn_id_len <span class="kw">as </span>usize)<span class="question-mark">?</span>.to_vec(),
+                    reset_token: b
+                        .get_bytes(<span class="number">16</span>)<span class="question-mark">?
+                        </span>.buf()
+                        .try_into()
+                        .map_err(|<span class="kw">_</span>| Error::BufferTooShort)<span class="question-mark">?</span>,
+                }
+            },
+
+            <span class="number">0x19 </span>=&gt; Frame::RetireConnectionId {
+                seq_num: b.get_varint()<span class="question-mark">?</span>,
+            },
+
+            <span class="number">0x1a </span>=&gt; Frame::PathChallenge {
+                data: b
+                    .get_bytes(<span class="number">8</span>)<span class="question-mark">?
+                    </span>.buf()
+                    .try_into()
+                    .map_err(|<span class="kw">_</span>| Error::BufferTooShort)<span class="question-mark">?</span>,
+            },
+
+            <span class="number">0x1b </span>=&gt; Frame::PathResponse {
+                data: b
+                    .get_bytes(<span class="number">8</span>)<span class="question-mark">?
+                    </span>.buf()
+                    .try_into()
+                    .map_err(|<span class="kw">_</span>| Error::BufferTooShort)<span class="question-mark">?</span>,
+            },
+
+            <span class="number">0x1c </span>=&gt; Frame::ConnectionClose {
+                error_code: b.get_varint()<span class="question-mark">?</span>,
+                frame_type: b.get_varint()<span class="question-mark">?</span>,
+                reason: b.get_bytes_with_varint_length()<span class="question-mark">?</span>.to_vec(),
+            },
+
+            <span class="number">0x1d </span>=&gt; Frame::ApplicationClose {
+                error_code: b.get_varint()<span class="question-mark">?</span>,
+                reason: b.get_bytes_with_varint_length()<span class="question-mark">?</span>.to_vec(),
+            },
+
+            <span class="number">0x1e </span>=&gt; Frame::HandshakeDone,
+
+            <span class="number">0x30 </span>| <span class="number">0x31 </span>=&gt; parse_datagram_frame(frame_type, b)<span class="question-mark">?</span>,
+
+            <span class="kw">_ </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidFrame),
+        };
+
+        <span class="kw">let </span>allowed = <span class="kw">match </span>(pkt, <span class="kw-2">&amp;</span>frame) {
+            <span class="comment">// PADDING and PING are allowed on all packet types.
+            </span>(<span class="kw">_</span>, Frame::Padding { .. }) | (<span class="kw">_</span>, Frame::Ping { .. }) =&gt; <span class="bool-val">true</span>,
+
+            <span class="comment">// ACK, CRYPTO, HANDSHAKE_DONE, NEW_TOKEN, PATH_RESPONSE, and
+            // RETIRE_CONNECTION_ID can't be sent on 0-RTT packets.
+            </span>(packet::Type::ZeroRTT, Frame::ACK { .. }) =&gt; <span class="bool-val">false</span>,
+            (packet::Type::ZeroRTT, Frame::Crypto { .. }) =&gt; <span class="bool-val">false</span>,
+            (packet::Type::ZeroRTT, Frame::HandshakeDone) =&gt; <span class="bool-val">false</span>,
+            (packet::Type::ZeroRTT, Frame::NewToken { .. }) =&gt; <span class="bool-val">false</span>,
+            (packet::Type::ZeroRTT, Frame::PathResponse { .. }) =&gt; <span class="bool-val">false</span>,
+            (packet::Type::ZeroRTT, Frame::RetireConnectionId { .. }) =&gt; <span class="bool-val">false</span>,
+            (packet::Type::ZeroRTT, Frame::ConnectionClose { .. }) =&gt; <span class="bool-val">false</span>,
+
+            <span class="comment">// ACK, CRYPTO and CONNECTION_CLOSE can be sent on all other packet
+            // types.
+            </span>(<span class="kw">_</span>, Frame::ACK { .. }) =&gt; <span class="bool-val">true</span>,
+            (<span class="kw">_</span>, Frame::Crypto { .. }) =&gt; <span class="bool-val">true</span>,
+            (<span class="kw">_</span>, Frame::ConnectionClose { .. }) =&gt; <span class="bool-val">true</span>,
+
+            <span class="comment">// All frames are allowed on 0-RTT and 1-RTT packets.
+            </span>(packet::Type::Short, <span class="kw">_</span>) =&gt; <span class="bool-val">true</span>,
+            (packet::Type::ZeroRTT, <span class="kw">_</span>) =&gt; <span class="bool-val">true</span>,
+
+            <span class="comment">// All other cases are forbidden.
+            </span>(..) =&gt; <span class="bool-val">false</span>,
+        };
+
+        <span class="kw">if </span>!allowed {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidPacket);
+        }
+
+        <span class="prelude-val">Ok</span>(frame)
+    }
+
+    <span class="kw">pub fn </span>to_bytes(<span class="kw-2">&amp;</span><span class="self">self</span>, b: <span class="kw-2">&amp;mut </span>octets::OctetsMut) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="kw">let </span>before = b.cap();
+
+        <span class="kw">match </span><span class="self">self </span>{
+            Frame::Padding { len } =&gt; {
+                <span class="kw">let </span><span class="kw-2">mut </span>left = <span class="kw-2">*</span>len;
+
+                <span class="kw">while </span>left &gt; <span class="number">0 </span>{
+                    b.put_varint(<span class="number">0x00</span>)<span class="question-mark">?</span>;
+
+                    left -= <span class="number">1</span>;
+                }
+            },
+
+            Frame::Ping { .. } =&gt; {
+                b.put_varint(<span class="number">0x01</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::ACK {
+                ack_delay,
+                ranges,
+                ecn_counts,
+            } =&gt; {
+                <span class="kw">if </span>ecn_counts.is_none() {
+                    b.put_varint(<span class="number">0x02</span>)<span class="question-mark">?</span>;
+                } <span class="kw">else </span>{
+                    b.put_varint(<span class="number">0x03</span>)<span class="question-mark">?</span>;
+                }
+
+                <span class="kw">let </span><span class="kw-2">mut </span>it = ranges.iter().rev();
+
+                <span class="kw">let </span>first = it.next().unwrap();
+                <span class="kw">let </span>ack_block = (first.end - <span class="number">1</span>) - first.start;
+
+                b.put_varint(first.end - <span class="number">1</span>)<span class="question-mark">?</span>;
+                b.put_varint(<span class="kw-2">*</span>ack_delay)<span class="question-mark">?</span>;
+                b.put_varint(it.len() <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+                b.put_varint(ack_block)<span class="question-mark">?</span>;
+
+                <span class="kw">let </span><span class="kw-2">mut </span>smallest_ack = first.start;
+
+                <span class="kw">for </span>block <span class="kw">in </span>it {
+                    <span class="kw">let </span>gap = smallest_ack - block.end - <span class="number">1</span>;
+                    <span class="kw">let </span>ack_block = (block.end - <span class="number">1</span>) - block.start;
+
+                    b.put_varint(gap)<span class="question-mark">?</span>;
+                    b.put_varint(ack_block)<span class="question-mark">?</span>;
+
+                    smallest_ack = block.start;
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(ecn) = ecn_counts {
+                    b.put_varint(ecn.ect0_count)<span class="question-mark">?</span>;
+                    b.put_varint(ecn.ect1_count)<span class="question-mark">?</span>;
+                    b.put_varint(ecn.ecn_ce_count)<span class="question-mark">?</span>;
+                }
+            },
+
+            Frame::ResetStream {
+                stream_id,
+                error_code,
+                final_size,
+            } =&gt; {
+                b.put_varint(<span class="number">0x04</span>)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>stream_id)<span class="question-mark">?</span>;
+                b.put_varint(<span class="kw-2">*</span>error_code)<span class="question-mark">?</span>;
+                b.put_varint(<span class="kw-2">*</span>final_size)<span class="question-mark">?</span>;
+            },
+
+            Frame::StopSending {
+                stream_id,
+                error_code,
+            } =&gt; {
+                b.put_varint(<span class="number">0x05</span>)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>stream_id)<span class="question-mark">?</span>;
+                b.put_varint(<span class="kw-2">*</span>error_code)<span class="question-mark">?</span>;
+            },
+
+            Frame::Crypto { data } =&gt; {
+                encode_crypto_header(data.off(), data.len() <span class="kw">as </span>u64, b)<span class="question-mark">?</span>;
+
+                b.put_bytes(data)<span class="question-mark">?</span>;
+            },
+
+            Frame::CryptoHeader { .. } =&gt; (),
+
+            Frame::NewToken { token } =&gt; {
+                b.put_varint(<span class="number">0x07</span>)<span class="question-mark">?</span>;
+
+                b.put_varint(token.len() <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+                b.put_bytes(token)<span class="question-mark">?</span>;
+            },
+
+            Frame::Stream { stream_id, data } =&gt; {
+                encode_stream_header(
+                    <span class="kw-2">*</span>stream_id,
+                    data.off(),
+                    data.len() <span class="kw">as </span>u64,
+                    data.fin(),
+                    b,
+                )<span class="question-mark">?</span>;
+
+                b.put_bytes(data)<span class="question-mark">?</span>;
+            },
+
+            Frame::StreamHeader { .. } =&gt; (),
+
+            Frame::MaxData { max } =&gt; {
+                b.put_varint(<span class="number">0x10</span>)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>max)<span class="question-mark">?</span>;
+            },
+
+            Frame::MaxStreamData { stream_id, max } =&gt; {
+                b.put_varint(<span class="number">0x11</span>)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>stream_id)<span class="question-mark">?</span>;
+                b.put_varint(<span class="kw-2">*</span>max)<span class="question-mark">?</span>;
+            },
+
+            Frame::MaxStreamsBidi { max } =&gt; {
+                b.put_varint(<span class="number">0x12</span>)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>max)<span class="question-mark">?</span>;
+            },
+
+            Frame::MaxStreamsUni { max } =&gt; {
+                b.put_varint(<span class="number">0x13</span>)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>max)<span class="question-mark">?</span>;
+            },
+
+            Frame::DataBlocked { limit } =&gt; {
+                b.put_varint(<span class="number">0x14</span>)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>limit)<span class="question-mark">?</span>;
+            },
+
+            Frame::StreamDataBlocked { stream_id, limit } =&gt; {
+                b.put_varint(<span class="number">0x15</span>)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>stream_id)<span class="question-mark">?</span>;
+                b.put_varint(<span class="kw-2">*</span>limit)<span class="question-mark">?</span>;
+            },
+
+            Frame::StreamsBlockedBidi { limit } =&gt; {
+                b.put_varint(<span class="number">0x16</span>)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>limit)<span class="question-mark">?</span>;
+            },
+
+            Frame::StreamsBlockedUni { limit } =&gt; {
+                b.put_varint(<span class="number">0x17</span>)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>limit)<span class="question-mark">?</span>;
+            },
+
+            Frame::NewConnectionId {
+                seq_num,
+                retire_prior_to,
+                conn_id,
+                reset_token,
+            } =&gt; {
+                b.put_varint(<span class="number">0x18</span>)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>seq_num)<span class="question-mark">?</span>;
+                b.put_varint(<span class="kw-2">*</span>retire_prior_to)<span class="question-mark">?</span>;
+                b.put_u8(conn_id.len() <span class="kw">as </span>u8)<span class="question-mark">?</span>;
+                b.put_bytes(conn_id.as_ref())<span class="question-mark">?</span>;
+                b.put_bytes(reset_token.as_ref())<span class="question-mark">?</span>;
+            },
+
+            Frame::RetireConnectionId { seq_num } =&gt; {
+                b.put_varint(<span class="number">0x19</span>)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>seq_num)<span class="question-mark">?</span>;
+            },
+
+            Frame::PathChallenge { data } =&gt; {
+                b.put_varint(<span class="number">0x1a</span>)<span class="question-mark">?</span>;
+
+                b.put_bytes(data.as_ref())<span class="question-mark">?</span>;
+            },
+
+            Frame::PathResponse { data } =&gt; {
+                b.put_varint(<span class="number">0x1b</span>)<span class="question-mark">?</span>;
+
+                b.put_bytes(data.as_ref())<span class="question-mark">?</span>;
+            },
+
+            Frame::ConnectionClose {
+                error_code,
+                frame_type,
+                reason,
+            } =&gt; {
+                b.put_varint(<span class="number">0x1c</span>)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>error_code)<span class="question-mark">?</span>;
+                b.put_varint(<span class="kw-2">*</span>frame_type)<span class="question-mark">?</span>;
+                b.put_varint(reason.len() <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+                b.put_bytes(reason.as_ref())<span class="question-mark">?</span>;
+            },
+
+            Frame::ApplicationClose { error_code, reason } =&gt; {
+                b.put_varint(<span class="number">0x1d</span>)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>error_code)<span class="question-mark">?</span>;
+                b.put_varint(reason.len() <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+                b.put_bytes(reason.as_ref())<span class="question-mark">?</span>;
+            },
+
+            Frame::HandshakeDone =&gt; {
+                b.put_varint(<span class="number">0x1e</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::Datagram { data } =&gt; {
+                encode_dgram_header(data.len() <span class="kw">as </span>u64, b)<span class="question-mark">?</span>;
+
+                b.put_bytes(data.as_ref())<span class="question-mark">?</span>;
+            },
+
+            Frame::DatagramHeader { .. } =&gt; (),
+        }
+
+        <span class="prelude-val">Ok</span>(before - b.cap())
+    }
+
+    <span class="kw">pub fn </span>wire_len(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="kw">match </span><span class="self">self </span>{
+            Frame::Padding { len } =&gt; <span class="kw-2">*</span>len,
+
+            Frame::Ping { .. } =&gt; <span class="number">1</span>,
+
+            Frame::ACK {
+                ack_delay,
+                ranges,
+                ecn_counts,
+            } =&gt; {
+                <span class="kw">let </span><span class="kw-2">mut </span>it = ranges.iter().rev();
+
+                <span class="kw">let </span>first = it.next().unwrap();
+                <span class="kw">let </span>ack_block = (first.end - <span class="number">1</span>) - first.start;
+
+                <span class="kw">let </span><span class="kw-2">mut </span>len = <span class="number">1 </span>+ <span class="comment">// frame type
+                    </span>octets::varint_len(first.end - <span class="number">1</span>) + <span class="comment">// largest_ack
+                    </span>octets::varint_len(<span class="kw-2">*</span>ack_delay) + <span class="comment">// ack_delay
+                    </span>octets::varint_len(it.len() <span class="kw">as </span>u64) + <span class="comment">// block_count
+                    </span>octets::varint_len(ack_block); <span class="comment">// first_block
+
+                </span><span class="kw">let </span><span class="kw-2">mut </span>smallest_ack = first.start;
+
+                <span class="kw">for </span>block <span class="kw">in </span>it {
+                    <span class="kw">let </span>gap = smallest_ack - block.end - <span class="number">1</span>;
+                    <span class="kw">let </span>ack_block = (block.end - <span class="number">1</span>) - block.start;
+
+                    len += octets::varint_len(gap) + <span class="comment">// gap
+                           </span>octets::varint_len(ack_block); <span class="comment">// ack_block
+
+                    </span>smallest_ack = block.start;
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(ecn) = ecn_counts {
+                    len += octets::varint_len(ecn.ect0_count) +
+                        octets::varint_len(ecn.ect1_count) +
+                        octets::varint_len(ecn.ecn_ce_count);
+                }
+
+                len
+            },
+
+            Frame::ResetStream {
+                stream_id,
+                error_code,
+                final_size,
+            } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(<span class="kw-2">*</span>stream_id) + <span class="comment">// stream_id
+                </span>octets::varint_len(<span class="kw-2">*</span>error_code) + <span class="comment">// error_code
+                </span>octets::varint_len(<span class="kw-2">*</span>final_size) <span class="comment">// final_size
+            </span>},
+
+            Frame::StopSending {
+                stream_id,
+                error_code,
+            } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(<span class="kw-2">*</span>stream_id) + <span class="comment">// stream_id
+                </span>octets::varint_len(<span class="kw-2">*</span>error_code) <span class="comment">// error_code
+            </span>},
+
+            Frame::Crypto { data } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(data.off()) + <span class="comment">// offset
+                </span><span class="number">2 </span>+ <span class="comment">// length, always encode as 2-byte varint
+                </span>data.len() <span class="comment">// data
+            </span>},
+
+            Frame::CryptoHeader { offset, length, .. } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(<span class="kw-2">*</span>offset) + <span class="comment">// offset
+                </span><span class="number">2 </span>+ <span class="comment">// length, always encode as 2-byte varint
+                </span>length <span class="comment">// data
+            </span>},
+
+            Frame::NewToken { token } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(token.len() <span class="kw">as </span>u64) + <span class="comment">// token length
+                </span>token.len() <span class="comment">// token
+            </span>},
+
+            Frame::Stream { stream_id, data } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(<span class="kw-2">*</span>stream_id) + <span class="comment">// stream_id
+                </span>octets::varint_len(data.off()) + <span class="comment">// offset
+                </span><span class="number">2 </span>+ <span class="comment">// length, always encode as 2-byte varint
+                </span>data.len() <span class="comment">// data
+            </span>},
+
+            Frame::StreamHeader {
+                stream_id,
+                offset,
+                length,
+                ..
+            } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(<span class="kw-2">*</span>stream_id) + <span class="comment">// stream_id
+                </span>octets::varint_len(<span class="kw-2">*</span>offset) + <span class="comment">// offset
+                </span><span class="number">2 </span>+ <span class="comment">// length, always encode as 2-byte varint
+                </span>length <span class="comment">// data
+            </span>},
+
+            Frame::MaxData { max } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(<span class="kw-2">*</span>max) <span class="comment">// max
+            </span>},
+
+            Frame::MaxStreamData { stream_id, max } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(<span class="kw-2">*</span>stream_id) + <span class="comment">// stream_id
+                </span>octets::varint_len(<span class="kw-2">*</span>max) <span class="comment">// max
+            </span>},
+
+            Frame::MaxStreamsBidi { max } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(<span class="kw-2">*</span>max) <span class="comment">// max
+            </span>},
+
+            Frame::MaxStreamsUni { max } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(<span class="kw-2">*</span>max) <span class="comment">// max
+            </span>},
+
+            Frame::DataBlocked { limit } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(<span class="kw-2">*</span>limit) <span class="comment">// limit
+            </span>},
+
+            Frame::StreamDataBlocked { stream_id, limit } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(<span class="kw-2">*</span>stream_id) + <span class="comment">// stream_id
+                </span>octets::varint_len(<span class="kw-2">*</span>limit) <span class="comment">// limit
+            </span>},
+
+            Frame::StreamsBlockedBidi { limit } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(<span class="kw-2">*</span>limit) <span class="comment">// limit
+            </span>},
+
+            Frame::StreamsBlockedUni { limit } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(<span class="kw-2">*</span>limit) <span class="comment">// limit
+            </span>},
+
+            Frame::NewConnectionId {
+                seq_num,
+                retire_prior_to,
+                conn_id,
+                reset_token,
+            } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(<span class="kw-2">*</span>seq_num) + <span class="comment">// seq_num
+                </span>octets::varint_len(<span class="kw-2">*</span>retire_prior_to) + <span class="comment">// retire_prior_to
+                </span><span class="number">1 </span>+ <span class="comment">// conn_id length
+                </span>conn_id.len() + <span class="comment">// conn_id
+                </span>reset_token.len() <span class="comment">// reset_token
+            </span>},
+
+            Frame::RetireConnectionId { seq_num } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(<span class="kw-2">*</span>seq_num) <span class="comment">// seq_num
+            </span>},
+
+            Frame::PathChallenge { .. } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span><span class="number">8 </span><span class="comment">// data
+            </span>},
+
+            Frame::PathResponse { .. } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span><span class="number">8 </span><span class="comment">// data
+            </span>},
+
+            Frame::ConnectionClose {
+                frame_type,
+                error_code,
+                reason,
+                ..
+            } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(<span class="kw-2">*</span>error_code) + <span class="comment">// error_code
+                </span>octets::varint_len(<span class="kw-2">*</span>frame_type) + <span class="comment">// frame_type
+                </span>octets::varint_len(reason.len() <span class="kw">as </span>u64) + <span class="comment">// reason_len
+                </span>reason.len() <span class="comment">// reason
+            </span>},
+
+            Frame::ApplicationClose { reason, error_code } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(<span class="kw-2">*</span>error_code) + <span class="comment">// error_code
+                </span>octets::varint_len(reason.len() <span class="kw">as </span>u64) + <span class="comment">// reason_len
+                </span>reason.len() <span class="comment">// reason
+            </span>},
+
+            Frame::HandshakeDone =&gt; {
+                <span class="number">1 </span><span class="comment">// frame type
+            </span>},
+
+            Frame::Datagram { data } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span><span class="number">2 </span>+ <span class="comment">// length, always encode as 2-byte varint
+                </span>data.len() <span class="comment">// data
+            </span>},
+
+            Frame::DatagramHeader { length } =&gt; {
+                <span class="number">1 </span>+ <span class="comment">// frame type
+                </span><span class="number">2 </span>+ <span class="comment">// length, always encode as 2-byte varint
+                </span><span class="kw-2">*</span>length <span class="comment">// data
+            </span>},
+        }
+    }
+
+    <span class="kw">pub fn </span>ack_eliciting(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="comment">// Any other frame is ack-eliciting (note the `!`).
+        </span>!<span class="macro">matches!</span>(
+            <span class="self">self</span>,
+            Frame::Padding { .. } |
+                Frame::ACK { .. } |
+                Frame::ApplicationClose { .. } |
+                Frame::ConnectionClose { .. }
+        )
+    }
+
+    <span class="kw">pub fn </span>probing(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="macro">matches!</span>(
+            <span class="self">self</span>,
+            Frame::Padding { .. } |
+                Frame::NewConnectionId { .. } |
+                Frame::PathChallenge { .. } |
+                Frame::PathResponse { .. }
+        )
+    }
+
+    <span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+    </span><span class="kw">pub fn </span>to_qlog(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; QuicFrame {
+        <span class="kw">match </span><span class="self">self </span>{
+            Frame::Padding { len } =&gt; QuicFrame::Padding {
+                length: <span class="prelude-val">None</span>,
+                payload_length: <span class="kw-2">*</span>len <span class="kw">as </span>u32,
+            },
+
+            Frame::Ping { .. } =&gt; QuicFrame::Ping {
+                length: <span class="prelude-val">None</span>,
+                payload_length: <span class="prelude-val">None</span>,
+            },
+
+            Frame::ACK {
+                ack_delay,
+                ranges,
+                ecn_counts,
+            } =&gt; {
+                <span class="kw">let </span>ack_ranges = AckedRanges::Double(
+                    ranges.iter().map(|r| (r.start, r.end - <span class="number">1</span>)).collect(),
+                );
+
+                <span class="kw">let </span>(ect0, ect1, ce) = <span class="kw">match </span>ecn_counts {
+                    <span class="prelude-val">Some</span>(ecn) =&gt; (
+                        <span class="prelude-val">Some</span>(ecn.ect0_count),
+                        <span class="prelude-val">Some</span>(ecn.ect1_count),
+                        <span class="prelude-val">Some</span>(ecn.ecn_ce_count),
+                    ),
+
+                    <span class="prelude-val">None </span>=&gt; (<span class="prelude-val">None</span>, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>),
+                };
+
+                QuicFrame::Ack {
+                    ack_delay: <span class="prelude-val">Some</span>(<span class="kw-2">*</span>ack_delay <span class="kw">as </span>f32 / <span class="number">1000.0</span>),
+                    acked_ranges: <span class="prelude-val">Some</span>(ack_ranges),
+                    ect1,
+                    ect0,
+                    ce,
+                    length: <span class="prelude-val">None</span>,
+                    payload_length: <span class="prelude-val">None</span>,
+                }
+            },
+
+            Frame::ResetStream {
+                stream_id,
+                error_code,
+                final_size,
+            } =&gt; QuicFrame::ResetStream {
+                stream_id: <span class="kw-2">*</span>stream_id,
+                error_code: <span class="kw-2">*</span>error_code,
+                final_size: <span class="kw-2">*</span>final_size,
+                length: <span class="prelude-val">None</span>,
+                payload_length: <span class="prelude-val">None</span>,
+            },
+
+            Frame::StopSending {
+                stream_id,
+                error_code,
+            } =&gt; QuicFrame::StopSending {
+                stream_id: <span class="kw-2">*</span>stream_id,
+                error_code: <span class="kw-2">*</span>error_code,
+                length: <span class="prelude-val">None</span>,
+                payload_length: <span class="prelude-val">None</span>,
+            },
+
+            Frame::Crypto { data } =&gt; QuicFrame::Crypto {
+                offset: data.off(),
+                length: data.len() <span class="kw">as </span>u64,
+            },
+
+            Frame::CryptoHeader { offset, length } =&gt; QuicFrame::Crypto {
+                offset: <span class="kw-2">*</span>offset,
+                length: <span class="kw-2">*</span>length <span class="kw">as </span>u64,
+            },
+
+            Frame::NewToken { token } =&gt; QuicFrame::NewToken {
+                token: qlog::Token {
+                    <span class="comment">// TODO: pick the token type some how
+                    </span>ty: <span class="prelude-val">Some</span>(qlog::TokenType::Retry),
+                    raw: <span class="prelude-val">Some</span>(qlog::events::RawInfo {
+                        data: qlog::HexSlice::maybe_string(<span class="prelude-val">Some</span>(token)),
+                        length: <span class="prelude-val">Some</span>(token.len() <span class="kw">as </span>u64),
+                        payload_length: <span class="prelude-val">None</span>,
+                    }),
+                    details: <span class="prelude-val">None</span>,
+                },
+            },
+
+            Frame::Stream { stream_id, data } =&gt; QuicFrame::Stream {
+                stream_id: <span class="kw-2">*</span>stream_id,
+                offset: data.off(),
+                length: data.len() <span class="kw">as </span>u64,
+                fin: data.fin().then_some(<span class="bool-val">true</span>),
+                raw: <span class="prelude-val">None</span>,
+            },
+
+            Frame::StreamHeader {
+                stream_id,
+                offset,
+                length,
+                fin,
+            } =&gt; QuicFrame::Stream {
+                stream_id: <span class="kw-2">*</span>stream_id,
+                offset: <span class="kw-2">*</span>offset,
+                length: <span class="kw-2">*</span>length <span class="kw">as </span>u64,
+                fin: fin.then(|| <span class="bool-val">true</span>),
+                raw: <span class="prelude-val">None</span>,
+            },
+
+            Frame::MaxData { max } =&gt; QuicFrame::MaxData { maximum: <span class="kw-2">*</span>max },
+
+            Frame::MaxStreamData { stream_id, max } =&gt; QuicFrame::MaxStreamData {
+                stream_id: <span class="kw-2">*</span>stream_id,
+                maximum: <span class="kw-2">*</span>max,
+            },
+
+            Frame::MaxStreamsBidi { max } =&gt; QuicFrame::MaxStreams {
+                stream_type: StreamType::Bidirectional,
+                maximum: <span class="kw-2">*</span>max,
+            },
+
+            Frame::MaxStreamsUni { max } =&gt; QuicFrame::MaxStreams {
+                stream_type: StreamType::Unidirectional,
+                maximum: <span class="kw-2">*</span>max,
+            },
+
+            Frame::DataBlocked { limit } =&gt;
+                QuicFrame::DataBlocked { limit: <span class="kw-2">*</span>limit },
+
+            Frame::StreamDataBlocked { stream_id, limit } =&gt;
+                QuicFrame::StreamDataBlocked {
+                    stream_id: <span class="kw-2">*</span>stream_id,
+                    limit: <span class="kw-2">*</span>limit,
+                },
+
+            Frame::StreamsBlockedBidi { limit } =&gt; QuicFrame::StreamsBlocked {
+                stream_type: StreamType::Bidirectional,
+                limit: <span class="kw-2">*</span>limit,
+            },
+
+            Frame::StreamsBlockedUni { limit } =&gt; QuicFrame::StreamsBlocked {
+                stream_type: StreamType::Unidirectional,
+                limit: <span class="kw-2">*</span>limit,
+            },
+
+            Frame::NewConnectionId {
+                seq_num,
+                retire_prior_to,
+                conn_id,
+                reset_token,
+            } =&gt; QuicFrame::NewConnectionId {
+                sequence_number: <span class="kw-2">*</span>seq_num <span class="kw">as </span>u32,
+                retire_prior_to: <span class="kw-2">*</span>retire_prior_to <span class="kw">as </span>u32,
+                connection_id_length: <span class="prelude-val">Some</span>(conn_id.len() <span class="kw">as </span>u8),
+                connection_id: <span class="macro">format!</span>(<span class="string">"{}"</span>, qlog::HexSlice::new(conn_id)),
+                stateless_reset_token: qlog::HexSlice::maybe_string(<span class="prelude-val">Some</span>(
+                    reset_token,
+                )),
+            },
+
+            Frame::RetireConnectionId { seq_num } =&gt;
+                QuicFrame::RetireConnectionId {
+                    sequence_number: <span class="kw-2">*</span>seq_num <span class="kw">as </span>u32,
+                },
+
+            Frame::PathChallenge { .. } =&gt;
+                QuicFrame::PathChallenge { data: <span class="prelude-val">None </span>},
+
+            Frame::PathResponse { .. } =&gt; QuicFrame::PathResponse { data: <span class="prelude-val">None </span>},
+
+            Frame::ConnectionClose {
+                error_code, reason, ..
+            } =&gt; QuicFrame::ConnectionClose {
+                error_space: <span class="prelude-val">Some</span>(ErrorSpace::TransportError),
+                error_code: <span class="prelude-val">Some</span>(<span class="kw-2">*</span>error_code),
+                error_code_value: <span class="prelude-val">None</span>, <span class="comment">// raw error is no different for us
+                </span>reason: <span class="prelude-val">Some</span>(String::from_utf8_lossy(reason).into_owned()),
+                trigger_frame_type: <span class="prelude-val">None</span>, <span class="comment">// don't know trigger type
+            </span>},
+
+            Frame::ApplicationClose { error_code, reason } =&gt;
+                QuicFrame::ConnectionClose {
+                    error_space: <span class="prelude-val">Some</span>(ErrorSpace::ApplicationError),
+                    error_code: <span class="prelude-val">Some</span>(<span class="kw-2">*</span>error_code),
+                    error_code_value: <span class="prelude-val">None</span>, <span class="comment">// raw error is no different for us
+                    </span>reason: <span class="prelude-val">Some</span>(String::from_utf8_lossy(reason).into_owned()),
+                    trigger_frame_type: <span class="prelude-val">None</span>, <span class="comment">// don't know trigger type
+                </span>},
+
+            Frame::HandshakeDone =&gt; QuicFrame::HandshakeDone,
+
+            Frame::Datagram { data } =&gt; QuicFrame::Datagram {
+                length: data.len() <span class="kw">as </span>u64,
+                raw: <span class="prelude-val">None</span>,
+            },
+
+            Frame::DatagramHeader { length } =&gt; QuicFrame::Datagram {
+                length: <span class="kw-2">*</span>length <span class="kw">as </span>u64,
+                raw: <span class="prelude-val">None</span>,
+            },
+        }
+    }
+}
+
+<span class="kw">impl </span>std::fmt::Debug <span class="kw">for </span>Frame {
+    <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+        <span class="kw">match </span><span class="self">self </span>{
+            Frame::Padding { len } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"PADDING len={len}"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::Ping { mtu_probe } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"PING mtu_probe={mtu_probe:?}"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::ACK {
+                ack_delay,
+                ranges,
+                ecn_counts,
+            } =&gt; {
+                <span class="macro">write!</span>(
+                    f,
+                    <span class="string">"ACK delay={ack_delay} blocks={ranges:?} ecn_counts={ecn_counts:?}"
+                </span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::ResetStream {
+                stream_id,
+                error_code,
+                final_size,
+            } =&gt; {
+                <span class="macro">write!</span>(
+                    f,
+                    <span class="string">"RESET_STREAM stream={stream_id} err={error_code:x} size={final_size}"
+                </span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::StopSending {
+                stream_id,
+                error_code,
+            } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"STOP_SENDING stream={stream_id} err={error_code:x}"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::Crypto { data } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"CRYPTO off={} len={}"</span>, data.off(), data.len())<span class="question-mark">?</span>;
+            },
+
+            Frame::CryptoHeader { offset, length } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"CRYPTO off={offset} len={length}"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::NewToken { token } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"NEW_TOKEN len={}"</span>, token.len())<span class="question-mark">?</span>;
+            },
+
+            Frame::Stream { stream_id, data } =&gt; {
+                <span class="macro">write!</span>(
+                    f,
+                    <span class="string">"STREAM id={} off={} len={} fin={}"</span>,
+                    stream_id,
+                    data.off(),
+                    data.len(),
+                    data.fin()
+                )<span class="question-mark">?</span>;
+            },
+
+            Frame::StreamHeader {
+                stream_id,
+                offset,
+                length,
+                fin,
+            } =&gt; {
+                <span class="macro">write!</span>(
+                    f,
+                    <span class="string">"STREAM id={stream_id} off={offset} len={length} fin={fin}"
+                </span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::MaxData { max } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"MAX_DATA max={max}"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::MaxStreamData { stream_id, max } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"MAX_STREAM_DATA stream={stream_id} max={max}"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::MaxStreamsBidi { max } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"MAX_STREAMS type=bidi max={max}"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::MaxStreamsUni { max } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"MAX_STREAMS type=uni max={max}"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::DataBlocked { limit } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"DATA_BLOCKED limit={limit}"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::StreamDataBlocked { stream_id, limit } =&gt; {
+                <span class="macro">write!</span>(
+                    f,
+                    <span class="string">"STREAM_DATA_BLOCKED stream={stream_id} limit={limit}"
+                </span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::StreamsBlockedBidi { limit } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"STREAMS_BLOCKED type=bidi limit={limit}"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::StreamsBlockedUni { limit } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"STREAMS_BLOCKED type=uni limit={limit}"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::NewConnectionId {
+                seq_num,
+                retire_prior_to,
+                conn_id,
+                reset_token,
+            } =&gt; {
+                <span class="macro">write!</span>(
+                    f,
+                    <span class="string">"NEW_CONNECTION_ID seq_num={seq_num} retire_prior_to={retire_prior_to} conn_id={conn_id:02x?} reset_token={reset_token:02x?}"</span>,
+                )<span class="question-mark">?</span>;
+            },
+
+            Frame::RetireConnectionId { seq_num } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"RETIRE_CONNECTION_ID seq_num={seq_num}"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::PathChallenge { data } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"PATH_CHALLENGE data={data:02x?}"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::PathResponse { data } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"PATH_RESPONSE data={data:02x?}"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::ConnectionClose {
+                error_code,
+                frame_type,
+                reason,
+            } =&gt; {
+                <span class="macro">write!</span>(
+                    f,
+                    <span class="string">"CONNECTION_CLOSE err={error_code:x} frame={frame_type:x} reason={reason:x?}"
+                </span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::ApplicationClose { error_code, reason } =&gt; {
+                <span class="macro">write!</span>(
+                    f,
+                    <span class="string">"APPLICATION_CLOSE err={error_code:x} reason={reason:x?}"
+                </span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::HandshakeDone =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"HANDSHAKE_DONE"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::Datagram { data } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"DATAGRAM len={}"</span>, data.len())<span class="question-mark">?</span>;
+            },
+
+            Frame::DatagramHeader { length } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"DATAGRAM len={length}"</span>)<span class="question-mark">?</span>;
+            },
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+}
+
+<span class="kw">fn </span>parse_ack_frame(ty: u64, b: <span class="kw-2">&amp;mut </span>octets::Octets) -&gt; <span class="prelude-ty">Result</span>&lt;Frame&gt; {
+    <span class="kw">let </span>first = ty <span class="kw">as </span>u8;
+
+    <span class="kw">let </span>largest_ack = b.get_varint()<span class="question-mark">?</span>;
+    <span class="kw">let </span>ack_delay = b.get_varint()<span class="question-mark">?</span>;
+    <span class="kw">let </span>block_count = b.get_varint()<span class="question-mark">?</span>;
+    <span class="kw">let </span>ack_block = b.get_varint()<span class="question-mark">?</span>;
+
+    <span class="kw">if </span>largest_ack &lt; ack_block {
+        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidFrame);
+    }
+
+    <span class="kw">let </span><span class="kw-2">mut </span>smallest_ack = largest_ack - ack_block;
+
+    <span class="kw">let </span><span class="kw-2">mut </span>ranges = ranges::RangeSet::default();
+
+    ranges.insert(smallest_ack..largest_ack + <span class="number">1</span>);
+
+    <span class="kw">for </span>_i <span class="kw">in </span><span class="number">0</span>..block_count {
+        <span class="kw">let </span>gap = b.get_varint()<span class="question-mark">?</span>;
+
+        <span class="kw">if </span>smallest_ack &lt; <span class="number">2 </span>+ gap {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidFrame);
+        }
+
+        <span class="kw">let </span>largest_ack = (smallest_ack - gap) - <span class="number">2</span>;
+        <span class="kw">let </span>ack_block = b.get_varint()<span class="question-mark">?</span>;
+
+        <span class="kw">if </span>largest_ack &lt; ack_block {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidFrame);
+        }
+
+        smallest_ack = largest_ack - ack_block;
+
+        ranges.insert(smallest_ack..largest_ack + <span class="number">1</span>);
+    }
+
+    <span class="kw">let </span>ecn_counts = <span class="kw">if </span>first &amp; <span class="number">0x01 </span>!= <span class="number">0 </span>{
+        <span class="kw">let </span>ecn = EcnCounts {
+            ect0_count: b.get_varint()<span class="question-mark">?</span>,
+            ect1_count: b.get_varint()<span class="question-mark">?</span>,
+            ecn_ce_count: b.get_varint()<span class="question-mark">?</span>,
+        };
+
+        <span class="prelude-val">Some</span>(ecn)
+    } <span class="kw">else </span>{
+        <span class="prelude-val">None
+    </span>};
+
+    <span class="prelude-val">Ok</span>(Frame::ACK {
+        ack_delay,
+        ranges,
+        ecn_counts,
+    })
+}
+
+<span class="kw">pub fn </span>encode_crypto_header(
+    offset: u64, length: u64, b: <span class="kw-2">&amp;mut </span>octets::OctetsMut,
+) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+    b.put_varint(<span class="number">0x06</span>)<span class="question-mark">?</span>;
+
+    b.put_varint(offset)<span class="question-mark">?</span>;
+
+    <span class="comment">// Always encode length field as 2-byte varint.
+    </span>b.put_varint_with_len(length, <span class="number">2</span>)<span class="question-mark">?</span>;
+
+    <span class="prelude-val">Ok</span>(())
+}
+
+<span class="kw">pub fn </span>encode_stream_header(
+    stream_id: u64, offset: u64, length: u64, fin: bool,
+    b: <span class="kw-2">&amp;mut </span>octets::OctetsMut,
+) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+    <span class="kw">let </span><span class="kw-2">mut </span>ty: u8 = <span class="number">0x08</span>;
+
+    <span class="comment">// Always encode offset.
+    </span>ty |= <span class="number">0x04</span>;
+
+    <span class="comment">// Always encode length.
+    </span>ty |= <span class="number">0x02</span>;
+
+    <span class="kw">if </span>fin {
+        ty |= <span class="number">0x01</span>;
+    }
+
+    b.put_varint(u64::from(ty))<span class="question-mark">?</span>;
+
+    b.put_varint(stream_id)<span class="question-mark">?</span>;
+    b.put_varint(offset)<span class="question-mark">?</span>;
+
+    <span class="comment">// Always encode length field as 2-byte varint.
+    </span>b.put_varint_with_len(length, <span class="number">2</span>)<span class="question-mark">?</span>;
+
+    <span class="prelude-val">Ok</span>(())
+}
+
+<span class="kw">pub fn </span>encode_dgram_header(length: u64, b: <span class="kw-2">&amp;mut </span>octets::OctetsMut) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+    <span class="kw">let </span><span class="kw-2">mut </span>ty: u8 = <span class="number">0x30</span>;
+
+    <span class="comment">// Always encode length
+    </span>ty |= <span class="number">0x01</span>;
+
+    b.put_varint(u64::from(ty))<span class="question-mark">?</span>;
+
+    <span class="comment">// Always encode length field as 2-byte varint.
+    </span>b.put_varint_with_len(length, <span class="number">2</span>)<span class="question-mark">?</span>;
+
+    <span class="prelude-val">Ok</span>(())
+}
+
+<span class="kw">fn </span>parse_stream_frame(ty: u64, b: <span class="kw-2">&amp;mut </span>octets::Octets) -&gt; <span class="prelude-ty">Result</span>&lt;Frame&gt; {
+    <span class="kw">let </span>first = ty <span class="kw">as </span>u8;
+
+    <span class="kw">let </span>stream_id = b.get_varint()<span class="question-mark">?</span>;
+
+    <span class="kw">let </span>offset = <span class="kw">if </span>first &amp; <span class="number">0x04 </span>!= <span class="number">0 </span>{
+        b.get_varint()<span class="question-mark">?
+    </span>} <span class="kw">else </span>{
+        <span class="number">0
+    </span>};
+
+    <span class="kw">let </span>len = <span class="kw">if </span>first &amp; <span class="number">0x02 </span>!= <span class="number">0 </span>{
+        b.get_varint()<span class="question-mark">? </span><span class="kw">as </span>usize
+    } <span class="kw">else </span>{
+        b.cap()
+    };
+
+    <span class="kw">if </span>offset + len <span class="kw">as </span>u64 &gt;= MAX_STREAM_SIZE {
+        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidFrame);
+    }
+
+    <span class="kw">let </span>fin = first &amp; <span class="number">0x01 </span>!= <span class="number">0</span>;
+
+    <span class="kw">let </span>data = b.get_bytes(len)<span class="question-mark">?</span>;
+    <span class="kw">let </span>data = stream::RangeBuf::from(data.as_ref(), offset, fin);
+
+    <span class="prelude-val">Ok</span>(Frame::Stream { stream_id, data })
+}
+
+<span class="kw">fn </span>parse_datagram_frame(ty: u64, b: <span class="kw-2">&amp;mut </span>octets::Octets) -&gt; <span class="prelude-ty">Result</span>&lt;Frame&gt; {
+    <span class="kw">let </span>first = ty <span class="kw">as </span>u8;
+
+    <span class="kw">let </span>len = <span class="kw">if </span>first &amp; <span class="number">0x01 </span>!= <span class="number">0 </span>{
+        b.get_varint()<span class="question-mark">? </span><span class="kw">as </span>usize
+    } <span class="kw">else </span>{
+        b.cap()
+    };
+
+    <span class="kw">let </span>data = b.get_bytes(len)<span class="question-mark">?</span>;
+
+    <span class="prelude-val">Ok</span>(Frame::Datagram {
+        data: Vec::from(data.buf()),
+    })
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>padding() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::Padding { len: <span class="number">128 </span>};
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">128</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_ok());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>ping() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::Ping { mtu_probe: <span class="prelude-val">None </span>};
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>d[..wire_len], [<span class="number">0x01_u8</span>]);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_ok());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>ack() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>ranges = ranges::RangeSet::default();
+        ranges.insert(<span class="number">4</span>..<span class="number">7</span>);
+        ranges.insert(<span class="number">9</span>..<span class="number">12</span>);
+        ranges.insert(<span class="number">15</span>..<span class="number">19</span>);
+        ranges.insert(<span class="number">3000</span>..<span class="number">5000</span>);
+
+        <span class="kw">let </span>frame = Frame::ACK {
+            ack_delay: <span class="number">874_656_534</span>,
+            ranges,
+            ecn_counts: <span class="prelude-val">None</span>,
+        };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">17</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_ok());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>ack_ecn() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>ranges = ranges::RangeSet::default();
+        ranges.insert(<span class="number">4</span>..<span class="number">7</span>);
+        ranges.insert(<span class="number">9</span>..<span class="number">12</span>);
+        ranges.insert(<span class="number">15</span>..<span class="number">19</span>);
+        ranges.insert(<span class="number">3000</span>..<span class="number">5000</span>);
+
+        <span class="kw">let </span>ecn_counts = <span class="prelude-val">Some</span>(EcnCounts {
+            ect0_count: <span class="number">100</span>,
+            ect1_count: <span class="number">200</span>,
+            ecn_ce_count: <span class="number">300</span>,
+        });
+
+        <span class="kw">let </span>frame = Frame::ACK {
+            ack_delay: <span class="number">874_656_534</span>,
+            ranges,
+            ecn_counts,
+        };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">23</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_ok());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>reset_stream() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::ResetStream {
+            stream_id: <span class="number">123_213</span>,
+            error_code: <span class="number">21_123_767</span>,
+            final_size: <span class="number">21_123_767</span>,
+        };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">13</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stop_sending() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::StopSending {
+            stream_id: <span class="number">123_213</span>,
+            error_code: <span class="number">15_352</span>,
+        };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">7</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>crypto() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>data = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>];
+
+        <span class="kw">let </span>frame = Frame::Crypto {
+            data: stream::RangeBuf::from(<span class="kw-2">&amp;</span>data, <span class="number">1230976</span>, <span class="bool-val">false</span>),
+        };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">19</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_ok());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>new_token() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::NewToken {
+            token: Vec::from(<span class="string">"this is a token"</span>),
+        };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">17</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>data = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>];
+
+        <span class="kw">let </span>frame = Frame::Stream {
+            stream_id: <span class="number">32</span>,
+            data: stream::RangeBuf::from(<span class="kw-2">&amp;</span>data, <span class="number">1230976</span>, <span class="bool-val">true</span>),
+        };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">20</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_too_big() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>data = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>];
+
+        <span class="kw">let </span>frame = Frame::Stream {
+            stream_id: <span class="number">32</span>,
+            data: stream::RangeBuf::from(<span class="kw-2">&amp;</span>data, MAX_STREAM_SIZE - <span class="number">11</span>, <span class="bool-val">true</span>),
+        };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">24</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short),
+            <span class="prelude-val">Err</span>(Error::InvalidFrame)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>max_data() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::MaxData { max: <span class="number">128_318_273 </span>};
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">5</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>max_stream_data() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::MaxStreamData {
+            stream_id: <span class="number">12_321</span>,
+            max: <span class="number">128_318_273</span>,
+        };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">7</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>max_streams_bidi() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::MaxStreamsBidi { max: <span class="number">128_318_273 </span>};
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">5</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>max_streams_uni() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::MaxStreamsUni { max: <span class="number">128_318_273 </span>};
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">5</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>data_blocked() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::DataBlocked { limit: <span class="number">128_318_273 </span>};
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">5</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_data_blocked() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::StreamDataBlocked {
+            stream_id: <span class="number">12_321</span>,
+            limit: <span class="number">128_318_273</span>,
+        };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">7</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>streams_blocked_bidi() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::StreamsBlockedBidi { limit: <span class="number">128_318_273 </span>};
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">5</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>streams_blocked_uni() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::StreamsBlockedUni { limit: <span class="number">128_318_273 </span>};
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">5</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>new_connection_id() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::NewConnectionId {
+            seq_num: <span class="number">123_213</span>,
+            retire_prior_to: <span class="number">122_211</span>,
+            conn_id: <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>, <span class="number">13</span>, <span class="number">14</span>, <span class="number">15</span>],
+            reset_token: [<span class="number">0x42</span>; <span class="number">16</span>],
+        };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">41</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>retire_connection_id() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::RetireConnectionId { seq_num: <span class="number">123_213 </span>};
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">5</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>path_challenge() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::PathChallenge {
+            data: [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>],
+        };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">9</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>path_response() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::PathResponse {
+            data: [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>],
+        };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">9</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>connection_close() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::ConnectionClose {
+            error_code: <span class="number">0xbeef</span>,
+            frame_type: <span class="number">523_423</span>,
+            reason: <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>],
+        };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">22</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_ok());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>application_close() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::ApplicationClose {
+            error_code: <span class="number">0xbeef</span>,
+            reason: <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>],
+        };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">18</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>handshake_done() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::HandshakeDone;
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">1</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short), <span class="prelude-val">Ok</span>(frame));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_err());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>datagram() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>data = <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>];
+
+        <span class="kw">let </span>frame = Frame::Datagram { data: data.clone() };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, <span class="number">15</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Short),
+            <span class="prelude-val">Ok</span>(frame.clone())
+        );
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Initial).is_err());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::ZeroRTT).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>d);
+        <span class="macro">assert!</span>(Frame::from_bytes(<span class="kw-2">&amp;mut </span>b, packet::Type::Handshake).is_err());
+
+        <span class="kw">let </span>frame_data = <span class="kw">match </span><span class="kw-2">&amp;</span>frame {
+            Frame::Datagram { data } =&gt; data.clone(),
+
+            <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+        };
+
+        <span class="macro">assert_eq!</span>(frame_data, data);
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/h3/ffi.rs.html b/src/quiche/h3/ffi.rs.html
new file mode 100644
index 0000000..a0683c4
--- /dev/null
+++ b/src/quiche/h3/ffi.rs.html
@@ -0,0 +1,799 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/h3/ffi.rs`."><title>ffi.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="attr">#[cfg(feature = <span class="string">"sfv"</span>)]
+</span><span class="kw">use </span>std::convert::TryFrom;
+
+<span class="kw">use </span>std::ptr;
+<span class="kw">use </span>std::slice;
+
+<span class="kw">use </span>libc::c_int;
+<span class="kw">use </span>libc::c_void;
+<span class="kw">use </span>libc::size_t;
+<span class="kw">use </span>libc::ssize_t;
+
+<span class="kw">use crate</span>::<span class="kw-2">*</span>;
+
+<span class="kw">use </span><span class="kw">crate</span>::h3::NameValue;
+<span class="kw">use </span><span class="kw">crate</span>::h3::Priority;
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_config_new() -&gt; <span class="kw-2">*mut </span>h3::Config {
+    <span class="kw">match </span>h3::Config::new() {
+        <span class="prelude-val">Ok</span>(c) =&gt; Box::into_raw(Box::new(c)),
+
+        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; ptr::null_mut(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_config_set_max_field_section_size(
+    config: <span class="kw-2">&amp;mut </span>h3::Config, v: u64,
+) {
+    config.set_max_field_section_size(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_config_set_qpack_max_table_capacity(
+    config: <span class="kw-2">&amp;mut </span>h3::Config, v: u64,
+) {
+    config.set_qpack_max_table_capacity(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_config_set_qpack_blocked_streams(
+    config: <span class="kw-2">&amp;mut </span>h3::Config, v: u64,
+) {
+    config.set_qpack_blocked_streams(v);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_config_enable_extended_connect(
+    config: <span class="kw-2">&amp;mut </span>h3::Config, enabled: bool,
+) {
+    config.enable_extended_connect(enabled);
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_config_free(config: <span class="kw-2">*mut </span>h3::Config) {
+    drop(<span class="kw">unsafe </span>{ Box::from_raw(config) });
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_conn_new_with_transport(
+    quic_conn: <span class="kw-2">&amp;mut </span>Connection, config: <span class="kw-2">&amp;mut </span>h3::Config,
+) -&gt; <span class="kw-2">*mut </span>h3::Connection {
+    <span class="kw">match </span>h3::Connection::with_transport(quic_conn, config) {
+        <span class="prelude-val">Ok</span>(c) =&gt; Box::into_raw(Box::new(c)),
+
+        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; ptr::null_mut(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_for_each_setting(
+    conn: <span class="kw-2">&amp;</span>h3::Connection,
+    cb: <span class="kw">extern fn</span>(identifier: u64, value: u64, argp: <span class="kw-2">*mut </span>c_void) -&gt; c_int,
+    argp: <span class="kw-2">*mut </span>c_void,
+) -&gt; c_int {
+    <span class="kw">match </span>conn.peer_settings_raw() {
+        <span class="prelude-val">Some</span>(raw) =&gt; {
+            <span class="kw">for </span>setting <span class="kw">in </span>raw {
+                <span class="kw">let </span>rc = cb(setting.<span class="number">0</span>, setting.<span class="number">1</span>, argp);
+
+                <span class="kw">if </span>rc != <span class="number">0 </span>{
+                    <span class="kw">return </span>rc;
+                }
+            }
+
+            <span class="number">0
+        </span>},
+
+        <span class="prelude-val">None </span>=&gt; -<span class="number">1</span>,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_conn_poll(
+    conn: <span class="kw-2">&amp;mut </span>h3::Connection, quic_conn: <span class="kw-2">&amp;mut </span>Connection,
+    ev: <span class="kw-2">*mut *const </span>h3::Event,
+) -&gt; i64 {
+    <span class="kw">match </span>conn.poll(quic_conn) {
+        <span class="prelude-val">Ok</span>((id, v)) =&gt; {
+            <span class="kw">unsafe </span>{
+                <span class="kw-2">*</span>ev = Box::into_raw(Box::new(v));
+            }
+
+            id <span class="kw">as </span>i64
+        },
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>i64,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_event_type(ev: <span class="kw-2">&amp;</span>h3::Event) -&gt; u32 {
+    <span class="kw">match </span>ev {
+        h3::Event::Headers { .. } =&gt; <span class="number">0</span>,
+
+        h3::Event::Data { .. } =&gt; <span class="number">1</span>,
+
+        h3::Event::Finished { .. } =&gt; <span class="number">2</span>,
+
+        h3::Event::GoAway { .. } =&gt; <span class="number">3</span>,
+
+        h3::Event::Reset { .. } =&gt; <span class="number">4</span>,
+
+        h3::Event::PriorityUpdate { .. } =&gt; <span class="number">5</span>,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_event_for_each_header(
+    ev: <span class="kw-2">&amp;</span>h3::Event,
+    cb: <span class="kw">extern fn</span>(
+        name: <span class="kw-2">*const </span>u8,
+        name_len: size_t,
+
+        value: <span class="kw-2">*const </span>u8,
+        value_len: size_t,
+
+        argp: <span class="kw-2">*mut </span>c_void,
+    ) -&gt; c_int,
+    argp: <span class="kw-2">*mut </span>c_void,
+) -&gt; c_int {
+    <span class="kw">match </span>ev {
+        h3::Event::Headers { list, .. } =&gt;
+            <span class="kw">for </span>h <span class="kw">in </span>list {
+                <span class="kw">let </span>rc = cb(
+                    h.name().as_ptr(),
+                    h.name().len(),
+                    h.value().as_ptr(),
+                    h.value().len(),
+                    argp,
+                );
+
+                <span class="kw">if </span>rc != <span class="number">0 </span>{
+                    <span class="kw">return </span>rc;
+                }
+            },
+
+        <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+    }
+
+    <span class="number">0
+</span>}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_event_headers_has_body(ev: <span class="kw-2">&amp;</span>h3::Event) -&gt; bool {
+    <span class="kw">match </span>ev {
+        h3::Event::Headers { has_body, .. } =&gt; <span class="kw-2">*</span>has_body,
+
+        <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_extended_connect_enabled_by_peer(
+    conn: <span class="kw-2">&amp;</span>h3::Connection,
+) -&gt; bool {
+    conn.extended_connect_enabled_by_peer()
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_event_free(ev: <span class="kw-2">*mut </span>h3::Event) {
+    drop(<span class="kw">unsafe </span>{ Box::from_raw(ev) });
+}
+
+<span class="attr">#[repr(C)]
+</span><span class="kw">pub struct </span>Header {
+    name: <span class="kw-2">*mut </span>u8,
+    name_len: usize,
+
+    value: <span class="kw-2">*mut </span>u8,
+    value_len: usize,
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_send_request(
+    conn: <span class="kw-2">&amp;mut </span>h3::Connection, quic_conn: <span class="kw-2">&amp;mut </span>Connection,
+    headers: <span class="kw-2">*const </span>Header, headers_len: size_t, fin: bool,
+) -&gt; i64 {
+    <span class="kw">let </span>req_headers = headers_from_ptr(headers, headers_len);
+
+    <span class="kw">match </span>conn.send_request(quic_conn, <span class="kw-2">&amp;</span>req_headers, fin) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v <span class="kw">as </span>i64,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>i64,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_send_response(
+    conn: <span class="kw-2">&amp;mut </span>h3::Connection, quic_conn: <span class="kw-2">&amp;mut </span>Connection, stream_id: u64,
+    headers: <span class="kw-2">*const </span>Header, headers_len: size_t, fin: bool,
+) -&gt; c_int {
+    <span class="kw">let </span>resp_headers = headers_from_ptr(headers, headers_len);
+
+    <span class="kw">match </span>conn.send_response(quic_conn, stream_id, <span class="kw-2">&amp;</span>resp_headers, fin) {
+        <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; <span class="number">0</span>,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_send_response_with_priority(
+    conn: <span class="kw-2">&amp;mut </span>h3::Connection, quic_conn: <span class="kw-2">&amp;mut </span>Connection, stream_id: u64,
+    headers: <span class="kw-2">*const </span>Header, headers_len: size_t, priority: <span class="kw-2">&amp;</span>Priority, fin: bool,
+) -&gt; c_int {
+    <span class="kw">let </span>resp_headers = headers_from_ptr(headers, headers_len);
+
+    <span class="kw">match </span>conn.send_response_with_priority(
+        quic_conn,
+        stream_id,
+        <span class="kw-2">&amp;</span>resp_headers,
+        priority,
+        fin,
+    ) {
+        <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; <span class="number">0</span>,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_send_body(
+    conn: <span class="kw-2">&amp;mut </span>h3::Connection, quic_conn: <span class="kw-2">&amp;mut </span>Connection, stream_id: u64,
+    body: <span class="kw-2">*const </span>u8, body_len: size_t, fin: bool,
+) -&gt; ssize_t {
+    <span class="kw">if </span>body_len &gt; &lt;ssize_t&gt;::max_value() <span class="kw">as </span>usize {
+        <span class="macro">panic!</span>(<span class="string">"The provided buffer is too large"</span>);
+    }
+
+    <span class="kw">let </span>body = <span class="kw">unsafe </span>{ slice::from_raw_parts(body, body_len) };
+
+    <span class="kw">match </span>conn.send_body(quic_conn, stream_id, body, fin) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v <span class="kw">as </span>ssize_t,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_recv_body(
+    conn: <span class="kw-2">&amp;mut </span>h3::Connection, quic_conn: <span class="kw-2">&amp;mut </span>Connection, stream_id: u64,
+    out: <span class="kw-2">*mut </span>u8, out_len: size_t,
+) -&gt; ssize_t {
+    <span class="kw">if </span>out_len &gt; &lt;ssize_t&gt;::max_value() <span class="kw">as </span>usize {
+        <span class="macro">panic!</span>(<span class="string">"The provided buffer is too large"</span>);
+    }
+
+    <span class="kw">let </span>out = <span class="kw">unsafe </span>{ slice::from_raw_parts_mut(out, out_len) };
+
+    <span class="kw">match </span>conn.recv_body(quic_conn, stream_id, out) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v <span class="kw">as </span>ssize_t,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c(),
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_send_goaway(
+    conn: <span class="kw-2">&amp;mut </span>h3::Connection, quic_conn: <span class="kw-2">&amp;mut </span>Connection, id: u64,
+) -&gt; c_int {
+    <span class="kw">match </span>conn.send_goaway(quic_conn, id) {
+        <span class="prelude-val">Ok</span>(()) =&gt; <span class="number">0</span>,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+#[cfg(feature = <span class="string">"sfv"</span>)]
+</span><span class="kw">pub extern fn </span>quiche_h3_parse_extensible_priority(
+    priority: <span class="kw-2">*const </span>u8, priority_len: size_t, parsed: <span class="kw-2">&amp;mut </span>Priority,
+) -&gt; c_int {
+    <span class="kw">let </span>priority = <span class="kw">unsafe </span>{ slice::from_raw_parts(priority, priority_len) };
+
+    <span class="kw">match </span>h3::Priority::try_from(priority) {
+        <span class="prelude-val">Ok</span>(v) =&gt; {
+            parsed.urgency = v.urgency;
+            parsed.incremental = v.incremental;
+            <span class="number">0
+        </span>},
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_send_priority_update_for_request(
+    conn: <span class="kw-2">&amp;mut </span>h3::Connection, quic_conn: <span class="kw-2">&amp;mut </span>Connection, stream_id: u64,
+    priority: <span class="kw-2">&amp;</span>Priority,
+) -&gt; c_int {
+    <span class="kw">match </span>conn.send_priority_update_for_request(quic_conn, stream_id, priority) {
+        <span class="prelude-val">Ok</span>(()) =&gt; <span class="number">0</span>,
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_take_last_priority_update(
+    conn: <span class="kw-2">&amp;mut </span>h3::Connection, prioritized_element_id: u64,
+    cb: <span class="kw">extern fn</span>(
+        priority_field_value: <span class="kw-2">*const </span>u8,
+        priority_field_value_len: size_t,
+        argp: <span class="kw-2">*mut </span>c_void,
+    ) -&gt; c_int,
+    argp: <span class="kw-2">*mut </span>c_void,
+) -&gt; c_int {
+    <span class="kw">match </span>conn.take_last_priority_update(prioritized_element_id) {
+        <span class="prelude-val">Ok</span>(priority) =&gt; {
+            <span class="kw">let </span>rc = cb(priority.as_ptr(), priority.len(), argp);
+
+            <span class="kw">if </span>rc != <span class="number">0 </span>{
+                <span class="kw">return </span>rc;
+            }
+
+            <span class="number">0
+        </span>},
+
+        <span class="prelude-val">Err</span>(e) =&gt; e.to_c() <span class="kw">as </span>c_int,
+    }
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_dgram_enabled_by_peer(
+    conn: <span class="kw-2">&amp;</span>h3::Connection, quic_conn: <span class="kw-2">&amp;</span>Connection,
+) -&gt; bool {
+    conn.dgram_enabled_by_peer(quic_conn)
+}
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">pub extern fn </span>quiche_h3_conn_free(conn: <span class="kw-2">*mut </span>h3::Connection) {
+    drop(<span class="kw">unsafe </span>{ Box::from_raw(conn) });
+}
+
+<span class="kw">fn </span>headers_from_ptr&lt;<span class="lifetime">'a</span>&gt;(
+    ptr: <span class="kw-2">*const </span>Header, len: size_t,
+) -&gt; Vec&lt;h3::HeaderRef&lt;<span class="lifetime">'a</span>&gt;&gt; {
+    <span class="kw">let </span>headers = <span class="kw">unsafe </span>{ slice::from_raw_parts(ptr, len) };
+
+    <span class="kw">let </span><span class="kw-2">mut </span>out = Vec::new();
+
+    <span class="kw">for </span>h <span class="kw">in </span>headers {
+        out.push({
+            <span class="kw">let </span>name = <span class="kw">unsafe </span>{ slice::from_raw_parts(h.name, h.name_len) };
+            <span class="kw">let </span>value = <span class="kw">unsafe </span>{ slice::from_raw_parts(h.value, h.value_len) };
+
+            h3::HeaderRef::new(name, value)
+        });
+    }
+
+    out
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/h3/frame.rs.html b/src/quiche/h3/frame.rs.html
new file mode 100644
index 0000000..e06e23d
--- /dev/null
+++ b/src/quiche/h3/frame.rs.html
@@ -0,0 +1,2675 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/h3/frame.rs`."><title>frame.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+<a href="#1217" id="1217">1217</a>
+<a href="#1218" id="1218">1218</a>
+<a href="#1219" id="1219">1219</a>
+<a href="#1220" id="1220">1220</a>
+<a href="#1221" id="1221">1221</a>
+<a href="#1222" id="1222">1222</a>
+<a href="#1223" id="1223">1223</a>
+<a href="#1224" id="1224">1224</a>
+<a href="#1225" id="1225">1225</a>
+<a href="#1226" id="1226">1226</a>
+<a href="#1227" id="1227">1227</a>
+<a href="#1228" id="1228">1228</a>
+<a href="#1229" id="1229">1229</a>
+<a href="#1230" id="1230">1230</a>
+<a href="#1231" id="1231">1231</a>
+<a href="#1232" id="1232">1232</a>
+<a href="#1233" id="1233">1233</a>
+<a href="#1234" id="1234">1234</a>
+<a href="#1235" id="1235">1235</a>
+<a href="#1236" id="1236">1236</a>
+<a href="#1237" id="1237">1237</a>
+<a href="#1238" id="1238">1238</a>
+<a href="#1239" id="1239">1239</a>
+<a href="#1240" id="1240">1240</a>
+<a href="#1241" id="1241">1241</a>
+<a href="#1242" id="1242">1242</a>
+<a href="#1243" id="1243">1243</a>
+<a href="#1244" id="1244">1244</a>
+<a href="#1245" id="1245">1245</a>
+<a href="#1246" id="1246">1246</a>
+<a href="#1247" id="1247">1247</a>
+<a href="#1248" id="1248">1248</a>
+<a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</a>
+<a href="#1259" id="1259">1259</a>
+<a href="#1260" id="1260">1260</a>
+<a href="#1261" id="1261">1261</a>
+<a href="#1262" id="1262">1262</a>
+<a href="#1263" id="1263">1263</a>
+<a href="#1264" id="1264">1264</a>
+<a href="#1265" id="1265">1265</a>
+<a href="#1266" id="1266">1266</a>
+<a href="#1267" id="1267">1267</a>
+<a href="#1268" id="1268">1268</a>
+<a href="#1269" id="1269">1269</a>
+<a href="#1270" id="1270">1270</a>
+<a href="#1271" id="1271">1271</a>
+<a href="#1272" id="1272">1272</a>
+<a href="#1273" id="1273">1273</a>
+<a href="#1274" id="1274">1274</a>
+<a href="#1275" id="1275">1275</a>
+<a href="#1276" id="1276">1276</a>
+<a href="#1277" id="1277">1277</a>
+<a href="#1278" id="1278">1278</a>
+<a href="#1279" id="1279">1279</a>
+<a href="#1280" id="1280">1280</a>
+<a href="#1281" id="1281">1281</a>
+<a href="#1282" id="1282">1282</a>
+<a href="#1283" id="1283">1283</a>
+<a href="#1284" id="1284">1284</a>
+<a href="#1285" id="1285">1285</a>
+<a href="#1286" id="1286">1286</a>
+<a href="#1287" id="1287">1287</a>
+<a href="#1288" id="1288">1288</a>
+<a href="#1289" id="1289">1289</a>
+<a href="#1290" id="1290">1290</a>
+<a href="#1291" id="1291">1291</a>
+<a href="#1292" id="1292">1292</a>
+<a href="#1293" id="1293">1293</a>
+<a href="#1294" id="1294">1294</a>
+<a href="#1295" id="1295">1295</a>
+<a href="#1296" id="1296">1296</a>
+<a href="#1297" id="1297">1297</a>
+<a href="#1298" id="1298">1298</a>
+<a href="#1299" id="1299">1299</a>
+<a href="#1300" id="1300">1300</a>
+<a href="#1301" id="1301">1301</a>
+<a href="#1302" id="1302">1302</a>
+<a href="#1303" id="1303">1303</a>
+<a href="#1304" id="1304">1304</a>
+<a href="#1305" id="1305">1305</a>
+<a href="#1306" id="1306">1306</a>
+<a href="#1307" id="1307">1307</a>
+<a href="#1308" id="1308">1308</a>
+<a href="#1309" id="1309">1309</a>
+<a href="#1310" id="1310">1310</a>
+<a href="#1311" id="1311">1311</a>
+<a href="#1312" id="1312">1312</a>
+<a href="#1313" id="1313">1313</a>
+<a href="#1314" id="1314">1314</a>
+<a href="#1315" id="1315">1315</a>
+<a href="#1316" id="1316">1316</a>
+<a href="#1317" id="1317">1317</a>
+<a href="#1318" id="1318">1318</a>
+<a href="#1319" id="1319">1319</a>
+<a href="#1320" id="1320">1320</a>
+<a href="#1321" id="1321">1321</a>
+<a href="#1322" id="1322">1322</a>
+<a href="#1323" id="1323">1323</a>
+<a href="#1324" id="1324">1324</a>
+<a href="#1325" id="1325">1325</a>
+<a href="#1326" id="1326">1326</a>
+<a href="#1327" id="1327">1327</a>
+<a href="#1328" id="1328">1328</a>
+<a href="#1329" id="1329">1329</a>
+<a href="#1330" id="1330">1330</a>
+<a href="#1331" id="1331">1331</a>
+<a href="#1332" id="1332">1332</a>
+<a href="#1333" id="1333">1333</a>
+<a href="#1334" id="1334">1334</a>
+<a href="#1335" id="1335">1335</a>
+<a href="#1336" id="1336">1336</a>
+<a href="#1337" id="1337">1337</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span><span class="kw">super</span>::Result;
+
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::h3::Http3Frame;
+
+<span class="kw">pub const </span>DATA_FRAME_TYPE_ID: u64 = <span class="number">0x0</span>;
+<span class="kw">pub const </span>HEADERS_FRAME_TYPE_ID: u64 = <span class="number">0x1</span>;
+<span class="kw">pub const </span>CANCEL_PUSH_FRAME_TYPE_ID: u64 = <span class="number">0x3</span>;
+<span class="kw">pub const </span>SETTINGS_FRAME_TYPE_ID: u64 = <span class="number">0x4</span>;
+<span class="kw">pub const </span>PUSH_PROMISE_FRAME_TYPE_ID: u64 = <span class="number">0x5</span>;
+<span class="kw">pub const </span>GOAWAY_FRAME_TYPE_ID: u64 = <span class="number">0x7</span>;
+<span class="kw">pub const </span>MAX_PUSH_FRAME_TYPE_ID: u64 = <span class="number">0xD</span>;
+<span class="kw">pub const </span>PRIORITY_UPDATE_FRAME_REQUEST_TYPE_ID: u64 = <span class="number">0xF0700</span>;
+<span class="kw">pub const </span>PRIORITY_UPDATE_FRAME_PUSH_TYPE_ID: u64 = <span class="number">0xF0701</span>;
+
+<span class="kw">pub const </span>SETTINGS_QPACK_MAX_TABLE_CAPACITY: u64 = <span class="number">0x1</span>;
+<span class="kw">pub const </span>SETTINGS_MAX_FIELD_SECTION_SIZE: u64 = <span class="number">0x6</span>;
+<span class="kw">pub const </span>SETTINGS_QPACK_BLOCKED_STREAMS: u64 = <span class="number">0x7</span>;
+<span class="kw">pub const </span>SETTINGS_ENABLE_CONNECT_PROTOCOL: u64 = <span class="number">0x8</span>;
+<span class="kw">pub const </span>SETTINGS_H3_DATAGRAM_00: u64 = <span class="number">0x276</span>;
+<span class="kw">pub const </span>SETTINGS_H3_DATAGRAM: u64 = <span class="number">0x33</span>;
+
+<span class="comment">// Permit between 16 maximally-encoded and 128 minimally-encoded SETTINGS.
+</span><span class="kw">const </span>MAX_SETTINGS_PAYLOAD_SIZE: usize = <span class="number">256</span>;
+
+<span class="attr">#[derive(Clone, PartialEq, Eq)]
+</span><span class="kw">pub enum </span>Frame {
+    Data {
+        payload: Vec&lt;u8&gt;,
+    },
+
+    Headers {
+        header_block: Vec&lt;u8&gt;,
+    },
+
+    CancelPush {
+        push_id: u64,
+    },
+
+    Settings {
+        max_field_section_size: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+        qpack_max_table_capacity: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+        qpack_blocked_streams: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+        connect_protocol_enabled: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+        h3_datagram: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+        grease: <span class="prelude-ty">Option</span>&lt;(u64, u64)&gt;,
+        additional_settings: <span class="prelude-ty">Option</span>&lt;Vec&lt;(u64, u64)&gt;&gt;,
+        raw: <span class="prelude-ty">Option</span>&lt;Vec&lt;(u64, u64)&gt;&gt;,
+    },
+
+    PushPromise {
+        push_id: u64,
+        header_block: Vec&lt;u8&gt;,
+    },
+
+    GoAway {
+        id: u64,
+    },
+
+    MaxPushId {
+        push_id: u64,
+    },
+
+    PriorityUpdateRequest {
+        prioritized_element_id: u64,
+        priority_field_value: Vec&lt;u8&gt;,
+    },
+
+    PriorityUpdatePush {
+        prioritized_element_id: u64,
+        priority_field_value: Vec&lt;u8&gt;,
+    },
+
+    Unknown {
+        raw_type: u64,
+        payload: Vec&lt;u8&gt;,
+    },
+}
+
+<span class="kw">impl </span>Frame {
+    <span class="kw">pub fn </span>from_bytes(
+        frame_type: u64, payload_length: u64, bytes: <span class="kw-2">&amp;</span>[u8],
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;Frame&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(bytes);
+
+        <span class="comment">// TODO: handling of 0-length frames
+        </span><span class="kw">let </span>frame = <span class="kw">match </span>frame_type {
+            DATA_FRAME_TYPE_ID =&gt; Frame::Data {
+                payload: b.get_bytes(payload_length <span class="kw">as </span>usize)<span class="question-mark">?</span>.to_vec(),
+            },
+
+            HEADERS_FRAME_TYPE_ID =&gt; Frame::Headers {
+                header_block: b.get_bytes(payload_length <span class="kw">as </span>usize)<span class="question-mark">?</span>.to_vec(),
+            },
+
+            CANCEL_PUSH_FRAME_TYPE_ID =&gt; Frame::CancelPush {
+                push_id: b.get_varint()<span class="question-mark">?</span>,
+            },
+
+            SETTINGS_FRAME_TYPE_ID =&gt;
+                parse_settings_frame(<span class="kw-2">&amp;mut </span>b, payload_length <span class="kw">as </span>usize)<span class="question-mark">?</span>,
+
+            PUSH_PROMISE_FRAME_TYPE_ID =&gt;
+                parse_push_promise(payload_length, <span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>,
+
+            GOAWAY_FRAME_TYPE_ID =&gt; Frame::GoAway {
+                id: b.get_varint()<span class="question-mark">?</span>,
+            },
+
+            MAX_PUSH_FRAME_TYPE_ID =&gt; Frame::MaxPushId {
+                push_id: b.get_varint()<span class="question-mark">?</span>,
+            },
+
+            PRIORITY_UPDATE_FRAME_REQUEST_TYPE_ID |
+            PRIORITY_UPDATE_FRAME_PUSH_TYPE_ID =&gt;
+                parse_priority_update(frame_type, payload_length, <span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>,
+
+            <span class="kw">_ </span>=&gt; Frame::Unknown {
+                raw_type: frame_type,
+                payload: b.get_bytes(payload_length <span class="kw">as </span>usize)<span class="question-mark">?</span>.to_vec(),
+            },
+        };
+
+        <span class="prelude-val">Ok</span>(frame)
+    }
+
+    <span class="kw">pub fn </span>to_bytes(<span class="kw-2">&amp;</span><span class="self">self</span>, b: <span class="kw-2">&amp;mut </span>octets::OctetsMut) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="kw">let </span>before = b.cap();
+
+        <span class="kw">match </span><span class="self">self </span>{
+            Frame::Data { payload } =&gt; {
+                b.put_varint(DATA_FRAME_TYPE_ID)<span class="question-mark">?</span>;
+                b.put_varint(payload.len() <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+
+                b.put_bytes(payload.as_ref())<span class="question-mark">?</span>;
+            },
+
+            Frame::Headers { header_block } =&gt; {
+                b.put_varint(HEADERS_FRAME_TYPE_ID)<span class="question-mark">?</span>;
+                b.put_varint(header_block.len() <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+
+                b.put_bytes(header_block.as_ref())<span class="question-mark">?</span>;
+            },
+
+            Frame::CancelPush { push_id } =&gt; {
+                b.put_varint(CANCEL_PUSH_FRAME_TYPE_ID)<span class="question-mark">?</span>;
+                b.put_varint(octets::varint_len(<span class="kw-2">*</span>push_id) <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>push_id)<span class="question-mark">?</span>;
+            },
+
+            Frame::Settings {
+                max_field_section_size,
+                qpack_max_table_capacity,
+                qpack_blocked_streams,
+                connect_protocol_enabled,
+                h3_datagram,
+                grease,
+                additional_settings,
+                ..
+            } =&gt; {
+                <span class="kw">let </span><span class="kw-2">mut </span>len = <span class="number">0</span>;
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(val) = max_field_section_size {
+                    len += octets::varint_len(SETTINGS_MAX_FIELD_SECTION_SIZE);
+                    len += octets::varint_len(<span class="kw-2">*</span>val);
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(val) = qpack_max_table_capacity {
+                    len += octets::varint_len(SETTINGS_QPACK_MAX_TABLE_CAPACITY);
+                    len += octets::varint_len(<span class="kw-2">*</span>val);
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(val) = qpack_blocked_streams {
+                    len += octets::varint_len(SETTINGS_QPACK_BLOCKED_STREAMS);
+                    len += octets::varint_len(<span class="kw-2">*</span>val);
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(val) = connect_protocol_enabled {
+                    len += octets::varint_len(SETTINGS_ENABLE_CONNECT_PROTOCOL);
+                    len += octets::varint_len(<span class="kw-2">*</span>val);
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(val) = h3_datagram {
+                    len += octets::varint_len(SETTINGS_H3_DATAGRAM_00);
+                    len += octets::varint_len(<span class="kw-2">*</span>val);
+                    len += octets::varint_len(SETTINGS_H3_DATAGRAM);
+                    len += octets::varint_len(<span class="kw-2">*</span>val);
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(val) = grease {
+                    len += octets::varint_len(val.<span class="number">0</span>);
+                    len += octets::varint_len(val.<span class="number">1</span>);
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(vals) = additional_settings {
+                    <span class="kw">for </span>val <span class="kw">in </span>vals {
+                        len += octets::varint_len(val.<span class="number">0</span>);
+                        len += octets::varint_len(val.<span class="number">1</span>);
+                    }
+                }
+
+                b.put_varint(SETTINGS_FRAME_TYPE_ID)<span class="question-mark">?</span>;
+                b.put_varint(len <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(val) = max_field_section_size {
+                    b.put_varint(SETTINGS_MAX_FIELD_SECTION_SIZE)<span class="question-mark">?</span>;
+                    b.put_varint(<span class="kw-2">*</span>val)<span class="question-mark">?</span>;
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(val) = qpack_max_table_capacity {
+                    b.put_varint(SETTINGS_QPACK_MAX_TABLE_CAPACITY)<span class="question-mark">?</span>;
+                    b.put_varint(<span class="kw-2">*</span>val)<span class="question-mark">?</span>;
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(val) = qpack_blocked_streams {
+                    b.put_varint(SETTINGS_QPACK_BLOCKED_STREAMS)<span class="question-mark">?</span>;
+                    b.put_varint(<span class="kw-2">*</span>val)<span class="question-mark">?</span>;
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(val) = connect_protocol_enabled {
+                    b.put_varint(SETTINGS_ENABLE_CONNECT_PROTOCOL)<span class="question-mark">?</span>;
+                    b.put_varint(<span class="kw-2">*</span>val)<span class="question-mark">?</span>;
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(val) = h3_datagram {
+                    b.put_varint(SETTINGS_H3_DATAGRAM_00)<span class="question-mark">?</span>;
+                    b.put_varint(<span class="kw-2">*</span>val)<span class="question-mark">?</span>;
+                    b.put_varint(SETTINGS_H3_DATAGRAM)<span class="question-mark">?</span>;
+                    b.put_varint(<span class="kw-2">*</span>val)<span class="question-mark">?</span>;
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(val) = grease {
+                    b.put_varint(val.<span class="number">0</span>)<span class="question-mark">?</span>;
+                    b.put_varint(val.<span class="number">1</span>)<span class="question-mark">?</span>;
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(vals) = additional_settings {
+                    <span class="kw">for </span>val <span class="kw">in </span>vals {
+                        b.put_varint(val.<span class="number">0</span>)<span class="question-mark">?</span>;
+                        b.put_varint(val.<span class="number">1</span>)<span class="question-mark">?</span>;
+                    }
+                }
+            },
+
+            Frame::PushPromise {
+                push_id,
+                header_block,
+            } =&gt; {
+                <span class="kw">let </span>len = octets::varint_len(<span class="kw-2">*</span>push_id) + header_block.len();
+                b.put_varint(PUSH_PROMISE_FRAME_TYPE_ID)<span class="question-mark">?</span>;
+                b.put_varint(len <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>push_id)<span class="question-mark">?</span>;
+                b.put_bytes(header_block.as_ref())<span class="question-mark">?</span>;
+            },
+
+            Frame::GoAway { id } =&gt; {
+                b.put_varint(GOAWAY_FRAME_TYPE_ID)<span class="question-mark">?</span>;
+                b.put_varint(octets::varint_len(<span class="kw-2">*</span>id) <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>id)<span class="question-mark">?</span>;
+            },
+
+            Frame::MaxPushId { push_id } =&gt; {
+                b.put_varint(MAX_PUSH_FRAME_TYPE_ID)<span class="question-mark">?</span>;
+                b.put_varint(octets::varint_len(<span class="kw-2">*</span>push_id) <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>push_id)<span class="question-mark">?</span>;
+            },
+
+            Frame::PriorityUpdateRequest {
+                prioritized_element_id,
+                priority_field_value,
+            } =&gt; {
+                <span class="kw">let </span>len = octets::varint_len(<span class="kw-2">*</span>prioritized_element_id) +
+                    priority_field_value.len();
+
+                b.put_varint(PRIORITY_UPDATE_FRAME_REQUEST_TYPE_ID)<span class="question-mark">?</span>;
+                b.put_varint(len <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>prioritized_element_id)<span class="question-mark">?</span>;
+                b.put_bytes(priority_field_value)<span class="question-mark">?</span>;
+            },
+
+            Frame::PriorityUpdatePush {
+                prioritized_element_id,
+                priority_field_value,
+            } =&gt; {
+                <span class="kw">let </span>len = octets::varint_len(<span class="kw-2">*</span>prioritized_element_id) +
+                    priority_field_value.len();
+
+                b.put_varint(PRIORITY_UPDATE_FRAME_PUSH_TYPE_ID)<span class="question-mark">?</span>;
+                b.put_varint(len <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+
+                b.put_varint(<span class="kw-2">*</span>prioritized_element_id)<span class="question-mark">?</span>;
+                b.put_bytes(priority_field_value)<span class="question-mark">?</span>;
+            },
+
+            Frame::Unknown { raw_type, payload } =&gt; {
+                b.put_varint(<span class="kw-2">*</span>raw_type)<span class="question-mark">?</span>;
+                b.put_varint(payload.len() <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+
+                b.put_bytes(payload.as_ref())<span class="question-mark">?</span>;
+            },
+        }
+
+        <span class="prelude-val">Ok</span>(before - b.cap())
+    }
+
+    <span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+    </span><span class="kw">pub fn </span>to_qlog(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; Http3Frame {
+        <span class="kw">use </span>qlog::events::RawInfo;
+
+        <span class="kw">match </span><span class="self">self </span>{
+            Frame::Data { .. } =&gt; Http3Frame::Data { raw: <span class="prelude-val">None </span>},
+
+            <span class="comment">// Qlog expects the `headers` to be represented as an array of
+            // name:value pairs. At this stage, we only have the qpack block, so
+            // populate the field with an empty vec.
+            </span>Frame::Headers { .. } =&gt; Http3Frame::Headers { headers: <span class="macro">vec!</span>[] },
+
+            Frame::CancelPush { push_id } =&gt;
+                Http3Frame::CancelPush { push_id: <span class="kw-2">*</span>push_id },
+
+            Frame::Settings {
+                max_field_section_size,
+                qpack_max_table_capacity,
+                qpack_blocked_streams,
+                connect_protocol_enabled,
+                h3_datagram,
+                grease,
+                additional_settings,
+                ..
+            } =&gt; {
+                <span class="kw">let </span><span class="kw-2">mut </span>settings = <span class="macro">vec!</span>[];
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(v) = max_field_section_size {
+                    settings.push(qlog::events::h3::Setting {
+                        name: <span class="string">"MAX_FIELD_SECTION_SIZE"</span>.to_string(),
+                        value: <span class="kw-2">*</span>v,
+                    });
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(v) = qpack_max_table_capacity {
+                    settings.push(qlog::events::h3::Setting {
+                        name: <span class="string">"QPACK_MAX_TABLE_CAPACITY"</span>.to_string(),
+                        value: <span class="kw-2">*</span>v,
+                    });
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(v) = qpack_blocked_streams {
+                    settings.push(qlog::events::h3::Setting {
+                        name: <span class="string">"QPACK_BLOCKED_STREAMS"</span>.to_string(),
+                        value: <span class="kw-2">*</span>v,
+                    });
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(v) = connect_protocol_enabled {
+                    settings.push(qlog::events::h3::Setting {
+                        name: <span class="string">"SETTINGS_ENABLE_CONNECT_PROTOCOL"</span>.to_string(),
+                        value: <span class="kw-2">*</span>v,
+                    });
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(v) = h3_datagram {
+                    settings.push(qlog::events::h3::Setting {
+                        name: <span class="string">"H3_DATAGRAM"</span>.to_string(),
+                        value: <span class="kw-2">*</span>v,
+                    });
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>((k, v)) = grease {
+                    settings.push(qlog::events::h3::Setting {
+                        name: k.to_string(),
+                        value: <span class="kw-2">*</span>v,
+                    });
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(additional_settings) = additional_settings {
+                    <span class="kw">for </span>(k, v) <span class="kw">in </span>additional_settings {
+                        settings.push(qlog::events::h3::Setting {
+                            name: k.to_string(),
+                            value: <span class="kw-2">*</span>v,
+                        });
+                    }
+                }
+
+                qlog::events::h3::Http3Frame::Settings { settings }
+            },
+
+            <span class="comment">// Qlog expects the `headers` to be represented as an array of
+            // name:value pairs. At this stage, we only have the qpack block, so
+            // populate the field with an empty vec.
+            </span>Frame::PushPromise { push_id, .. } =&gt; Http3Frame::PushPromise {
+                push_id: <span class="kw-2">*</span>push_id,
+                headers: <span class="macro">vec!</span>[],
+            },
+
+            Frame::GoAway { id } =&gt; Http3Frame::Goaway { id: <span class="kw-2">*</span>id },
+
+            Frame::MaxPushId { push_id } =&gt;
+                Http3Frame::MaxPushId { push_id: <span class="kw-2">*</span>push_id },
+
+            Frame::PriorityUpdateRequest {
+                prioritized_element_id,
+                priority_field_value,
+            } =&gt; Http3Frame::PriorityUpdate {
+                target_stream_type:
+                    qlog::events::h3::H3PriorityTargetStreamType::Request,
+                prioritized_element_id: <span class="kw-2">*</span>prioritized_element_id,
+                priority_field_value: String::from_utf8_lossy(
+                    priority_field_value,
+                )
+                .into_owned(),
+            },
+
+            Frame::PriorityUpdatePush {
+                prioritized_element_id,
+                priority_field_value,
+            } =&gt; Http3Frame::PriorityUpdate {
+                target_stream_type:
+                    qlog::events::h3::H3PriorityTargetStreamType::Request,
+                prioritized_element_id: <span class="kw-2">*</span>prioritized_element_id,
+                priority_field_value: String::from_utf8_lossy(
+                    priority_field_value,
+                )
+                .into_owned(),
+            },
+
+            Frame::Unknown { raw_type, payload } =&gt; Http3Frame::Unknown {
+                frame_type_value: <span class="kw-2">*</span>raw_type,
+                raw: <span class="prelude-val">Some</span>(RawInfo {
+                    data: <span class="prelude-val">None</span>,
+                    payload_length: <span class="prelude-val">Some</span>(payload.len() <span class="kw">as </span>u64),
+                    length: <span class="prelude-val">None</span>,
+                }),
+            },
+        }
+    }
+}
+
+<span class="kw">impl </span>std::fmt::Debug <span class="kw">for </span>Frame {
+    <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+        <span class="kw">match </span><span class="self">self </span>{
+            Frame::Data { .. } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"DATA"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::Headers { .. } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"HEADERS"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::CancelPush { push_id } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"CANCEL_PUSH push_id={push_id}"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::Settings {
+                max_field_section_size,
+                qpack_max_table_capacity,
+                qpack_blocked_streams,
+                additional_settings,
+                raw,
+                ..
+            } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"SETTINGS max_field_section={max_field_section_size:?}, qpack_max_table={qpack_max_table_capacity:?}, qpack_blocked={qpack_blocked_streams:?} raw={raw:?}, additional_settings={additional_settings:?}"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::PushPromise {
+                push_id,
+                header_block,
+            } =&gt; {
+                <span class="macro">write!</span>(
+                    f,
+                    <span class="string">"PUSH_PROMISE push_id={} len={}"</span>,
+                    push_id,
+                    header_block.len()
+                )<span class="question-mark">?</span>;
+            },
+
+            Frame::GoAway { id } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"GOAWAY id={id}"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::MaxPushId { push_id } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"MAX_PUSH_ID push_id={push_id}"</span>)<span class="question-mark">?</span>;
+            },
+
+            Frame::PriorityUpdateRequest {
+                prioritized_element_id,
+                priority_field_value,
+            } =&gt; {
+                <span class="macro">write!</span>(
+                    f,
+                    <span class="string">"PRIORITY_UPDATE request_stream_id={}, priority_field_len={}"</span>,
+                    prioritized_element_id,
+                    priority_field_value.len()
+                )<span class="question-mark">?</span>;
+            },
+
+            Frame::PriorityUpdatePush {
+                prioritized_element_id,
+                priority_field_value,
+            } =&gt; {
+                <span class="macro">write!</span>(
+                    f,
+                    <span class="string">"PRIORITY_UPDATE push_id={}, priority_field_len={}"</span>,
+                    prioritized_element_id,
+                    priority_field_value.len()
+                )<span class="question-mark">?</span>;
+            },
+
+            Frame::Unknown { raw_type, .. } =&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"UNKNOWN raw_type={raw_type}"</span>,)<span class="question-mark">?</span>;
+            },
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+}
+
+<span class="kw">fn </span>parse_settings_frame(
+    b: <span class="kw-2">&amp;mut </span>octets::Octets, settings_length: usize,
+) -&gt; <span class="prelude-ty">Result</span>&lt;Frame&gt; {
+    <span class="kw">let </span><span class="kw-2">mut </span>max_field_section_size = <span class="prelude-val">None</span>;
+    <span class="kw">let </span><span class="kw-2">mut </span>qpack_max_table_capacity = <span class="prelude-val">None</span>;
+    <span class="kw">let </span><span class="kw-2">mut </span>qpack_blocked_streams = <span class="prelude-val">None</span>;
+    <span class="kw">let </span><span class="kw-2">mut </span>connect_protocol_enabled = <span class="prelude-val">None</span>;
+    <span class="kw">let </span><span class="kw-2">mut </span>h3_datagram = <span class="prelude-val">None</span>;
+    <span class="kw">let </span><span class="kw-2">mut </span>raw = Vec::new();
+    <span class="kw">let </span><span class="kw-2">mut </span>additional_settings: <span class="prelude-ty">Option</span>&lt;Vec&lt;(u64, u64)&gt;&gt; = <span class="prelude-val">None</span>;
+
+    <span class="comment">// Reject SETTINGS frames that are too long.
+    </span><span class="kw">if </span>settings_length &gt; MAX_SETTINGS_PAYLOAD_SIZE {
+        <span class="kw">return </span><span class="prelude-val">Err</span>(<span class="kw">super</span>::Error::ExcessiveLoad);
+    }
+
+    <span class="kw">while </span>b.off() &lt; settings_length {
+        <span class="kw">let </span>identifier = b.get_varint()<span class="question-mark">?</span>;
+        <span class="kw">let </span>value = b.get_varint()<span class="question-mark">?</span>;
+
+        <span class="comment">// MAX_SETTINGS_PAYLOAD_SIZE protects us from storing too many raw
+        // settings.
+        </span>raw.push((identifier, value));
+
+        <span class="kw">match </span>identifier {
+            SETTINGS_QPACK_MAX_TABLE_CAPACITY =&gt; {
+                qpack_max_table_capacity = <span class="prelude-val">Some</span>(value);
+            },
+
+            SETTINGS_MAX_FIELD_SECTION_SIZE =&gt; {
+                max_field_section_size = <span class="prelude-val">Some</span>(value);
+            },
+
+            SETTINGS_QPACK_BLOCKED_STREAMS =&gt; {
+                qpack_blocked_streams = <span class="prelude-val">Some</span>(value);
+            },
+
+            SETTINGS_ENABLE_CONNECT_PROTOCOL =&gt; {
+                <span class="kw">if </span>value &gt; <span class="number">1 </span>{
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(<span class="kw">super</span>::Error::SettingsError);
+                }
+
+                connect_protocol_enabled = <span class="prelude-val">Some</span>(value);
+            },
+
+            SETTINGS_H3_DATAGRAM_00 | SETTINGS_H3_DATAGRAM =&gt; {
+                <span class="kw">if </span>value &gt; <span class="number">1 </span>{
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(<span class="kw">super</span>::Error::SettingsError);
+                }
+
+                h3_datagram = <span class="prelude-val">Some</span>(value);
+            },
+
+            <span class="comment">// Reserved values overlap with HTTP/2 and MUST be rejected
+            </span><span class="number">0x0 </span>| <span class="number">0x2 </span>| <span class="number">0x3 </span>| <span class="number">0x4 </span>| <span class="number">0x5 </span>=&gt;
+                <span class="kw">return </span><span class="prelude-val">Err</span>(<span class="kw">super</span>::Error::SettingsError),
+
+            <span class="comment">// Unknown Settings parameters go into additional_settings.
+            </span><span class="kw">_ </span>=&gt; {
+                <span class="kw">let </span>s: <span class="kw-2">&amp;mut </span>Vec&lt;(u64, u64)&gt; =
+                    additional_settings.get_or_insert(<span class="macro">vec!</span>[]);
+                s.push((identifier, value));
+            },
+        }
+    }
+
+    <span class="prelude-val">Ok</span>(Frame::Settings {
+        max_field_section_size,
+        qpack_max_table_capacity,
+        qpack_blocked_streams,
+        connect_protocol_enabled,
+        h3_datagram,
+        grease: <span class="prelude-val">None</span>,
+        raw: <span class="prelude-val">Some</span>(raw),
+        additional_settings,
+    })
+}
+
+<span class="kw">fn </span>parse_push_promise(
+    payload_length: u64, b: <span class="kw-2">&amp;mut </span>octets::Octets,
+) -&gt; <span class="prelude-ty">Result</span>&lt;Frame&gt; {
+    <span class="kw">let </span>push_id = b.get_varint()<span class="question-mark">?</span>;
+    <span class="kw">let </span>header_block_length = payload_length - octets::varint_len(push_id) <span class="kw">as </span>u64;
+    <span class="kw">let </span>header_block = b.get_bytes(header_block_length <span class="kw">as </span>usize)<span class="question-mark">?</span>.to_vec();
+
+    <span class="prelude-val">Ok</span>(Frame::PushPromise {
+        push_id,
+        header_block,
+    })
+}
+
+<span class="kw">fn </span>parse_priority_update(
+    frame_type: u64, payload_length: u64, b: <span class="kw-2">&amp;mut </span>octets::Octets,
+) -&gt; <span class="prelude-ty">Result</span>&lt;Frame&gt; {
+    <span class="kw">let </span>prioritized_element_id = b.get_varint()<span class="question-mark">?</span>;
+    <span class="kw">let </span>priority_field_value_length =
+        payload_length - octets::varint_len(prioritized_element_id) <span class="kw">as </span>u64;
+    <span class="kw">let </span>priority_field_value =
+        b.get_bytes(priority_field_value_length <span class="kw">as </span>usize)<span class="question-mark">?</span>.to_vec();
+
+    <span class="kw">match </span>frame_type {
+        PRIORITY_UPDATE_FRAME_REQUEST_TYPE_ID =&gt;
+            <span class="prelude-val">Ok</span>(Frame::PriorityUpdateRequest {
+                prioritized_element_id,
+                priority_field_value,
+            }),
+
+        PRIORITY_UPDATE_FRAME_PUSH_TYPE_ID =&gt; <span class="prelude-val">Ok</span>(Frame::PriorityUpdatePush {
+            prioritized_element_id,
+            priority_field_value,
+        }),
+
+        <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>data() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>payload = <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>];
+        <span class="kw">let </span>frame_payload_len = payload.len();
+        <span class="kw">let </span>frame_header_len = <span class="number">2</span>;
+
+        <span class="kw">let </span>frame = Frame::Data { payload };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, frame_header_len + frame_payload_len);
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                DATA_FRAME_TYPE_ID,
+                frame_payload_len <span class="kw">as </span>u64,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            )
+            .unwrap(),
+            frame
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>headers() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>header_block = <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>];
+        <span class="kw">let </span>frame_payload_len = header_block.len();
+        <span class="kw">let </span>frame_header_len = <span class="number">2</span>;
+
+        <span class="kw">let </span>frame = Frame::Headers { header_block };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, frame_header_len + frame_payload_len);
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                HEADERS_FRAME_TYPE_ID,
+                frame_payload_len <span class="kw">as </span>u64,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            )
+            .unwrap(),
+            frame
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>cancel_push() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::CancelPush { push_id: <span class="number">0 </span>};
+
+        <span class="kw">let </span>frame_payload_len = <span class="number">1</span>;
+        <span class="kw">let </span>frame_header_len = <span class="number">2</span>;
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, frame_header_len + frame_payload_len);
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                CANCEL_PUSH_FRAME_TYPE_ID,
+                frame_payload_len <span class="kw">as </span>u64,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            )
+            .unwrap(),
+            frame
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>settings_all_no_grease() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>raw_settings = <span class="macro">vec!</span>[
+            (SETTINGS_MAX_FIELD_SECTION_SIZE, <span class="number">0</span>),
+            (SETTINGS_QPACK_MAX_TABLE_CAPACITY, <span class="number">0</span>),
+            (SETTINGS_QPACK_BLOCKED_STREAMS, <span class="number">0</span>),
+            (SETTINGS_ENABLE_CONNECT_PROTOCOL, <span class="number">0</span>),
+            (SETTINGS_H3_DATAGRAM_00, <span class="number">0</span>),
+            (SETTINGS_H3_DATAGRAM, <span class="number">0</span>),
+        ];
+
+        <span class="kw">let </span>frame = Frame::Settings {
+            max_field_section_size: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            qpack_max_table_capacity: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            qpack_blocked_streams: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            connect_protocol_enabled: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            h3_datagram: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            grease: <span class="prelude-val">None</span>,
+            raw: <span class="prelude-val">Some</span>(raw_settings),
+            additional_settings: <span class="prelude-val">None</span>,
+        };
+
+        <span class="kw">let </span>frame_payload_len = <span class="number">13</span>;
+        <span class="kw">let </span>frame_header_len = <span class="number">2</span>;
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, frame_header_len + frame_payload_len);
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                SETTINGS_FRAME_TYPE_ID,
+                frame_payload_len <span class="kw">as </span>u64,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            )
+            .unwrap(),
+            frame
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>settings_all_grease() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::Settings {
+            max_field_section_size: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            qpack_max_table_capacity: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            qpack_blocked_streams: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            connect_protocol_enabled: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            h3_datagram: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            grease: <span class="prelude-val">Some</span>((<span class="number">33</span>, <span class="number">33</span>)),
+            raw: Default::default(),
+            additional_settings: <span class="prelude-val">None</span>,
+        };
+
+        <span class="kw">let </span>raw_settings = <span class="macro">vec!</span>[
+            (SETTINGS_MAX_FIELD_SECTION_SIZE, <span class="number">0</span>),
+            (SETTINGS_QPACK_MAX_TABLE_CAPACITY, <span class="number">0</span>),
+            (SETTINGS_QPACK_BLOCKED_STREAMS, <span class="number">0</span>),
+            (SETTINGS_ENABLE_CONNECT_PROTOCOL, <span class="number">0</span>),
+            (SETTINGS_H3_DATAGRAM_00, <span class="number">0</span>),
+            (SETTINGS_H3_DATAGRAM, <span class="number">0</span>),
+            (<span class="number">33</span>, <span class="number">33</span>),
+        ];
+
+        <span class="comment">// Frame parsing will not populate GREASE property but will be in the
+        // raw info.
+        </span><span class="kw">let </span>frame_parsed = Frame::Settings {
+            max_field_section_size: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            qpack_max_table_capacity: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            qpack_blocked_streams: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            connect_protocol_enabled: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            h3_datagram: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            grease: <span class="prelude-val">None</span>,
+            raw: <span class="prelude-val">Some</span>(raw_settings),
+            additional_settings: <span class="prelude-val">Some</span>(<span class="macro">vec!</span>[(<span class="number">33</span>, <span class="number">33</span>)]),
+        };
+
+        <span class="kw">let </span>frame_payload_len = <span class="number">15</span>;
+        <span class="kw">let </span>frame_header_len = <span class="number">2</span>;
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, frame_header_len + frame_payload_len);
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                SETTINGS_FRAME_TYPE_ID,
+                frame_payload_len <span class="kw">as </span>u64,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            )
+            .unwrap(),
+            frame_parsed
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>settings_h3_only() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>raw_settings = <span class="macro">vec!</span>[(SETTINGS_MAX_FIELD_SECTION_SIZE, <span class="number">1024</span>)];
+
+        <span class="kw">let </span>frame = Frame::Settings {
+            max_field_section_size: <span class="prelude-val">Some</span>(<span class="number">1024</span>),
+            qpack_max_table_capacity: <span class="prelude-val">None</span>,
+            qpack_blocked_streams: <span class="prelude-val">None</span>,
+            connect_protocol_enabled: <span class="prelude-val">None</span>,
+            h3_datagram: <span class="prelude-val">None</span>,
+            grease: <span class="prelude-val">None</span>,
+            raw: <span class="prelude-val">Some</span>(raw_settings),
+            additional_settings: <span class="prelude-val">None</span>,
+        };
+
+        <span class="kw">let </span>frame_payload_len = <span class="number">3</span>;
+        <span class="kw">let </span>frame_header_len = <span class="number">2</span>;
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, frame_header_len + frame_payload_len);
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                SETTINGS_FRAME_TYPE_ID,
+                frame_payload_len <span class="kw">as </span>u64,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            )
+            .unwrap(),
+            frame
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>settings_h3_connect_protocol_enabled() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>raw_settings = <span class="macro">vec!</span>[(SETTINGS_ENABLE_CONNECT_PROTOCOL, <span class="number">1</span>)];
+
+        <span class="kw">let </span>frame = Frame::Settings {
+            max_field_section_size: <span class="prelude-val">None</span>,
+            qpack_max_table_capacity: <span class="prelude-val">None</span>,
+            qpack_blocked_streams: <span class="prelude-val">None</span>,
+            connect_protocol_enabled: <span class="prelude-val">Some</span>(<span class="number">1</span>),
+            h3_datagram: <span class="prelude-val">None</span>,
+            grease: <span class="prelude-val">None</span>,
+            raw: <span class="prelude-val">Some</span>(raw_settings),
+            additional_settings: <span class="prelude-val">None</span>,
+        };
+
+        <span class="kw">let </span>frame_payload_len = <span class="number">2</span>;
+        <span class="kw">let </span>frame_header_len = <span class="number">2</span>;
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, frame_header_len + frame_payload_len);
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                SETTINGS_FRAME_TYPE_ID,
+                frame_payload_len <span class="kw">as </span>u64,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            )
+            .unwrap(),
+            frame
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>settings_h3_connect_protocol_enabled_bad() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>raw_settings = <span class="macro">vec!</span>[(SETTINGS_ENABLE_CONNECT_PROTOCOL, <span class="number">9</span>)];
+
+        <span class="kw">let </span>frame = Frame::Settings {
+            max_field_section_size: <span class="prelude-val">None</span>,
+            qpack_max_table_capacity: <span class="prelude-val">None</span>,
+            qpack_blocked_streams: <span class="prelude-val">None</span>,
+            connect_protocol_enabled: <span class="prelude-val">Some</span>(<span class="number">9</span>),
+            h3_datagram: <span class="prelude-val">None</span>,
+            grease: <span class="prelude-val">None</span>,
+            raw: <span class="prelude-val">Some</span>(raw_settings),
+            additional_settings: <span class="prelude-val">None</span>,
+        };
+
+        <span class="kw">let </span>frame_payload_len = <span class="number">2</span>;
+        <span class="kw">let </span>frame_header_len = <span class="number">2</span>;
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, frame_header_len + frame_payload_len);
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                SETTINGS_FRAME_TYPE_ID,
+                frame_payload_len <span class="kw">as </span>u64,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            ),
+            <span class="prelude-val">Err</span>(<span class="kw">crate</span>::h3::Error::SettingsError)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>settings_h3_dgram_only() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>raw_settings =
+            <span class="macro">vec!</span>[(SETTINGS_H3_DATAGRAM_00, <span class="number">1</span>), (SETTINGS_H3_DATAGRAM, <span class="number">1</span>)];
+
+        <span class="kw">let </span>frame = Frame::Settings {
+            max_field_section_size: <span class="prelude-val">None</span>,
+            qpack_max_table_capacity: <span class="prelude-val">None</span>,
+            qpack_blocked_streams: <span class="prelude-val">None</span>,
+            connect_protocol_enabled: <span class="prelude-val">None</span>,
+            h3_datagram: <span class="prelude-val">Some</span>(<span class="number">1</span>),
+            grease: <span class="prelude-val">None</span>,
+            raw: <span class="prelude-val">Some</span>(raw_settings),
+            additional_settings: <span class="prelude-val">None</span>,
+        };
+
+        <span class="kw">let </span>frame_payload_len = <span class="number">5</span>;
+        <span class="kw">let </span>frame_header_len = <span class="number">2</span>;
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, frame_header_len + frame_payload_len);
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                SETTINGS_FRAME_TYPE_ID,
+                frame_payload_len <span class="kw">as </span>u64,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            )
+            .unwrap(),
+            frame
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>settings_h3_dgram_bad() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::Settings {
+            max_field_section_size: <span class="prelude-val">None</span>,
+            qpack_max_table_capacity: <span class="prelude-val">None</span>,
+            qpack_blocked_streams: <span class="prelude-val">None</span>,
+            connect_protocol_enabled: <span class="prelude-val">None</span>,
+            h3_datagram: <span class="prelude-val">Some</span>(<span class="number">5</span>),
+            grease: <span class="prelude-val">None</span>,
+            raw: Default::default(),
+            additional_settings: <span class="prelude-val">None</span>,
+        };
+
+        <span class="kw">let </span>frame_payload_len = <span class="number">5</span>;
+        <span class="kw">let </span>frame_header_len = <span class="number">2</span>;
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, frame_header_len + frame_payload_len);
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                SETTINGS_FRAME_TYPE_ID,
+                frame_payload_len <span class="kw">as </span>u64,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            ),
+            <span class="prelude-val">Err</span>(<span class="kw">crate</span>::h3::Error::SettingsError)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>settings_qpack_only() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>raw_settings = <span class="macro">vec!</span>[
+            (SETTINGS_QPACK_MAX_TABLE_CAPACITY, <span class="number">0</span>),
+            (SETTINGS_QPACK_BLOCKED_STREAMS, <span class="number">0</span>),
+        ];
+
+        <span class="kw">let </span>frame = Frame::Settings {
+            max_field_section_size: <span class="prelude-val">None</span>,
+            qpack_max_table_capacity: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            qpack_blocked_streams: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            connect_protocol_enabled: <span class="prelude-val">None</span>,
+            h3_datagram: <span class="prelude-val">None</span>,
+            grease: <span class="prelude-val">None</span>,
+            raw: <span class="prelude-val">Some</span>(raw_settings),
+            additional_settings: <span class="prelude-val">None</span>,
+        };
+
+        <span class="kw">let </span>frame_payload_len = <span class="number">4</span>;
+        <span class="kw">let </span>frame_header_len = <span class="number">2</span>;
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, frame_header_len + frame_payload_len);
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                SETTINGS_FRAME_TYPE_ID,
+                frame_payload_len <span class="kw">as </span>u64,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            )
+            .unwrap(),
+            frame
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>settings_h2_prohibited() {
+        <span class="comment">// We need to test the prohibited values (0x0 | 0x2 | 0x3 | 0x4 | 0x5)
+        // but the quiche API doesn't support that, so use a manually created
+        // frame data buffer where d[frame_header_len] is the SETTING type field.
+        </span><span class="kw">let </span>frame_payload_len = <span class="number">2u64</span>;
+        <span class="kw">let </span>frame_header_len = <span class="number">2</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [
+            SETTINGS_FRAME_TYPE_ID <span class="kw">as </span>u8,
+            frame_payload_len <span class="kw">as </span>u8,
+            <span class="number">0x0</span>,
+            <span class="number">1</span>,
+        ];
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                SETTINGS_FRAME_TYPE_ID,
+                frame_payload_len,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            ),
+            <span class="prelude-val">Err</span>(<span class="kw">crate</span>::h3::Error::SettingsError)
+        );
+
+        d[frame_header_len] = <span class="number">0x2</span>;
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                SETTINGS_FRAME_TYPE_ID,
+                frame_payload_len,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            ),
+            <span class="prelude-val">Err</span>(<span class="kw">crate</span>::h3::Error::SettingsError)
+        );
+
+        d[frame_header_len] = <span class="number">0x3</span>;
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                SETTINGS_FRAME_TYPE_ID,
+                frame_payload_len,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            ),
+            <span class="prelude-val">Err</span>(<span class="kw">crate</span>::h3::Error::SettingsError)
+        );
+
+        d[frame_header_len] = <span class="number">0x4</span>;
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                SETTINGS_FRAME_TYPE_ID,
+                frame_payload_len,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            ),
+            <span class="prelude-val">Err</span>(<span class="kw">crate</span>::h3::Error::SettingsError)
+        );
+
+        d[frame_header_len] = <span class="number">0x5</span>;
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                SETTINGS_FRAME_TYPE_ID,
+                frame_payload_len,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            ),
+            <span class="prelude-val">Err</span>(<span class="kw">crate</span>::h3::Error::SettingsError)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>settings_too_big() {
+        <span class="comment">// We need to test a SETTINGS frame that exceeds
+        // MAX_SETTINGS_PAYLOAD_SIZE, so just craft a special buffer that look
+        // likes the frame. The payload content doesn't matter since quiche
+        // should abort before then.
+        </span><span class="kw">let </span>frame_payload_len = MAX_SETTINGS_PAYLOAD_SIZE + <span class="number">1</span>;
+        <span class="kw">let </span>frame_header_len = <span class="number">2</span>;
+        <span class="kw">let </span>d = [
+            SETTINGS_FRAME_TYPE_ID <span class="kw">as </span>u8,
+            frame_payload_len <span class="kw">as </span>u8,
+            <span class="number">0x1</span>,
+            <span class="number">1</span>,
+        ];
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                SETTINGS_FRAME_TYPE_ID,
+                frame_payload_len <span class="kw">as </span>u64,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            ),
+            <span class="prelude-val">Err</span>(<span class="kw">crate</span>::h3::Error::ExcessiveLoad)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>push_promise() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>header_block = <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>];
+        <span class="kw">let </span>frame_payload_len = <span class="number">1 </span>+ header_block.len();
+        <span class="kw">let </span>frame_header_len = <span class="number">2</span>;
+
+        <span class="kw">let </span>frame = Frame::PushPromise {
+            push_id: <span class="number">0</span>,
+            header_block,
+        };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, frame_header_len + frame_payload_len);
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                PUSH_PROMISE_FRAME_TYPE_ID,
+                frame_payload_len <span class="kw">as </span>u64,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            )
+            .unwrap(),
+            frame
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>goaway() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::GoAway { id: <span class="number">32 </span>};
+
+        <span class="kw">let </span>frame_payload_len = <span class="number">1</span>;
+        <span class="kw">let </span>frame_header_len = <span class="number">2</span>;
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, frame_header_len + frame_payload_len);
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                GOAWAY_FRAME_TYPE_ID,
+                frame_payload_len <span class="kw">as </span>u64,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            )
+            .unwrap(),
+            frame
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>max_push_id() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>frame = Frame::MaxPushId { push_id: <span class="number">128 </span>};
+
+        <span class="kw">let </span>frame_payload_len = <span class="number">2</span>;
+        <span class="kw">let </span>frame_header_len = <span class="number">2</span>;
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, frame_header_len + frame_payload_len);
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                MAX_PUSH_FRAME_TYPE_ID,
+                frame_payload_len <span class="kw">as </span>u64,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            )
+            .unwrap(),
+            frame
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>priority_update_request() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>prioritized_element_id = <span class="number">4</span>;
+        <span class="kw">let </span>priority_field_value = <span class="string">b"abcdefghijklm"</span>.to_vec();
+        <span class="kw">let </span>frame_payload_len = <span class="number">1 </span>+ priority_field_value.len();
+        <span class="kw">let </span>frame_header_len = <span class="number">5</span>;
+
+        <span class="kw">let </span>frame = Frame::PriorityUpdateRequest {
+            prioritized_element_id,
+            priority_field_value,
+        };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, frame_header_len + frame_payload_len);
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                PRIORITY_UPDATE_FRAME_REQUEST_TYPE_ID,
+                frame_payload_len <span class="kw">as </span>u64,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            )
+            .unwrap(),
+            frame
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>priority_update_push() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>prioritized_element_id = <span class="number">6</span>;
+        <span class="kw">let </span>priority_field_value = <span class="string">b"abcdefghijklm"</span>.to_vec();
+        <span class="kw">let </span>frame_payload_len = <span class="number">1 </span>+ priority_field_value.len();
+        <span class="kw">let </span>frame_header_len = <span class="number">5</span>;
+
+        <span class="kw">let </span>frame = Frame::PriorityUpdatePush {
+            prioritized_element_id,
+            priority_field_value,
+        };
+
+        <span class="kw">let </span>wire_len = {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap()
+        };
+
+        <span class="macro">assert_eq!</span>(wire_len, frame_header_len + frame_payload_len);
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(
+                PRIORITY_UPDATE_FRAME_PUSH_TYPE_ID,
+                frame_payload_len <span class="kw">as </span>u64,
+                <span class="kw-2">&amp;</span>d[frame_header_len..]
+            )
+            .unwrap(),
+            frame
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>unknown_type() {
+        <span class="kw">let </span>d = [<span class="number">42</span>; <span class="number">12</span>];
+
+        <span class="macro">assert_eq!</span>(
+            Frame::from_bytes(<span class="number">255</span>, <span class="number">12</span>, <span class="kw-2">&amp;</span>d[..]),
+            <span class="prelude-val">Ok</span>(Frame::Unknown {
+                raw_type: <span class="number">255</span>,
+                payload: <span class="macro">vec!</span>[<span class="number">42</span>; <span class="number">12</span>]
+            })
+        );
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/h3/mod.rs.html b/src/quiche/h3/mod.rs.html
new file mode 100644
index 0000000..857c310
--- /dev/null
+++ b/src/quiche/h3/mod.rs.html
@@ -0,0 +1,12991 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/h3/mod.rs`."><title>mod.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+<a href="#1217" id="1217">1217</a>
+<a href="#1218" id="1218">1218</a>
+<a href="#1219" id="1219">1219</a>
+<a href="#1220" id="1220">1220</a>
+<a href="#1221" id="1221">1221</a>
+<a href="#1222" id="1222">1222</a>
+<a href="#1223" id="1223">1223</a>
+<a href="#1224" id="1224">1224</a>
+<a href="#1225" id="1225">1225</a>
+<a href="#1226" id="1226">1226</a>
+<a href="#1227" id="1227">1227</a>
+<a href="#1228" id="1228">1228</a>
+<a href="#1229" id="1229">1229</a>
+<a href="#1230" id="1230">1230</a>
+<a href="#1231" id="1231">1231</a>
+<a href="#1232" id="1232">1232</a>
+<a href="#1233" id="1233">1233</a>
+<a href="#1234" id="1234">1234</a>
+<a href="#1235" id="1235">1235</a>
+<a href="#1236" id="1236">1236</a>
+<a href="#1237" id="1237">1237</a>
+<a href="#1238" id="1238">1238</a>
+<a href="#1239" id="1239">1239</a>
+<a href="#1240" id="1240">1240</a>
+<a href="#1241" id="1241">1241</a>
+<a href="#1242" id="1242">1242</a>
+<a href="#1243" id="1243">1243</a>
+<a href="#1244" id="1244">1244</a>
+<a href="#1245" id="1245">1245</a>
+<a href="#1246" id="1246">1246</a>
+<a href="#1247" id="1247">1247</a>
+<a href="#1248" id="1248">1248</a>
+<a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</a>
+<a href="#1259" id="1259">1259</a>
+<a href="#1260" id="1260">1260</a>
+<a href="#1261" id="1261">1261</a>
+<a href="#1262" id="1262">1262</a>
+<a href="#1263" id="1263">1263</a>
+<a href="#1264" id="1264">1264</a>
+<a href="#1265" id="1265">1265</a>
+<a href="#1266" id="1266">1266</a>
+<a href="#1267" id="1267">1267</a>
+<a href="#1268" id="1268">1268</a>
+<a href="#1269" id="1269">1269</a>
+<a href="#1270" id="1270">1270</a>
+<a href="#1271" id="1271">1271</a>
+<a href="#1272" id="1272">1272</a>
+<a href="#1273" id="1273">1273</a>
+<a href="#1274" id="1274">1274</a>
+<a href="#1275" id="1275">1275</a>
+<a href="#1276" id="1276">1276</a>
+<a href="#1277" id="1277">1277</a>
+<a href="#1278" id="1278">1278</a>
+<a href="#1279" id="1279">1279</a>
+<a href="#1280" id="1280">1280</a>
+<a href="#1281" id="1281">1281</a>
+<a href="#1282" id="1282">1282</a>
+<a href="#1283" id="1283">1283</a>
+<a href="#1284" id="1284">1284</a>
+<a href="#1285" id="1285">1285</a>
+<a href="#1286" id="1286">1286</a>
+<a href="#1287" id="1287">1287</a>
+<a href="#1288" id="1288">1288</a>
+<a href="#1289" id="1289">1289</a>
+<a href="#1290" id="1290">1290</a>
+<a href="#1291" id="1291">1291</a>
+<a href="#1292" id="1292">1292</a>
+<a href="#1293" id="1293">1293</a>
+<a href="#1294" id="1294">1294</a>
+<a href="#1295" id="1295">1295</a>
+<a href="#1296" id="1296">1296</a>
+<a href="#1297" id="1297">1297</a>
+<a href="#1298" id="1298">1298</a>
+<a href="#1299" id="1299">1299</a>
+<a href="#1300" id="1300">1300</a>
+<a href="#1301" id="1301">1301</a>
+<a href="#1302" id="1302">1302</a>
+<a href="#1303" id="1303">1303</a>
+<a href="#1304" id="1304">1304</a>
+<a href="#1305" id="1305">1305</a>
+<a href="#1306" id="1306">1306</a>
+<a href="#1307" id="1307">1307</a>
+<a href="#1308" id="1308">1308</a>
+<a href="#1309" id="1309">1309</a>
+<a href="#1310" id="1310">1310</a>
+<a href="#1311" id="1311">1311</a>
+<a href="#1312" id="1312">1312</a>
+<a href="#1313" id="1313">1313</a>
+<a href="#1314" id="1314">1314</a>
+<a href="#1315" id="1315">1315</a>
+<a href="#1316" id="1316">1316</a>
+<a href="#1317" id="1317">1317</a>
+<a href="#1318" id="1318">1318</a>
+<a href="#1319" id="1319">1319</a>
+<a href="#1320" id="1320">1320</a>
+<a href="#1321" id="1321">1321</a>
+<a href="#1322" id="1322">1322</a>
+<a href="#1323" id="1323">1323</a>
+<a href="#1324" id="1324">1324</a>
+<a href="#1325" id="1325">1325</a>
+<a href="#1326" id="1326">1326</a>
+<a href="#1327" id="1327">1327</a>
+<a href="#1328" id="1328">1328</a>
+<a href="#1329" id="1329">1329</a>
+<a href="#1330" id="1330">1330</a>
+<a href="#1331" id="1331">1331</a>
+<a href="#1332" id="1332">1332</a>
+<a href="#1333" id="1333">1333</a>
+<a href="#1334" id="1334">1334</a>
+<a href="#1335" id="1335">1335</a>
+<a href="#1336" id="1336">1336</a>
+<a href="#1337" id="1337">1337</a>
+<a href="#1338" id="1338">1338</a>
+<a href="#1339" id="1339">1339</a>
+<a href="#1340" id="1340">1340</a>
+<a href="#1341" id="1341">1341</a>
+<a href="#1342" id="1342">1342</a>
+<a href="#1343" id="1343">1343</a>
+<a href="#1344" id="1344">1344</a>
+<a href="#1345" id="1345">1345</a>
+<a href="#1346" id="1346">1346</a>
+<a href="#1347" id="1347">1347</a>
+<a href="#1348" id="1348">1348</a>
+<a href="#1349" id="1349">1349</a>
+<a href="#1350" id="1350">1350</a>
+<a href="#1351" id="1351">1351</a>
+<a href="#1352" id="1352">1352</a>
+<a href="#1353" id="1353">1353</a>
+<a href="#1354" id="1354">1354</a>
+<a href="#1355" id="1355">1355</a>
+<a href="#1356" id="1356">1356</a>
+<a href="#1357" id="1357">1357</a>
+<a href="#1358" id="1358">1358</a>
+<a href="#1359" id="1359">1359</a>
+<a href="#1360" id="1360">1360</a>
+<a href="#1361" id="1361">1361</a>
+<a href="#1362" id="1362">1362</a>
+<a href="#1363" id="1363">1363</a>
+<a href="#1364" id="1364">1364</a>
+<a href="#1365" id="1365">1365</a>
+<a href="#1366" id="1366">1366</a>
+<a href="#1367" id="1367">1367</a>
+<a href="#1368" id="1368">1368</a>
+<a href="#1369" id="1369">1369</a>
+<a href="#1370" id="1370">1370</a>
+<a href="#1371" id="1371">1371</a>
+<a href="#1372" id="1372">1372</a>
+<a href="#1373" id="1373">1373</a>
+<a href="#1374" id="1374">1374</a>
+<a href="#1375" id="1375">1375</a>
+<a href="#1376" id="1376">1376</a>
+<a href="#1377" id="1377">1377</a>
+<a href="#1378" id="1378">1378</a>
+<a href="#1379" id="1379">1379</a>
+<a href="#1380" id="1380">1380</a>
+<a href="#1381" id="1381">1381</a>
+<a href="#1382" id="1382">1382</a>
+<a href="#1383" id="1383">1383</a>
+<a href="#1384" id="1384">1384</a>
+<a href="#1385" id="1385">1385</a>
+<a href="#1386" id="1386">1386</a>
+<a href="#1387" id="1387">1387</a>
+<a href="#1388" id="1388">1388</a>
+<a href="#1389" id="1389">1389</a>
+<a href="#1390" id="1390">1390</a>
+<a href="#1391" id="1391">1391</a>
+<a href="#1392" id="1392">1392</a>
+<a href="#1393" id="1393">1393</a>
+<a href="#1394" id="1394">1394</a>
+<a href="#1395" id="1395">1395</a>
+<a href="#1396" id="1396">1396</a>
+<a href="#1397" id="1397">1397</a>
+<a href="#1398" id="1398">1398</a>
+<a href="#1399" id="1399">1399</a>
+<a href="#1400" id="1400">1400</a>
+<a href="#1401" id="1401">1401</a>
+<a href="#1402" id="1402">1402</a>
+<a href="#1403" id="1403">1403</a>
+<a href="#1404" id="1404">1404</a>
+<a href="#1405" id="1405">1405</a>
+<a href="#1406" id="1406">1406</a>
+<a href="#1407" id="1407">1407</a>
+<a href="#1408" id="1408">1408</a>
+<a href="#1409" id="1409">1409</a>
+<a href="#1410" id="1410">1410</a>
+<a href="#1411" id="1411">1411</a>
+<a href="#1412" id="1412">1412</a>
+<a href="#1413" id="1413">1413</a>
+<a href="#1414" id="1414">1414</a>
+<a href="#1415" id="1415">1415</a>
+<a href="#1416" id="1416">1416</a>
+<a href="#1417" id="1417">1417</a>
+<a href="#1418" id="1418">1418</a>
+<a href="#1419" id="1419">1419</a>
+<a href="#1420" id="1420">1420</a>
+<a href="#1421" id="1421">1421</a>
+<a href="#1422" id="1422">1422</a>
+<a href="#1423" id="1423">1423</a>
+<a href="#1424" id="1424">1424</a>
+<a href="#1425" id="1425">1425</a>
+<a href="#1426" id="1426">1426</a>
+<a href="#1427" id="1427">1427</a>
+<a href="#1428" id="1428">1428</a>
+<a href="#1429" id="1429">1429</a>
+<a href="#1430" id="1430">1430</a>
+<a href="#1431" id="1431">1431</a>
+<a href="#1432" id="1432">1432</a>
+<a href="#1433" id="1433">1433</a>
+<a href="#1434" id="1434">1434</a>
+<a href="#1435" id="1435">1435</a>
+<a href="#1436" id="1436">1436</a>
+<a href="#1437" id="1437">1437</a>
+<a href="#1438" id="1438">1438</a>
+<a href="#1439" id="1439">1439</a>
+<a href="#1440" id="1440">1440</a>
+<a href="#1441" id="1441">1441</a>
+<a href="#1442" id="1442">1442</a>
+<a href="#1443" id="1443">1443</a>
+<a href="#1444" id="1444">1444</a>
+<a href="#1445" id="1445">1445</a>
+<a href="#1446" id="1446">1446</a>
+<a href="#1447" id="1447">1447</a>
+<a href="#1448" id="1448">1448</a>
+<a href="#1449" id="1449">1449</a>
+<a href="#1450" id="1450">1450</a>
+<a href="#1451" id="1451">1451</a>
+<a href="#1452" id="1452">1452</a>
+<a href="#1453" id="1453">1453</a>
+<a href="#1454" id="1454">1454</a>
+<a href="#1455" id="1455">1455</a>
+<a href="#1456" id="1456">1456</a>
+<a href="#1457" id="1457">1457</a>
+<a href="#1458" id="1458">1458</a>
+<a href="#1459" id="1459">1459</a>
+<a href="#1460" id="1460">1460</a>
+<a href="#1461" id="1461">1461</a>
+<a href="#1462" id="1462">1462</a>
+<a href="#1463" id="1463">1463</a>
+<a href="#1464" id="1464">1464</a>
+<a href="#1465" id="1465">1465</a>
+<a href="#1466" id="1466">1466</a>
+<a href="#1467" id="1467">1467</a>
+<a href="#1468" id="1468">1468</a>
+<a href="#1469" id="1469">1469</a>
+<a href="#1470" id="1470">1470</a>
+<a href="#1471" id="1471">1471</a>
+<a href="#1472" id="1472">1472</a>
+<a href="#1473" id="1473">1473</a>
+<a href="#1474" id="1474">1474</a>
+<a href="#1475" id="1475">1475</a>
+<a href="#1476" id="1476">1476</a>
+<a href="#1477" id="1477">1477</a>
+<a href="#1478" id="1478">1478</a>
+<a href="#1479" id="1479">1479</a>
+<a href="#1480" id="1480">1480</a>
+<a href="#1481" id="1481">1481</a>
+<a href="#1482" id="1482">1482</a>
+<a href="#1483" id="1483">1483</a>
+<a href="#1484" id="1484">1484</a>
+<a href="#1485" id="1485">1485</a>
+<a href="#1486" id="1486">1486</a>
+<a href="#1487" id="1487">1487</a>
+<a href="#1488" id="1488">1488</a>
+<a href="#1489" id="1489">1489</a>
+<a href="#1490" id="1490">1490</a>
+<a href="#1491" id="1491">1491</a>
+<a href="#1492" id="1492">1492</a>
+<a href="#1493" id="1493">1493</a>
+<a href="#1494" id="1494">1494</a>
+<a href="#1495" id="1495">1495</a>
+<a href="#1496" id="1496">1496</a>
+<a href="#1497" id="1497">1497</a>
+<a href="#1498" id="1498">1498</a>
+<a href="#1499" id="1499">1499</a>
+<a href="#1500" id="1500">1500</a>
+<a href="#1501" id="1501">1501</a>
+<a href="#1502" id="1502">1502</a>
+<a href="#1503" id="1503">1503</a>
+<a href="#1504" id="1504">1504</a>
+<a href="#1505" id="1505">1505</a>
+<a href="#1506" id="1506">1506</a>
+<a href="#1507" id="1507">1507</a>
+<a href="#1508" id="1508">1508</a>
+<a href="#1509" id="1509">1509</a>
+<a href="#1510" id="1510">1510</a>
+<a href="#1511" id="1511">1511</a>
+<a href="#1512" id="1512">1512</a>
+<a href="#1513" id="1513">1513</a>
+<a href="#1514" id="1514">1514</a>
+<a href="#1515" id="1515">1515</a>
+<a href="#1516" id="1516">1516</a>
+<a href="#1517" id="1517">1517</a>
+<a href="#1518" id="1518">1518</a>
+<a href="#1519" id="1519">1519</a>
+<a href="#1520" id="1520">1520</a>
+<a href="#1521" id="1521">1521</a>
+<a href="#1522" id="1522">1522</a>
+<a href="#1523" id="1523">1523</a>
+<a href="#1524" id="1524">1524</a>
+<a href="#1525" id="1525">1525</a>
+<a href="#1526" id="1526">1526</a>
+<a href="#1527" id="1527">1527</a>
+<a href="#1528" id="1528">1528</a>
+<a href="#1529" id="1529">1529</a>
+<a href="#1530" id="1530">1530</a>
+<a href="#1531" id="1531">1531</a>
+<a href="#1532" id="1532">1532</a>
+<a href="#1533" id="1533">1533</a>
+<a href="#1534" id="1534">1534</a>
+<a href="#1535" id="1535">1535</a>
+<a href="#1536" id="1536">1536</a>
+<a href="#1537" id="1537">1537</a>
+<a href="#1538" id="1538">1538</a>
+<a href="#1539" id="1539">1539</a>
+<a href="#1540" id="1540">1540</a>
+<a href="#1541" id="1541">1541</a>
+<a href="#1542" id="1542">1542</a>
+<a href="#1543" id="1543">1543</a>
+<a href="#1544" id="1544">1544</a>
+<a href="#1545" id="1545">1545</a>
+<a href="#1546" id="1546">1546</a>
+<a href="#1547" id="1547">1547</a>
+<a href="#1548" id="1548">1548</a>
+<a href="#1549" id="1549">1549</a>
+<a href="#1550" id="1550">1550</a>
+<a href="#1551" id="1551">1551</a>
+<a href="#1552" id="1552">1552</a>
+<a href="#1553" id="1553">1553</a>
+<a href="#1554" id="1554">1554</a>
+<a href="#1555" id="1555">1555</a>
+<a href="#1556" id="1556">1556</a>
+<a href="#1557" id="1557">1557</a>
+<a href="#1558" id="1558">1558</a>
+<a href="#1559" id="1559">1559</a>
+<a href="#1560" id="1560">1560</a>
+<a href="#1561" id="1561">1561</a>
+<a href="#1562" id="1562">1562</a>
+<a href="#1563" id="1563">1563</a>
+<a href="#1564" id="1564">1564</a>
+<a href="#1565" id="1565">1565</a>
+<a href="#1566" id="1566">1566</a>
+<a href="#1567" id="1567">1567</a>
+<a href="#1568" id="1568">1568</a>
+<a href="#1569" id="1569">1569</a>
+<a href="#1570" id="1570">1570</a>
+<a href="#1571" id="1571">1571</a>
+<a href="#1572" id="1572">1572</a>
+<a href="#1573" id="1573">1573</a>
+<a href="#1574" id="1574">1574</a>
+<a href="#1575" id="1575">1575</a>
+<a href="#1576" id="1576">1576</a>
+<a href="#1577" id="1577">1577</a>
+<a href="#1578" id="1578">1578</a>
+<a href="#1579" id="1579">1579</a>
+<a href="#1580" id="1580">1580</a>
+<a href="#1581" id="1581">1581</a>
+<a href="#1582" id="1582">1582</a>
+<a href="#1583" id="1583">1583</a>
+<a href="#1584" id="1584">1584</a>
+<a href="#1585" id="1585">1585</a>
+<a href="#1586" id="1586">1586</a>
+<a href="#1587" id="1587">1587</a>
+<a href="#1588" id="1588">1588</a>
+<a href="#1589" id="1589">1589</a>
+<a href="#1590" id="1590">1590</a>
+<a href="#1591" id="1591">1591</a>
+<a href="#1592" id="1592">1592</a>
+<a href="#1593" id="1593">1593</a>
+<a href="#1594" id="1594">1594</a>
+<a href="#1595" id="1595">1595</a>
+<a href="#1596" id="1596">1596</a>
+<a href="#1597" id="1597">1597</a>
+<a href="#1598" id="1598">1598</a>
+<a href="#1599" id="1599">1599</a>
+<a href="#1600" id="1600">1600</a>
+<a href="#1601" id="1601">1601</a>
+<a href="#1602" id="1602">1602</a>
+<a href="#1603" id="1603">1603</a>
+<a href="#1604" id="1604">1604</a>
+<a href="#1605" id="1605">1605</a>
+<a href="#1606" id="1606">1606</a>
+<a href="#1607" id="1607">1607</a>
+<a href="#1608" id="1608">1608</a>
+<a href="#1609" id="1609">1609</a>
+<a href="#1610" id="1610">1610</a>
+<a href="#1611" id="1611">1611</a>
+<a href="#1612" id="1612">1612</a>
+<a href="#1613" id="1613">1613</a>
+<a href="#1614" id="1614">1614</a>
+<a href="#1615" id="1615">1615</a>
+<a href="#1616" id="1616">1616</a>
+<a href="#1617" id="1617">1617</a>
+<a href="#1618" id="1618">1618</a>
+<a href="#1619" id="1619">1619</a>
+<a href="#1620" id="1620">1620</a>
+<a href="#1621" id="1621">1621</a>
+<a href="#1622" id="1622">1622</a>
+<a href="#1623" id="1623">1623</a>
+<a href="#1624" id="1624">1624</a>
+<a href="#1625" id="1625">1625</a>
+<a href="#1626" id="1626">1626</a>
+<a href="#1627" id="1627">1627</a>
+<a href="#1628" id="1628">1628</a>
+<a href="#1629" id="1629">1629</a>
+<a href="#1630" id="1630">1630</a>
+<a href="#1631" id="1631">1631</a>
+<a href="#1632" id="1632">1632</a>
+<a href="#1633" id="1633">1633</a>
+<a href="#1634" id="1634">1634</a>
+<a href="#1635" id="1635">1635</a>
+<a href="#1636" id="1636">1636</a>
+<a href="#1637" id="1637">1637</a>
+<a href="#1638" id="1638">1638</a>
+<a href="#1639" id="1639">1639</a>
+<a href="#1640" id="1640">1640</a>
+<a href="#1641" id="1641">1641</a>
+<a href="#1642" id="1642">1642</a>
+<a href="#1643" id="1643">1643</a>
+<a href="#1644" id="1644">1644</a>
+<a href="#1645" id="1645">1645</a>
+<a href="#1646" id="1646">1646</a>
+<a href="#1647" id="1647">1647</a>
+<a href="#1648" id="1648">1648</a>
+<a href="#1649" id="1649">1649</a>
+<a href="#1650" id="1650">1650</a>
+<a href="#1651" id="1651">1651</a>
+<a href="#1652" id="1652">1652</a>
+<a href="#1653" id="1653">1653</a>
+<a href="#1654" id="1654">1654</a>
+<a href="#1655" id="1655">1655</a>
+<a href="#1656" id="1656">1656</a>
+<a href="#1657" id="1657">1657</a>
+<a href="#1658" id="1658">1658</a>
+<a href="#1659" id="1659">1659</a>
+<a href="#1660" id="1660">1660</a>
+<a href="#1661" id="1661">1661</a>
+<a href="#1662" id="1662">1662</a>
+<a href="#1663" id="1663">1663</a>
+<a href="#1664" id="1664">1664</a>
+<a href="#1665" id="1665">1665</a>
+<a href="#1666" id="1666">1666</a>
+<a href="#1667" id="1667">1667</a>
+<a href="#1668" id="1668">1668</a>
+<a href="#1669" id="1669">1669</a>
+<a href="#1670" id="1670">1670</a>
+<a href="#1671" id="1671">1671</a>
+<a href="#1672" id="1672">1672</a>
+<a href="#1673" id="1673">1673</a>
+<a href="#1674" id="1674">1674</a>
+<a href="#1675" id="1675">1675</a>
+<a href="#1676" id="1676">1676</a>
+<a href="#1677" id="1677">1677</a>
+<a href="#1678" id="1678">1678</a>
+<a href="#1679" id="1679">1679</a>
+<a href="#1680" id="1680">1680</a>
+<a href="#1681" id="1681">1681</a>
+<a href="#1682" id="1682">1682</a>
+<a href="#1683" id="1683">1683</a>
+<a href="#1684" id="1684">1684</a>
+<a href="#1685" id="1685">1685</a>
+<a href="#1686" id="1686">1686</a>
+<a href="#1687" id="1687">1687</a>
+<a href="#1688" id="1688">1688</a>
+<a href="#1689" id="1689">1689</a>
+<a href="#1690" id="1690">1690</a>
+<a href="#1691" id="1691">1691</a>
+<a href="#1692" id="1692">1692</a>
+<a href="#1693" id="1693">1693</a>
+<a href="#1694" id="1694">1694</a>
+<a href="#1695" id="1695">1695</a>
+<a href="#1696" id="1696">1696</a>
+<a href="#1697" id="1697">1697</a>
+<a href="#1698" id="1698">1698</a>
+<a href="#1699" id="1699">1699</a>
+<a href="#1700" id="1700">1700</a>
+<a href="#1701" id="1701">1701</a>
+<a href="#1702" id="1702">1702</a>
+<a href="#1703" id="1703">1703</a>
+<a href="#1704" id="1704">1704</a>
+<a href="#1705" id="1705">1705</a>
+<a href="#1706" id="1706">1706</a>
+<a href="#1707" id="1707">1707</a>
+<a href="#1708" id="1708">1708</a>
+<a href="#1709" id="1709">1709</a>
+<a href="#1710" id="1710">1710</a>
+<a href="#1711" id="1711">1711</a>
+<a href="#1712" id="1712">1712</a>
+<a href="#1713" id="1713">1713</a>
+<a href="#1714" id="1714">1714</a>
+<a href="#1715" id="1715">1715</a>
+<a href="#1716" id="1716">1716</a>
+<a href="#1717" id="1717">1717</a>
+<a href="#1718" id="1718">1718</a>
+<a href="#1719" id="1719">1719</a>
+<a href="#1720" id="1720">1720</a>
+<a href="#1721" id="1721">1721</a>
+<a href="#1722" id="1722">1722</a>
+<a href="#1723" id="1723">1723</a>
+<a href="#1724" id="1724">1724</a>
+<a href="#1725" id="1725">1725</a>
+<a href="#1726" id="1726">1726</a>
+<a href="#1727" id="1727">1727</a>
+<a href="#1728" id="1728">1728</a>
+<a href="#1729" id="1729">1729</a>
+<a href="#1730" id="1730">1730</a>
+<a href="#1731" id="1731">1731</a>
+<a href="#1732" id="1732">1732</a>
+<a href="#1733" id="1733">1733</a>
+<a href="#1734" id="1734">1734</a>
+<a href="#1735" id="1735">1735</a>
+<a href="#1736" id="1736">1736</a>
+<a href="#1737" id="1737">1737</a>
+<a href="#1738" id="1738">1738</a>
+<a href="#1739" id="1739">1739</a>
+<a href="#1740" id="1740">1740</a>
+<a href="#1741" id="1741">1741</a>
+<a href="#1742" id="1742">1742</a>
+<a href="#1743" id="1743">1743</a>
+<a href="#1744" id="1744">1744</a>
+<a href="#1745" id="1745">1745</a>
+<a href="#1746" id="1746">1746</a>
+<a href="#1747" id="1747">1747</a>
+<a href="#1748" id="1748">1748</a>
+<a href="#1749" id="1749">1749</a>
+<a href="#1750" id="1750">1750</a>
+<a href="#1751" id="1751">1751</a>
+<a href="#1752" id="1752">1752</a>
+<a href="#1753" id="1753">1753</a>
+<a href="#1754" id="1754">1754</a>
+<a href="#1755" id="1755">1755</a>
+<a href="#1756" id="1756">1756</a>
+<a href="#1757" id="1757">1757</a>
+<a href="#1758" id="1758">1758</a>
+<a href="#1759" id="1759">1759</a>
+<a href="#1760" id="1760">1760</a>
+<a href="#1761" id="1761">1761</a>
+<a href="#1762" id="1762">1762</a>
+<a href="#1763" id="1763">1763</a>
+<a href="#1764" id="1764">1764</a>
+<a href="#1765" id="1765">1765</a>
+<a href="#1766" id="1766">1766</a>
+<a href="#1767" id="1767">1767</a>
+<a href="#1768" id="1768">1768</a>
+<a href="#1769" id="1769">1769</a>
+<a href="#1770" id="1770">1770</a>
+<a href="#1771" id="1771">1771</a>
+<a href="#1772" id="1772">1772</a>
+<a href="#1773" id="1773">1773</a>
+<a href="#1774" id="1774">1774</a>
+<a href="#1775" id="1775">1775</a>
+<a href="#1776" id="1776">1776</a>
+<a href="#1777" id="1777">1777</a>
+<a href="#1778" id="1778">1778</a>
+<a href="#1779" id="1779">1779</a>
+<a href="#1780" id="1780">1780</a>
+<a href="#1781" id="1781">1781</a>
+<a href="#1782" id="1782">1782</a>
+<a href="#1783" id="1783">1783</a>
+<a href="#1784" id="1784">1784</a>
+<a href="#1785" id="1785">1785</a>
+<a href="#1786" id="1786">1786</a>
+<a href="#1787" id="1787">1787</a>
+<a href="#1788" id="1788">1788</a>
+<a href="#1789" id="1789">1789</a>
+<a href="#1790" id="1790">1790</a>
+<a href="#1791" id="1791">1791</a>
+<a href="#1792" id="1792">1792</a>
+<a href="#1793" id="1793">1793</a>
+<a href="#1794" id="1794">1794</a>
+<a href="#1795" id="1795">1795</a>
+<a href="#1796" id="1796">1796</a>
+<a href="#1797" id="1797">1797</a>
+<a href="#1798" id="1798">1798</a>
+<a href="#1799" id="1799">1799</a>
+<a href="#1800" id="1800">1800</a>
+<a href="#1801" id="1801">1801</a>
+<a href="#1802" id="1802">1802</a>
+<a href="#1803" id="1803">1803</a>
+<a href="#1804" id="1804">1804</a>
+<a href="#1805" id="1805">1805</a>
+<a href="#1806" id="1806">1806</a>
+<a href="#1807" id="1807">1807</a>
+<a href="#1808" id="1808">1808</a>
+<a href="#1809" id="1809">1809</a>
+<a href="#1810" id="1810">1810</a>
+<a href="#1811" id="1811">1811</a>
+<a href="#1812" id="1812">1812</a>
+<a href="#1813" id="1813">1813</a>
+<a href="#1814" id="1814">1814</a>
+<a href="#1815" id="1815">1815</a>
+<a href="#1816" id="1816">1816</a>
+<a href="#1817" id="1817">1817</a>
+<a href="#1818" id="1818">1818</a>
+<a href="#1819" id="1819">1819</a>
+<a href="#1820" id="1820">1820</a>
+<a href="#1821" id="1821">1821</a>
+<a href="#1822" id="1822">1822</a>
+<a href="#1823" id="1823">1823</a>
+<a href="#1824" id="1824">1824</a>
+<a href="#1825" id="1825">1825</a>
+<a href="#1826" id="1826">1826</a>
+<a href="#1827" id="1827">1827</a>
+<a href="#1828" id="1828">1828</a>
+<a href="#1829" id="1829">1829</a>
+<a href="#1830" id="1830">1830</a>
+<a href="#1831" id="1831">1831</a>
+<a href="#1832" id="1832">1832</a>
+<a href="#1833" id="1833">1833</a>
+<a href="#1834" id="1834">1834</a>
+<a href="#1835" id="1835">1835</a>
+<a href="#1836" id="1836">1836</a>
+<a href="#1837" id="1837">1837</a>
+<a href="#1838" id="1838">1838</a>
+<a href="#1839" id="1839">1839</a>
+<a href="#1840" id="1840">1840</a>
+<a href="#1841" id="1841">1841</a>
+<a href="#1842" id="1842">1842</a>
+<a href="#1843" id="1843">1843</a>
+<a href="#1844" id="1844">1844</a>
+<a href="#1845" id="1845">1845</a>
+<a href="#1846" id="1846">1846</a>
+<a href="#1847" id="1847">1847</a>
+<a href="#1848" id="1848">1848</a>
+<a href="#1849" id="1849">1849</a>
+<a href="#1850" id="1850">1850</a>
+<a href="#1851" id="1851">1851</a>
+<a href="#1852" id="1852">1852</a>
+<a href="#1853" id="1853">1853</a>
+<a href="#1854" id="1854">1854</a>
+<a href="#1855" id="1855">1855</a>
+<a href="#1856" id="1856">1856</a>
+<a href="#1857" id="1857">1857</a>
+<a href="#1858" id="1858">1858</a>
+<a href="#1859" id="1859">1859</a>
+<a href="#1860" id="1860">1860</a>
+<a href="#1861" id="1861">1861</a>
+<a href="#1862" id="1862">1862</a>
+<a href="#1863" id="1863">1863</a>
+<a href="#1864" id="1864">1864</a>
+<a href="#1865" id="1865">1865</a>
+<a href="#1866" id="1866">1866</a>
+<a href="#1867" id="1867">1867</a>
+<a href="#1868" id="1868">1868</a>
+<a href="#1869" id="1869">1869</a>
+<a href="#1870" id="1870">1870</a>
+<a href="#1871" id="1871">1871</a>
+<a href="#1872" id="1872">1872</a>
+<a href="#1873" id="1873">1873</a>
+<a href="#1874" id="1874">1874</a>
+<a href="#1875" id="1875">1875</a>
+<a href="#1876" id="1876">1876</a>
+<a href="#1877" id="1877">1877</a>
+<a href="#1878" id="1878">1878</a>
+<a href="#1879" id="1879">1879</a>
+<a href="#1880" id="1880">1880</a>
+<a href="#1881" id="1881">1881</a>
+<a href="#1882" id="1882">1882</a>
+<a href="#1883" id="1883">1883</a>
+<a href="#1884" id="1884">1884</a>
+<a href="#1885" id="1885">1885</a>
+<a href="#1886" id="1886">1886</a>
+<a href="#1887" id="1887">1887</a>
+<a href="#1888" id="1888">1888</a>
+<a href="#1889" id="1889">1889</a>
+<a href="#1890" id="1890">1890</a>
+<a href="#1891" id="1891">1891</a>
+<a href="#1892" id="1892">1892</a>
+<a href="#1893" id="1893">1893</a>
+<a href="#1894" id="1894">1894</a>
+<a href="#1895" id="1895">1895</a>
+<a href="#1896" id="1896">1896</a>
+<a href="#1897" id="1897">1897</a>
+<a href="#1898" id="1898">1898</a>
+<a href="#1899" id="1899">1899</a>
+<a href="#1900" id="1900">1900</a>
+<a href="#1901" id="1901">1901</a>
+<a href="#1902" id="1902">1902</a>
+<a href="#1903" id="1903">1903</a>
+<a href="#1904" id="1904">1904</a>
+<a href="#1905" id="1905">1905</a>
+<a href="#1906" id="1906">1906</a>
+<a href="#1907" id="1907">1907</a>
+<a href="#1908" id="1908">1908</a>
+<a href="#1909" id="1909">1909</a>
+<a href="#1910" id="1910">1910</a>
+<a href="#1911" id="1911">1911</a>
+<a href="#1912" id="1912">1912</a>
+<a href="#1913" id="1913">1913</a>
+<a href="#1914" id="1914">1914</a>
+<a href="#1915" id="1915">1915</a>
+<a href="#1916" id="1916">1916</a>
+<a href="#1917" id="1917">1917</a>
+<a href="#1918" id="1918">1918</a>
+<a href="#1919" id="1919">1919</a>
+<a href="#1920" id="1920">1920</a>
+<a href="#1921" id="1921">1921</a>
+<a href="#1922" id="1922">1922</a>
+<a href="#1923" id="1923">1923</a>
+<a href="#1924" id="1924">1924</a>
+<a href="#1925" id="1925">1925</a>
+<a href="#1926" id="1926">1926</a>
+<a href="#1927" id="1927">1927</a>
+<a href="#1928" id="1928">1928</a>
+<a href="#1929" id="1929">1929</a>
+<a href="#1930" id="1930">1930</a>
+<a href="#1931" id="1931">1931</a>
+<a href="#1932" id="1932">1932</a>
+<a href="#1933" id="1933">1933</a>
+<a href="#1934" id="1934">1934</a>
+<a href="#1935" id="1935">1935</a>
+<a href="#1936" id="1936">1936</a>
+<a href="#1937" id="1937">1937</a>
+<a href="#1938" id="1938">1938</a>
+<a href="#1939" id="1939">1939</a>
+<a href="#1940" id="1940">1940</a>
+<a href="#1941" id="1941">1941</a>
+<a href="#1942" id="1942">1942</a>
+<a href="#1943" id="1943">1943</a>
+<a href="#1944" id="1944">1944</a>
+<a href="#1945" id="1945">1945</a>
+<a href="#1946" id="1946">1946</a>
+<a href="#1947" id="1947">1947</a>
+<a href="#1948" id="1948">1948</a>
+<a href="#1949" id="1949">1949</a>
+<a href="#1950" id="1950">1950</a>
+<a href="#1951" id="1951">1951</a>
+<a href="#1952" id="1952">1952</a>
+<a href="#1953" id="1953">1953</a>
+<a href="#1954" id="1954">1954</a>
+<a href="#1955" id="1955">1955</a>
+<a href="#1956" id="1956">1956</a>
+<a href="#1957" id="1957">1957</a>
+<a href="#1958" id="1958">1958</a>
+<a href="#1959" id="1959">1959</a>
+<a href="#1960" id="1960">1960</a>
+<a href="#1961" id="1961">1961</a>
+<a href="#1962" id="1962">1962</a>
+<a href="#1963" id="1963">1963</a>
+<a href="#1964" id="1964">1964</a>
+<a href="#1965" id="1965">1965</a>
+<a href="#1966" id="1966">1966</a>
+<a href="#1967" id="1967">1967</a>
+<a href="#1968" id="1968">1968</a>
+<a href="#1969" id="1969">1969</a>
+<a href="#1970" id="1970">1970</a>
+<a href="#1971" id="1971">1971</a>
+<a href="#1972" id="1972">1972</a>
+<a href="#1973" id="1973">1973</a>
+<a href="#1974" id="1974">1974</a>
+<a href="#1975" id="1975">1975</a>
+<a href="#1976" id="1976">1976</a>
+<a href="#1977" id="1977">1977</a>
+<a href="#1978" id="1978">1978</a>
+<a href="#1979" id="1979">1979</a>
+<a href="#1980" id="1980">1980</a>
+<a href="#1981" id="1981">1981</a>
+<a href="#1982" id="1982">1982</a>
+<a href="#1983" id="1983">1983</a>
+<a href="#1984" id="1984">1984</a>
+<a href="#1985" id="1985">1985</a>
+<a href="#1986" id="1986">1986</a>
+<a href="#1987" id="1987">1987</a>
+<a href="#1988" id="1988">1988</a>
+<a href="#1989" id="1989">1989</a>
+<a href="#1990" id="1990">1990</a>
+<a href="#1991" id="1991">1991</a>
+<a href="#1992" id="1992">1992</a>
+<a href="#1993" id="1993">1993</a>
+<a href="#1994" id="1994">1994</a>
+<a href="#1995" id="1995">1995</a>
+<a href="#1996" id="1996">1996</a>
+<a href="#1997" id="1997">1997</a>
+<a href="#1998" id="1998">1998</a>
+<a href="#1999" id="1999">1999</a>
+<a href="#2000" id="2000">2000</a>
+<a href="#2001" id="2001">2001</a>
+<a href="#2002" id="2002">2002</a>
+<a href="#2003" id="2003">2003</a>
+<a href="#2004" id="2004">2004</a>
+<a href="#2005" id="2005">2005</a>
+<a href="#2006" id="2006">2006</a>
+<a href="#2007" id="2007">2007</a>
+<a href="#2008" id="2008">2008</a>
+<a href="#2009" id="2009">2009</a>
+<a href="#2010" id="2010">2010</a>
+<a href="#2011" id="2011">2011</a>
+<a href="#2012" id="2012">2012</a>
+<a href="#2013" id="2013">2013</a>
+<a href="#2014" id="2014">2014</a>
+<a href="#2015" id="2015">2015</a>
+<a href="#2016" id="2016">2016</a>
+<a href="#2017" id="2017">2017</a>
+<a href="#2018" id="2018">2018</a>
+<a href="#2019" id="2019">2019</a>
+<a href="#2020" id="2020">2020</a>
+<a href="#2021" id="2021">2021</a>
+<a href="#2022" id="2022">2022</a>
+<a href="#2023" id="2023">2023</a>
+<a href="#2024" id="2024">2024</a>
+<a href="#2025" id="2025">2025</a>
+<a href="#2026" id="2026">2026</a>
+<a href="#2027" id="2027">2027</a>
+<a href="#2028" id="2028">2028</a>
+<a href="#2029" id="2029">2029</a>
+<a href="#2030" id="2030">2030</a>
+<a href="#2031" id="2031">2031</a>
+<a href="#2032" id="2032">2032</a>
+<a href="#2033" id="2033">2033</a>
+<a href="#2034" id="2034">2034</a>
+<a href="#2035" id="2035">2035</a>
+<a href="#2036" id="2036">2036</a>
+<a href="#2037" id="2037">2037</a>
+<a href="#2038" id="2038">2038</a>
+<a href="#2039" id="2039">2039</a>
+<a href="#2040" id="2040">2040</a>
+<a href="#2041" id="2041">2041</a>
+<a href="#2042" id="2042">2042</a>
+<a href="#2043" id="2043">2043</a>
+<a href="#2044" id="2044">2044</a>
+<a href="#2045" id="2045">2045</a>
+<a href="#2046" id="2046">2046</a>
+<a href="#2047" id="2047">2047</a>
+<a href="#2048" id="2048">2048</a>
+<a href="#2049" id="2049">2049</a>
+<a href="#2050" id="2050">2050</a>
+<a href="#2051" id="2051">2051</a>
+<a href="#2052" id="2052">2052</a>
+<a href="#2053" id="2053">2053</a>
+<a href="#2054" id="2054">2054</a>
+<a href="#2055" id="2055">2055</a>
+<a href="#2056" id="2056">2056</a>
+<a href="#2057" id="2057">2057</a>
+<a href="#2058" id="2058">2058</a>
+<a href="#2059" id="2059">2059</a>
+<a href="#2060" id="2060">2060</a>
+<a href="#2061" id="2061">2061</a>
+<a href="#2062" id="2062">2062</a>
+<a href="#2063" id="2063">2063</a>
+<a href="#2064" id="2064">2064</a>
+<a href="#2065" id="2065">2065</a>
+<a href="#2066" id="2066">2066</a>
+<a href="#2067" id="2067">2067</a>
+<a href="#2068" id="2068">2068</a>
+<a href="#2069" id="2069">2069</a>
+<a href="#2070" id="2070">2070</a>
+<a href="#2071" id="2071">2071</a>
+<a href="#2072" id="2072">2072</a>
+<a href="#2073" id="2073">2073</a>
+<a href="#2074" id="2074">2074</a>
+<a href="#2075" id="2075">2075</a>
+<a href="#2076" id="2076">2076</a>
+<a href="#2077" id="2077">2077</a>
+<a href="#2078" id="2078">2078</a>
+<a href="#2079" id="2079">2079</a>
+<a href="#2080" id="2080">2080</a>
+<a href="#2081" id="2081">2081</a>
+<a href="#2082" id="2082">2082</a>
+<a href="#2083" id="2083">2083</a>
+<a href="#2084" id="2084">2084</a>
+<a href="#2085" id="2085">2085</a>
+<a href="#2086" id="2086">2086</a>
+<a href="#2087" id="2087">2087</a>
+<a href="#2088" id="2088">2088</a>
+<a href="#2089" id="2089">2089</a>
+<a href="#2090" id="2090">2090</a>
+<a href="#2091" id="2091">2091</a>
+<a href="#2092" id="2092">2092</a>
+<a href="#2093" id="2093">2093</a>
+<a href="#2094" id="2094">2094</a>
+<a href="#2095" id="2095">2095</a>
+<a href="#2096" id="2096">2096</a>
+<a href="#2097" id="2097">2097</a>
+<a href="#2098" id="2098">2098</a>
+<a href="#2099" id="2099">2099</a>
+<a href="#2100" id="2100">2100</a>
+<a href="#2101" id="2101">2101</a>
+<a href="#2102" id="2102">2102</a>
+<a href="#2103" id="2103">2103</a>
+<a href="#2104" id="2104">2104</a>
+<a href="#2105" id="2105">2105</a>
+<a href="#2106" id="2106">2106</a>
+<a href="#2107" id="2107">2107</a>
+<a href="#2108" id="2108">2108</a>
+<a href="#2109" id="2109">2109</a>
+<a href="#2110" id="2110">2110</a>
+<a href="#2111" id="2111">2111</a>
+<a href="#2112" id="2112">2112</a>
+<a href="#2113" id="2113">2113</a>
+<a href="#2114" id="2114">2114</a>
+<a href="#2115" id="2115">2115</a>
+<a href="#2116" id="2116">2116</a>
+<a href="#2117" id="2117">2117</a>
+<a href="#2118" id="2118">2118</a>
+<a href="#2119" id="2119">2119</a>
+<a href="#2120" id="2120">2120</a>
+<a href="#2121" id="2121">2121</a>
+<a href="#2122" id="2122">2122</a>
+<a href="#2123" id="2123">2123</a>
+<a href="#2124" id="2124">2124</a>
+<a href="#2125" id="2125">2125</a>
+<a href="#2126" id="2126">2126</a>
+<a href="#2127" id="2127">2127</a>
+<a href="#2128" id="2128">2128</a>
+<a href="#2129" id="2129">2129</a>
+<a href="#2130" id="2130">2130</a>
+<a href="#2131" id="2131">2131</a>
+<a href="#2132" id="2132">2132</a>
+<a href="#2133" id="2133">2133</a>
+<a href="#2134" id="2134">2134</a>
+<a href="#2135" id="2135">2135</a>
+<a href="#2136" id="2136">2136</a>
+<a href="#2137" id="2137">2137</a>
+<a href="#2138" id="2138">2138</a>
+<a href="#2139" id="2139">2139</a>
+<a href="#2140" id="2140">2140</a>
+<a href="#2141" id="2141">2141</a>
+<a href="#2142" id="2142">2142</a>
+<a href="#2143" id="2143">2143</a>
+<a href="#2144" id="2144">2144</a>
+<a href="#2145" id="2145">2145</a>
+<a href="#2146" id="2146">2146</a>
+<a href="#2147" id="2147">2147</a>
+<a href="#2148" id="2148">2148</a>
+<a href="#2149" id="2149">2149</a>
+<a href="#2150" id="2150">2150</a>
+<a href="#2151" id="2151">2151</a>
+<a href="#2152" id="2152">2152</a>
+<a href="#2153" id="2153">2153</a>
+<a href="#2154" id="2154">2154</a>
+<a href="#2155" id="2155">2155</a>
+<a href="#2156" id="2156">2156</a>
+<a href="#2157" id="2157">2157</a>
+<a href="#2158" id="2158">2158</a>
+<a href="#2159" id="2159">2159</a>
+<a href="#2160" id="2160">2160</a>
+<a href="#2161" id="2161">2161</a>
+<a href="#2162" id="2162">2162</a>
+<a href="#2163" id="2163">2163</a>
+<a href="#2164" id="2164">2164</a>
+<a href="#2165" id="2165">2165</a>
+<a href="#2166" id="2166">2166</a>
+<a href="#2167" id="2167">2167</a>
+<a href="#2168" id="2168">2168</a>
+<a href="#2169" id="2169">2169</a>
+<a href="#2170" id="2170">2170</a>
+<a href="#2171" id="2171">2171</a>
+<a href="#2172" id="2172">2172</a>
+<a href="#2173" id="2173">2173</a>
+<a href="#2174" id="2174">2174</a>
+<a href="#2175" id="2175">2175</a>
+<a href="#2176" id="2176">2176</a>
+<a href="#2177" id="2177">2177</a>
+<a href="#2178" id="2178">2178</a>
+<a href="#2179" id="2179">2179</a>
+<a href="#2180" id="2180">2180</a>
+<a href="#2181" id="2181">2181</a>
+<a href="#2182" id="2182">2182</a>
+<a href="#2183" id="2183">2183</a>
+<a href="#2184" id="2184">2184</a>
+<a href="#2185" id="2185">2185</a>
+<a href="#2186" id="2186">2186</a>
+<a href="#2187" id="2187">2187</a>
+<a href="#2188" id="2188">2188</a>
+<a href="#2189" id="2189">2189</a>
+<a href="#2190" id="2190">2190</a>
+<a href="#2191" id="2191">2191</a>
+<a href="#2192" id="2192">2192</a>
+<a href="#2193" id="2193">2193</a>
+<a href="#2194" id="2194">2194</a>
+<a href="#2195" id="2195">2195</a>
+<a href="#2196" id="2196">2196</a>
+<a href="#2197" id="2197">2197</a>
+<a href="#2198" id="2198">2198</a>
+<a href="#2199" id="2199">2199</a>
+<a href="#2200" id="2200">2200</a>
+<a href="#2201" id="2201">2201</a>
+<a href="#2202" id="2202">2202</a>
+<a href="#2203" id="2203">2203</a>
+<a href="#2204" id="2204">2204</a>
+<a href="#2205" id="2205">2205</a>
+<a href="#2206" id="2206">2206</a>
+<a href="#2207" id="2207">2207</a>
+<a href="#2208" id="2208">2208</a>
+<a href="#2209" id="2209">2209</a>
+<a href="#2210" id="2210">2210</a>
+<a href="#2211" id="2211">2211</a>
+<a href="#2212" id="2212">2212</a>
+<a href="#2213" id="2213">2213</a>
+<a href="#2214" id="2214">2214</a>
+<a href="#2215" id="2215">2215</a>
+<a href="#2216" id="2216">2216</a>
+<a href="#2217" id="2217">2217</a>
+<a href="#2218" id="2218">2218</a>
+<a href="#2219" id="2219">2219</a>
+<a href="#2220" id="2220">2220</a>
+<a href="#2221" id="2221">2221</a>
+<a href="#2222" id="2222">2222</a>
+<a href="#2223" id="2223">2223</a>
+<a href="#2224" id="2224">2224</a>
+<a href="#2225" id="2225">2225</a>
+<a href="#2226" id="2226">2226</a>
+<a href="#2227" id="2227">2227</a>
+<a href="#2228" id="2228">2228</a>
+<a href="#2229" id="2229">2229</a>
+<a href="#2230" id="2230">2230</a>
+<a href="#2231" id="2231">2231</a>
+<a href="#2232" id="2232">2232</a>
+<a href="#2233" id="2233">2233</a>
+<a href="#2234" id="2234">2234</a>
+<a href="#2235" id="2235">2235</a>
+<a href="#2236" id="2236">2236</a>
+<a href="#2237" id="2237">2237</a>
+<a href="#2238" id="2238">2238</a>
+<a href="#2239" id="2239">2239</a>
+<a href="#2240" id="2240">2240</a>
+<a href="#2241" id="2241">2241</a>
+<a href="#2242" id="2242">2242</a>
+<a href="#2243" id="2243">2243</a>
+<a href="#2244" id="2244">2244</a>
+<a href="#2245" id="2245">2245</a>
+<a href="#2246" id="2246">2246</a>
+<a href="#2247" id="2247">2247</a>
+<a href="#2248" id="2248">2248</a>
+<a href="#2249" id="2249">2249</a>
+<a href="#2250" id="2250">2250</a>
+<a href="#2251" id="2251">2251</a>
+<a href="#2252" id="2252">2252</a>
+<a href="#2253" id="2253">2253</a>
+<a href="#2254" id="2254">2254</a>
+<a href="#2255" id="2255">2255</a>
+<a href="#2256" id="2256">2256</a>
+<a href="#2257" id="2257">2257</a>
+<a href="#2258" id="2258">2258</a>
+<a href="#2259" id="2259">2259</a>
+<a href="#2260" id="2260">2260</a>
+<a href="#2261" id="2261">2261</a>
+<a href="#2262" id="2262">2262</a>
+<a href="#2263" id="2263">2263</a>
+<a href="#2264" id="2264">2264</a>
+<a href="#2265" id="2265">2265</a>
+<a href="#2266" id="2266">2266</a>
+<a href="#2267" id="2267">2267</a>
+<a href="#2268" id="2268">2268</a>
+<a href="#2269" id="2269">2269</a>
+<a href="#2270" id="2270">2270</a>
+<a href="#2271" id="2271">2271</a>
+<a href="#2272" id="2272">2272</a>
+<a href="#2273" id="2273">2273</a>
+<a href="#2274" id="2274">2274</a>
+<a href="#2275" id="2275">2275</a>
+<a href="#2276" id="2276">2276</a>
+<a href="#2277" id="2277">2277</a>
+<a href="#2278" id="2278">2278</a>
+<a href="#2279" id="2279">2279</a>
+<a href="#2280" id="2280">2280</a>
+<a href="#2281" id="2281">2281</a>
+<a href="#2282" id="2282">2282</a>
+<a href="#2283" id="2283">2283</a>
+<a href="#2284" id="2284">2284</a>
+<a href="#2285" id="2285">2285</a>
+<a href="#2286" id="2286">2286</a>
+<a href="#2287" id="2287">2287</a>
+<a href="#2288" id="2288">2288</a>
+<a href="#2289" id="2289">2289</a>
+<a href="#2290" id="2290">2290</a>
+<a href="#2291" id="2291">2291</a>
+<a href="#2292" id="2292">2292</a>
+<a href="#2293" id="2293">2293</a>
+<a href="#2294" id="2294">2294</a>
+<a href="#2295" id="2295">2295</a>
+<a href="#2296" id="2296">2296</a>
+<a href="#2297" id="2297">2297</a>
+<a href="#2298" id="2298">2298</a>
+<a href="#2299" id="2299">2299</a>
+<a href="#2300" id="2300">2300</a>
+<a href="#2301" id="2301">2301</a>
+<a href="#2302" id="2302">2302</a>
+<a href="#2303" id="2303">2303</a>
+<a href="#2304" id="2304">2304</a>
+<a href="#2305" id="2305">2305</a>
+<a href="#2306" id="2306">2306</a>
+<a href="#2307" id="2307">2307</a>
+<a href="#2308" id="2308">2308</a>
+<a href="#2309" id="2309">2309</a>
+<a href="#2310" id="2310">2310</a>
+<a href="#2311" id="2311">2311</a>
+<a href="#2312" id="2312">2312</a>
+<a href="#2313" id="2313">2313</a>
+<a href="#2314" id="2314">2314</a>
+<a href="#2315" id="2315">2315</a>
+<a href="#2316" id="2316">2316</a>
+<a href="#2317" id="2317">2317</a>
+<a href="#2318" id="2318">2318</a>
+<a href="#2319" id="2319">2319</a>
+<a href="#2320" id="2320">2320</a>
+<a href="#2321" id="2321">2321</a>
+<a href="#2322" id="2322">2322</a>
+<a href="#2323" id="2323">2323</a>
+<a href="#2324" id="2324">2324</a>
+<a href="#2325" id="2325">2325</a>
+<a href="#2326" id="2326">2326</a>
+<a href="#2327" id="2327">2327</a>
+<a href="#2328" id="2328">2328</a>
+<a href="#2329" id="2329">2329</a>
+<a href="#2330" id="2330">2330</a>
+<a href="#2331" id="2331">2331</a>
+<a href="#2332" id="2332">2332</a>
+<a href="#2333" id="2333">2333</a>
+<a href="#2334" id="2334">2334</a>
+<a href="#2335" id="2335">2335</a>
+<a href="#2336" id="2336">2336</a>
+<a href="#2337" id="2337">2337</a>
+<a href="#2338" id="2338">2338</a>
+<a href="#2339" id="2339">2339</a>
+<a href="#2340" id="2340">2340</a>
+<a href="#2341" id="2341">2341</a>
+<a href="#2342" id="2342">2342</a>
+<a href="#2343" id="2343">2343</a>
+<a href="#2344" id="2344">2344</a>
+<a href="#2345" id="2345">2345</a>
+<a href="#2346" id="2346">2346</a>
+<a href="#2347" id="2347">2347</a>
+<a href="#2348" id="2348">2348</a>
+<a href="#2349" id="2349">2349</a>
+<a href="#2350" id="2350">2350</a>
+<a href="#2351" id="2351">2351</a>
+<a href="#2352" id="2352">2352</a>
+<a href="#2353" id="2353">2353</a>
+<a href="#2354" id="2354">2354</a>
+<a href="#2355" id="2355">2355</a>
+<a href="#2356" id="2356">2356</a>
+<a href="#2357" id="2357">2357</a>
+<a href="#2358" id="2358">2358</a>
+<a href="#2359" id="2359">2359</a>
+<a href="#2360" id="2360">2360</a>
+<a href="#2361" id="2361">2361</a>
+<a href="#2362" id="2362">2362</a>
+<a href="#2363" id="2363">2363</a>
+<a href="#2364" id="2364">2364</a>
+<a href="#2365" id="2365">2365</a>
+<a href="#2366" id="2366">2366</a>
+<a href="#2367" id="2367">2367</a>
+<a href="#2368" id="2368">2368</a>
+<a href="#2369" id="2369">2369</a>
+<a href="#2370" id="2370">2370</a>
+<a href="#2371" id="2371">2371</a>
+<a href="#2372" id="2372">2372</a>
+<a href="#2373" id="2373">2373</a>
+<a href="#2374" id="2374">2374</a>
+<a href="#2375" id="2375">2375</a>
+<a href="#2376" id="2376">2376</a>
+<a href="#2377" id="2377">2377</a>
+<a href="#2378" id="2378">2378</a>
+<a href="#2379" id="2379">2379</a>
+<a href="#2380" id="2380">2380</a>
+<a href="#2381" id="2381">2381</a>
+<a href="#2382" id="2382">2382</a>
+<a href="#2383" id="2383">2383</a>
+<a href="#2384" id="2384">2384</a>
+<a href="#2385" id="2385">2385</a>
+<a href="#2386" id="2386">2386</a>
+<a href="#2387" id="2387">2387</a>
+<a href="#2388" id="2388">2388</a>
+<a href="#2389" id="2389">2389</a>
+<a href="#2390" id="2390">2390</a>
+<a href="#2391" id="2391">2391</a>
+<a href="#2392" id="2392">2392</a>
+<a href="#2393" id="2393">2393</a>
+<a href="#2394" id="2394">2394</a>
+<a href="#2395" id="2395">2395</a>
+<a href="#2396" id="2396">2396</a>
+<a href="#2397" id="2397">2397</a>
+<a href="#2398" id="2398">2398</a>
+<a href="#2399" id="2399">2399</a>
+<a href="#2400" id="2400">2400</a>
+<a href="#2401" id="2401">2401</a>
+<a href="#2402" id="2402">2402</a>
+<a href="#2403" id="2403">2403</a>
+<a href="#2404" id="2404">2404</a>
+<a href="#2405" id="2405">2405</a>
+<a href="#2406" id="2406">2406</a>
+<a href="#2407" id="2407">2407</a>
+<a href="#2408" id="2408">2408</a>
+<a href="#2409" id="2409">2409</a>
+<a href="#2410" id="2410">2410</a>
+<a href="#2411" id="2411">2411</a>
+<a href="#2412" id="2412">2412</a>
+<a href="#2413" id="2413">2413</a>
+<a href="#2414" id="2414">2414</a>
+<a href="#2415" id="2415">2415</a>
+<a href="#2416" id="2416">2416</a>
+<a href="#2417" id="2417">2417</a>
+<a href="#2418" id="2418">2418</a>
+<a href="#2419" id="2419">2419</a>
+<a href="#2420" id="2420">2420</a>
+<a href="#2421" id="2421">2421</a>
+<a href="#2422" id="2422">2422</a>
+<a href="#2423" id="2423">2423</a>
+<a href="#2424" id="2424">2424</a>
+<a href="#2425" id="2425">2425</a>
+<a href="#2426" id="2426">2426</a>
+<a href="#2427" id="2427">2427</a>
+<a href="#2428" id="2428">2428</a>
+<a href="#2429" id="2429">2429</a>
+<a href="#2430" id="2430">2430</a>
+<a href="#2431" id="2431">2431</a>
+<a href="#2432" id="2432">2432</a>
+<a href="#2433" id="2433">2433</a>
+<a href="#2434" id="2434">2434</a>
+<a href="#2435" id="2435">2435</a>
+<a href="#2436" id="2436">2436</a>
+<a href="#2437" id="2437">2437</a>
+<a href="#2438" id="2438">2438</a>
+<a href="#2439" id="2439">2439</a>
+<a href="#2440" id="2440">2440</a>
+<a href="#2441" id="2441">2441</a>
+<a href="#2442" id="2442">2442</a>
+<a href="#2443" id="2443">2443</a>
+<a href="#2444" id="2444">2444</a>
+<a href="#2445" id="2445">2445</a>
+<a href="#2446" id="2446">2446</a>
+<a href="#2447" id="2447">2447</a>
+<a href="#2448" id="2448">2448</a>
+<a href="#2449" id="2449">2449</a>
+<a href="#2450" id="2450">2450</a>
+<a href="#2451" id="2451">2451</a>
+<a href="#2452" id="2452">2452</a>
+<a href="#2453" id="2453">2453</a>
+<a href="#2454" id="2454">2454</a>
+<a href="#2455" id="2455">2455</a>
+<a href="#2456" id="2456">2456</a>
+<a href="#2457" id="2457">2457</a>
+<a href="#2458" id="2458">2458</a>
+<a href="#2459" id="2459">2459</a>
+<a href="#2460" id="2460">2460</a>
+<a href="#2461" id="2461">2461</a>
+<a href="#2462" id="2462">2462</a>
+<a href="#2463" id="2463">2463</a>
+<a href="#2464" id="2464">2464</a>
+<a href="#2465" id="2465">2465</a>
+<a href="#2466" id="2466">2466</a>
+<a href="#2467" id="2467">2467</a>
+<a href="#2468" id="2468">2468</a>
+<a href="#2469" id="2469">2469</a>
+<a href="#2470" id="2470">2470</a>
+<a href="#2471" id="2471">2471</a>
+<a href="#2472" id="2472">2472</a>
+<a href="#2473" id="2473">2473</a>
+<a href="#2474" id="2474">2474</a>
+<a href="#2475" id="2475">2475</a>
+<a href="#2476" id="2476">2476</a>
+<a href="#2477" id="2477">2477</a>
+<a href="#2478" id="2478">2478</a>
+<a href="#2479" id="2479">2479</a>
+<a href="#2480" id="2480">2480</a>
+<a href="#2481" id="2481">2481</a>
+<a href="#2482" id="2482">2482</a>
+<a href="#2483" id="2483">2483</a>
+<a href="#2484" id="2484">2484</a>
+<a href="#2485" id="2485">2485</a>
+<a href="#2486" id="2486">2486</a>
+<a href="#2487" id="2487">2487</a>
+<a href="#2488" id="2488">2488</a>
+<a href="#2489" id="2489">2489</a>
+<a href="#2490" id="2490">2490</a>
+<a href="#2491" id="2491">2491</a>
+<a href="#2492" id="2492">2492</a>
+<a href="#2493" id="2493">2493</a>
+<a href="#2494" id="2494">2494</a>
+<a href="#2495" id="2495">2495</a>
+<a href="#2496" id="2496">2496</a>
+<a href="#2497" id="2497">2497</a>
+<a href="#2498" id="2498">2498</a>
+<a href="#2499" id="2499">2499</a>
+<a href="#2500" id="2500">2500</a>
+<a href="#2501" id="2501">2501</a>
+<a href="#2502" id="2502">2502</a>
+<a href="#2503" id="2503">2503</a>
+<a href="#2504" id="2504">2504</a>
+<a href="#2505" id="2505">2505</a>
+<a href="#2506" id="2506">2506</a>
+<a href="#2507" id="2507">2507</a>
+<a href="#2508" id="2508">2508</a>
+<a href="#2509" id="2509">2509</a>
+<a href="#2510" id="2510">2510</a>
+<a href="#2511" id="2511">2511</a>
+<a href="#2512" id="2512">2512</a>
+<a href="#2513" id="2513">2513</a>
+<a href="#2514" id="2514">2514</a>
+<a href="#2515" id="2515">2515</a>
+<a href="#2516" id="2516">2516</a>
+<a href="#2517" id="2517">2517</a>
+<a href="#2518" id="2518">2518</a>
+<a href="#2519" id="2519">2519</a>
+<a href="#2520" id="2520">2520</a>
+<a href="#2521" id="2521">2521</a>
+<a href="#2522" id="2522">2522</a>
+<a href="#2523" id="2523">2523</a>
+<a href="#2524" id="2524">2524</a>
+<a href="#2525" id="2525">2525</a>
+<a href="#2526" id="2526">2526</a>
+<a href="#2527" id="2527">2527</a>
+<a href="#2528" id="2528">2528</a>
+<a href="#2529" id="2529">2529</a>
+<a href="#2530" id="2530">2530</a>
+<a href="#2531" id="2531">2531</a>
+<a href="#2532" id="2532">2532</a>
+<a href="#2533" id="2533">2533</a>
+<a href="#2534" id="2534">2534</a>
+<a href="#2535" id="2535">2535</a>
+<a href="#2536" id="2536">2536</a>
+<a href="#2537" id="2537">2537</a>
+<a href="#2538" id="2538">2538</a>
+<a href="#2539" id="2539">2539</a>
+<a href="#2540" id="2540">2540</a>
+<a href="#2541" id="2541">2541</a>
+<a href="#2542" id="2542">2542</a>
+<a href="#2543" id="2543">2543</a>
+<a href="#2544" id="2544">2544</a>
+<a href="#2545" id="2545">2545</a>
+<a href="#2546" id="2546">2546</a>
+<a href="#2547" id="2547">2547</a>
+<a href="#2548" id="2548">2548</a>
+<a href="#2549" id="2549">2549</a>
+<a href="#2550" id="2550">2550</a>
+<a href="#2551" id="2551">2551</a>
+<a href="#2552" id="2552">2552</a>
+<a href="#2553" id="2553">2553</a>
+<a href="#2554" id="2554">2554</a>
+<a href="#2555" id="2555">2555</a>
+<a href="#2556" id="2556">2556</a>
+<a href="#2557" id="2557">2557</a>
+<a href="#2558" id="2558">2558</a>
+<a href="#2559" id="2559">2559</a>
+<a href="#2560" id="2560">2560</a>
+<a href="#2561" id="2561">2561</a>
+<a href="#2562" id="2562">2562</a>
+<a href="#2563" id="2563">2563</a>
+<a href="#2564" id="2564">2564</a>
+<a href="#2565" id="2565">2565</a>
+<a href="#2566" id="2566">2566</a>
+<a href="#2567" id="2567">2567</a>
+<a href="#2568" id="2568">2568</a>
+<a href="#2569" id="2569">2569</a>
+<a href="#2570" id="2570">2570</a>
+<a href="#2571" id="2571">2571</a>
+<a href="#2572" id="2572">2572</a>
+<a href="#2573" id="2573">2573</a>
+<a href="#2574" id="2574">2574</a>
+<a href="#2575" id="2575">2575</a>
+<a href="#2576" id="2576">2576</a>
+<a href="#2577" id="2577">2577</a>
+<a href="#2578" id="2578">2578</a>
+<a href="#2579" id="2579">2579</a>
+<a href="#2580" id="2580">2580</a>
+<a href="#2581" id="2581">2581</a>
+<a href="#2582" id="2582">2582</a>
+<a href="#2583" id="2583">2583</a>
+<a href="#2584" id="2584">2584</a>
+<a href="#2585" id="2585">2585</a>
+<a href="#2586" id="2586">2586</a>
+<a href="#2587" id="2587">2587</a>
+<a href="#2588" id="2588">2588</a>
+<a href="#2589" id="2589">2589</a>
+<a href="#2590" id="2590">2590</a>
+<a href="#2591" id="2591">2591</a>
+<a href="#2592" id="2592">2592</a>
+<a href="#2593" id="2593">2593</a>
+<a href="#2594" id="2594">2594</a>
+<a href="#2595" id="2595">2595</a>
+<a href="#2596" id="2596">2596</a>
+<a href="#2597" id="2597">2597</a>
+<a href="#2598" id="2598">2598</a>
+<a href="#2599" id="2599">2599</a>
+<a href="#2600" id="2600">2600</a>
+<a href="#2601" id="2601">2601</a>
+<a href="#2602" id="2602">2602</a>
+<a href="#2603" id="2603">2603</a>
+<a href="#2604" id="2604">2604</a>
+<a href="#2605" id="2605">2605</a>
+<a href="#2606" id="2606">2606</a>
+<a href="#2607" id="2607">2607</a>
+<a href="#2608" id="2608">2608</a>
+<a href="#2609" id="2609">2609</a>
+<a href="#2610" id="2610">2610</a>
+<a href="#2611" id="2611">2611</a>
+<a href="#2612" id="2612">2612</a>
+<a href="#2613" id="2613">2613</a>
+<a href="#2614" id="2614">2614</a>
+<a href="#2615" id="2615">2615</a>
+<a href="#2616" id="2616">2616</a>
+<a href="#2617" id="2617">2617</a>
+<a href="#2618" id="2618">2618</a>
+<a href="#2619" id="2619">2619</a>
+<a href="#2620" id="2620">2620</a>
+<a href="#2621" id="2621">2621</a>
+<a href="#2622" id="2622">2622</a>
+<a href="#2623" id="2623">2623</a>
+<a href="#2624" id="2624">2624</a>
+<a href="#2625" id="2625">2625</a>
+<a href="#2626" id="2626">2626</a>
+<a href="#2627" id="2627">2627</a>
+<a href="#2628" id="2628">2628</a>
+<a href="#2629" id="2629">2629</a>
+<a href="#2630" id="2630">2630</a>
+<a href="#2631" id="2631">2631</a>
+<a href="#2632" id="2632">2632</a>
+<a href="#2633" id="2633">2633</a>
+<a href="#2634" id="2634">2634</a>
+<a href="#2635" id="2635">2635</a>
+<a href="#2636" id="2636">2636</a>
+<a href="#2637" id="2637">2637</a>
+<a href="#2638" id="2638">2638</a>
+<a href="#2639" id="2639">2639</a>
+<a href="#2640" id="2640">2640</a>
+<a href="#2641" id="2641">2641</a>
+<a href="#2642" id="2642">2642</a>
+<a href="#2643" id="2643">2643</a>
+<a href="#2644" id="2644">2644</a>
+<a href="#2645" id="2645">2645</a>
+<a href="#2646" id="2646">2646</a>
+<a href="#2647" id="2647">2647</a>
+<a href="#2648" id="2648">2648</a>
+<a href="#2649" id="2649">2649</a>
+<a href="#2650" id="2650">2650</a>
+<a href="#2651" id="2651">2651</a>
+<a href="#2652" id="2652">2652</a>
+<a href="#2653" id="2653">2653</a>
+<a href="#2654" id="2654">2654</a>
+<a href="#2655" id="2655">2655</a>
+<a href="#2656" id="2656">2656</a>
+<a href="#2657" id="2657">2657</a>
+<a href="#2658" id="2658">2658</a>
+<a href="#2659" id="2659">2659</a>
+<a href="#2660" id="2660">2660</a>
+<a href="#2661" id="2661">2661</a>
+<a href="#2662" id="2662">2662</a>
+<a href="#2663" id="2663">2663</a>
+<a href="#2664" id="2664">2664</a>
+<a href="#2665" id="2665">2665</a>
+<a href="#2666" id="2666">2666</a>
+<a href="#2667" id="2667">2667</a>
+<a href="#2668" id="2668">2668</a>
+<a href="#2669" id="2669">2669</a>
+<a href="#2670" id="2670">2670</a>
+<a href="#2671" id="2671">2671</a>
+<a href="#2672" id="2672">2672</a>
+<a href="#2673" id="2673">2673</a>
+<a href="#2674" id="2674">2674</a>
+<a href="#2675" id="2675">2675</a>
+<a href="#2676" id="2676">2676</a>
+<a href="#2677" id="2677">2677</a>
+<a href="#2678" id="2678">2678</a>
+<a href="#2679" id="2679">2679</a>
+<a href="#2680" id="2680">2680</a>
+<a href="#2681" id="2681">2681</a>
+<a href="#2682" id="2682">2682</a>
+<a href="#2683" id="2683">2683</a>
+<a href="#2684" id="2684">2684</a>
+<a href="#2685" id="2685">2685</a>
+<a href="#2686" id="2686">2686</a>
+<a href="#2687" id="2687">2687</a>
+<a href="#2688" id="2688">2688</a>
+<a href="#2689" id="2689">2689</a>
+<a href="#2690" id="2690">2690</a>
+<a href="#2691" id="2691">2691</a>
+<a href="#2692" id="2692">2692</a>
+<a href="#2693" id="2693">2693</a>
+<a href="#2694" id="2694">2694</a>
+<a href="#2695" id="2695">2695</a>
+<a href="#2696" id="2696">2696</a>
+<a href="#2697" id="2697">2697</a>
+<a href="#2698" id="2698">2698</a>
+<a href="#2699" id="2699">2699</a>
+<a href="#2700" id="2700">2700</a>
+<a href="#2701" id="2701">2701</a>
+<a href="#2702" id="2702">2702</a>
+<a href="#2703" id="2703">2703</a>
+<a href="#2704" id="2704">2704</a>
+<a href="#2705" id="2705">2705</a>
+<a href="#2706" id="2706">2706</a>
+<a href="#2707" id="2707">2707</a>
+<a href="#2708" id="2708">2708</a>
+<a href="#2709" id="2709">2709</a>
+<a href="#2710" id="2710">2710</a>
+<a href="#2711" id="2711">2711</a>
+<a href="#2712" id="2712">2712</a>
+<a href="#2713" id="2713">2713</a>
+<a href="#2714" id="2714">2714</a>
+<a href="#2715" id="2715">2715</a>
+<a href="#2716" id="2716">2716</a>
+<a href="#2717" id="2717">2717</a>
+<a href="#2718" id="2718">2718</a>
+<a href="#2719" id="2719">2719</a>
+<a href="#2720" id="2720">2720</a>
+<a href="#2721" id="2721">2721</a>
+<a href="#2722" id="2722">2722</a>
+<a href="#2723" id="2723">2723</a>
+<a href="#2724" id="2724">2724</a>
+<a href="#2725" id="2725">2725</a>
+<a href="#2726" id="2726">2726</a>
+<a href="#2727" id="2727">2727</a>
+<a href="#2728" id="2728">2728</a>
+<a href="#2729" id="2729">2729</a>
+<a href="#2730" id="2730">2730</a>
+<a href="#2731" id="2731">2731</a>
+<a href="#2732" id="2732">2732</a>
+<a href="#2733" id="2733">2733</a>
+<a href="#2734" id="2734">2734</a>
+<a href="#2735" id="2735">2735</a>
+<a href="#2736" id="2736">2736</a>
+<a href="#2737" id="2737">2737</a>
+<a href="#2738" id="2738">2738</a>
+<a href="#2739" id="2739">2739</a>
+<a href="#2740" id="2740">2740</a>
+<a href="#2741" id="2741">2741</a>
+<a href="#2742" id="2742">2742</a>
+<a href="#2743" id="2743">2743</a>
+<a href="#2744" id="2744">2744</a>
+<a href="#2745" id="2745">2745</a>
+<a href="#2746" id="2746">2746</a>
+<a href="#2747" id="2747">2747</a>
+<a href="#2748" id="2748">2748</a>
+<a href="#2749" id="2749">2749</a>
+<a href="#2750" id="2750">2750</a>
+<a href="#2751" id="2751">2751</a>
+<a href="#2752" id="2752">2752</a>
+<a href="#2753" id="2753">2753</a>
+<a href="#2754" id="2754">2754</a>
+<a href="#2755" id="2755">2755</a>
+<a href="#2756" id="2756">2756</a>
+<a href="#2757" id="2757">2757</a>
+<a href="#2758" id="2758">2758</a>
+<a href="#2759" id="2759">2759</a>
+<a href="#2760" id="2760">2760</a>
+<a href="#2761" id="2761">2761</a>
+<a href="#2762" id="2762">2762</a>
+<a href="#2763" id="2763">2763</a>
+<a href="#2764" id="2764">2764</a>
+<a href="#2765" id="2765">2765</a>
+<a href="#2766" id="2766">2766</a>
+<a href="#2767" id="2767">2767</a>
+<a href="#2768" id="2768">2768</a>
+<a href="#2769" id="2769">2769</a>
+<a href="#2770" id="2770">2770</a>
+<a href="#2771" id="2771">2771</a>
+<a href="#2772" id="2772">2772</a>
+<a href="#2773" id="2773">2773</a>
+<a href="#2774" id="2774">2774</a>
+<a href="#2775" id="2775">2775</a>
+<a href="#2776" id="2776">2776</a>
+<a href="#2777" id="2777">2777</a>
+<a href="#2778" id="2778">2778</a>
+<a href="#2779" id="2779">2779</a>
+<a href="#2780" id="2780">2780</a>
+<a href="#2781" id="2781">2781</a>
+<a href="#2782" id="2782">2782</a>
+<a href="#2783" id="2783">2783</a>
+<a href="#2784" id="2784">2784</a>
+<a href="#2785" id="2785">2785</a>
+<a href="#2786" id="2786">2786</a>
+<a href="#2787" id="2787">2787</a>
+<a href="#2788" id="2788">2788</a>
+<a href="#2789" id="2789">2789</a>
+<a href="#2790" id="2790">2790</a>
+<a href="#2791" id="2791">2791</a>
+<a href="#2792" id="2792">2792</a>
+<a href="#2793" id="2793">2793</a>
+<a href="#2794" id="2794">2794</a>
+<a href="#2795" id="2795">2795</a>
+<a href="#2796" id="2796">2796</a>
+<a href="#2797" id="2797">2797</a>
+<a href="#2798" id="2798">2798</a>
+<a href="#2799" id="2799">2799</a>
+<a href="#2800" id="2800">2800</a>
+<a href="#2801" id="2801">2801</a>
+<a href="#2802" id="2802">2802</a>
+<a href="#2803" id="2803">2803</a>
+<a href="#2804" id="2804">2804</a>
+<a href="#2805" id="2805">2805</a>
+<a href="#2806" id="2806">2806</a>
+<a href="#2807" id="2807">2807</a>
+<a href="#2808" id="2808">2808</a>
+<a href="#2809" id="2809">2809</a>
+<a href="#2810" id="2810">2810</a>
+<a href="#2811" id="2811">2811</a>
+<a href="#2812" id="2812">2812</a>
+<a href="#2813" id="2813">2813</a>
+<a href="#2814" id="2814">2814</a>
+<a href="#2815" id="2815">2815</a>
+<a href="#2816" id="2816">2816</a>
+<a href="#2817" id="2817">2817</a>
+<a href="#2818" id="2818">2818</a>
+<a href="#2819" id="2819">2819</a>
+<a href="#2820" id="2820">2820</a>
+<a href="#2821" id="2821">2821</a>
+<a href="#2822" id="2822">2822</a>
+<a href="#2823" id="2823">2823</a>
+<a href="#2824" id="2824">2824</a>
+<a href="#2825" id="2825">2825</a>
+<a href="#2826" id="2826">2826</a>
+<a href="#2827" id="2827">2827</a>
+<a href="#2828" id="2828">2828</a>
+<a href="#2829" id="2829">2829</a>
+<a href="#2830" id="2830">2830</a>
+<a href="#2831" id="2831">2831</a>
+<a href="#2832" id="2832">2832</a>
+<a href="#2833" id="2833">2833</a>
+<a href="#2834" id="2834">2834</a>
+<a href="#2835" id="2835">2835</a>
+<a href="#2836" id="2836">2836</a>
+<a href="#2837" id="2837">2837</a>
+<a href="#2838" id="2838">2838</a>
+<a href="#2839" id="2839">2839</a>
+<a href="#2840" id="2840">2840</a>
+<a href="#2841" id="2841">2841</a>
+<a href="#2842" id="2842">2842</a>
+<a href="#2843" id="2843">2843</a>
+<a href="#2844" id="2844">2844</a>
+<a href="#2845" id="2845">2845</a>
+<a href="#2846" id="2846">2846</a>
+<a href="#2847" id="2847">2847</a>
+<a href="#2848" id="2848">2848</a>
+<a href="#2849" id="2849">2849</a>
+<a href="#2850" id="2850">2850</a>
+<a href="#2851" id="2851">2851</a>
+<a href="#2852" id="2852">2852</a>
+<a href="#2853" id="2853">2853</a>
+<a href="#2854" id="2854">2854</a>
+<a href="#2855" id="2855">2855</a>
+<a href="#2856" id="2856">2856</a>
+<a href="#2857" id="2857">2857</a>
+<a href="#2858" id="2858">2858</a>
+<a href="#2859" id="2859">2859</a>
+<a href="#2860" id="2860">2860</a>
+<a href="#2861" id="2861">2861</a>
+<a href="#2862" id="2862">2862</a>
+<a href="#2863" id="2863">2863</a>
+<a href="#2864" id="2864">2864</a>
+<a href="#2865" id="2865">2865</a>
+<a href="#2866" id="2866">2866</a>
+<a href="#2867" id="2867">2867</a>
+<a href="#2868" id="2868">2868</a>
+<a href="#2869" id="2869">2869</a>
+<a href="#2870" id="2870">2870</a>
+<a href="#2871" id="2871">2871</a>
+<a href="#2872" id="2872">2872</a>
+<a href="#2873" id="2873">2873</a>
+<a href="#2874" id="2874">2874</a>
+<a href="#2875" id="2875">2875</a>
+<a href="#2876" id="2876">2876</a>
+<a href="#2877" id="2877">2877</a>
+<a href="#2878" id="2878">2878</a>
+<a href="#2879" id="2879">2879</a>
+<a href="#2880" id="2880">2880</a>
+<a href="#2881" id="2881">2881</a>
+<a href="#2882" id="2882">2882</a>
+<a href="#2883" id="2883">2883</a>
+<a href="#2884" id="2884">2884</a>
+<a href="#2885" id="2885">2885</a>
+<a href="#2886" id="2886">2886</a>
+<a href="#2887" id="2887">2887</a>
+<a href="#2888" id="2888">2888</a>
+<a href="#2889" id="2889">2889</a>
+<a href="#2890" id="2890">2890</a>
+<a href="#2891" id="2891">2891</a>
+<a href="#2892" id="2892">2892</a>
+<a href="#2893" id="2893">2893</a>
+<a href="#2894" id="2894">2894</a>
+<a href="#2895" id="2895">2895</a>
+<a href="#2896" id="2896">2896</a>
+<a href="#2897" id="2897">2897</a>
+<a href="#2898" id="2898">2898</a>
+<a href="#2899" id="2899">2899</a>
+<a href="#2900" id="2900">2900</a>
+<a href="#2901" id="2901">2901</a>
+<a href="#2902" id="2902">2902</a>
+<a href="#2903" id="2903">2903</a>
+<a href="#2904" id="2904">2904</a>
+<a href="#2905" id="2905">2905</a>
+<a href="#2906" id="2906">2906</a>
+<a href="#2907" id="2907">2907</a>
+<a href="#2908" id="2908">2908</a>
+<a href="#2909" id="2909">2909</a>
+<a href="#2910" id="2910">2910</a>
+<a href="#2911" id="2911">2911</a>
+<a href="#2912" id="2912">2912</a>
+<a href="#2913" id="2913">2913</a>
+<a href="#2914" id="2914">2914</a>
+<a href="#2915" id="2915">2915</a>
+<a href="#2916" id="2916">2916</a>
+<a href="#2917" id="2917">2917</a>
+<a href="#2918" id="2918">2918</a>
+<a href="#2919" id="2919">2919</a>
+<a href="#2920" id="2920">2920</a>
+<a href="#2921" id="2921">2921</a>
+<a href="#2922" id="2922">2922</a>
+<a href="#2923" id="2923">2923</a>
+<a href="#2924" id="2924">2924</a>
+<a href="#2925" id="2925">2925</a>
+<a href="#2926" id="2926">2926</a>
+<a href="#2927" id="2927">2927</a>
+<a href="#2928" id="2928">2928</a>
+<a href="#2929" id="2929">2929</a>
+<a href="#2930" id="2930">2930</a>
+<a href="#2931" id="2931">2931</a>
+<a href="#2932" id="2932">2932</a>
+<a href="#2933" id="2933">2933</a>
+<a href="#2934" id="2934">2934</a>
+<a href="#2935" id="2935">2935</a>
+<a href="#2936" id="2936">2936</a>
+<a href="#2937" id="2937">2937</a>
+<a href="#2938" id="2938">2938</a>
+<a href="#2939" id="2939">2939</a>
+<a href="#2940" id="2940">2940</a>
+<a href="#2941" id="2941">2941</a>
+<a href="#2942" id="2942">2942</a>
+<a href="#2943" id="2943">2943</a>
+<a href="#2944" id="2944">2944</a>
+<a href="#2945" id="2945">2945</a>
+<a href="#2946" id="2946">2946</a>
+<a href="#2947" id="2947">2947</a>
+<a href="#2948" id="2948">2948</a>
+<a href="#2949" id="2949">2949</a>
+<a href="#2950" id="2950">2950</a>
+<a href="#2951" id="2951">2951</a>
+<a href="#2952" id="2952">2952</a>
+<a href="#2953" id="2953">2953</a>
+<a href="#2954" id="2954">2954</a>
+<a href="#2955" id="2955">2955</a>
+<a href="#2956" id="2956">2956</a>
+<a href="#2957" id="2957">2957</a>
+<a href="#2958" id="2958">2958</a>
+<a href="#2959" id="2959">2959</a>
+<a href="#2960" id="2960">2960</a>
+<a href="#2961" id="2961">2961</a>
+<a href="#2962" id="2962">2962</a>
+<a href="#2963" id="2963">2963</a>
+<a href="#2964" id="2964">2964</a>
+<a href="#2965" id="2965">2965</a>
+<a href="#2966" id="2966">2966</a>
+<a href="#2967" id="2967">2967</a>
+<a href="#2968" id="2968">2968</a>
+<a href="#2969" id="2969">2969</a>
+<a href="#2970" id="2970">2970</a>
+<a href="#2971" id="2971">2971</a>
+<a href="#2972" id="2972">2972</a>
+<a href="#2973" id="2973">2973</a>
+<a href="#2974" id="2974">2974</a>
+<a href="#2975" id="2975">2975</a>
+<a href="#2976" id="2976">2976</a>
+<a href="#2977" id="2977">2977</a>
+<a href="#2978" id="2978">2978</a>
+<a href="#2979" id="2979">2979</a>
+<a href="#2980" id="2980">2980</a>
+<a href="#2981" id="2981">2981</a>
+<a href="#2982" id="2982">2982</a>
+<a href="#2983" id="2983">2983</a>
+<a href="#2984" id="2984">2984</a>
+<a href="#2985" id="2985">2985</a>
+<a href="#2986" id="2986">2986</a>
+<a href="#2987" id="2987">2987</a>
+<a href="#2988" id="2988">2988</a>
+<a href="#2989" id="2989">2989</a>
+<a href="#2990" id="2990">2990</a>
+<a href="#2991" id="2991">2991</a>
+<a href="#2992" id="2992">2992</a>
+<a href="#2993" id="2993">2993</a>
+<a href="#2994" id="2994">2994</a>
+<a href="#2995" id="2995">2995</a>
+<a href="#2996" id="2996">2996</a>
+<a href="#2997" id="2997">2997</a>
+<a href="#2998" id="2998">2998</a>
+<a href="#2999" id="2999">2999</a>
+<a href="#3000" id="3000">3000</a>
+<a href="#3001" id="3001">3001</a>
+<a href="#3002" id="3002">3002</a>
+<a href="#3003" id="3003">3003</a>
+<a href="#3004" id="3004">3004</a>
+<a href="#3005" id="3005">3005</a>
+<a href="#3006" id="3006">3006</a>
+<a href="#3007" id="3007">3007</a>
+<a href="#3008" id="3008">3008</a>
+<a href="#3009" id="3009">3009</a>
+<a href="#3010" id="3010">3010</a>
+<a href="#3011" id="3011">3011</a>
+<a href="#3012" id="3012">3012</a>
+<a href="#3013" id="3013">3013</a>
+<a href="#3014" id="3014">3014</a>
+<a href="#3015" id="3015">3015</a>
+<a href="#3016" id="3016">3016</a>
+<a href="#3017" id="3017">3017</a>
+<a href="#3018" id="3018">3018</a>
+<a href="#3019" id="3019">3019</a>
+<a href="#3020" id="3020">3020</a>
+<a href="#3021" id="3021">3021</a>
+<a href="#3022" id="3022">3022</a>
+<a href="#3023" id="3023">3023</a>
+<a href="#3024" id="3024">3024</a>
+<a href="#3025" id="3025">3025</a>
+<a href="#3026" id="3026">3026</a>
+<a href="#3027" id="3027">3027</a>
+<a href="#3028" id="3028">3028</a>
+<a href="#3029" id="3029">3029</a>
+<a href="#3030" id="3030">3030</a>
+<a href="#3031" id="3031">3031</a>
+<a href="#3032" id="3032">3032</a>
+<a href="#3033" id="3033">3033</a>
+<a href="#3034" id="3034">3034</a>
+<a href="#3035" id="3035">3035</a>
+<a href="#3036" id="3036">3036</a>
+<a href="#3037" id="3037">3037</a>
+<a href="#3038" id="3038">3038</a>
+<a href="#3039" id="3039">3039</a>
+<a href="#3040" id="3040">3040</a>
+<a href="#3041" id="3041">3041</a>
+<a href="#3042" id="3042">3042</a>
+<a href="#3043" id="3043">3043</a>
+<a href="#3044" id="3044">3044</a>
+<a href="#3045" id="3045">3045</a>
+<a href="#3046" id="3046">3046</a>
+<a href="#3047" id="3047">3047</a>
+<a href="#3048" id="3048">3048</a>
+<a href="#3049" id="3049">3049</a>
+<a href="#3050" id="3050">3050</a>
+<a href="#3051" id="3051">3051</a>
+<a href="#3052" id="3052">3052</a>
+<a href="#3053" id="3053">3053</a>
+<a href="#3054" id="3054">3054</a>
+<a href="#3055" id="3055">3055</a>
+<a href="#3056" id="3056">3056</a>
+<a href="#3057" id="3057">3057</a>
+<a href="#3058" id="3058">3058</a>
+<a href="#3059" id="3059">3059</a>
+<a href="#3060" id="3060">3060</a>
+<a href="#3061" id="3061">3061</a>
+<a href="#3062" id="3062">3062</a>
+<a href="#3063" id="3063">3063</a>
+<a href="#3064" id="3064">3064</a>
+<a href="#3065" id="3065">3065</a>
+<a href="#3066" id="3066">3066</a>
+<a href="#3067" id="3067">3067</a>
+<a href="#3068" id="3068">3068</a>
+<a href="#3069" id="3069">3069</a>
+<a href="#3070" id="3070">3070</a>
+<a href="#3071" id="3071">3071</a>
+<a href="#3072" id="3072">3072</a>
+<a href="#3073" id="3073">3073</a>
+<a href="#3074" id="3074">3074</a>
+<a href="#3075" id="3075">3075</a>
+<a href="#3076" id="3076">3076</a>
+<a href="#3077" id="3077">3077</a>
+<a href="#3078" id="3078">3078</a>
+<a href="#3079" id="3079">3079</a>
+<a href="#3080" id="3080">3080</a>
+<a href="#3081" id="3081">3081</a>
+<a href="#3082" id="3082">3082</a>
+<a href="#3083" id="3083">3083</a>
+<a href="#3084" id="3084">3084</a>
+<a href="#3085" id="3085">3085</a>
+<a href="#3086" id="3086">3086</a>
+<a href="#3087" id="3087">3087</a>
+<a href="#3088" id="3088">3088</a>
+<a href="#3089" id="3089">3089</a>
+<a href="#3090" id="3090">3090</a>
+<a href="#3091" id="3091">3091</a>
+<a href="#3092" id="3092">3092</a>
+<a href="#3093" id="3093">3093</a>
+<a href="#3094" id="3094">3094</a>
+<a href="#3095" id="3095">3095</a>
+<a href="#3096" id="3096">3096</a>
+<a href="#3097" id="3097">3097</a>
+<a href="#3098" id="3098">3098</a>
+<a href="#3099" id="3099">3099</a>
+<a href="#3100" id="3100">3100</a>
+<a href="#3101" id="3101">3101</a>
+<a href="#3102" id="3102">3102</a>
+<a href="#3103" id="3103">3103</a>
+<a href="#3104" id="3104">3104</a>
+<a href="#3105" id="3105">3105</a>
+<a href="#3106" id="3106">3106</a>
+<a href="#3107" id="3107">3107</a>
+<a href="#3108" id="3108">3108</a>
+<a href="#3109" id="3109">3109</a>
+<a href="#3110" id="3110">3110</a>
+<a href="#3111" id="3111">3111</a>
+<a href="#3112" id="3112">3112</a>
+<a href="#3113" id="3113">3113</a>
+<a href="#3114" id="3114">3114</a>
+<a href="#3115" id="3115">3115</a>
+<a href="#3116" id="3116">3116</a>
+<a href="#3117" id="3117">3117</a>
+<a href="#3118" id="3118">3118</a>
+<a href="#3119" id="3119">3119</a>
+<a href="#3120" id="3120">3120</a>
+<a href="#3121" id="3121">3121</a>
+<a href="#3122" id="3122">3122</a>
+<a href="#3123" id="3123">3123</a>
+<a href="#3124" id="3124">3124</a>
+<a href="#3125" id="3125">3125</a>
+<a href="#3126" id="3126">3126</a>
+<a href="#3127" id="3127">3127</a>
+<a href="#3128" id="3128">3128</a>
+<a href="#3129" id="3129">3129</a>
+<a href="#3130" id="3130">3130</a>
+<a href="#3131" id="3131">3131</a>
+<a href="#3132" id="3132">3132</a>
+<a href="#3133" id="3133">3133</a>
+<a href="#3134" id="3134">3134</a>
+<a href="#3135" id="3135">3135</a>
+<a href="#3136" id="3136">3136</a>
+<a href="#3137" id="3137">3137</a>
+<a href="#3138" id="3138">3138</a>
+<a href="#3139" id="3139">3139</a>
+<a href="#3140" id="3140">3140</a>
+<a href="#3141" id="3141">3141</a>
+<a href="#3142" id="3142">3142</a>
+<a href="#3143" id="3143">3143</a>
+<a href="#3144" id="3144">3144</a>
+<a href="#3145" id="3145">3145</a>
+<a href="#3146" id="3146">3146</a>
+<a href="#3147" id="3147">3147</a>
+<a href="#3148" id="3148">3148</a>
+<a href="#3149" id="3149">3149</a>
+<a href="#3150" id="3150">3150</a>
+<a href="#3151" id="3151">3151</a>
+<a href="#3152" id="3152">3152</a>
+<a href="#3153" id="3153">3153</a>
+<a href="#3154" id="3154">3154</a>
+<a href="#3155" id="3155">3155</a>
+<a href="#3156" id="3156">3156</a>
+<a href="#3157" id="3157">3157</a>
+<a href="#3158" id="3158">3158</a>
+<a href="#3159" id="3159">3159</a>
+<a href="#3160" id="3160">3160</a>
+<a href="#3161" id="3161">3161</a>
+<a href="#3162" id="3162">3162</a>
+<a href="#3163" id="3163">3163</a>
+<a href="#3164" id="3164">3164</a>
+<a href="#3165" id="3165">3165</a>
+<a href="#3166" id="3166">3166</a>
+<a href="#3167" id="3167">3167</a>
+<a href="#3168" id="3168">3168</a>
+<a href="#3169" id="3169">3169</a>
+<a href="#3170" id="3170">3170</a>
+<a href="#3171" id="3171">3171</a>
+<a href="#3172" id="3172">3172</a>
+<a href="#3173" id="3173">3173</a>
+<a href="#3174" id="3174">3174</a>
+<a href="#3175" id="3175">3175</a>
+<a href="#3176" id="3176">3176</a>
+<a href="#3177" id="3177">3177</a>
+<a href="#3178" id="3178">3178</a>
+<a href="#3179" id="3179">3179</a>
+<a href="#3180" id="3180">3180</a>
+<a href="#3181" id="3181">3181</a>
+<a href="#3182" id="3182">3182</a>
+<a href="#3183" id="3183">3183</a>
+<a href="#3184" id="3184">3184</a>
+<a href="#3185" id="3185">3185</a>
+<a href="#3186" id="3186">3186</a>
+<a href="#3187" id="3187">3187</a>
+<a href="#3188" id="3188">3188</a>
+<a href="#3189" id="3189">3189</a>
+<a href="#3190" id="3190">3190</a>
+<a href="#3191" id="3191">3191</a>
+<a href="#3192" id="3192">3192</a>
+<a href="#3193" id="3193">3193</a>
+<a href="#3194" id="3194">3194</a>
+<a href="#3195" id="3195">3195</a>
+<a href="#3196" id="3196">3196</a>
+<a href="#3197" id="3197">3197</a>
+<a href="#3198" id="3198">3198</a>
+<a href="#3199" id="3199">3199</a>
+<a href="#3200" id="3200">3200</a>
+<a href="#3201" id="3201">3201</a>
+<a href="#3202" id="3202">3202</a>
+<a href="#3203" id="3203">3203</a>
+<a href="#3204" id="3204">3204</a>
+<a href="#3205" id="3205">3205</a>
+<a href="#3206" id="3206">3206</a>
+<a href="#3207" id="3207">3207</a>
+<a href="#3208" id="3208">3208</a>
+<a href="#3209" id="3209">3209</a>
+<a href="#3210" id="3210">3210</a>
+<a href="#3211" id="3211">3211</a>
+<a href="#3212" id="3212">3212</a>
+<a href="#3213" id="3213">3213</a>
+<a href="#3214" id="3214">3214</a>
+<a href="#3215" id="3215">3215</a>
+<a href="#3216" id="3216">3216</a>
+<a href="#3217" id="3217">3217</a>
+<a href="#3218" id="3218">3218</a>
+<a href="#3219" id="3219">3219</a>
+<a href="#3220" id="3220">3220</a>
+<a href="#3221" id="3221">3221</a>
+<a href="#3222" id="3222">3222</a>
+<a href="#3223" id="3223">3223</a>
+<a href="#3224" id="3224">3224</a>
+<a href="#3225" id="3225">3225</a>
+<a href="#3226" id="3226">3226</a>
+<a href="#3227" id="3227">3227</a>
+<a href="#3228" id="3228">3228</a>
+<a href="#3229" id="3229">3229</a>
+<a href="#3230" id="3230">3230</a>
+<a href="#3231" id="3231">3231</a>
+<a href="#3232" id="3232">3232</a>
+<a href="#3233" id="3233">3233</a>
+<a href="#3234" id="3234">3234</a>
+<a href="#3235" id="3235">3235</a>
+<a href="#3236" id="3236">3236</a>
+<a href="#3237" id="3237">3237</a>
+<a href="#3238" id="3238">3238</a>
+<a href="#3239" id="3239">3239</a>
+<a href="#3240" id="3240">3240</a>
+<a href="#3241" id="3241">3241</a>
+<a href="#3242" id="3242">3242</a>
+<a href="#3243" id="3243">3243</a>
+<a href="#3244" id="3244">3244</a>
+<a href="#3245" id="3245">3245</a>
+<a href="#3246" id="3246">3246</a>
+<a href="#3247" id="3247">3247</a>
+<a href="#3248" id="3248">3248</a>
+<a href="#3249" id="3249">3249</a>
+<a href="#3250" id="3250">3250</a>
+<a href="#3251" id="3251">3251</a>
+<a href="#3252" id="3252">3252</a>
+<a href="#3253" id="3253">3253</a>
+<a href="#3254" id="3254">3254</a>
+<a href="#3255" id="3255">3255</a>
+<a href="#3256" id="3256">3256</a>
+<a href="#3257" id="3257">3257</a>
+<a href="#3258" id="3258">3258</a>
+<a href="#3259" id="3259">3259</a>
+<a href="#3260" id="3260">3260</a>
+<a href="#3261" id="3261">3261</a>
+<a href="#3262" id="3262">3262</a>
+<a href="#3263" id="3263">3263</a>
+<a href="#3264" id="3264">3264</a>
+<a href="#3265" id="3265">3265</a>
+<a href="#3266" id="3266">3266</a>
+<a href="#3267" id="3267">3267</a>
+<a href="#3268" id="3268">3268</a>
+<a href="#3269" id="3269">3269</a>
+<a href="#3270" id="3270">3270</a>
+<a href="#3271" id="3271">3271</a>
+<a href="#3272" id="3272">3272</a>
+<a href="#3273" id="3273">3273</a>
+<a href="#3274" id="3274">3274</a>
+<a href="#3275" id="3275">3275</a>
+<a href="#3276" id="3276">3276</a>
+<a href="#3277" id="3277">3277</a>
+<a href="#3278" id="3278">3278</a>
+<a href="#3279" id="3279">3279</a>
+<a href="#3280" id="3280">3280</a>
+<a href="#3281" id="3281">3281</a>
+<a href="#3282" id="3282">3282</a>
+<a href="#3283" id="3283">3283</a>
+<a href="#3284" id="3284">3284</a>
+<a href="#3285" id="3285">3285</a>
+<a href="#3286" id="3286">3286</a>
+<a href="#3287" id="3287">3287</a>
+<a href="#3288" id="3288">3288</a>
+<a href="#3289" id="3289">3289</a>
+<a href="#3290" id="3290">3290</a>
+<a href="#3291" id="3291">3291</a>
+<a href="#3292" id="3292">3292</a>
+<a href="#3293" id="3293">3293</a>
+<a href="#3294" id="3294">3294</a>
+<a href="#3295" id="3295">3295</a>
+<a href="#3296" id="3296">3296</a>
+<a href="#3297" id="3297">3297</a>
+<a href="#3298" id="3298">3298</a>
+<a href="#3299" id="3299">3299</a>
+<a href="#3300" id="3300">3300</a>
+<a href="#3301" id="3301">3301</a>
+<a href="#3302" id="3302">3302</a>
+<a href="#3303" id="3303">3303</a>
+<a href="#3304" id="3304">3304</a>
+<a href="#3305" id="3305">3305</a>
+<a href="#3306" id="3306">3306</a>
+<a href="#3307" id="3307">3307</a>
+<a href="#3308" id="3308">3308</a>
+<a href="#3309" id="3309">3309</a>
+<a href="#3310" id="3310">3310</a>
+<a href="#3311" id="3311">3311</a>
+<a href="#3312" id="3312">3312</a>
+<a href="#3313" id="3313">3313</a>
+<a href="#3314" id="3314">3314</a>
+<a href="#3315" id="3315">3315</a>
+<a href="#3316" id="3316">3316</a>
+<a href="#3317" id="3317">3317</a>
+<a href="#3318" id="3318">3318</a>
+<a href="#3319" id="3319">3319</a>
+<a href="#3320" id="3320">3320</a>
+<a href="#3321" id="3321">3321</a>
+<a href="#3322" id="3322">3322</a>
+<a href="#3323" id="3323">3323</a>
+<a href="#3324" id="3324">3324</a>
+<a href="#3325" id="3325">3325</a>
+<a href="#3326" id="3326">3326</a>
+<a href="#3327" id="3327">3327</a>
+<a href="#3328" id="3328">3328</a>
+<a href="#3329" id="3329">3329</a>
+<a href="#3330" id="3330">3330</a>
+<a href="#3331" id="3331">3331</a>
+<a href="#3332" id="3332">3332</a>
+<a href="#3333" id="3333">3333</a>
+<a href="#3334" id="3334">3334</a>
+<a href="#3335" id="3335">3335</a>
+<a href="#3336" id="3336">3336</a>
+<a href="#3337" id="3337">3337</a>
+<a href="#3338" id="3338">3338</a>
+<a href="#3339" id="3339">3339</a>
+<a href="#3340" id="3340">3340</a>
+<a href="#3341" id="3341">3341</a>
+<a href="#3342" id="3342">3342</a>
+<a href="#3343" id="3343">3343</a>
+<a href="#3344" id="3344">3344</a>
+<a href="#3345" id="3345">3345</a>
+<a href="#3346" id="3346">3346</a>
+<a href="#3347" id="3347">3347</a>
+<a href="#3348" id="3348">3348</a>
+<a href="#3349" id="3349">3349</a>
+<a href="#3350" id="3350">3350</a>
+<a href="#3351" id="3351">3351</a>
+<a href="#3352" id="3352">3352</a>
+<a href="#3353" id="3353">3353</a>
+<a href="#3354" id="3354">3354</a>
+<a href="#3355" id="3355">3355</a>
+<a href="#3356" id="3356">3356</a>
+<a href="#3357" id="3357">3357</a>
+<a href="#3358" id="3358">3358</a>
+<a href="#3359" id="3359">3359</a>
+<a href="#3360" id="3360">3360</a>
+<a href="#3361" id="3361">3361</a>
+<a href="#3362" id="3362">3362</a>
+<a href="#3363" id="3363">3363</a>
+<a href="#3364" id="3364">3364</a>
+<a href="#3365" id="3365">3365</a>
+<a href="#3366" id="3366">3366</a>
+<a href="#3367" id="3367">3367</a>
+<a href="#3368" id="3368">3368</a>
+<a href="#3369" id="3369">3369</a>
+<a href="#3370" id="3370">3370</a>
+<a href="#3371" id="3371">3371</a>
+<a href="#3372" id="3372">3372</a>
+<a href="#3373" id="3373">3373</a>
+<a href="#3374" id="3374">3374</a>
+<a href="#3375" id="3375">3375</a>
+<a href="#3376" id="3376">3376</a>
+<a href="#3377" id="3377">3377</a>
+<a href="#3378" id="3378">3378</a>
+<a href="#3379" id="3379">3379</a>
+<a href="#3380" id="3380">3380</a>
+<a href="#3381" id="3381">3381</a>
+<a href="#3382" id="3382">3382</a>
+<a href="#3383" id="3383">3383</a>
+<a href="#3384" id="3384">3384</a>
+<a href="#3385" id="3385">3385</a>
+<a href="#3386" id="3386">3386</a>
+<a href="#3387" id="3387">3387</a>
+<a href="#3388" id="3388">3388</a>
+<a href="#3389" id="3389">3389</a>
+<a href="#3390" id="3390">3390</a>
+<a href="#3391" id="3391">3391</a>
+<a href="#3392" id="3392">3392</a>
+<a href="#3393" id="3393">3393</a>
+<a href="#3394" id="3394">3394</a>
+<a href="#3395" id="3395">3395</a>
+<a href="#3396" id="3396">3396</a>
+<a href="#3397" id="3397">3397</a>
+<a href="#3398" id="3398">3398</a>
+<a href="#3399" id="3399">3399</a>
+<a href="#3400" id="3400">3400</a>
+<a href="#3401" id="3401">3401</a>
+<a href="#3402" id="3402">3402</a>
+<a href="#3403" id="3403">3403</a>
+<a href="#3404" id="3404">3404</a>
+<a href="#3405" id="3405">3405</a>
+<a href="#3406" id="3406">3406</a>
+<a href="#3407" id="3407">3407</a>
+<a href="#3408" id="3408">3408</a>
+<a href="#3409" id="3409">3409</a>
+<a href="#3410" id="3410">3410</a>
+<a href="#3411" id="3411">3411</a>
+<a href="#3412" id="3412">3412</a>
+<a href="#3413" id="3413">3413</a>
+<a href="#3414" id="3414">3414</a>
+<a href="#3415" id="3415">3415</a>
+<a href="#3416" id="3416">3416</a>
+<a href="#3417" id="3417">3417</a>
+<a href="#3418" id="3418">3418</a>
+<a href="#3419" id="3419">3419</a>
+<a href="#3420" id="3420">3420</a>
+<a href="#3421" id="3421">3421</a>
+<a href="#3422" id="3422">3422</a>
+<a href="#3423" id="3423">3423</a>
+<a href="#3424" id="3424">3424</a>
+<a href="#3425" id="3425">3425</a>
+<a href="#3426" id="3426">3426</a>
+<a href="#3427" id="3427">3427</a>
+<a href="#3428" id="3428">3428</a>
+<a href="#3429" id="3429">3429</a>
+<a href="#3430" id="3430">3430</a>
+<a href="#3431" id="3431">3431</a>
+<a href="#3432" id="3432">3432</a>
+<a href="#3433" id="3433">3433</a>
+<a href="#3434" id="3434">3434</a>
+<a href="#3435" id="3435">3435</a>
+<a href="#3436" id="3436">3436</a>
+<a href="#3437" id="3437">3437</a>
+<a href="#3438" id="3438">3438</a>
+<a href="#3439" id="3439">3439</a>
+<a href="#3440" id="3440">3440</a>
+<a href="#3441" id="3441">3441</a>
+<a href="#3442" id="3442">3442</a>
+<a href="#3443" id="3443">3443</a>
+<a href="#3444" id="3444">3444</a>
+<a href="#3445" id="3445">3445</a>
+<a href="#3446" id="3446">3446</a>
+<a href="#3447" id="3447">3447</a>
+<a href="#3448" id="3448">3448</a>
+<a href="#3449" id="3449">3449</a>
+<a href="#3450" id="3450">3450</a>
+<a href="#3451" id="3451">3451</a>
+<a href="#3452" id="3452">3452</a>
+<a href="#3453" id="3453">3453</a>
+<a href="#3454" id="3454">3454</a>
+<a href="#3455" id="3455">3455</a>
+<a href="#3456" id="3456">3456</a>
+<a href="#3457" id="3457">3457</a>
+<a href="#3458" id="3458">3458</a>
+<a href="#3459" id="3459">3459</a>
+<a href="#3460" id="3460">3460</a>
+<a href="#3461" id="3461">3461</a>
+<a href="#3462" id="3462">3462</a>
+<a href="#3463" id="3463">3463</a>
+<a href="#3464" id="3464">3464</a>
+<a href="#3465" id="3465">3465</a>
+<a href="#3466" id="3466">3466</a>
+<a href="#3467" id="3467">3467</a>
+<a href="#3468" id="3468">3468</a>
+<a href="#3469" id="3469">3469</a>
+<a href="#3470" id="3470">3470</a>
+<a href="#3471" id="3471">3471</a>
+<a href="#3472" id="3472">3472</a>
+<a href="#3473" id="3473">3473</a>
+<a href="#3474" id="3474">3474</a>
+<a href="#3475" id="3475">3475</a>
+<a href="#3476" id="3476">3476</a>
+<a href="#3477" id="3477">3477</a>
+<a href="#3478" id="3478">3478</a>
+<a href="#3479" id="3479">3479</a>
+<a href="#3480" id="3480">3480</a>
+<a href="#3481" id="3481">3481</a>
+<a href="#3482" id="3482">3482</a>
+<a href="#3483" id="3483">3483</a>
+<a href="#3484" id="3484">3484</a>
+<a href="#3485" id="3485">3485</a>
+<a href="#3486" id="3486">3486</a>
+<a href="#3487" id="3487">3487</a>
+<a href="#3488" id="3488">3488</a>
+<a href="#3489" id="3489">3489</a>
+<a href="#3490" id="3490">3490</a>
+<a href="#3491" id="3491">3491</a>
+<a href="#3492" id="3492">3492</a>
+<a href="#3493" id="3493">3493</a>
+<a href="#3494" id="3494">3494</a>
+<a href="#3495" id="3495">3495</a>
+<a href="#3496" id="3496">3496</a>
+<a href="#3497" id="3497">3497</a>
+<a href="#3498" id="3498">3498</a>
+<a href="#3499" id="3499">3499</a>
+<a href="#3500" id="3500">3500</a>
+<a href="#3501" id="3501">3501</a>
+<a href="#3502" id="3502">3502</a>
+<a href="#3503" id="3503">3503</a>
+<a href="#3504" id="3504">3504</a>
+<a href="#3505" id="3505">3505</a>
+<a href="#3506" id="3506">3506</a>
+<a href="#3507" id="3507">3507</a>
+<a href="#3508" id="3508">3508</a>
+<a href="#3509" id="3509">3509</a>
+<a href="#3510" id="3510">3510</a>
+<a href="#3511" id="3511">3511</a>
+<a href="#3512" id="3512">3512</a>
+<a href="#3513" id="3513">3513</a>
+<a href="#3514" id="3514">3514</a>
+<a href="#3515" id="3515">3515</a>
+<a href="#3516" id="3516">3516</a>
+<a href="#3517" id="3517">3517</a>
+<a href="#3518" id="3518">3518</a>
+<a href="#3519" id="3519">3519</a>
+<a href="#3520" id="3520">3520</a>
+<a href="#3521" id="3521">3521</a>
+<a href="#3522" id="3522">3522</a>
+<a href="#3523" id="3523">3523</a>
+<a href="#3524" id="3524">3524</a>
+<a href="#3525" id="3525">3525</a>
+<a href="#3526" id="3526">3526</a>
+<a href="#3527" id="3527">3527</a>
+<a href="#3528" id="3528">3528</a>
+<a href="#3529" id="3529">3529</a>
+<a href="#3530" id="3530">3530</a>
+<a href="#3531" id="3531">3531</a>
+<a href="#3532" id="3532">3532</a>
+<a href="#3533" id="3533">3533</a>
+<a href="#3534" id="3534">3534</a>
+<a href="#3535" id="3535">3535</a>
+<a href="#3536" id="3536">3536</a>
+<a href="#3537" id="3537">3537</a>
+<a href="#3538" id="3538">3538</a>
+<a href="#3539" id="3539">3539</a>
+<a href="#3540" id="3540">3540</a>
+<a href="#3541" id="3541">3541</a>
+<a href="#3542" id="3542">3542</a>
+<a href="#3543" id="3543">3543</a>
+<a href="#3544" id="3544">3544</a>
+<a href="#3545" id="3545">3545</a>
+<a href="#3546" id="3546">3546</a>
+<a href="#3547" id="3547">3547</a>
+<a href="#3548" id="3548">3548</a>
+<a href="#3549" id="3549">3549</a>
+<a href="#3550" id="3550">3550</a>
+<a href="#3551" id="3551">3551</a>
+<a href="#3552" id="3552">3552</a>
+<a href="#3553" id="3553">3553</a>
+<a href="#3554" id="3554">3554</a>
+<a href="#3555" id="3555">3555</a>
+<a href="#3556" id="3556">3556</a>
+<a href="#3557" id="3557">3557</a>
+<a href="#3558" id="3558">3558</a>
+<a href="#3559" id="3559">3559</a>
+<a href="#3560" id="3560">3560</a>
+<a href="#3561" id="3561">3561</a>
+<a href="#3562" id="3562">3562</a>
+<a href="#3563" id="3563">3563</a>
+<a href="#3564" id="3564">3564</a>
+<a href="#3565" id="3565">3565</a>
+<a href="#3566" id="3566">3566</a>
+<a href="#3567" id="3567">3567</a>
+<a href="#3568" id="3568">3568</a>
+<a href="#3569" id="3569">3569</a>
+<a href="#3570" id="3570">3570</a>
+<a href="#3571" id="3571">3571</a>
+<a href="#3572" id="3572">3572</a>
+<a href="#3573" id="3573">3573</a>
+<a href="#3574" id="3574">3574</a>
+<a href="#3575" id="3575">3575</a>
+<a href="#3576" id="3576">3576</a>
+<a href="#3577" id="3577">3577</a>
+<a href="#3578" id="3578">3578</a>
+<a href="#3579" id="3579">3579</a>
+<a href="#3580" id="3580">3580</a>
+<a href="#3581" id="3581">3581</a>
+<a href="#3582" id="3582">3582</a>
+<a href="#3583" id="3583">3583</a>
+<a href="#3584" id="3584">3584</a>
+<a href="#3585" id="3585">3585</a>
+<a href="#3586" id="3586">3586</a>
+<a href="#3587" id="3587">3587</a>
+<a href="#3588" id="3588">3588</a>
+<a href="#3589" id="3589">3589</a>
+<a href="#3590" id="3590">3590</a>
+<a href="#3591" id="3591">3591</a>
+<a href="#3592" id="3592">3592</a>
+<a href="#3593" id="3593">3593</a>
+<a href="#3594" id="3594">3594</a>
+<a href="#3595" id="3595">3595</a>
+<a href="#3596" id="3596">3596</a>
+<a href="#3597" id="3597">3597</a>
+<a href="#3598" id="3598">3598</a>
+<a href="#3599" id="3599">3599</a>
+<a href="#3600" id="3600">3600</a>
+<a href="#3601" id="3601">3601</a>
+<a href="#3602" id="3602">3602</a>
+<a href="#3603" id="3603">3603</a>
+<a href="#3604" id="3604">3604</a>
+<a href="#3605" id="3605">3605</a>
+<a href="#3606" id="3606">3606</a>
+<a href="#3607" id="3607">3607</a>
+<a href="#3608" id="3608">3608</a>
+<a href="#3609" id="3609">3609</a>
+<a href="#3610" id="3610">3610</a>
+<a href="#3611" id="3611">3611</a>
+<a href="#3612" id="3612">3612</a>
+<a href="#3613" id="3613">3613</a>
+<a href="#3614" id="3614">3614</a>
+<a href="#3615" id="3615">3615</a>
+<a href="#3616" id="3616">3616</a>
+<a href="#3617" id="3617">3617</a>
+<a href="#3618" id="3618">3618</a>
+<a href="#3619" id="3619">3619</a>
+<a href="#3620" id="3620">3620</a>
+<a href="#3621" id="3621">3621</a>
+<a href="#3622" id="3622">3622</a>
+<a href="#3623" id="3623">3623</a>
+<a href="#3624" id="3624">3624</a>
+<a href="#3625" id="3625">3625</a>
+<a href="#3626" id="3626">3626</a>
+<a href="#3627" id="3627">3627</a>
+<a href="#3628" id="3628">3628</a>
+<a href="#3629" id="3629">3629</a>
+<a href="#3630" id="3630">3630</a>
+<a href="#3631" id="3631">3631</a>
+<a href="#3632" id="3632">3632</a>
+<a href="#3633" id="3633">3633</a>
+<a href="#3634" id="3634">3634</a>
+<a href="#3635" id="3635">3635</a>
+<a href="#3636" id="3636">3636</a>
+<a href="#3637" id="3637">3637</a>
+<a href="#3638" id="3638">3638</a>
+<a href="#3639" id="3639">3639</a>
+<a href="#3640" id="3640">3640</a>
+<a href="#3641" id="3641">3641</a>
+<a href="#3642" id="3642">3642</a>
+<a href="#3643" id="3643">3643</a>
+<a href="#3644" id="3644">3644</a>
+<a href="#3645" id="3645">3645</a>
+<a href="#3646" id="3646">3646</a>
+<a href="#3647" id="3647">3647</a>
+<a href="#3648" id="3648">3648</a>
+<a href="#3649" id="3649">3649</a>
+<a href="#3650" id="3650">3650</a>
+<a href="#3651" id="3651">3651</a>
+<a href="#3652" id="3652">3652</a>
+<a href="#3653" id="3653">3653</a>
+<a href="#3654" id="3654">3654</a>
+<a href="#3655" id="3655">3655</a>
+<a href="#3656" id="3656">3656</a>
+<a href="#3657" id="3657">3657</a>
+<a href="#3658" id="3658">3658</a>
+<a href="#3659" id="3659">3659</a>
+<a href="#3660" id="3660">3660</a>
+<a href="#3661" id="3661">3661</a>
+<a href="#3662" id="3662">3662</a>
+<a href="#3663" id="3663">3663</a>
+<a href="#3664" id="3664">3664</a>
+<a href="#3665" id="3665">3665</a>
+<a href="#3666" id="3666">3666</a>
+<a href="#3667" id="3667">3667</a>
+<a href="#3668" id="3668">3668</a>
+<a href="#3669" id="3669">3669</a>
+<a href="#3670" id="3670">3670</a>
+<a href="#3671" id="3671">3671</a>
+<a href="#3672" id="3672">3672</a>
+<a href="#3673" id="3673">3673</a>
+<a href="#3674" id="3674">3674</a>
+<a href="#3675" id="3675">3675</a>
+<a href="#3676" id="3676">3676</a>
+<a href="#3677" id="3677">3677</a>
+<a href="#3678" id="3678">3678</a>
+<a href="#3679" id="3679">3679</a>
+<a href="#3680" id="3680">3680</a>
+<a href="#3681" id="3681">3681</a>
+<a href="#3682" id="3682">3682</a>
+<a href="#3683" id="3683">3683</a>
+<a href="#3684" id="3684">3684</a>
+<a href="#3685" id="3685">3685</a>
+<a href="#3686" id="3686">3686</a>
+<a href="#3687" id="3687">3687</a>
+<a href="#3688" id="3688">3688</a>
+<a href="#3689" id="3689">3689</a>
+<a href="#3690" id="3690">3690</a>
+<a href="#3691" id="3691">3691</a>
+<a href="#3692" id="3692">3692</a>
+<a href="#3693" id="3693">3693</a>
+<a href="#3694" id="3694">3694</a>
+<a href="#3695" id="3695">3695</a>
+<a href="#3696" id="3696">3696</a>
+<a href="#3697" id="3697">3697</a>
+<a href="#3698" id="3698">3698</a>
+<a href="#3699" id="3699">3699</a>
+<a href="#3700" id="3700">3700</a>
+<a href="#3701" id="3701">3701</a>
+<a href="#3702" id="3702">3702</a>
+<a href="#3703" id="3703">3703</a>
+<a href="#3704" id="3704">3704</a>
+<a href="#3705" id="3705">3705</a>
+<a href="#3706" id="3706">3706</a>
+<a href="#3707" id="3707">3707</a>
+<a href="#3708" id="3708">3708</a>
+<a href="#3709" id="3709">3709</a>
+<a href="#3710" id="3710">3710</a>
+<a href="#3711" id="3711">3711</a>
+<a href="#3712" id="3712">3712</a>
+<a href="#3713" id="3713">3713</a>
+<a href="#3714" id="3714">3714</a>
+<a href="#3715" id="3715">3715</a>
+<a href="#3716" id="3716">3716</a>
+<a href="#3717" id="3717">3717</a>
+<a href="#3718" id="3718">3718</a>
+<a href="#3719" id="3719">3719</a>
+<a href="#3720" id="3720">3720</a>
+<a href="#3721" id="3721">3721</a>
+<a href="#3722" id="3722">3722</a>
+<a href="#3723" id="3723">3723</a>
+<a href="#3724" id="3724">3724</a>
+<a href="#3725" id="3725">3725</a>
+<a href="#3726" id="3726">3726</a>
+<a href="#3727" id="3727">3727</a>
+<a href="#3728" id="3728">3728</a>
+<a href="#3729" id="3729">3729</a>
+<a href="#3730" id="3730">3730</a>
+<a href="#3731" id="3731">3731</a>
+<a href="#3732" id="3732">3732</a>
+<a href="#3733" id="3733">3733</a>
+<a href="#3734" id="3734">3734</a>
+<a href="#3735" id="3735">3735</a>
+<a href="#3736" id="3736">3736</a>
+<a href="#3737" id="3737">3737</a>
+<a href="#3738" id="3738">3738</a>
+<a href="#3739" id="3739">3739</a>
+<a href="#3740" id="3740">3740</a>
+<a href="#3741" id="3741">3741</a>
+<a href="#3742" id="3742">3742</a>
+<a href="#3743" id="3743">3743</a>
+<a href="#3744" id="3744">3744</a>
+<a href="#3745" id="3745">3745</a>
+<a href="#3746" id="3746">3746</a>
+<a href="#3747" id="3747">3747</a>
+<a href="#3748" id="3748">3748</a>
+<a href="#3749" id="3749">3749</a>
+<a href="#3750" id="3750">3750</a>
+<a href="#3751" id="3751">3751</a>
+<a href="#3752" id="3752">3752</a>
+<a href="#3753" id="3753">3753</a>
+<a href="#3754" id="3754">3754</a>
+<a href="#3755" id="3755">3755</a>
+<a href="#3756" id="3756">3756</a>
+<a href="#3757" id="3757">3757</a>
+<a href="#3758" id="3758">3758</a>
+<a href="#3759" id="3759">3759</a>
+<a href="#3760" id="3760">3760</a>
+<a href="#3761" id="3761">3761</a>
+<a href="#3762" id="3762">3762</a>
+<a href="#3763" id="3763">3763</a>
+<a href="#3764" id="3764">3764</a>
+<a href="#3765" id="3765">3765</a>
+<a href="#3766" id="3766">3766</a>
+<a href="#3767" id="3767">3767</a>
+<a href="#3768" id="3768">3768</a>
+<a href="#3769" id="3769">3769</a>
+<a href="#3770" id="3770">3770</a>
+<a href="#3771" id="3771">3771</a>
+<a href="#3772" id="3772">3772</a>
+<a href="#3773" id="3773">3773</a>
+<a href="#3774" id="3774">3774</a>
+<a href="#3775" id="3775">3775</a>
+<a href="#3776" id="3776">3776</a>
+<a href="#3777" id="3777">3777</a>
+<a href="#3778" id="3778">3778</a>
+<a href="#3779" id="3779">3779</a>
+<a href="#3780" id="3780">3780</a>
+<a href="#3781" id="3781">3781</a>
+<a href="#3782" id="3782">3782</a>
+<a href="#3783" id="3783">3783</a>
+<a href="#3784" id="3784">3784</a>
+<a href="#3785" id="3785">3785</a>
+<a href="#3786" id="3786">3786</a>
+<a href="#3787" id="3787">3787</a>
+<a href="#3788" id="3788">3788</a>
+<a href="#3789" id="3789">3789</a>
+<a href="#3790" id="3790">3790</a>
+<a href="#3791" id="3791">3791</a>
+<a href="#3792" id="3792">3792</a>
+<a href="#3793" id="3793">3793</a>
+<a href="#3794" id="3794">3794</a>
+<a href="#3795" id="3795">3795</a>
+<a href="#3796" id="3796">3796</a>
+<a href="#3797" id="3797">3797</a>
+<a href="#3798" id="3798">3798</a>
+<a href="#3799" id="3799">3799</a>
+<a href="#3800" id="3800">3800</a>
+<a href="#3801" id="3801">3801</a>
+<a href="#3802" id="3802">3802</a>
+<a href="#3803" id="3803">3803</a>
+<a href="#3804" id="3804">3804</a>
+<a href="#3805" id="3805">3805</a>
+<a href="#3806" id="3806">3806</a>
+<a href="#3807" id="3807">3807</a>
+<a href="#3808" id="3808">3808</a>
+<a href="#3809" id="3809">3809</a>
+<a href="#3810" id="3810">3810</a>
+<a href="#3811" id="3811">3811</a>
+<a href="#3812" id="3812">3812</a>
+<a href="#3813" id="3813">3813</a>
+<a href="#3814" id="3814">3814</a>
+<a href="#3815" id="3815">3815</a>
+<a href="#3816" id="3816">3816</a>
+<a href="#3817" id="3817">3817</a>
+<a href="#3818" id="3818">3818</a>
+<a href="#3819" id="3819">3819</a>
+<a href="#3820" id="3820">3820</a>
+<a href="#3821" id="3821">3821</a>
+<a href="#3822" id="3822">3822</a>
+<a href="#3823" id="3823">3823</a>
+<a href="#3824" id="3824">3824</a>
+<a href="#3825" id="3825">3825</a>
+<a href="#3826" id="3826">3826</a>
+<a href="#3827" id="3827">3827</a>
+<a href="#3828" id="3828">3828</a>
+<a href="#3829" id="3829">3829</a>
+<a href="#3830" id="3830">3830</a>
+<a href="#3831" id="3831">3831</a>
+<a href="#3832" id="3832">3832</a>
+<a href="#3833" id="3833">3833</a>
+<a href="#3834" id="3834">3834</a>
+<a href="#3835" id="3835">3835</a>
+<a href="#3836" id="3836">3836</a>
+<a href="#3837" id="3837">3837</a>
+<a href="#3838" id="3838">3838</a>
+<a href="#3839" id="3839">3839</a>
+<a href="#3840" id="3840">3840</a>
+<a href="#3841" id="3841">3841</a>
+<a href="#3842" id="3842">3842</a>
+<a href="#3843" id="3843">3843</a>
+<a href="#3844" id="3844">3844</a>
+<a href="#3845" id="3845">3845</a>
+<a href="#3846" id="3846">3846</a>
+<a href="#3847" id="3847">3847</a>
+<a href="#3848" id="3848">3848</a>
+<a href="#3849" id="3849">3849</a>
+<a href="#3850" id="3850">3850</a>
+<a href="#3851" id="3851">3851</a>
+<a href="#3852" id="3852">3852</a>
+<a href="#3853" id="3853">3853</a>
+<a href="#3854" id="3854">3854</a>
+<a href="#3855" id="3855">3855</a>
+<a href="#3856" id="3856">3856</a>
+<a href="#3857" id="3857">3857</a>
+<a href="#3858" id="3858">3858</a>
+<a href="#3859" id="3859">3859</a>
+<a href="#3860" id="3860">3860</a>
+<a href="#3861" id="3861">3861</a>
+<a href="#3862" id="3862">3862</a>
+<a href="#3863" id="3863">3863</a>
+<a href="#3864" id="3864">3864</a>
+<a href="#3865" id="3865">3865</a>
+<a href="#3866" id="3866">3866</a>
+<a href="#3867" id="3867">3867</a>
+<a href="#3868" id="3868">3868</a>
+<a href="#3869" id="3869">3869</a>
+<a href="#3870" id="3870">3870</a>
+<a href="#3871" id="3871">3871</a>
+<a href="#3872" id="3872">3872</a>
+<a href="#3873" id="3873">3873</a>
+<a href="#3874" id="3874">3874</a>
+<a href="#3875" id="3875">3875</a>
+<a href="#3876" id="3876">3876</a>
+<a href="#3877" id="3877">3877</a>
+<a href="#3878" id="3878">3878</a>
+<a href="#3879" id="3879">3879</a>
+<a href="#3880" id="3880">3880</a>
+<a href="#3881" id="3881">3881</a>
+<a href="#3882" id="3882">3882</a>
+<a href="#3883" id="3883">3883</a>
+<a href="#3884" id="3884">3884</a>
+<a href="#3885" id="3885">3885</a>
+<a href="#3886" id="3886">3886</a>
+<a href="#3887" id="3887">3887</a>
+<a href="#3888" id="3888">3888</a>
+<a href="#3889" id="3889">3889</a>
+<a href="#3890" id="3890">3890</a>
+<a href="#3891" id="3891">3891</a>
+<a href="#3892" id="3892">3892</a>
+<a href="#3893" id="3893">3893</a>
+<a href="#3894" id="3894">3894</a>
+<a href="#3895" id="3895">3895</a>
+<a href="#3896" id="3896">3896</a>
+<a href="#3897" id="3897">3897</a>
+<a href="#3898" id="3898">3898</a>
+<a href="#3899" id="3899">3899</a>
+<a href="#3900" id="3900">3900</a>
+<a href="#3901" id="3901">3901</a>
+<a href="#3902" id="3902">3902</a>
+<a href="#3903" id="3903">3903</a>
+<a href="#3904" id="3904">3904</a>
+<a href="#3905" id="3905">3905</a>
+<a href="#3906" id="3906">3906</a>
+<a href="#3907" id="3907">3907</a>
+<a href="#3908" id="3908">3908</a>
+<a href="#3909" id="3909">3909</a>
+<a href="#3910" id="3910">3910</a>
+<a href="#3911" id="3911">3911</a>
+<a href="#3912" id="3912">3912</a>
+<a href="#3913" id="3913">3913</a>
+<a href="#3914" id="3914">3914</a>
+<a href="#3915" id="3915">3915</a>
+<a href="#3916" id="3916">3916</a>
+<a href="#3917" id="3917">3917</a>
+<a href="#3918" id="3918">3918</a>
+<a href="#3919" id="3919">3919</a>
+<a href="#3920" id="3920">3920</a>
+<a href="#3921" id="3921">3921</a>
+<a href="#3922" id="3922">3922</a>
+<a href="#3923" id="3923">3923</a>
+<a href="#3924" id="3924">3924</a>
+<a href="#3925" id="3925">3925</a>
+<a href="#3926" id="3926">3926</a>
+<a href="#3927" id="3927">3927</a>
+<a href="#3928" id="3928">3928</a>
+<a href="#3929" id="3929">3929</a>
+<a href="#3930" id="3930">3930</a>
+<a href="#3931" id="3931">3931</a>
+<a href="#3932" id="3932">3932</a>
+<a href="#3933" id="3933">3933</a>
+<a href="#3934" id="3934">3934</a>
+<a href="#3935" id="3935">3935</a>
+<a href="#3936" id="3936">3936</a>
+<a href="#3937" id="3937">3937</a>
+<a href="#3938" id="3938">3938</a>
+<a href="#3939" id="3939">3939</a>
+<a href="#3940" id="3940">3940</a>
+<a href="#3941" id="3941">3941</a>
+<a href="#3942" id="3942">3942</a>
+<a href="#3943" id="3943">3943</a>
+<a href="#3944" id="3944">3944</a>
+<a href="#3945" id="3945">3945</a>
+<a href="#3946" id="3946">3946</a>
+<a href="#3947" id="3947">3947</a>
+<a href="#3948" id="3948">3948</a>
+<a href="#3949" id="3949">3949</a>
+<a href="#3950" id="3950">3950</a>
+<a href="#3951" id="3951">3951</a>
+<a href="#3952" id="3952">3952</a>
+<a href="#3953" id="3953">3953</a>
+<a href="#3954" id="3954">3954</a>
+<a href="#3955" id="3955">3955</a>
+<a href="#3956" id="3956">3956</a>
+<a href="#3957" id="3957">3957</a>
+<a href="#3958" id="3958">3958</a>
+<a href="#3959" id="3959">3959</a>
+<a href="#3960" id="3960">3960</a>
+<a href="#3961" id="3961">3961</a>
+<a href="#3962" id="3962">3962</a>
+<a href="#3963" id="3963">3963</a>
+<a href="#3964" id="3964">3964</a>
+<a href="#3965" id="3965">3965</a>
+<a href="#3966" id="3966">3966</a>
+<a href="#3967" id="3967">3967</a>
+<a href="#3968" id="3968">3968</a>
+<a href="#3969" id="3969">3969</a>
+<a href="#3970" id="3970">3970</a>
+<a href="#3971" id="3971">3971</a>
+<a href="#3972" id="3972">3972</a>
+<a href="#3973" id="3973">3973</a>
+<a href="#3974" id="3974">3974</a>
+<a href="#3975" id="3975">3975</a>
+<a href="#3976" id="3976">3976</a>
+<a href="#3977" id="3977">3977</a>
+<a href="#3978" id="3978">3978</a>
+<a href="#3979" id="3979">3979</a>
+<a href="#3980" id="3980">3980</a>
+<a href="#3981" id="3981">3981</a>
+<a href="#3982" id="3982">3982</a>
+<a href="#3983" id="3983">3983</a>
+<a href="#3984" id="3984">3984</a>
+<a href="#3985" id="3985">3985</a>
+<a href="#3986" id="3986">3986</a>
+<a href="#3987" id="3987">3987</a>
+<a href="#3988" id="3988">3988</a>
+<a href="#3989" id="3989">3989</a>
+<a href="#3990" id="3990">3990</a>
+<a href="#3991" id="3991">3991</a>
+<a href="#3992" id="3992">3992</a>
+<a href="#3993" id="3993">3993</a>
+<a href="#3994" id="3994">3994</a>
+<a href="#3995" id="3995">3995</a>
+<a href="#3996" id="3996">3996</a>
+<a href="#3997" id="3997">3997</a>
+<a href="#3998" id="3998">3998</a>
+<a href="#3999" id="3999">3999</a>
+<a href="#4000" id="4000">4000</a>
+<a href="#4001" id="4001">4001</a>
+<a href="#4002" id="4002">4002</a>
+<a href="#4003" id="4003">4003</a>
+<a href="#4004" id="4004">4004</a>
+<a href="#4005" id="4005">4005</a>
+<a href="#4006" id="4006">4006</a>
+<a href="#4007" id="4007">4007</a>
+<a href="#4008" id="4008">4008</a>
+<a href="#4009" id="4009">4009</a>
+<a href="#4010" id="4010">4010</a>
+<a href="#4011" id="4011">4011</a>
+<a href="#4012" id="4012">4012</a>
+<a href="#4013" id="4013">4013</a>
+<a href="#4014" id="4014">4014</a>
+<a href="#4015" id="4015">4015</a>
+<a href="#4016" id="4016">4016</a>
+<a href="#4017" id="4017">4017</a>
+<a href="#4018" id="4018">4018</a>
+<a href="#4019" id="4019">4019</a>
+<a href="#4020" id="4020">4020</a>
+<a href="#4021" id="4021">4021</a>
+<a href="#4022" id="4022">4022</a>
+<a href="#4023" id="4023">4023</a>
+<a href="#4024" id="4024">4024</a>
+<a href="#4025" id="4025">4025</a>
+<a href="#4026" id="4026">4026</a>
+<a href="#4027" id="4027">4027</a>
+<a href="#4028" id="4028">4028</a>
+<a href="#4029" id="4029">4029</a>
+<a href="#4030" id="4030">4030</a>
+<a href="#4031" id="4031">4031</a>
+<a href="#4032" id="4032">4032</a>
+<a href="#4033" id="4033">4033</a>
+<a href="#4034" id="4034">4034</a>
+<a href="#4035" id="4035">4035</a>
+<a href="#4036" id="4036">4036</a>
+<a href="#4037" id="4037">4037</a>
+<a href="#4038" id="4038">4038</a>
+<a href="#4039" id="4039">4039</a>
+<a href="#4040" id="4040">4040</a>
+<a href="#4041" id="4041">4041</a>
+<a href="#4042" id="4042">4042</a>
+<a href="#4043" id="4043">4043</a>
+<a href="#4044" id="4044">4044</a>
+<a href="#4045" id="4045">4045</a>
+<a href="#4046" id="4046">4046</a>
+<a href="#4047" id="4047">4047</a>
+<a href="#4048" id="4048">4048</a>
+<a href="#4049" id="4049">4049</a>
+<a href="#4050" id="4050">4050</a>
+<a href="#4051" id="4051">4051</a>
+<a href="#4052" id="4052">4052</a>
+<a href="#4053" id="4053">4053</a>
+<a href="#4054" id="4054">4054</a>
+<a href="#4055" id="4055">4055</a>
+<a href="#4056" id="4056">4056</a>
+<a href="#4057" id="4057">4057</a>
+<a href="#4058" id="4058">4058</a>
+<a href="#4059" id="4059">4059</a>
+<a href="#4060" id="4060">4060</a>
+<a href="#4061" id="4061">4061</a>
+<a href="#4062" id="4062">4062</a>
+<a href="#4063" id="4063">4063</a>
+<a href="#4064" id="4064">4064</a>
+<a href="#4065" id="4065">4065</a>
+<a href="#4066" id="4066">4066</a>
+<a href="#4067" id="4067">4067</a>
+<a href="#4068" id="4068">4068</a>
+<a href="#4069" id="4069">4069</a>
+<a href="#4070" id="4070">4070</a>
+<a href="#4071" id="4071">4071</a>
+<a href="#4072" id="4072">4072</a>
+<a href="#4073" id="4073">4073</a>
+<a href="#4074" id="4074">4074</a>
+<a href="#4075" id="4075">4075</a>
+<a href="#4076" id="4076">4076</a>
+<a href="#4077" id="4077">4077</a>
+<a href="#4078" id="4078">4078</a>
+<a href="#4079" id="4079">4079</a>
+<a href="#4080" id="4080">4080</a>
+<a href="#4081" id="4081">4081</a>
+<a href="#4082" id="4082">4082</a>
+<a href="#4083" id="4083">4083</a>
+<a href="#4084" id="4084">4084</a>
+<a href="#4085" id="4085">4085</a>
+<a href="#4086" id="4086">4086</a>
+<a href="#4087" id="4087">4087</a>
+<a href="#4088" id="4088">4088</a>
+<a href="#4089" id="4089">4089</a>
+<a href="#4090" id="4090">4090</a>
+<a href="#4091" id="4091">4091</a>
+<a href="#4092" id="4092">4092</a>
+<a href="#4093" id="4093">4093</a>
+<a href="#4094" id="4094">4094</a>
+<a href="#4095" id="4095">4095</a>
+<a href="#4096" id="4096">4096</a>
+<a href="#4097" id="4097">4097</a>
+<a href="#4098" id="4098">4098</a>
+<a href="#4099" id="4099">4099</a>
+<a href="#4100" id="4100">4100</a>
+<a href="#4101" id="4101">4101</a>
+<a href="#4102" id="4102">4102</a>
+<a href="#4103" id="4103">4103</a>
+<a href="#4104" id="4104">4104</a>
+<a href="#4105" id="4105">4105</a>
+<a href="#4106" id="4106">4106</a>
+<a href="#4107" id="4107">4107</a>
+<a href="#4108" id="4108">4108</a>
+<a href="#4109" id="4109">4109</a>
+<a href="#4110" id="4110">4110</a>
+<a href="#4111" id="4111">4111</a>
+<a href="#4112" id="4112">4112</a>
+<a href="#4113" id="4113">4113</a>
+<a href="#4114" id="4114">4114</a>
+<a href="#4115" id="4115">4115</a>
+<a href="#4116" id="4116">4116</a>
+<a href="#4117" id="4117">4117</a>
+<a href="#4118" id="4118">4118</a>
+<a href="#4119" id="4119">4119</a>
+<a href="#4120" id="4120">4120</a>
+<a href="#4121" id="4121">4121</a>
+<a href="#4122" id="4122">4122</a>
+<a href="#4123" id="4123">4123</a>
+<a href="#4124" id="4124">4124</a>
+<a href="#4125" id="4125">4125</a>
+<a href="#4126" id="4126">4126</a>
+<a href="#4127" id="4127">4127</a>
+<a href="#4128" id="4128">4128</a>
+<a href="#4129" id="4129">4129</a>
+<a href="#4130" id="4130">4130</a>
+<a href="#4131" id="4131">4131</a>
+<a href="#4132" id="4132">4132</a>
+<a href="#4133" id="4133">4133</a>
+<a href="#4134" id="4134">4134</a>
+<a href="#4135" id="4135">4135</a>
+<a href="#4136" id="4136">4136</a>
+<a href="#4137" id="4137">4137</a>
+<a href="#4138" id="4138">4138</a>
+<a href="#4139" id="4139">4139</a>
+<a href="#4140" id="4140">4140</a>
+<a href="#4141" id="4141">4141</a>
+<a href="#4142" id="4142">4142</a>
+<a href="#4143" id="4143">4143</a>
+<a href="#4144" id="4144">4144</a>
+<a href="#4145" id="4145">4145</a>
+<a href="#4146" id="4146">4146</a>
+<a href="#4147" id="4147">4147</a>
+<a href="#4148" id="4148">4148</a>
+<a href="#4149" id="4149">4149</a>
+<a href="#4150" id="4150">4150</a>
+<a href="#4151" id="4151">4151</a>
+<a href="#4152" id="4152">4152</a>
+<a href="#4153" id="4153">4153</a>
+<a href="#4154" id="4154">4154</a>
+<a href="#4155" id="4155">4155</a>
+<a href="#4156" id="4156">4156</a>
+<a href="#4157" id="4157">4157</a>
+<a href="#4158" id="4158">4158</a>
+<a href="#4159" id="4159">4159</a>
+<a href="#4160" id="4160">4160</a>
+<a href="#4161" id="4161">4161</a>
+<a href="#4162" id="4162">4162</a>
+<a href="#4163" id="4163">4163</a>
+<a href="#4164" id="4164">4164</a>
+<a href="#4165" id="4165">4165</a>
+<a href="#4166" id="4166">4166</a>
+<a href="#4167" id="4167">4167</a>
+<a href="#4168" id="4168">4168</a>
+<a href="#4169" id="4169">4169</a>
+<a href="#4170" id="4170">4170</a>
+<a href="#4171" id="4171">4171</a>
+<a href="#4172" id="4172">4172</a>
+<a href="#4173" id="4173">4173</a>
+<a href="#4174" id="4174">4174</a>
+<a href="#4175" id="4175">4175</a>
+<a href="#4176" id="4176">4176</a>
+<a href="#4177" id="4177">4177</a>
+<a href="#4178" id="4178">4178</a>
+<a href="#4179" id="4179">4179</a>
+<a href="#4180" id="4180">4180</a>
+<a href="#4181" id="4181">4181</a>
+<a href="#4182" id="4182">4182</a>
+<a href="#4183" id="4183">4183</a>
+<a href="#4184" id="4184">4184</a>
+<a href="#4185" id="4185">4185</a>
+<a href="#4186" id="4186">4186</a>
+<a href="#4187" id="4187">4187</a>
+<a href="#4188" id="4188">4188</a>
+<a href="#4189" id="4189">4189</a>
+<a href="#4190" id="4190">4190</a>
+<a href="#4191" id="4191">4191</a>
+<a href="#4192" id="4192">4192</a>
+<a href="#4193" id="4193">4193</a>
+<a href="#4194" id="4194">4194</a>
+<a href="#4195" id="4195">4195</a>
+<a href="#4196" id="4196">4196</a>
+<a href="#4197" id="4197">4197</a>
+<a href="#4198" id="4198">4198</a>
+<a href="#4199" id="4199">4199</a>
+<a href="#4200" id="4200">4200</a>
+<a href="#4201" id="4201">4201</a>
+<a href="#4202" id="4202">4202</a>
+<a href="#4203" id="4203">4203</a>
+<a href="#4204" id="4204">4204</a>
+<a href="#4205" id="4205">4205</a>
+<a href="#4206" id="4206">4206</a>
+<a href="#4207" id="4207">4207</a>
+<a href="#4208" id="4208">4208</a>
+<a href="#4209" id="4209">4209</a>
+<a href="#4210" id="4210">4210</a>
+<a href="#4211" id="4211">4211</a>
+<a href="#4212" id="4212">4212</a>
+<a href="#4213" id="4213">4213</a>
+<a href="#4214" id="4214">4214</a>
+<a href="#4215" id="4215">4215</a>
+<a href="#4216" id="4216">4216</a>
+<a href="#4217" id="4217">4217</a>
+<a href="#4218" id="4218">4218</a>
+<a href="#4219" id="4219">4219</a>
+<a href="#4220" id="4220">4220</a>
+<a href="#4221" id="4221">4221</a>
+<a href="#4222" id="4222">4222</a>
+<a href="#4223" id="4223">4223</a>
+<a href="#4224" id="4224">4224</a>
+<a href="#4225" id="4225">4225</a>
+<a href="#4226" id="4226">4226</a>
+<a href="#4227" id="4227">4227</a>
+<a href="#4228" id="4228">4228</a>
+<a href="#4229" id="4229">4229</a>
+<a href="#4230" id="4230">4230</a>
+<a href="#4231" id="4231">4231</a>
+<a href="#4232" id="4232">4232</a>
+<a href="#4233" id="4233">4233</a>
+<a href="#4234" id="4234">4234</a>
+<a href="#4235" id="4235">4235</a>
+<a href="#4236" id="4236">4236</a>
+<a href="#4237" id="4237">4237</a>
+<a href="#4238" id="4238">4238</a>
+<a href="#4239" id="4239">4239</a>
+<a href="#4240" id="4240">4240</a>
+<a href="#4241" id="4241">4241</a>
+<a href="#4242" id="4242">4242</a>
+<a href="#4243" id="4243">4243</a>
+<a href="#4244" id="4244">4244</a>
+<a href="#4245" id="4245">4245</a>
+<a href="#4246" id="4246">4246</a>
+<a href="#4247" id="4247">4247</a>
+<a href="#4248" id="4248">4248</a>
+<a href="#4249" id="4249">4249</a>
+<a href="#4250" id="4250">4250</a>
+<a href="#4251" id="4251">4251</a>
+<a href="#4252" id="4252">4252</a>
+<a href="#4253" id="4253">4253</a>
+<a href="#4254" id="4254">4254</a>
+<a href="#4255" id="4255">4255</a>
+<a href="#4256" id="4256">4256</a>
+<a href="#4257" id="4257">4257</a>
+<a href="#4258" id="4258">4258</a>
+<a href="#4259" id="4259">4259</a>
+<a href="#4260" id="4260">4260</a>
+<a href="#4261" id="4261">4261</a>
+<a href="#4262" id="4262">4262</a>
+<a href="#4263" id="4263">4263</a>
+<a href="#4264" id="4264">4264</a>
+<a href="#4265" id="4265">4265</a>
+<a href="#4266" id="4266">4266</a>
+<a href="#4267" id="4267">4267</a>
+<a href="#4268" id="4268">4268</a>
+<a href="#4269" id="4269">4269</a>
+<a href="#4270" id="4270">4270</a>
+<a href="#4271" id="4271">4271</a>
+<a href="#4272" id="4272">4272</a>
+<a href="#4273" id="4273">4273</a>
+<a href="#4274" id="4274">4274</a>
+<a href="#4275" id="4275">4275</a>
+<a href="#4276" id="4276">4276</a>
+<a href="#4277" id="4277">4277</a>
+<a href="#4278" id="4278">4278</a>
+<a href="#4279" id="4279">4279</a>
+<a href="#4280" id="4280">4280</a>
+<a href="#4281" id="4281">4281</a>
+<a href="#4282" id="4282">4282</a>
+<a href="#4283" id="4283">4283</a>
+<a href="#4284" id="4284">4284</a>
+<a href="#4285" id="4285">4285</a>
+<a href="#4286" id="4286">4286</a>
+<a href="#4287" id="4287">4287</a>
+<a href="#4288" id="4288">4288</a>
+<a href="#4289" id="4289">4289</a>
+<a href="#4290" id="4290">4290</a>
+<a href="#4291" id="4291">4291</a>
+<a href="#4292" id="4292">4292</a>
+<a href="#4293" id="4293">4293</a>
+<a href="#4294" id="4294">4294</a>
+<a href="#4295" id="4295">4295</a>
+<a href="#4296" id="4296">4296</a>
+<a href="#4297" id="4297">4297</a>
+<a href="#4298" id="4298">4298</a>
+<a href="#4299" id="4299">4299</a>
+<a href="#4300" id="4300">4300</a>
+<a href="#4301" id="4301">4301</a>
+<a href="#4302" id="4302">4302</a>
+<a href="#4303" id="4303">4303</a>
+<a href="#4304" id="4304">4304</a>
+<a href="#4305" id="4305">4305</a>
+<a href="#4306" id="4306">4306</a>
+<a href="#4307" id="4307">4307</a>
+<a href="#4308" id="4308">4308</a>
+<a href="#4309" id="4309">4309</a>
+<a href="#4310" id="4310">4310</a>
+<a href="#4311" id="4311">4311</a>
+<a href="#4312" id="4312">4312</a>
+<a href="#4313" id="4313">4313</a>
+<a href="#4314" id="4314">4314</a>
+<a href="#4315" id="4315">4315</a>
+<a href="#4316" id="4316">4316</a>
+<a href="#4317" id="4317">4317</a>
+<a href="#4318" id="4318">4318</a>
+<a href="#4319" id="4319">4319</a>
+<a href="#4320" id="4320">4320</a>
+<a href="#4321" id="4321">4321</a>
+<a href="#4322" id="4322">4322</a>
+<a href="#4323" id="4323">4323</a>
+<a href="#4324" id="4324">4324</a>
+<a href="#4325" id="4325">4325</a>
+<a href="#4326" id="4326">4326</a>
+<a href="#4327" id="4327">4327</a>
+<a href="#4328" id="4328">4328</a>
+<a href="#4329" id="4329">4329</a>
+<a href="#4330" id="4330">4330</a>
+<a href="#4331" id="4331">4331</a>
+<a href="#4332" id="4332">4332</a>
+<a href="#4333" id="4333">4333</a>
+<a href="#4334" id="4334">4334</a>
+<a href="#4335" id="4335">4335</a>
+<a href="#4336" id="4336">4336</a>
+<a href="#4337" id="4337">4337</a>
+<a href="#4338" id="4338">4338</a>
+<a href="#4339" id="4339">4339</a>
+<a href="#4340" id="4340">4340</a>
+<a href="#4341" id="4341">4341</a>
+<a href="#4342" id="4342">4342</a>
+<a href="#4343" id="4343">4343</a>
+<a href="#4344" id="4344">4344</a>
+<a href="#4345" id="4345">4345</a>
+<a href="#4346" id="4346">4346</a>
+<a href="#4347" id="4347">4347</a>
+<a href="#4348" id="4348">4348</a>
+<a href="#4349" id="4349">4349</a>
+<a href="#4350" id="4350">4350</a>
+<a href="#4351" id="4351">4351</a>
+<a href="#4352" id="4352">4352</a>
+<a href="#4353" id="4353">4353</a>
+<a href="#4354" id="4354">4354</a>
+<a href="#4355" id="4355">4355</a>
+<a href="#4356" id="4356">4356</a>
+<a href="#4357" id="4357">4357</a>
+<a href="#4358" id="4358">4358</a>
+<a href="#4359" id="4359">4359</a>
+<a href="#4360" id="4360">4360</a>
+<a href="#4361" id="4361">4361</a>
+<a href="#4362" id="4362">4362</a>
+<a href="#4363" id="4363">4363</a>
+<a href="#4364" id="4364">4364</a>
+<a href="#4365" id="4365">4365</a>
+<a href="#4366" id="4366">4366</a>
+<a href="#4367" id="4367">4367</a>
+<a href="#4368" id="4368">4368</a>
+<a href="#4369" id="4369">4369</a>
+<a href="#4370" id="4370">4370</a>
+<a href="#4371" id="4371">4371</a>
+<a href="#4372" id="4372">4372</a>
+<a href="#4373" id="4373">4373</a>
+<a href="#4374" id="4374">4374</a>
+<a href="#4375" id="4375">4375</a>
+<a href="#4376" id="4376">4376</a>
+<a href="#4377" id="4377">4377</a>
+<a href="#4378" id="4378">4378</a>
+<a href="#4379" id="4379">4379</a>
+<a href="#4380" id="4380">4380</a>
+<a href="#4381" id="4381">4381</a>
+<a href="#4382" id="4382">4382</a>
+<a href="#4383" id="4383">4383</a>
+<a href="#4384" id="4384">4384</a>
+<a href="#4385" id="4385">4385</a>
+<a href="#4386" id="4386">4386</a>
+<a href="#4387" id="4387">4387</a>
+<a href="#4388" id="4388">4388</a>
+<a href="#4389" id="4389">4389</a>
+<a href="#4390" id="4390">4390</a>
+<a href="#4391" id="4391">4391</a>
+<a href="#4392" id="4392">4392</a>
+<a href="#4393" id="4393">4393</a>
+<a href="#4394" id="4394">4394</a>
+<a href="#4395" id="4395">4395</a>
+<a href="#4396" id="4396">4396</a>
+<a href="#4397" id="4397">4397</a>
+<a href="#4398" id="4398">4398</a>
+<a href="#4399" id="4399">4399</a>
+<a href="#4400" id="4400">4400</a>
+<a href="#4401" id="4401">4401</a>
+<a href="#4402" id="4402">4402</a>
+<a href="#4403" id="4403">4403</a>
+<a href="#4404" id="4404">4404</a>
+<a href="#4405" id="4405">4405</a>
+<a href="#4406" id="4406">4406</a>
+<a href="#4407" id="4407">4407</a>
+<a href="#4408" id="4408">4408</a>
+<a href="#4409" id="4409">4409</a>
+<a href="#4410" id="4410">4410</a>
+<a href="#4411" id="4411">4411</a>
+<a href="#4412" id="4412">4412</a>
+<a href="#4413" id="4413">4413</a>
+<a href="#4414" id="4414">4414</a>
+<a href="#4415" id="4415">4415</a>
+<a href="#4416" id="4416">4416</a>
+<a href="#4417" id="4417">4417</a>
+<a href="#4418" id="4418">4418</a>
+<a href="#4419" id="4419">4419</a>
+<a href="#4420" id="4420">4420</a>
+<a href="#4421" id="4421">4421</a>
+<a href="#4422" id="4422">4422</a>
+<a href="#4423" id="4423">4423</a>
+<a href="#4424" id="4424">4424</a>
+<a href="#4425" id="4425">4425</a>
+<a href="#4426" id="4426">4426</a>
+<a href="#4427" id="4427">4427</a>
+<a href="#4428" id="4428">4428</a>
+<a href="#4429" id="4429">4429</a>
+<a href="#4430" id="4430">4430</a>
+<a href="#4431" id="4431">4431</a>
+<a href="#4432" id="4432">4432</a>
+<a href="#4433" id="4433">4433</a>
+<a href="#4434" id="4434">4434</a>
+<a href="#4435" id="4435">4435</a>
+<a href="#4436" id="4436">4436</a>
+<a href="#4437" id="4437">4437</a>
+<a href="#4438" id="4438">4438</a>
+<a href="#4439" id="4439">4439</a>
+<a href="#4440" id="4440">4440</a>
+<a href="#4441" id="4441">4441</a>
+<a href="#4442" id="4442">4442</a>
+<a href="#4443" id="4443">4443</a>
+<a href="#4444" id="4444">4444</a>
+<a href="#4445" id="4445">4445</a>
+<a href="#4446" id="4446">4446</a>
+<a href="#4447" id="4447">4447</a>
+<a href="#4448" id="4448">4448</a>
+<a href="#4449" id="4449">4449</a>
+<a href="#4450" id="4450">4450</a>
+<a href="#4451" id="4451">4451</a>
+<a href="#4452" id="4452">4452</a>
+<a href="#4453" id="4453">4453</a>
+<a href="#4454" id="4454">4454</a>
+<a href="#4455" id="4455">4455</a>
+<a href="#4456" id="4456">4456</a>
+<a href="#4457" id="4457">4457</a>
+<a href="#4458" id="4458">4458</a>
+<a href="#4459" id="4459">4459</a>
+<a href="#4460" id="4460">4460</a>
+<a href="#4461" id="4461">4461</a>
+<a href="#4462" id="4462">4462</a>
+<a href="#4463" id="4463">4463</a>
+<a href="#4464" id="4464">4464</a>
+<a href="#4465" id="4465">4465</a>
+<a href="#4466" id="4466">4466</a>
+<a href="#4467" id="4467">4467</a>
+<a href="#4468" id="4468">4468</a>
+<a href="#4469" id="4469">4469</a>
+<a href="#4470" id="4470">4470</a>
+<a href="#4471" id="4471">4471</a>
+<a href="#4472" id="4472">4472</a>
+<a href="#4473" id="4473">4473</a>
+<a href="#4474" id="4474">4474</a>
+<a href="#4475" id="4475">4475</a>
+<a href="#4476" id="4476">4476</a>
+<a href="#4477" id="4477">4477</a>
+<a href="#4478" id="4478">4478</a>
+<a href="#4479" id="4479">4479</a>
+<a href="#4480" id="4480">4480</a>
+<a href="#4481" id="4481">4481</a>
+<a href="#4482" id="4482">4482</a>
+<a href="#4483" id="4483">4483</a>
+<a href="#4484" id="4484">4484</a>
+<a href="#4485" id="4485">4485</a>
+<a href="#4486" id="4486">4486</a>
+<a href="#4487" id="4487">4487</a>
+<a href="#4488" id="4488">4488</a>
+<a href="#4489" id="4489">4489</a>
+<a href="#4490" id="4490">4490</a>
+<a href="#4491" id="4491">4491</a>
+<a href="#4492" id="4492">4492</a>
+<a href="#4493" id="4493">4493</a>
+<a href="#4494" id="4494">4494</a>
+<a href="#4495" id="4495">4495</a>
+<a href="#4496" id="4496">4496</a>
+<a href="#4497" id="4497">4497</a>
+<a href="#4498" id="4498">4498</a>
+<a href="#4499" id="4499">4499</a>
+<a href="#4500" id="4500">4500</a>
+<a href="#4501" id="4501">4501</a>
+<a href="#4502" id="4502">4502</a>
+<a href="#4503" id="4503">4503</a>
+<a href="#4504" id="4504">4504</a>
+<a href="#4505" id="4505">4505</a>
+<a href="#4506" id="4506">4506</a>
+<a href="#4507" id="4507">4507</a>
+<a href="#4508" id="4508">4508</a>
+<a href="#4509" id="4509">4509</a>
+<a href="#4510" id="4510">4510</a>
+<a href="#4511" id="4511">4511</a>
+<a href="#4512" id="4512">4512</a>
+<a href="#4513" id="4513">4513</a>
+<a href="#4514" id="4514">4514</a>
+<a href="#4515" id="4515">4515</a>
+<a href="#4516" id="4516">4516</a>
+<a href="#4517" id="4517">4517</a>
+<a href="#4518" id="4518">4518</a>
+<a href="#4519" id="4519">4519</a>
+<a href="#4520" id="4520">4520</a>
+<a href="#4521" id="4521">4521</a>
+<a href="#4522" id="4522">4522</a>
+<a href="#4523" id="4523">4523</a>
+<a href="#4524" id="4524">4524</a>
+<a href="#4525" id="4525">4525</a>
+<a href="#4526" id="4526">4526</a>
+<a href="#4527" id="4527">4527</a>
+<a href="#4528" id="4528">4528</a>
+<a href="#4529" id="4529">4529</a>
+<a href="#4530" id="4530">4530</a>
+<a href="#4531" id="4531">4531</a>
+<a href="#4532" id="4532">4532</a>
+<a href="#4533" id="4533">4533</a>
+<a href="#4534" id="4534">4534</a>
+<a href="#4535" id="4535">4535</a>
+<a href="#4536" id="4536">4536</a>
+<a href="#4537" id="4537">4537</a>
+<a href="#4538" id="4538">4538</a>
+<a href="#4539" id="4539">4539</a>
+<a href="#4540" id="4540">4540</a>
+<a href="#4541" id="4541">4541</a>
+<a href="#4542" id="4542">4542</a>
+<a href="#4543" id="4543">4543</a>
+<a href="#4544" id="4544">4544</a>
+<a href="#4545" id="4545">4545</a>
+<a href="#4546" id="4546">4546</a>
+<a href="#4547" id="4547">4547</a>
+<a href="#4548" id="4548">4548</a>
+<a href="#4549" id="4549">4549</a>
+<a href="#4550" id="4550">4550</a>
+<a href="#4551" id="4551">4551</a>
+<a href="#4552" id="4552">4552</a>
+<a href="#4553" id="4553">4553</a>
+<a href="#4554" id="4554">4554</a>
+<a href="#4555" id="4555">4555</a>
+<a href="#4556" id="4556">4556</a>
+<a href="#4557" id="4557">4557</a>
+<a href="#4558" id="4558">4558</a>
+<a href="#4559" id="4559">4559</a>
+<a href="#4560" id="4560">4560</a>
+<a href="#4561" id="4561">4561</a>
+<a href="#4562" id="4562">4562</a>
+<a href="#4563" id="4563">4563</a>
+<a href="#4564" id="4564">4564</a>
+<a href="#4565" id="4565">4565</a>
+<a href="#4566" id="4566">4566</a>
+<a href="#4567" id="4567">4567</a>
+<a href="#4568" id="4568">4568</a>
+<a href="#4569" id="4569">4569</a>
+<a href="#4570" id="4570">4570</a>
+<a href="#4571" id="4571">4571</a>
+<a href="#4572" id="4572">4572</a>
+<a href="#4573" id="4573">4573</a>
+<a href="#4574" id="4574">4574</a>
+<a href="#4575" id="4575">4575</a>
+<a href="#4576" id="4576">4576</a>
+<a href="#4577" id="4577">4577</a>
+<a href="#4578" id="4578">4578</a>
+<a href="#4579" id="4579">4579</a>
+<a href="#4580" id="4580">4580</a>
+<a href="#4581" id="4581">4581</a>
+<a href="#4582" id="4582">4582</a>
+<a href="#4583" id="4583">4583</a>
+<a href="#4584" id="4584">4584</a>
+<a href="#4585" id="4585">4585</a>
+<a href="#4586" id="4586">4586</a>
+<a href="#4587" id="4587">4587</a>
+<a href="#4588" id="4588">4588</a>
+<a href="#4589" id="4589">4589</a>
+<a href="#4590" id="4590">4590</a>
+<a href="#4591" id="4591">4591</a>
+<a href="#4592" id="4592">4592</a>
+<a href="#4593" id="4593">4593</a>
+<a href="#4594" id="4594">4594</a>
+<a href="#4595" id="4595">4595</a>
+<a href="#4596" id="4596">4596</a>
+<a href="#4597" id="4597">4597</a>
+<a href="#4598" id="4598">4598</a>
+<a href="#4599" id="4599">4599</a>
+<a href="#4600" id="4600">4600</a>
+<a href="#4601" id="4601">4601</a>
+<a href="#4602" id="4602">4602</a>
+<a href="#4603" id="4603">4603</a>
+<a href="#4604" id="4604">4604</a>
+<a href="#4605" id="4605">4605</a>
+<a href="#4606" id="4606">4606</a>
+<a href="#4607" id="4607">4607</a>
+<a href="#4608" id="4608">4608</a>
+<a href="#4609" id="4609">4609</a>
+<a href="#4610" id="4610">4610</a>
+<a href="#4611" id="4611">4611</a>
+<a href="#4612" id="4612">4612</a>
+<a href="#4613" id="4613">4613</a>
+<a href="#4614" id="4614">4614</a>
+<a href="#4615" id="4615">4615</a>
+<a href="#4616" id="4616">4616</a>
+<a href="#4617" id="4617">4617</a>
+<a href="#4618" id="4618">4618</a>
+<a href="#4619" id="4619">4619</a>
+<a href="#4620" id="4620">4620</a>
+<a href="#4621" id="4621">4621</a>
+<a href="#4622" id="4622">4622</a>
+<a href="#4623" id="4623">4623</a>
+<a href="#4624" id="4624">4624</a>
+<a href="#4625" id="4625">4625</a>
+<a href="#4626" id="4626">4626</a>
+<a href="#4627" id="4627">4627</a>
+<a href="#4628" id="4628">4628</a>
+<a href="#4629" id="4629">4629</a>
+<a href="#4630" id="4630">4630</a>
+<a href="#4631" id="4631">4631</a>
+<a href="#4632" id="4632">4632</a>
+<a href="#4633" id="4633">4633</a>
+<a href="#4634" id="4634">4634</a>
+<a href="#4635" id="4635">4635</a>
+<a href="#4636" id="4636">4636</a>
+<a href="#4637" id="4637">4637</a>
+<a href="#4638" id="4638">4638</a>
+<a href="#4639" id="4639">4639</a>
+<a href="#4640" id="4640">4640</a>
+<a href="#4641" id="4641">4641</a>
+<a href="#4642" id="4642">4642</a>
+<a href="#4643" id="4643">4643</a>
+<a href="#4644" id="4644">4644</a>
+<a href="#4645" id="4645">4645</a>
+<a href="#4646" id="4646">4646</a>
+<a href="#4647" id="4647">4647</a>
+<a href="#4648" id="4648">4648</a>
+<a href="#4649" id="4649">4649</a>
+<a href="#4650" id="4650">4650</a>
+<a href="#4651" id="4651">4651</a>
+<a href="#4652" id="4652">4652</a>
+<a href="#4653" id="4653">4653</a>
+<a href="#4654" id="4654">4654</a>
+<a href="#4655" id="4655">4655</a>
+<a href="#4656" id="4656">4656</a>
+<a href="#4657" id="4657">4657</a>
+<a href="#4658" id="4658">4658</a>
+<a href="#4659" id="4659">4659</a>
+<a href="#4660" id="4660">4660</a>
+<a href="#4661" id="4661">4661</a>
+<a href="#4662" id="4662">4662</a>
+<a href="#4663" id="4663">4663</a>
+<a href="#4664" id="4664">4664</a>
+<a href="#4665" id="4665">4665</a>
+<a href="#4666" id="4666">4666</a>
+<a href="#4667" id="4667">4667</a>
+<a href="#4668" id="4668">4668</a>
+<a href="#4669" id="4669">4669</a>
+<a href="#4670" id="4670">4670</a>
+<a href="#4671" id="4671">4671</a>
+<a href="#4672" id="4672">4672</a>
+<a href="#4673" id="4673">4673</a>
+<a href="#4674" id="4674">4674</a>
+<a href="#4675" id="4675">4675</a>
+<a href="#4676" id="4676">4676</a>
+<a href="#4677" id="4677">4677</a>
+<a href="#4678" id="4678">4678</a>
+<a href="#4679" id="4679">4679</a>
+<a href="#4680" id="4680">4680</a>
+<a href="#4681" id="4681">4681</a>
+<a href="#4682" id="4682">4682</a>
+<a href="#4683" id="4683">4683</a>
+<a href="#4684" id="4684">4684</a>
+<a href="#4685" id="4685">4685</a>
+<a href="#4686" id="4686">4686</a>
+<a href="#4687" id="4687">4687</a>
+<a href="#4688" id="4688">4688</a>
+<a href="#4689" id="4689">4689</a>
+<a href="#4690" id="4690">4690</a>
+<a href="#4691" id="4691">4691</a>
+<a href="#4692" id="4692">4692</a>
+<a href="#4693" id="4693">4693</a>
+<a href="#4694" id="4694">4694</a>
+<a href="#4695" id="4695">4695</a>
+<a href="#4696" id="4696">4696</a>
+<a href="#4697" id="4697">4697</a>
+<a href="#4698" id="4698">4698</a>
+<a href="#4699" id="4699">4699</a>
+<a href="#4700" id="4700">4700</a>
+<a href="#4701" id="4701">4701</a>
+<a href="#4702" id="4702">4702</a>
+<a href="#4703" id="4703">4703</a>
+<a href="#4704" id="4704">4704</a>
+<a href="#4705" id="4705">4705</a>
+<a href="#4706" id="4706">4706</a>
+<a href="#4707" id="4707">4707</a>
+<a href="#4708" id="4708">4708</a>
+<a href="#4709" id="4709">4709</a>
+<a href="#4710" id="4710">4710</a>
+<a href="#4711" id="4711">4711</a>
+<a href="#4712" id="4712">4712</a>
+<a href="#4713" id="4713">4713</a>
+<a href="#4714" id="4714">4714</a>
+<a href="#4715" id="4715">4715</a>
+<a href="#4716" id="4716">4716</a>
+<a href="#4717" id="4717">4717</a>
+<a href="#4718" id="4718">4718</a>
+<a href="#4719" id="4719">4719</a>
+<a href="#4720" id="4720">4720</a>
+<a href="#4721" id="4721">4721</a>
+<a href="#4722" id="4722">4722</a>
+<a href="#4723" id="4723">4723</a>
+<a href="#4724" id="4724">4724</a>
+<a href="#4725" id="4725">4725</a>
+<a href="#4726" id="4726">4726</a>
+<a href="#4727" id="4727">4727</a>
+<a href="#4728" id="4728">4728</a>
+<a href="#4729" id="4729">4729</a>
+<a href="#4730" id="4730">4730</a>
+<a href="#4731" id="4731">4731</a>
+<a href="#4732" id="4732">4732</a>
+<a href="#4733" id="4733">4733</a>
+<a href="#4734" id="4734">4734</a>
+<a href="#4735" id="4735">4735</a>
+<a href="#4736" id="4736">4736</a>
+<a href="#4737" id="4737">4737</a>
+<a href="#4738" id="4738">4738</a>
+<a href="#4739" id="4739">4739</a>
+<a href="#4740" id="4740">4740</a>
+<a href="#4741" id="4741">4741</a>
+<a href="#4742" id="4742">4742</a>
+<a href="#4743" id="4743">4743</a>
+<a href="#4744" id="4744">4744</a>
+<a href="#4745" id="4745">4745</a>
+<a href="#4746" id="4746">4746</a>
+<a href="#4747" id="4747">4747</a>
+<a href="#4748" id="4748">4748</a>
+<a href="#4749" id="4749">4749</a>
+<a href="#4750" id="4750">4750</a>
+<a href="#4751" id="4751">4751</a>
+<a href="#4752" id="4752">4752</a>
+<a href="#4753" id="4753">4753</a>
+<a href="#4754" id="4754">4754</a>
+<a href="#4755" id="4755">4755</a>
+<a href="#4756" id="4756">4756</a>
+<a href="#4757" id="4757">4757</a>
+<a href="#4758" id="4758">4758</a>
+<a href="#4759" id="4759">4759</a>
+<a href="#4760" id="4760">4760</a>
+<a href="#4761" id="4761">4761</a>
+<a href="#4762" id="4762">4762</a>
+<a href="#4763" id="4763">4763</a>
+<a href="#4764" id="4764">4764</a>
+<a href="#4765" id="4765">4765</a>
+<a href="#4766" id="4766">4766</a>
+<a href="#4767" id="4767">4767</a>
+<a href="#4768" id="4768">4768</a>
+<a href="#4769" id="4769">4769</a>
+<a href="#4770" id="4770">4770</a>
+<a href="#4771" id="4771">4771</a>
+<a href="#4772" id="4772">4772</a>
+<a href="#4773" id="4773">4773</a>
+<a href="#4774" id="4774">4774</a>
+<a href="#4775" id="4775">4775</a>
+<a href="#4776" id="4776">4776</a>
+<a href="#4777" id="4777">4777</a>
+<a href="#4778" id="4778">4778</a>
+<a href="#4779" id="4779">4779</a>
+<a href="#4780" id="4780">4780</a>
+<a href="#4781" id="4781">4781</a>
+<a href="#4782" id="4782">4782</a>
+<a href="#4783" id="4783">4783</a>
+<a href="#4784" id="4784">4784</a>
+<a href="#4785" id="4785">4785</a>
+<a href="#4786" id="4786">4786</a>
+<a href="#4787" id="4787">4787</a>
+<a href="#4788" id="4788">4788</a>
+<a href="#4789" id="4789">4789</a>
+<a href="#4790" id="4790">4790</a>
+<a href="#4791" id="4791">4791</a>
+<a href="#4792" id="4792">4792</a>
+<a href="#4793" id="4793">4793</a>
+<a href="#4794" id="4794">4794</a>
+<a href="#4795" id="4795">4795</a>
+<a href="#4796" id="4796">4796</a>
+<a href="#4797" id="4797">4797</a>
+<a href="#4798" id="4798">4798</a>
+<a href="#4799" id="4799">4799</a>
+<a href="#4800" id="4800">4800</a>
+<a href="#4801" id="4801">4801</a>
+<a href="#4802" id="4802">4802</a>
+<a href="#4803" id="4803">4803</a>
+<a href="#4804" id="4804">4804</a>
+<a href="#4805" id="4805">4805</a>
+<a href="#4806" id="4806">4806</a>
+<a href="#4807" id="4807">4807</a>
+<a href="#4808" id="4808">4808</a>
+<a href="#4809" id="4809">4809</a>
+<a href="#4810" id="4810">4810</a>
+<a href="#4811" id="4811">4811</a>
+<a href="#4812" id="4812">4812</a>
+<a href="#4813" id="4813">4813</a>
+<a href="#4814" id="4814">4814</a>
+<a href="#4815" id="4815">4815</a>
+<a href="#4816" id="4816">4816</a>
+<a href="#4817" id="4817">4817</a>
+<a href="#4818" id="4818">4818</a>
+<a href="#4819" id="4819">4819</a>
+<a href="#4820" id="4820">4820</a>
+<a href="#4821" id="4821">4821</a>
+<a href="#4822" id="4822">4822</a>
+<a href="#4823" id="4823">4823</a>
+<a href="#4824" id="4824">4824</a>
+<a href="#4825" id="4825">4825</a>
+<a href="#4826" id="4826">4826</a>
+<a href="#4827" id="4827">4827</a>
+<a href="#4828" id="4828">4828</a>
+<a href="#4829" id="4829">4829</a>
+<a href="#4830" id="4830">4830</a>
+<a href="#4831" id="4831">4831</a>
+<a href="#4832" id="4832">4832</a>
+<a href="#4833" id="4833">4833</a>
+<a href="#4834" id="4834">4834</a>
+<a href="#4835" id="4835">4835</a>
+<a href="#4836" id="4836">4836</a>
+<a href="#4837" id="4837">4837</a>
+<a href="#4838" id="4838">4838</a>
+<a href="#4839" id="4839">4839</a>
+<a href="#4840" id="4840">4840</a>
+<a href="#4841" id="4841">4841</a>
+<a href="#4842" id="4842">4842</a>
+<a href="#4843" id="4843">4843</a>
+<a href="#4844" id="4844">4844</a>
+<a href="#4845" id="4845">4845</a>
+<a href="#4846" id="4846">4846</a>
+<a href="#4847" id="4847">4847</a>
+<a href="#4848" id="4848">4848</a>
+<a href="#4849" id="4849">4849</a>
+<a href="#4850" id="4850">4850</a>
+<a href="#4851" id="4851">4851</a>
+<a href="#4852" id="4852">4852</a>
+<a href="#4853" id="4853">4853</a>
+<a href="#4854" id="4854">4854</a>
+<a href="#4855" id="4855">4855</a>
+<a href="#4856" id="4856">4856</a>
+<a href="#4857" id="4857">4857</a>
+<a href="#4858" id="4858">4858</a>
+<a href="#4859" id="4859">4859</a>
+<a href="#4860" id="4860">4860</a>
+<a href="#4861" id="4861">4861</a>
+<a href="#4862" id="4862">4862</a>
+<a href="#4863" id="4863">4863</a>
+<a href="#4864" id="4864">4864</a>
+<a href="#4865" id="4865">4865</a>
+<a href="#4866" id="4866">4866</a>
+<a href="#4867" id="4867">4867</a>
+<a href="#4868" id="4868">4868</a>
+<a href="#4869" id="4869">4869</a>
+<a href="#4870" id="4870">4870</a>
+<a href="#4871" id="4871">4871</a>
+<a href="#4872" id="4872">4872</a>
+<a href="#4873" id="4873">4873</a>
+<a href="#4874" id="4874">4874</a>
+<a href="#4875" id="4875">4875</a>
+<a href="#4876" id="4876">4876</a>
+<a href="#4877" id="4877">4877</a>
+<a href="#4878" id="4878">4878</a>
+<a href="#4879" id="4879">4879</a>
+<a href="#4880" id="4880">4880</a>
+<a href="#4881" id="4881">4881</a>
+<a href="#4882" id="4882">4882</a>
+<a href="#4883" id="4883">4883</a>
+<a href="#4884" id="4884">4884</a>
+<a href="#4885" id="4885">4885</a>
+<a href="#4886" id="4886">4886</a>
+<a href="#4887" id="4887">4887</a>
+<a href="#4888" id="4888">4888</a>
+<a href="#4889" id="4889">4889</a>
+<a href="#4890" id="4890">4890</a>
+<a href="#4891" id="4891">4891</a>
+<a href="#4892" id="4892">4892</a>
+<a href="#4893" id="4893">4893</a>
+<a href="#4894" id="4894">4894</a>
+<a href="#4895" id="4895">4895</a>
+<a href="#4896" id="4896">4896</a>
+<a href="#4897" id="4897">4897</a>
+<a href="#4898" id="4898">4898</a>
+<a href="#4899" id="4899">4899</a>
+<a href="#4900" id="4900">4900</a>
+<a href="#4901" id="4901">4901</a>
+<a href="#4902" id="4902">4902</a>
+<a href="#4903" id="4903">4903</a>
+<a href="#4904" id="4904">4904</a>
+<a href="#4905" id="4905">4905</a>
+<a href="#4906" id="4906">4906</a>
+<a href="#4907" id="4907">4907</a>
+<a href="#4908" id="4908">4908</a>
+<a href="#4909" id="4909">4909</a>
+<a href="#4910" id="4910">4910</a>
+<a href="#4911" id="4911">4911</a>
+<a href="#4912" id="4912">4912</a>
+<a href="#4913" id="4913">4913</a>
+<a href="#4914" id="4914">4914</a>
+<a href="#4915" id="4915">4915</a>
+<a href="#4916" id="4916">4916</a>
+<a href="#4917" id="4917">4917</a>
+<a href="#4918" id="4918">4918</a>
+<a href="#4919" id="4919">4919</a>
+<a href="#4920" id="4920">4920</a>
+<a href="#4921" id="4921">4921</a>
+<a href="#4922" id="4922">4922</a>
+<a href="#4923" id="4923">4923</a>
+<a href="#4924" id="4924">4924</a>
+<a href="#4925" id="4925">4925</a>
+<a href="#4926" id="4926">4926</a>
+<a href="#4927" id="4927">4927</a>
+<a href="#4928" id="4928">4928</a>
+<a href="#4929" id="4929">4929</a>
+<a href="#4930" id="4930">4930</a>
+<a href="#4931" id="4931">4931</a>
+<a href="#4932" id="4932">4932</a>
+<a href="#4933" id="4933">4933</a>
+<a href="#4934" id="4934">4934</a>
+<a href="#4935" id="4935">4935</a>
+<a href="#4936" id="4936">4936</a>
+<a href="#4937" id="4937">4937</a>
+<a href="#4938" id="4938">4938</a>
+<a href="#4939" id="4939">4939</a>
+<a href="#4940" id="4940">4940</a>
+<a href="#4941" id="4941">4941</a>
+<a href="#4942" id="4942">4942</a>
+<a href="#4943" id="4943">4943</a>
+<a href="#4944" id="4944">4944</a>
+<a href="#4945" id="4945">4945</a>
+<a href="#4946" id="4946">4946</a>
+<a href="#4947" id="4947">4947</a>
+<a href="#4948" id="4948">4948</a>
+<a href="#4949" id="4949">4949</a>
+<a href="#4950" id="4950">4950</a>
+<a href="#4951" id="4951">4951</a>
+<a href="#4952" id="4952">4952</a>
+<a href="#4953" id="4953">4953</a>
+<a href="#4954" id="4954">4954</a>
+<a href="#4955" id="4955">4955</a>
+<a href="#4956" id="4956">4956</a>
+<a href="#4957" id="4957">4957</a>
+<a href="#4958" id="4958">4958</a>
+<a href="#4959" id="4959">4959</a>
+<a href="#4960" id="4960">4960</a>
+<a href="#4961" id="4961">4961</a>
+<a href="#4962" id="4962">4962</a>
+<a href="#4963" id="4963">4963</a>
+<a href="#4964" id="4964">4964</a>
+<a href="#4965" id="4965">4965</a>
+<a href="#4966" id="4966">4966</a>
+<a href="#4967" id="4967">4967</a>
+<a href="#4968" id="4968">4968</a>
+<a href="#4969" id="4969">4969</a>
+<a href="#4970" id="4970">4970</a>
+<a href="#4971" id="4971">4971</a>
+<a href="#4972" id="4972">4972</a>
+<a href="#4973" id="4973">4973</a>
+<a href="#4974" id="4974">4974</a>
+<a href="#4975" id="4975">4975</a>
+<a href="#4976" id="4976">4976</a>
+<a href="#4977" id="4977">4977</a>
+<a href="#4978" id="4978">4978</a>
+<a href="#4979" id="4979">4979</a>
+<a href="#4980" id="4980">4980</a>
+<a href="#4981" id="4981">4981</a>
+<a href="#4982" id="4982">4982</a>
+<a href="#4983" id="4983">4983</a>
+<a href="#4984" id="4984">4984</a>
+<a href="#4985" id="4985">4985</a>
+<a href="#4986" id="4986">4986</a>
+<a href="#4987" id="4987">4987</a>
+<a href="#4988" id="4988">4988</a>
+<a href="#4989" id="4989">4989</a>
+<a href="#4990" id="4990">4990</a>
+<a href="#4991" id="4991">4991</a>
+<a href="#4992" id="4992">4992</a>
+<a href="#4993" id="4993">4993</a>
+<a href="#4994" id="4994">4994</a>
+<a href="#4995" id="4995">4995</a>
+<a href="#4996" id="4996">4996</a>
+<a href="#4997" id="4997">4997</a>
+<a href="#4998" id="4998">4998</a>
+<a href="#4999" id="4999">4999</a>
+<a href="#5000" id="5000">5000</a>
+<a href="#5001" id="5001">5001</a>
+<a href="#5002" id="5002">5002</a>
+<a href="#5003" id="5003">5003</a>
+<a href="#5004" id="5004">5004</a>
+<a href="#5005" id="5005">5005</a>
+<a href="#5006" id="5006">5006</a>
+<a href="#5007" id="5007">5007</a>
+<a href="#5008" id="5008">5008</a>
+<a href="#5009" id="5009">5009</a>
+<a href="#5010" id="5010">5010</a>
+<a href="#5011" id="5011">5011</a>
+<a href="#5012" id="5012">5012</a>
+<a href="#5013" id="5013">5013</a>
+<a href="#5014" id="5014">5014</a>
+<a href="#5015" id="5015">5015</a>
+<a href="#5016" id="5016">5016</a>
+<a href="#5017" id="5017">5017</a>
+<a href="#5018" id="5018">5018</a>
+<a href="#5019" id="5019">5019</a>
+<a href="#5020" id="5020">5020</a>
+<a href="#5021" id="5021">5021</a>
+<a href="#5022" id="5022">5022</a>
+<a href="#5023" id="5023">5023</a>
+<a href="#5024" id="5024">5024</a>
+<a href="#5025" id="5025">5025</a>
+<a href="#5026" id="5026">5026</a>
+<a href="#5027" id="5027">5027</a>
+<a href="#5028" id="5028">5028</a>
+<a href="#5029" id="5029">5029</a>
+<a href="#5030" id="5030">5030</a>
+<a href="#5031" id="5031">5031</a>
+<a href="#5032" id="5032">5032</a>
+<a href="#5033" id="5033">5033</a>
+<a href="#5034" id="5034">5034</a>
+<a href="#5035" id="5035">5035</a>
+<a href="#5036" id="5036">5036</a>
+<a href="#5037" id="5037">5037</a>
+<a href="#5038" id="5038">5038</a>
+<a href="#5039" id="5039">5039</a>
+<a href="#5040" id="5040">5040</a>
+<a href="#5041" id="5041">5041</a>
+<a href="#5042" id="5042">5042</a>
+<a href="#5043" id="5043">5043</a>
+<a href="#5044" id="5044">5044</a>
+<a href="#5045" id="5045">5045</a>
+<a href="#5046" id="5046">5046</a>
+<a href="#5047" id="5047">5047</a>
+<a href="#5048" id="5048">5048</a>
+<a href="#5049" id="5049">5049</a>
+<a href="#5050" id="5050">5050</a>
+<a href="#5051" id="5051">5051</a>
+<a href="#5052" id="5052">5052</a>
+<a href="#5053" id="5053">5053</a>
+<a href="#5054" id="5054">5054</a>
+<a href="#5055" id="5055">5055</a>
+<a href="#5056" id="5056">5056</a>
+<a href="#5057" id="5057">5057</a>
+<a href="#5058" id="5058">5058</a>
+<a href="#5059" id="5059">5059</a>
+<a href="#5060" id="5060">5060</a>
+<a href="#5061" id="5061">5061</a>
+<a href="#5062" id="5062">5062</a>
+<a href="#5063" id="5063">5063</a>
+<a href="#5064" id="5064">5064</a>
+<a href="#5065" id="5065">5065</a>
+<a href="#5066" id="5066">5066</a>
+<a href="#5067" id="5067">5067</a>
+<a href="#5068" id="5068">5068</a>
+<a href="#5069" id="5069">5069</a>
+<a href="#5070" id="5070">5070</a>
+<a href="#5071" id="5071">5071</a>
+<a href="#5072" id="5072">5072</a>
+<a href="#5073" id="5073">5073</a>
+<a href="#5074" id="5074">5074</a>
+<a href="#5075" id="5075">5075</a>
+<a href="#5076" id="5076">5076</a>
+<a href="#5077" id="5077">5077</a>
+<a href="#5078" id="5078">5078</a>
+<a href="#5079" id="5079">5079</a>
+<a href="#5080" id="5080">5080</a>
+<a href="#5081" id="5081">5081</a>
+<a href="#5082" id="5082">5082</a>
+<a href="#5083" id="5083">5083</a>
+<a href="#5084" id="5084">5084</a>
+<a href="#5085" id="5085">5085</a>
+<a href="#5086" id="5086">5086</a>
+<a href="#5087" id="5087">5087</a>
+<a href="#5088" id="5088">5088</a>
+<a href="#5089" id="5089">5089</a>
+<a href="#5090" id="5090">5090</a>
+<a href="#5091" id="5091">5091</a>
+<a href="#5092" id="5092">5092</a>
+<a href="#5093" id="5093">5093</a>
+<a href="#5094" id="5094">5094</a>
+<a href="#5095" id="5095">5095</a>
+<a href="#5096" id="5096">5096</a>
+<a href="#5097" id="5097">5097</a>
+<a href="#5098" id="5098">5098</a>
+<a href="#5099" id="5099">5099</a>
+<a href="#5100" id="5100">5100</a>
+<a href="#5101" id="5101">5101</a>
+<a href="#5102" id="5102">5102</a>
+<a href="#5103" id="5103">5103</a>
+<a href="#5104" id="5104">5104</a>
+<a href="#5105" id="5105">5105</a>
+<a href="#5106" id="5106">5106</a>
+<a href="#5107" id="5107">5107</a>
+<a href="#5108" id="5108">5108</a>
+<a href="#5109" id="5109">5109</a>
+<a href="#5110" id="5110">5110</a>
+<a href="#5111" id="5111">5111</a>
+<a href="#5112" id="5112">5112</a>
+<a href="#5113" id="5113">5113</a>
+<a href="#5114" id="5114">5114</a>
+<a href="#5115" id="5115">5115</a>
+<a href="#5116" id="5116">5116</a>
+<a href="#5117" id="5117">5117</a>
+<a href="#5118" id="5118">5118</a>
+<a href="#5119" id="5119">5119</a>
+<a href="#5120" id="5120">5120</a>
+<a href="#5121" id="5121">5121</a>
+<a href="#5122" id="5122">5122</a>
+<a href="#5123" id="5123">5123</a>
+<a href="#5124" id="5124">5124</a>
+<a href="#5125" id="5125">5125</a>
+<a href="#5126" id="5126">5126</a>
+<a href="#5127" id="5127">5127</a>
+<a href="#5128" id="5128">5128</a>
+<a href="#5129" id="5129">5129</a>
+<a href="#5130" id="5130">5130</a>
+<a href="#5131" id="5131">5131</a>
+<a href="#5132" id="5132">5132</a>
+<a href="#5133" id="5133">5133</a>
+<a href="#5134" id="5134">5134</a>
+<a href="#5135" id="5135">5135</a>
+<a href="#5136" id="5136">5136</a>
+<a href="#5137" id="5137">5137</a>
+<a href="#5138" id="5138">5138</a>
+<a href="#5139" id="5139">5139</a>
+<a href="#5140" id="5140">5140</a>
+<a href="#5141" id="5141">5141</a>
+<a href="#5142" id="5142">5142</a>
+<a href="#5143" id="5143">5143</a>
+<a href="#5144" id="5144">5144</a>
+<a href="#5145" id="5145">5145</a>
+<a href="#5146" id="5146">5146</a>
+<a href="#5147" id="5147">5147</a>
+<a href="#5148" id="5148">5148</a>
+<a href="#5149" id="5149">5149</a>
+<a href="#5150" id="5150">5150</a>
+<a href="#5151" id="5151">5151</a>
+<a href="#5152" id="5152">5152</a>
+<a href="#5153" id="5153">5153</a>
+<a href="#5154" id="5154">5154</a>
+<a href="#5155" id="5155">5155</a>
+<a href="#5156" id="5156">5156</a>
+<a href="#5157" id="5157">5157</a>
+<a href="#5158" id="5158">5158</a>
+<a href="#5159" id="5159">5159</a>
+<a href="#5160" id="5160">5160</a>
+<a href="#5161" id="5161">5161</a>
+<a href="#5162" id="5162">5162</a>
+<a href="#5163" id="5163">5163</a>
+<a href="#5164" id="5164">5164</a>
+<a href="#5165" id="5165">5165</a>
+<a href="#5166" id="5166">5166</a>
+<a href="#5167" id="5167">5167</a>
+<a href="#5168" id="5168">5168</a>
+<a href="#5169" id="5169">5169</a>
+<a href="#5170" id="5170">5170</a>
+<a href="#5171" id="5171">5171</a>
+<a href="#5172" id="5172">5172</a>
+<a href="#5173" id="5173">5173</a>
+<a href="#5174" id="5174">5174</a>
+<a href="#5175" id="5175">5175</a>
+<a href="#5176" id="5176">5176</a>
+<a href="#5177" id="5177">5177</a>
+<a href="#5178" id="5178">5178</a>
+<a href="#5179" id="5179">5179</a>
+<a href="#5180" id="5180">5180</a>
+<a href="#5181" id="5181">5181</a>
+<a href="#5182" id="5182">5182</a>
+<a href="#5183" id="5183">5183</a>
+<a href="#5184" id="5184">5184</a>
+<a href="#5185" id="5185">5185</a>
+<a href="#5186" id="5186">5186</a>
+<a href="#5187" id="5187">5187</a>
+<a href="#5188" id="5188">5188</a>
+<a href="#5189" id="5189">5189</a>
+<a href="#5190" id="5190">5190</a>
+<a href="#5191" id="5191">5191</a>
+<a href="#5192" id="5192">5192</a>
+<a href="#5193" id="5193">5193</a>
+<a href="#5194" id="5194">5194</a>
+<a href="#5195" id="5195">5195</a>
+<a href="#5196" id="5196">5196</a>
+<a href="#5197" id="5197">5197</a>
+<a href="#5198" id="5198">5198</a>
+<a href="#5199" id="5199">5199</a>
+<a href="#5200" id="5200">5200</a>
+<a href="#5201" id="5201">5201</a>
+<a href="#5202" id="5202">5202</a>
+<a href="#5203" id="5203">5203</a>
+<a href="#5204" id="5204">5204</a>
+<a href="#5205" id="5205">5205</a>
+<a href="#5206" id="5206">5206</a>
+<a href="#5207" id="5207">5207</a>
+<a href="#5208" id="5208">5208</a>
+<a href="#5209" id="5209">5209</a>
+<a href="#5210" id="5210">5210</a>
+<a href="#5211" id="5211">5211</a>
+<a href="#5212" id="5212">5212</a>
+<a href="#5213" id="5213">5213</a>
+<a href="#5214" id="5214">5214</a>
+<a href="#5215" id="5215">5215</a>
+<a href="#5216" id="5216">5216</a>
+<a href="#5217" id="5217">5217</a>
+<a href="#5218" id="5218">5218</a>
+<a href="#5219" id="5219">5219</a>
+<a href="#5220" id="5220">5220</a>
+<a href="#5221" id="5221">5221</a>
+<a href="#5222" id="5222">5222</a>
+<a href="#5223" id="5223">5223</a>
+<a href="#5224" id="5224">5224</a>
+<a href="#5225" id="5225">5225</a>
+<a href="#5226" id="5226">5226</a>
+<a href="#5227" id="5227">5227</a>
+<a href="#5228" id="5228">5228</a>
+<a href="#5229" id="5229">5229</a>
+<a href="#5230" id="5230">5230</a>
+<a href="#5231" id="5231">5231</a>
+<a href="#5232" id="5232">5232</a>
+<a href="#5233" id="5233">5233</a>
+<a href="#5234" id="5234">5234</a>
+<a href="#5235" id="5235">5235</a>
+<a href="#5236" id="5236">5236</a>
+<a href="#5237" id="5237">5237</a>
+<a href="#5238" id="5238">5238</a>
+<a href="#5239" id="5239">5239</a>
+<a href="#5240" id="5240">5240</a>
+<a href="#5241" id="5241">5241</a>
+<a href="#5242" id="5242">5242</a>
+<a href="#5243" id="5243">5243</a>
+<a href="#5244" id="5244">5244</a>
+<a href="#5245" id="5245">5245</a>
+<a href="#5246" id="5246">5246</a>
+<a href="#5247" id="5247">5247</a>
+<a href="#5248" id="5248">5248</a>
+<a href="#5249" id="5249">5249</a>
+<a href="#5250" id="5250">5250</a>
+<a href="#5251" id="5251">5251</a>
+<a href="#5252" id="5252">5252</a>
+<a href="#5253" id="5253">5253</a>
+<a href="#5254" id="5254">5254</a>
+<a href="#5255" id="5255">5255</a>
+<a href="#5256" id="5256">5256</a>
+<a href="#5257" id="5257">5257</a>
+<a href="#5258" id="5258">5258</a>
+<a href="#5259" id="5259">5259</a>
+<a href="#5260" id="5260">5260</a>
+<a href="#5261" id="5261">5261</a>
+<a href="#5262" id="5262">5262</a>
+<a href="#5263" id="5263">5263</a>
+<a href="#5264" id="5264">5264</a>
+<a href="#5265" id="5265">5265</a>
+<a href="#5266" id="5266">5266</a>
+<a href="#5267" id="5267">5267</a>
+<a href="#5268" id="5268">5268</a>
+<a href="#5269" id="5269">5269</a>
+<a href="#5270" id="5270">5270</a>
+<a href="#5271" id="5271">5271</a>
+<a href="#5272" id="5272">5272</a>
+<a href="#5273" id="5273">5273</a>
+<a href="#5274" id="5274">5274</a>
+<a href="#5275" id="5275">5275</a>
+<a href="#5276" id="5276">5276</a>
+<a href="#5277" id="5277">5277</a>
+<a href="#5278" id="5278">5278</a>
+<a href="#5279" id="5279">5279</a>
+<a href="#5280" id="5280">5280</a>
+<a href="#5281" id="5281">5281</a>
+<a href="#5282" id="5282">5282</a>
+<a href="#5283" id="5283">5283</a>
+<a href="#5284" id="5284">5284</a>
+<a href="#5285" id="5285">5285</a>
+<a href="#5286" id="5286">5286</a>
+<a href="#5287" id="5287">5287</a>
+<a href="#5288" id="5288">5288</a>
+<a href="#5289" id="5289">5289</a>
+<a href="#5290" id="5290">5290</a>
+<a href="#5291" id="5291">5291</a>
+<a href="#5292" id="5292">5292</a>
+<a href="#5293" id="5293">5293</a>
+<a href="#5294" id="5294">5294</a>
+<a href="#5295" id="5295">5295</a>
+<a href="#5296" id="5296">5296</a>
+<a href="#5297" id="5297">5297</a>
+<a href="#5298" id="5298">5298</a>
+<a href="#5299" id="5299">5299</a>
+<a href="#5300" id="5300">5300</a>
+<a href="#5301" id="5301">5301</a>
+<a href="#5302" id="5302">5302</a>
+<a href="#5303" id="5303">5303</a>
+<a href="#5304" id="5304">5304</a>
+<a href="#5305" id="5305">5305</a>
+<a href="#5306" id="5306">5306</a>
+<a href="#5307" id="5307">5307</a>
+<a href="#5308" id="5308">5308</a>
+<a href="#5309" id="5309">5309</a>
+<a href="#5310" id="5310">5310</a>
+<a href="#5311" id="5311">5311</a>
+<a href="#5312" id="5312">5312</a>
+<a href="#5313" id="5313">5313</a>
+<a href="#5314" id="5314">5314</a>
+<a href="#5315" id="5315">5315</a>
+<a href="#5316" id="5316">5316</a>
+<a href="#5317" id="5317">5317</a>
+<a href="#5318" id="5318">5318</a>
+<a href="#5319" id="5319">5319</a>
+<a href="#5320" id="5320">5320</a>
+<a href="#5321" id="5321">5321</a>
+<a href="#5322" id="5322">5322</a>
+<a href="#5323" id="5323">5323</a>
+<a href="#5324" id="5324">5324</a>
+<a href="#5325" id="5325">5325</a>
+<a href="#5326" id="5326">5326</a>
+<a href="#5327" id="5327">5327</a>
+<a href="#5328" id="5328">5328</a>
+<a href="#5329" id="5329">5329</a>
+<a href="#5330" id="5330">5330</a>
+<a href="#5331" id="5331">5331</a>
+<a href="#5332" id="5332">5332</a>
+<a href="#5333" id="5333">5333</a>
+<a href="#5334" id="5334">5334</a>
+<a href="#5335" id="5335">5335</a>
+<a href="#5336" id="5336">5336</a>
+<a href="#5337" id="5337">5337</a>
+<a href="#5338" id="5338">5338</a>
+<a href="#5339" id="5339">5339</a>
+<a href="#5340" id="5340">5340</a>
+<a href="#5341" id="5341">5341</a>
+<a href="#5342" id="5342">5342</a>
+<a href="#5343" id="5343">5343</a>
+<a href="#5344" id="5344">5344</a>
+<a href="#5345" id="5345">5345</a>
+<a href="#5346" id="5346">5346</a>
+<a href="#5347" id="5347">5347</a>
+<a href="#5348" id="5348">5348</a>
+<a href="#5349" id="5349">5349</a>
+<a href="#5350" id="5350">5350</a>
+<a href="#5351" id="5351">5351</a>
+<a href="#5352" id="5352">5352</a>
+<a href="#5353" id="5353">5353</a>
+<a href="#5354" id="5354">5354</a>
+<a href="#5355" id="5355">5355</a>
+<a href="#5356" id="5356">5356</a>
+<a href="#5357" id="5357">5357</a>
+<a href="#5358" id="5358">5358</a>
+<a href="#5359" id="5359">5359</a>
+<a href="#5360" id="5360">5360</a>
+<a href="#5361" id="5361">5361</a>
+<a href="#5362" id="5362">5362</a>
+<a href="#5363" id="5363">5363</a>
+<a href="#5364" id="5364">5364</a>
+<a href="#5365" id="5365">5365</a>
+<a href="#5366" id="5366">5366</a>
+<a href="#5367" id="5367">5367</a>
+<a href="#5368" id="5368">5368</a>
+<a href="#5369" id="5369">5369</a>
+<a href="#5370" id="5370">5370</a>
+<a href="#5371" id="5371">5371</a>
+<a href="#5372" id="5372">5372</a>
+<a href="#5373" id="5373">5373</a>
+<a href="#5374" id="5374">5374</a>
+<a href="#5375" id="5375">5375</a>
+<a href="#5376" id="5376">5376</a>
+<a href="#5377" id="5377">5377</a>
+<a href="#5378" id="5378">5378</a>
+<a href="#5379" id="5379">5379</a>
+<a href="#5380" id="5380">5380</a>
+<a href="#5381" id="5381">5381</a>
+<a href="#5382" id="5382">5382</a>
+<a href="#5383" id="5383">5383</a>
+<a href="#5384" id="5384">5384</a>
+<a href="#5385" id="5385">5385</a>
+<a href="#5386" id="5386">5386</a>
+<a href="#5387" id="5387">5387</a>
+<a href="#5388" id="5388">5388</a>
+<a href="#5389" id="5389">5389</a>
+<a href="#5390" id="5390">5390</a>
+<a href="#5391" id="5391">5391</a>
+<a href="#5392" id="5392">5392</a>
+<a href="#5393" id="5393">5393</a>
+<a href="#5394" id="5394">5394</a>
+<a href="#5395" id="5395">5395</a>
+<a href="#5396" id="5396">5396</a>
+<a href="#5397" id="5397">5397</a>
+<a href="#5398" id="5398">5398</a>
+<a href="#5399" id="5399">5399</a>
+<a href="#5400" id="5400">5400</a>
+<a href="#5401" id="5401">5401</a>
+<a href="#5402" id="5402">5402</a>
+<a href="#5403" id="5403">5403</a>
+<a href="#5404" id="5404">5404</a>
+<a href="#5405" id="5405">5405</a>
+<a href="#5406" id="5406">5406</a>
+<a href="#5407" id="5407">5407</a>
+<a href="#5408" id="5408">5408</a>
+<a href="#5409" id="5409">5409</a>
+<a href="#5410" id="5410">5410</a>
+<a href="#5411" id="5411">5411</a>
+<a href="#5412" id="5412">5412</a>
+<a href="#5413" id="5413">5413</a>
+<a href="#5414" id="5414">5414</a>
+<a href="#5415" id="5415">5415</a>
+<a href="#5416" id="5416">5416</a>
+<a href="#5417" id="5417">5417</a>
+<a href="#5418" id="5418">5418</a>
+<a href="#5419" id="5419">5419</a>
+<a href="#5420" id="5420">5420</a>
+<a href="#5421" id="5421">5421</a>
+<a href="#5422" id="5422">5422</a>
+<a href="#5423" id="5423">5423</a>
+<a href="#5424" id="5424">5424</a>
+<a href="#5425" id="5425">5425</a>
+<a href="#5426" id="5426">5426</a>
+<a href="#5427" id="5427">5427</a>
+<a href="#5428" id="5428">5428</a>
+<a href="#5429" id="5429">5429</a>
+<a href="#5430" id="5430">5430</a>
+<a href="#5431" id="5431">5431</a>
+<a href="#5432" id="5432">5432</a>
+<a href="#5433" id="5433">5433</a>
+<a href="#5434" id="5434">5434</a>
+<a href="#5435" id="5435">5435</a>
+<a href="#5436" id="5436">5436</a>
+<a href="#5437" id="5437">5437</a>
+<a href="#5438" id="5438">5438</a>
+<a href="#5439" id="5439">5439</a>
+<a href="#5440" id="5440">5440</a>
+<a href="#5441" id="5441">5441</a>
+<a href="#5442" id="5442">5442</a>
+<a href="#5443" id="5443">5443</a>
+<a href="#5444" id="5444">5444</a>
+<a href="#5445" id="5445">5445</a>
+<a href="#5446" id="5446">5446</a>
+<a href="#5447" id="5447">5447</a>
+<a href="#5448" id="5448">5448</a>
+<a href="#5449" id="5449">5449</a>
+<a href="#5450" id="5450">5450</a>
+<a href="#5451" id="5451">5451</a>
+<a href="#5452" id="5452">5452</a>
+<a href="#5453" id="5453">5453</a>
+<a href="#5454" id="5454">5454</a>
+<a href="#5455" id="5455">5455</a>
+<a href="#5456" id="5456">5456</a>
+<a href="#5457" id="5457">5457</a>
+<a href="#5458" id="5458">5458</a>
+<a href="#5459" id="5459">5459</a>
+<a href="#5460" id="5460">5460</a>
+<a href="#5461" id="5461">5461</a>
+<a href="#5462" id="5462">5462</a>
+<a href="#5463" id="5463">5463</a>
+<a href="#5464" id="5464">5464</a>
+<a href="#5465" id="5465">5465</a>
+<a href="#5466" id="5466">5466</a>
+<a href="#5467" id="5467">5467</a>
+<a href="#5468" id="5468">5468</a>
+<a href="#5469" id="5469">5469</a>
+<a href="#5470" id="5470">5470</a>
+<a href="#5471" id="5471">5471</a>
+<a href="#5472" id="5472">5472</a>
+<a href="#5473" id="5473">5473</a>
+<a href="#5474" id="5474">5474</a>
+<a href="#5475" id="5475">5475</a>
+<a href="#5476" id="5476">5476</a>
+<a href="#5477" id="5477">5477</a>
+<a href="#5478" id="5478">5478</a>
+<a href="#5479" id="5479">5479</a>
+<a href="#5480" id="5480">5480</a>
+<a href="#5481" id="5481">5481</a>
+<a href="#5482" id="5482">5482</a>
+<a href="#5483" id="5483">5483</a>
+<a href="#5484" id="5484">5484</a>
+<a href="#5485" id="5485">5485</a>
+<a href="#5486" id="5486">5486</a>
+<a href="#5487" id="5487">5487</a>
+<a href="#5488" id="5488">5488</a>
+<a href="#5489" id="5489">5489</a>
+<a href="#5490" id="5490">5490</a>
+<a href="#5491" id="5491">5491</a>
+<a href="#5492" id="5492">5492</a>
+<a href="#5493" id="5493">5493</a>
+<a href="#5494" id="5494">5494</a>
+<a href="#5495" id="5495">5495</a>
+<a href="#5496" id="5496">5496</a>
+<a href="#5497" id="5497">5497</a>
+<a href="#5498" id="5498">5498</a>
+<a href="#5499" id="5499">5499</a>
+<a href="#5500" id="5500">5500</a>
+<a href="#5501" id="5501">5501</a>
+<a href="#5502" id="5502">5502</a>
+<a href="#5503" id="5503">5503</a>
+<a href="#5504" id="5504">5504</a>
+<a href="#5505" id="5505">5505</a>
+<a href="#5506" id="5506">5506</a>
+<a href="#5507" id="5507">5507</a>
+<a href="#5508" id="5508">5508</a>
+<a href="#5509" id="5509">5509</a>
+<a href="#5510" id="5510">5510</a>
+<a href="#5511" id="5511">5511</a>
+<a href="#5512" id="5512">5512</a>
+<a href="#5513" id="5513">5513</a>
+<a href="#5514" id="5514">5514</a>
+<a href="#5515" id="5515">5515</a>
+<a href="#5516" id="5516">5516</a>
+<a href="#5517" id="5517">5517</a>
+<a href="#5518" id="5518">5518</a>
+<a href="#5519" id="5519">5519</a>
+<a href="#5520" id="5520">5520</a>
+<a href="#5521" id="5521">5521</a>
+<a href="#5522" id="5522">5522</a>
+<a href="#5523" id="5523">5523</a>
+<a href="#5524" id="5524">5524</a>
+<a href="#5525" id="5525">5525</a>
+<a href="#5526" id="5526">5526</a>
+<a href="#5527" id="5527">5527</a>
+<a href="#5528" id="5528">5528</a>
+<a href="#5529" id="5529">5529</a>
+<a href="#5530" id="5530">5530</a>
+<a href="#5531" id="5531">5531</a>
+<a href="#5532" id="5532">5532</a>
+<a href="#5533" id="5533">5533</a>
+<a href="#5534" id="5534">5534</a>
+<a href="#5535" id="5535">5535</a>
+<a href="#5536" id="5536">5536</a>
+<a href="#5537" id="5537">5537</a>
+<a href="#5538" id="5538">5538</a>
+<a href="#5539" id="5539">5539</a>
+<a href="#5540" id="5540">5540</a>
+<a href="#5541" id="5541">5541</a>
+<a href="#5542" id="5542">5542</a>
+<a href="#5543" id="5543">5543</a>
+<a href="#5544" id="5544">5544</a>
+<a href="#5545" id="5545">5545</a>
+<a href="#5546" id="5546">5546</a>
+<a href="#5547" id="5547">5547</a>
+<a href="#5548" id="5548">5548</a>
+<a href="#5549" id="5549">5549</a>
+<a href="#5550" id="5550">5550</a>
+<a href="#5551" id="5551">5551</a>
+<a href="#5552" id="5552">5552</a>
+<a href="#5553" id="5553">5553</a>
+<a href="#5554" id="5554">5554</a>
+<a href="#5555" id="5555">5555</a>
+<a href="#5556" id="5556">5556</a>
+<a href="#5557" id="5557">5557</a>
+<a href="#5558" id="5558">5558</a>
+<a href="#5559" id="5559">5559</a>
+<a href="#5560" id="5560">5560</a>
+<a href="#5561" id="5561">5561</a>
+<a href="#5562" id="5562">5562</a>
+<a href="#5563" id="5563">5563</a>
+<a href="#5564" id="5564">5564</a>
+<a href="#5565" id="5565">5565</a>
+<a href="#5566" id="5566">5566</a>
+<a href="#5567" id="5567">5567</a>
+<a href="#5568" id="5568">5568</a>
+<a href="#5569" id="5569">5569</a>
+<a href="#5570" id="5570">5570</a>
+<a href="#5571" id="5571">5571</a>
+<a href="#5572" id="5572">5572</a>
+<a href="#5573" id="5573">5573</a>
+<a href="#5574" id="5574">5574</a>
+<a href="#5575" id="5575">5575</a>
+<a href="#5576" id="5576">5576</a>
+<a href="#5577" id="5577">5577</a>
+<a href="#5578" id="5578">5578</a>
+<a href="#5579" id="5579">5579</a>
+<a href="#5580" id="5580">5580</a>
+<a href="#5581" id="5581">5581</a>
+<a href="#5582" id="5582">5582</a>
+<a href="#5583" id="5583">5583</a>
+<a href="#5584" id="5584">5584</a>
+<a href="#5585" id="5585">5585</a>
+<a href="#5586" id="5586">5586</a>
+<a href="#5587" id="5587">5587</a>
+<a href="#5588" id="5588">5588</a>
+<a href="#5589" id="5589">5589</a>
+<a href="#5590" id="5590">5590</a>
+<a href="#5591" id="5591">5591</a>
+<a href="#5592" id="5592">5592</a>
+<a href="#5593" id="5593">5593</a>
+<a href="#5594" id="5594">5594</a>
+<a href="#5595" id="5595">5595</a>
+<a href="#5596" id="5596">5596</a>
+<a href="#5597" id="5597">5597</a>
+<a href="#5598" id="5598">5598</a>
+<a href="#5599" id="5599">5599</a>
+<a href="#5600" id="5600">5600</a>
+<a href="#5601" id="5601">5601</a>
+<a href="#5602" id="5602">5602</a>
+<a href="#5603" id="5603">5603</a>
+<a href="#5604" id="5604">5604</a>
+<a href="#5605" id="5605">5605</a>
+<a href="#5606" id="5606">5606</a>
+<a href="#5607" id="5607">5607</a>
+<a href="#5608" id="5608">5608</a>
+<a href="#5609" id="5609">5609</a>
+<a href="#5610" id="5610">5610</a>
+<a href="#5611" id="5611">5611</a>
+<a href="#5612" id="5612">5612</a>
+<a href="#5613" id="5613">5613</a>
+<a href="#5614" id="5614">5614</a>
+<a href="#5615" id="5615">5615</a>
+<a href="#5616" id="5616">5616</a>
+<a href="#5617" id="5617">5617</a>
+<a href="#5618" id="5618">5618</a>
+<a href="#5619" id="5619">5619</a>
+<a href="#5620" id="5620">5620</a>
+<a href="#5621" id="5621">5621</a>
+<a href="#5622" id="5622">5622</a>
+<a href="#5623" id="5623">5623</a>
+<a href="#5624" id="5624">5624</a>
+<a href="#5625" id="5625">5625</a>
+<a href="#5626" id="5626">5626</a>
+<a href="#5627" id="5627">5627</a>
+<a href="#5628" id="5628">5628</a>
+<a href="#5629" id="5629">5629</a>
+<a href="#5630" id="5630">5630</a>
+<a href="#5631" id="5631">5631</a>
+<a href="#5632" id="5632">5632</a>
+<a href="#5633" id="5633">5633</a>
+<a href="#5634" id="5634">5634</a>
+<a href="#5635" id="5635">5635</a>
+<a href="#5636" id="5636">5636</a>
+<a href="#5637" id="5637">5637</a>
+<a href="#5638" id="5638">5638</a>
+<a href="#5639" id="5639">5639</a>
+<a href="#5640" id="5640">5640</a>
+<a href="#5641" id="5641">5641</a>
+<a href="#5642" id="5642">5642</a>
+<a href="#5643" id="5643">5643</a>
+<a href="#5644" id="5644">5644</a>
+<a href="#5645" id="5645">5645</a>
+<a href="#5646" id="5646">5646</a>
+<a href="#5647" id="5647">5647</a>
+<a href="#5648" id="5648">5648</a>
+<a href="#5649" id="5649">5649</a>
+<a href="#5650" id="5650">5650</a>
+<a href="#5651" id="5651">5651</a>
+<a href="#5652" id="5652">5652</a>
+<a href="#5653" id="5653">5653</a>
+<a href="#5654" id="5654">5654</a>
+<a href="#5655" id="5655">5655</a>
+<a href="#5656" id="5656">5656</a>
+<a href="#5657" id="5657">5657</a>
+<a href="#5658" id="5658">5658</a>
+<a href="#5659" id="5659">5659</a>
+<a href="#5660" id="5660">5660</a>
+<a href="#5661" id="5661">5661</a>
+<a href="#5662" id="5662">5662</a>
+<a href="#5663" id="5663">5663</a>
+<a href="#5664" id="5664">5664</a>
+<a href="#5665" id="5665">5665</a>
+<a href="#5666" id="5666">5666</a>
+<a href="#5667" id="5667">5667</a>
+<a href="#5668" id="5668">5668</a>
+<a href="#5669" id="5669">5669</a>
+<a href="#5670" id="5670">5670</a>
+<a href="#5671" id="5671">5671</a>
+<a href="#5672" id="5672">5672</a>
+<a href="#5673" id="5673">5673</a>
+<a href="#5674" id="5674">5674</a>
+<a href="#5675" id="5675">5675</a>
+<a href="#5676" id="5676">5676</a>
+<a href="#5677" id="5677">5677</a>
+<a href="#5678" id="5678">5678</a>
+<a href="#5679" id="5679">5679</a>
+<a href="#5680" id="5680">5680</a>
+<a href="#5681" id="5681">5681</a>
+<a href="#5682" id="5682">5682</a>
+<a href="#5683" id="5683">5683</a>
+<a href="#5684" id="5684">5684</a>
+<a href="#5685" id="5685">5685</a>
+<a href="#5686" id="5686">5686</a>
+<a href="#5687" id="5687">5687</a>
+<a href="#5688" id="5688">5688</a>
+<a href="#5689" id="5689">5689</a>
+<a href="#5690" id="5690">5690</a>
+<a href="#5691" id="5691">5691</a>
+<a href="#5692" id="5692">5692</a>
+<a href="#5693" id="5693">5693</a>
+<a href="#5694" id="5694">5694</a>
+<a href="#5695" id="5695">5695</a>
+<a href="#5696" id="5696">5696</a>
+<a href="#5697" id="5697">5697</a>
+<a href="#5698" id="5698">5698</a>
+<a href="#5699" id="5699">5699</a>
+<a href="#5700" id="5700">5700</a>
+<a href="#5701" id="5701">5701</a>
+<a href="#5702" id="5702">5702</a>
+<a href="#5703" id="5703">5703</a>
+<a href="#5704" id="5704">5704</a>
+<a href="#5705" id="5705">5705</a>
+<a href="#5706" id="5706">5706</a>
+<a href="#5707" id="5707">5707</a>
+<a href="#5708" id="5708">5708</a>
+<a href="#5709" id="5709">5709</a>
+<a href="#5710" id="5710">5710</a>
+<a href="#5711" id="5711">5711</a>
+<a href="#5712" id="5712">5712</a>
+<a href="#5713" id="5713">5713</a>
+<a href="#5714" id="5714">5714</a>
+<a href="#5715" id="5715">5715</a>
+<a href="#5716" id="5716">5716</a>
+<a href="#5717" id="5717">5717</a>
+<a href="#5718" id="5718">5718</a>
+<a href="#5719" id="5719">5719</a>
+<a href="#5720" id="5720">5720</a>
+<a href="#5721" id="5721">5721</a>
+<a href="#5722" id="5722">5722</a>
+<a href="#5723" id="5723">5723</a>
+<a href="#5724" id="5724">5724</a>
+<a href="#5725" id="5725">5725</a>
+<a href="#5726" id="5726">5726</a>
+<a href="#5727" id="5727">5727</a>
+<a href="#5728" id="5728">5728</a>
+<a href="#5729" id="5729">5729</a>
+<a href="#5730" id="5730">5730</a>
+<a href="#5731" id="5731">5731</a>
+<a href="#5732" id="5732">5732</a>
+<a href="#5733" id="5733">5733</a>
+<a href="#5734" id="5734">5734</a>
+<a href="#5735" id="5735">5735</a>
+<a href="#5736" id="5736">5736</a>
+<a href="#5737" id="5737">5737</a>
+<a href="#5738" id="5738">5738</a>
+<a href="#5739" id="5739">5739</a>
+<a href="#5740" id="5740">5740</a>
+<a href="#5741" id="5741">5741</a>
+<a href="#5742" id="5742">5742</a>
+<a href="#5743" id="5743">5743</a>
+<a href="#5744" id="5744">5744</a>
+<a href="#5745" id="5745">5745</a>
+<a href="#5746" id="5746">5746</a>
+<a href="#5747" id="5747">5747</a>
+<a href="#5748" id="5748">5748</a>
+<a href="#5749" id="5749">5749</a>
+<a href="#5750" id="5750">5750</a>
+<a href="#5751" id="5751">5751</a>
+<a href="#5752" id="5752">5752</a>
+<a href="#5753" id="5753">5753</a>
+<a href="#5754" id="5754">5754</a>
+<a href="#5755" id="5755">5755</a>
+<a href="#5756" id="5756">5756</a>
+<a href="#5757" id="5757">5757</a>
+<a href="#5758" id="5758">5758</a>
+<a href="#5759" id="5759">5759</a>
+<a href="#5760" id="5760">5760</a>
+<a href="#5761" id="5761">5761</a>
+<a href="#5762" id="5762">5762</a>
+<a href="#5763" id="5763">5763</a>
+<a href="#5764" id="5764">5764</a>
+<a href="#5765" id="5765">5765</a>
+<a href="#5766" id="5766">5766</a>
+<a href="#5767" id="5767">5767</a>
+<a href="#5768" id="5768">5768</a>
+<a href="#5769" id="5769">5769</a>
+<a href="#5770" id="5770">5770</a>
+<a href="#5771" id="5771">5771</a>
+<a href="#5772" id="5772">5772</a>
+<a href="#5773" id="5773">5773</a>
+<a href="#5774" id="5774">5774</a>
+<a href="#5775" id="5775">5775</a>
+<a href="#5776" id="5776">5776</a>
+<a href="#5777" id="5777">5777</a>
+<a href="#5778" id="5778">5778</a>
+<a href="#5779" id="5779">5779</a>
+<a href="#5780" id="5780">5780</a>
+<a href="#5781" id="5781">5781</a>
+<a href="#5782" id="5782">5782</a>
+<a href="#5783" id="5783">5783</a>
+<a href="#5784" id="5784">5784</a>
+<a href="#5785" id="5785">5785</a>
+<a href="#5786" id="5786">5786</a>
+<a href="#5787" id="5787">5787</a>
+<a href="#5788" id="5788">5788</a>
+<a href="#5789" id="5789">5789</a>
+<a href="#5790" id="5790">5790</a>
+<a href="#5791" id="5791">5791</a>
+<a href="#5792" id="5792">5792</a>
+<a href="#5793" id="5793">5793</a>
+<a href="#5794" id="5794">5794</a>
+<a href="#5795" id="5795">5795</a>
+<a href="#5796" id="5796">5796</a>
+<a href="#5797" id="5797">5797</a>
+<a href="#5798" id="5798">5798</a>
+<a href="#5799" id="5799">5799</a>
+<a href="#5800" id="5800">5800</a>
+<a href="#5801" id="5801">5801</a>
+<a href="#5802" id="5802">5802</a>
+<a href="#5803" id="5803">5803</a>
+<a href="#5804" id="5804">5804</a>
+<a href="#5805" id="5805">5805</a>
+<a href="#5806" id="5806">5806</a>
+<a href="#5807" id="5807">5807</a>
+<a href="#5808" id="5808">5808</a>
+<a href="#5809" id="5809">5809</a>
+<a href="#5810" id="5810">5810</a>
+<a href="#5811" id="5811">5811</a>
+<a href="#5812" id="5812">5812</a>
+<a href="#5813" id="5813">5813</a>
+<a href="#5814" id="5814">5814</a>
+<a href="#5815" id="5815">5815</a>
+<a href="#5816" id="5816">5816</a>
+<a href="#5817" id="5817">5817</a>
+<a href="#5818" id="5818">5818</a>
+<a href="#5819" id="5819">5819</a>
+<a href="#5820" id="5820">5820</a>
+<a href="#5821" id="5821">5821</a>
+<a href="#5822" id="5822">5822</a>
+<a href="#5823" id="5823">5823</a>
+<a href="#5824" id="5824">5824</a>
+<a href="#5825" id="5825">5825</a>
+<a href="#5826" id="5826">5826</a>
+<a href="#5827" id="5827">5827</a>
+<a href="#5828" id="5828">5828</a>
+<a href="#5829" id="5829">5829</a>
+<a href="#5830" id="5830">5830</a>
+<a href="#5831" id="5831">5831</a>
+<a href="#5832" id="5832">5832</a>
+<a href="#5833" id="5833">5833</a>
+<a href="#5834" id="5834">5834</a>
+<a href="#5835" id="5835">5835</a>
+<a href="#5836" id="5836">5836</a>
+<a href="#5837" id="5837">5837</a>
+<a href="#5838" id="5838">5838</a>
+<a href="#5839" id="5839">5839</a>
+<a href="#5840" id="5840">5840</a>
+<a href="#5841" id="5841">5841</a>
+<a href="#5842" id="5842">5842</a>
+<a href="#5843" id="5843">5843</a>
+<a href="#5844" id="5844">5844</a>
+<a href="#5845" id="5845">5845</a>
+<a href="#5846" id="5846">5846</a>
+<a href="#5847" id="5847">5847</a>
+<a href="#5848" id="5848">5848</a>
+<a href="#5849" id="5849">5849</a>
+<a href="#5850" id="5850">5850</a>
+<a href="#5851" id="5851">5851</a>
+<a href="#5852" id="5852">5852</a>
+<a href="#5853" id="5853">5853</a>
+<a href="#5854" id="5854">5854</a>
+<a href="#5855" id="5855">5855</a>
+<a href="#5856" id="5856">5856</a>
+<a href="#5857" id="5857">5857</a>
+<a href="#5858" id="5858">5858</a>
+<a href="#5859" id="5859">5859</a>
+<a href="#5860" id="5860">5860</a>
+<a href="#5861" id="5861">5861</a>
+<a href="#5862" id="5862">5862</a>
+<a href="#5863" id="5863">5863</a>
+<a href="#5864" id="5864">5864</a>
+<a href="#5865" id="5865">5865</a>
+<a href="#5866" id="5866">5866</a>
+<a href="#5867" id="5867">5867</a>
+<a href="#5868" id="5868">5868</a>
+<a href="#5869" id="5869">5869</a>
+<a href="#5870" id="5870">5870</a>
+<a href="#5871" id="5871">5871</a>
+<a href="#5872" id="5872">5872</a>
+<a href="#5873" id="5873">5873</a>
+<a href="#5874" id="5874">5874</a>
+<a href="#5875" id="5875">5875</a>
+<a href="#5876" id="5876">5876</a>
+<a href="#5877" id="5877">5877</a>
+<a href="#5878" id="5878">5878</a>
+<a href="#5879" id="5879">5879</a>
+<a href="#5880" id="5880">5880</a>
+<a href="#5881" id="5881">5881</a>
+<a href="#5882" id="5882">5882</a>
+<a href="#5883" id="5883">5883</a>
+<a href="#5884" id="5884">5884</a>
+<a href="#5885" id="5885">5885</a>
+<a href="#5886" id="5886">5886</a>
+<a href="#5887" id="5887">5887</a>
+<a href="#5888" id="5888">5888</a>
+<a href="#5889" id="5889">5889</a>
+<a href="#5890" id="5890">5890</a>
+<a href="#5891" id="5891">5891</a>
+<a href="#5892" id="5892">5892</a>
+<a href="#5893" id="5893">5893</a>
+<a href="#5894" id="5894">5894</a>
+<a href="#5895" id="5895">5895</a>
+<a href="#5896" id="5896">5896</a>
+<a href="#5897" id="5897">5897</a>
+<a href="#5898" id="5898">5898</a>
+<a href="#5899" id="5899">5899</a>
+<a href="#5900" id="5900">5900</a>
+<a href="#5901" id="5901">5901</a>
+<a href="#5902" id="5902">5902</a>
+<a href="#5903" id="5903">5903</a>
+<a href="#5904" id="5904">5904</a>
+<a href="#5905" id="5905">5905</a>
+<a href="#5906" id="5906">5906</a>
+<a href="#5907" id="5907">5907</a>
+<a href="#5908" id="5908">5908</a>
+<a href="#5909" id="5909">5909</a>
+<a href="#5910" id="5910">5910</a>
+<a href="#5911" id="5911">5911</a>
+<a href="#5912" id="5912">5912</a>
+<a href="#5913" id="5913">5913</a>
+<a href="#5914" id="5914">5914</a>
+<a href="#5915" id="5915">5915</a>
+<a href="#5916" id="5916">5916</a>
+<a href="#5917" id="5917">5917</a>
+<a href="#5918" id="5918">5918</a>
+<a href="#5919" id="5919">5919</a>
+<a href="#5920" id="5920">5920</a>
+<a href="#5921" id="5921">5921</a>
+<a href="#5922" id="5922">5922</a>
+<a href="#5923" id="5923">5923</a>
+<a href="#5924" id="5924">5924</a>
+<a href="#5925" id="5925">5925</a>
+<a href="#5926" id="5926">5926</a>
+<a href="#5927" id="5927">5927</a>
+<a href="#5928" id="5928">5928</a>
+<a href="#5929" id="5929">5929</a>
+<a href="#5930" id="5930">5930</a>
+<a href="#5931" id="5931">5931</a>
+<a href="#5932" id="5932">5932</a>
+<a href="#5933" id="5933">5933</a>
+<a href="#5934" id="5934">5934</a>
+<a href="#5935" id="5935">5935</a>
+<a href="#5936" id="5936">5936</a>
+<a href="#5937" id="5937">5937</a>
+<a href="#5938" id="5938">5938</a>
+<a href="#5939" id="5939">5939</a>
+<a href="#5940" id="5940">5940</a>
+<a href="#5941" id="5941">5941</a>
+<a href="#5942" id="5942">5942</a>
+<a href="#5943" id="5943">5943</a>
+<a href="#5944" id="5944">5944</a>
+<a href="#5945" id="5945">5945</a>
+<a href="#5946" id="5946">5946</a>
+<a href="#5947" id="5947">5947</a>
+<a href="#5948" id="5948">5948</a>
+<a href="#5949" id="5949">5949</a>
+<a href="#5950" id="5950">5950</a>
+<a href="#5951" id="5951">5951</a>
+<a href="#5952" id="5952">5952</a>
+<a href="#5953" id="5953">5953</a>
+<a href="#5954" id="5954">5954</a>
+<a href="#5955" id="5955">5955</a>
+<a href="#5956" id="5956">5956</a>
+<a href="#5957" id="5957">5957</a>
+<a href="#5958" id="5958">5958</a>
+<a href="#5959" id="5959">5959</a>
+<a href="#5960" id="5960">5960</a>
+<a href="#5961" id="5961">5961</a>
+<a href="#5962" id="5962">5962</a>
+<a href="#5963" id="5963">5963</a>
+<a href="#5964" id="5964">5964</a>
+<a href="#5965" id="5965">5965</a>
+<a href="#5966" id="5966">5966</a>
+<a href="#5967" id="5967">5967</a>
+<a href="#5968" id="5968">5968</a>
+<a href="#5969" id="5969">5969</a>
+<a href="#5970" id="5970">5970</a>
+<a href="#5971" id="5971">5971</a>
+<a href="#5972" id="5972">5972</a>
+<a href="#5973" id="5973">5973</a>
+<a href="#5974" id="5974">5974</a>
+<a href="#5975" id="5975">5975</a>
+<a href="#5976" id="5976">5976</a>
+<a href="#5977" id="5977">5977</a>
+<a href="#5978" id="5978">5978</a>
+<a href="#5979" id="5979">5979</a>
+<a href="#5980" id="5980">5980</a>
+<a href="#5981" id="5981">5981</a>
+<a href="#5982" id="5982">5982</a>
+<a href="#5983" id="5983">5983</a>
+<a href="#5984" id="5984">5984</a>
+<a href="#5985" id="5985">5985</a>
+<a href="#5986" id="5986">5986</a>
+<a href="#5987" id="5987">5987</a>
+<a href="#5988" id="5988">5988</a>
+<a href="#5989" id="5989">5989</a>
+<a href="#5990" id="5990">5990</a>
+<a href="#5991" id="5991">5991</a>
+<a href="#5992" id="5992">5992</a>
+<a href="#5993" id="5993">5993</a>
+<a href="#5994" id="5994">5994</a>
+<a href="#5995" id="5995">5995</a>
+<a href="#5996" id="5996">5996</a>
+<a href="#5997" id="5997">5997</a>
+<a href="#5998" id="5998">5998</a>
+<a href="#5999" id="5999">5999</a>
+<a href="#6000" id="6000">6000</a>
+<a href="#6001" id="6001">6001</a>
+<a href="#6002" id="6002">6002</a>
+<a href="#6003" id="6003">6003</a>
+<a href="#6004" id="6004">6004</a>
+<a href="#6005" id="6005">6005</a>
+<a href="#6006" id="6006">6006</a>
+<a href="#6007" id="6007">6007</a>
+<a href="#6008" id="6008">6008</a>
+<a href="#6009" id="6009">6009</a>
+<a href="#6010" id="6010">6010</a>
+<a href="#6011" id="6011">6011</a>
+<a href="#6012" id="6012">6012</a>
+<a href="#6013" id="6013">6013</a>
+<a href="#6014" id="6014">6014</a>
+<a href="#6015" id="6015">6015</a>
+<a href="#6016" id="6016">6016</a>
+<a href="#6017" id="6017">6017</a>
+<a href="#6018" id="6018">6018</a>
+<a href="#6019" id="6019">6019</a>
+<a href="#6020" id="6020">6020</a>
+<a href="#6021" id="6021">6021</a>
+<a href="#6022" id="6022">6022</a>
+<a href="#6023" id="6023">6023</a>
+<a href="#6024" id="6024">6024</a>
+<a href="#6025" id="6025">6025</a>
+<a href="#6026" id="6026">6026</a>
+<a href="#6027" id="6027">6027</a>
+<a href="#6028" id="6028">6028</a>
+<a href="#6029" id="6029">6029</a>
+<a href="#6030" id="6030">6030</a>
+<a href="#6031" id="6031">6031</a>
+<a href="#6032" id="6032">6032</a>
+<a href="#6033" id="6033">6033</a>
+<a href="#6034" id="6034">6034</a>
+<a href="#6035" id="6035">6035</a>
+<a href="#6036" id="6036">6036</a>
+<a href="#6037" id="6037">6037</a>
+<a href="#6038" id="6038">6038</a>
+<a href="#6039" id="6039">6039</a>
+<a href="#6040" id="6040">6040</a>
+<a href="#6041" id="6041">6041</a>
+<a href="#6042" id="6042">6042</a>
+<a href="#6043" id="6043">6043</a>
+<a href="#6044" id="6044">6044</a>
+<a href="#6045" id="6045">6045</a>
+<a href="#6046" id="6046">6046</a>
+<a href="#6047" id="6047">6047</a>
+<a href="#6048" id="6048">6048</a>
+<a href="#6049" id="6049">6049</a>
+<a href="#6050" id="6050">6050</a>
+<a href="#6051" id="6051">6051</a>
+<a href="#6052" id="6052">6052</a>
+<a href="#6053" id="6053">6053</a>
+<a href="#6054" id="6054">6054</a>
+<a href="#6055" id="6055">6055</a>
+<a href="#6056" id="6056">6056</a>
+<a href="#6057" id="6057">6057</a>
+<a href="#6058" id="6058">6058</a>
+<a href="#6059" id="6059">6059</a>
+<a href="#6060" id="6060">6060</a>
+<a href="#6061" id="6061">6061</a>
+<a href="#6062" id="6062">6062</a>
+<a href="#6063" id="6063">6063</a>
+<a href="#6064" id="6064">6064</a>
+<a href="#6065" id="6065">6065</a>
+<a href="#6066" id="6066">6066</a>
+<a href="#6067" id="6067">6067</a>
+<a href="#6068" id="6068">6068</a>
+<a href="#6069" id="6069">6069</a>
+<a href="#6070" id="6070">6070</a>
+<a href="#6071" id="6071">6071</a>
+<a href="#6072" id="6072">6072</a>
+<a href="#6073" id="6073">6073</a>
+<a href="#6074" id="6074">6074</a>
+<a href="#6075" id="6075">6075</a>
+<a href="#6076" id="6076">6076</a>
+<a href="#6077" id="6077">6077</a>
+<a href="#6078" id="6078">6078</a>
+<a href="#6079" id="6079">6079</a>
+<a href="#6080" id="6080">6080</a>
+<a href="#6081" id="6081">6081</a>
+<a href="#6082" id="6082">6082</a>
+<a href="#6083" id="6083">6083</a>
+<a href="#6084" id="6084">6084</a>
+<a href="#6085" id="6085">6085</a>
+<a href="#6086" id="6086">6086</a>
+<a href="#6087" id="6087">6087</a>
+<a href="#6088" id="6088">6088</a>
+<a href="#6089" id="6089">6089</a>
+<a href="#6090" id="6090">6090</a>
+<a href="#6091" id="6091">6091</a>
+<a href="#6092" id="6092">6092</a>
+<a href="#6093" id="6093">6093</a>
+<a href="#6094" id="6094">6094</a>
+<a href="#6095" id="6095">6095</a>
+<a href="#6096" id="6096">6096</a>
+<a href="#6097" id="6097">6097</a>
+<a href="#6098" id="6098">6098</a>
+<a href="#6099" id="6099">6099</a>
+<a href="#6100" id="6100">6100</a>
+<a href="#6101" id="6101">6101</a>
+<a href="#6102" id="6102">6102</a>
+<a href="#6103" id="6103">6103</a>
+<a href="#6104" id="6104">6104</a>
+<a href="#6105" id="6105">6105</a>
+<a href="#6106" id="6106">6106</a>
+<a href="#6107" id="6107">6107</a>
+<a href="#6108" id="6108">6108</a>
+<a href="#6109" id="6109">6109</a>
+<a href="#6110" id="6110">6110</a>
+<a href="#6111" id="6111">6111</a>
+<a href="#6112" id="6112">6112</a>
+<a href="#6113" id="6113">6113</a>
+<a href="#6114" id="6114">6114</a>
+<a href="#6115" id="6115">6115</a>
+<a href="#6116" id="6116">6116</a>
+<a href="#6117" id="6117">6117</a>
+<a href="#6118" id="6118">6118</a>
+<a href="#6119" id="6119">6119</a>
+<a href="#6120" id="6120">6120</a>
+<a href="#6121" id="6121">6121</a>
+<a href="#6122" id="6122">6122</a>
+<a href="#6123" id="6123">6123</a>
+<a href="#6124" id="6124">6124</a>
+<a href="#6125" id="6125">6125</a>
+<a href="#6126" id="6126">6126</a>
+<a href="#6127" id="6127">6127</a>
+<a href="#6128" id="6128">6128</a>
+<a href="#6129" id="6129">6129</a>
+<a href="#6130" id="6130">6130</a>
+<a href="#6131" id="6131">6131</a>
+<a href="#6132" id="6132">6132</a>
+<a href="#6133" id="6133">6133</a>
+<a href="#6134" id="6134">6134</a>
+<a href="#6135" id="6135">6135</a>
+<a href="#6136" id="6136">6136</a>
+<a href="#6137" id="6137">6137</a>
+<a href="#6138" id="6138">6138</a>
+<a href="#6139" id="6139">6139</a>
+<a href="#6140" id="6140">6140</a>
+<a href="#6141" id="6141">6141</a>
+<a href="#6142" id="6142">6142</a>
+<a href="#6143" id="6143">6143</a>
+<a href="#6144" id="6144">6144</a>
+<a href="#6145" id="6145">6145</a>
+<a href="#6146" id="6146">6146</a>
+<a href="#6147" id="6147">6147</a>
+<a href="#6148" id="6148">6148</a>
+<a href="#6149" id="6149">6149</a>
+<a href="#6150" id="6150">6150</a>
+<a href="#6151" id="6151">6151</a>
+<a href="#6152" id="6152">6152</a>
+<a href="#6153" id="6153">6153</a>
+<a href="#6154" id="6154">6154</a>
+<a href="#6155" id="6155">6155</a>
+<a href="#6156" id="6156">6156</a>
+<a href="#6157" id="6157">6157</a>
+<a href="#6158" id="6158">6158</a>
+<a href="#6159" id="6159">6159</a>
+<a href="#6160" id="6160">6160</a>
+<a href="#6161" id="6161">6161</a>
+<a href="#6162" id="6162">6162</a>
+<a href="#6163" id="6163">6163</a>
+<a href="#6164" id="6164">6164</a>
+<a href="#6165" id="6165">6165</a>
+<a href="#6166" id="6166">6166</a>
+<a href="#6167" id="6167">6167</a>
+<a href="#6168" id="6168">6168</a>
+<a href="#6169" id="6169">6169</a>
+<a href="#6170" id="6170">6170</a>
+<a href="#6171" id="6171">6171</a>
+<a href="#6172" id="6172">6172</a>
+<a href="#6173" id="6173">6173</a>
+<a href="#6174" id="6174">6174</a>
+<a href="#6175" id="6175">6175</a>
+<a href="#6176" id="6176">6176</a>
+<a href="#6177" id="6177">6177</a>
+<a href="#6178" id="6178">6178</a>
+<a href="#6179" id="6179">6179</a>
+<a href="#6180" id="6180">6180</a>
+<a href="#6181" id="6181">6181</a>
+<a href="#6182" id="6182">6182</a>
+<a href="#6183" id="6183">6183</a>
+<a href="#6184" id="6184">6184</a>
+<a href="#6185" id="6185">6185</a>
+<a href="#6186" id="6186">6186</a>
+<a href="#6187" id="6187">6187</a>
+<a href="#6188" id="6188">6188</a>
+<a href="#6189" id="6189">6189</a>
+<a href="#6190" id="6190">6190</a>
+<a href="#6191" id="6191">6191</a>
+<a href="#6192" id="6192">6192</a>
+<a href="#6193" id="6193">6193</a>
+<a href="#6194" id="6194">6194</a>
+<a href="#6195" id="6195">6195</a>
+<a href="#6196" id="6196">6196</a>
+<a href="#6197" id="6197">6197</a>
+<a href="#6198" id="6198">6198</a>
+<a href="#6199" id="6199">6199</a>
+<a href="#6200" id="6200">6200</a>
+<a href="#6201" id="6201">6201</a>
+<a href="#6202" id="6202">6202</a>
+<a href="#6203" id="6203">6203</a>
+<a href="#6204" id="6204">6204</a>
+<a href="#6205" id="6205">6205</a>
+<a href="#6206" id="6206">6206</a>
+<a href="#6207" id="6207">6207</a>
+<a href="#6208" id="6208">6208</a>
+<a href="#6209" id="6209">6209</a>
+<a href="#6210" id="6210">6210</a>
+<a href="#6211" id="6211">6211</a>
+<a href="#6212" id="6212">6212</a>
+<a href="#6213" id="6213">6213</a>
+<a href="#6214" id="6214">6214</a>
+<a href="#6215" id="6215">6215</a>
+<a href="#6216" id="6216">6216</a>
+<a href="#6217" id="6217">6217</a>
+<a href="#6218" id="6218">6218</a>
+<a href="#6219" id="6219">6219</a>
+<a href="#6220" id="6220">6220</a>
+<a href="#6221" id="6221">6221</a>
+<a href="#6222" id="6222">6222</a>
+<a href="#6223" id="6223">6223</a>
+<a href="#6224" id="6224">6224</a>
+<a href="#6225" id="6225">6225</a>
+<a href="#6226" id="6226">6226</a>
+<a href="#6227" id="6227">6227</a>
+<a href="#6228" id="6228">6228</a>
+<a href="#6229" id="6229">6229</a>
+<a href="#6230" id="6230">6230</a>
+<a href="#6231" id="6231">6231</a>
+<a href="#6232" id="6232">6232</a>
+<a href="#6233" id="6233">6233</a>
+<a href="#6234" id="6234">6234</a>
+<a href="#6235" id="6235">6235</a>
+<a href="#6236" id="6236">6236</a>
+<a href="#6237" id="6237">6237</a>
+<a href="#6238" id="6238">6238</a>
+<a href="#6239" id="6239">6239</a>
+<a href="#6240" id="6240">6240</a>
+<a href="#6241" id="6241">6241</a>
+<a href="#6242" id="6242">6242</a>
+<a href="#6243" id="6243">6243</a>
+<a href="#6244" id="6244">6244</a>
+<a href="#6245" id="6245">6245</a>
+<a href="#6246" id="6246">6246</a>
+<a href="#6247" id="6247">6247</a>
+<a href="#6248" id="6248">6248</a>
+<a href="#6249" id="6249">6249</a>
+<a href="#6250" id="6250">6250</a>
+<a href="#6251" id="6251">6251</a>
+<a href="#6252" id="6252">6252</a>
+<a href="#6253" id="6253">6253</a>
+<a href="#6254" id="6254">6254</a>
+<a href="#6255" id="6255">6255</a>
+<a href="#6256" id="6256">6256</a>
+<a href="#6257" id="6257">6257</a>
+<a href="#6258" id="6258">6258</a>
+<a href="#6259" id="6259">6259</a>
+<a href="#6260" id="6260">6260</a>
+<a href="#6261" id="6261">6261</a>
+<a href="#6262" id="6262">6262</a>
+<a href="#6263" id="6263">6263</a>
+<a href="#6264" id="6264">6264</a>
+<a href="#6265" id="6265">6265</a>
+<a href="#6266" id="6266">6266</a>
+<a href="#6267" id="6267">6267</a>
+<a href="#6268" id="6268">6268</a>
+<a href="#6269" id="6269">6269</a>
+<a href="#6270" id="6270">6270</a>
+<a href="#6271" id="6271">6271</a>
+<a href="#6272" id="6272">6272</a>
+<a href="#6273" id="6273">6273</a>
+<a href="#6274" id="6274">6274</a>
+<a href="#6275" id="6275">6275</a>
+<a href="#6276" id="6276">6276</a>
+<a href="#6277" id="6277">6277</a>
+<a href="#6278" id="6278">6278</a>
+<a href="#6279" id="6279">6279</a>
+<a href="#6280" id="6280">6280</a>
+<a href="#6281" id="6281">6281</a>
+<a href="#6282" id="6282">6282</a>
+<a href="#6283" id="6283">6283</a>
+<a href="#6284" id="6284">6284</a>
+<a href="#6285" id="6285">6285</a>
+<a href="#6286" id="6286">6286</a>
+<a href="#6287" id="6287">6287</a>
+<a href="#6288" id="6288">6288</a>
+<a href="#6289" id="6289">6289</a>
+<a href="#6290" id="6290">6290</a>
+<a href="#6291" id="6291">6291</a>
+<a href="#6292" id="6292">6292</a>
+<a href="#6293" id="6293">6293</a>
+<a href="#6294" id="6294">6294</a>
+<a href="#6295" id="6295">6295</a>
+<a href="#6296" id="6296">6296</a>
+<a href="#6297" id="6297">6297</a>
+<a href="#6298" id="6298">6298</a>
+<a href="#6299" id="6299">6299</a>
+<a href="#6300" id="6300">6300</a>
+<a href="#6301" id="6301">6301</a>
+<a href="#6302" id="6302">6302</a>
+<a href="#6303" id="6303">6303</a>
+<a href="#6304" id="6304">6304</a>
+<a href="#6305" id="6305">6305</a>
+<a href="#6306" id="6306">6306</a>
+<a href="#6307" id="6307">6307</a>
+<a href="#6308" id="6308">6308</a>
+<a href="#6309" id="6309">6309</a>
+<a href="#6310" id="6310">6310</a>
+<a href="#6311" id="6311">6311</a>
+<a href="#6312" id="6312">6312</a>
+<a href="#6313" id="6313">6313</a>
+<a href="#6314" id="6314">6314</a>
+<a href="#6315" id="6315">6315</a>
+<a href="#6316" id="6316">6316</a>
+<a href="#6317" id="6317">6317</a>
+<a href="#6318" id="6318">6318</a>
+<a href="#6319" id="6319">6319</a>
+<a href="#6320" id="6320">6320</a>
+<a href="#6321" id="6321">6321</a>
+<a href="#6322" id="6322">6322</a>
+<a href="#6323" id="6323">6323</a>
+<a href="#6324" id="6324">6324</a>
+<a href="#6325" id="6325">6325</a>
+<a href="#6326" id="6326">6326</a>
+<a href="#6327" id="6327">6327</a>
+<a href="#6328" id="6328">6328</a>
+<a href="#6329" id="6329">6329</a>
+<a href="#6330" id="6330">6330</a>
+<a href="#6331" id="6331">6331</a>
+<a href="#6332" id="6332">6332</a>
+<a href="#6333" id="6333">6333</a>
+<a href="#6334" id="6334">6334</a>
+<a href="#6335" id="6335">6335</a>
+<a href="#6336" id="6336">6336</a>
+<a href="#6337" id="6337">6337</a>
+<a href="#6338" id="6338">6338</a>
+<a href="#6339" id="6339">6339</a>
+<a href="#6340" id="6340">6340</a>
+<a href="#6341" id="6341">6341</a>
+<a href="#6342" id="6342">6342</a>
+<a href="#6343" id="6343">6343</a>
+<a href="#6344" id="6344">6344</a>
+<a href="#6345" id="6345">6345</a>
+<a href="#6346" id="6346">6346</a>
+<a href="#6347" id="6347">6347</a>
+<a href="#6348" id="6348">6348</a>
+<a href="#6349" id="6349">6349</a>
+<a href="#6350" id="6350">6350</a>
+<a href="#6351" id="6351">6351</a>
+<a href="#6352" id="6352">6352</a>
+<a href="#6353" id="6353">6353</a>
+<a href="#6354" id="6354">6354</a>
+<a href="#6355" id="6355">6355</a>
+<a href="#6356" id="6356">6356</a>
+<a href="#6357" id="6357">6357</a>
+<a href="#6358" id="6358">6358</a>
+<a href="#6359" id="6359">6359</a>
+<a href="#6360" id="6360">6360</a>
+<a href="#6361" id="6361">6361</a>
+<a href="#6362" id="6362">6362</a>
+<a href="#6363" id="6363">6363</a>
+<a href="#6364" id="6364">6364</a>
+<a href="#6365" id="6365">6365</a>
+<a href="#6366" id="6366">6366</a>
+<a href="#6367" id="6367">6367</a>
+<a href="#6368" id="6368">6368</a>
+<a href="#6369" id="6369">6369</a>
+<a href="#6370" id="6370">6370</a>
+<a href="#6371" id="6371">6371</a>
+<a href="#6372" id="6372">6372</a>
+<a href="#6373" id="6373">6373</a>
+<a href="#6374" id="6374">6374</a>
+<a href="#6375" id="6375">6375</a>
+<a href="#6376" id="6376">6376</a>
+<a href="#6377" id="6377">6377</a>
+<a href="#6378" id="6378">6378</a>
+<a href="#6379" id="6379">6379</a>
+<a href="#6380" id="6380">6380</a>
+<a href="#6381" id="6381">6381</a>
+<a href="#6382" id="6382">6382</a>
+<a href="#6383" id="6383">6383</a>
+<a href="#6384" id="6384">6384</a>
+<a href="#6385" id="6385">6385</a>
+<a href="#6386" id="6386">6386</a>
+<a href="#6387" id="6387">6387</a>
+<a href="#6388" id="6388">6388</a>
+<a href="#6389" id="6389">6389</a>
+<a href="#6390" id="6390">6390</a>
+<a href="#6391" id="6391">6391</a>
+<a href="#6392" id="6392">6392</a>
+<a href="#6393" id="6393">6393</a>
+<a href="#6394" id="6394">6394</a>
+<a href="#6395" id="6395">6395</a>
+<a href="#6396" id="6396">6396</a>
+<a href="#6397" id="6397">6397</a>
+<a href="#6398" id="6398">6398</a>
+<a href="#6399" id="6399">6399</a>
+<a href="#6400" id="6400">6400</a>
+<a href="#6401" id="6401">6401</a>
+<a href="#6402" id="6402">6402</a>
+<a href="#6403" id="6403">6403</a>
+<a href="#6404" id="6404">6404</a>
+<a href="#6405" id="6405">6405</a>
+<a href="#6406" id="6406">6406</a>
+<a href="#6407" id="6407">6407</a>
+<a href="#6408" id="6408">6408</a>
+<a href="#6409" id="6409">6409</a>
+<a href="#6410" id="6410">6410</a>
+<a href="#6411" id="6411">6411</a>
+<a href="#6412" id="6412">6412</a>
+<a href="#6413" id="6413">6413</a>
+<a href="#6414" id="6414">6414</a>
+<a href="#6415" id="6415">6415</a>
+<a href="#6416" id="6416">6416</a>
+<a href="#6417" id="6417">6417</a>
+<a href="#6418" id="6418">6418</a>
+<a href="#6419" id="6419">6419</a>
+<a href="#6420" id="6420">6420</a>
+<a href="#6421" id="6421">6421</a>
+<a href="#6422" id="6422">6422</a>
+<a href="#6423" id="6423">6423</a>
+<a href="#6424" id="6424">6424</a>
+<a href="#6425" id="6425">6425</a>
+<a href="#6426" id="6426">6426</a>
+<a href="#6427" id="6427">6427</a>
+<a href="#6428" id="6428">6428</a>
+<a href="#6429" id="6429">6429</a>
+<a href="#6430" id="6430">6430</a>
+<a href="#6431" id="6431">6431</a>
+<a href="#6432" id="6432">6432</a>
+<a href="#6433" id="6433">6433</a>
+<a href="#6434" id="6434">6434</a>
+<a href="#6435" id="6435">6435</a>
+<a href="#6436" id="6436">6436</a>
+<a href="#6437" id="6437">6437</a>
+<a href="#6438" id="6438">6438</a>
+<a href="#6439" id="6439">6439</a>
+<a href="#6440" id="6440">6440</a>
+<a href="#6441" id="6441">6441</a>
+<a href="#6442" id="6442">6442</a>
+<a href="#6443" id="6443">6443</a>
+<a href="#6444" id="6444">6444</a>
+<a href="#6445" id="6445">6445</a>
+<a href="#6446" id="6446">6446</a>
+<a href="#6447" id="6447">6447</a>
+<a href="#6448" id="6448">6448</a>
+<a href="#6449" id="6449">6449</a>
+<a href="#6450" id="6450">6450</a>
+<a href="#6451" id="6451">6451</a>
+<a href="#6452" id="6452">6452</a>
+<a href="#6453" id="6453">6453</a>
+<a href="#6454" id="6454">6454</a>
+<a href="#6455" id="6455">6455</a>
+<a href="#6456" id="6456">6456</a>
+<a href="#6457" id="6457">6457</a>
+<a href="#6458" id="6458">6458</a>
+<a href="#6459" id="6459">6459</a>
+<a href="#6460" id="6460">6460</a>
+<a href="#6461" id="6461">6461</a>
+<a href="#6462" id="6462">6462</a>
+<a href="#6463" id="6463">6463</a>
+<a href="#6464" id="6464">6464</a>
+<a href="#6465" id="6465">6465</a>
+<a href="#6466" id="6466">6466</a>
+<a href="#6467" id="6467">6467</a>
+<a href="#6468" id="6468">6468</a>
+<a href="#6469" id="6469">6469</a>
+<a href="#6470" id="6470">6470</a>
+<a href="#6471" id="6471">6471</a>
+<a href="#6472" id="6472">6472</a>
+<a href="#6473" id="6473">6473</a>
+<a href="#6474" id="6474">6474</a>
+<a href="#6475" id="6475">6475</a>
+<a href="#6476" id="6476">6476</a>
+<a href="#6477" id="6477">6477</a>
+<a href="#6478" id="6478">6478</a>
+<a href="#6479" id="6479">6479</a>
+<a href="#6480" id="6480">6480</a>
+<a href="#6481" id="6481">6481</a>
+<a href="#6482" id="6482">6482</a>
+<a href="#6483" id="6483">6483</a>
+<a href="#6484" id="6484">6484</a>
+<a href="#6485" id="6485">6485</a>
+<a href="#6486" id="6486">6486</a>
+<a href="#6487" id="6487">6487</a>
+<a href="#6488" id="6488">6488</a>
+<a href="#6489" id="6489">6489</a>
+<a href="#6490" id="6490">6490</a>
+<a href="#6491" id="6491">6491</a>
+<a href="#6492" id="6492">6492</a>
+<a href="#6493" id="6493">6493</a>
+<a href="#6494" id="6494">6494</a>
+<a href="#6495" id="6495">6495</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="doccomment">//! HTTP/3 wire protocol and QPACK implementation.
+//!
+//! This module provides a high level API for sending and receiving HTTP/3
+//! requests and responses on top of the QUIC transport protocol.
+//!
+//! ## Connection setup
+//!
+//! HTTP/3 connections require a QUIC transport-layer connection, see
+//! [Connection setup] for a full description of the setup process.
+//!
+//! To use HTTP/3, the QUIC connection must be configured with a suitable
+//! Application Layer Protocol Negotiation (ALPN) Protocol ID:
+//!
+//! ```
+//! let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+//! config.set_application_protos(quiche::h3::APPLICATION_PROTOCOL)?;
+//! # Ok::&lt;(), quiche::Error&gt;(())
+//! ```
+//!
+//! The QUIC handshake is driven by [sending] and [receiving] QUIC packets.
+//!
+//! Once the handshake has completed, the first step in establishing an HTTP/3
+//! connection is creating its configuration object:
+//!
+//! ```
+//! let h3_config = quiche::h3::Config::new()?;
+//! # Ok::&lt;(), quiche::h3::Error&gt;(())
+//! ```
+//!
+//! HTTP/3 client and server connections are both created using the
+//! [`with_transport()`] function, the role is inferred from the type of QUIC
+//! connection:
+//!
+//! ```no_run
+//! # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION).unwrap();
+//! # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+//! # let peer = "127.0.0.1:1234".parse().unwrap();
+//! # let local = "127.0.0.1:4321".parse().unwrap();
+//! # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config).unwrap();
+//! # let h3_config = quiche::h3::Config::new()?;
+//! let h3_conn = quiche::h3::Connection::with_transport(&amp;mut conn, &amp;h3_config)?;
+//! # Ok::&lt;(), quiche::h3::Error&gt;(())
+//! ```
+//!
+//! ## Sending a request
+//!
+//! An HTTP/3 client can send a request by using the connection's
+//! [`send_request()`] method to queue request headers; [sending] QUIC packets
+//! causes the requests to get sent to the peer:
+//!
+//! ```no_run
+//! # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION).unwrap();
+//! # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+//! # let peer = "127.0.0.1:1234".parse().unwrap();
+//! # let local = "127.0.0.1:4321".parse().unwrap();
+//! # let mut conn = quiche::connect(None, &amp;scid, local, peer, &amp;mut config).unwrap();
+//! # let h3_config = quiche::h3::Config::new()?;
+//! # let mut h3_conn = quiche::h3::Connection::with_transport(&amp;mut conn, &amp;h3_config)?;
+//! let req = vec![
+//!     quiche::h3::Header::new(b":method", b"GET"),
+//!     quiche::h3::Header::new(b":scheme", b"https"),
+//!     quiche::h3::Header::new(b":authority", b"quic.tech"),
+//!     quiche::h3::Header::new(b":path", b"/"),
+//!     quiche::h3::Header::new(b"user-agent", b"quiche"),
+//! ];
+//!
+//! h3_conn.send_request(&amp;mut conn, &amp;req, true)?;
+//! # Ok::&lt;(), quiche::h3::Error&gt;(())
+//! ```
+//!
+//! An HTTP/3 client can send a request with additional body data by using
+//! the connection's [`send_body()`] method:
+//!
+//! ```no_run
+//! # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION).unwrap();
+//! # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+//! # let peer = "127.0.0.1:1234".parse().unwrap();
+//! # let local = "127.0.0.1:4321".parse().unwrap();
+//! # let mut conn = quiche::connect(None, &amp;scid, local, peer, &amp;mut config).unwrap();
+//! # let h3_config = quiche::h3::Config::new()?;
+//! # let mut h3_conn = quiche::h3::Connection::with_transport(&amp;mut conn, &amp;h3_config)?;
+//! let req = vec![
+//!     quiche::h3::Header::new(b":method", b"GET"),
+//!     quiche::h3::Header::new(b":scheme", b"https"),
+//!     quiche::h3::Header::new(b":authority", b"quic.tech"),
+//!     quiche::h3::Header::new(b":path", b"/"),
+//!     quiche::h3::Header::new(b"user-agent", b"quiche"),
+//! ];
+//!
+//! let stream_id = h3_conn.send_request(&amp;mut conn, &amp;req, false)?;
+//! h3_conn.send_body(&amp;mut conn, stream_id, b"Hello World!", true)?;
+//! # Ok::&lt;(), quiche::h3::Error&gt;(())
+//! ```
+//!
+//! ## Handling requests and responses
+//!
+//! After [receiving] QUIC packets, HTTP/3 data is processed using the
+//! connection's [`poll()`] method. On success, this returns an [`Event`] object
+//! and an ID corresponding to the stream where the `Event` originated.
+//!
+//! An HTTP/3 server uses [`poll()`] to read requests and responds to them using
+//! [`send_response()`] and [`send_body()`]:
+//!
+//! ```no_run
+//! use quiche::h3::NameValue;
+//!
+//! # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION).unwrap();
+//! # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+//! # let peer = "127.0.0.1:1234".parse().unwrap();
+//! # let local = "127.0.0.1:1234".parse().unwrap();
+//! # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config).unwrap();
+//! # let h3_config = quiche::h3::Config::new()?;
+//! # let mut h3_conn = quiche::h3::Connection::with_transport(&amp;mut conn, &amp;h3_config)?;
+//! loop {
+//!     match h3_conn.poll(&amp;mut conn) {
+//!         Ok((stream_id, quiche::h3::Event::Headers{list, has_body})) =&gt; {
+//!             let mut headers = list.into_iter();
+//!
+//!             // Look for the request's method.
+//!             let method = headers.find(|h| h.name() == b":method").unwrap();
+//!
+//!             // Look for the request's path.
+//!             let path = headers.find(|h| h.name() == b":path").unwrap();
+//!
+//!             if method.value() == b"GET" &amp;&amp; path.value() == b"/" {
+//!                 let resp = vec![
+//!                     quiche::h3::Header::new(b":status", 200.to_string().as_bytes()),
+//!                     quiche::h3::Header::new(b"server", b"quiche"),
+//!                 ];
+//!
+//!                 h3_conn.send_response(&amp;mut conn, stream_id, &amp;resp, false)?;
+//!                 h3_conn.send_body(&amp;mut conn, stream_id, b"Hello World!", true)?;
+//!             }
+//!         },
+//!
+//!         Ok((stream_id, quiche::h3::Event::Data)) =&gt; {
+//!             // Request body data, handle it.
+//!             # return Ok(());
+//!         },
+//!
+//!         Ok((stream_id, quiche::h3::Event::Finished)) =&gt; {
+//!             // Peer terminated stream, handle it.
+//!         },
+//!
+//!         Ok((stream_id, quiche::h3::Event::Reset(err))) =&gt; {
+//!             // Peer reset the stream, handle it.
+//!         },
+//!
+//!         Ok((_flow_id, quiche::h3::Event::PriorityUpdate)) =&gt; (),
+//!
+//!         Ok((goaway_id, quiche::h3::Event::GoAway)) =&gt; {
+//!              // Peer signalled it is going away, handle it.
+//!         },
+//!
+//!         Err(quiche::h3::Error::Done) =&gt; {
+//!             // Done reading.
+//!             break;
+//!         },
+//!
+//!         Err(e) =&gt; {
+//!             // An error occurred, handle it.
+//!             break;
+//!         },
+//!     }
+//! }
+//! # Ok::&lt;(), quiche::h3::Error&gt;(())
+//! ```
+//!
+//! An HTTP/3 client uses [`poll()`] to read responses:
+//!
+//! ```no_run
+//! use quiche::h3::NameValue;
+//!
+//! # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION).unwrap();
+//! # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+//! # let peer = "127.0.0.1:1234".parse().unwrap();
+//! # let local = "127.0.0.1:1234".parse().unwrap();
+//! # let mut conn = quiche::connect(None, &amp;scid, local, peer, &amp;mut config).unwrap();
+//! # let h3_config = quiche::h3::Config::new()?;
+//! # let mut h3_conn = quiche::h3::Connection::with_transport(&amp;mut conn, &amp;h3_config)?;
+//! loop {
+//!     match h3_conn.poll(&amp;mut conn) {
+//!         Ok((stream_id, quiche::h3::Event::Headers{list, has_body})) =&gt; {
+//!             let status = list.iter().find(|h| h.name() == b":status").unwrap();
+//!             println!("Received {} response on stream {}",
+//!                      std::str::from_utf8(status.value()).unwrap(),
+//!                      stream_id);
+//!         },
+//!
+//!         Ok((stream_id, quiche::h3::Event::Data)) =&gt; {
+//!             let mut body = vec![0; 4096];
+//!
+//!             // Consume all body data received on the stream.
+//!             while let Ok(read) =
+//!                 h3_conn.recv_body(&amp;mut conn, stream_id, &amp;mut body)
+//!             {
+//!                 println!("Received {} bytes of payload on stream {}",
+//!                          read, stream_id);
+//!             }
+//!         },
+//!
+//!         Ok((stream_id, quiche::h3::Event::Finished)) =&gt; {
+//!             // Peer terminated stream, handle it.
+//!         },
+//!
+//!         Ok((stream_id, quiche::h3::Event::Reset(err))) =&gt; {
+//!             // Peer reset the stream, handle it.
+//!         },
+//!
+//!         Ok((_prioritized_element_id, quiche::h3::Event::PriorityUpdate)) =&gt; (),
+//!
+//!         Ok((goaway_id, quiche::h3::Event::GoAway)) =&gt; {
+//!              // Peer signalled it is going away, handle it.
+//!         },
+//!
+//!         Err(quiche::h3::Error::Done) =&gt; {
+//!             // Done reading.
+//!             break;
+//!         },
+//!
+//!         Err(e) =&gt; {
+//!             // An error occurred, handle it.
+//!             break;
+//!         },
+//!     }
+//! }
+//! # Ok::&lt;(), quiche::h3::Error&gt;(())
+//! ```
+//!
+//! ## Detecting end of request or response
+//!
+//! A single HTTP/3 request or response may consist of several HEADERS and DATA
+//! frames; it is finished when the QUIC stream is closed. Calling [`poll()`]
+//! repeatedly will generate an [`Event`] for each of these. The application may
+//! use these event to do additional HTTP semantic validation.
+//!
+//! ## HTTP/3 protocol errors
+//!
+//! Quiche is responsible for managing the HTTP/3 connection, ensuring it is in
+//! a correct state and validating all messages received by a peer. This mainly
+//! takes place in the [`poll()`] method. If an HTTP/3 error occurs, quiche will
+//! close the connection and send an appropriate CONNECTION_CLOSE frame to the
+//! peer. An [`Error`] is returned to the application so that it can perform any
+//! required tidy up such as closing sockets.
+//!
+//! [`application_proto()`]: ../struct.Connection.html#method.application_proto
+//! [`stream_finished()`]: ../struct.Connection.html#method.stream_finished
+//! [Connection setup]: ../index.html#connection-setup
+//! [sending]: ../index.html#generating-outgoing-packets
+//! [receiving]: ../index.html#handling-incoming-packets
+//! [`with_transport()`]: struct.Connection.html#method.with_transport
+//! [`poll()`]: struct.Connection.html#method.poll
+//! [`Event`]: enum.Event.html
+//! [`Error`]: enum.Error.html
+//! [`send_request()`]: struct.Connection.html#method.send_response
+//! [`send_response()`]: struct.Connection.html#method.send_response
+//! [`send_body()`]: struct.Connection.html#method.send_body
+
+</span><span class="kw">use </span>std::collections::HashSet;
+<span class="kw">use </span>std::collections::VecDeque;
+
+<span class="attr">#[cfg(feature = <span class="string">"sfv"</span>)]
+</span><span class="kw">use </span>std::convert::TryFrom;
+<span class="kw">use </span>std::fmt;
+<span class="kw">use </span>std::fmt::Write;
+
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::h3::H3FrameCreated;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::h3::H3FrameParsed;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::h3::H3Owner;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::h3::H3PriorityTargetStreamType;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::h3::H3StreamType;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::h3::H3StreamTypeSet;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::h3::Http3EventType;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::h3::Http3Frame;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::EventData;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::EventImportance;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::EventType;
+
+<span class="doccomment">/// List of ALPN tokens of supported HTTP/3 versions.
+///
+/// This can be passed directly to the [`Config::set_application_protos()`]
+/// method when implementing HTTP/3 applications.
+///
+/// [`Config::set_application_protos()`]:
+/// ../struct.Config.html#method.set_application_protos
+</span><span class="kw">pub const </span>APPLICATION_PROTOCOL: <span class="kw-2">&amp;</span>[<span class="kw-2">&amp;</span>[u8]] = <span class="kw-2">&amp;</span>[<span class="string">b"h3"</span>];
+
+<span class="comment">// The offset used when converting HTTP/3 urgency to quiche urgency.
+</span><span class="kw">const </span>PRIORITY_URGENCY_OFFSET: u8 = <span class="number">124</span>;
+
+<span class="comment">// Parameter values as specified in [Extensible Priorities].
+//
+// [Extensible Priorities]: https://www.rfc-editor.org/rfc/rfc9218.html#section-4.
+</span><span class="kw">const </span>PRIORITY_URGENCY_LOWER_BOUND: u8 = <span class="number">0</span>;
+<span class="kw">const </span>PRIORITY_URGENCY_UPPER_BOUND: u8 = <span class="number">7</span>;
+<span class="kw">const </span>PRIORITY_URGENCY_DEFAULT: u8 = <span class="number">3</span>;
+<span class="kw">const </span>PRIORITY_INCREMENTAL_DEFAULT: bool = <span class="bool-val">false</span>;
+
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">const </span>QLOG_FRAME_CREATED: EventType =
+    EventType::Http3EventType(Http3EventType::FrameCreated);
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">const </span>QLOG_FRAME_PARSED: EventType =
+    EventType::Http3EventType(Http3EventType::FrameParsed);
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">const </span>QLOG_STREAM_TYPE_SET: EventType =
+    EventType::Http3EventType(Http3EventType::StreamTypeSet);
+
+<span class="doccomment">/// A specialized [`Result`] type for quiche HTTP/3 operations.
+///
+/// This type is used throughout quiche's HTTP/3 public API for any operation
+/// that can produce an error.
+///
+/// [`Result`]: https://doc.rust-lang.org/std/result/enum.Result.html
+</span><span class="kw">pub type </span><span class="prelude-ty">Result</span>&lt;T&gt; = std::result::Result&lt;T, Error&gt;;
+
+<span class="doccomment">/// An HTTP/3 error.
+</span><span class="attr">#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+</span><span class="kw">pub enum </span>Error {
+    <span class="doccomment">/// There is no error or no work to do
+    </span>Done,
+
+    <span class="doccomment">/// The provided buffer is too short.
+    </span>BufferTooShort,
+
+    <span class="doccomment">/// Internal error in the HTTP/3 stack.
+    </span>InternalError,
+
+    <span class="doccomment">/// Endpoint detected that the peer is exhibiting behavior that causes.
+    /// excessive load.
+    </span>ExcessiveLoad,
+
+    <span class="doccomment">/// Stream ID or Push ID greater that current maximum was
+    /// used incorrectly, such as exceeding a limit, reducing a limit,
+    /// or being reused.
+    </span>IdError,
+
+    <span class="doccomment">/// The endpoint detected that its peer created a stream that it will not
+    /// accept.
+    </span>StreamCreationError,
+
+    <span class="doccomment">/// A required critical stream was closed.
+    </span>ClosedCriticalStream,
+
+    <span class="doccomment">/// No SETTINGS frame at beginning of control stream.
+    </span>MissingSettings,
+
+    <span class="doccomment">/// A frame was received which is not permitted in the current state.
+    </span>FrameUnexpected,
+
+    <span class="doccomment">/// Frame violated layout or size rules.
+    </span>FrameError,
+
+    <span class="doccomment">/// QPACK Header block decompression failure.
+    </span>QpackDecompressionFailed,
+
+    <span class="doccomment">/// Error originated from the transport layer.
+    </span>TransportError(<span class="kw">crate</span>::Error),
+
+    <span class="doccomment">/// The underlying QUIC stream (or connection) doesn't have enough capacity
+    /// for the operation to complete. The application should retry later on.
+    </span>StreamBlocked,
+
+    <span class="doccomment">/// Error in the payload of a SETTINGS frame.
+    </span>SettingsError,
+
+    <span class="doccomment">/// Server rejected request.
+    </span>RequestRejected,
+
+    <span class="doccomment">/// Request or its response cancelled.
+    </span>RequestCancelled,
+
+    <span class="doccomment">/// Client's request stream terminated without containing a full-formed
+    /// request.
+    </span>RequestIncomplete,
+
+    <span class="doccomment">/// An HTTP message was malformed and cannot be processed.
+    </span>MessageError,
+
+    <span class="doccomment">/// The TCP connection established in response to a CONNECT request was
+    /// reset or abnormally closed.
+    </span>ConnectError,
+
+    <span class="doccomment">/// The requested operation cannot be served over HTTP/3. Peer should retry
+    /// over HTTP/1.1.
+    </span>VersionFallback,
+}
+
+<span class="doccomment">/// HTTP/3 error codes sent on the wire.
+///
+/// As defined in [RFC9114](https://www.rfc-editor.org/rfc/rfc9114.html#http-error-codes).
+</span><span class="kw">pub enum </span>WireErrorCode {
+    <span class="doccomment">/// No error. This is used when the connection or stream needs to be closed,
+    /// but there is no error to signal.
+    </span>NoError              = <span class="number">0x100</span>,
+    <span class="doccomment">/// Peer violated protocol requirements in a way that does not match a more
+    /// specific error code or endpoint declines to use the more specific
+    /// error code.
+    </span>GeneralProtocolError = <span class="number">0x101</span>,
+    <span class="doccomment">/// An internal error has occurred in the HTTP stack.
+    </span>InternalError        = <span class="number">0x102</span>,
+    <span class="doccomment">/// The endpoint detected that its peer created a stream that it will not
+    /// accept.
+    </span>StreamCreationError  = <span class="number">0x103</span>,
+    <span class="doccomment">/// A stream required by the HTTP/3 connection was closed or reset.
+    </span>ClosedCriticalStream = <span class="number">0x104</span>,
+    <span class="doccomment">/// A frame was received that was not permitted in the current state or on
+    /// the current stream.
+    </span>FrameUnexpected      = <span class="number">0x105</span>,
+    <span class="doccomment">/// A frame that fails to satisfy layout requirements or with an invalid
+    /// size was received.
+    </span>FrameError           = <span class="number">0x106</span>,
+    <span class="doccomment">/// The endpoint detected that its peer is exhibiting a behavior that might
+    /// be generating excessive load.
+    </span>ExcessiveLoad        = <span class="number">0x107</span>,
+    <span class="doccomment">/// A stream ID or push ID was used incorrectly, such as exceeding a limit,
+    /// reducing a limit, or being reused.
+    </span>IdError              = <span class="number">0x108</span>,
+    <span class="doccomment">/// An endpoint detected an error in the payload of a SETTINGS frame.
+    </span>SettingsError        = <span class="number">0x109</span>,
+    <span class="doccomment">/// No SETTINGS frame was received at the beginning of the control stream.
+    </span>MissingSettings      = <span class="number">0x10a</span>,
+    <span class="doccomment">/// A server rejected a request without performing any application
+    /// processing.
+    </span>RequestRejected      = <span class="number">0x10b</span>,
+    <span class="doccomment">/// The request or its response (including pushed response) is cancelled.
+    </span>RequestCancelled     = <span class="number">0x10c</span>,
+    <span class="doccomment">/// The client's stream terminated without containing a fully formed
+    /// request.
+    </span>RequestIncomplete    = <span class="number">0x10d</span>,
+    <span class="doccomment">/// An HTTP message was malformed and cannot be processed.
+    </span>MessageError         = <span class="number">0x10e</span>,
+    <span class="doccomment">/// The TCP connection established in response to a CONNECT request was
+    /// reset or abnormally closed.
+    </span>ConnectError         = <span class="number">0x10f</span>,
+    <span class="doccomment">/// The requested operation cannot be served over HTTP/3. The peer should
+    /// retry over HTTP/1.1.
+    </span>VersionFallback      = <span class="number">0x110</span>,
+}
+
+<span class="kw">impl </span>Error {
+    <span class="kw">fn </span>to_wire(<span class="self">self</span>) -&gt; u64 {
+        <span class="kw">match </span><span class="self">self </span>{
+            Error::Done =&gt; WireErrorCode::NoError <span class="kw">as </span>u64,
+            Error::InternalError =&gt; WireErrorCode::InternalError <span class="kw">as </span>u64,
+            Error::StreamCreationError =&gt;
+                WireErrorCode::StreamCreationError <span class="kw">as </span>u64,
+            Error::ClosedCriticalStream =&gt;
+                WireErrorCode::ClosedCriticalStream <span class="kw">as </span>u64,
+            Error::FrameUnexpected =&gt; WireErrorCode::FrameUnexpected <span class="kw">as </span>u64,
+            Error::FrameError =&gt; WireErrorCode::FrameError <span class="kw">as </span>u64,
+            Error::ExcessiveLoad =&gt; WireErrorCode::ExcessiveLoad <span class="kw">as </span>u64,
+            Error::IdError =&gt; WireErrorCode::IdError <span class="kw">as </span>u64,
+            Error::MissingSettings =&gt; WireErrorCode::MissingSettings <span class="kw">as </span>u64,
+            Error::QpackDecompressionFailed =&gt; <span class="number">0x200</span>,
+            Error::BufferTooShort =&gt; <span class="number">0x999</span>,
+            Error::TransportError { .. } | Error::StreamBlocked =&gt; <span class="number">0xFF</span>,
+            Error::SettingsError =&gt; WireErrorCode::SettingsError <span class="kw">as </span>u64,
+            Error::RequestRejected =&gt; WireErrorCode::RequestRejected <span class="kw">as </span>u64,
+            Error::RequestCancelled =&gt; WireErrorCode::RequestCancelled <span class="kw">as </span>u64,
+            Error::RequestIncomplete =&gt; WireErrorCode::RequestIncomplete <span class="kw">as </span>u64,
+            Error::MessageError =&gt; WireErrorCode::MessageError <span class="kw">as </span>u64,
+            Error::ConnectError =&gt; WireErrorCode::ConnectError <span class="kw">as </span>u64,
+            Error::VersionFallback =&gt; WireErrorCode::VersionFallback <span class="kw">as </span>u64,
+        }
+    }
+
+    <span class="attr">#[cfg(feature = <span class="string">"ffi"</span>)]
+    </span><span class="kw">fn </span>to_c(<span class="self">self</span>) -&gt; libc::ssize_t {
+        <span class="kw">match </span><span class="self">self </span>{
+            Error::Done =&gt; -<span class="number">1</span>,
+            Error::BufferTooShort =&gt; -<span class="number">2</span>,
+            Error::InternalError =&gt; -<span class="number">3</span>,
+            Error::ExcessiveLoad =&gt; -<span class="number">4</span>,
+            Error::IdError =&gt; -<span class="number">5</span>,
+            Error::StreamCreationError =&gt; -<span class="number">6</span>,
+            Error::ClosedCriticalStream =&gt; -<span class="number">7</span>,
+            Error::MissingSettings =&gt; -<span class="number">8</span>,
+            Error::FrameUnexpected =&gt; -<span class="number">9</span>,
+            Error::FrameError =&gt; -<span class="number">10</span>,
+            Error::QpackDecompressionFailed =&gt; -<span class="number">11</span>,
+            <span class="comment">// -12 was previously used for TransportError, skip it
+            </span>Error::StreamBlocked =&gt; -<span class="number">13</span>,
+            Error::SettingsError =&gt; -<span class="number">14</span>,
+            Error::RequestRejected =&gt; -<span class="number">15</span>,
+            Error::RequestCancelled =&gt; -<span class="number">16</span>,
+            Error::RequestIncomplete =&gt; -<span class="number">17</span>,
+            Error::MessageError =&gt; -<span class="number">18</span>,
+            Error::ConnectError =&gt; -<span class="number">19</span>,
+            Error::VersionFallback =&gt; -<span class="number">20</span>,
+
+            Error::TransportError(quic_error) =&gt; quic_error.to_c() - <span class="number">1000</span>,
+        }
+    }
+}
+
+<span class="kw">impl </span>std::fmt::Display <span class="kw">for </span>Error {
+    <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+        <span class="macro">write!</span>(f, <span class="string">"{self:?}"</span>)
+    }
+}
+
+<span class="kw">impl </span>std::error::Error <span class="kw">for </span>Error {
+    <span class="kw">fn </span>source(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>(<span class="kw">dyn </span>std::error::Error + <span class="lifetime">'static</span>)&gt; {
+        <span class="prelude-val">None
+    </span>}
+}
+
+<span class="kw">impl </span>std::convert::From&lt;<span class="kw">super</span>::Error&gt; <span class="kw">for </span>Error {
+    <span class="kw">fn </span>from(err: <span class="kw">super</span>::Error) -&gt; <span class="self">Self </span>{
+        <span class="kw">match </span>err {
+            <span class="kw">super</span>::Error::Done =&gt; Error::Done,
+
+            <span class="kw">_ </span>=&gt; Error::TransportError(err),
+        }
+    }
+}
+
+<span class="kw">impl </span>std::convert::From&lt;octets::BufferTooShortError&gt; <span class="kw">for </span>Error {
+    <span class="kw">fn </span>from(_err: octets::BufferTooShortError) -&gt; <span class="self">Self </span>{
+        Error::BufferTooShort
+    }
+}
+
+<span class="doccomment">/// An HTTP/3 configuration.
+</span><span class="kw">pub struct </span>Config {
+    max_field_section_size: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    qpack_max_table_capacity: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    qpack_blocked_streams: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    connect_protocol_enabled: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="doccomment">/// additional settings are settings that are not part of the H3
+    /// settings explicitly handled above
+    </span>additional_settings: <span class="prelude-ty">Option</span>&lt;Vec&lt;(u64, u64)&gt;&gt;,
+}
+
+<span class="kw">impl </span>Config {
+    <span class="doccomment">/// Creates a new configuration object with default settings.
+    </span><span class="kw">pub const fn </span>new() -&gt; <span class="prelude-ty">Result</span>&lt;Config&gt; {
+        <span class="prelude-val">Ok</span>(Config {
+            max_field_section_size: <span class="prelude-val">None</span>,
+            qpack_max_table_capacity: <span class="prelude-val">None</span>,
+            qpack_blocked_streams: <span class="prelude-val">None</span>,
+            connect_protocol_enabled: <span class="prelude-val">None</span>,
+            additional_settings: <span class="prelude-val">None</span>,
+        })
+    }
+
+    <span class="doccomment">/// Sets the `SETTINGS_MAX_FIELD_SECTION_SIZE` setting.
+    ///
+    /// By default no limit is enforced. When a request whose headers exceed
+    /// the limit set by the application is received, the call to the [`poll()`]
+    /// method will return the [`Error::ExcessiveLoad`] error, and the
+    /// connection will be closed.
+    ///
+    /// [`poll()`]: struct.Connection.html#method.poll
+    /// [`Error::ExcessiveLoad`]: enum.Error.html#variant.ExcessiveLoad
+    </span><span class="kw">pub fn </span>set_max_field_section_size(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) {
+        <span class="self">self</span>.max_field_section_size = <span class="prelude-val">Some</span>(v);
+    }
+
+    <span class="doccomment">/// Sets the `SETTINGS_QPACK_MAX_TABLE_CAPACITY` setting.
+    ///
+    /// The default value is `0`.
+    </span><span class="kw">pub fn </span>set_qpack_max_table_capacity(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) {
+        <span class="self">self</span>.qpack_max_table_capacity = <span class="prelude-val">Some</span>(v);
+    }
+
+    <span class="doccomment">/// Sets the `SETTINGS_QPACK_BLOCKED_STREAMS` setting.
+    ///
+    /// The default value is `0`.
+    </span><span class="kw">pub fn </span>set_qpack_blocked_streams(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) {
+        <span class="self">self</span>.qpack_blocked_streams = <span class="prelude-val">Some</span>(v);
+    }
+
+    <span class="doccomment">/// Sets or omits the `SETTINGS_ENABLE_CONNECT_PROTOCOL` setting.
+    ///
+    /// The default value is `false`.
+    </span><span class="kw">pub fn </span>enable_extended_connect(<span class="kw-2">&amp;mut </span><span class="self">self</span>, enabled: bool) {
+        <span class="kw">if </span>enabled {
+            <span class="self">self</span>.connect_protocol_enabled = <span class="prelude-val">Some</span>(<span class="number">1</span>);
+        } <span class="kw">else </span>{
+            <span class="self">self</span>.connect_protocol_enabled = <span class="prelude-val">None</span>;
+        }
+    }
+
+    <span class="doccomment">/// Sets additional HTTP/3 settings.
+    ///
+    /// The default value is no additional settings.
+    /// The `additional_settings` parameter must not the following
+    /// settings as they are already handled by this library:
+    ///
+    /// - SETTINGS_QPACK_MAX_TABLE_CAPACITY
+    /// - SETTINGS_MAX_FIELD_SECTION_SIZE
+    /// - SETTINGS_QPACK_BLOCKED_STREAMS
+    /// - SETTINGS_ENABLE_CONNECT_PROTOCOL
+    /// - SETTINGS_H3_DATAGRAM
+    ///
+    /// If such a setting is present in the `additional_settings`,
+    /// the method will return the [`Error::SettingsError`] error.
+    ///
+    /// If a setting identifier is present twice in `additional_settings`,
+    /// the method will return the [`Error::SettingsError`] error.
+    ///
+    /// [`Error::SettingsError`]: enum.Error.html#variant.SettingsError
+    </span><span class="kw">pub fn </span>set_additional_settings(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, additional_settings: Vec&lt;(u64, u64)&gt;,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>explicit_quiche_settings = HashSet::from([
+            frame::SETTINGS_QPACK_MAX_TABLE_CAPACITY,
+            frame::SETTINGS_MAX_FIELD_SECTION_SIZE,
+            frame::SETTINGS_QPACK_BLOCKED_STREAMS,
+            frame::SETTINGS_ENABLE_CONNECT_PROTOCOL,
+            frame::SETTINGS_H3_DATAGRAM,
+            frame::SETTINGS_H3_DATAGRAM_00,
+        ]);
+
+        <span class="kw">let </span>dedup_settings: HashSet&lt;u64&gt; =
+            additional_settings.iter().map(|(key, <span class="kw">_</span>)| <span class="kw-2">*</span>key).collect();
+
+        <span class="kw">if </span>dedup_settings.len() != additional_settings.len() ||
+            !explicit_quiche_settings.is_disjoint(<span class="kw-2">&amp;</span>dedup_settings)
+        {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::SettingsError);
+        }
+        <span class="self">self</span>.additional_settings = <span class="prelude-val">Some</span>(additional_settings);
+        <span class="prelude-val">Ok</span>(())
+    }
+}
+
+<span class="doccomment">/// A trait for types with associated string name and value.
+</span><span class="kw">pub trait </span>NameValue {
+    <span class="doccomment">/// Returns the object's name.
+    </span><span class="kw">fn </span>name(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>[u8];
+
+    <span class="doccomment">/// Returns the object's value.
+    </span><span class="kw">fn </span>value(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>[u8];
+}
+
+<span class="kw">impl</span>&lt;N, V&gt; NameValue <span class="kw">for </span>(N, V)
+<span class="kw">where
+    </span>N: AsRef&lt;[u8]&gt;,
+    V: AsRef&lt;[u8]&gt;,
+{
+    <span class="kw">fn </span>name(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>[u8] {
+        <span class="self">self</span>.<span class="number">0</span>.as_ref()
+    }
+
+    <span class="kw">fn </span>value(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>[u8] {
+        <span class="self">self</span>.<span class="number">1</span>.as_ref()
+    }
+}
+
+<span class="doccomment">/// An owned name-value pair representing a raw HTTP header.
+</span><span class="attr">#[derive(Clone, PartialEq, Eq)]
+</span><span class="kw">pub struct </span>Header(Vec&lt;u8&gt;, Vec&lt;u8&gt;);
+
+<span class="kw">fn </span>try_print_as_readable(hdr: <span class="kw-2">&amp;</span>[u8], f: <span class="kw-2">&amp;mut </span>fmt::Formatter) -&gt; fmt::Result {
+    <span class="kw">match </span>std::str::from_utf8(hdr) {
+        <span class="prelude-val">Ok</span>(s) =&gt; f.write_str(<span class="kw-2">&amp;</span>s.escape_default().to_string()),
+        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="macro">write!</span>(f, <span class="string">"{hdr:?}"</span>),
+    }
+}
+
+<span class="kw">impl </span>fmt::Debug <span class="kw">for </span>Header {
+    <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>fmt::Formatter&lt;<span class="lifetime">'_</span>&gt;) -&gt; fmt::Result {
+        f.write_char(<span class="string">'"'</span>)<span class="question-mark">?</span>;
+        try_print_as_readable(<span class="kw-2">&amp;</span><span class="self">self</span>.<span class="number">0</span>, f)<span class="question-mark">?</span>;
+        f.write_str(<span class="string">": "</span>)<span class="question-mark">?</span>;
+        try_print_as_readable(<span class="kw-2">&amp;</span><span class="self">self</span>.<span class="number">1</span>, f)<span class="question-mark">?</span>;
+        f.write_char(<span class="string">'"'</span>)
+    }
+}
+
+<span class="kw">impl </span>Header {
+    <span class="doccomment">/// Creates a new header.
+    ///
+    /// Both `name` and `value` will be cloned.
+    </span><span class="kw">pub fn </span>new(name: <span class="kw-2">&amp;</span>[u8], value: <span class="kw-2">&amp;</span>[u8]) -&gt; <span class="self">Self </span>{
+        <span class="self">Self</span>(name.to_vec(), value.to_vec())
+    }
+}
+
+<span class="kw">impl </span>NameValue <span class="kw">for </span>Header {
+    <span class="kw">fn </span>name(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>[u8] {
+        <span class="kw-2">&amp;</span><span class="self">self</span>.<span class="number">0
+    </span>}
+
+    <span class="kw">fn </span>value(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>[u8] {
+        <span class="kw-2">&amp;</span><span class="self">self</span>.<span class="number">1
+    </span>}
+}
+
+<span class="doccomment">/// A non-owned name-value pair representing a raw HTTP header.
+</span><span class="attr">#[derive(Clone, Debug, PartialEq, Eq)]
+</span><span class="kw">pub struct </span>HeaderRef&lt;<span class="lifetime">'a</span>&gt;(<span class="kw-2">&amp;</span><span class="lifetime">'a </span>[u8], <span class="kw-2">&amp;</span><span class="lifetime">'a </span>[u8]);
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; HeaderRef&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="doccomment">/// Creates a new header.
+    </span><span class="kw">pub const fn </span>new(name: <span class="kw-2">&amp;</span><span class="lifetime">'a </span>[u8], value: <span class="kw-2">&amp;</span><span class="lifetime">'a </span>[u8]) -&gt; <span class="self">Self </span>{
+        <span class="self">Self</span>(name, value)
+    }
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; NameValue <span class="kw">for </span>HeaderRef&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="kw">fn </span>name(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>[u8] {
+        <span class="self">self</span>.<span class="number">0
+    </span>}
+
+    <span class="kw">fn </span>value(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>[u8] {
+        <span class="self">self</span>.<span class="number">1
+    </span>}
+}
+
+<span class="doccomment">/// An HTTP/3 connection event.
+</span><span class="attr">#[derive(Clone, Debug, PartialEq, Eq)]
+</span><span class="kw">pub enum </span>Event {
+    <span class="doccomment">/// Request/response headers were received.
+    </span>Headers {
+        <span class="doccomment">/// The list of received header fields. The application should validate
+        /// pseudo-headers and headers.
+        </span>list: Vec&lt;Header&gt;,
+
+        <span class="doccomment">/// Whether data will follow the headers on the stream.
+        </span>has_body: bool,
+    },
+
+    <span class="doccomment">/// Data was received.
+    ///
+    /// This indicates that the application can use the [`recv_body()`] method
+    /// to retrieve the data from the stream.
+    ///
+    /// Note that [`recv_body()`] will need to be called repeatedly until the
+    /// [`Done`] value is returned, as the event will not be re-armed until all
+    /// buffered data is read.
+    ///
+    /// [`recv_body()`]: struct.Connection.html#method.recv_body
+    /// [`Done`]: enum.Error.html#variant.Done
+    </span>Data,
+
+    <span class="doccomment">/// Stream was closed,
+    </span>Finished,
+
+    <span class="doccomment">/// Stream was reset.
+    ///
+    /// The associated data represents the error code sent by the peer.
+    </span>Reset(u64),
+
+    <span class="doccomment">/// PRIORITY_UPDATE was received.
+    ///
+    /// This indicates that the application can use the
+    /// [`take_last_priority_update()`] method to take the last received
+    /// PRIORITY_UPDATE for a specified stream.
+    ///
+    /// This event is triggered once per stream until the last PRIORITY_UPDATE
+    /// is taken. It is recommended that applications defer taking the
+    /// PRIORITY_UPDATE until after [`poll()`] returns [`Done`].
+    ///
+    /// [`take_last_priority_update()`]: struct.Connection.html#method.take_last_priority_update
+    /// [`poll()`]: struct.Connection.html#method.poll
+    /// [`Done`]: enum.Error.html#variant.Done
+    </span>PriorityUpdate,
+
+    <span class="doccomment">/// GOAWAY was received.
+    </span>GoAway,
+}
+
+<span class="doccomment">/// Extensible Priorities parameters.
+///
+/// The `TryFrom` trait supports constructing this object from the serialized
+/// Structured Fields Dictionary field value. I.e, use `TryFrom` to parse the
+/// value of a Priority header field or a PRIORITY_UPDATE frame. Using this
+/// trait requires the `sfv` feature to be enabled.
+</span><span class="attr">#[derive(Debug, PartialEq, Eq)]
+#[repr(C)]
+</span><span class="kw">pub struct </span>Priority {
+    urgency: u8,
+    incremental: bool,
+}
+
+<span class="kw">impl </span>Default <span class="kw">for </span>Priority {
+    <span class="kw">fn </span>default() -&gt; <span class="self">Self </span>{
+        Priority {
+            urgency: PRIORITY_URGENCY_DEFAULT,
+            incremental: PRIORITY_INCREMENTAL_DEFAULT,
+        }
+    }
+}
+
+<span class="kw">impl </span>Priority {
+    <span class="doccomment">/// Creates a new Priority.
+    </span><span class="kw">pub const fn </span>new(urgency: u8, incremental: bool) -&gt; <span class="self">Self </span>{
+        Priority {
+            urgency,
+            incremental,
+        }
+    }
+}
+
+<span class="attr">#[cfg(feature = <span class="string">"sfv"</span>)]
+#[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"sfv"</span>)))]
+</span><span class="kw">impl </span>TryFrom&lt;<span class="kw-2">&amp;</span>[u8]&gt; <span class="kw">for </span>Priority {
+    <span class="kw">type </span>Error = <span class="kw">crate</span>::h3::Error;
+
+    <span class="doccomment">/// Try to parse an Extensible Priority field value.
+    ///
+    /// The field value is expected to be a Structured Fields Dictionary; see
+    /// [Extensible Priorities].
+    ///
+    /// If the `u` or `i` fields are contained with correct types, a constructed
+    /// Priority object is returned. Note that urgency values outside of valid
+    /// range (0 through 7) are clamped to 7.
+    ///
+    /// If the `u` or `i` fields are contained with the wrong types,
+    /// Error::Done is returned.
+    ///
+    /// Omitted parameters will yield default values.
+    ///
+    /// [Extensible Priorities]: https://www.rfc-editor.org/rfc/rfc9218.html#section-4.
+    </span><span class="kw">fn </span>try_from(value: <span class="kw-2">&amp;</span>[u8]) -&gt; std::result::Result&lt;<span class="self">Self</span>, <span class="self">Self</span>::Error&gt; {
+        <span class="kw">let </span>dict = <span class="kw">match </span>sfv::Parser::parse_dictionary(value) {
+            <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+            <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done),
+        };
+
+        <span class="kw">let </span>urgency = <span class="kw">match </span>dict.get(<span class="string">"u"</span>) {
+            <span class="comment">// If there is a u parameter, try to read it as an Item of type
+            // Integer. If the value out of the spec's allowed range
+            // (0 through 7), that's an error so set it to the upper
+            // bound (lowest priority) to avoid interference with
+            // other streams.
+            </span><span class="prelude-val">Some</span>(sfv::ListEntry::Item(item)) =&gt; <span class="kw">match </span>item.bare_item.as_int() {
+                <span class="prelude-val">Some</span>(v) =&gt; {
+                    <span class="kw">if </span>!(PRIORITY_URGENCY_LOWER_BOUND <span class="kw">as </span>i64..=
+                        PRIORITY_URGENCY_UPPER_BOUND <span class="kw">as </span>i64)
+                        .contains(<span class="kw-2">&amp;</span>v)
+                    {
+                        PRIORITY_URGENCY_UPPER_BOUND
+                    } <span class="kw">else </span>{
+                        v <span class="kw">as </span>u8
+                    }
+                },
+
+                <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done),
+            },
+
+            <span class="prelude-val">Some</span>(sfv::ListEntry::InnerList(<span class="kw">_</span>)) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done),
+
+            <span class="comment">// Omitted so use default value.
+            </span><span class="prelude-val">None </span>=&gt; PRIORITY_URGENCY_DEFAULT,
+        };
+
+        <span class="kw">let </span>incremental = <span class="kw">match </span>dict.get(<span class="string">"i"</span>) {
+            <span class="prelude-val">Some</span>(sfv::ListEntry::Item(item)) =&gt;
+                item.bare_item.as_bool().ok_or(Error::Done)<span class="question-mark">?</span>,
+
+            <span class="comment">// Omitted so use default value.
+            </span><span class="kw">_ </span>=&gt; <span class="bool-val">false</span>,
+        };
+
+        <span class="prelude-val">Ok</span>(Priority::new(urgency, incremental))
+    }
+}
+
+<span class="kw">struct </span>ConnectionSettings {
+    <span class="kw">pub </span>max_field_section_size: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>qpack_max_table_capacity: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>qpack_blocked_streams: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>connect_protocol_enabled: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>h3_datagram: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>additional_settings: <span class="prelude-ty">Option</span>&lt;Vec&lt;(u64, u64)&gt;&gt;,
+    <span class="kw">pub </span>raw: <span class="prelude-ty">Option</span>&lt;Vec&lt;(u64, u64)&gt;&gt;,
+}
+
+<span class="kw">struct </span>QpackStreams {
+    <span class="kw">pub </span>encoder_stream_id: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>decoder_stream_id: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+}
+
+<span class="doccomment">/// An HTTP/3 connection.
+</span><span class="kw">pub struct </span>Connection {
+    is_server: bool,
+
+    next_request_stream_id: u64,
+    next_uni_stream_id: u64,
+
+    streams: <span class="kw">crate</span>::stream::StreamIdHashMap&lt;stream::Stream&gt;,
+
+    local_settings: ConnectionSettings,
+    peer_settings: ConnectionSettings,
+
+    control_stream_id: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    peer_control_stream_id: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    qpack_encoder: qpack::Encoder,
+    qpack_decoder: qpack::Decoder,
+
+    local_qpack_streams: QpackStreams,
+    peer_qpack_streams: QpackStreams,
+
+    max_push_id: u64,
+
+    finished_streams: VecDeque&lt;u64&gt;,
+
+    frames_greased: bool,
+
+    local_goaway_id: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    peer_goaway_id: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+}
+
+<span class="kw">impl </span>Connection {
+    <span class="kw">fn </span>new(
+        config: <span class="kw-2">&amp;</span>Config, is_server: bool, enable_dgram: bool,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;Connection&gt; {
+        <span class="kw">let </span>initial_uni_stream_id = <span class="kw">if </span>is_server { <span class="number">0x3 </span>} <span class="kw">else </span>{ <span class="number">0x2 </span>};
+        <span class="kw">let </span>h3_datagram = <span class="kw">if </span>enable_dgram { <span class="prelude-val">Some</span>(<span class="number">1</span>) } <span class="kw">else </span>{ <span class="prelude-val">None </span>};
+
+        <span class="prelude-val">Ok</span>(Connection {
+            is_server,
+
+            next_request_stream_id: <span class="number">0</span>,
+
+            next_uni_stream_id: initial_uni_stream_id,
+
+            streams: Default::default(),
+
+            local_settings: ConnectionSettings {
+                max_field_section_size: config.max_field_section_size,
+                qpack_max_table_capacity: config.qpack_max_table_capacity,
+                qpack_blocked_streams: config.qpack_blocked_streams,
+                connect_protocol_enabled: config.connect_protocol_enabled,
+                h3_datagram,
+                additional_settings: config.additional_settings.clone(),
+                raw: Default::default(),
+            },
+
+            peer_settings: ConnectionSettings {
+                max_field_section_size: <span class="prelude-val">None</span>,
+                qpack_max_table_capacity: <span class="prelude-val">None</span>,
+                qpack_blocked_streams: <span class="prelude-val">None</span>,
+                h3_datagram: <span class="prelude-val">None</span>,
+                connect_protocol_enabled: <span class="prelude-val">None</span>,
+                additional_settings: Default::default(),
+                raw: Default::default(),
+            },
+
+            control_stream_id: <span class="prelude-val">None</span>,
+            peer_control_stream_id: <span class="prelude-val">None</span>,
+
+            qpack_encoder: qpack::Encoder::new(),
+            qpack_decoder: qpack::Decoder::new(),
+
+            local_qpack_streams: QpackStreams {
+                encoder_stream_id: <span class="prelude-val">None</span>,
+                decoder_stream_id: <span class="prelude-val">None</span>,
+            },
+
+            peer_qpack_streams: QpackStreams {
+                encoder_stream_id: <span class="prelude-val">None</span>,
+                decoder_stream_id: <span class="prelude-val">None</span>,
+            },
+
+            max_push_id: <span class="number">0</span>,
+
+            finished_streams: VecDeque::new(),
+
+            frames_greased: <span class="bool-val">false</span>,
+
+            local_goaway_id: <span class="prelude-val">None</span>,
+            peer_goaway_id: <span class="prelude-val">None</span>,
+        })
+    }
+
+    <span class="doccomment">/// Creates a new HTTP/3 connection using the provided QUIC connection.
+    ///
+    /// This will also initiate the HTTP/3 handshake with the peer by opening
+    /// all control streams (including QPACK) and sending the local settings.
+    ///
+    /// On success the new connection is returned.
+    ///
+    /// The [`StreamLimit`] error is returned when the HTTP/3 control stream
+    /// cannot be created due to stream limits.
+    ///
+    /// The [`InternalError`] error is returned when either the underlying QUIC
+    /// connection is not in a suitable state, or the HTTP/3 control stream
+    /// cannot be created due to flow control limits.
+    ///
+    /// [`StreamLimit`]: ../enum.Error.html#variant.StreamLimit
+    /// [`InternalError`]: ../enum.Error.html#variant.InternalError
+    </span><span class="kw">pub fn </span>with_transport(
+        conn: <span class="kw-2">&amp;mut </span><span class="kw">super</span>::Connection, config: <span class="kw-2">&amp;</span>Config,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;Connection&gt; {
+        <span class="kw">let </span>is_client = !conn.is_server;
+        <span class="kw">if </span>is_client &amp;&amp; !(conn.is_established() || conn.is_in_early_data()) {
+            <span class="macro">trace!</span>(<span class="string">"{} QUIC connection must be established or in early data before creating an HTTP/3 connection"</span>, conn.trace_id());
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InternalError);
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>http3_conn =
+            Connection::new(config, conn.is_server, conn.dgram_enabled())<span class="question-mark">?</span>;
+
+        <span class="kw">match </span>http3_conn.send_settings(conn) {
+            <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; (),
+
+            <span class="prelude-val">Err</span>(e) =&gt; {
+                conn.close(<span class="bool-val">true</span>, e.to_wire(), <span class="string">b"Error opening control stream"</span>)<span class="question-mark">?</span>;
+                <span class="kw">return </span><span class="prelude-val">Err</span>(e);
+            },
+        };
+
+        <span class="comment">// Try opening QPACK streams, but ignore errors if it fails since we
+        // don't need them right now.
+        </span>http3_conn.open_qpack_encoder_stream(conn).ok();
+        http3_conn.open_qpack_decoder_stream(conn).ok();
+
+        <span class="kw">if </span>conn.grease {
+            <span class="comment">// Try opening a GREASE stream, but ignore errors since it's not
+            // critical.
+            </span>http3_conn.open_grease_stream(conn).ok();
+        }
+
+        <span class="prelude-val">Ok</span>(http3_conn)
+    }
+
+    <span class="doccomment">/// Sends an HTTP/3 request.
+    ///
+    /// The request is encoded from the provided list of headers without a
+    /// body, and sent on a newly allocated stream. To include a body,
+    /// set `fin` as `false` and subsequently call [`send_body()`] with the
+    /// same `conn` and the `stream_id` returned from this method.
+    ///
+    /// On success the newly allocated stream ID is returned.
+    ///
+    /// The [`StreamBlocked`] error is returned when the underlying QUIC stream
+    /// doesn't have enough capacity for the operation to complete. When this
+    /// happens the application should retry the operation once the stream is
+    /// reported as writable again.
+    ///
+    /// [`send_body()`]: struct.Connection.html#method.send_body
+    /// [`StreamBlocked`]: enum.Error.html#variant.StreamBlocked
+    </span><span class="kw">pub fn </span>send_request&lt;T: NameValue&gt;(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">super</span>::Connection, headers: <span class="kw-2">&amp;</span>[T], fin: bool,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;u64&gt; {
+        <span class="comment">// If we received a GOAWAY from the peer, MUST NOT initiate new
+        // requests.
+        </span><span class="kw">if </span><span class="self">self</span>.peer_goaway_id.is_some() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+        }
+
+        <span class="kw">let </span>stream_id = <span class="self">self</span>.next_request_stream_id;
+
+        <span class="self">self</span>.streams
+            .insert(stream_id, stream::Stream::new(stream_id, <span class="bool-val">true</span>));
+
+        <span class="comment">// The underlying QUIC stream does not exist yet, so calls to e.g.
+        // stream_capacity() will fail. By writing a 0-length buffer, we force
+        // the creation of the QUIC stream state, without actually writing
+        // anything.
+        </span><span class="kw">if let </span><span class="prelude-val">Err</span>(e) = conn.stream_send(stream_id, <span class="string">b""</span>, <span class="bool-val">false</span>) {
+            <span class="self">self</span>.streams.remove(<span class="kw-2">&amp;</span>stream_id);
+
+            <span class="kw">if </span>e == <span class="kw">super</span>::Error::Done {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::StreamBlocked);
+            }
+
+            <span class="kw">return </span><span class="prelude-val">Err</span>(e.into());
+        };
+
+        <span class="self">self</span>.send_headers(conn, stream_id, headers, fin)<span class="question-mark">?</span>;
+
+        <span class="comment">// To avoid skipping stream IDs, we only calculate the next available
+        // stream ID when a request has been successfully buffered.
+        </span><span class="self">self</span>.next_request_stream_id = <span class="self">self
+            </span>.next_request_stream_id
+            .checked_add(<span class="number">4</span>)
+            .ok_or(Error::IdError)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(stream_id)
+    }
+
+    <span class="doccomment">/// Sends an HTTP/3 response on the specified stream with default priority.
+    ///
+    /// This method sends the provided `headers` without a body. To include a
+    /// body, set `fin` as `false` and subsequently call [`send_body()`] with
+    /// the same `conn` and `stream_id`.
+    ///
+    /// The [`StreamBlocked`] error is returned when the underlying QUIC stream
+    /// doesn't have enough capacity for the operation to complete. When this
+    /// happens the application should retry the operation once the stream is
+    /// reported as writable again.
+    ///
+    /// [`send_body()`]: struct.Connection.html#method.send_body
+    /// [`StreamBlocked`]: enum.Error.html#variant.StreamBlocked
+    </span><span class="kw">pub fn </span>send_response&lt;T: NameValue&gt;(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">super</span>::Connection, stream_id: u64, headers: <span class="kw-2">&amp;</span>[T],
+        fin: bool,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>priority = Default::default();
+
+        <span class="self">self</span>.send_response_with_priority(
+            conn, stream_id, headers, <span class="kw-2">&amp;</span>priority, fin,
+        )<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Sends an HTTP/3 response on the specified stream with specified
+    /// priority.
+    ///
+    /// The `priority` parameter represents [Extensible Priority]
+    /// parameters. If the urgency is outside the range 0-7, it will be clamped
+    /// to 7.
+    ///
+    /// The [`StreamBlocked`] error is returned when the underlying QUIC stream
+    /// doesn't have enough capacity for the operation to complete. When this
+    /// happens the application should retry the operation once the stream is
+    /// reported as writable again.
+    ///
+    /// [`StreamBlocked`]: enum.Error.html#variant.StreamBlocked
+    /// [Extensible Priority]: https://www.rfc-editor.org/rfc/rfc9218.html#section-4.
+    </span><span class="kw">pub fn </span>send_response_with_priority&lt;T: NameValue&gt;(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">super</span>::Connection, stream_id: u64, headers: <span class="kw-2">&amp;</span>[T],
+        priority: <span class="kw-2">&amp;</span>Priority, fin: bool,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if </span>!<span class="self">self</span>.streams.contains_key(<span class="kw-2">&amp;</span>stream_id) {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+        }
+
+        <span class="comment">// Clamp and shift urgency into quiche-priority space
+        </span><span class="kw">let </span>urgency = priority
+            .urgency
+            .clamp(PRIORITY_URGENCY_LOWER_BOUND, PRIORITY_URGENCY_UPPER_BOUND) +
+            PRIORITY_URGENCY_OFFSET;
+
+        conn.stream_priority(stream_id, urgency, priority.incremental)<span class="question-mark">?</span>;
+
+        <span class="self">self</span>.send_headers(conn, stream_id, headers, fin)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="kw">fn </span>encode_header_block&lt;T: NameValue&gt;(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, headers: <span class="kw-2">&amp;</span>[T],
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;Vec&lt;u8&gt;&gt; {
+        <span class="kw">let </span>headers_len = headers
+            .iter()
+            .fold(<span class="number">0</span>, |acc, h| acc + h.value().len() + h.name().len() + <span class="number">32</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>header_block = <span class="macro">vec!</span>[<span class="number">0</span>; headers_len];
+        <span class="kw">let </span>len = <span class="self">self
+            </span>.qpack_encoder
+            .encode(headers, <span class="kw-2">&amp;mut </span>header_block)
+            .map_err(|<span class="kw">_</span>| Error::InternalError)<span class="question-mark">?</span>;
+
+        header_block.truncate(len);
+
+        <span class="prelude-val">Ok</span>(header_block)
+    }
+
+    <span class="kw">fn </span>send_headers&lt;T: NameValue&gt;(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">super</span>::Connection, stream_id: u64, headers: <span class="kw-2">&amp;</span>[T],
+        fin: bool,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">10</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">if </span>!<span class="self">self</span>.frames_greased &amp;&amp; conn.grease {
+            <span class="self">self</span>.send_grease_frames(conn, stream_id)<span class="question-mark">?</span>;
+            <span class="self">self</span>.frames_greased = <span class="bool-val">true</span>;
+        }
+
+        <span class="kw">let </span>header_block = <span class="self">self</span>.encode_header_block(headers)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>overhead = octets::varint_len(frame::HEADERS_FRAME_TYPE_ID) +
+            octets::varint_len(header_block.len() <span class="kw">as </span>u64);
+
+        <span class="comment">// Headers need to be sent atomically, so make sure the stream has
+        // enough capacity.
+        </span><span class="kw">match </span>conn.stream_writable(stream_id, overhead + header_block.len()) {
+            <span class="prelude-val">Ok</span>(<span class="bool-val">true</span>) =&gt; (),
+
+            <span class="prelude-val">Ok</span>(<span class="bool-val">false</span>) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::StreamBlocked),
+
+            <span class="prelude-val">Err</span>(e) =&gt; {
+                <span class="kw">if </span>conn.stream_finished(stream_id) {
+                    <span class="self">self</span>.streams.remove(<span class="kw-2">&amp;</span>stream_id);
+                }
+
+                <span class="kw">return </span><span class="prelude-val">Err</span>(e.into());
+            },
+        };
+
+        b.put_varint(frame::HEADERS_FRAME_TYPE_ID)<span class="question-mark">?</span>;
+        b.put_varint(header_block.len() <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+        <span class="kw">let </span>off = b.off();
+        conn.stream_send(stream_id, <span class="kw-2">&amp;</span>d[..off], <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+
+        <span class="comment">// Sending header block separately avoids unnecessary copy.
+        </span>conn.stream_send(stream_id, <span class="kw-2">&amp;</span>header_block, fin)<span class="question-mark">?</span>;
+
+        <span class="macro">trace!</span>(
+            <span class="string">"{} tx frm HEADERS stream={} len={} fin={}"</span>,
+            conn.trace_id(),
+            stream_id,
+            header_block.len(),
+            fin
+        );
+
+        <span class="macro">qlog_with_type!</span>(QLOG_FRAME_CREATED, conn.qlog, q, {
+            <span class="kw">let </span>qlog_headers = headers
+                .iter()
+                .map(|h| qlog::events::h3::HttpHeader {
+                    name: String::from_utf8_lossy(h.name()).into_owned(),
+                    value: String::from_utf8_lossy(h.value()).into_owned(),
+                })
+                .collect();
+
+            <span class="kw">let </span>frame = Http3Frame::Headers {
+                headers: qlog_headers,
+            };
+            <span class="kw">let </span>ev_data = EventData::H3FrameCreated(H3FrameCreated {
+                stream_id,
+                length: <span class="prelude-val">Some</span>(header_block.len() <span class="kw">as </span>u64),
+                frame,
+                raw: <span class="prelude-val">None</span>,
+            });
+
+            q.add_event_data_now(ev_data).ok();
+        });
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(s) = <span class="self">self</span>.streams.get_mut(<span class="kw-2">&amp;</span>stream_id) {
+            s.initialize_local();
+        }
+
+        <span class="kw">if </span>fin &amp;&amp; conn.stream_finished(stream_id) {
+            <span class="self">self</span>.streams.remove(<span class="kw-2">&amp;</span>stream_id);
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Sends an HTTP/3 body chunk on the given stream.
+    ///
+    /// On success the number of bytes written is returned, or [`Done`] if no
+    /// bytes could be written (e.g. because the stream is blocked).
+    ///
+    /// Note that the number of written bytes returned can be lower than the
+    /// length of the input buffer when the underlying QUIC stream doesn't have
+    /// enough capacity for the operation to complete.
+    ///
+    /// When a partial write happens (including when [`Done`] is returned) the
+    /// application should retry the operation once the stream is reported as
+    /// writable again.
+    ///
+    /// [`Done`]: enum.Error.html#variant.Done
+    </span><span class="kw">pub fn </span>send_body(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">super</span>::Connection, stream_id: u64, body: <span class="kw-2">&amp;</span>[u8],
+        fin: bool,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">10</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="comment">// Validate that it is sane to send data on the stream.
+        </span><span class="kw">if </span>stream_id % <span class="number">4 </span>!= <span class="number">0 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+        }
+
+        <span class="kw">match </span><span class="self">self</span>.streams.get(<span class="kw-2">&amp;</span>stream_id) {
+            <span class="prelude-val">Some</span>(s) =&gt;
+                <span class="kw">if </span>!s.local_initialized() {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+                },
+
+            <span class="prelude-val">None </span>=&gt; {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+            },
+        };
+
+        <span class="comment">// Avoid sending 0-length DATA frames when the fin flag is false.
+        </span><span class="kw">if </span>body.is_empty() &amp;&amp; !fin {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="kw">let </span>overhead = octets::varint_len(frame::DATA_FRAME_TYPE_ID) +
+            octets::varint_len(body.len() <span class="kw">as </span>u64);
+
+        <span class="kw">let </span>stream_cap = <span class="kw">match </span>conn.stream_capacity(stream_id) {
+            <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+            <span class="prelude-val">Err</span>(e) =&gt; {
+                <span class="kw">if </span>conn.stream_finished(stream_id) {
+                    <span class="self">self</span>.streams.remove(<span class="kw-2">&amp;</span>stream_id);
+                }
+
+                <span class="kw">return </span><span class="prelude-val">Err</span>(e.into());
+            },
+        };
+
+        <span class="comment">// Make sure there is enough capacity to send the DATA frame header.
+        </span><span class="kw">if </span>stream_cap &lt; overhead {
+            <span class="kw">let _ </span>= conn.stream_writable(stream_id, overhead + <span class="number">1</span>);
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="comment">// Cap the frame payload length to the stream's capacity.
+        </span><span class="kw">let </span>body_len = std::cmp::min(body.len(), stream_cap - overhead);
+
+        <span class="comment">// If we can't send the entire body, set the fin flag to false so the
+        // application can try again later.
+        </span><span class="kw">let </span>fin = <span class="kw">if </span>body_len != body.len() { <span class="bool-val">false </span>} <span class="kw">else </span>{ fin };
+
+        <span class="comment">// Again, avoid sending 0-length DATA frames when the fin flag is false.
+        </span><span class="kw">if </span>body_len == <span class="number">0 </span>&amp;&amp; !fin {
+            <span class="kw">let _ </span>= conn.stream_writable(stream_id, overhead + <span class="number">1</span>);
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        b.put_varint(frame::DATA_FRAME_TYPE_ID)<span class="question-mark">?</span>;
+        b.put_varint(body_len <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+        <span class="kw">let </span>off = b.off();
+        conn.stream_send(stream_id, <span class="kw-2">&amp;</span>d[..off], <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+
+        <span class="comment">// Return how many bytes were written, excluding the frame header.
+        // Sending body separately avoids unnecessary copy.
+        </span><span class="kw">let </span>written = conn.stream_send(stream_id, <span class="kw-2">&amp;</span>body[..body_len], fin)<span class="question-mark">?</span>;
+
+        <span class="macro">trace!</span>(
+            <span class="string">"{} tx frm DATA stream={} len={} fin={}"</span>,
+            conn.trace_id(),
+            stream_id,
+            written,
+            fin
+        );
+
+        <span class="macro">qlog_with_type!</span>(QLOG_FRAME_CREATED, conn.qlog, q, {
+            <span class="kw">let </span>frame = Http3Frame::Data { raw: <span class="prelude-val">None </span>};
+            <span class="kw">let </span>ev_data = EventData::H3FrameCreated(H3FrameCreated {
+                stream_id,
+                length: <span class="prelude-val">Some</span>(written <span class="kw">as </span>u64),
+                frame,
+                raw: <span class="prelude-val">None</span>,
+            });
+
+            q.add_event_data_now(ev_data).ok();
+        });
+
+        <span class="kw">if </span>written &lt; body.len() {
+            <span class="comment">// Ensure the peer is notified that the connection or stream is
+            // blocked when the stream's capacity is limited by flow control.
+            //
+            // We only need enough capacity to send a few bytes, to make sure
+            // the stream doesn't hang due to congestion window not growing
+            // enough.
+            </span><span class="kw">let _ </span>= conn.stream_writable(stream_id, overhead + <span class="number">1</span>);
+        }
+
+        <span class="kw">if </span>fin &amp;&amp; written == body.len() &amp;&amp; conn.stream_finished(stream_id) {
+            <span class="self">self</span>.streams.remove(<span class="kw-2">&amp;</span>stream_id);
+        }
+
+        <span class="prelude-val">Ok</span>(written)
+    }
+
+    <span class="doccomment">/// Returns whether the peer enabled HTTP/3 DATAGRAM frame support.
+    ///
+    /// Support is signalled by the peer's SETTINGS, so this method always
+    /// returns false until they have been processed using the [`poll()`]
+    /// method.
+    ///
+    /// [`poll()`]: struct.Connection.html#method.poll
+    </span><span class="kw">pub fn </span>dgram_enabled_by_peer(<span class="kw-2">&amp;</span><span class="self">self</span>, conn: <span class="kw-2">&amp;</span><span class="kw">super</span>::Connection) -&gt; bool {
+        <span class="self">self</span>.peer_settings.h3_datagram == <span class="prelude-val">Some</span>(<span class="number">1</span>) &amp;&amp;
+            conn.dgram_max_writable_len().is_some()
+    }
+
+    <span class="doccomment">/// Returns whether the peer enabled extended CONNECT support.
+    ///
+    /// Support is signalled by the peer's SETTINGS, so this method always
+    /// returns false until they have been processed using the [`poll()`]
+    /// method.
+    ///
+    /// [`poll()`]: struct.Connection.html#method.poll
+    </span><span class="kw">pub fn </span>extended_connect_enabled_by_peer(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.peer_settings.connect_protocol_enabled == <span class="prelude-val">Some</span>(<span class="number">1</span>)
+    }
+
+    <span class="doccomment">/// Reads request or response body data into the provided buffer.
+    ///
+    /// Applications should call this method whenever the [`poll()`] method
+    /// returns a [`Data`] event.
+    ///
+    /// On success the amount of bytes read is returned, or [`Done`] if there
+    /// is no data to read.
+    ///
+    /// [`poll()`]: struct.Connection.html#method.poll
+    /// [`Data`]: enum.Event.html#variant.Data
+    /// [`Done`]: enum.Error.html#variant.Done
+    </span><span class="kw">pub fn </span>recv_body(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">super</span>::Connection, stream_id: u64, out: <span class="kw-2">&amp;mut </span>[u8],
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>total = <span class="number">0</span>;
+
+        <span class="comment">// Try to consume all buffered data for the stream, even across multiple
+        // DATA frames.
+        </span><span class="kw">while </span>total &lt; out.len() {
+            <span class="kw">let </span>stream = <span class="self">self</span>.streams.get_mut(<span class="kw-2">&amp;</span>stream_id).ok_or(Error::Done)<span class="question-mark">?</span>;
+
+            <span class="kw">if </span>stream.state() != stream::State::Data {
+                <span class="kw">break</span>;
+            }
+
+            <span class="kw">let </span>(read, fin) =
+                <span class="kw">match </span>stream.try_consume_data(conn, <span class="kw-2">&amp;mut </span>out[total..]) {
+                    <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                    <span class="prelude-val">Err</span>(Error::Done) =&gt; <span class="kw">break</span>,
+
+                    <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+                };
+
+            total += read;
+
+            <span class="comment">// No more data to read, we are done.
+            </span><span class="kw">if </span>read == <span class="number">0 </span>|| fin {
+                <span class="kw">break</span>;
+            }
+
+            <span class="comment">// Process incoming data from the stream. For example, if a whole
+            // DATA frame was consumed, and another one is queued behind it,
+            // this will ensure the additional data will also be returned to
+            // the application.
+            </span><span class="kw">match </span><span class="self">self</span>.process_readable_stream(conn, stream_id, <span class="bool-val">false</span>) {
+                <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; <span class="macro">unreachable!</span>(),
+
+                <span class="prelude-val">Err</span>(Error::Done) =&gt; (),
+
+                <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+            };
+
+            <span class="kw">if </span>conn.stream_finished(stream_id) {
+                <span class="kw">break</span>;
+            }
+        }
+
+        <span class="comment">// While body is being received, the stream is marked as finished only
+        // when all data is read by the application.
+        </span><span class="kw">if </span>conn.stream_finished(stream_id) {
+            <span class="self">self</span>.process_finished_stream(stream_id);
+        }
+
+        <span class="kw">if </span>total == <span class="number">0 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="prelude-val">Ok</span>(total)
+    }
+
+    <span class="doccomment">/// Sends a PRIORITY_UPDATE frame on the control stream with specified
+    /// request stream ID and priority.
+    ///
+    /// The `priority` parameter represents [Extensible Priority]
+    /// parameters. If the urgency is outside the range 0-7, it will be clamped
+    /// to 7.
+    ///
+    /// The [`StreamBlocked`] error is returned when the underlying QUIC stream
+    /// doesn't have enough capacity for the operation to complete. When this
+    /// happens the application should retry the operation once the stream is
+    /// reported as writable again.
+    ///
+    /// [`StreamBlocked`]: enum.Error.html#variant.StreamBlocked
+    /// [Extensible Priority]: https://www.rfc-editor.org/rfc/rfc9218.html#section-4.
+    </span><span class="kw">pub fn </span>send_priority_update_for_request(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">super</span>::Connection, stream_id: u64,
+        priority: <span class="kw-2">&amp;</span>Priority,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">20</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="comment">// Validate that it is sane to send PRIORITY_UPDATE.
+        </span><span class="kw">if </span><span class="self">self</span>.is_server {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+        }
+
+        <span class="kw">if </span>stream_id % <span class="number">4 </span>!= <span class="number">0 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+        }
+
+        <span class="kw">let </span>control_stream_id =
+            <span class="self">self</span>.control_stream_id.ok_or(Error::FrameUnexpected)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>urgency = priority
+            .urgency
+            .clamp(PRIORITY_URGENCY_LOWER_BOUND, PRIORITY_URGENCY_UPPER_BOUND);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>field_value = <span class="macro">format!</span>(<span class="string">"u={urgency}"</span>);
+
+        <span class="kw">if </span>priority.incremental {
+            field_value.push_str(<span class="string">",i"</span>);
+        }
+
+        <span class="kw">let </span>priority_field_value = field_value.as_bytes();
+        <span class="kw">let </span>frame_payload_len =
+            octets::varint_len(stream_id) + priority_field_value.len();
+
+        <span class="kw">let </span>overhead =
+            octets::varint_len(frame::PRIORITY_UPDATE_FRAME_REQUEST_TYPE_ID) +
+                octets::varint_len(stream_id) +
+                octets::varint_len(frame_payload_len <span class="kw">as </span>u64);
+
+        <span class="comment">// Make sure the control stream has enough capacity.
+        </span><span class="kw">match </span>conn.stream_writable(
+            control_stream_id,
+            overhead + priority_field_value.len(),
+        ) {
+            <span class="prelude-val">Ok</span>(<span class="bool-val">true</span>) =&gt; (),
+
+            <span class="prelude-val">Ok</span>(<span class="bool-val">false</span>) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::StreamBlocked),
+
+            <span class="prelude-val">Err</span>(e) =&gt; {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(e.into());
+            },
+        }
+
+        b.put_varint(frame::PRIORITY_UPDATE_FRAME_REQUEST_TYPE_ID)<span class="question-mark">?</span>;
+        b.put_varint(frame_payload_len <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+        b.put_varint(stream_id)<span class="question-mark">?</span>;
+        <span class="kw">let </span>off = b.off();
+        conn.stream_send(control_stream_id, <span class="kw-2">&amp;</span>d[..off], <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+
+        <span class="comment">// Sending field value separately avoids unnecessary copy.
+        </span>conn.stream_send(control_stream_id, priority_field_value, <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+
+        <span class="macro">trace!</span>(
+            <span class="string">"{} tx frm PRIORITY_UPDATE request_stream={} priority_field_value={}"</span>,
+            conn.trace_id(),
+            stream_id,
+            field_value,
+        );
+
+        <span class="macro">qlog_with_type!</span>(QLOG_FRAME_CREATED, conn.qlog, q, {
+            <span class="kw">let </span>frame = Http3Frame::PriorityUpdate {
+                target_stream_type: H3PriorityTargetStreamType::Request,
+                prioritized_element_id: stream_id,
+                priority_field_value: field_value.clone(),
+            };
+
+            <span class="kw">let </span>ev_data = EventData::H3FrameCreated(H3FrameCreated {
+                stream_id,
+                length: <span class="prelude-val">Some</span>(priority_field_value.len() <span class="kw">as </span>u64),
+                frame,
+                raw: <span class="prelude-val">None</span>,
+            });
+
+            q.add_event_data_now(ev_data).ok();
+        });
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Take the last PRIORITY_UPDATE for a prioritized element ID.
+    ///
+    /// When the [`poll()`] method returns a [`PriorityUpdate`] event for a
+    /// prioritized element, the event has triggered and will not rearm until
+    /// applications call this method. It is recommended that applications defer
+    /// taking the PRIORITY_UPDATE until after [`poll()`] returns [`Done`].
+    ///
+    /// On success the Priority Field Value is returned, or [`Done`] if there is
+    /// no PRIORITY_UPDATE to read (either because there is no value to take, or
+    /// because the prioritized element does not exist).
+    ///
+    /// [`poll()`]: struct.Connection.html#method.poll
+    /// [`PriorityUpdate`]: enum.Event.html#variant.PriorityUpdate
+    /// [`Done`]: enum.Error.html#variant.Done
+    </span><span class="kw">pub fn </span>take_last_priority_update(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, prioritized_element_id: u64,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;Vec&lt;u8&gt;&gt; {
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(stream) = <span class="self">self</span>.streams.get_mut(<span class="kw-2">&amp;</span>prioritized_element_id) {
+            <span class="kw">return </span>stream.take_last_priority_update().ok_or(Error::Done);
+        }
+
+        <span class="prelude-val">Err</span>(Error::Done)
+    }
+
+    <span class="doccomment">/// Processes HTTP/3 data received from the peer.
+    ///
+    /// On success it returns an [`Event`] and an ID, or [`Done`] when there are
+    /// no events to report.
+    ///
+    /// Note that all events are edge-triggered, meaning that once reported they
+    /// will not be reported again by calling this method again, until the event
+    /// is re-armed.
+    ///
+    /// The events [`Headers`], [`Data`] and [`Finished`] return a stream ID,
+    /// which is used in methods [`recv_body()`], [`send_response()`] or
+    /// [`send_body()`].
+    ///
+    /// The event [`GoAway`] returns an ID that depends on the connection role.
+    /// A client receives the largest processed stream ID. A server receives the
+    /// the largest permitted push ID.
+    ///
+    /// The event [`PriorityUpdate`] only occurs at servers. It returns a
+    /// prioritized element ID that is used in the method
+    /// [`take_last_priority_update()`], which rearms the event for that ID.
+    ///
+    /// If an error occurs while processing data, the connection is closed with
+    /// the appropriate error code, using the transport's [`close()`] method.
+    ///
+    /// [`Event`]: enum.Event.html
+    /// [`Done`]: enum.Error.html#variant.Done
+    /// [`Headers`]: enum.Event.html#variant.Headers
+    /// [`Data`]: enum.Event.html#variant.Data
+    /// [`Finished`]: enum.Event.html#variant.Finished
+    /// [`GoAway`]: enum.Event.html#variant.GoAWay
+    /// [`PriorityUpdate`]: enum.Event.html#variant.PriorityUpdate
+    /// [`recv_body()`]: struct.Connection.html#method.recv_body
+    /// [`send_response()`]: struct.Connection.html#method.send_response
+    /// [`send_body()`]: struct.Connection.html#method.send_body
+    /// [`recv_dgram()`]: struct.Connection.html#method.recv_dgram
+    /// [`take_last_priority_update()`]: struct.Connection.html#method.take_last_priority_update
+    /// [`close()`]: ../struct.Connection.html#method.close
+    </span><span class="kw">pub fn </span>poll(<span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">super</span>::Connection) -&gt; <span class="prelude-ty">Result</span>&lt;(u64, Event)&gt; {
+        <span class="comment">// When connection close is initiated by the local application (e.g. due
+        // to a protocol error), the connection itself might be in a broken
+        // state, so return early.
+        </span><span class="kw">if </span>conn.local_error.is_some() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="comment">// Process control streams first.
+        </span><span class="kw">if let </span><span class="prelude-val">Some</span>(stream_id) = <span class="self">self</span>.peer_control_stream_id {
+            <span class="kw">match </span><span class="self">self</span>.process_control_stream(conn, stream_id) {
+                <span class="prelude-val">Ok</span>(ev) =&gt; <span class="kw">return </span><span class="prelude-val">Ok</span>(ev),
+
+                <span class="prelude-val">Err</span>(Error::Done) =&gt; (),
+
+                <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+            };
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(stream_id) = <span class="self">self</span>.peer_qpack_streams.encoder_stream_id {
+            <span class="kw">match </span><span class="self">self</span>.process_control_stream(conn, stream_id) {
+                <span class="prelude-val">Ok</span>(ev) =&gt; <span class="kw">return </span><span class="prelude-val">Ok</span>(ev),
+
+                <span class="prelude-val">Err</span>(Error::Done) =&gt; (),
+
+                <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+            };
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(stream_id) = <span class="self">self</span>.peer_qpack_streams.decoder_stream_id {
+            <span class="kw">match </span><span class="self">self</span>.process_control_stream(conn, stream_id) {
+                <span class="prelude-val">Ok</span>(ev) =&gt; <span class="kw">return </span><span class="prelude-val">Ok</span>(ev),
+
+                <span class="prelude-val">Err</span>(Error::Done) =&gt; (),
+
+                <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+            };
+        }
+
+        <span class="comment">// Process finished streams list.
+        </span><span class="kw">if let </span><span class="prelude-val">Some</span>(finished) = <span class="self">self</span>.finished_streams.pop_front() {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>((finished, Event::Finished));
+        }
+
+        <span class="comment">// Process HTTP/3 data from readable streams.
+        </span><span class="kw">for </span>s <span class="kw">in </span>conn.readable() {
+            <span class="macro">trace!</span>(<span class="string">"{} stream id {} is readable"</span>, conn.trace_id(), s);
+
+            <span class="kw">let </span>ev = <span class="kw">match </span><span class="self">self</span>.process_readable_stream(conn, s, <span class="bool-val">true</span>) {
+                <span class="prelude-val">Ok</span>(v) =&gt; <span class="prelude-val">Some</span>(v),
+
+                <span class="prelude-val">Err</span>(Error::Done) =&gt; <span class="prelude-val">None</span>,
+
+                <span class="comment">// Return early if the stream was reset, to avoid returning
+                // a Finished event later as well.
+                </span><span class="prelude-val">Err</span>(Error::TransportError(<span class="kw">crate</span>::Error::StreamReset(e))) =&gt;
+                    <span class="kw">return </span><span class="prelude-val">Ok</span>((s, Event::Reset(e))),
+
+                <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+            };
+
+            <span class="kw">if </span>conn.stream_finished(s) {
+                <span class="self">self</span>.process_finished_stream(s);
+            }
+
+            <span class="comment">// TODO: check if stream is completed so it can be freed
+            </span><span class="kw">if let </span><span class="prelude-val">Some</span>(ev) = ev {
+                <span class="kw">return </span><span class="prelude-val">Ok</span>(ev);
+            }
+        }
+
+        <span class="comment">// Process finished streams list once again, to make sure `Finished`
+        // events are returned when receiving empty stream frames with the fin
+        // flag set.
+        </span><span class="kw">if let </span><span class="prelude-val">Some</span>(finished) = <span class="self">self</span>.finished_streams.pop_front() {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>((finished, Event::Finished));
+        }
+
+        <span class="prelude-val">Err</span>(Error::Done)
+    }
+
+    <span class="doccomment">/// Sends a GOAWAY frame to initiate graceful connection closure.
+    ///
+    /// When quiche is used in the server role, the `id` parameter is the stream
+    /// ID of the highest processed request. This can be any valid ID between 0
+    /// and 2^62-4. However, the ID cannot be increased. Failure to satisfy
+    /// these conditions will return an error.
+    ///
+    /// This method does not close the QUIC connection. Applications are
+    /// required to call [`close()`] themselves.
+    ///
+    /// [`close()`]: ../struct.Connection.html#method.close
+    </span><span class="kw">pub fn </span>send_goaway(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">super</span>::Connection, id: u64,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>id = id;
+
+        <span class="comment">// TODO: server push
+        //
+        // In the meantime always send 0 from client.
+        </span><span class="kw">if </span>!<span class="self">self</span>.is_server {
+            id = <span class="number">0</span>;
+        }
+
+        <span class="kw">if </span><span class="self">self</span>.is_server &amp;&amp; id % <span class="number">4 </span>!= <span class="number">0 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::IdError);
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(sent_id) = <span class="self">self</span>.local_goaway_id {
+            <span class="kw">if </span>id &gt; sent_id {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::IdError);
+            }
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(stream_id) = <span class="self">self</span>.control_stream_id {
+            <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">10</span>];
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+            <span class="kw">let </span>frame = frame::Frame::GoAway { id };
+
+            <span class="kw">let </span>wire_len = frame.to_bytes(<span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>;
+            <span class="kw">let </span>stream_cap = conn.stream_capacity(stream_id)<span class="question-mark">?</span>;
+
+            <span class="kw">if </span>stream_cap &lt; wire_len {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::StreamBlocked);
+            }
+
+            <span class="macro">trace!</span>(<span class="string">"{} tx frm {:?}"</span>, conn.trace_id(), frame);
+
+            <span class="macro">qlog_with_type!</span>(QLOG_FRAME_CREATED, conn.qlog, q, {
+                <span class="kw">let </span>ev_data = EventData::H3FrameCreated(H3FrameCreated {
+                    stream_id,
+                    length: <span class="prelude-val">Some</span>(octets::varint_len(id) <span class="kw">as </span>u64),
+                    frame: frame.to_qlog(),
+                    raw: <span class="prelude-val">None</span>,
+                });
+
+                q.add_event_data_now(ev_data).ok();
+            });
+
+            <span class="kw">let </span>off = b.off();
+            conn.stream_send(stream_id, <span class="kw-2">&amp;</span>d[..off], <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.local_goaway_id = <span class="prelude-val">Some</span>(id);
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Gets the raw settings from peer including unknown and reserved types.
+    ///
+    /// The order of settings is the same as received in the SETTINGS frame.
+    </span><span class="kw">pub fn </span>peer_settings_raw(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>[(u64, u64)]&gt; {
+        <span class="self">self</span>.peer_settings.raw.as_deref()
+    }
+
+    <span class="kw">fn </span>open_uni_stream(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">super</span>::Connection, ty: u64,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;u64&gt; {
+        <span class="kw">let </span>stream_id = <span class="self">self</span>.next_uni_stream_id;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0</span>; <span class="number">8</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">match </span>ty {
+            <span class="comment">// Control and QPACK streams are the most important to schedule.
+            </span>stream::HTTP3_CONTROL_STREAM_TYPE_ID |
+            stream::QPACK_ENCODER_STREAM_TYPE_ID |
+            stream::QPACK_DECODER_STREAM_TYPE_ID =&gt; {
+                conn.stream_priority(stream_id, <span class="number">0</span>, <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+            },
+
+            <span class="comment">// TODO: Server push
+            </span>stream::HTTP3_PUSH_STREAM_TYPE_ID =&gt; (),
+
+            <span class="comment">// Anything else is a GREASE stream, so make it the least important.
+            </span><span class="kw">_ </span>=&gt; {
+                conn.stream_priority(stream_id, <span class="number">255</span>, <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+            },
+        }
+
+        conn.stream_send(stream_id, b.put_varint(ty)<span class="question-mark">?</span>, <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+
+        <span class="comment">// To avoid skipping stream IDs, we only calculate the next available
+        // stream ID when data has been successfully buffered.
+        </span><span class="self">self</span>.next_uni_stream_id = <span class="self">self
+            </span>.next_uni_stream_id
+            .checked_add(<span class="number">4</span>)
+            .ok_or(Error::IdError)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(stream_id)
+    }
+
+    <span class="kw">fn </span>open_qpack_encoder_stream(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">super</span>::Connection,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>stream_id =
+            <span class="self">self</span>.open_uni_stream(conn, stream::QPACK_ENCODER_STREAM_TYPE_ID)<span class="question-mark">?</span>;
+
+        <span class="self">self</span>.local_qpack_streams.encoder_stream_id = <span class="prelude-val">Some</span>(stream_id);
+
+        <span class="macro">qlog_with_type!</span>(QLOG_STREAM_TYPE_SET, conn.qlog, q, {
+            <span class="kw">let </span>ev_data = EventData::H3StreamTypeSet(H3StreamTypeSet {
+                stream_id,
+                owner: <span class="prelude-val">Some</span>(H3Owner::Local),
+                stream_type: H3StreamType::QpackEncode,
+                stream_type_value: <span class="prelude-val">None</span>,
+                associated_push_id: <span class="prelude-val">None</span>,
+            });
+
+            q.add_event_data_now(ev_data).ok();
+        });
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="kw">fn </span>open_qpack_decoder_stream(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">super</span>::Connection,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>stream_id =
+            <span class="self">self</span>.open_uni_stream(conn, stream::QPACK_DECODER_STREAM_TYPE_ID)<span class="question-mark">?</span>;
+
+        <span class="self">self</span>.local_qpack_streams.decoder_stream_id = <span class="prelude-val">Some</span>(stream_id);
+
+        <span class="macro">qlog_with_type!</span>(QLOG_STREAM_TYPE_SET, conn.qlog, q, {
+            <span class="kw">let </span>ev_data = EventData::H3StreamTypeSet(H3StreamTypeSet {
+                stream_id,
+                owner: <span class="prelude-val">Some</span>(H3Owner::Local),
+                stream_type: H3StreamType::QpackDecode,
+                stream_type_value: <span class="prelude-val">None</span>,
+                associated_push_id: <span class="prelude-val">None</span>,
+            });
+
+            q.add_event_data_now(ev_data).ok();
+        });
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Send GREASE frames on the provided stream ID.
+    </span><span class="kw">fn </span>send_grease_frames(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">super</span>::Connection, stream_id: u64,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0</span>; <span class="number">8</span>];
+
+        <span class="kw">let </span>stream_cap = <span class="kw">match </span>conn.stream_capacity(stream_id) {
+            <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+            <span class="prelude-val">Err</span>(e) =&gt; {
+                <span class="kw">if </span>conn.stream_finished(stream_id) {
+                    <span class="self">self</span>.streams.remove(<span class="kw-2">&amp;</span>stream_id);
+                }
+
+                <span class="kw">return </span><span class="prelude-val">Err</span>(e.into());
+            },
+        };
+
+        <span class="kw">let </span>grease_frame1 = grease_value();
+        <span class="kw">let </span>grease_frame2 = grease_value();
+        <span class="kw">let </span>grease_payload = <span class="string">b"GREASE is the word"</span>;
+
+        <span class="kw">let </span>overhead = octets::varint_len(grease_frame1) + <span class="comment">// frame type
+            </span><span class="number">1 </span>+ <span class="comment">// payload len
+            </span>octets::varint_len(grease_frame2) + <span class="comment">// frame type
+            </span><span class="number">1 </span>+ <span class="comment">// payload len
+            </span>grease_payload.len(); <span class="comment">// payload
+
+        // Don't send GREASE if there is not enough capacity for it. Greasing
+        // will _not_ be attempted again later on.
+        </span><span class="kw">if </span>stream_cap &lt; overhead {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+        }
+
+        <span class="comment">// Empty GREASE frame.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        conn.stream_send(stream_id, b.put_varint(grease_frame1)<span class="question-mark">?</span>, <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        conn.stream_send(stream_id, b.put_varint(<span class="number">0</span>)<span class="question-mark">?</span>, <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+
+        <span class="macro">trace!</span>(
+            <span class="string">"{} tx frm GREASE stream={} len=0"</span>,
+            conn.trace_id(),
+            stream_id
+        );
+
+        <span class="macro">qlog_with_type!</span>(QLOG_FRAME_CREATED, conn.qlog, q, {
+            <span class="kw">let </span>frame = Http3Frame::Reserved { length: <span class="prelude-val">Some</span>(<span class="number">0</span>) };
+            <span class="kw">let </span>ev_data = EventData::H3FrameCreated(H3FrameCreated {
+                stream_id,
+                length: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+                frame,
+                raw: <span class="prelude-val">None</span>,
+            });
+
+            q.add_event_data_now(ev_data).ok();
+        });
+
+        <span class="comment">// GREASE frame with payload.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        conn.stream_send(stream_id, b.put_varint(grease_frame2)<span class="question-mark">?</span>, <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        conn.stream_send(stream_id, b.put_varint(<span class="number">18</span>)<span class="question-mark">?</span>, <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+
+        conn.stream_send(stream_id, grease_payload, <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+
+        <span class="macro">trace!</span>(
+            <span class="string">"{} tx frm GREASE stream={} len={}"</span>,
+            conn.trace_id(),
+            stream_id,
+            grease_payload.len()
+        );
+
+        <span class="macro">qlog_with_type!</span>(QLOG_FRAME_CREATED, conn.qlog, q, {
+            <span class="kw">let </span>frame = Http3Frame::Reserved {
+                length: <span class="prelude-val">Some</span>(grease_payload.len() <span class="kw">as </span>u64),
+            };
+            <span class="kw">let </span>ev_data = EventData::H3FrameCreated(H3FrameCreated {
+                stream_id,
+                length: <span class="prelude-val">Some</span>(grease_payload.len() <span class="kw">as </span>u64),
+                frame,
+                raw: <span class="prelude-val">None</span>,
+            });
+
+            q.add_event_data_now(ev_data).ok();
+        });
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Opens a new unidirectional stream with a GREASE type and sends some
+    /// unframed payload.
+    </span><span class="kw">fn </span>open_grease_stream(<span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">super</span>::Connection) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>ty = grease_value();
+        <span class="kw">match </span><span class="self">self</span>.open_uni_stream(conn, ty) {
+            <span class="prelude-val">Ok</span>(stream_id) =&gt; {
+                conn.stream_send(stream_id, <span class="string">b"GREASE is the word"</span>, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
+
+                <span class="macro">trace!</span>(<span class="string">"{} open GREASE stream {}"</span>, conn.trace_id(), stream_id);
+
+                <span class="macro">qlog_with_type!</span>(QLOG_STREAM_TYPE_SET, conn.qlog, q, {
+                    <span class="kw">let </span>ev_data = EventData::H3StreamTypeSet(H3StreamTypeSet {
+                        stream_id,
+                        owner: <span class="prelude-val">Some</span>(H3Owner::Local),
+                        stream_type: H3StreamType::Unknown,
+                        stream_type_value: <span class="prelude-val">Some</span>(ty),
+                        associated_push_id: <span class="prelude-val">None</span>,
+                    });
+
+                    q.add_event_data_now(ev_data).ok();
+                });
+            },
+
+            <span class="prelude-val">Err</span>(Error::IdError) =&gt; {
+                <span class="macro">trace!</span>(<span class="string">"{} GREASE stream blocked"</span>, conn.trace_id(),);
+
+                <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+            },
+
+            <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+        };
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Sends SETTINGS frame based on HTTP/3 configuration.
+    </span><span class="kw">fn </span>send_settings(<span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">super</span>::Connection) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>stream_id = <span class="kw">match </span><span class="self">self
+            </span>.open_uni_stream(conn, stream::HTTP3_CONTROL_STREAM_TYPE_ID)
+        {
+            <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+            <span class="prelude-val">Err</span>(e) =&gt; {
+                <span class="macro">trace!</span>(<span class="string">"{} Control stream blocked"</span>, conn.trace_id(),);
+
+                <span class="kw">if </span>e == Error::Done {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InternalError);
+                }
+
+                <span class="kw">return </span><span class="prelude-val">Err</span>(e);
+            },
+        };
+
+        <span class="self">self</span>.control_stream_id = <span class="prelude-val">Some</span>(stream_id);
+
+        <span class="macro">qlog_with_type!</span>(QLOG_STREAM_TYPE_SET, conn.qlog, q, {
+            <span class="kw">let </span>ev_data = EventData::H3StreamTypeSet(H3StreamTypeSet {
+                stream_id,
+                owner: <span class="prelude-val">Some</span>(H3Owner::Local),
+                stream_type: H3StreamType::Control,
+                stream_type_value: <span class="prelude-val">None</span>,
+                associated_push_id: <span class="prelude-val">None</span>,
+            });
+
+            q.add_event_data_now(ev_data).ok();
+        });
+
+        <span class="kw">let </span>grease = <span class="kw">if </span>conn.grease {
+            <span class="prelude-val">Some</span>((grease_value(), grease_value()))
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="kw">let </span>frame = frame::Frame::Settings {
+            max_field_section_size: <span class="self">self</span>.local_settings.max_field_section_size,
+            qpack_max_table_capacity: <span class="self">self
+                </span>.local_settings
+                .qpack_max_table_capacity,
+            qpack_blocked_streams: <span class="self">self</span>.local_settings.qpack_blocked_streams,
+            connect_protocol_enabled: <span class="self">self
+                </span>.local_settings
+                .connect_protocol_enabled,
+            h3_datagram: <span class="self">self</span>.local_settings.h3_datagram,
+            grease,
+            additional_settings: <span class="self">self</span>.local_settings.additional_settings.clone(),
+            raw: Default::default(),
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        frame.to_bytes(<span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>off = b.off();
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(id) = <span class="self">self</span>.control_stream_id {
+            conn.stream_send(id, <span class="kw-2">&amp;</span>d[..off], <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+
+            <span class="macro">trace!</span>(
+                <span class="string">"{} tx frm SETTINGS stream={} len={}"</span>,
+                conn.trace_id(),
+                id,
+                off
+            );
+
+            <span class="macro">qlog_with_type!</span>(QLOG_FRAME_CREATED, conn.qlog, q, {
+                <span class="kw">let </span>frame = frame.to_qlog();
+                <span class="kw">let </span>ev_data = EventData::H3FrameCreated(H3FrameCreated {
+                    stream_id: id,
+                    length: <span class="prelude-val">Some</span>(off <span class="kw">as </span>u64),
+                    frame,
+                    raw: <span class="prelude-val">None</span>,
+                });
+
+                q.add_event_data_now(ev_data).ok();
+            });
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="kw">fn </span>process_control_stream(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">super</span>::Connection, stream_id: u64,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;(u64, Event)&gt; {
+        <span class="kw">if </span>conn.stream_finished(stream_id) {
+            conn.close(
+                <span class="bool-val">true</span>,
+                Error::ClosedCriticalStream.to_wire(),
+                <span class="string">b"Critical stream closed."</span>,
+            )<span class="question-mark">?</span>;
+
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::ClosedCriticalStream);
+        }
+
+        <span class="kw">match </span><span class="self">self</span>.process_readable_stream(conn, stream_id, <span class="bool-val">true</span>) {
+            <span class="prelude-val">Ok</span>(ev) =&gt; <span class="kw">return </span><span class="prelude-val">Ok</span>(ev),
+
+            <span class="prelude-val">Err</span>(Error::Done) =&gt; (),
+
+            <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+        };
+
+        <span class="kw">if </span>conn.stream_finished(stream_id) {
+            conn.close(
+                <span class="bool-val">true</span>,
+                Error::ClosedCriticalStream.to_wire(),
+                <span class="string">b"Critical stream closed."</span>,
+            )<span class="question-mark">?</span>;
+
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::ClosedCriticalStream);
+        }
+
+        <span class="prelude-val">Err</span>(Error::Done)
+    }
+
+    <span class="kw">fn </span>process_readable_stream(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">super</span>::Connection, stream_id: u64, polling: bool,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;(u64, Event)&gt; {
+        <span class="self">self</span>.streams
+            .entry(stream_id)
+            .or_insert_with(|| stream::Stream::new(stream_id, <span class="bool-val">false</span>));
+
+        <span class="comment">// We need to get a fresh reference to the stream for each
+        // iteration, to avoid borrowing `self` for the entire duration
+        // of the loop, because we'll need to borrow it again in the
+        // `State::FramePayload` case below.
+        </span><span class="kw">while let </span><span class="prelude-val">Some</span>(stream) = <span class="self">self</span>.streams.get_mut(<span class="kw-2">&amp;</span>stream_id) {
+            <span class="kw">match </span>stream.state() {
+                stream::State::StreamType =&gt; {
+                    stream.try_fill_buffer(conn)<span class="question-mark">?</span>;
+
+                    <span class="kw">let </span>varint = <span class="kw">match </span>stream.try_consume_varint() {
+                        <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="kw">continue</span>,
+                    };
+
+                    <span class="kw">let </span>ty = stream::Type::deserialize(varint)<span class="question-mark">?</span>;
+
+                    <span class="kw">if let </span><span class="prelude-val">Err</span>(e) = stream.set_ty(ty) {
+                        conn.close(<span class="bool-val">true</span>, e.to_wire(), <span class="string">b""</span>)<span class="question-mark">?</span>;
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(e);
+                    }
+
+                    <span class="macro">qlog_with_type!</span>(QLOG_STREAM_TYPE_SET, conn.qlog, q, {
+                        <span class="kw">let </span>ty_val = <span class="kw">if </span><span class="macro">matches!</span>(ty, stream::Type::Unknown) {
+                            <span class="prelude-val">Some</span>(varint)
+                        } <span class="kw">else </span>{
+                            <span class="prelude-val">None
+                        </span>};
+
+                        <span class="kw">let </span>ev_data =
+                            EventData::H3StreamTypeSet(H3StreamTypeSet {
+                                stream_id,
+                                owner: <span class="prelude-val">Some</span>(H3Owner::Remote),
+                                stream_type: ty.to_qlog(),
+                                stream_type_value: ty_val,
+                                associated_push_id: <span class="prelude-val">None</span>,
+                            });
+
+                        q.add_event_data_now(ev_data).ok();
+                    });
+
+                    <span class="kw">match </span><span class="kw-2">&amp;</span>ty {
+                        stream::Type::Control =&gt; {
+                            <span class="comment">// Only one control stream allowed.
+                            </span><span class="kw">if </span><span class="self">self</span>.peer_control_stream_id.is_some() {
+                                conn.close(
+                                    <span class="bool-val">true</span>,
+                                    Error::StreamCreationError.to_wire(),
+                                    <span class="string">b"Received multiple control streams"</span>,
+                                )<span class="question-mark">?</span>;
+
+                                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::StreamCreationError);
+                            }
+
+                            <span class="macro">trace!</span>(
+                                <span class="string">"{} open peer's control stream {}"</span>,
+                                conn.trace_id(),
+                                stream_id
+                            );
+
+                            <span class="self">self</span>.peer_control_stream_id = <span class="prelude-val">Some</span>(stream_id);
+                        },
+
+                        stream::Type::Push =&gt; {
+                            <span class="comment">// Only clients can receive push stream.
+                            </span><span class="kw">if </span><span class="self">self</span>.is_server {
+                                conn.close(
+                                    <span class="bool-val">true</span>,
+                                    Error::StreamCreationError.to_wire(),
+                                    <span class="string">b"Server received push stream."</span>,
+                                )<span class="question-mark">?</span>;
+
+                                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::StreamCreationError);
+                            }
+                        },
+
+                        stream::Type::QpackEncoder =&gt; {
+                            <span class="comment">// Only one qpack encoder stream allowed.
+                            </span><span class="kw">if </span><span class="self">self</span>.peer_qpack_streams.encoder_stream_id.is_some()
+                            {
+                                conn.close(
+                                    <span class="bool-val">true</span>,
+                                    Error::StreamCreationError.to_wire(),
+                                    <span class="string">b"Received multiple QPACK encoder streams"</span>,
+                                )<span class="question-mark">?</span>;
+
+                                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::StreamCreationError);
+                            }
+
+                            <span class="self">self</span>.peer_qpack_streams.encoder_stream_id =
+                                <span class="prelude-val">Some</span>(stream_id);
+                        },
+
+                        stream::Type::QpackDecoder =&gt; {
+                            <span class="comment">// Only one qpack decoder allowed.
+                            </span><span class="kw">if </span><span class="self">self</span>.peer_qpack_streams.decoder_stream_id.is_some()
+                            {
+                                conn.close(
+                                    <span class="bool-val">true</span>,
+                                    Error::StreamCreationError.to_wire(),
+                                    <span class="string">b"Received multiple QPACK decoder streams"</span>,
+                                )<span class="question-mark">?</span>;
+
+                                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::StreamCreationError);
+                            }
+
+                            <span class="self">self</span>.peer_qpack_streams.decoder_stream_id =
+                                <span class="prelude-val">Some</span>(stream_id);
+                        },
+
+                        stream::Type::Unknown =&gt; {
+                            <span class="comment">// Unknown stream types are ignored.
+                            // TODO: we MAY send STOP_SENDING
+                        </span>},
+
+                        stream::Type::Request =&gt; <span class="macro">unreachable!</span>(),
+                    }
+                },
+
+                stream::State::PushId =&gt; {
+                    stream.try_fill_buffer(conn)<span class="question-mark">?</span>;
+
+                    <span class="kw">let </span>varint = <span class="kw">match </span>stream.try_consume_varint() {
+                        <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="kw">continue</span>,
+                    };
+
+                    <span class="kw">if let </span><span class="prelude-val">Err</span>(e) = stream.set_push_id(varint) {
+                        conn.close(<span class="bool-val">true</span>, e.to_wire(), <span class="string">b""</span>)<span class="question-mark">?</span>;
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(e);
+                    }
+                },
+
+                stream::State::FrameType =&gt; {
+                    stream.try_fill_buffer(conn)<span class="question-mark">?</span>;
+
+                    <span class="kw">let </span>varint = <span class="kw">match </span>stream.try_consume_varint() {
+                        <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="kw">continue</span>,
+                    };
+
+                    <span class="kw">match </span>stream.set_frame_type(varint) {
+                        <span class="prelude-val">Err</span>(Error::FrameUnexpected) =&gt; {
+                            <span class="kw">let </span>msg = <span class="macro">format!</span>(<span class="string">"Unexpected frame type {varint}"</span>);
+
+                            conn.close(
+                                <span class="bool-val">true</span>,
+                                Error::FrameUnexpected.to_wire(),
+                                msg.as_bytes(),
+                            )<span class="question-mark">?</span>;
+
+                            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+                        },
+
+                        <span class="prelude-val">Err</span>(e) =&gt; {
+                            conn.close(
+                                <span class="bool-val">true</span>,
+                                e.to_wire(),
+                                <span class="string">b"Error handling frame."</span>,
+                            )<span class="question-mark">?</span>;
+
+                            <span class="kw">return </span><span class="prelude-val">Err</span>(e);
+                        },
+
+                        <span class="kw">_ </span>=&gt; (),
+                    }
+                },
+
+                stream::State::FramePayloadLen =&gt; {
+                    stream.try_fill_buffer(conn)<span class="question-mark">?</span>;
+
+                    <span class="kw">let </span>payload_len = <span class="kw">match </span>stream.try_consume_varint() {
+                        <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="kw">continue</span>,
+                    };
+
+                    <span class="comment">// DATA frames are handled uniquely. After this point we lose
+                    // visibility of DATA framing, so just log here.
+                    </span><span class="kw">if </span><span class="prelude-val">Some</span>(frame::DATA_FRAME_TYPE_ID) == stream.frame_type() {
+                        <span class="macro">trace!</span>(
+                            <span class="string">"{} rx frm DATA stream={} wire_payload_len={}"</span>,
+                            conn.trace_id(),
+                            stream_id,
+                            payload_len
+                        );
+
+                        <span class="macro">qlog_with_type!</span>(QLOG_FRAME_PARSED, conn.qlog, q, {
+                            <span class="kw">let </span>frame = Http3Frame::Data { raw: <span class="prelude-val">None </span>};
+
+                            <span class="kw">let </span>ev_data =
+                                EventData::H3FrameParsed(H3FrameParsed {
+                                    stream_id,
+                                    length: <span class="prelude-val">Some</span>(payload_len),
+                                    frame,
+                                    raw: <span class="prelude-val">None</span>,
+                                });
+
+                            q.add_event_data_now(ev_data).ok();
+                        });
+                    }
+
+                    <span class="kw">if let </span><span class="prelude-val">Err</span>(e) = stream.set_frame_payload_len(payload_len) {
+                        conn.close(<span class="bool-val">true</span>, e.to_wire(), <span class="string">b""</span>)<span class="question-mark">?</span>;
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(e);
+                    }
+                },
+
+                stream::State::FramePayload =&gt; {
+                    <span class="comment">// Do not emit events when not polling.
+                    </span><span class="kw">if </span>!polling {
+                        <span class="kw">break</span>;
+                    }
+
+                    stream.try_fill_buffer(conn)<span class="question-mark">?</span>;
+
+                    <span class="kw">let </span>(frame, payload_len) = <span class="kw">match </span>stream.try_consume_frame() {
+                        <span class="prelude-val">Ok</span>(frame) =&gt; frame,
+
+                        <span class="prelude-val">Err</span>(Error::Done) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done),
+
+                        <span class="prelude-val">Err</span>(e) =&gt; {
+                            conn.close(
+                                <span class="bool-val">true</span>,
+                                e.to_wire(),
+                                <span class="string">b"Error handling frame."</span>,
+                            )<span class="question-mark">?</span>;
+
+                            <span class="kw">return </span><span class="prelude-val">Err</span>(e);
+                        },
+                    };
+
+                    <span class="kw">match </span><span class="self">self</span>.process_frame(conn, stream_id, frame, payload_len)
+                    {
+                        <span class="prelude-val">Ok</span>(ev) =&gt; <span class="kw">return </span><span class="prelude-val">Ok</span>(ev),
+
+                        <span class="prelude-val">Err</span>(Error::Done) =&gt; {
+                            <span class="comment">// This might be a frame that is processed internally
+                            // without needing to bubble up to the user as an
+                            // event. Check whether the frame has FIN'd by QUIC
+                            // to prevent trying to read again on a closed stream.
+                            </span><span class="kw">if </span>conn.stream_finished(stream_id) {
+                                <span class="kw">break</span>;
+                            }
+                        },
+
+                        <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+                    };
+                },
+
+                stream::State::Data =&gt; {
+                    <span class="comment">// Do not emit events when not polling.
+                    </span><span class="kw">if </span>!polling {
+                        <span class="kw">break</span>;
+                    }
+
+                    <span class="kw">if </span>!stream.try_trigger_data_event() {
+                        <span class="kw">break</span>;
+                    }
+
+                    <span class="kw">return </span><span class="prelude-val">Ok</span>((stream_id, Event::Data));
+                },
+
+                stream::State::QpackInstruction =&gt; {
+                    <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0</span>; <span class="number">4096</span>];
+
+                    <span class="comment">// Read data from the stream and discard immediately.
+                    </span><span class="kw">loop </span>{
+                        conn.stream_recv(stream_id, <span class="kw-2">&amp;mut </span>d)<span class="question-mark">?</span>;
+                    }
+                },
+
+                stream::State::Drain =&gt; {
+                    <span class="comment">// Discard incoming data on the stream.
+                    </span>conn.stream_shutdown(
+                        stream_id,
+                        <span class="kw">crate</span>::Shutdown::Read,
+                        <span class="number">0x100</span>,
+                    )<span class="question-mark">?</span>;
+
+                    <span class="kw">break</span>;
+                },
+
+                stream::State::Finished =&gt; <span class="kw">break</span>,
+            }
+        }
+
+        <span class="prelude-val">Err</span>(Error::Done)
+    }
+
+    <span class="kw">fn </span>process_finished_stream(<span class="kw-2">&amp;mut </span><span class="self">self</span>, stream_id: u64) {
+        <span class="kw">let </span>stream = <span class="kw">match </span><span class="self">self</span>.streams.get_mut(<span class="kw-2">&amp;</span>stream_id) {
+            <span class="prelude-val">Some</span>(v) =&gt; v,
+
+            <span class="prelude-val">None </span>=&gt; <span class="kw">return</span>,
+        };
+
+        <span class="kw">if </span>stream.state() == stream::State::Finished {
+            <span class="kw">return</span>;
+        }
+
+        <span class="kw">match </span>stream.ty() {
+            <span class="prelude-val">Some</span>(stream::Type::Request) | <span class="prelude-val">Some</span>(stream::Type::Push) =&gt; {
+                stream.finished();
+
+                <span class="self">self</span>.finished_streams.push_back(stream_id);
+            },
+
+            <span class="kw">_ </span>=&gt; (),
+        };
+    }
+
+    <span class="kw">fn </span>process_frame(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">super</span>::Connection, stream_id: u64,
+        frame: frame::Frame, payload_len: u64,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;(u64, Event)&gt; {
+        <span class="macro">trace!</span>(
+            <span class="string">"{} rx frm {:?} stream={} payload_len={}"</span>,
+            conn.trace_id(),
+            frame,
+            stream_id,
+            payload_len
+        );
+
+        <span class="macro">qlog_with_type!</span>(QLOG_FRAME_PARSED, conn.qlog, q, {
+            <span class="comment">// HEADERS frames are special case and will be logged below.
+            </span><span class="kw">if </span>!<span class="macro">matches!</span>(frame, frame::Frame::Headers { .. }) {
+                <span class="kw">let </span>frame = frame.to_qlog();
+                <span class="kw">let </span>ev_data = EventData::H3FrameParsed(H3FrameParsed {
+                    stream_id,
+                    length: <span class="prelude-val">Some</span>(payload_len),
+                    frame,
+                    raw: <span class="prelude-val">None</span>,
+                });
+
+                q.add_event_data_now(ev_data).ok();
+            }
+        });
+
+        <span class="kw">match </span>frame {
+            frame::Frame::Settings {
+                max_field_section_size,
+                qpack_max_table_capacity,
+                qpack_blocked_streams,
+                connect_protocol_enabled,
+                h3_datagram,
+                additional_settings,
+                raw,
+                ..
+            } =&gt; {
+                <span class="self">self</span>.peer_settings = ConnectionSettings {
+                    max_field_section_size,
+                    qpack_max_table_capacity,
+                    qpack_blocked_streams,
+                    connect_protocol_enabled,
+                    h3_datagram,
+                    additional_settings,
+                    raw,
+                };
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(<span class="number">1</span>) = h3_datagram {
+                    <span class="comment">// The peer MUST have also enabled DATAGRAM with a TP
+                    </span><span class="kw">if </span>conn.dgram_max_writable_len().is_none() {
+                        conn.close(
+                            <span class="bool-val">true</span>,
+                            Error::SettingsError.to_wire(),
+                            <span class="string">b"H3_DATAGRAM sent with value 1 but max_datagram_frame_size TP not set."</span>,
+                        )<span class="question-mark">?</span>;
+
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::SettingsError);
+                    }
+                }
+            },
+
+            frame::Frame::Headers { header_block } =&gt; {
+                <span class="kw">if </span><span class="prelude-val">Some</span>(stream_id) == <span class="self">self</span>.peer_control_stream_id {
+                    conn.close(
+                        <span class="bool-val">true</span>,
+                        Error::FrameUnexpected.to_wire(),
+                        <span class="string">b"HEADERS received on control stream"</span>,
+                    )<span class="question-mark">?</span>;
+
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+                }
+
+                <span class="comment">// Use "infinite" as default value for max_field_section_size if
+                // it is not configured by the application.
+                </span><span class="kw">let </span>max_size = <span class="self">self
+                    </span>.local_settings
+                    .max_field_section_size
+                    .unwrap_or(u64::MAX);
+
+                <span class="kw">let </span>headers = <span class="kw">match </span><span class="self">self
+                    </span>.qpack_decoder
+                    .decode(<span class="kw-2">&amp;</span>header_block[..], max_size)
+                {
+                    <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                    <span class="prelude-val">Err</span>(e) =&gt; {
+                        <span class="kw">let </span>e = <span class="kw">match </span>e {
+                            qpack::Error::HeaderListTooLarge =&gt;
+                                Error::ExcessiveLoad,
+
+                            <span class="kw">_ </span>=&gt; Error::QpackDecompressionFailed,
+                        };
+
+                        conn.close(<span class="bool-val">true</span>, e.to_wire(), <span class="string">b"Error parsing headers."</span>)<span class="question-mark">?</span>;
+
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(e);
+                    },
+                };
+
+                <span class="macro">qlog_with_type!</span>(QLOG_FRAME_PARSED, conn.qlog, q, {
+                    <span class="kw">let </span>qlog_headers = headers
+                        .iter()
+                        .map(|h| qlog::events::h3::HttpHeader {
+                            name: String::from_utf8_lossy(h.name()).into_owned(),
+                            value: String::from_utf8_lossy(h.value())
+                                .into_owned(),
+                        })
+                        .collect();
+
+                    <span class="kw">let </span>frame = Http3Frame::Headers {
+                        headers: qlog_headers,
+                    };
+
+                    <span class="kw">let </span>ev_data = EventData::H3FrameParsed(H3FrameParsed {
+                        stream_id,
+                        length: <span class="prelude-val">Some</span>(payload_len),
+                        frame,
+                        raw: <span class="prelude-val">None</span>,
+                    });
+
+                    q.add_event_data_now(ev_data).ok();
+                });
+
+                <span class="kw">let </span>has_body = !conn.stream_finished(stream_id);
+
+                <span class="kw">return </span><span class="prelude-val">Ok</span>((stream_id, Event::Headers {
+                    list: headers,
+                    has_body,
+                }));
+            },
+
+            frame::Frame::Data { .. } =&gt; {
+                <span class="kw">if </span><span class="prelude-val">Some</span>(stream_id) == <span class="self">self</span>.peer_control_stream_id {
+                    conn.close(
+                        <span class="bool-val">true</span>,
+                        Error::FrameUnexpected.to_wire(),
+                        <span class="string">b"DATA received on control stream"</span>,
+                    )<span class="question-mark">?</span>;
+
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+                }
+
+                <span class="comment">// Do nothing. The Data event is returned separately.
+            </span>},
+
+            frame::Frame::GoAway { id } =&gt; {
+                <span class="kw">if </span><span class="prelude-val">Some</span>(stream_id) != <span class="self">self</span>.peer_control_stream_id {
+                    conn.close(
+                        <span class="bool-val">true</span>,
+                        Error::FrameUnexpected.to_wire(),
+                        <span class="string">b"GOAWAY received on non-control stream"</span>,
+                    )<span class="question-mark">?</span>;
+
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+                }
+
+                <span class="kw">if </span>!<span class="self">self</span>.is_server &amp;&amp; id % <span class="number">4 </span>!= <span class="number">0 </span>{
+                    conn.close(
+                        <span class="bool-val">true</span>,
+                        Error::FrameUnexpected.to_wire(),
+                        <span class="string">b"GOAWAY received with ID of non-request stream"</span>,
+                    )<span class="question-mark">?</span>;
+
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::IdError);
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(received_id) = <span class="self">self</span>.peer_goaway_id {
+                    <span class="kw">if </span>id &gt; received_id {
+                        conn.close(
+                            <span class="bool-val">true</span>,
+                            Error::IdError.to_wire(),
+                            <span class="string">b"GOAWAY received with ID larger than previously received"</span>,
+                        )<span class="question-mark">?</span>;
+
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::IdError);
+                    }
+                }
+
+                <span class="self">self</span>.peer_goaway_id = <span class="prelude-val">Some</span>(id);
+
+                <span class="kw">return </span><span class="prelude-val">Ok</span>((id, Event::GoAway));
+            },
+
+            frame::Frame::MaxPushId { push_id } =&gt; {
+                <span class="kw">if </span><span class="prelude-val">Some</span>(stream_id) != <span class="self">self</span>.peer_control_stream_id {
+                    conn.close(
+                        <span class="bool-val">true</span>,
+                        Error::FrameUnexpected.to_wire(),
+                        <span class="string">b"MAX_PUSH_ID received on non-control stream"</span>,
+                    )<span class="question-mark">?</span>;
+
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+                }
+
+                <span class="kw">if </span>!<span class="self">self</span>.is_server {
+                    conn.close(
+                        <span class="bool-val">true</span>,
+                        Error::FrameUnexpected.to_wire(),
+                        <span class="string">b"MAX_PUSH_ID received by client"</span>,
+                    )<span class="question-mark">?</span>;
+
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+                }
+
+                <span class="kw">if </span>push_id &lt; <span class="self">self</span>.max_push_id {
+                    conn.close(
+                        <span class="bool-val">true</span>,
+                        Error::IdError.to_wire(),
+                        <span class="string">b"MAX_PUSH_ID reduced limit"</span>,
+                    )<span class="question-mark">?</span>;
+
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::IdError);
+                }
+
+                <span class="self">self</span>.max_push_id = push_id;
+            },
+
+            frame::Frame::PushPromise { .. } =&gt; {
+                <span class="kw">if </span><span class="self">self</span>.is_server {
+                    conn.close(
+                        <span class="bool-val">true</span>,
+                        Error::FrameUnexpected.to_wire(),
+                        <span class="string">b"PUSH_PROMISE received by server"</span>,
+                    )<span class="question-mark">?</span>;
+
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+                }
+
+                <span class="kw">if </span>stream_id % <span class="number">4 </span>!= <span class="number">0 </span>{
+                    conn.close(
+                        <span class="bool-val">true</span>,
+                        Error::FrameUnexpected.to_wire(),
+                        <span class="string">b"PUSH_PROMISE received on non-request stream"</span>,
+                    )<span class="question-mark">?</span>;
+
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+                }
+
+                <span class="comment">// TODO: implement more checks and PUSH_PROMISE event
+            </span>},
+
+            frame::Frame::CancelPush { .. } =&gt; {
+                <span class="kw">if </span><span class="prelude-val">Some</span>(stream_id) != <span class="self">self</span>.peer_control_stream_id {
+                    conn.close(
+                        <span class="bool-val">true</span>,
+                        Error::FrameUnexpected.to_wire(),
+                        <span class="string">b"CANCEL_PUSH received on non-control stream"</span>,
+                    )<span class="question-mark">?</span>;
+
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+                }
+
+                <span class="comment">// TODO: implement CANCEL_PUSH frame
+            </span>},
+
+            frame::Frame::PriorityUpdateRequest {
+                prioritized_element_id,
+                priority_field_value,
+            } =&gt; {
+                <span class="kw">if </span>!<span class="self">self</span>.is_server {
+                    conn.close(
+                        <span class="bool-val">true</span>,
+                        Error::FrameUnexpected.to_wire(),
+                        <span class="string">b"PRIORITY_UPDATE received by client"</span>,
+                    )<span class="question-mark">?</span>;
+
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+                }
+
+                <span class="kw">if </span><span class="prelude-val">Some</span>(stream_id) != <span class="self">self</span>.peer_control_stream_id {
+                    conn.close(
+                        <span class="bool-val">true</span>,
+                        Error::FrameUnexpected.to_wire(),
+                        <span class="string">b"PRIORITY_UPDATE received on non-control stream"</span>,
+                    )<span class="question-mark">?</span>;
+
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+                }
+
+                <span class="kw">if </span>prioritized_element_id % <span class="number">4 </span>!= <span class="number">0 </span>{
+                    conn.close(
+                        <span class="bool-val">true</span>,
+                        Error::FrameUnexpected.to_wire(),
+                        <span class="string">b"PRIORITY_UPDATE for request stream type with wrong ID"</span>,
+                    )<span class="question-mark">?</span>;
+
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+                }
+
+                <span class="kw">if </span>prioritized_element_id &gt; conn.streams.max_streams_bidi() * <span class="number">4 </span>{
+                    conn.close(
+                        <span class="bool-val">true</span>,
+                        Error::IdError.to_wire(),
+                        <span class="string">b"PRIORITY_UPDATE for request stream beyond max streams limit"</span>,
+                    )<span class="question-mark">?</span>;
+
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::IdError);
+                }
+
+                <span class="comment">// If the PRIORITY_UPDATE is valid, consider storing the latest
+                // contents. Due to reordering, it is possible that we might
+                // receive frames that reference streams that have not yet to
+                // been opened and that's OK because it's within our concurrency
+                // limit. However, we discard PRIORITY_UPDATE that refers to
+                // streams that we know have been collected.
+                </span><span class="kw">if </span>conn.streams.is_collected(prioritized_element_id) {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+                }
+
+                <span class="comment">// If the stream did not yet exist, create it and store.
+                </span><span class="kw">let </span>stream =
+                    <span class="self">self</span>.streams.entry(prioritized_element_id).or_insert_with(
+                        || stream::Stream::new(prioritized_element_id, <span class="bool-val">false</span>),
+                    );
+
+                <span class="kw">let </span>had_priority_update = stream.has_last_priority_update();
+                stream.set_last_priority_update(<span class="prelude-val">Some</span>(priority_field_value));
+
+                <span class="comment">// Only trigger the event when there wasn't already a stored
+                // PRIORITY_UPDATE.
+                </span><span class="kw">if </span>!had_priority_update {
+                    <span class="kw">return </span><span class="prelude-val">Ok</span>((prioritized_element_id, Event::PriorityUpdate));
+                } <span class="kw">else </span>{
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+                }
+            },
+
+            frame::Frame::PriorityUpdatePush {
+                prioritized_element_id,
+                ..
+            } =&gt; {
+                <span class="kw">if </span>!<span class="self">self</span>.is_server {
+                    conn.close(
+                        <span class="bool-val">true</span>,
+                        Error::FrameUnexpected.to_wire(),
+                        <span class="string">b"PRIORITY_UPDATE received by client"</span>,
+                    )<span class="question-mark">?</span>;
+
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+                }
+
+                <span class="kw">if </span><span class="prelude-val">Some</span>(stream_id) != <span class="self">self</span>.peer_control_stream_id {
+                    conn.close(
+                        <span class="bool-val">true</span>,
+                        Error::FrameUnexpected.to_wire(),
+                        <span class="string">b"PRIORITY_UPDATE received on non-control stream"</span>,
+                    )<span class="question-mark">?</span>;
+
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+                }
+
+                <span class="kw">if </span>prioritized_element_id % <span class="number">3 </span>!= <span class="number">0 </span>{
+                    conn.close(
+                        <span class="bool-val">true</span>,
+                        Error::FrameUnexpected.to_wire(),
+                        <span class="string">b"PRIORITY_UPDATE for push stream type with wrong ID"</span>,
+                    )<span class="question-mark">?</span>;
+
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected);
+                }
+
+                <span class="comment">// TODO: we only implement this if we implement server push
+            </span>},
+
+            frame::Frame::Unknown { .. } =&gt; (),
+        }
+
+        <span class="prelude-val">Err</span>(Error::Done)
+    }
+}
+
+<span class="doccomment">/// Generates an HTTP/3 GREASE variable length integer.
+</span><span class="kw">pub fn </span>grease_value() -&gt; u64 {
+    <span class="kw">let </span>n = <span class="kw">super</span>::rand::rand_u64_uniform(<span class="number">148_764_065_110_560_899</span>);
+    <span class="number">31 </span>* n + <span class="number">33
+</span>}
+
+<span class="attr">#[doc(hidden)]
+</span><span class="kw">pub mod </span>testing {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="kw">use </span><span class="kw">crate</span>::testing;
+
+    <span class="doccomment">/// Session is an HTTP/3 test helper structure. It holds a client, server
+    /// and pipe that allows them to communicate.
+    ///
+    /// `default()` creates a session with some sensible default
+    /// configuration. `with_configs()` allows for providing a specific
+    /// configuration.
+    ///
+    /// `handshake()` performs all the steps needed to establish an HTTP/3
+    /// connection.
+    ///
+    /// Some utility functions are provided that make it less verbose to send
+    /// request, responses and individual headers. The full quiche API remains
+    /// available for any test that need to do unconventional things (such as
+    /// bad behaviour that triggers errors).
+    </span><span class="kw">pub struct </span>Session {
+        <span class="kw">pub </span>pipe: testing::Pipe,
+        <span class="kw">pub </span>client: Connection,
+        <span class="kw">pub </span>server: Connection,
+    }
+
+    <span class="kw">impl </span>Session {
+        <span class="kw">pub fn </span>new() -&gt; <span class="prelude-ty">Result</span>&lt;Session&gt; {
+            <span class="kw">let </span><span class="kw-2">mut </span>config = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION)<span class="question-mark">?</span>;
+            config.load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)<span class="question-mark">?</span>;
+            config.load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)<span class="question-mark">?</span>;
+            config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"h3"</span>])<span class="question-mark">?</span>;
+            config.set_initial_max_data(<span class="number">1500</span>);
+            config.set_initial_max_stream_data_bidi_local(<span class="number">150</span>);
+            config.set_initial_max_stream_data_bidi_remote(<span class="number">150</span>);
+            config.set_initial_max_stream_data_uni(<span class="number">150</span>);
+            config.set_initial_max_streams_bidi(<span class="number">5</span>);
+            config.set_initial_max_streams_uni(<span class="number">5</span>);
+            config.verify_peer(<span class="bool-val">false</span>);
+            config.enable_dgram(<span class="bool-val">true</span>, <span class="number">3</span>, <span class="number">3</span>);
+            config.set_ack_delay_exponent(<span class="number">8</span>);
+
+            <span class="kw">let </span>h3_config = Config::new()<span class="question-mark">?</span>;
+            Session::with_configs(<span class="kw-2">&amp;mut </span>config, <span class="kw-2">&amp;</span>h3_config)
+        }
+
+        <span class="kw">pub fn </span>with_configs(
+            config: <span class="kw-2">&amp;mut </span><span class="kw">crate</span>::Config, h3_config: <span class="kw-2">&amp;</span>Config,
+        ) -&gt; <span class="prelude-ty">Result</span>&lt;Session&gt; {
+            <span class="kw">let </span>pipe = testing::Pipe::with_config(config)<span class="question-mark">?</span>;
+            <span class="kw">let </span>client_dgram = pipe.client.dgram_enabled();
+            <span class="kw">let </span>server_dgram = pipe.server.dgram_enabled();
+            <span class="prelude-val">Ok</span>(Session {
+                pipe,
+                client: Connection::new(h3_config, <span class="bool-val">false</span>, client_dgram)<span class="question-mark">?</span>,
+                server: Connection::new(h3_config, <span class="bool-val">true</span>, server_dgram)<span class="question-mark">?</span>,
+            })
+        }
+
+        <span class="doccomment">/// Do the HTTP/3 handshake so both ends are in sane initial state.
+        </span><span class="kw">pub fn </span>handshake(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+            <span class="self">self</span>.pipe.handshake()<span class="question-mark">?</span>;
+
+            <span class="comment">// Client streams.
+            </span><span class="self">self</span>.client.send_settings(<span class="kw-2">&amp;mut </span><span class="self">self</span>.pipe.client)<span class="question-mark">?</span>;
+            <span class="self">self</span>.pipe.advance().ok();
+
+            <span class="self">self</span>.client
+                .open_qpack_encoder_stream(<span class="kw-2">&amp;mut </span><span class="self">self</span>.pipe.client)<span class="question-mark">?</span>;
+            <span class="self">self</span>.pipe.advance().ok();
+
+            <span class="self">self</span>.client
+                .open_qpack_decoder_stream(<span class="kw-2">&amp;mut </span><span class="self">self</span>.pipe.client)<span class="question-mark">?</span>;
+            <span class="self">self</span>.pipe.advance().ok();
+
+            <span class="kw">if </span><span class="self">self</span>.pipe.client.grease {
+                <span class="self">self</span>.client.open_grease_stream(<span class="kw-2">&amp;mut </span><span class="self">self</span>.pipe.client)<span class="question-mark">?</span>;
+            }
+
+            <span class="self">self</span>.pipe.advance().ok();
+
+            <span class="comment">// Server streams.
+            </span><span class="self">self</span>.server.send_settings(<span class="kw-2">&amp;mut </span><span class="self">self</span>.pipe.server)<span class="question-mark">?</span>;
+            <span class="self">self</span>.pipe.advance().ok();
+
+            <span class="self">self</span>.server
+                .open_qpack_encoder_stream(<span class="kw-2">&amp;mut </span><span class="self">self</span>.pipe.server)<span class="question-mark">?</span>;
+            <span class="self">self</span>.pipe.advance().ok();
+
+            <span class="self">self</span>.server
+                .open_qpack_decoder_stream(<span class="kw-2">&amp;mut </span><span class="self">self</span>.pipe.server)<span class="question-mark">?</span>;
+            <span class="self">self</span>.pipe.advance().ok();
+
+            <span class="kw">if </span><span class="self">self</span>.pipe.server.grease {
+                <span class="self">self</span>.server.open_grease_stream(<span class="kw-2">&amp;mut </span><span class="self">self</span>.pipe.server)<span class="question-mark">?</span>;
+            }
+
+            <span class="self">self</span>.advance().ok();
+
+            <span class="kw">while </span><span class="self">self</span>.client.poll(<span class="kw-2">&amp;mut </span><span class="self">self</span>.pipe.client).is_ok() {
+                <span class="comment">// Do nothing.
+            </span>}
+
+            <span class="kw">while </span><span class="self">self</span>.server.poll(<span class="kw-2">&amp;mut </span><span class="self">self</span>.pipe.server).is_ok() {
+                <span class="comment">// Do nothing.
+            </span>}
+
+            <span class="prelude-val">Ok</span>(())
+        }
+
+        <span class="doccomment">/// Advances the session pipe over the buffer.
+        </span><span class="kw">pub fn </span>advance(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="kw">crate</span>::Result&lt;()&gt; {
+            <span class="self">self</span>.pipe.advance()
+        }
+
+        <span class="doccomment">/// Polls the client for events.
+        </span><span class="kw">pub fn </span>poll_client(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;(u64, Event)&gt; {
+            <span class="self">self</span>.client.poll(<span class="kw-2">&amp;mut </span><span class="self">self</span>.pipe.client)
+        }
+
+        <span class="doccomment">/// Polls the server for events.
+        </span><span class="kw">pub fn </span>poll_server(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;(u64, Event)&gt; {
+            <span class="self">self</span>.server.poll(<span class="kw-2">&amp;mut </span><span class="self">self</span>.pipe.server)
+        }
+
+        <span class="doccomment">/// Sends a request from client with default headers.
+        ///
+        /// On success it returns the newly allocated stream and the headers.
+        </span><span class="kw">pub fn </span>send_request(<span class="kw-2">&amp;mut </span><span class="self">self</span>, fin: bool) -&gt; <span class="prelude-ty">Result</span>&lt;(u64, Vec&lt;Header&gt;)&gt; {
+            <span class="kw">let </span>req = <span class="macro">vec!</span>[
+                Header::new(<span class="string">b":method"</span>, <span class="string">b"GET"</span>),
+                Header::new(<span class="string">b":scheme"</span>, <span class="string">b"https"</span>),
+                Header::new(<span class="string">b":authority"</span>, <span class="string">b"quic.tech"</span>),
+                Header::new(<span class="string">b":path"</span>, <span class="string">b"/test"</span>),
+                Header::new(<span class="string">b"user-agent"</span>, <span class="string">b"quiche-test"</span>),
+            ];
+
+            <span class="kw">let </span>stream =
+                <span class="self">self</span>.client.send_request(<span class="kw-2">&amp;mut </span><span class="self">self</span>.pipe.client, <span class="kw-2">&amp;</span>req, fin)<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.advance().ok();
+
+            <span class="prelude-val">Ok</span>((stream, req))
+        }
+
+        <span class="doccomment">/// Sends a response from server with default headers.
+        ///
+        /// On success it returns the headers.
+        </span><span class="kw">pub fn </span>send_response(
+            <span class="kw-2">&amp;mut </span><span class="self">self</span>, stream: u64, fin: bool,
+        ) -&gt; <span class="prelude-ty">Result</span>&lt;Vec&lt;Header&gt;&gt; {
+            <span class="kw">let </span>resp = <span class="macro">vec!</span>[
+                Header::new(<span class="string">b":status"</span>, <span class="string">b"200"</span>),
+                Header::new(<span class="string">b"server"</span>, <span class="string">b"quiche-test"</span>),
+            ];
+
+            <span class="self">self</span>.server.send_response(
+                <span class="kw-2">&amp;mut </span><span class="self">self</span>.pipe.server,
+                stream,
+                <span class="kw-2">&amp;</span>resp,
+                fin,
+            )<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.advance().ok();
+
+            <span class="prelude-val">Ok</span>(resp)
+        }
+
+        <span class="doccomment">/// Sends some default payload from client.
+        ///
+        /// On success it returns the payload.
+        </span><span class="kw">pub fn </span>send_body_client(
+            <span class="kw-2">&amp;mut </span><span class="self">self</span>, stream: u64, fin: bool,
+        ) -&gt; <span class="prelude-ty">Result</span>&lt;Vec&lt;u8&gt;&gt; {
+            <span class="kw">let </span>bytes = <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>];
+
+            <span class="self">self</span>.client
+                .send_body(<span class="kw-2">&amp;mut </span><span class="self">self</span>.pipe.client, stream, <span class="kw-2">&amp;</span>bytes, fin)<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.advance().ok();
+
+            <span class="prelude-val">Ok</span>(bytes)
+        }
+
+        <span class="doccomment">/// Fetches DATA payload from the server.
+        ///
+        /// On success it returns the number of bytes received.
+        </span><span class="kw">pub fn </span>recv_body_client(
+            <span class="kw-2">&amp;mut </span><span class="self">self</span>, stream: u64, buf: <span class="kw-2">&amp;mut </span>[u8],
+        ) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+            <span class="self">self</span>.client.recv_body(<span class="kw-2">&amp;mut </span><span class="self">self</span>.pipe.client, stream, buf)
+        }
+
+        <span class="doccomment">/// Sends some default payload from server.
+        ///
+        /// On success it returns the payload.
+        </span><span class="kw">pub fn </span>send_body_server(
+            <span class="kw-2">&amp;mut </span><span class="self">self</span>, stream: u64, fin: bool,
+        ) -&gt; <span class="prelude-ty">Result</span>&lt;Vec&lt;u8&gt;&gt; {
+            <span class="kw">let </span>bytes = <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>];
+
+            <span class="self">self</span>.server
+                .send_body(<span class="kw-2">&amp;mut </span><span class="self">self</span>.pipe.server, stream, <span class="kw-2">&amp;</span>bytes, fin)<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.advance().ok();
+
+            <span class="prelude-val">Ok</span>(bytes)
+        }
+
+        <span class="doccomment">/// Fetches DATA payload from the client.
+        ///
+        /// On success it returns the number of bytes received.
+        </span><span class="kw">pub fn </span>recv_body_server(
+            <span class="kw-2">&amp;mut </span><span class="self">self</span>, stream: u64, buf: <span class="kw-2">&amp;mut </span>[u8],
+        ) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+            <span class="self">self</span>.server.recv_body(<span class="kw-2">&amp;mut </span><span class="self">self</span>.pipe.server, stream, buf)
+        }
+
+        <span class="doccomment">/// Sends a single HTTP/3 frame from the client.
+        </span><span class="kw">pub fn </span>send_frame_client(
+            <span class="kw-2">&amp;mut </span><span class="self">self</span>, frame: frame::Frame, stream_id: u64, fin: bool,
+        ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+            <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">65535</span>];
+
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>;
+
+            <span class="kw">let </span>off = b.off();
+            <span class="self">self</span>.pipe.client.stream_send(stream_id, <span class="kw-2">&amp;</span>d[..off], fin)<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.advance().ok();
+
+            <span class="prelude-val">Ok</span>(())
+        }
+
+        <span class="doccomment">/// Send an HTTP/3 DATAGRAM with default data from the client.
+        ///
+        /// On success it returns the data.
+        </span><span class="kw">pub fn </span>send_dgram_client(<span class="kw-2">&amp;mut </span><span class="self">self</span>, flow_id: u64) -&gt; <span class="prelude-ty">Result</span>&lt;Vec&lt;u8&gt;&gt; {
+            <span class="kw">let </span>bytes = <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>];
+            <span class="kw">let </span>len = octets::varint_len(flow_id) + bytes.len();
+            <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="macro">vec!</span>[<span class="number">0</span>; len];
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+            b.put_varint(flow_id)<span class="question-mark">?</span>;
+            b.put_bytes(<span class="kw-2">&amp;</span>bytes)<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.pipe.client.dgram_send(<span class="kw-2">&amp;</span>d)<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.advance().ok();
+
+            <span class="prelude-val">Ok</span>(bytes)
+        }
+
+        <span class="doccomment">/// Receives an HTTP/3 DATAGRAM from the server.
+        ///
+        /// On success it returns the DATAGRAM length, flow ID and flow ID
+        /// length.
+        </span><span class="kw">pub fn </span>recv_dgram_client(
+            <span class="kw-2">&amp;mut </span><span class="self">self</span>, buf: <span class="kw-2">&amp;mut </span>[u8],
+        ) -&gt; <span class="prelude-ty">Result</span>&lt;(usize, u64, usize)&gt; {
+            <span class="kw">let </span>len = <span class="self">self</span>.pipe.client.dgram_recv(buf)<span class="question-mark">?</span>;
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(buf);
+            <span class="kw">let </span>flow_id = b.get_varint()<span class="question-mark">?</span>;
+
+            <span class="prelude-val">Ok</span>((len, flow_id, b.off()))
+        }
+
+        <span class="doccomment">/// Send an HTTP/3 DATAGRAM with default data from the server
+        ///
+        /// On success it returns the data.
+        </span><span class="kw">pub fn </span>send_dgram_server(<span class="kw-2">&amp;mut </span><span class="self">self</span>, flow_id: u64) -&gt; <span class="prelude-ty">Result</span>&lt;Vec&lt;u8&gt;&gt; {
+            <span class="kw">let </span>bytes = <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>];
+            <span class="kw">let </span>len = octets::varint_len(flow_id) + bytes.len();
+            <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="macro">vec!</span>[<span class="number">0</span>; len];
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+            b.put_varint(flow_id)<span class="question-mark">?</span>;
+            b.put_bytes(<span class="kw-2">&amp;</span>bytes)<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.pipe.server.dgram_send(<span class="kw-2">&amp;</span>d)<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.advance().ok();
+
+            <span class="prelude-val">Ok</span>(bytes)
+        }
+
+        <span class="doccomment">/// Receives an HTTP/3 DATAGRAM from the client.
+        ///
+        /// On success it returns the DATAGRAM length, flow ID and flow ID
+        /// length.
+        </span><span class="kw">pub fn </span>recv_dgram_server(
+            <span class="kw-2">&amp;mut </span><span class="self">self</span>, buf: <span class="kw-2">&amp;mut </span>[u8],
+        ) -&gt; <span class="prelude-ty">Result</span>&lt;(usize, u64, usize)&gt; {
+            <span class="kw">let </span>len = <span class="self">self</span>.pipe.server.dgram_recv(buf)<span class="question-mark">?</span>;
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(buf);
+            <span class="kw">let </span>flow_id = b.get_varint()<span class="question-mark">?</span>;
+
+            <span class="prelude-val">Ok</span>((len, flow_id, b.off()))
+        }
+
+        <span class="doccomment">/// Sends a single HTTP/3 frame from the server.
+        </span><span class="kw">pub fn </span>send_frame_server(
+            <span class="kw-2">&amp;mut </span><span class="self">self</span>, frame: frame::Frame, stream_id: u64, fin: bool,
+        ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+            <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">65535</span>];
+
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>;
+
+            <span class="kw">let </span>off = b.off();
+            <span class="self">self</span>.pipe.server.stream_send(stream_id, <span class="kw-2">&amp;</span>d[..off], fin)<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.advance().ok();
+
+            <span class="prelude-val">Ok</span>(())
+        }
+
+        <span class="doccomment">/// Sends an arbitrary buffer of HTTP/3 stream data from the client.
+        </span><span class="kw">pub fn </span>send_arbitrary_stream_data_client(
+            <span class="kw-2">&amp;mut </span><span class="self">self</span>, data: <span class="kw-2">&amp;</span>[u8], stream_id: u64, fin: bool,
+        ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+            <span class="self">self</span>.pipe.client.stream_send(stream_id, data, fin)<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.advance().ok();
+
+            <span class="prelude-val">Ok</span>(())
+        }
+
+        <span class="doccomment">/// Sends an arbitrary buffer of HTTP/3 stream data from the server.
+        </span><span class="kw">pub fn </span>send_arbitrary_stream_data_server(
+            <span class="kw-2">&amp;mut </span><span class="self">self</span>, data: <span class="kw-2">&amp;</span>[u8], stream_id: u64, fin: bool,
+        ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+            <span class="self">self</span>.pipe.server.stream_send(stream_id, data, fin)<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.advance().ok();
+
+            <span class="prelude-val">Ok</span>(())
+        }
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="kw">use </span><span class="kw">super</span>::testing::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Make sure that random GREASE values is within the specified limit.
+    </span><span class="kw">fn </span>grease_value_in_varint_limit() {
+        <span class="macro">assert!</span>(grease_value() &lt; <span class="number">2u64</span>.pow(<span class="number">62</span>) - <span class="number">1</span>);
+    }
+
+    <span class="attr">#[cfg(not(feature = <span class="string">"openssl"</span>))] </span><span class="comment">// 0-RTT not supported when using openssl/quictls
+    </span><span class="attr">#[test]
+    </span><span class="kw">fn </span>h3_handshake_0rtt() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">15</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.set_initial_max_streams_uni(<span class="number">3</span>);
+        config.enable_early_data();
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span>h3_config = Config::new().unwrap();
+
+        <span class="comment">// Perform initial handshake.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>pipe = <span class="kw">crate</span>::testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Extract session,
+        </span><span class="kw">let </span>session = pipe.client.session().unwrap();
+
+        <span class="comment">// Configure session on new connection.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>pipe = <span class="kw">crate</span>::testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.client.set_session(session), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Can't create an H3 connection until the QUIC connection is determined
+        // to have made sufficient early data progress.
+        </span><span class="macro">assert!</span>(<span class="macro">matches!</span>(
+            Connection::with_transport(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;</span>h3_config),
+            <span class="prelude-val">Err</span>(Error::InternalError)
+        ));
+
+        <span class="comment">// Client sends initial flight.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="comment">// Now an H3 connection can be created.
+        </span><span class="macro">assert!</span>(Connection::with_transport(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;</span>h3_config).is_ok());
+        <span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+
+        <span class="comment">// Client sends 0-RTT packet.
+        </span><span class="kw">let </span>pkt_type = <span class="kw">crate</span>::packet::Type::ZeroRTT;
+
+        <span class="kw">let </span>frames = [<span class="kw">crate</span>::frame::Frame::Stream {
+            stream_id: <span class="number">6</span>,
+            data: <span class="kw">crate</span>::stream::RangeBuf::from(<span class="string">b"aaaaa"</span>, <span class="number">0</span>, <span class="bool-val">true</span>),
+        }];
+
+        <span class="macro">assert_eq!</span>(
+            pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Ok</span>(<span class="number">1200</span>)
+        );
+
+        <span class="macro">assert_eq!</span>(pipe.server.undecryptable_pkts.len(), <span class="number">0</span>);
+
+        <span class="comment">// 0-RTT stream data is readable.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">6</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">6</span>, <span class="kw-2">&amp;mut </span>b), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>b[..<span class="number">5</span>], <span class="string">b"aaaaa"</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a request with no body, get a response with no body.
+    </span><span class="kw">fn </span>request_no_body_response_no_body() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">true</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(stream, <span class="number">0</span>);
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">false</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+
+        <span class="kw">let </span>resp = s.send_response(stream, <span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: resp,
+            has_body: <span class="bool-val">false</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a request with no body, get a response with one DATA frame.
+    </span><span class="kw">fn </span>request_no_body_response_one_chunk() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">true</span>).unwrap();
+        <span class="macro">assert_eq!</span>(stream, <span class="number">0</span>);
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">false</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+
+        <span class="kw">let </span>resp = s.send_response(stream, <span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>body = s.send_body_server(stream, <span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>recv_buf = <span class="macro">vec!</span>[<span class="number">0</span>; body.len()];
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: resp,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.recv_body_client(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a request with no body, get a response with multiple DATA frames.
+    </span><span class="kw">fn </span>request_no_body_response_many_chunks() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">false</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+
+        <span class="kw">let </span>total_data_frames = <span class="number">4</span>;
+
+        <span class="kw">let </span>resp = s.send_response(stream, <span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">for _ in </span><span class="number">0</span>..total_data_frames - <span class="number">1 </span>{
+            s.send_body_server(stream, <span class="bool-val">false</span>).unwrap();
+        }
+
+        <span class="kw">let </span>body = s.send_body_server(stream, <span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>recv_buf = <span class="macro">vec!</span>[<span class="number">0</span>; body.len()];
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: resp,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="kw">for _ in </span><span class="number">0</span>..total_data_frames {
+            <span class="macro">assert_eq!</span>(s.recv_body_client(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+        }
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a request with one DATA frame, get a response with no body.
+    </span><span class="kw">fn </span>request_one_chunk_response_no_body() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>body = s.send_body_client(stream, <span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>recv_buf = <span class="macro">vec!</span>[<span class="number">0</span>; body.len()];
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.recv_body_server(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+
+        <span class="kw">let </span>resp = s.send_response(stream, <span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: resp,
+            has_body: <span class="bool-val">false</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a request with multiple DATA frames, get a response with no body.
+    </span><span class="kw">fn </span>request_many_chunks_response_no_body() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>total_data_frames = <span class="number">4</span>;
+
+        <span class="kw">for _ in </span><span class="number">0</span>..total_data_frames - <span class="number">1 </span>{
+            s.send_body_client(stream, <span class="bool-val">false</span>).unwrap();
+        }
+
+        <span class="kw">let </span>body = s.send_body_client(stream, <span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>recv_buf = <span class="macro">vec!</span>[<span class="number">0</span>; body.len()];
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="kw">for _ in </span><span class="number">0</span>..total_data_frames {
+            <span class="macro">assert_eq!</span>(s.recv_body_server(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+        }
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+
+        <span class="kw">let </span>resp = s.send_response(stream, <span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: resp,
+            has_body: <span class="bool-val">false</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a request with multiple DATA frames, get a response with one DATA
+    /// frame.
+    </span><span class="kw">fn </span>many_requests_many_chunks_response_one_chunk() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>reqs = Vec::new();
+
+        <span class="kw">let </span>(stream1, req1) = s.send_request(<span class="bool-val">false</span>).unwrap();
+        <span class="macro">assert_eq!</span>(stream1, <span class="number">0</span>);
+        reqs.push(req1);
+
+        <span class="kw">let </span>(stream2, req2) = s.send_request(<span class="bool-val">false</span>).unwrap();
+        <span class="macro">assert_eq!</span>(stream2, <span class="number">4</span>);
+        reqs.push(req2);
+
+        <span class="kw">let </span>(stream3, req3) = s.send_request(<span class="bool-val">false</span>).unwrap();
+        <span class="macro">assert_eq!</span>(stream3, <span class="number">8</span>);
+        reqs.push(req3);
+
+        <span class="kw">let </span>body = s.send_body_client(stream1, <span class="bool-val">false</span>).unwrap();
+        s.send_body_client(stream2, <span class="bool-val">false</span>).unwrap();
+        s.send_body_client(stream3, <span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>recv_buf = <span class="macro">vec!</span>[<span class="number">0</span>; body.len()];
+
+        <span class="comment">// Reverse order of writes.
+
+        </span>s.send_body_client(stream3, <span class="bool-val">true</span>).unwrap();
+        s.send_body_client(stream2, <span class="bool-val">true</span>).unwrap();
+        s.send_body_client(stream1, <span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span>(<span class="kw">_</span>, ev) = s.poll_server().unwrap();
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: reqs[<span class="number">0</span>].clone(),
+            has_body: <span class="bool-val">true</span>,
+        };
+        <span class="macro">assert_eq!</span>(ev, ev_headers);
+
+        <span class="kw">let </span>(<span class="kw">_</span>, ev) = s.poll_server().unwrap();
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: reqs[<span class="number">1</span>].clone(),
+            has_body: <span class="bool-val">true</span>,
+        };
+        <span class="macro">assert_eq!</span>(ev, ev_headers);
+
+        <span class="kw">let </span>(<span class="kw">_</span>, ev) = s.poll_server().unwrap();
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: reqs[<span class="number">2</span>].clone(),
+            has_body: <span class="bool-val">true</span>,
+        };
+        <span class="macro">assert_eq!</span>(ev, ev_headers);
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((<span class="number">0</span>, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.recv_body_server(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_body_server(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((<span class="number">0</span>, Event::Finished)));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((<span class="number">4</span>, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.recv_body_server(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_body_server(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((<span class="number">4</span>, Event::Finished)));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((<span class="number">8</span>, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.recv_body_server(<span class="number">8</span>, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_body_server(<span class="number">8</span>, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((<span class="number">8</span>, Event::Finished)));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>resps = Vec::new();
+
+        <span class="kw">let </span>resp1 = s.send_response(stream1, <span class="bool-val">true</span>).unwrap();
+        resps.push(resp1);
+
+        <span class="kw">let </span>resp2 = s.send_response(stream2, <span class="bool-val">true</span>).unwrap();
+        resps.push(resp2);
+
+        <span class="kw">let </span>resp3 = s.send_response(stream3, <span class="bool-val">true</span>).unwrap();
+        resps.push(resp3);
+
+        <span class="kw">for _ in </span><span class="number">0</span>..resps.len() {
+            <span class="kw">let </span>(stream, ev) = s.poll_client().unwrap();
+            <span class="kw">let </span>ev_headers = Event::Headers {
+                list: resps[(stream / <span class="number">4</span>) <span class="kw">as </span>usize].clone(),
+                has_body: <span class="bool-val">false</span>,
+            };
+            <span class="macro">assert_eq!</span>(ev, ev_headers);
+            <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+        }
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a request with no body, get a response with one DATA frame and an
+    /// empty FIN after reception from the client.
+    </span><span class="kw">fn </span>request_no_body_response_one_chunk_empty_fin() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">false</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+
+        <span class="kw">let </span>resp = s.send_response(stream, <span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>body = s.send_body_server(stream, <span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>recv_buf = <span class="macro">vec!</span>[<span class="number">0</span>; body.len()];
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: resp,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.recv_body_client(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+
+        <span class="macro">assert_eq!</span>(s.pipe.server.stream_send(stream, <span class="kw-2">&amp;</span>[], <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a request with no body, get a response with no body followed by
+    /// GREASE that is STREAM frame with a FIN.
+    </span><span class="kw">fn </span>request_no_body_response_no_body_with_grease() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">true</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(stream, <span class="number">0</span>);
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">false</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+
+        <span class="kw">let </span>resp = s.send_response(stream, <span class="bool-val">false</span>).unwrap();
+
+        <span class="comment">// Note that "has_body" is a misnomer, there will never be a body in
+        // this test. There's other work that will fix this, once it lands
+        // remove this comment.
+        </span><span class="kw">let </span>ev_headers = Event::Headers {
+            list: resp,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        <span class="comment">// Inject a GREASE frame
+        </span><span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">10</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">let </span>frame_type = b.put_varint(<span class="number">148_764_065_110_560_899</span>).unwrap();
+        s.pipe.server.stream_send(<span class="number">0</span>, frame_type, <span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>frame_len = b.put_varint(<span class="number">10</span>).unwrap();
+        s.pipe.server.stream_send(<span class="number">0</span>, frame_len, <span class="bool-val">false</span>).unwrap();
+
+        s.pipe.server.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>d, <span class="bool-val">true</span>).unwrap();
+
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Try to send DATA frames before HEADERS.
+    </span><span class="kw">fn </span>body_response_before_headers() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">true</span>).unwrap();
+        <span class="macro">assert_eq!</span>(stream, <span class="number">0</span>);
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">false</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+
+        <span class="macro">assert_eq!</span>(
+            s.send_body_server(stream, <span class="bool-val">true</span>),
+            <span class="prelude-val">Err</span>(Error::FrameUnexpected)
+        );
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Try to send DATA frames on wrong streams, ensure the API returns an
+    /// error before anything hits the transport layer.
+    </span><span class="kw">fn </span>send_body_invalid_client_stream() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="macro">assert_eq!</span>(s.send_body_client(<span class="number">0</span>, <span class="bool-val">true</span>), <span class="prelude-val">Err</span>(Error::FrameUnexpected));
+
+        <span class="macro">assert_eq!</span>(
+            s.send_body_client(s.client.control_stream_id.unwrap(), <span class="bool-val">true</span>),
+            <span class="prelude-val">Err</span>(Error::FrameUnexpected)
+        );
+
+        <span class="macro">assert_eq!</span>(
+            s.send_body_client(
+                s.client.local_qpack_streams.encoder_stream_id.unwrap(),
+                <span class="bool-val">true
+            </span>),
+            <span class="prelude-val">Err</span>(Error::FrameUnexpected)
+        );
+
+        <span class="macro">assert_eq!</span>(
+            s.send_body_client(
+                s.client.local_qpack_streams.decoder_stream_id.unwrap(),
+                <span class="bool-val">true
+            </span>),
+            <span class="prelude-val">Err</span>(Error::FrameUnexpected)
+        );
+
+        <span class="macro">assert_eq!</span>(
+            s.send_body_client(s.client.peer_control_stream_id.unwrap(), <span class="bool-val">true</span>),
+            <span class="prelude-val">Err</span>(Error::FrameUnexpected)
+        );
+
+        <span class="macro">assert_eq!</span>(
+            s.send_body_client(
+                s.client.peer_qpack_streams.encoder_stream_id.unwrap(),
+                <span class="bool-val">true
+            </span>),
+            <span class="prelude-val">Err</span>(Error::FrameUnexpected)
+        );
+
+        <span class="macro">assert_eq!</span>(
+            s.send_body_client(
+                s.client.peer_qpack_streams.decoder_stream_id.unwrap(),
+                <span class="bool-val">true
+            </span>),
+            <span class="prelude-val">Err</span>(Error::FrameUnexpected)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Try to send DATA frames on wrong streams, ensure the API returns an
+    /// error before anything hits the transport layer.
+    </span><span class="kw">fn </span>send_body_invalid_server_stream() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="macro">assert_eq!</span>(s.send_body_server(<span class="number">0</span>, <span class="bool-val">true</span>), <span class="prelude-val">Err</span>(Error::FrameUnexpected));
+
+        <span class="macro">assert_eq!</span>(
+            s.send_body_server(s.server.control_stream_id.unwrap(), <span class="bool-val">true</span>),
+            <span class="prelude-val">Err</span>(Error::FrameUnexpected)
+        );
+
+        <span class="macro">assert_eq!</span>(
+            s.send_body_server(
+                s.server.local_qpack_streams.encoder_stream_id.unwrap(),
+                <span class="bool-val">true
+            </span>),
+            <span class="prelude-val">Err</span>(Error::FrameUnexpected)
+        );
+
+        <span class="macro">assert_eq!</span>(
+            s.send_body_server(
+                s.server.local_qpack_streams.decoder_stream_id.unwrap(),
+                <span class="bool-val">true
+            </span>),
+            <span class="prelude-val">Err</span>(Error::FrameUnexpected)
+        );
+
+        <span class="macro">assert_eq!</span>(
+            s.send_body_server(s.server.peer_control_stream_id.unwrap(), <span class="bool-val">true</span>),
+            <span class="prelude-val">Err</span>(Error::FrameUnexpected)
+        );
+
+        <span class="macro">assert_eq!</span>(
+            s.send_body_server(
+                s.server.peer_qpack_streams.encoder_stream_id.unwrap(),
+                <span class="bool-val">true
+            </span>),
+            <span class="prelude-val">Err</span>(Error::FrameUnexpected)
+        );
+
+        <span class="macro">assert_eq!</span>(
+            s.send_body_server(
+                s.server.peer_qpack_streams.decoder_stream_id.unwrap(),
+                <span class="bool-val">true
+            </span>),
+            <span class="prelude-val">Err</span>(Error::FrameUnexpected)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a MAX_PUSH_ID frame from the client on a valid stream.
+    </span><span class="kw">fn </span>max_push_id_from_client_good() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.send_frame_client(
+            frame::Frame::MaxPushId { push_id: <span class="number">1 </span>},
+            s.client.control_stream_id.unwrap(),
+            <span class="bool-val">false</span>,
+        )
+        .unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a MAX_PUSH_ID frame from the client on an invalid stream.
+    </span><span class="kw">fn </span>max_push_id_from_client_bad_stream() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">false</span>).unwrap();
+
+        s.send_frame_client(
+            frame::Frame::MaxPushId { push_id: <span class="number">2 </span>},
+            stream,
+            <span class="bool-val">false</span>,
+        )
+        .unwrap();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::FrameUnexpected));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a sequence of MAX_PUSH_ID frames from the client that attempt to
+    /// reduce the limit.
+    </span><span class="kw">fn </span>max_push_id_from_client_limit_reduction() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.send_frame_client(
+            frame::Frame::MaxPushId { push_id: <span class="number">2 </span>},
+            s.client.control_stream_id.unwrap(),
+            <span class="bool-val">false</span>,
+        )
+        .unwrap();
+
+        s.send_frame_client(
+            frame::Frame::MaxPushId { push_id: <span class="number">1 </span>},
+            s.client.control_stream_id.unwrap(),
+            <span class="bool-val">false</span>,
+        )
+        .unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::IdError));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a MAX_PUSH_ID frame from the server, which is forbidden.
+    </span><span class="kw">fn </span>max_push_id_from_server() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.send_frame_server(
+            frame::Frame::MaxPushId { push_id: <span class="number">1 </span>},
+            s.server.control_stream_id.unwrap(),
+            <span class="bool-val">false</span>,
+        )
+        .unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::FrameUnexpected));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a PUSH_PROMISE frame from the client, which is forbidden.
+    </span><span class="kw">fn </span>push_promise_from_client() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>header_block = s.client.encode_header_block(<span class="kw-2">&amp;</span>req).unwrap();
+
+        s.send_frame_client(
+            frame::Frame::PushPromise {
+                push_id: <span class="number">1</span>,
+                header_block,
+            },
+            stream,
+            <span class="bool-val">false</span>,
+        )
+        .unwrap();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::FrameUnexpected));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a CANCEL_PUSH frame from the client.
+    </span><span class="kw">fn </span>cancel_push_from_client() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.send_frame_client(
+            frame::Frame::CancelPush { push_id: <span class="number">1 </span>},
+            s.client.control_stream_id.unwrap(),
+            <span class="bool-val">false</span>,
+        )
+        .unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a CANCEL_PUSH frame from the client on an invalid stream.
+    </span><span class="kw">fn </span>cancel_push_from_client_bad_stream() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">false</span>).unwrap();
+
+        s.send_frame_client(
+            frame::Frame::CancelPush { push_id: <span class="number">2 </span>},
+            stream,
+            <span class="bool-val">false</span>,
+        )
+        .unwrap();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::FrameUnexpected));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a CANCEL_PUSH frame from the client.
+    </span><span class="kw">fn </span>cancel_push_from_server() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.send_frame_server(
+            frame::Frame::CancelPush { push_id: <span class="number">1 </span>},
+            s.server.control_stream_id.unwrap(),
+            <span class="bool-val">false</span>,
+        )
+        .unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a GOAWAY frame from the client.
+    </span><span class="kw">fn </span>goaway_from_client_good() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.client.send_goaway(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="number">100</span>).unwrap();
+
+        s.advance().ok();
+
+        <span class="comment">// TODO: server push
+        </span><span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((<span class="number">0</span>, Event::GoAway)));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a GOAWAY frame from the server.
+    </span><span class="kw">fn </span>goaway_from_server_good() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.server.send_goaway(<span class="kw-2">&amp;mut </span>s.pipe.server, <span class="number">4000</span>).unwrap();
+
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((<span class="number">4000</span>, Event::GoAway)));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// A client MUST NOT send a request after it receives GOAWAY.
+    </span><span class="kw">fn </span>client_request_after_goaway() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.server.send_goaway(<span class="kw-2">&amp;mut </span>s.pipe.server, <span class="number">4000</span>).unwrap();
+
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((<span class="number">4000</span>, Event::GoAway)));
+
+        <span class="macro">assert_eq!</span>(s.send_request(<span class="bool-val">true</span>), <span class="prelude-val">Err</span>(Error::FrameUnexpected));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a GOAWAY frame from the server, using an invalid goaway ID.
+    </span><span class="kw">fn </span>goaway_from_server_invalid_id() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.send_frame_server(
+            frame::Frame::GoAway { id: <span class="number">1 </span>},
+            s.server.control_stream_id.unwrap(),
+            <span class="bool-val">false</span>,
+        )
+        .unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::IdError));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send multiple GOAWAY frames from the server, that increase the goaway
+    /// ID.
+    </span><span class="kw">fn </span>goaway_from_server_increase_id() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.send_frame_server(
+            frame::Frame::GoAway { id: <span class="number">0 </span>},
+            s.server.control_stream_id.unwrap(),
+            <span class="bool-val">false</span>,
+        )
+        .unwrap();
+
+        s.send_frame_server(
+            frame::Frame::GoAway { id: <span class="number">4 </span>},
+            s.server.control_stream_id.unwrap(),
+            <span class="bool-val">false</span>,
+        )
+        .unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((<span class="number">0</span>, Event::GoAway)));
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::IdError));
+    }
+
+    <span class="attr">#[test]
+    #[cfg(feature = <span class="string">"sfv"</span>)]
+    </span><span class="kw">fn </span>parse_priority_field_value() {
+        <span class="comment">// Legal dicts
+        </span><span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Ok</span>(Priority::new(<span class="number">0</span>, <span class="bool-val">false</span>)),
+            Priority::try_from(<span class="string">b"u=0"</span>.as_slice())
+        );
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Ok</span>(Priority::new(<span class="number">3</span>, <span class="bool-val">false</span>)),
+            Priority::try_from(<span class="string">b"u=3"</span>.as_slice())
+        );
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Ok</span>(Priority::new(<span class="number">7</span>, <span class="bool-val">false</span>)),
+            Priority::try_from(<span class="string">b"u=7"</span>.as_slice())
+        );
+
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Ok</span>(Priority::new(<span class="number">0</span>, <span class="bool-val">true</span>)),
+            Priority::try_from(<span class="string">b"u=0, i"</span>.as_slice())
+        );
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Ok</span>(Priority::new(<span class="number">3</span>, <span class="bool-val">true</span>)),
+            Priority::try_from(<span class="string">b"u=3, i"</span>.as_slice())
+        );
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Ok</span>(Priority::new(<span class="number">7</span>, <span class="bool-val">true</span>)),
+            Priority::try_from(<span class="string">b"u=7, i"</span>.as_slice())
+        );
+
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Ok</span>(Priority::new(<span class="number">0</span>, <span class="bool-val">true</span>)),
+            Priority::try_from(<span class="string">b"u=0, i=?1"</span>.as_slice())
+        );
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Ok</span>(Priority::new(<span class="number">3</span>, <span class="bool-val">true</span>)),
+            Priority::try_from(<span class="string">b"u=3, i=?1"</span>.as_slice())
+        );
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Ok</span>(Priority::new(<span class="number">7</span>, <span class="bool-val">true</span>)),
+            Priority::try_from(<span class="string">b"u=7, i=?1"</span>.as_slice())
+        );
+
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Ok</span>(Priority::new(<span class="number">3</span>, <span class="bool-val">false</span>)),
+            Priority::try_from(<span class="string">b""</span>.as_slice())
+        );
+
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Ok</span>(Priority::new(<span class="number">0</span>, <span class="bool-val">true</span>)),
+            Priority::try_from(<span class="string">b"u=0;foo, i;bar"</span>.as_slice())
+        );
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Ok</span>(Priority::new(<span class="number">3</span>, <span class="bool-val">true</span>)),
+            Priority::try_from(<span class="string">b"u=3;hello, i;world"</span>.as_slice())
+        );
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Ok</span>(Priority::new(<span class="number">7</span>, <span class="bool-val">true</span>)),
+            Priority::try_from(<span class="string">b"u=7;croeso, i;gymru"</span>.as_slice())
+        );
+
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Ok</span>(Priority::new(<span class="number">0</span>, <span class="bool-val">true</span>)),
+            Priority::try_from(<span class="string">b"u=0, i, spinaltap=11"</span>.as_slice())
+        );
+
+        <span class="comment">// Illegal formats
+        </span><span class="macro">assert_eq!</span>(<span class="prelude-val">Err</span>(Error::Done), Priority::try_from(<span class="string">b"0"</span>.as_slice()));
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Ok</span>(Priority::new(<span class="number">7</span>, <span class="bool-val">false</span>)),
+            Priority::try_from(<span class="string">b"u=-1"</span>.as_slice())
+        );
+        <span class="macro">assert_eq!</span>(<span class="prelude-val">Err</span>(Error::Done), Priority::try_from(<span class="string">b"u=0.2"</span>.as_slice()));
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Ok</span>(Priority::new(<span class="number">7</span>, <span class="bool-val">false</span>)),
+            Priority::try_from(<span class="string">b"u=100"</span>.as_slice())
+        );
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Err</span>(Error::Done),
+            Priority::try_from(<span class="string">b"u=3, i=true"</span>.as_slice())
+        );
+
+        <span class="comment">// Trailing comma in dict is malformed
+        </span><span class="macro">assert_eq!</span>(<span class="prelude-val">Err</span>(Error::Done), Priority::try_from(<span class="string">b"u=7, "</span>.as_slice()));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a PRIORITY_UPDATE for request stream from the client.
+    </span><span class="kw">fn </span>priority_update_request() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.client
+            .send_priority_update_for_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="number">0</span>, <span class="kw-2">&amp;</span>Priority {
+                urgency: <span class="number">3</span>,
+                incremental: <span class="bool-val">false</span>,
+            })
+            .unwrap();
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((<span class="number">0</span>, Event::PriorityUpdate)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a PRIORITY_UPDATE for request stream from the client.
+    </span><span class="kw">fn </span>priority_update_single_stream_rearm() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.client
+            .send_priority_update_for_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="number">0</span>, <span class="kw-2">&amp;</span>Priority {
+                urgency: <span class="number">3</span>,
+                incremental: <span class="bool-val">false</span>,
+            })
+            .unwrap();
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((<span class="number">0</span>, Event::PriorityUpdate)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        s.client
+            .send_priority_update_for_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="number">0</span>, <span class="kw-2">&amp;</span>Priority {
+                urgency: <span class="number">5</span>,
+                incremental: <span class="bool-val">false</span>,
+            })
+            .unwrap();
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// There is only one PRIORITY_UPDATE frame to read. Once read, the event
+        // will rearm ready for more.
+        </span><span class="macro">assert_eq!</span>(s.server.take_last_priority_update(<span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="string">b"u=5"</span>.to_vec()));
+        <span class="macro">assert_eq!</span>(s.server.take_last_priority_update(<span class="number">0</span>), <span class="prelude-val">Err</span>(Error::Done));
+
+        s.client
+            .send_priority_update_for_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="number">0</span>, <span class="kw-2">&amp;</span>Priority {
+                urgency: <span class="number">7</span>,
+                incremental: <span class="bool-val">false</span>,
+            })
+            .unwrap();
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((<span class="number">0</span>, Event::PriorityUpdate)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.server.take_last_priority_update(<span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="string">b"u=7"</span>.to_vec()));
+        <span class="macro">assert_eq!</span>(s.server.take_last_priority_update(<span class="number">0</span>), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send multiple PRIORITY_UPDATE frames for different streams from the
+    /// client across multiple flights of exchange.
+    </span><span class="kw">fn </span>priority_update_request_multiple_stream_arm_multiple_flights() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.client
+            .send_priority_update_for_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="number">0</span>, <span class="kw-2">&amp;</span>Priority {
+                urgency: <span class="number">3</span>,
+                incremental: <span class="bool-val">false</span>,
+            })
+            .unwrap();
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((<span class="number">0</span>, Event::PriorityUpdate)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        s.client
+            .send_priority_update_for_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="number">4</span>, <span class="kw-2">&amp;</span>Priority {
+                urgency: <span class="number">1</span>,
+                incremental: <span class="bool-val">false</span>,
+            })
+            .unwrap();
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((<span class="number">4</span>, Event::PriorityUpdate)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        s.client
+            .send_priority_update_for_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="number">8</span>, <span class="kw-2">&amp;</span>Priority {
+                urgency: <span class="number">2</span>,
+                incremental: <span class="bool-val">false</span>,
+            })
+            .unwrap();
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((<span class="number">8</span>, Event::PriorityUpdate)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.server.take_last_priority_update(<span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="string">b"u=3"</span>.to_vec()));
+        <span class="macro">assert_eq!</span>(s.server.take_last_priority_update(<span class="number">4</span>), <span class="prelude-val">Ok</span>(<span class="string">b"u=1"</span>.to_vec()));
+        <span class="macro">assert_eq!</span>(s.server.take_last_priority_update(<span class="number">8</span>), <span class="prelude-val">Ok</span>(<span class="string">b"u=2"</span>.to_vec()));
+        <span class="macro">assert_eq!</span>(s.server.take_last_priority_update(<span class="number">0</span>), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send multiple PRIORITY_UPDATE frames for different streams from the
+    /// client across a single flight.
+    </span><span class="kw">fn </span>priority_update_request_multiple_stream_arm_single_flight() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">let </span>p1 = frame::Frame::PriorityUpdateRequest {
+            prioritized_element_id: <span class="number">0</span>,
+            priority_field_value: <span class="string">b"u=3"</span>.to_vec(),
+        };
+
+        <span class="kw">let </span>p2 = frame::Frame::PriorityUpdateRequest {
+            prioritized_element_id: <span class="number">4</span>,
+            priority_field_value: <span class="string">b"u=3"</span>.to_vec(),
+        };
+
+        <span class="kw">let </span>p3 = frame::Frame::PriorityUpdateRequest {
+            prioritized_element_id: <span class="number">8</span>,
+            priority_field_value: <span class="string">b"u=3"</span>.to_vec(),
+        };
+
+        p1.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+        p2.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+        p3.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+
+        <span class="kw">let </span>off = b.off();
+        s.pipe
+            .client
+            .stream_send(s.client.control_stream_id.unwrap(), <span class="kw-2">&amp;</span>d[..off], <span class="bool-val">false</span>)
+            .unwrap();
+
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((<span class="number">0</span>, Event::PriorityUpdate)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((<span class="number">4</span>, Event::PriorityUpdate)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((<span class="number">8</span>, Event::PriorityUpdate)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.server.take_last_priority_update(<span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="string">b"u=3"</span>.to_vec()));
+        <span class="macro">assert_eq!</span>(s.server.take_last_priority_update(<span class="number">4</span>), <span class="prelude-val">Ok</span>(<span class="string">b"u=3"</span>.to_vec()));
+        <span class="macro">assert_eq!</span>(s.server.take_last_priority_update(<span class="number">8</span>), <span class="prelude-val">Ok</span>(<span class="string">b"u=3"</span>.to_vec()));
+
+        <span class="macro">assert_eq!</span>(s.server.take_last_priority_update(<span class="number">0</span>), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a PRIORITY_UPDATE for a request stream, before and after the stream
+    /// has been completed.
+    </span><span class="kw">fn </span>priority_update_request_collected_completed() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.client
+            .send_priority_update_for_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="number">0</span>, <span class="kw-2">&amp;</span>Priority {
+                urgency: <span class="number">3</span>,
+                incremental: <span class="bool-val">false</span>,
+            })
+            .unwrap();
+        s.advance().ok();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">true</span>).unwrap();
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">false</span>,
+        };
+
+        <span class="comment">// Priority event is generated before request headers.
+        </span><span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((<span class="number">0</span>, Event::PriorityUpdate)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.server.take_last_priority_update(<span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="string">b"u=3"</span>.to_vec()));
+        <span class="macro">assert_eq!</span>(s.server.take_last_priority_update(<span class="number">0</span>), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="kw">let </span>resp = s.send_response(stream, <span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: resp,
+            has_body: <span class="bool-val">false</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Now send a PRIORITY_UPDATE for the completed request stream.
+        </span>s.client
+            .send_priority_update_for_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="number">0</span>, <span class="kw-2">&amp;</span>Priority {
+                urgency: <span class="number">3</span>,
+                incremental: <span class="bool-val">false</span>,
+            })
+            .unwrap();
+        s.advance().ok();
+
+        <span class="comment">// No event generated at server
+        </span><span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a PRIORITY_UPDATE for a request stream, before and after the stream
+    /// has been stopped.
+    </span><span class="kw">fn </span>priority_update_request_collected_stopped() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.client
+            .send_priority_update_for_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="number">0</span>, <span class="kw-2">&amp;</span>Priority {
+                urgency: <span class="number">3</span>,
+                incremental: <span class="bool-val">false</span>,
+            })
+            .unwrap();
+        s.advance().ok();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">false</span>).unwrap();
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        <span class="comment">// Priority event is generated before request headers.
+        </span><span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((<span class="number">0</span>, Event::PriorityUpdate)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.server.take_last_priority_update(<span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="string">b"u=3"</span>.to_vec()));
+        <span class="macro">assert_eq!</span>(s.server.take_last_priority_update(<span class="number">0</span>), <span class="prelude-val">Err</span>(Error::Done));
+
+        s.pipe
+            .client
+            .stream_shutdown(stream, <span class="kw">crate</span>::Shutdown::Write, <span class="number">0x100</span>)
+            .unwrap();
+        s.pipe
+            .client
+            .stream_shutdown(stream, <span class="kw">crate</span>::Shutdown::Read, <span class="number">0x100</span>)
+            .unwrap();
+
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((<span class="number">0</span>, Event::Reset(<span class="number">0x100</span>))));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Now send a PRIORITY_UPDATE for the closed request stream.
+        </span>s.client
+            .send_priority_update_for_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="number">0</span>, <span class="kw-2">&amp;</span>Priority {
+                urgency: <span class="number">3</span>,
+                incremental: <span class="bool-val">false</span>,
+            })
+            .unwrap();
+        s.advance().ok();
+
+        <span class="comment">// No event generated at server
+        </span><span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a PRIORITY_UPDATE for push stream from the client.
+    </span><span class="kw">fn </span>priority_update_push() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.send_frame_client(
+            frame::Frame::PriorityUpdatePush {
+                prioritized_element_id: <span class="number">3</span>,
+                priority_field_value: <span class="string">b"u=3"</span>.to_vec(),
+            },
+            s.client.control_stream_id.unwrap(),
+            <span class="bool-val">false</span>,
+        )
+        .unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a PRIORITY_UPDATE for request stream from the client but for an
+    /// incorrect stream type.
+    </span><span class="kw">fn </span>priority_update_request_bad_stream() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.send_frame_client(
+            frame::Frame::PriorityUpdateRequest {
+                prioritized_element_id: <span class="number">5</span>,
+                priority_field_value: <span class="string">b"u=3"</span>.to_vec(),
+            },
+            s.client.control_stream_id.unwrap(),
+            <span class="bool-val">false</span>,
+        )
+        .unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::FrameUnexpected));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a PRIORITY_UPDATE for push stream from the client but for an
+    /// incorrect stream type.
+    </span><span class="kw">fn </span>priority_update_push_bad_stream() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.send_frame_client(
+            frame::Frame::PriorityUpdatePush {
+                prioritized_element_id: <span class="number">5</span>,
+                priority_field_value: <span class="string">b"u=3"</span>.to_vec(),
+            },
+            s.client.control_stream_id.unwrap(),
+            <span class="bool-val">false</span>,
+        )
+        .unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::FrameUnexpected));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a PRIORITY_UPDATE for request stream from the server.
+    </span><span class="kw">fn </span>priority_update_request_from_server() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.send_frame_server(
+            frame::Frame::PriorityUpdateRequest {
+                prioritized_element_id: <span class="number">0</span>,
+                priority_field_value: <span class="string">b"u=3"</span>.to_vec(),
+            },
+            s.server.control_stream_id.unwrap(),
+            <span class="bool-val">false</span>,
+        )
+        .unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::FrameUnexpected));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a PRIORITY_UPDATE for request stream from the server.
+    </span><span class="kw">fn </span>priority_update_push_from_server() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        s.send_frame_server(
+            frame::Frame::PriorityUpdatePush {
+                prioritized_element_id: <span class="number">0</span>,
+                priority_field_value: <span class="string">b"u=3"</span>.to_vec(),
+            },
+            s.server.control_stream_id.unwrap(),
+            <span class="bool-val">false</span>,
+        )
+        .unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::FrameUnexpected));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Ensure quiche allocates streams for client and server roles as expected.
+    </span><span class="kw">fn </span>uni_stream_local_counting() {
+        <span class="kw">let </span>config = Config::new().unwrap();
+
+        <span class="kw">let </span>h3_cln = Connection::new(<span class="kw-2">&amp;</span>config, <span class="bool-val">false</span>, <span class="bool-val">false</span>).unwrap();
+        <span class="macro">assert_eq!</span>(h3_cln.next_uni_stream_id, <span class="number">2</span>);
+
+        <span class="kw">let </span>h3_srv = Connection::new(<span class="kw-2">&amp;</span>config, <span class="bool-val">true</span>, <span class="bool-val">false</span>).unwrap();
+        <span class="macro">assert_eq!</span>(h3_srv.next_uni_stream_id, <span class="number">3</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Client opens multiple control streams, which is forbidden.
+    </span><span class="kw">fn </span>open_multiple_control_streams() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>stream_id = s.client.next_uni_stream_id;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">8</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        s.pipe
+            .client
+            .stream_send(
+                stream_id,
+                b.put_varint(stream::HTTP3_CONTROL_STREAM_TYPE_ID).unwrap(),
+                <span class="bool-val">false</span>,
+            )
+            .unwrap();
+
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::StreamCreationError));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Client closes the control stream, which is forbidden.
+    </span><span class="kw">fn </span>close_control_stream() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>control_stream_closed = <span class="bool-val">false</span>;
+
+        s.send_frame_client(
+            frame::Frame::MaxPushId { push_id: <span class="number">1 </span>},
+            s.client.control_stream_id.unwrap(),
+            <span class="bool-val">true</span>,
+        )
+        .unwrap();
+
+        <span class="kw">loop </span>{
+            <span class="kw">match </span>s.server.poll(<span class="kw-2">&amp;mut </span>s.pipe.server) {
+                <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; (),
+
+                <span class="prelude-val">Err</span>(Error::Done) =&gt; {
+                    <span class="kw">break</span>;
+                },
+
+                <span class="prelude-val">Err</span>(Error::ClosedCriticalStream) =&gt; {
+                    control_stream_closed = <span class="bool-val">true</span>;
+                    <span class="kw">break</span>;
+                },
+
+                <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; (),
+            }
+        }
+
+        <span class="macro">assert!</span>(control_stream_closed);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Client closes QPACK stream, which is forbidden.
+    </span><span class="kw">fn </span>close_qpack_stream() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>qpack_stream_closed = <span class="bool-val">false</span>;
+
+        <span class="kw">let </span>stream_id = s.client.local_qpack_streams.encoder_stream_id.unwrap();
+        <span class="kw">let </span>d = [<span class="number">0</span>; <span class="number">1</span>];
+
+        s.pipe.client.stream_send(stream_id, <span class="kw-2">&amp;</span>d, <span class="bool-val">false</span>).unwrap();
+        s.pipe.client.stream_send(stream_id, <span class="kw-2">&amp;</span>d, <span class="bool-val">true</span>).unwrap();
+
+        s.advance().ok();
+
+        <span class="kw">loop </span>{
+            <span class="kw">match </span>s.server.poll(<span class="kw-2">&amp;mut </span>s.pipe.server) {
+                <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; (),
+
+                <span class="prelude-val">Err</span>(Error::Done) =&gt; {
+                    <span class="kw">break</span>;
+                },
+
+                <span class="prelude-val">Err</span>(Error::ClosedCriticalStream) =&gt; {
+                    qpack_stream_closed = <span class="bool-val">true</span>;
+                    <span class="kw">break</span>;
+                },
+
+                <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; (),
+            }
+        }
+
+        <span class="macro">assert!</span>(qpack_stream_closed);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Client sends QPACK data.
+    </span><span class="kw">fn </span>qpack_data() {
+        <span class="comment">// TODO: QPACK instructions are ignored until dynamic table support is
+        // added so we just test that the data is safely ignored.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>e_stream_id = s.client.local_qpack_streams.encoder_stream_id.unwrap();
+        <span class="kw">let </span>d_stream_id = s.client.local_qpack_streams.decoder_stream_id.unwrap();
+        <span class="kw">let </span>d = [<span class="number">0</span>; <span class="number">20</span>];
+
+        s.pipe.client.stream_send(e_stream_id, <span class="kw-2">&amp;</span>d, <span class="bool-val">false</span>).unwrap();
+        s.advance().ok();
+
+        s.pipe.client.stream_send(d_stream_id, <span class="kw-2">&amp;</span>d, <span class="bool-val">false</span>).unwrap();
+        s.advance().ok();
+
+        <span class="kw">loop </span>{
+            <span class="kw">match </span>s.server.poll(<span class="kw-2">&amp;mut </span>s.pipe.server) {
+                <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; (),
+
+                <span class="prelude-val">Err</span>(Error::Done) =&gt; {
+                    <span class="kw">break</span>;
+                },
+
+                <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; {
+                    <span class="macro">panic!</span>();
+                },
+            }
+        }
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests limits for the stream state buffer maximum size.
+    </span><span class="kw">fn </span>max_state_buf_size() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>req = <span class="macro">vec!</span>[
+            Header::new(<span class="string">b":method"</span>, <span class="string">b"GET"</span>),
+            Header::new(<span class="string">b":scheme"</span>, <span class="string">b"https"</span>),
+            Header::new(<span class="string">b":authority"</span>, <span class="string">b"quic.tech"</span>),
+            Header::new(<span class="string">b":path"</span>, <span class="string">b"/test"</span>),
+            Header::new(<span class="string">b"user-agent"</span>, <span class="string">b"quiche-test"</span>),
+        ];
+
+        <span class="macro">assert_eq!</span>(
+            s.client.send_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="kw-2">&amp;</span>req, <span class="bool-val">false</span>),
+            <span class="prelude-val">Ok</span>(<span class="number">0</span>)
+        );
+
+        s.advance().ok();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.server.poll(<span class="kw-2">&amp;mut </span>s.pipe.server), <span class="prelude-val">Ok</span>((<span class="number">0</span>, ev_headers)));
+
+        <span class="comment">// DATA frames don't consume the state buffer, so can be of any size.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">let </span>frame_type = b.put_varint(frame::DATA_FRAME_TYPE_ID).unwrap();
+        s.pipe.client.stream_send(<span class="number">0</span>, frame_type, <span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>frame_len = b.put_varint(<span class="number">1 </span>&lt;&lt; <span class="number">24</span>).unwrap();
+        s.pipe.client.stream_send(<span class="number">0</span>, frame_len, <span class="bool-val">false</span>).unwrap();
+
+        s.pipe.client.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>d, <span class="bool-val">false</span>).unwrap();
+
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.server.poll(<span class="kw-2">&amp;mut </span>s.pipe.server), <span class="prelude-val">Ok</span>((<span class="number">0</span>, Event::Data)));
+
+        <span class="comment">// GREASE frames consume the state buffer, so need to be limited.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">let </span>frame_type = b.put_varint(<span class="number">148_764_065_110_560_899</span>).unwrap();
+        s.pipe.client.stream_send(<span class="number">0</span>, frame_type, <span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>frame_len = b.put_varint(<span class="number">1 </span>&lt;&lt; <span class="number">24</span>).unwrap();
+        s.pipe.client.stream_send(<span class="number">0</span>, frame_len, <span class="bool-val">false</span>).unwrap();
+
+        s.pipe.client.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>d, <span class="bool-val">false</span>).unwrap();
+
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.server.poll(<span class="kw-2">&amp;mut </span>s.pipe.server), <span class="prelude-val">Err</span>(Error::ExcessiveLoad));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that DATA frames are properly truncated depending on the request
+    /// stream's outgoing flow control capacity.
+    </span><span class="kw">fn </span>stream_backpressure() {
+        <span class="kw">let </span>bytes = <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>total_data_frames = <span class="number">6</span>;
+
+        <span class="kw">for _ in </span><span class="number">0</span>..total_data_frames {
+            <span class="macro">assert_eq!</span>(
+                s.client
+                    .send_body(<span class="kw-2">&amp;mut </span>s.pipe.client, stream, <span class="kw-2">&amp;</span>bytes, <span class="bool-val">false</span>),
+                <span class="prelude-val">Ok</span>(bytes.len())
+            );
+
+            s.advance().ok();
+        }
+
+        <span class="macro">assert_eq!</span>(
+            s.client.send_body(<span class="kw-2">&amp;mut </span>s.pipe.client, stream, <span class="kw-2">&amp;</span>bytes, <span class="bool-val">true</span>),
+            <span class="prelude-val">Ok</span>(bytes.len() - <span class="number">2</span>)
+        );
+
+        s.advance().ok();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>recv_buf = <span class="macro">vec!</span>[<span class="number">0</span>; bytes.len()];
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="kw">for _ in </span><span class="number">0</span>..total_data_frames {
+            <span class="macro">assert_eq!</span>(
+                s.recv_body_server(stream, <span class="kw-2">&amp;mut </span>recv_buf),
+                <span class="prelude-val">Ok</span>(bytes.len())
+            );
+        }
+
+        <span class="macro">assert_eq!</span>(
+            s.recv_body_server(stream, <span class="kw-2">&amp;mut </span>recv_buf),
+            <span class="prelude-val">Ok</span>(bytes.len() - <span class="number">2</span>)
+        );
+
+        <span class="comment">// Fin flag from last send_body() call was not sent as the buffer was
+        // only partially written.
+        </span><span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that the max header list size setting is enforced.
+    </span><span class="kw">fn </span>request_max_header_size_limit() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"h3"</span>]).unwrap();
+        config.set_initial_max_data(<span class="number">1500</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">150</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">150</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">150</span>);
+        config.set_initial_max_streams_bidi(<span class="number">5</span>);
+        config.set_initial_max_streams_uni(<span class="number">5</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>h3_config = Config::new().unwrap();
+        h3_config.set_max_field_section_size(<span class="number">65</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::with_configs(<span class="kw-2">&amp;mut </span>config, <span class="kw-2">&amp;</span>h3_config).unwrap();
+
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>req = <span class="macro">vec!</span>[
+            Header::new(<span class="string">b":method"</span>, <span class="string">b"GET"</span>),
+            Header::new(<span class="string">b":scheme"</span>, <span class="string">b"https"</span>),
+            Header::new(<span class="string">b":authority"</span>, <span class="string">b"quic.tech"</span>),
+            Header::new(<span class="string">b":path"</span>, <span class="string">b"/test"</span>),
+            Header::new(<span class="string">b"aaaaaaa"</span>, <span class="string">b"aaaaaaaa"</span>),
+        ];
+
+        <span class="kw">let </span>stream = s
+            .client
+            .send_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="kw-2">&amp;</span>req, <span class="bool-val">true</span>)
+            .unwrap();
+
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(stream, <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::ExcessiveLoad));
+
+        <span class="macro">assert_eq!</span>(
+            s.pipe.server.local_error.as_ref().unwrap().error_code,
+            Error::to_wire(Error::ExcessiveLoad)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that Error::TransportError contains a transport error.
+    </span><span class="kw">fn </span>transport_error() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>req = <span class="macro">vec!</span>[
+            Header::new(<span class="string">b":method"</span>, <span class="string">b"GET"</span>),
+            Header::new(<span class="string">b":scheme"</span>, <span class="string">b"https"</span>),
+            Header::new(<span class="string">b":authority"</span>, <span class="string">b"quic.tech"</span>),
+            Header::new(<span class="string">b":path"</span>, <span class="string">b"/test"</span>),
+            Header::new(<span class="string">b"user-agent"</span>, <span class="string">b"quiche-test"</span>),
+        ];
+
+        <span class="comment">// We need to open all streams in the same flight, so we can't use the
+        // Session::send_request() method because it also calls advance(),
+        // otherwise the server would send a MAX_STREAMS frame and the client
+        // wouldn't hit the streams limit.
+        </span><span class="macro">assert_eq!</span>(s.client.send_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="kw-2">&amp;</span>req, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(s.client.send_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="kw-2">&amp;</span>req, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(s.client.send_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="kw-2">&amp;</span>req, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">8</span>));
+        <span class="macro">assert_eq!</span>(
+            s.client.send_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="kw-2">&amp;</span>req, <span class="bool-val">true</span>),
+            <span class="prelude-val">Ok</span>(<span class="number">12</span>)
+        );
+        <span class="macro">assert_eq!</span>(
+            s.client.send_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="kw-2">&amp;</span>req, <span class="bool-val">true</span>),
+            <span class="prelude-val">Ok</span>(<span class="number">16</span>)
+        );
+
+        <span class="macro">assert_eq!</span>(
+            s.client.send_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="kw-2">&amp;</span>req, <span class="bool-val">true</span>),
+            <span class="prelude-val">Err</span>(Error::TransportError(<span class="kw">crate</span>::Error::StreamLimit))
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that sending DATA before HEADERS causes an error.
+    </span><span class="kw">fn </span>data_before_headers() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">let </span>frame_type = b.put_varint(frame::DATA_FRAME_TYPE_ID).unwrap();
+        s.pipe.client.stream_send(<span class="number">0</span>, frame_type, <span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>frame_len = b.put_varint(<span class="number">5</span>).unwrap();
+        s.pipe.client.stream_send(<span class="number">0</span>, frame_len, <span class="bool-val">false</span>).unwrap();
+
+        s.pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"hello"</span>, <span class="bool-val">false</span>).unwrap();
+
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(
+            s.server.poll(<span class="kw-2">&amp;mut </span>s.pipe.server),
+            <span class="prelude-val">Err</span>(Error::FrameUnexpected)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that calling poll() after an error occurred does nothing.
+    </span><span class="kw">fn </span>poll_after_error() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">128</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">let </span>frame_type = b.put_varint(<span class="number">148_764_065_110_560_899</span>).unwrap();
+        s.pipe.client.stream_send(<span class="number">0</span>, frame_type, <span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>frame_len = b.put_varint(<span class="number">1 </span>&lt;&lt; <span class="number">24</span>).unwrap();
+        s.pipe.client.stream_send(<span class="number">0</span>, frame_len, <span class="bool-val">false</span>).unwrap();
+
+        s.pipe.client.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>d, <span class="bool-val">false</span>).unwrap();
+
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.server.poll(<span class="kw-2">&amp;mut </span>s.pipe.server), <span class="prelude-val">Err</span>(Error::ExcessiveLoad));
+
+        <span class="comment">// Try to call poll() again after an error occurred.
+        </span><span class="macro">assert_eq!</span>(s.server.poll(<span class="kw-2">&amp;mut </span>s.pipe.server), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that we limit sending HEADERS based on the stream capacity.
+    </span><span class="kw">fn </span>headers_blocked() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"h3"</span>]).unwrap();
+        config.set_initial_max_data(<span class="number">70</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">150</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">150</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">150</span>);
+        config.set_initial_max_streams_bidi(<span class="number">100</span>);
+        config.set_initial_max_streams_uni(<span class="number">5</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span>h3_config = Config::new().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::with_configs(<span class="kw-2">&amp;mut </span>config, <span class="kw-2">&amp;</span>h3_config).unwrap();
+
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>req = <span class="macro">vec!</span>[
+            Header::new(<span class="string">b":method"</span>, <span class="string">b"GET"</span>),
+            Header::new(<span class="string">b":scheme"</span>, <span class="string">b"https"</span>),
+            Header::new(<span class="string">b":authority"</span>, <span class="string">b"quic.tech"</span>),
+            Header::new(<span class="string">b":path"</span>, <span class="string">b"/test"</span>),
+        ];
+
+        <span class="macro">assert_eq!</span>(s.client.send_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="kw-2">&amp;</span>req, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+
+        <span class="macro">assert_eq!</span>(
+            s.client.send_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="kw-2">&amp;</span>req, <span class="bool-val">true</span>),
+            <span class="prelude-val">Err</span>(Error::StreamBlocked)
+        );
+
+        <span class="comment">// Clear the writable stream queue.
+        </span><span class="macro">assert_eq!</span>(s.pipe.client.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">2</span>));
+        <span class="macro">assert_eq!</span>(s.pipe.client.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">6</span>));
+        <span class="macro">assert_eq!</span>(s.pipe.client.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">10</span>));
+        <span class="macro">assert_eq!</span>(s.pipe.client.stream_writable_next(), <span class="prelude-val">None</span>);
+
+        s.advance().ok();
+
+        <span class="comment">// Once the server gives flow control credits back, we can send the
+        // request.
+        </span><span class="macro">assert_eq!</span>(s.pipe.client.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(s.client.send_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="kw-2">&amp;</span>req, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">4</span>));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Ensure StreamBlocked when connection flow control prevents headers.
+    </span><span class="kw">fn </span>headers_blocked_on_conn() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"h3"</span>]).unwrap();
+        config.set_initial_max_data(<span class="number">70</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">150</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">150</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">150</span>);
+        config.set_initial_max_streams_bidi(<span class="number">100</span>);
+        config.set_initial_max_streams_uni(<span class="number">5</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span>h3_config = Config::new().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::with_configs(<span class="kw-2">&amp;mut </span>config, <span class="kw-2">&amp;</span>h3_config).unwrap();
+
+        s.handshake().unwrap();
+
+        <span class="comment">// After the HTTP handshake, some bytes of connection flow control have
+        // been consumed. Fill the connection with more grease data on the control
+        // stream.
+        </span><span class="kw">let </span>d = [<span class="number">42</span>; <span class="number">28</span>];
+        <span class="macro">assert_eq!</span>(s.pipe.client.stream_send(<span class="number">2</span>, <span class="kw-2">&amp;</span>d, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">23</span>));
+
+        <span class="kw">let </span>req = <span class="macro">vec!</span>[
+            Header::new(<span class="string">b":method"</span>, <span class="string">b"GET"</span>),
+            Header::new(<span class="string">b":scheme"</span>, <span class="string">b"https"</span>),
+            Header::new(<span class="string">b":authority"</span>, <span class="string">b"quic.tech"</span>),
+            Header::new(<span class="string">b":path"</span>, <span class="string">b"/test"</span>),
+        ];
+
+        <span class="comment">// There is 0 connection-level flow control, so sending a request is
+        // blocked.
+        </span><span class="macro">assert_eq!</span>(
+            s.client.send_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="kw-2">&amp;</span>req, <span class="bool-val">true</span>),
+            <span class="prelude-val">Err</span>(Error::StreamBlocked)
+        );
+        <span class="macro">assert_eq!</span>(s.pipe.client.stream_writable_next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Emit the control stream data and drain it at the server via poll() to
+        // consumes it via poll() and gives back flow control.
+        </span>s.advance().ok();
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+        s.advance().ok();
+
+        <span class="comment">// Now we can send the request.
+        </span><span class="macro">assert_eq!</span>(s.pipe.client.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">2</span>));
+        <span class="macro">assert_eq!</span>(s.pipe.client.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">6</span>));
+        <span class="macro">assert_eq!</span>(s.client.send_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="kw-2">&amp;</span>req, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Ensure STREAM_DATA_BLOCKED is not emitted multiple times with the same
+    /// offset when trying to send large bodies.
+    </span><span class="kw">fn </span>send_body_truncation_stream_blocked() {
+        <span class="kw">use </span><span class="kw">crate</span>::testing::decode_pkt;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"h3"</span>]).unwrap();
+        config.set_initial_max_data(<span class="number">10000</span>); <span class="comment">// large connection-level flow control
+        </span>config.set_initial_max_stream_data_bidi_local(<span class="number">80</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">80</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">150</span>);
+        config.set_initial_max_streams_bidi(<span class="number">100</span>);
+        config.set_initial_max_streams_uni(<span class="number">5</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span>h3_config = Config::new().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::with_configs(<span class="kw-2">&amp;mut </span>config, <span class="kw-2">&amp;</span>h3_config).unwrap();
+
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">false</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+
+        <span class="kw">let _ </span>= s.send_response(stream, <span class="bool-val">false</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(s.pipe.server.streams.blocked().len(), <span class="number">0</span>);
+
+        <span class="comment">// The body must be larger than the stream window would allow
+        </span><span class="kw">let </span>d = [<span class="number">42</span>; <span class="number">500</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>off = <span class="number">0</span>;
+
+        <span class="kw">let </span>sent = s
+            .server
+            .send_body(<span class="kw-2">&amp;mut </span>s.pipe.server, stream, <span class="kw-2">&amp;</span>d, <span class="bool-val">true</span>)
+            .unwrap();
+        <span class="macro">assert_eq!</span>(sent, <span class="number">25</span>);
+        off += sent;
+
+        <span class="comment">// send_body wrote as much as it could (sent &lt; size of buff).
+        </span><span class="macro">assert_eq!</span>(s.pipe.server.streams.blocked().len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(
+            s.server
+                .send_body(<span class="kw-2">&amp;mut </span>s.pipe.server, stream, <span class="kw-2">&amp;</span>d[off..], <span class="bool-val">true</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+        <span class="macro">assert_eq!</span>(s.pipe.server.streams.blocked().len(), <span class="number">1</span>);
+
+        <span class="comment">// Now read raw frames to see what the QUIC layer did
+        </span><span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = s.pipe.server.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="kw">let </span>frames = decode_pkt(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="kw">crate</span>::frame::Frame::StreamDataBlocked {
+                stream_id: <span class="number">0</span>,
+                limit: <span class="number">80</span>,
+            })
+        );
+
+        <span class="comment">// At the server, after sending the STREAM_DATA_BLOCKED frame, we clear
+        // the mark.
+        </span><span class="macro">assert_eq!</span>(s.pipe.server.streams.blocked().len(), <span class="number">0</span>);
+
+        <span class="comment">// Don't read any data from the client, so stream flow control is never
+        // given back in the form of changing the stream's max offset.
+        // Subsequent body send operations will still fail but no more
+        // STREAM_DATA_BLOCKED frames should be submitted since the limit didn't
+        // change. No frames means no packet to send.
+        </span><span class="macro">assert_eq!</span>(
+            s.server
+                .send_body(<span class="kw-2">&amp;mut </span>s.pipe.server, stream, <span class="kw-2">&amp;</span>d[off..], <span class="bool-val">true</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+        <span class="macro">assert_eq!</span>(s.pipe.server.streams.blocked().len(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(s.pipe.server.send(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(<span class="kw">crate</span>::Error::Done));
+
+        <span class="comment">// Now update the client's max offset manually.
+        </span><span class="kw">let </span>frames = [<span class="kw">crate</span>::frame::Frame::MaxStreamData {
+            stream_id: <span class="number">0</span>,
+            max: <span class="number">100</span>,
+        }];
+
+        <span class="kw">let </span>pkt_type = <span class="kw">crate</span>::packet::Type::Short;
+        <span class="macro">assert_eq!</span>(
+            s.pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Ok</span>(<span class="number">39</span>),
+        );
+
+        <span class="kw">let </span>sent = s
+            .server
+            .send_body(<span class="kw-2">&amp;mut </span>s.pipe.server, stream, <span class="kw-2">&amp;</span>d[off..], <span class="bool-val">true</span>)
+            .unwrap();
+        <span class="macro">assert_eq!</span>(sent, <span class="number">18</span>);
+
+        <span class="comment">// Same thing here...
+        </span><span class="macro">assert_eq!</span>(s.pipe.server.streams.blocked().len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(
+            s.server
+                .send_body(<span class="kw-2">&amp;mut </span>s.pipe.server, stream, <span class="kw-2">&amp;</span>d[off..], <span class="bool-val">true</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+        <span class="macro">assert_eq!</span>(s.pipe.server.streams.blocked().len(), <span class="number">1</span>);
+
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = s.pipe.server.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="kw">let </span>frames = decode_pkt(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="kw">crate</span>::frame::Frame::StreamDataBlocked {
+                stream_id: <span class="number">0</span>,
+                limit: <span class="number">100</span>,
+            })
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Ensure stream doesn't hang due to small cwnd.
+    </span><span class="kw">fn </span>send_body_stream_blocked_by_small_cwnd() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"h3"</span>]).unwrap();
+        config.set_initial_max_data(<span class="number">100000</span>); <span class="comment">// large connection-level flow control
+        </span>config.set_initial_max_stream_data_bidi_local(<span class="number">100000</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">50000</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">150</span>);
+        config.set_initial_max_streams_bidi(<span class="number">100</span>);
+        config.set_initial_max_streams_uni(<span class="number">5</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span>h3_config = Config::new().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::with_configs(<span class="kw-2">&amp;mut </span>config, <span class="kw-2">&amp;</span>h3_config).unwrap();
+
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">false</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+
+        <span class="kw">let _ </span>= s.send_response(stream, <span class="bool-val">false</span>).unwrap();
+
+        <span class="comment">// Clear the writable stream queue.
+        </span><span class="macro">assert_eq!</span>(s.pipe.server.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">3</span>));
+        <span class="macro">assert_eq!</span>(s.pipe.server.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">7</span>));
+        <span class="macro">assert_eq!</span>(s.pipe.server.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">11</span>));
+        <span class="macro">assert_eq!</span>(s.pipe.server.stream_writable_next(), <span class="prelude-val">Some</span>(stream));
+        <span class="macro">assert_eq!</span>(s.pipe.server.stream_writable_next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// The body must be larger than the cwnd would allow.
+        </span><span class="kw">let </span>send_buf = [<span class="number">42</span>; <span class="number">80000</span>];
+
+        <span class="kw">let </span>sent = s
+            .server
+            .send_body(<span class="kw-2">&amp;mut </span>s.pipe.server, stream, <span class="kw-2">&amp;</span>send_buf, <span class="bool-val">true</span>)
+            .unwrap();
+
+        <span class="comment">// send_body wrote as much as it could (sent &lt; size of buff).
+        </span><span class="macro">assert_eq!</span>(sent, <span class="number">11995</span>);
+
+        s.advance().ok();
+
+        <span class="comment">// Client reads received headers and body.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>recv_buf = [<span class="number">42</span>; <span class="number">80000</span>];
+        <span class="macro">assert!</span>(s.poll_client().is_ok());
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.recv_body_client(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(<span class="number">11995</span>));
+
+        s.advance().ok();
+
+        <span class="comment">// Server send cap is smaller than remaining body buffer.
+        </span><span class="macro">assert!</span>(s.pipe.server.tx_cap &lt; send_buf.len() - sent);
+
+        <span class="comment">// Once the server cwnd opens up, we can send more body.
+        </span><span class="macro">assert_eq!</span>(s.pipe.server.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Ensure stream doesn't hang due to small cwnd.
+    </span><span class="kw">fn </span>send_body_stream_blocked_zero_length() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"h3"</span>]).unwrap();
+        config.set_initial_max_data(<span class="number">100000</span>); <span class="comment">// large connection-level flow control
+        </span>config.set_initial_max_stream_data_bidi_local(<span class="number">100000</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">50000</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">150</span>);
+        config.set_initial_max_streams_bidi(<span class="number">100</span>);
+        config.set_initial_max_streams_uni(<span class="number">5</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span>h3_config = Config::new().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::with_configs(<span class="kw-2">&amp;mut </span>config, <span class="kw-2">&amp;</span>h3_config).unwrap();
+
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">false</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+
+        <span class="kw">let _ </span>= s.send_response(stream, <span class="bool-val">false</span>).unwrap();
+
+        <span class="comment">// Clear the writable stream queue.
+        </span><span class="macro">assert_eq!</span>(s.pipe.server.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">3</span>));
+        <span class="macro">assert_eq!</span>(s.pipe.server.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">7</span>));
+        <span class="macro">assert_eq!</span>(s.pipe.server.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">11</span>));
+        <span class="macro">assert_eq!</span>(s.pipe.server.stream_writable_next(), <span class="prelude-val">Some</span>(stream));
+        <span class="macro">assert_eq!</span>(s.pipe.server.stream_writable_next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// The body is large enough to fill the cwnd, except for enough bytes
+        // for another DATA frame header (but no payload).
+        </span><span class="kw">let </span>send_buf = [<span class="number">42</span>; <span class="number">11994</span>];
+
+        <span class="kw">let </span>sent = s
+            .server
+            .send_body(<span class="kw-2">&amp;mut </span>s.pipe.server, stream, <span class="kw-2">&amp;</span>send_buf, <span class="bool-val">false</span>)
+            .unwrap();
+
+        <span class="macro">assert_eq!</span>(sent, <span class="number">11994</span>);
+
+        <span class="comment">// There is only enough capacity left for the DATA frame header, but
+        // no payload.
+        </span><span class="macro">assert_eq!</span>(s.pipe.server.stream_capacity(stream).unwrap(), <span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(
+            s.server
+                .send_body(<span class="kw-2">&amp;mut </span>s.pipe.server, stream, <span class="kw-2">&amp;</span>send_buf, <span class="bool-val">false</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+
+        s.advance().ok();
+
+        <span class="comment">// Client reads received headers and body.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>recv_buf = [<span class="number">42</span>; <span class="number">80000</span>];
+        <span class="macro">assert!</span>(s.poll_client().is_ok());
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.recv_body_client(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(<span class="number">11994</span>));
+
+        s.advance().ok();
+
+        <span class="comment">// Once the server cwnd opens up, we can send more body.
+        </span><span class="macro">assert_eq!</span>(s.pipe.server.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Test handling of 0-length DATA writes with and without fin.
+    </span><span class="kw">fn </span>zero_length_data() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">false</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            s.client.send_body(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="number">0</span>, <span class="string">b""</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+        <span class="macro">assert_eq!</span>(s.client.send_body(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="number">0</span>, <span class="string">b""</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+
+        s.advance().ok();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>recv_buf = <span class="macro">vec!</span>[<span class="number">0</span>; <span class="number">100</span>];
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.recv_body_server(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="kw">let </span>resp = s.send_response(stream, <span class="bool-val">false</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            s.server.send_body(<span class="kw-2">&amp;mut </span>s.pipe.server, <span class="number">0</span>, <span class="string">b""</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+        <span class="macro">assert_eq!</span>(s.server.send_body(<span class="kw-2">&amp;mut </span>s.pipe.server, <span class="number">0</span>, <span class="string">b""</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+
+        s.advance().ok();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: resp,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.recv_body_client(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that blocked 0-length DATA writes are reported correctly.
+    </span><span class="kw">fn </span>zero_length_data_blocked() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"h3"</span>]).unwrap();
+        config.set_initial_max_data(<span class="number">69</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">150</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">150</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">150</span>);
+        config.set_initial_max_streams_bidi(<span class="number">100</span>);
+        config.set_initial_max_streams_uni(<span class="number">5</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span>h3_config = Config::new().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::with_configs(<span class="kw-2">&amp;mut </span>config, <span class="kw-2">&amp;</span>h3_config).unwrap();
+
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>req = <span class="macro">vec!</span>[
+            Header::new(<span class="string">b":method"</span>, <span class="string">b"GET"</span>),
+            Header::new(<span class="string">b":scheme"</span>, <span class="string">b"https"</span>),
+            Header::new(<span class="string">b":authority"</span>, <span class="string">b"quic.tech"</span>),
+            Header::new(<span class="string">b":path"</span>, <span class="string">b"/test"</span>),
+        ];
+
+        <span class="macro">assert_eq!</span>(
+            s.client.send_request(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="kw-2">&amp;</span>req, <span class="bool-val">false</span>),
+            <span class="prelude-val">Ok</span>(<span class="number">0</span>)
+        );
+
+        <span class="macro">assert_eq!</span>(
+            s.client.send_body(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="number">0</span>, <span class="string">b""</span>, <span class="bool-val">true</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+
+        <span class="comment">// Clear the writable stream queue.
+        </span><span class="macro">assert_eq!</span>(s.pipe.client.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">2</span>));
+        <span class="macro">assert_eq!</span>(s.pipe.client.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">6</span>));
+        <span class="macro">assert_eq!</span>(s.pipe.client.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">10</span>));
+        <span class="macro">assert_eq!</span>(s.pipe.client.stream_writable_next(), <span class="prelude-val">None</span>);
+
+        s.advance().ok();
+
+        <span class="comment">// Once the server gives flow control credits back, we can send the body.
+        </span><span class="macro">assert_eq!</span>(s.pipe.client.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(s.client.send_body(<span class="kw-2">&amp;mut </span>s.pipe.client, <span class="number">0</span>, <span class="string">b""</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that receiving an empty SETTINGS frame is handled and reported.
+    </span><span class="kw">fn </span>empty_settings() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"h3"</span>]).unwrap();
+        config.set_initial_max_data(<span class="number">1500</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">150</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">150</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">150</span>);
+        config.set_initial_max_streams_bidi(<span class="number">5</span>);
+        config.set_initial_max_streams_uni(<span class="number">5</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_ack_delay_exponent(<span class="number">8</span>);
+        config.grease(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span>h3_config = Config::new().unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::with_configs(<span class="kw-2">&amp;mut </span>config, <span class="kw-2">&amp;</span>h3_config).unwrap();
+
+        s.handshake().unwrap();
+
+        <span class="macro">assert!</span>(s.client.peer_settings_raw().is_some());
+        <span class="macro">assert!</span>(s.server.peer_settings_raw().is_some());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that receiving a H3_DATAGRAM setting is ok.
+    </span><span class="kw">fn </span>dgram_setting() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"h3"</span>]).unwrap();
+        config.set_initial_max_data(<span class="number">70</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">150</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">150</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">150</span>);
+        config.set_initial_max_streams_bidi(<span class="number">100</span>);
+        config.set_initial_max_streams_uni(<span class="number">5</span>);
+        config.enable_dgram(<span class="bool-val">true</span>, <span class="number">1000</span>, <span class="number">1000</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span>h3_config = Config::new().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::with_configs(<span class="kw-2">&amp;mut </span>config, <span class="kw-2">&amp;</span>h3_config).unwrap();
+        <span class="macro">assert_eq!</span>(s.pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        s.client.send_settings(<span class="kw-2">&amp;mut </span>s.pipe.client).unwrap();
+        <span class="macro">assert_eq!</span>(s.pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Before processing SETTINGS (via poll), HTTP/3 DATAGRAMS are not
+        // enabled.
+        </span><span class="macro">assert!</span>(!s.server.dgram_enabled_by_peer(<span class="kw-2">&amp;</span>s.pipe.server));
+
+        <span class="comment">// When everything is ok, poll returns Done and DATAGRAM is enabled.
+        </span><span class="macro">assert_eq!</span>(s.server.poll(<span class="kw-2">&amp;mut </span>s.pipe.server), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert!</span>(s.server.dgram_enabled_by_peer(<span class="kw-2">&amp;</span>s.pipe.server));
+
+        <span class="comment">// Now detect things on the client
+        </span>s.server.send_settings(<span class="kw-2">&amp;mut </span>s.pipe.server).unwrap();
+        <span class="macro">assert_eq!</span>(s.pipe.advance(), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert!</span>(!s.client.dgram_enabled_by_peer(<span class="kw-2">&amp;</span>s.pipe.client));
+        <span class="macro">assert_eq!</span>(s.client.poll(<span class="kw-2">&amp;mut </span>s.pipe.client), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert!</span>(s.client.dgram_enabled_by_peer(<span class="kw-2">&amp;</span>s.pipe.client));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that receiving a H3_DATAGRAM setting when no TP is set generates
+    /// an error.
+    </span><span class="kw">fn </span>dgram_setting_no_tp() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"h3"</span>]).unwrap();
+        config.set_initial_max_data(<span class="number">70</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">150</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">150</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">150</span>);
+        config.set_initial_max_streams_bidi(<span class="number">100</span>);
+        config.set_initial_max_streams_uni(<span class="number">5</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span>h3_config = Config::new().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::with_configs(<span class="kw-2">&amp;mut </span>config, <span class="kw-2">&amp;</span>h3_config).unwrap();
+        <span class="macro">assert_eq!</span>(s.pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        s.client.control_stream_id = <span class="prelude-val">Some</span>(
+            s.client
+                .open_uni_stream(
+                    <span class="kw-2">&amp;mut </span>s.pipe.client,
+                    stream::HTTP3_CONTROL_STREAM_TYPE_ID,
+                )
+                .unwrap(),
+        );
+
+        <span class="kw">let </span>settings = frame::Frame::Settings {
+            max_field_section_size: <span class="prelude-val">None</span>,
+            qpack_max_table_capacity: <span class="prelude-val">None</span>,
+            qpack_blocked_streams: <span class="prelude-val">None</span>,
+            connect_protocol_enabled: <span class="prelude-val">None</span>,
+            h3_datagram: <span class="prelude-val">Some</span>(<span class="number">1</span>),
+            grease: <span class="prelude-val">None</span>,
+            additional_settings: Default::default(),
+            raw: Default::default(),
+        };
+
+        s.send_frame_client(settings, s.client.control_stream_id.unwrap(), <span class="bool-val">false</span>)
+            .unwrap();
+
+        <span class="macro">assert_eq!</span>(s.pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(s.server.poll(<span class="kw-2">&amp;mut </span>s.pipe.server), <span class="prelude-val">Err</span>(Error::SettingsError));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that receiving SETTINGS with prohibited values generates an error.
+    </span><span class="kw">fn </span>settings_h2_prohibited() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"h3"</span>]).unwrap();
+        config.set_initial_max_data(<span class="number">70</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">150</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">150</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">150</span>);
+        config.set_initial_max_streams_bidi(<span class="number">100</span>);
+        config.set_initial_max_streams_uni(<span class="number">5</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span>h3_config = Config::new().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::with_configs(<span class="kw-2">&amp;mut </span>config, <span class="kw-2">&amp;</span>h3_config).unwrap();
+        <span class="macro">assert_eq!</span>(s.pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        s.client.control_stream_id = <span class="prelude-val">Some</span>(
+            s.client
+                .open_uni_stream(
+                    <span class="kw-2">&amp;mut </span>s.pipe.client,
+                    stream::HTTP3_CONTROL_STREAM_TYPE_ID,
+                )
+                .unwrap(),
+        );
+
+        s.server.control_stream_id = <span class="prelude-val">Some</span>(
+            s.server
+                .open_uni_stream(
+                    <span class="kw-2">&amp;mut </span>s.pipe.server,
+                    stream::HTTP3_CONTROL_STREAM_TYPE_ID,
+                )
+                .unwrap(),
+        );
+
+        <span class="kw">let </span>frame_payload_len = <span class="number">2u64</span>;
+        <span class="kw">let </span>settings = [
+            frame::SETTINGS_FRAME_TYPE_ID <span class="kw">as </span>u8,
+            frame_payload_len <span class="kw">as </span>u8,
+            <span class="number">0x2</span>, <span class="comment">// 0x2 is a reserved setting type
+            </span><span class="number">1</span>,
+        ];
+
+        s.send_arbitrary_stream_data_client(
+            <span class="kw-2">&amp;</span>settings,
+            s.client.control_stream_id.unwrap(),
+            <span class="bool-val">false</span>,
+        )
+        .unwrap();
+
+        s.send_arbitrary_stream_data_server(
+            <span class="kw-2">&amp;</span>settings,
+            s.server.control_stream_id.unwrap(),
+            <span class="bool-val">false</span>,
+        )
+        .unwrap();
+
+        <span class="macro">assert_eq!</span>(s.pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(s.server.poll(<span class="kw-2">&amp;mut </span>s.pipe.server), <span class="prelude-val">Err</span>(Error::SettingsError));
+
+        <span class="macro">assert_eq!</span>(s.client.poll(<span class="kw-2">&amp;mut </span>s.pipe.client), <span class="prelude-val">Err</span>(Error::SettingsError));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that setting SETTINGS with prohibited values generates an error.
+    </span><span class="kw">fn </span>set_prohibited_additional_settings() {
+        <span class="kw">let </span><span class="kw-2">mut </span>h3_config = Config::new().unwrap();
+        <span class="macro">assert_eq!</span>(
+            h3_config.set_additional_settings(<span class="macro">vec!</span>[(
+                frame::SETTINGS_QPACK_MAX_TABLE_CAPACITY,
+                <span class="number">43
+            </span>)]),
+            <span class="prelude-val">Err</span>(Error::SettingsError)
+        );
+        <span class="macro">assert_eq!</span>(
+            h3_config.set_additional_settings(<span class="macro">vec!</span>[(
+                frame::SETTINGS_MAX_FIELD_SECTION_SIZE,
+                <span class="number">43
+            </span>)]),
+            <span class="prelude-val">Err</span>(Error::SettingsError)
+        );
+        <span class="macro">assert_eq!</span>(
+            h3_config.set_additional_settings(<span class="macro">vec!</span>[(
+                frame::SETTINGS_QPACK_BLOCKED_STREAMS,
+                <span class="number">43
+            </span>)]),
+            <span class="prelude-val">Err</span>(Error::SettingsError)
+        );
+        <span class="macro">assert_eq!</span>(
+            h3_config.set_additional_settings(<span class="macro">vec!</span>[(
+                frame::SETTINGS_ENABLE_CONNECT_PROTOCOL,
+                <span class="number">43
+            </span>)]),
+            <span class="prelude-val">Err</span>(Error::SettingsError)
+        );
+        <span class="macro">assert_eq!</span>(
+            h3_config
+                .set_additional_settings(<span class="macro">vec!</span>[(frame::SETTINGS_H3_DATAGRAM, <span class="number">43</span>)]),
+            <span class="prelude-val">Err</span>(Error::SettingsError)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests additional settings are actually exchanged by the peers.
+    </span><span class="kw">fn </span>set_additional_settings() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"h3"</span>]).unwrap();
+        config.set_initial_max_data(<span class="number">70</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">150</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">150</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">150</span>);
+        config.set_initial_max_streams_bidi(<span class="number">100</span>);
+        config.set_initial_max_streams_uni(<span class="number">5</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.grease(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>h3_config = Config::new().unwrap();
+        h3_config
+            .set_additional_settings(<span class="macro">vec!</span>[(<span class="number">42</span>, <span class="number">43</span>), (<span class="number">44</span>, <span class="number">45</span>)])
+            .unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::with_configs(<span class="kw-2">&amp;mut </span>config, <span class="kw-2">&amp;</span>h3_config).unwrap();
+        <span class="macro">assert_eq!</span>(s.pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(s.pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        s.client.send_settings(<span class="kw-2">&amp;mut </span>s.pipe.client).unwrap();
+        <span class="macro">assert_eq!</span>(s.pipe.advance(), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(s.server.poll(<span class="kw-2">&amp;mut </span>s.pipe.server), <span class="prelude-val">Err</span>(Error::Done));
+
+        s.server.send_settings(<span class="kw-2">&amp;mut </span>s.pipe.server).unwrap();
+        <span class="macro">assert_eq!</span>(s.pipe.advance(), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(s.client.poll(<span class="kw-2">&amp;mut </span>s.pipe.client), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(
+            s.server.peer_settings_raw(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[(<span class="number">42</span>, <span class="number">43</span>), (<span class="number">44</span>, <span class="number">45</span>)][..])
+        );
+        <span class="macro">assert_eq!</span>(
+            s.client.peer_settings_raw(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[(<span class="number">42</span>, <span class="number">43</span>), (<span class="number">44</span>, <span class="number">45</span>)][..])
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a single DATAGRAM.
+    </span><span class="kw">fn </span>single_dgram() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="comment">// We'll send default data of 10 bytes on flow ID 0.
+        </span><span class="kw">let </span>result = (<span class="number">11</span>, <span class="number">0</span>, <span class="number">1</span>);
+
+        s.send_dgram_client(<span class="number">0</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(result));
+
+        s.send_dgram_server(<span class="number">0</span>).unwrap();
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_client(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(result));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send multiple DATAGRAMs.
+    </span><span class="kw">fn </span>multiple_dgram() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="comment">// We'll send default data of 10 bytes on flow ID 0.
+        </span><span class="kw">let </span>result = (<span class="number">11</span>, <span class="number">0</span>, <span class="number">1</span>);
+
+        s.send_dgram_client(<span class="number">0</span>).unwrap();
+        s.send_dgram_client(<span class="number">0</span>).unwrap();
+        s.send_dgram_client(<span class="number">0</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(result));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(result));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(result));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+
+        s.send_dgram_server(<span class="number">0</span>).unwrap();
+        s.send_dgram_server(<span class="number">0</span>).unwrap();
+        s.send_dgram_server(<span class="number">0</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_client(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(result));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_client(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(result));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_client(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(result));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_client(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send more DATAGRAMs than the send queue allows.
+    </span><span class="kw">fn </span>multiple_dgram_overflow() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="comment">// We'll send default data of 10 bytes on flow ID 0.
+        </span><span class="kw">let </span>result = (<span class="number">11</span>, <span class="number">0</span>, <span class="number">1</span>);
+
+        <span class="comment">// Five DATAGRAMs
+        </span>s.send_dgram_client(<span class="number">0</span>).unwrap();
+        s.send_dgram_client(<span class="number">0</span>).unwrap();
+        s.send_dgram_client(<span class="number">0</span>).unwrap();
+        s.send_dgram_client(<span class="number">0</span>).unwrap();
+        s.send_dgram_client(<span class="number">0</span>).unwrap();
+
+        <span class="comment">// Only 3 independent DATAGRAMs to read events will fire.
+        </span><span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(result));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(result));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(result));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a single DATAGRAM and request.
+    </span><span class="kw">fn </span>poll_datagram_cycling_no_read() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"h3"</span>]).unwrap();
+        config.set_initial_max_data(<span class="number">1500</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">150</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">150</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">150</span>);
+        config.set_initial_max_streams_bidi(<span class="number">100</span>);
+        config.set_initial_max_streams_uni(<span class="number">5</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.enable_dgram(<span class="bool-val">true</span>, <span class="number">100</span>, <span class="number">100</span>);
+
+        <span class="kw">let </span>h3_config = Config::new().unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::with_configs(<span class="kw-2">&amp;mut </span>config, <span class="kw-2">&amp;</span>h3_config).unwrap();
+        s.handshake().unwrap();
+
+        <span class="comment">// Send request followed by DATAGRAM on client side.
+        </span><span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">false</span>).unwrap();
+
+        s.send_body_client(stream, <span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        s.send_dgram_client(<span class="number">0</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send a single DATAGRAM and request.
+    </span><span class="kw">fn </span>poll_datagram_single_read() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"h3"</span>]).unwrap();
+        config.set_initial_max_data(<span class="number">1500</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">150</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">150</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">150</span>);
+        config.set_initial_max_streams_bidi(<span class="number">100</span>);
+        config.set_initial_max_streams_uni(<span class="number">5</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.enable_dgram(<span class="bool-val">true</span>, <span class="number">100</span>, <span class="number">100</span>);
+
+        <span class="kw">let </span>h3_config = Config::new().unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::with_configs(<span class="kw-2">&amp;mut </span>config, <span class="kw-2">&amp;</span>h3_config).unwrap();
+        s.handshake().unwrap();
+
+        <span class="comment">// We'll send default data of 10 bytes on flow ID 0.
+        </span><span class="kw">let </span>result = (<span class="number">11</span>, <span class="number">0</span>, <span class="number">1</span>);
+
+        <span class="comment">// Send request followed by DATAGRAM on client side.
+        </span><span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>body = s.send_body_client(stream, <span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>recv_buf = <span class="macro">vec!</span>[<span class="number">0</span>; body.len()];
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        s.send_dgram_client(<span class="number">0</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(result));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.recv_body_server(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Send response followed by DATAGRAM on server side
+        </span><span class="kw">let </span>resp = s.send_response(stream, <span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>body = s.send_body_server(stream, <span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>recv_buf = <span class="macro">vec!</span>[<span class="number">0</span>; body.len()];
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: resp,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        s.send_dgram_server(<span class="number">0</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.recv_dgram_client(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(result));
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.recv_body_client(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Send multiple DATAGRAMs and requests.
+    </span><span class="kw">fn </span>poll_datagram_multi_read() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"h3"</span>]).unwrap();
+        config.set_initial_max_data(<span class="number">1500</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">150</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">150</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">150</span>);
+        config.set_initial_max_streams_bidi(<span class="number">100</span>);
+        config.set_initial_max_streams_uni(<span class="number">5</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.enable_dgram(<span class="bool-val">true</span>, <span class="number">100</span>, <span class="number">100</span>);
+
+        <span class="kw">let </span>h3_config = Config::new().unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::with_configs(<span class="kw-2">&amp;mut </span>config, <span class="kw-2">&amp;</span>h3_config).unwrap();
+        s.handshake().unwrap();
+
+        <span class="comment">// 10 bytes on flow ID 0 and 2.
+        </span><span class="kw">let </span>flow_0_result = (<span class="number">11</span>, <span class="number">0</span>, <span class="number">1</span>);
+        <span class="kw">let </span>flow_2_result = (<span class="number">11</span>, <span class="number">2</span>, <span class="number">1</span>);
+
+        <span class="comment">// Send requests followed by DATAGRAMs on client side.
+        </span><span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>body = s.send_body_client(stream, <span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>recv_buf = <span class="macro">vec!</span>[<span class="number">0</span>; body.len()];
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        s.send_dgram_client(<span class="number">0</span>).unwrap();
+        s.send_dgram_client(<span class="number">0</span>).unwrap();
+        s.send_dgram_client(<span class="number">0</span>).unwrap();
+        s.send_dgram_client(<span class="number">0</span>).unwrap();
+        s.send_dgram_client(<span class="number">0</span>).unwrap();
+        s.send_dgram_client(<span class="number">2</span>).unwrap();
+        s.send_dgram_client(<span class="number">2</span>).unwrap();
+        s.send_dgram_client(<span class="number">2</span>).unwrap();
+        s.send_dgram_client(<span class="number">2</span>).unwrap();
+        s.send_dgram_client(<span class="number">2</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Second cycle, start to read
+        </span><span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_0_result));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_0_result));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_0_result));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.recv_body_server(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Third cycle.
+        </span><span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_0_result));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_0_result));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_2_result));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_2_result));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_2_result));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_2_result));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_2_result));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Send response followed by DATAGRAM on server side
+        </span><span class="kw">let </span>resp = s.send_response(stream, <span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>body = s.send_body_server(stream, <span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>recv_buf = <span class="macro">vec!</span>[<span class="number">0</span>; body.len()];
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: resp,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        s.send_dgram_server(<span class="number">0</span>).unwrap();
+        s.send_dgram_server(<span class="number">0</span>).unwrap();
+        s.send_dgram_server(<span class="number">0</span>).unwrap();
+        s.send_dgram_server(<span class="number">0</span>).unwrap();
+        s.send_dgram_server(<span class="number">0</span>).unwrap();
+        s.send_dgram_server(<span class="number">2</span>).unwrap();
+        s.send_dgram_server(<span class="number">2</span>).unwrap();
+        s.send_dgram_server(<span class="number">2</span>).unwrap();
+        s.send_dgram_server(<span class="number">2</span>).unwrap();
+        s.send_dgram_server(<span class="number">2</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Second cycle, start to read
+        </span><span class="macro">assert_eq!</span>(s.recv_dgram_client(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_0_result));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_client(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_0_result));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_client(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_0_result));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.recv_body_client(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Third cycle.
+        </span><span class="macro">assert_eq!</span>(s.recv_dgram_client(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_0_result));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_client(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_0_result));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_client(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_2_result));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_client(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_2_result));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_client(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_2_result));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_client(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_2_result));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_client(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_2_result));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that the Finished event is not issued for streams of unknown type
+    /// (e.g. GREASE).
+    </span><span class="kw">fn </span>finished_is_for_requests() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.client.open_grease_stream(<span class="kw-2">&amp;mut </span>s.pipe.client), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(s.pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that streams are marked as finished only once.
+    </span><span class="kw">fn </span>finished_once() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">false</span>).unwrap();
+        <span class="kw">let </span>body = s.send_body_client(stream, <span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>recv_buf = <span class="macro">vec!</span>[<span class="number">0</span>; body.len()];
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+
+        <span class="macro">assert_eq!</span>(s.recv_body_server(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+
+        <span class="macro">assert_eq!</span>(s.recv_body_server(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that the Data event is properly re-armed.
+    </span><span class="kw">fn </span>data_event_rearm() {
+        <span class="kw">let </span>bytes = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>recv_buf = <span class="macro">vec!</span>[<span class="number">0</span>; bytes.len()];
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        <span class="comment">// Manually send an incomplete DATA frame (i.e. the frame size is longer
+        // than the actual data sent).
+        </span>{
+            <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">10</span>];
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+            b.put_varint(frame::DATA_FRAME_TYPE_ID).unwrap();
+            b.put_varint(bytes.len() <span class="kw">as </span>u64).unwrap();
+            <span class="kw">let </span>off = b.off();
+            s.pipe.client.stream_send(stream, <span class="kw-2">&amp;</span>d[..off], <span class="bool-val">false</span>).unwrap();
+
+            <span class="macro">assert_eq!</span>(
+                s.pipe.client.stream_send(stream, <span class="kw-2">&amp;</span>bytes[..<span class="number">5</span>], <span class="bool-val">false</span>),
+                <span class="prelude-val">Ok</span>(<span class="number">5</span>)
+            );
+
+            s.advance().ok();
+        }
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Read the available body data.
+        </span><span class="macro">assert_eq!</span>(s.recv_body_server(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+
+        <span class="comment">// Send the remaining DATA payload.
+        </span><span class="macro">assert_eq!</span>(s.pipe.client.stream_send(stream, <span class="kw-2">&amp;</span>bytes[<span class="number">5</span>..], <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Read the rest of the body data.
+        </span><span class="macro">assert_eq!</span>(s.recv_body_server(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Send more data.
+        </span><span class="kw">let </span>body = s.send_body_client(stream, <span class="bool-val">false</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.recv_body_server(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+
+        <span class="comment">// Send more data, then HEADERS, then more data.
+        </span><span class="kw">let </span>body = s.send_body_client(stream, <span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>trailers = <span class="macro">vec!</span>[Header::new(<span class="string">b"hello"</span>, <span class="string">b"world"</span>)];
+
+        s.client
+            .send_headers(<span class="kw-2">&amp;mut </span>s.pipe.client, stream, <span class="kw-2">&amp;</span>trailers, <span class="bool-val">false</span>)
+            .unwrap();
+
+        <span class="kw">let </span>ev_trailers = Event::Headers {
+            list: trailers,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        s.advance().ok();
+
+        s.send_body_client(stream, <span class="bool-val">false</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.recv_body_server(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_trailers)));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.recv_body_server(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+
+        <span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        <span class="comment">// Manually send an incomplete DATA frame (i.e. only the header is sent).
+        </span>{
+            <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">10</span>];
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+            b.put_varint(frame::DATA_FRAME_TYPE_ID).unwrap();
+            b.put_varint(bytes.len() <span class="kw">as </span>u64).unwrap();
+            <span class="kw">let </span>off = b.off();
+            s.pipe.client.stream_send(stream, <span class="kw-2">&amp;</span>d[..off], <span class="bool-val">false</span>).unwrap();
+
+            s.advance().ok();
+        }
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.recv_body_server(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.pipe.client.stream_send(stream, <span class="kw-2">&amp;</span>bytes[..<span class="number">5</span>], <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.recv_body_server(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+
+        <span class="macro">assert_eq!</span>(s.pipe.client.stream_send(stream, <span class="kw-2">&amp;</span>bytes[<span class="number">5</span>..], <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        s.advance().ok();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.recv_body_server(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+
+        <span class="comment">// Buffer multiple data frames.
+        </span><span class="kw">let </span>body = s.send_body_client(stream, <span class="bool-val">false</span>).unwrap();
+        s.send_body_client(stream, <span class="bool-val">false</span>).unwrap();
+        s.send_body_client(stream, <span class="bool-val">false</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        {
+            <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">42</span>; <span class="number">10</span>];
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+            b.put_varint(frame::DATA_FRAME_TYPE_ID).unwrap();
+            b.put_varint(<span class="number">0</span>).unwrap();
+            <span class="kw">let </span>off = b.off();
+            s.pipe.client.stream_send(stream, <span class="kw-2">&amp;</span>d[..off], <span class="bool-val">true</span>).unwrap();
+
+            s.advance().ok();
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>recv_buf = <span class="macro">vec!</span>[<span class="number">0</span>; bytes.len() * <span class="number">3</span>];
+
+        <span class="macro">assert_eq!</span>(
+            s.recv_body_server(stream, <span class="kw-2">&amp;mut </span>recv_buf),
+            <span class="prelude-val">Ok</span>(body.len() * <span class="number">3</span>)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that the Datagram event is properly re-armed.
+    </span><span class="kw">fn </span>dgram_event_rearm() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"h3"</span>]).unwrap();
+        config.set_initial_max_data(<span class="number">1500</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">150</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">150</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">150</span>);
+        config.set_initial_max_streams_bidi(<span class="number">100</span>);
+        config.set_initial_max_streams_uni(<span class="number">5</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.enable_dgram(<span class="bool-val">true</span>, <span class="number">100</span>, <span class="number">100</span>);
+
+        <span class="kw">let </span>h3_config = Config::new().unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::with_configs(<span class="kw-2">&amp;mut </span>config, <span class="kw-2">&amp;</span>h3_config).unwrap();
+        s.handshake().unwrap();
+
+        <span class="comment">// 10 bytes on flow ID 0 and 2.
+        </span><span class="kw">let </span>flow_0_result = (<span class="number">11</span>, <span class="number">0</span>, <span class="number">1</span>);
+        <span class="kw">let </span>flow_2_result = (<span class="number">11</span>, <span class="number">2</span>, <span class="number">1</span>);
+
+        <span class="comment">// Send requests followed by DATAGRAMs on client side.
+        </span><span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>body = s.send_body_client(stream, <span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>recv_buf = <span class="macro">vec!</span>[<span class="number">0</span>; body.len()];
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        s.send_dgram_client(<span class="number">0</span>).unwrap();
+        s.send_dgram_client(<span class="number">0</span>).unwrap();
+        s.send_dgram_client(<span class="number">2</span>).unwrap();
+        s.send_dgram_client(<span class="number">2</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Data)));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_0_result));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_0_result));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_2_result));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_2_result));
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        s.send_dgram_client(<span class="number">0</span>).unwrap();
+        s.send_dgram_client(<span class="number">2</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_0_result));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.recv_dgram_server(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(flow_2_result));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(s.recv_body_server(stream, <span class="kw-2">&amp;mut </span>recv_buf), <span class="prelude-val">Ok</span>(body.len()));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>reset_stream() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="comment">// Client sends request.
+        </span><span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        <span class="comment">// Server sends response and closes stream.
+        </span><span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="kw">let </span>resp = s.send_response(stream, <span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: resp,
+            has_body: <span class="bool-val">false</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Client sends RESET_STREAM, closing stream.
+        </span><span class="kw">let </span>frames = [<span class="kw">crate</span>::frame::Frame::ResetStream {
+            stream_id: stream,
+            error_code: <span class="number">42</span>,
+            final_size: <span class="number">68</span>,
+        }];
+
+        <span class="kw">let </span>pkt_type = <span class="kw">crate</span>::packet::Type::Short;
+        <span class="macro">assert_eq!</span>(
+            s.pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Ok</span>(<span class="number">39</span>)
+        );
+
+        <span class="comment">// Server issues Reset event for the stream.
+        </span><span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Reset(<span class="number">42</span>))));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Sending RESET_STREAM again shouldn't trigger another Reset event.
+        </span><span class="macro">assert_eq!</span>(
+            s.pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Ok</span>(<span class="number">39</span>)
+        );
+
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>reset_finished_at_server() {
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="comment">// Client sends HEADERS and doesn't fin
+        </span><span class="kw">let </span>(stream, _req) = s.send_request(<span class="bool-val">false</span>).unwrap();
+
+        <span class="comment">// ..then Client sends RESET_STREAM
+        </span><span class="macro">assert_eq!</span>(
+            s.pipe.client.stream_shutdown(<span class="number">0</span>, <span class="kw">crate</span>::Shutdown::Write, <span class="number">0</span>),
+            <span class="prelude-val">Ok</span>(())
+        );
+
+        <span class="macro">assert_eq!</span>(s.pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server receives just a reset
+        </span><span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Reset(<span class="number">0</span>))));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Client sends HEADERS and fin
+        </span><span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">true</span>).unwrap();
+
+        <span class="comment">// ..then Client sends RESET_STREAM
+        </span><span class="macro">assert_eq!</span>(
+            s.pipe.client.stream_shutdown(<span class="number">4</span>, <span class="kw">crate</span>::Shutdown::Write, <span class="number">0</span>),
+            <span class="prelude-val">Ok</span>(())
+        );
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">false</span>,
+        };
+
+        <span class="comment">// Server receives headers and fin.
+        </span><span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>reset_finished_at_client() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>s = Session::new().unwrap();
+        s.handshake().unwrap();
+
+        <span class="comment">// Client sends HEADERS and doesn't fin
+        </span><span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">true</span>,
+        };
+
+        <span class="comment">// Server receives headers.
+        </span><span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Server sends response and doesn't fin
+        </span>s.send_response(stream, <span class="bool-val">false</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(s.pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// .. then Server sends RESET_STREAM
+        </span><span class="macro">assert_eq!</span>(
+            s.pipe
+                .server
+                .stream_shutdown(stream, <span class="kw">crate</span>::Shutdown::Write, <span class="number">0</span>),
+            <span class="prelude-val">Ok</span>(())
+        );
+
+        <span class="macro">assert_eq!</span>(s.pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client receives Reset only
+        </span><span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Reset(<span class="number">0</span>))));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Client sends headers and fin.
+        </span><span class="kw">let </span>(stream, req) = s.send_request(<span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: req,
+            has_body: <span class="bool-val">false</span>,
+        };
+
+        <span class="comment">// Server receives headers and fin.
+        </span><span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+        <span class="macro">assert_eq!</span>(s.poll_server(), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Server sends response and fin
+        </span><span class="kw">let </span>resp = s.send_response(stream, <span class="bool-val">true</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(s.pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// ..then Server sends RESET_STREAM
+        </span><span class="kw">let </span>frames = [<span class="kw">crate</span>::frame::Frame::ResetStream {
+            stream_id: stream,
+            error_code: <span class="number">42</span>,
+            final_size: <span class="number">68</span>,
+        }];
+
+        <span class="kw">let </span>pkt_type = <span class="kw">crate</span>::packet::Type::Short;
+        <span class="macro">assert_eq!</span>(
+            s.pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Ok</span>(<span class="number">39</span>)
+        );
+
+        <span class="macro">assert_eq!</span>(s.pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>ev_headers = Event::Headers {
+            list: resp,
+            has_body: <span class="bool-val">false</span>,
+        };
+
+        <span class="comment">// Client receives headers and fin.
+        </span><span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, ev_headers)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Ok</span>((stream, Event::Finished)));
+        <span class="macro">assert_eq!</span>(s.poll_client(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+}
+
+<span class="attr">#[cfg(feature = <span class="string">"ffi"</span>)]
+</span><span class="kw">mod </span>ffi;
+<span class="attr">#[cfg(feature = <span class="string">"internal"</span>)]
+#[doc(hidden)]
+</span><span class="kw">pub mod </span>frame;
+<span class="attr">#[cfg(not(feature = <span class="string">"internal"</span>))]
+</span><span class="kw">mod </span>frame;
+<span class="attr">#[doc(hidden)]
+</span><span class="kw">pub mod </span>qpack;
+<span class="kw">mod </span>stream;
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/h3/qpack/decoder.rs.html b/src/quiche/h3/qpack/decoder.rs.html
new file mode 100644
index 0000000..549e140
--- /dev/null
+++ b/src/quiche/h3/qpack/decoder.rs.html
@@ -0,0 +1,587 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/h3/qpack/decoder.rs`."><title>decoder.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../../src-files.js"></script><script defer src="../../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span><span class="kw">super</span>::Error;
+<span class="kw">use </span><span class="kw">super</span>::Result;
+
+<span class="kw">use </span><span class="kw">crate</span>::h3::Header;
+
+<span class="kw">use </span><span class="kw">super</span>::INDEXED;
+<span class="kw">use </span><span class="kw">super</span>::INDEXED_WITH_POST_BASE;
+<span class="kw">use </span><span class="kw">super</span>::LITERAL;
+<span class="kw">use </span><span class="kw">super</span>::LITERAL_WITH_NAME_REF;
+
+<span class="attr">#[derive(Clone, Copy, Debug, PartialEq)]
+</span><span class="kw">enum </span>Representation {
+    Indexed,
+    IndexedWithPostBase,
+    Literal,
+    LiteralWithNameRef,
+    LiteralWithPostBase,
+}
+
+<span class="kw">impl </span>Representation {
+    <span class="kw">pub fn </span>from_byte(b: u8) -&gt; Representation {
+        <span class="kw">if </span>b &amp; INDEXED == INDEXED {
+            <span class="kw">return </span>Representation::Indexed;
+        }
+
+        <span class="kw">if </span>b &amp; LITERAL_WITH_NAME_REF == LITERAL_WITH_NAME_REF {
+            <span class="kw">return </span>Representation::LiteralWithNameRef;
+        }
+
+        <span class="kw">if </span>b &amp; LITERAL == LITERAL {
+            <span class="kw">return </span>Representation::Literal;
+        }
+
+        <span class="kw">if </span>b &amp; INDEXED_WITH_POST_BASE == INDEXED_WITH_POST_BASE {
+            <span class="kw">return </span>Representation::IndexedWithPostBase;
+        }
+
+        Representation::LiteralWithPostBase
+    }
+}
+
+<span class="doccomment">/// A QPACK decoder.
+</span><span class="attr">#[derive(Default)]
+</span><span class="kw">pub struct </span>Decoder {}
+
+<span class="kw">impl </span>Decoder {
+    <span class="doccomment">/// Creates a new QPACK decoder.
+    </span><span class="kw">pub fn </span>new() -&gt; Decoder {
+        Decoder::default()
+    }
+
+    <span class="doccomment">/// Processes control instructions from the encoder.
+    </span><span class="kw">pub fn </span>control(<span class="kw-2">&amp;mut </span><span class="self">self</span>, _buf: <span class="kw-2">&amp;mut </span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="comment">// TODO: process control instructions
+        </span><span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Decodes a QPACK header block into a list of headers.
+    </span><span class="kw">pub fn </span>decode(<span class="kw-2">&amp;mut </span><span class="self">self</span>, buf: <span class="kw-2">&amp;</span>[u8], max_size: u64) -&gt; <span class="prelude-ty">Result</span>&lt;Vec&lt;Header&gt;&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(buf);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>out = Vec::new();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>left = max_size;
+
+        <span class="kw">let </span>req_insert_count = decode_int(<span class="kw-2">&amp;mut </span>b, <span class="number">8</span>)<span class="question-mark">?</span>;
+        <span class="kw">let </span>base = decode_int(<span class="kw-2">&amp;mut </span>b, <span class="number">7</span>)<span class="question-mark">?</span>;
+
+        <span class="macro">trace!</span>(<span class="string">"Header count={} base={}"</span>, req_insert_count, base);
+
+        <span class="kw">while </span>b.cap() &gt; <span class="number">0 </span>{
+            <span class="kw">let </span>first = b.peek_u8()<span class="question-mark">?</span>;
+
+            <span class="kw">match </span>Representation::from_byte(first) {
+                Representation::Indexed =&gt; {
+                    <span class="kw">const </span>STATIC: u8 = <span class="number">0x40</span>;
+
+                    <span class="kw">let </span>s = first &amp; STATIC == STATIC;
+                    <span class="kw">let </span>index = decode_int(<span class="kw-2">&amp;mut </span>b, <span class="number">6</span>)<span class="question-mark">?</span>;
+
+                    <span class="macro">trace!</span>(<span class="string">"Indexed index={} static={}"</span>, index, s);
+
+                    <span class="kw">if </span>!s {
+                        <span class="comment">// TODO: implement dynamic table
+                        </span><span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidHeaderValue);
+                    }
+
+                    <span class="kw">let </span>(name, value) = lookup_static(index)<span class="question-mark">?</span>;
+
+                    left = left
+                        .checked_sub((name.len() + value.len()) <span class="kw">as </span>u64)
+                        .ok_or(Error::HeaderListTooLarge)<span class="question-mark">?</span>;
+
+                    <span class="kw">let </span>hdr = Header::new(name, value);
+                    out.push(hdr);
+                },
+
+                Representation::IndexedWithPostBase =&gt; {
+                    <span class="kw">let </span>index = decode_int(<span class="kw-2">&amp;mut </span>b, <span class="number">4</span>)<span class="question-mark">?</span>;
+
+                    <span class="macro">trace!</span>(<span class="string">"Indexed With Post Base index={}"</span>, index);
+
+                    <span class="comment">// TODO: implement dynamic table
+                    </span><span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidHeaderValue);
+                },
+
+                Representation::Literal =&gt; {
+                    <span class="kw">let </span>name_huff = b.as_ref()[<span class="number">0</span>] &amp; <span class="number">0x08 </span>== <span class="number">0x08</span>;
+                    <span class="kw">let </span>name_len = decode_int(<span class="kw-2">&amp;mut </span>b, <span class="number">3</span>)<span class="question-mark">? </span><span class="kw">as </span>usize;
+
+                    <span class="kw">let </span><span class="kw-2">mut </span>name = b.get_bytes(name_len)<span class="question-mark">?</span>;
+
+                    <span class="kw">let </span>name = <span class="kw">if </span>name_huff {
+                        <span class="kw">super</span>::huffman::decode(<span class="kw-2">&amp;mut </span>name)<span class="question-mark">?
+                    </span>} <span class="kw">else </span>{
+                        name.to_vec()
+                    };
+
+                    <span class="kw">let </span>name = name.to_vec();
+                    <span class="kw">let </span>value = decode_str(<span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>;
+
+                    <span class="macro">trace!</span>(
+                        <span class="string">"Literal Without Name Reference name={:?} value={:?}"</span>,
+                        name,
+                        value,
+                    );
+
+                    left = left
+                        .checked_sub((name.len() + value.len()) <span class="kw">as </span>u64)
+                        .ok_or(Error::HeaderListTooLarge)<span class="question-mark">?</span>;
+
+                    <span class="comment">// Instead of calling Header::new(), create Header directly
+                    // from `name` and `value`, which are already String.
+                    </span><span class="kw">let </span>hdr = Header(name, value);
+                    out.push(hdr);
+                },
+
+                Representation::LiteralWithNameRef =&gt; {
+                    <span class="kw">const </span>STATIC: u8 = <span class="number">0x10</span>;
+
+                    <span class="kw">let </span>s = first &amp; STATIC == STATIC;
+                    <span class="kw">let </span>name_idx = decode_int(<span class="kw-2">&amp;mut </span>b, <span class="number">4</span>)<span class="question-mark">?</span>;
+                    <span class="kw">let </span>value = decode_str(<span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>;
+
+                    <span class="macro">trace!</span>(
+                        <span class="string">"Literal name_idx={} static={} value={:?}"</span>,
+                        name_idx,
+                        s,
+                        value
+                    );
+
+                    <span class="kw">if </span>!s {
+                        <span class="comment">// TODO: implement dynamic table
+                        </span><span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidHeaderValue);
+                    }
+
+                    <span class="kw">let </span>(name, <span class="kw">_</span>) = lookup_static(name_idx)<span class="question-mark">?</span>;
+
+                    left = left
+                        .checked_sub((name.len() + value.len()) <span class="kw">as </span>u64)
+                        .ok_or(Error::HeaderListTooLarge)<span class="question-mark">?</span>;
+
+                    <span class="comment">// Instead of calling Header::new(), create Header directly
+                    // from `value`, which is already String, but clone `name`
+                    // as it is just a reference.
+                    </span><span class="kw">let </span>hdr = Header(name.to_vec(), value);
+                    out.push(hdr);
+                },
+
+                Representation::LiteralWithPostBase =&gt; {
+                    <span class="macro">trace!</span>(<span class="string">"Literal With Post Base"</span>);
+
+                    <span class="comment">// TODO: implement dynamic table
+                    </span><span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidHeaderValue);
+                },
+            }
+        }
+
+        <span class="prelude-val">Ok</span>(out)
+    }
+}
+
+<span class="kw">fn </span>lookup_static(idx: u64) -&gt; <span class="prelude-ty">Result</span>&lt;(<span class="kw-2">&amp;</span><span class="lifetime">'static </span>[u8], <span class="kw-2">&amp;</span><span class="lifetime">'static </span>[u8])&gt; {
+    <span class="kw">if </span>idx &gt;= <span class="kw">super</span>::static_table::STATIC_DECODE_TABLE.len() <span class="kw">as </span>u64 {
+        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidStaticTableIndex);
+    }
+
+    <span class="prelude-val">Ok</span>(<span class="kw">super</span>::static_table::STATIC_DECODE_TABLE[idx <span class="kw">as </span>usize])
+}
+
+<span class="kw">fn </span>decode_int(b: <span class="kw-2">&amp;mut </span>octets::Octets, prefix: usize) -&gt; <span class="prelude-ty">Result</span>&lt;u64&gt; {
+    <span class="kw">let </span>mask = <span class="number">2u64</span>.pow(prefix <span class="kw">as </span>u32) - <span class="number">1</span>;
+
+    <span class="kw">let </span><span class="kw-2">mut </span>val = u64::from(b.get_u8()<span class="question-mark">?</span>);
+    val &amp;= mask;
+
+    <span class="kw">if </span>val &lt; mask {
+        <span class="kw">return </span><span class="prelude-val">Ok</span>(val);
+    }
+
+    <span class="kw">let </span><span class="kw-2">mut </span>shift = <span class="number">0</span>;
+
+    <span class="kw">while </span>b.cap() &gt; <span class="number">0 </span>{
+        <span class="kw">let </span>byte = b.get_u8()<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>inc = u64::from(byte &amp; <span class="number">0x7f</span>)
+            .checked_shl(shift)
+            .ok_or(Error::BufferTooShort)<span class="question-mark">?</span>;
+
+        val = val.checked_add(inc).ok_or(Error::BufferTooShort)<span class="question-mark">?</span>;
+
+        shift += <span class="number">7</span>;
+
+        <span class="kw">if </span>byte &amp; <span class="number">0x80 </span>== <span class="number">0 </span>{
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(val);
+        }
+    }
+
+    <span class="prelude-val">Err</span>(Error::BufferTooShort)
+}
+
+<span class="kw">fn </span>decode_str(b: <span class="kw-2">&amp;mut </span>octets::Octets) -&gt; <span class="prelude-ty">Result</span>&lt;Vec&lt;u8&gt;&gt; {
+    <span class="kw">let </span>first = b.peek_u8()<span class="question-mark">?</span>;
+
+    <span class="kw">let </span>huff = first &amp; <span class="number">0x80 </span>== <span class="number">0x80</span>;
+
+    <span class="kw">let </span>len = decode_int(b, <span class="number">7</span>)<span class="question-mark">? </span><span class="kw">as </span>usize;
+
+    <span class="kw">let </span><span class="kw-2">mut </span>val = b.get_bytes(len)<span class="question-mark">?</span>;
+
+    <span class="kw">let </span>val = <span class="kw">if </span>huff {
+        <span class="kw">super</span>::huffman::decode(<span class="kw-2">&amp;mut </span>val)<span class="question-mark">?
+    </span>} <span class="kw">else </span>{
+        val.to_vec()
+    };
+
+    <span class="prelude-val">Ok</span>(val)
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>decode_int1() {
+        <span class="kw">let </span>encoded = [<span class="number">0b01010</span>, <span class="number">0x02</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>encoded);
+
+        <span class="macro">assert_eq!</span>(decode_int(<span class="kw-2">&amp;mut </span>b, <span class="number">5</span>), <span class="prelude-val">Ok</span>(<span class="number">10</span>));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>decode_int2() {
+        <span class="kw">let </span>encoded = [<span class="number">0b11111</span>, <span class="number">0b10011010</span>, <span class="number">0b00001010</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>encoded);
+
+        <span class="macro">assert_eq!</span>(decode_int(<span class="kw-2">&amp;mut </span>b, <span class="number">5</span>), <span class="prelude-val">Ok</span>(<span class="number">1337</span>));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>decode_int3() {
+        <span class="kw">let </span>encoded = [<span class="number">0b101010</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(<span class="kw-2">&amp;</span>encoded);
+
+        <span class="macro">assert_eq!</span>(decode_int(<span class="kw-2">&amp;mut </span>b, <span class="number">8</span>), <span class="prelude-val">Ok</span>(<span class="number">42</span>));
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/h3/qpack/encoder.rs.html b/src/quiche/h3/qpack/encoder.rs.html
new file mode 100644
index 0000000..361e8b3
--- /dev/null
+++ b/src/quiche/h3/qpack/encoder.rs.html
@@ -0,0 +1,475 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/h3/qpack/encoder.rs`."><title>encoder.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../../src-files.js"></script><script defer src="../../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span><span class="kw">super</span>::Result;
+
+<span class="kw">use </span><span class="kw">crate</span>::h3::NameValue;
+
+<span class="kw">use </span><span class="kw">super</span>::INDEXED;
+<span class="kw">use </span><span class="kw">super</span>::LITERAL;
+<span class="kw">use </span><span class="kw">super</span>::LITERAL_WITH_NAME_REF;
+
+<span class="doccomment">/// A QPACK encoder.
+</span><span class="attr">#[derive(Default)]
+</span><span class="kw">pub struct </span>Encoder {}
+
+<span class="kw">impl </span>Encoder {
+    <span class="doccomment">/// Creates a new QPACK encoder.
+    </span><span class="kw">pub fn </span>new() -&gt; Encoder {
+        Encoder::default()
+    }
+
+    <span class="doccomment">/// Encodes a list of headers into a QPACK header block.
+    </span><span class="kw">pub fn </span>encode&lt;T: NameValue&gt;(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, headers: <span class="kw-2">&amp;</span>[T], out: <span class="kw-2">&amp;mut </span>[u8],
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(out);
+
+        <span class="comment">// Required Insert Count.
+        </span>encode_int(<span class="number">0</span>, <span class="number">0</span>, <span class="number">8</span>, <span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>;
+
+        <span class="comment">// Base.
+        </span>encode_int(<span class="number">0</span>, <span class="number">0</span>, <span class="number">7</span>, <span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>;
+
+        <span class="kw">for </span>h <span class="kw">in </span>headers {
+            <span class="kw">match </span>lookup_static(h) {
+                <span class="prelude-val">Some</span>((idx, <span class="bool-val">true</span>)) =&gt; {
+                    <span class="kw">const </span>STATIC: u8 = <span class="number">0x40</span>;
+
+                    <span class="comment">// Encode as statically indexed.
+                    </span>encode_int(idx, INDEXED | STATIC, <span class="number">6</span>, <span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>;
+                },
+
+                <span class="prelude-val">Some</span>((idx, <span class="bool-val">false</span>)) =&gt; {
+                    <span class="kw">const </span>STATIC: u8 = <span class="number">0x10</span>;
+
+                    <span class="comment">// Encode value as literal with static name reference.
+                    </span>encode_int(idx, LITERAL_WITH_NAME_REF | STATIC, <span class="number">4</span>, <span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>;
+                    encode_str::&lt;<span class="bool-val">false</span>&gt;(h.value(), <span class="number">0</span>, <span class="number">7</span>, <span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>;
+                },
+
+                <span class="prelude-val">None </span>=&gt; {
+                    <span class="comment">// Encode as fully literal.
+
+                    </span>encode_str::&lt;<span class="bool-val">true</span>&gt;(h.name(), LITERAL, <span class="number">3</span>, <span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>;
+                    encode_str::&lt;<span class="bool-val">false</span>&gt;(h.value(), <span class="number">0</span>, <span class="number">7</span>, <span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>;
+                },
+            };
+        }
+
+        <span class="prelude-val">Ok</span>(b.off())
+    }
+}
+
+<span class="kw">fn </span>lookup_static&lt;T: NameValue&gt;(h: <span class="kw-2">&amp;</span>T) -&gt; <span class="prelude-ty">Option</span>&lt;(u64, bool)&gt; {
+    <span class="comment">// Fetch the right encoding table for this header length.
+    </span><span class="kw">let </span>table_for_len =
+        <span class="kw">super</span>::static_table::STATIC_ENCODE_TABLE.get(h.name().len())<span class="question-mark">?</span>;
+
+    <span class="comment">// Similar to [`eq_ignore_ascii_case`], but only lowercases the second
+    // operand, as the entries in the table are already lower cased.
+    </span><span class="kw">let </span>cmp_lowercase = |a: <span class="kw-2">&amp;</span>[u8], b: <span class="kw-2">&amp;</span>[u8]| {
+        std::iter::zip(a, b).all(|(a, b)| a.eq(<span class="kw-2">&amp;</span>b.to_ascii_lowercase()))
+    };
+
+    <span class="kw">for </span>(name, values) <span class="kw">in </span>table_for_len.iter() {
+        <span class="comment">// Match header name first.
+        </span><span class="kw">if </span>cmp_lowercase(name, h.name()) {
+            <span class="comment">// Second iterate over possible values for the header.
+            </span><span class="kw">for </span>(value, enc) <span class="kw">in </span>values.iter() {
+                <span class="comment">// Match header value.
+                </span><span class="kw">if </span>value.is_empty() {
+                    <span class="kw">return </span><span class="prelude-val">Some</span>((<span class="kw-2">*</span>enc, <span class="bool-val">false</span>));
+                }
+
+                <span class="kw">if </span>h.value() == <span class="kw-2">*</span>value {
+                    <span class="kw">return </span><span class="prelude-val">Some</span>((<span class="kw-2">*</span>enc, <span class="bool-val">true</span>));
+                }
+            }
+            <span class="comment">// Only matched the header, not the value.
+            </span><span class="kw">return </span><span class="prelude-val">Some</span>((values.first()<span class="question-mark">?</span>.<span class="number">1</span>, <span class="bool-val">false</span>));
+        }
+    }
+
+    <span class="prelude-val">None
+</span>}
+
+<span class="kw">fn </span>encode_int(
+    <span class="kw-2">mut </span>v: u64, first: u8, prefix: usize, b: <span class="kw-2">&amp;mut </span>octets::OctetsMut,
+) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+    <span class="kw">let </span>mask = <span class="number">2u64</span>.pow(prefix <span class="kw">as </span>u32) - <span class="number">1</span>;
+
+    <span class="comment">// Encode I on N bits.
+    </span><span class="kw">if </span>v &lt; mask {
+        b.put_u8(first | v <span class="kw">as </span>u8)<span class="question-mark">?</span>;
+        <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+    }
+
+    <span class="comment">// Encode (2^N - 1) on N bits.
+    </span>b.put_u8(first | mask <span class="kw">as </span>u8)<span class="question-mark">?</span>;
+
+    v -= mask;
+
+    <span class="kw">while </span>v &gt;= <span class="number">128 </span>{
+        <span class="comment">// Encode (I % 128 + 128) on 8 bits.
+        </span>b.put_u8((v % <span class="number">128 </span>+ <span class="number">128</span>) <span class="kw">as </span>u8)<span class="question-mark">?</span>;
+
+        v &gt;&gt;= <span class="number">7</span>;
+    }
+
+    <span class="comment">// Encode I on 8 bits.
+    </span>b.put_u8(v <span class="kw">as </span>u8)<span class="question-mark">?</span>;
+
+    <span class="prelude-val">Ok</span>(())
+}
+
+<span class="attr">#[inline]
+</span><span class="kw">fn </span>encode_str&lt;<span class="kw">const </span>LOWER_CASE: bool&gt;(
+    v: <span class="kw-2">&amp;</span>[u8], first: u8, prefix: usize, b: <span class="kw-2">&amp;mut </span>octets::OctetsMut,
+) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+    <span class="comment">// Huffman-encoding generally saves space but in some cases it doesn't, for
+    // those just encode the literal string.
+    </span><span class="kw">match </span><span class="kw">super</span>::huffman::encode_output_length::&lt;LOWER_CASE&gt;(v) {
+        <span class="prelude-val">Ok</span>(len) =&gt; {
+            encode_int(len <span class="kw">as </span>u64, first | <span class="number">1 </span>&lt;&lt; prefix, prefix, b)<span class="question-mark">?</span>;
+            <span class="kw">super</span>::huffman::encode::&lt;LOWER_CASE&gt;(v, b)<span class="question-mark">?</span>;
+        },
+
+        <span class="prelude-val">Err</span>(<span class="kw">super</span>::Error::InflatedHuffmanEncoding) =&gt; {
+            encode_int(v.len() <span class="kw">as </span>u64, first, prefix, b)<span class="question-mark">?</span>;
+            <span class="kw">if </span>LOWER_CASE {
+                b.put_bytes(<span class="kw-2">&amp;</span>v.to_ascii_lowercase())<span class="question-mark">?</span>;
+            } <span class="kw">else </span>{
+                b.put_bytes(v)<span class="question-mark">?</span>;
+            }
+        },
+
+        <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+    }
+
+    <span class="prelude-val">Ok</span>(())
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>encode_int1() {
+        <span class="kw">let </span>expected = [<span class="number">0b01010</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>encoded = [<span class="number">0</span>; <span class="number">1</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>encoded);
+
+        <span class="macro">assert!</span>(encode_int(<span class="number">10</span>, <span class="number">0</span>, <span class="number">5</span>, <span class="kw-2">&amp;mut </span>b).is_ok());
+
+        <span class="macro">assert_eq!</span>(expected, encoded);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>encode_int2() {
+        <span class="kw">let </span>expected = [<span class="number">0b11111</span>, <span class="number">0b10011010</span>, <span class="number">0b00001010</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>encoded = [<span class="number">0</span>; <span class="number">3</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>encoded);
+
+        <span class="macro">assert!</span>(encode_int(<span class="number">1337</span>, <span class="number">0</span>, <span class="number">5</span>, <span class="kw-2">&amp;mut </span>b).is_ok());
+
+        <span class="macro">assert_eq!</span>(expected, encoded);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>encode_int3() {
+        <span class="kw">let </span>expected = [<span class="number">0b101010</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>encoded = [<span class="number">0</span>; <span class="number">1</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>encoded);
+
+        <span class="macro">assert!</span>(encode_int(<span class="number">42</span>, <span class="number">0</span>, <span class="number">8</span>, <span class="kw-2">&amp;mut </span>b).is_ok());
+
+        <span class="macro">assert_eq!</span>(expected, encoded);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>encode_static_header() {
+        <span class="kw">let </span><span class="kw-2">mut </span>encoded = [<span class="number">0</span>; <span class="number">3</span>];
+        Encoder::default()
+            .encode(<span class="kw-2">&amp;</span>[(<span class="string">b":method"</span>, <span class="string">b"GET"</span>)], <span class="kw-2">&amp;mut </span>encoded)
+            .unwrap();
+        <span class="macro">assert_eq!</span>(encoded, [<span class="number">0</span>, <span class="number">0</span>, INDEXED | <span class="number">0x40 </span>| <span class="number">17</span>]);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>encode_static_header_name_only() {
+        <span class="kw">let </span><span class="kw-2">mut </span>encoded = [<span class="number">0</span>; <span class="number">11</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>expected = [<span class="number">0</span>; <span class="number">11</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>expected[..]);
+        buf.put_u16(<span class="number">0</span>).unwrap();
+        buf.put_u8(LITERAL_WITH_NAME_REF | <span class="number">0x10 </span>| <span class="number">15</span>).unwrap();
+        buf.put_u8(<span class="number">0</span>).unwrap();
+        encode_str::&lt;<span class="bool-val">false</span>&gt;(<span class="string">b"FORGET"</span>, <span class="number">0</span>, <span class="number">7</span>, <span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        Encoder::default()
+            .encode(<span class="kw-2">&amp;</span>[(<span class="string">b":method"</span>, <span class="string">b"FORGET"</span>)], <span class="kw-2">&amp;mut </span>encoded)
+            .unwrap();
+        <span class="macro">assert_eq!</span>(encoded, expected);
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/h3/qpack/huffman/mod.rs.html b/src/quiche/h3/qpack/huffman/mod.rs.html
new file mode 100644
index 0000000..45de26b
--- /dev/null
+++ b/src/quiche/h3/qpack/huffman/mod.rs.html
@@ -0,0 +1,371 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/h3/qpack/huffman/mod.rs`."><title>mod.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../../../" data-static-root-path="../../../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../../../src-files.js"></script><script defer src="../../../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span><span class="kw">super</span>::Error;
+<span class="kw">use </span><span class="kw">super</span>::Result;
+
+<span class="kw">use </span><span class="self">self</span>::table::DECODE_TABLE;
+<span class="kw">use </span><span class="self">self</span>::table::ENCODE_TABLE;
+
+<span class="kw">pub fn </span>decode(b: <span class="kw-2">&amp;mut </span>octets::Octets) -&gt; <span class="prelude-ty">Result</span>&lt;Vec&lt;u8&gt;&gt; {
+    <span class="comment">// Max compression ratio is &gt;= 0.5
+    </span><span class="kw">let </span><span class="kw-2">mut </span>out = Vec::with_capacity(b.len() &lt;&lt; <span class="number">1</span>);
+
+    <span class="kw">let </span><span class="kw-2">mut </span>decoder = Decoder::new();
+
+    <span class="kw">while </span>b.cap() &gt; <span class="number">0 </span>{
+        <span class="kw">let </span>byte = b.get_u8()<span class="question-mark">?</span>;
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(b) = decoder.decode4(byte &gt;&gt; <span class="number">4</span>)<span class="question-mark">? </span>{
+            out.push(b);
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(b) = decoder.decode4(byte &amp; <span class="number">0xf</span>)<span class="question-mark">? </span>{
+            out.push(b);
+        }
+    }
+
+    <span class="kw">if </span>!decoder.is_final() {
+        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidHuffmanEncoding);
+    }
+
+    <span class="prelude-val">Ok</span>(out)
+}
+
+<span class="kw">pub fn </span>encode&lt;<span class="kw">const </span>LOWER_CASE: bool&gt;(
+    src: <span class="kw-2">&amp;</span>[u8], out: <span class="kw-2">&amp;mut </span>octets::OctetsMut,
+) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+    <span class="kw">let </span><span class="kw-2">mut </span>bits: u64 = <span class="number">0</span>;
+    <span class="kw">let </span><span class="kw-2">mut </span>pending = <span class="number">0</span>;
+
+    <span class="kw">for </span><span class="kw-2">&amp;</span>b <span class="kw">in </span>src {
+        <span class="kw">let </span>b = <span class="kw">if </span>LOWER_CASE {
+            b.to_ascii_lowercase()
+        } <span class="kw">else </span>{
+            b
+        };
+        <span class="kw">let </span>(nbits, code) = ENCODE_TABLE[b <span class="kw">as </span>usize];
+
+        pending += nbits;
+
+        <span class="kw">if </span>pending &lt; <span class="number">64 </span>{
+            <span class="comment">// Have room for the new token
+            </span>bits |= code &lt;&lt; (<span class="number">64 </span>- pending);
+            <span class="kw">continue</span>;
+        }
+
+        pending -= <span class="number">64</span>;
+        <span class="comment">// Take only the bits that fit
+        </span>bits |= code &gt;&gt; pending;
+        out.put_u64(bits)<span class="question-mark">?</span>;
+
+        bits = <span class="kw">if </span>pending == <span class="number">0 </span>{
+            <span class="number">0
+        </span>} <span class="kw">else </span>{
+            code &lt;&lt; (<span class="number">64 </span>- pending)
+        };
+    }
+
+    <span class="kw">if </span>pending == <span class="number">0 </span>{
+        <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+    }
+
+    bits |= u64::MAX &gt;&gt; pending;
+    <span class="comment">// TODO: replace with `next_multiple_of(8)` when stable
+    </span>pending = (pending + <span class="number">7</span>) &amp; !<span class="number">7</span>; <span class="comment">// Round up to a byte
+    </span>bits &gt;&gt;= <span class="number">64 </span>- pending;
+
+    <span class="kw">if </span>pending &gt;= <span class="number">32 </span>{
+        pending -= <span class="number">32</span>;
+        out.put_u32((bits &gt;&gt; pending) <span class="kw">as </span>u32)<span class="question-mark">?</span>;
+    }
+
+    <span class="kw">while </span>pending &gt; <span class="number">0 </span>{
+        pending -= <span class="number">8</span>;
+        out.put_u8((bits &gt;&gt; pending) <span class="kw">as </span>u8)<span class="question-mark">?</span>;
+    }
+
+    <span class="prelude-val">Ok</span>(())
+}
+
+<span class="kw">pub fn </span>encode_output_length&lt;<span class="kw">const </span>LOWER_CASE: bool&gt;(src: <span class="kw-2">&amp;</span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+    <span class="kw">let </span><span class="kw-2">mut </span>bits: usize = <span class="number">0</span>;
+
+    <span class="kw">for </span><span class="kw-2">&amp;</span>b <span class="kw">in </span>src {
+        <span class="kw">let </span>b = <span class="kw">if </span>LOWER_CASE {
+            b.to_ascii_lowercase()
+        } <span class="kw">else </span>{
+            b
+        };
+
+        <span class="kw">let </span>(nbits, <span class="kw">_</span>) = ENCODE_TABLE[b <span class="kw">as </span>usize];
+        bits += nbits;
+    }
+
+    <span class="kw">let </span><span class="kw-2">mut </span>len = bits / <span class="number">8</span>;
+
+    <span class="kw">if </span>bits &amp; <span class="number">7 </span>!= <span class="number">0 </span>{
+        len += <span class="number">1</span>;
+    }
+
+    <span class="kw">if </span>len &gt; src.len() {
+        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InflatedHuffmanEncoding);
+    }
+
+    <span class="prelude-val">Ok</span>(len)
+}
+
+<span class="kw">struct </span>Decoder {
+    state: usize,
+    maybe_eos: bool,
+}
+
+<span class="kw">impl </span>Decoder {
+    <span class="kw">fn </span>new() -&gt; Decoder {
+        Decoder {
+            state: <span class="number">0</span>,
+            maybe_eos: <span class="bool-val">false</span>,
+        }
+    }
+
+    <span class="comment">// Decodes 4 bits
+    </span><span class="kw">fn </span>decode4(<span class="kw-2">&amp;mut </span><span class="self">self</span>, input: u8) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="prelude-ty">Option</span>&lt;u8&gt;&gt; {
+        <span class="kw">const </span>MAYBE_EOS: u8 = <span class="number">1</span>;
+        <span class="kw">const </span>DECODED: u8 = <span class="number">2</span>;
+        <span class="kw">const </span>ERROR: u8 = <span class="number">4</span>;
+
+        <span class="comment">// (next-state, byte, flags)
+        </span><span class="kw">let </span>(next, byte, flags) = DECODE_TABLE[<span class="self">self</span>.state][input <span class="kw">as </span>usize];
+
+        <span class="kw">if </span>flags &amp; ERROR == ERROR {
+            <span class="comment">// Data followed the EOS marker
+            </span><span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidHuffmanEncoding);
+        }
+
+        <span class="kw">let </span>ret = <span class="kw">if </span>flags &amp; DECODED == DECODED {
+            <span class="prelude-val">Some</span>(byte)
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="self">self</span>.state = next;
+        <span class="self">self</span>.maybe_eos = flags &amp; MAYBE_EOS == MAYBE_EOS;
+
+        <span class="prelude-val">Ok</span>(ret)
+    }
+
+    <span class="kw">fn </span>is_final(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.state == <span class="number">0 </span>|| <span class="self">self</span>.maybe_eos
+    }
+}
+
+<span class="kw">mod </span>table;
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/h3/qpack/huffman/table.rs.html b/src/quiche/h3/qpack/huffman/table.rs.html
new file mode 100644
index 0000000..04865f7
--- /dev/null
+++ b/src/quiche/h3/qpack/huffman/table.rs.html
@@ -0,0 +1,10257 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/h3/qpack/huffman/table.rs`."><title>table.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../../../" data-static-root-path="../../../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../../../src-files.js"></script><script defer src="../../../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+<a href="#1217" id="1217">1217</a>
+<a href="#1218" id="1218">1218</a>
+<a href="#1219" id="1219">1219</a>
+<a href="#1220" id="1220">1220</a>
+<a href="#1221" id="1221">1221</a>
+<a href="#1222" id="1222">1222</a>
+<a href="#1223" id="1223">1223</a>
+<a href="#1224" id="1224">1224</a>
+<a href="#1225" id="1225">1225</a>
+<a href="#1226" id="1226">1226</a>
+<a href="#1227" id="1227">1227</a>
+<a href="#1228" id="1228">1228</a>
+<a href="#1229" id="1229">1229</a>
+<a href="#1230" id="1230">1230</a>
+<a href="#1231" id="1231">1231</a>
+<a href="#1232" id="1232">1232</a>
+<a href="#1233" id="1233">1233</a>
+<a href="#1234" id="1234">1234</a>
+<a href="#1235" id="1235">1235</a>
+<a href="#1236" id="1236">1236</a>
+<a href="#1237" id="1237">1237</a>
+<a href="#1238" id="1238">1238</a>
+<a href="#1239" id="1239">1239</a>
+<a href="#1240" id="1240">1240</a>
+<a href="#1241" id="1241">1241</a>
+<a href="#1242" id="1242">1242</a>
+<a href="#1243" id="1243">1243</a>
+<a href="#1244" id="1244">1244</a>
+<a href="#1245" id="1245">1245</a>
+<a href="#1246" id="1246">1246</a>
+<a href="#1247" id="1247">1247</a>
+<a href="#1248" id="1248">1248</a>
+<a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</a>
+<a href="#1259" id="1259">1259</a>
+<a href="#1260" id="1260">1260</a>
+<a href="#1261" id="1261">1261</a>
+<a href="#1262" id="1262">1262</a>
+<a href="#1263" id="1263">1263</a>
+<a href="#1264" id="1264">1264</a>
+<a href="#1265" id="1265">1265</a>
+<a href="#1266" id="1266">1266</a>
+<a href="#1267" id="1267">1267</a>
+<a href="#1268" id="1268">1268</a>
+<a href="#1269" id="1269">1269</a>
+<a href="#1270" id="1270">1270</a>
+<a href="#1271" id="1271">1271</a>
+<a href="#1272" id="1272">1272</a>
+<a href="#1273" id="1273">1273</a>
+<a href="#1274" id="1274">1274</a>
+<a href="#1275" id="1275">1275</a>
+<a href="#1276" id="1276">1276</a>
+<a href="#1277" id="1277">1277</a>
+<a href="#1278" id="1278">1278</a>
+<a href="#1279" id="1279">1279</a>
+<a href="#1280" id="1280">1280</a>
+<a href="#1281" id="1281">1281</a>
+<a href="#1282" id="1282">1282</a>
+<a href="#1283" id="1283">1283</a>
+<a href="#1284" id="1284">1284</a>
+<a href="#1285" id="1285">1285</a>
+<a href="#1286" id="1286">1286</a>
+<a href="#1287" id="1287">1287</a>
+<a href="#1288" id="1288">1288</a>
+<a href="#1289" id="1289">1289</a>
+<a href="#1290" id="1290">1290</a>
+<a href="#1291" id="1291">1291</a>
+<a href="#1292" id="1292">1292</a>
+<a href="#1293" id="1293">1293</a>
+<a href="#1294" id="1294">1294</a>
+<a href="#1295" id="1295">1295</a>
+<a href="#1296" id="1296">1296</a>
+<a href="#1297" id="1297">1297</a>
+<a href="#1298" id="1298">1298</a>
+<a href="#1299" id="1299">1299</a>
+<a href="#1300" id="1300">1300</a>
+<a href="#1301" id="1301">1301</a>
+<a href="#1302" id="1302">1302</a>
+<a href="#1303" id="1303">1303</a>
+<a href="#1304" id="1304">1304</a>
+<a href="#1305" id="1305">1305</a>
+<a href="#1306" id="1306">1306</a>
+<a href="#1307" id="1307">1307</a>
+<a href="#1308" id="1308">1308</a>
+<a href="#1309" id="1309">1309</a>
+<a href="#1310" id="1310">1310</a>
+<a href="#1311" id="1311">1311</a>
+<a href="#1312" id="1312">1312</a>
+<a href="#1313" id="1313">1313</a>
+<a href="#1314" id="1314">1314</a>
+<a href="#1315" id="1315">1315</a>
+<a href="#1316" id="1316">1316</a>
+<a href="#1317" id="1317">1317</a>
+<a href="#1318" id="1318">1318</a>
+<a href="#1319" id="1319">1319</a>
+<a href="#1320" id="1320">1320</a>
+<a href="#1321" id="1321">1321</a>
+<a href="#1322" id="1322">1322</a>
+<a href="#1323" id="1323">1323</a>
+<a href="#1324" id="1324">1324</a>
+<a href="#1325" id="1325">1325</a>
+<a href="#1326" id="1326">1326</a>
+<a href="#1327" id="1327">1327</a>
+<a href="#1328" id="1328">1328</a>
+<a href="#1329" id="1329">1329</a>
+<a href="#1330" id="1330">1330</a>
+<a href="#1331" id="1331">1331</a>
+<a href="#1332" id="1332">1332</a>
+<a href="#1333" id="1333">1333</a>
+<a href="#1334" id="1334">1334</a>
+<a href="#1335" id="1335">1335</a>
+<a href="#1336" id="1336">1336</a>
+<a href="#1337" id="1337">1337</a>
+<a href="#1338" id="1338">1338</a>
+<a href="#1339" id="1339">1339</a>
+<a href="#1340" id="1340">1340</a>
+<a href="#1341" id="1341">1341</a>
+<a href="#1342" id="1342">1342</a>
+<a href="#1343" id="1343">1343</a>
+<a href="#1344" id="1344">1344</a>
+<a href="#1345" id="1345">1345</a>
+<a href="#1346" id="1346">1346</a>
+<a href="#1347" id="1347">1347</a>
+<a href="#1348" id="1348">1348</a>
+<a href="#1349" id="1349">1349</a>
+<a href="#1350" id="1350">1350</a>
+<a href="#1351" id="1351">1351</a>
+<a href="#1352" id="1352">1352</a>
+<a href="#1353" id="1353">1353</a>
+<a href="#1354" id="1354">1354</a>
+<a href="#1355" id="1355">1355</a>
+<a href="#1356" id="1356">1356</a>
+<a href="#1357" id="1357">1357</a>
+<a href="#1358" id="1358">1358</a>
+<a href="#1359" id="1359">1359</a>
+<a href="#1360" id="1360">1360</a>
+<a href="#1361" id="1361">1361</a>
+<a href="#1362" id="1362">1362</a>
+<a href="#1363" id="1363">1363</a>
+<a href="#1364" id="1364">1364</a>
+<a href="#1365" id="1365">1365</a>
+<a href="#1366" id="1366">1366</a>
+<a href="#1367" id="1367">1367</a>
+<a href="#1368" id="1368">1368</a>
+<a href="#1369" id="1369">1369</a>
+<a href="#1370" id="1370">1370</a>
+<a href="#1371" id="1371">1371</a>
+<a href="#1372" id="1372">1372</a>
+<a href="#1373" id="1373">1373</a>
+<a href="#1374" id="1374">1374</a>
+<a href="#1375" id="1375">1375</a>
+<a href="#1376" id="1376">1376</a>
+<a href="#1377" id="1377">1377</a>
+<a href="#1378" id="1378">1378</a>
+<a href="#1379" id="1379">1379</a>
+<a href="#1380" id="1380">1380</a>
+<a href="#1381" id="1381">1381</a>
+<a href="#1382" id="1382">1382</a>
+<a href="#1383" id="1383">1383</a>
+<a href="#1384" id="1384">1384</a>
+<a href="#1385" id="1385">1385</a>
+<a href="#1386" id="1386">1386</a>
+<a href="#1387" id="1387">1387</a>
+<a href="#1388" id="1388">1388</a>
+<a href="#1389" id="1389">1389</a>
+<a href="#1390" id="1390">1390</a>
+<a href="#1391" id="1391">1391</a>
+<a href="#1392" id="1392">1392</a>
+<a href="#1393" id="1393">1393</a>
+<a href="#1394" id="1394">1394</a>
+<a href="#1395" id="1395">1395</a>
+<a href="#1396" id="1396">1396</a>
+<a href="#1397" id="1397">1397</a>
+<a href="#1398" id="1398">1398</a>
+<a href="#1399" id="1399">1399</a>
+<a href="#1400" id="1400">1400</a>
+<a href="#1401" id="1401">1401</a>
+<a href="#1402" id="1402">1402</a>
+<a href="#1403" id="1403">1403</a>
+<a href="#1404" id="1404">1404</a>
+<a href="#1405" id="1405">1405</a>
+<a href="#1406" id="1406">1406</a>
+<a href="#1407" id="1407">1407</a>
+<a href="#1408" id="1408">1408</a>
+<a href="#1409" id="1409">1409</a>
+<a href="#1410" id="1410">1410</a>
+<a href="#1411" id="1411">1411</a>
+<a href="#1412" id="1412">1412</a>
+<a href="#1413" id="1413">1413</a>
+<a href="#1414" id="1414">1414</a>
+<a href="#1415" id="1415">1415</a>
+<a href="#1416" id="1416">1416</a>
+<a href="#1417" id="1417">1417</a>
+<a href="#1418" id="1418">1418</a>
+<a href="#1419" id="1419">1419</a>
+<a href="#1420" id="1420">1420</a>
+<a href="#1421" id="1421">1421</a>
+<a href="#1422" id="1422">1422</a>
+<a href="#1423" id="1423">1423</a>
+<a href="#1424" id="1424">1424</a>
+<a href="#1425" id="1425">1425</a>
+<a href="#1426" id="1426">1426</a>
+<a href="#1427" id="1427">1427</a>
+<a href="#1428" id="1428">1428</a>
+<a href="#1429" id="1429">1429</a>
+<a href="#1430" id="1430">1430</a>
+<a href="#1431" id="1431">1431</a>
+<a href="#1432" id="1432">1432</a>
+<a href="#1433" id="1433">1433</a>
+<a href="#1434" id="1434">1434</a>
+<a href="#1435" id="1435">1435</a>
+<a href="#1436" id="1436">1436</a>
+<a href="#1437" id="1437">1437</a>
+<a href="#1438" id="1438">1438</a>
+<a href="#1439" id="1439">1439</a>
+<a href="#1440" id="1440">1440</a>
+<a href="#1441" id="1441">1441</a>
+<a href="#1442" id="1442">1442</a>
+<a href="#1443" id="1443">1443</a>
+<a href="#1444" id="1444">1444</a>
+<a href="#1445" id="1445">1445</a>
+<a href="#1446" id="1446">1446</a>
+<a href="#1447" id="1447">1447</a>
+<a href="#1448" id="1448">1448</a>
+<a href="#1449" id="1449">1449</a>
+<a href="#1450" id="1450">1450</a>
+<a href="#1451" id="1451">1451</a>
+<a href="#1452" id="1452">1452</a>
+<a href="#1453" id="1453">1453</a>
+<a href="#1454" id="1454">1454</a>
+<a href="#1455" id="1455">1455</a>
+<a href="#1456" id="1456">1456</a>
+<a href="#1457" id="1457">1457</a>
+<a href="#1458" id="1458">1458</a>
+<a href="#1459" id="1459">1459</a>
+<a href="#1460" id="1460">1460</a>
+<a href="#1461" id="1461">1461</a>
+<a href="#1462" id="1462">1462</a>
+<a href="#1463" id="1463">1463</a>
+<a href="#1464" id="1464">1464</a>
+<a href="#1465" id="1465">1465</a>
+<a href="#1466" id="1466">1466</a>
+<a href="#1467" id="1467">1467</a>
+<a href="#1468" id="1468">1468</a>
+<a href="#1469" id="1469">1469</a>
+<a href="#1470" id="1470">1470</a>
+<a href="#1471" id="1471">1471</a>
+<a href="#1472" id="1472">1472</a>
+<a href="#1473" id="1473">1473</a>
+<a href="#1474" id="1474">1474</a>
+<a href="#1475" id="1475">1475</a>
+<a href="#1476" id="1476">1476</a>
+<a href="#1477" id="1477">1477</a>
+<a href="#1478" id="1478">1478</a>
+<a href="#1479" id="1479">1479</a>
+<a href="#1480" id="1480">1480</a>
+<a href="#1481" id="1481">1481</a>
+<a href="#1482" id="1482">1482</a>
+<a href="#1483" id="1483">1483</a>
+<a href="#1484" id="1484">1484</a>
+<a href="#1485" id="1485">1485</a>
+<a href="#1486" id="1486">1486</a>
+<a href="#1487" id="1487">1487</a>
+<a href="#1488" id="1488">1488</a>
+<a href="#1489" id="1489">1489</a>
+<a href="#1490" id="1490">1490</a>
+<a href="#1491" id="1491">1491</a>
+<a href="#1492" id="1492">1492</a>
+<a href="#1493" id="1493">1493</a>
+<a href="#1494" id="1494">1494</a>
+<a href="#1495" id="1495">1495</a>
+<a href="#1496" id="1496">1496</a>
+<a href="#1497" id="1497">1497</a>
+<a href="#1498" id="1498">1498</a>
+<a href="#1499" id="1499">1499</a>
+<a href="#1500" id="1500">1500</a>
+<a href="#1501" id="1501">1501</a>
+<a href="#1502" id="1502">1502</a>
+<a href="#1503" id="1503">1503</a>
+<a href="#1504" id="1504">1504</a>
+<a href="#1505" id="1505">1505</a>
+<a href="#1506" id="1506">1506</a>
+<a href="#1507" id="1507">1507</a>
+<a href="#1508" id="1508">1508</a>
+<a href="#1509" id="1509">1509</a>
+<a href="#1510" id="1510">1510</a>
+<a href="#1511" id="1511">1511</a>
+<a href="#1512" id="1512">1512</a>
+<a href="#1513" id="1513">1513</a>
+<a href="#1514" id="1514">1514</a>
+<a href="#1515" id="1515">1515</a>
+<a href="#1516" id="1516">1516</a>
+<a href="#1517" id="1517">1517</a>
+<a href="#1518" id="1518">1518</a>
+<a href="#1519" id="1519">1519</a>
+<a href="#1520" id="1520">1520</a>
+<a href="#1521" id="1521">1521</a>
+<a href="#1522" id="1522">1522</a>
+<a href="#1523" id="1523">1523</a>
+<a href="#1524" id="1524">1524</a>
+<a href="#1525" id="1525">1525</a>
+<a href="#1526" id="1526">1526</a>
+<a href="#1527" id="1527">1527</a>
+<a href="#1528" id="1528">1528</a>
+<a href="#1529" id="1529">1529</a>
+<a href="#1530" id="1530">1530</a>
+<a href="#1531" id="1531">1531</a>
+<a href="#1532" id="1532">1532</a>
+<a href="#1533" id="1533">1533</a>
+<a href="#1534" id="1534">1534</a>
+<a href="#1535" id="1535">1535</a>
+<a href="#1536" id="1536">1536</a>
+<a href="#1537" id="1537">1537</a>
+<a href="#1538" id="1538">1538</a>
+<a href="#1539" id="1539">1539</a>
+<a href="#1540" id="1540">1540</a>
+<a href="#1541" id="1541">1541</a>
+<a href="#1542" id="1542">1542</a>
+<a href="#1543" id="1543">1543</a>
+<a href="#1544" id="1544">1544</a>
+<a href="#1545" id="1545">1545</a>
+<a href="#1546" id="1546">1546</a>
+<a href="#1547" id="1547">1547</a>
+<a href="#1548" id="1548">1548</a>
+<a href="#1549" id="1549">1549</a>
+<a href="#1550" id="1550">1550</a>
+<a href="#1551" id="1551">1551</a>
+<a href="#1552" id="1552">1552</a>
+<a href="#1553" id="1553">1553</a>
+<a href="#1554" id="1554">1554</a>
+<a href="#1555" id="1555">1555</a>
+<a href="#1556" id="1556">1556</a>
+<a href="#1557" id="1557">1557</a>
+<a href="#1558" id="1558">1558</a>
+<a href="#1559" id="1559">1559</a>
+<a href="#1560" id="1560">1560</a>
+<a href="#1561" id="1561">1561</a>
+<a href="#1562" id="1562">1562</a>
+<a href="#1563" id="1563">1563</a>
+<a href="#1564" id="1564">1564</a>
+<a href="#1565" id="1565">1565</a>
+<a href="#1566" id="1566">1566</a>
+<a href="#1567" id="1567">1567</a>
+<a href="#1568" id="1568">1568</a>
+<a href="#1569" id="1569">1569</a>
+<a href="#1570" id="1570">1570</a>
+<a href="#1571" id="1571">1571</a>
+<a href="#1572" id="1572">1572</a>
+<a href="#1573" id="1573">1573</a>
+<a href="#1574" id="1574">1574</a>
+<a href="#1575" id="1575">1575</a>
+<a href="#1576" id="1576">1576</a>
+<a href="#1577" id="1577">1577</a>
+<a href="#1578" id="1578">1578</a>
+<a href="#1579" id="1579">1579</a>
+<a href="#1580" id="1580">1580</a>
+<a href="#1581" id="1581">1581</a>
+<a href="#1582" id="1582">1582</a>
+<a href="#1583" id="1583">1583</a>
+<a href="#1584" id="1584">1584</a>
+<a href="#1585" id="1585">1585</a>
+<a href="#1586" id="1586">1586</a>
+<a href="#1587" id="1587">1587</a>
+<a href="#1588" id="1588">1588</a>
+<a href="#1589" id="1589">1589</a>
+<a href="#1590" id="1590">1590</a>
+<a href="#1591" id="1591">1591</a>
+<a href="#1592" id="1592">1592</a>
+<a href="#1593" id="1593">1593</a>
+<a href="#1594" id="1594">1594</a>
+<a href="#1595" id="1595">1595</a>
+<a href="#1596" id="1596">1596</a>
+<a href="#1597" id="1597">1597</a>
+<a href="#1598" id="1598">1598</a>
+<a href="#1599" id="1599">1599</a>
+<a href="#1600" id="1600">1600</a>
+<a href="#1601" id="1601">1601</a>
+<a href="#1602" id="1602">1602</a>
+<a href="#1603" id="1603">1603</a>
+<a href="#1604" id="1604">1604</a>
+<a href="#1605" id="1605">1605</a>
+<a href="#1606" id="1606">1606</a>
+<a href="#1607" id="1607">1607</a>
+<a href="#1608" id="1608">1608</a>
+<a href="#1609" id="1609">1609</a>
+<a href="#1610" id="1610">1610</a>
+<a href="#1611" id="1611">1611</a>
+<a href="#1612" id="1612">1612</a>
+<a href="#1613" id="1613">1613</a>
+<a href="#1614" id="1614">1614</a>
+<a href="#1615" id="1615">1615</a>
+<a href="#1616" id="1616">1616</a>
+<a href="#1617" id="1617">1617</a>
+<a href="#1618" id="1618">1618</a>
+<a href="#1619" id="1619">1619</a>
+<a href="#1620" id="1620">1620</a>
+<a href="#1621" id="1621">1621</a>
+<a href="#1622" id="1622">1622</a>
+<a href="#1623" id="1623">1623</a>
+<a href="#1624" id="1624">1624</a>
+<a href="#1625" id="1625">1625</a>
+<a href="#1626" id="1626">1626</a>
+<a href="#1627" id="1627">1627</a>
+<a href="#1628" id="1628">1628</a>
+<a href="#1629" id="1629">1629</a>
+<a href="#1630" id="1630">1630</a>
+<a href="#1631" id="1631">1631</a>
+<a href="#1632" id="1632">1632</a>
+<a href="#1633" id="1633">1633</a>
+<a href="#1634" id="1634">1634</a>
+<a href="#1635" id="1635">1635</a>
+<a href="#1636" id="1636">1636</a>
+<a href="#1637" id="1637">1637</a>
+<a href="#1638" id="1638">1638</a>
+<a href="#1639" id="1639">1639</a>
+<a href="#1640" id="1640">1640</a>
+<a href="#1641" id="1641">1641</a>
+<a href="#1642" id="1642">1642</a>
+<a href="#1643" id="1643">1643</a>
+<a href="#1644" id="1644">1644</a>
+<a href="#1645" id="1645">1645</a>
+<a href="#1646" id="1646">1646</a>
+<a href="#1647" id="1647">1647</a>
+<a href="#1648" id="1648">1648</a>
+<a href="#1649" id="1649">1649</a>
+<a href="#1650" id="1650">1650</a>
+<a href="#1651" id="1651">1651</a>
+<a href="#1652" id="1652">1652</a>
+<a href="#1653" id="1653">1653</a>
+<a href="#1654" id="1654">1654</a>
+<a href="#1655" id="1655">1655</a>
+<a href="#1656" id="1656">1656</a>
+<a href="#1657" id="1657">1657</a>
+<a href="#1658" id="1658">1658</a>
+<a href="#1659" id="1659">1659</a>
+<a href="#1660" id="1660">1660</a>
+<a href="#1661" id="1661">1661</a>
+<a href="#1662" id="1662">1662</a>
+<a href="#1663" id="1663">1663</a>
+<a href="#1664" id="1664">1664</a>
+<a href="#1665" id="1665">1665</a>
+<a href="#1666" id="1666">1666</a>
+<a href="#1667" id="1667">1667</a>
+<a href="#1668" id="1668">1668</a>
+<a href="#1669" id="1669">1669</a>
+<a href="#1670" id="1670">1670</a>
+<a href="#1671" id="1671">1671</a>
+<a href="#1672" id="1672">1672</a>
+<a href="#1673" id="1673">1673</a>
+<a href="#1674" id="1674">1674</a>
+<a href="#1675" id="1675">1675</a>
+<a href="#1676" id="1676">1676</a>
+<a href="#1677" id="1677">1677</a>
+<a href="#1678" id="1678">1678</a>
+<a href="#1679" id="1679">1679</a>
+<a href="#1680" id="1680">1680</a>
+<a href="#1681" id="1681">1681</a>
+<a href="#1682" id="1682">1682</a>
+<a href="#1683" id="1683">1683</a>
+<a href="#1684" id="1684">1684</a>
+<a href="#1685" id="1685">1685</a>
+<a href="#1686" id="1686">1686</a>
+<a href="#1687" id="1687">1687</a>
+<a href="#1688" id="1688">1688</a>
+<a href="#1689" id="1689">1689</a>
+<a href="#1690" id="1690">1690</a>
+<a href="#1691" id="1691">1691</a>
+<a href="#1692" id="1692">1692</a>
+<a href="#1693" id="1693">1693</a>
+<a href="#1694" id="1694">1694</a>
+<a href="#1695" id="1695">1695</a>
+<a href="#1696" id="1696">1696</a>
+<a href="#1697" id="1697">1697</a>
+<a href="#1698" id="1698">1698</a>
+<a href="#1699" id="1699">1699</a>
+<a href="#1700" id="1700">1700</a>
+<a href="#1701" id="1701">1701</a>
+<a href="#1702" id="1702">1702</a>
+<a href="#1703" id="1703">1703</a>
+<a href="#1704" id="1704">1704</a>
+<a href="#1705" id="1705">1705</a>
+<a href="#1706" id="1706">1706</a>
+<a href="#1707" id="1707">1707</a>
+<a href="#1708" id="1708">1708</a>
+<a href="#1709" id="1709">1709</a>
+<a href="#1710" id="1710">1710</a>
+<a href="#1711" id="1711">1711</a>
+<a href="#1712" id="1712">1712</a>
+<a href="#1713" id="1713">1713</a>
+<a href="#1714" id="1714">1714</a>
+<a href="#1715" id="1715">1715</a>
+<a href="#1716" id="1716">1716</a>
+<a href="#1717" id="1717">1717</a>
+<a href="#1718" id="1718">1718</a>
+<a href="#1719" id="1719">1719</a>
+<a href="#1720" id="1720">1720</a>
+<a href="#1721" id="1721">1721</a>
+<a href="#1722" id="1722">1722</a>
+<a href="#1723" id="1723">1723</a>
+<a href="#1724" id="1724">1724</a>
+<a href="#1725" id="1725">1725</a>
+<a href="#1726" id="1726">1726</a>
+<a href="#1727" id="1727">1727</a>
+<a href="#1728" id="1728">1728</a>
+<a href="#1729" id="1729">1729</a>
+<a href="#1730" id="1730">1730</a>
+<a href="#1731" id="1731">1731</a>
+<a href="#1732" id="1732">1732</a>
+<a href="#1733" id="1733">1733</a>
+<a href="#1734" id="1734">1734</a>
+<a href="#1735" id="1735">1735</a>
+<a href="#1736" id="1736">1736</a>
+<a href="#1737" id="1737">1737</a>
+<a href="#1738" id="1738">1738</a>
+<a href="#1739" id="1739">1739</a>
+<a href="#1740" id="1740">1740</a>
+<a href="#1741" id="1741">1741</a>
+<a href="#1742" id="1742">1742</a>
+<a href="#1743" id="1743">1743</a>
+<a href="#1744" id="1744">1744</a>
+<a href="#1745" id="1745">1745</a>
+<a href="#1746" id="1746">1746</a>
+<a href="#1747" id="1747">1747</a>
+<a href="#1748" id="1748">1748</a>
+<a href="#1749" id="1749">1749</a>
+<a href="#1750" id="1750">1750</a>
+<a href="#1751" id="1751">1751</a>
+<a href="#1752" id="1752">1752</a>
+<a href="#1753" id="1753">1753</a>
+<a href="#1754" id="1754">1754</a>
+<a href="#1755" id="1755">1755</a>
+<a href="#1756" id="1756">1756</a>
+<a href="#1757" id="1757">1757</a>
+<a href="#1758" id="1758">1758</a>
+<a href="#1759" id="1759">1759</a>
+<a href="#1760" id="1760">1760</a>
+<a href="#1761" id="1761">1761</a>
+<a href="#1762" id="1762">1762</a>
+<a href="#1763" id="1763">1763</a>
+<a href="#1764" id="1764">1764</a>
+<a href="#1765" id="1765">1765</a>
+<a href="#1766" id="1766">1766</a>
+<a href="#1767" id="1767">1767</a>
+<a href="#1768" id="1768">1768</a>
+<a href="#1769" id="1769">1769</a>
+<a href="#1770" id="1770">1770</a>
+<a href="#1771" id="1771">1771</a>
+<a href="#1772" id="1772">1772</a>
+<a href="#1773" id="1773">1773</a>
+<a href="#1774" id="1774">1774</a>
+<a href="#1775" id="1775">1775</a>
+<a href="#1776" id="1776">1776</a>
+<a href="#1777" id="1777">1777</a>
+<a href="#1778" id="1778">1778</a>
+<a href="#1779" id="1779">1779</a>
+<a href="#1780" id="1780">1780</a>
+<a href="#1781" id="1781">1781</a>
+<a href="#1782" id="1782">1782</a>
+<a href="#1783" id="1783">1783</a>
+<a href="#1784" id="1784">1784</a>
+<a href="#1785" id="1785">1785</a>
+<a href="#1786" id="1786">1786</a>
+<a href="#1787" id="1787">1787</a>
+<a href="#1788" id="1788">1788</a>
+<a href="#1789" id="1789">1789</a>
+<a href="#1790" id="1790">1790</a>
+<a href="#1791" id="1791">1791</a>
+<a href="#1792" id="1792">1792</a>
+<a href="#1793" id="1793">1793</a>
+<a href="#1794" id="1794">1794</a>
+<a href="#1795" id="1795">1795</a>
+<a href="#1796" id="1796">1796</a>
+<a href="#1797" id="1797">1797</a>
+<a href="#1798" id="1798">1798</a>
+<a href="#1799" id="1799">1799</a>
+<a href="#1800" id="1800">1800</a>
+<a href="#1801" id="1801">1801</a>
+<a href="#1802" id="1802">1802</a>
+<a href="#1803" id="1803">1803</a>
+<a href="#1804" id="1804">1804</a>
+<a href="#1805" id="1805">1805</a>
+<a href="#1806" id="1806">1806</a>
+<a href="#1807" id="1807">1807</a>
+<a href="#1808" id="1808">1808</a>
+<a href="#1809" id="1809">1809</a>
+<a href="#1810" id="1810">1810</a>
+<a href="#1811" id="1811">1811</a>
+<a href="#1812" id="1812">1812</a>
+<a href="#1813" id="1813">1813</a>
+<a href="#1814" id="1814">1814</a>
+<a href="#1815" id="1815">1815</a>
+<a href="#1816" id="1816">1816</a>
+<a href="#1817" id="1817">1817</a>
+<a href="#1818" id="1818">1818</a>
+<a href="#1819" id="1819">1819</a>
+<a href="#1820" id="1820">1820</a>
+<a href="#1821" id="1821">1821</a>
+<a href="#1822" id="1822">1822</a>
+<a href="#1823" id="1823">1823</a>
+<a href="#1824" id="1824">1824</a>
+<a href="#1825" id="1825">1825</a>
+<a href="#1826" id="1826">1826</a>
+<a href="#1827" id="1827">1827</a>
+<a href="#1828" id="1828">1828</a>
+<a href="#1829" id="1829">1829</a>
+<a href="#1830" id="1830">1830</a>
+<a href="#1831" id="1831">1831</a>
+<a href="#1832" id="1832">1832</a>
+<a href="#1833" id="1833">1833</a>
+<a href="#1834" id="1834">1834</a>
+<a href="#1835" id="1835">1835</a>
+<a href="#1836" id="1836">1836</a>
+<a href="#1837" id="1837">1837</a>
+<a href="#1838" id="1838">1838</a>
+<a href="#1839" id="1839">1839</a>
+<a href="#1840" id="1840">1840</a>
+<a href="#1841" id="1841">1841</a>
+<a href="#1842" id="1842">1842</a>
+<a href="#1843" id="1843">1843</a>
+<a href="#1844" id="1844">1844</a>
+<a href="#1845" id="1845">1845</a>
+<a href="#1846" id="1846">1846</a>
+<a href="#1847" id="1847">1847</a>
+<a href="#1848" id="1848">1848</a>
+<a href="#1849" id="1849">1849</a>
+<a href="#1850" id="1850">1850</a>
+<a href="#1851" id="1851">1851</a>
+<a href="#1852" id="1852">1852</a>
+<a href="#1853" id="1853">1853</a>
+<a href="#1854" id="1854">1854</a>
+<a href="#1855" id="1855">1855</a>
+<a href="#1856" id="1856">1856</a>
+<a href="#1857" id="1857">1857</a>
+<a href="#1858" id="1858">1858</a>
+<a href="#1859" id="1859">1859</a>
+<a href="#1860" id="1860">1860</a>
+<a href="#1861" id="1861">1861</a>
+<a href="#1862" id="1862">1862</a>
+<a href="#1863" id="1863">1863</a>
+<a href="#1864" id="1864">1864</a>
+<a href="#1865" id="1865">1865</a>
+<a href="#1866" id="1866">1866</a>
+<a href="#1867" id="1867">1867</a>
+<a href="#1868" id="1868">1868</a>
+<a href="#1869" id="1869">1869</a>
+<a href="#1870" id="1870">1870</a>
+<a href="#1871" id="1871">1871</a>
+<a href="#1872" id="1872">1872</a>
+<a href="#1873" id="1873">1873</a>
+<a href="#1874" id="1874">1874</a>
+<a href="#1875" id="1875">1875</a>
+<a href="#1876" id="1876">1876</a>
+<a href="#1877" id="1877">1877</a>
+<a href="#1878" id="1878">1878</a>
+<a href="#1879" id="1879">1879</a>
+<a href="#1880" id="1880">1880</a>
+<a href="#1881" id="1881">1881</a>
+<a href="#1882" id="1882">1882</a>
+<a href="#1883" id="1883">1883</a>
+<a href="#1884" id="1884">1884</a>
+<a href="#1885" id="1885">1885</a>
+<a href="#1886" id="1886">1886</a>
+<a href="#1887" id="1887">1887</a>
+<a href="#1888" id="1888">1888</a>
+<a href="#1889" id="1889">1889</a>
+<a href="#1890" id="1890">1890</a>
+<a href="#1891" id="1891">1891</a>
+<a href="#1892" id="1892">1892</a>
+<a href="#1893" id="1893">1893</a>
+<a href="#1894" id="1894">1894</a>
+<a href="#1895" id="1895">1895</a>
+<a href="#1896" id="1896">1896</a>
+<a href="#1897" id="1897">1897</a>
+<a href="#1898" id="1898">1898</a>
+<a href="#1899" id="1899">1899</a>
+<a href="#1900" id="1900">1900</a>
+<a href="#1901" id="1901">1901</a>
+<a href="#1902" id="1902">1902</a>
+<a href="#1903" id="1903">1903</a>
+<a href="#1904" id="1904">1904</a>
+<a href="#1905" id="1905">1905</a>
+<a href="#1906" id="1906">1906</a>
+<a href="#1907" id="1907">1907</a>
+<a href="#1908" id="1908">1908</a>
+<a href="#1909" id="1909">1909</a>
+<a href="#1910" id="1910">1910</a>
+<a href="#1911" id="1911">1911</a>
+<a href="#1912" id="1912">1912</a>
+<a href="#1913" id="1913">1913</a>
+<a href="#1914" id="1914">1914</a>
+<a href="#1915" id="1915">1915</a>
+<a href="#1916" id="1916">1916</a>
+<a href="#1917" id="1917">1917</a>
+<a href="#1918" id="1918">1918</a>
+<a href="#1919" id="1919">1919</a>
+<a href="#1920" id="1920">1920</a>
+<a href="#1921" id="1921">1921</a>
+<a href="#1922" id="1922">1922</a>
+<a href="#1923" id="1923">1923</a>
+<a href="#1924" id="1924">1924</a>
+<a href="#1925" id="1925">1925</a>
+<a href="#1926" id="1926">1926</a>
+<a href="#1927" id="1927">1927</a>
+<a href="#1928" id="1928">1928</a>
+<a href="#1929" id="1929">1929</a>
+<a href="#1930" id="1930">1930</a>
+<a href="#1931" id="1931">1931</a>
+<a href="#1932" id="1932">1932</a>
+<a href="#1933" id="1933">1933</a>
+<a href="#1934" id="1934">1934</a>
+<a href="#1935" id="1935">1935</a>
+<a href="#1936" id="1936">1936</a>
+<a href="#1937" id="1937">1937</a>
+<a href="#1938" id="1938">1938</a>
+<a href="#1939" id="1939">1939</a>
+<a href="#1940" id="1940">1940</a>
+<a href="#1941" id="1941">1941</a>
+<a href="#1942" id="1942">1942</a>
+<a href="#1943" id="1943">1943</a>
+<a href="#1944" id="1944">1944</a>
+<a href="#1945" id="1945">1945</a>
+<a href="#1946" id="1946">1946</a>
+<a href="#1947" id="1947">1947</a>
+<a href="#1948" id="1948">1948</a>
+<a href="#1949" id="1949">1949</a>
+<a href="#1950" id="1950">1950</a>
+<a href="#1951" id="1951">1951</a>
+<a href="#1952" id="1952">1952</a>
+<a href="#1953" id="1953">1953</a>
+<a href="#1954" id="1954">1954</a>
+<a href="#1955" id="1955">1955</a>
+<a href="#1956" id="1956">1956</a>
+<a href="#1957" id="1957">1957</a>
+<a href="#1958" id="1958">1958</a>
+<a href="#1959" id="1959">1959</a>
+<a href="#1960" id="1960">1960</a>
+<a href="#1961" id="1961">1961</a>
+<a href="#1962" id="1962">1962</a>
+<a href="#1963" id="1963">1963</a>
+<a href="#1964" id="1964">1964</a>
+<a href="#1965" id="1965">1965</a>
+<a href="#1966" id="1966">1966</a>
+<a href="#1967" id="1967">1967</a>
+<a href="#1968" id="1968">1968</a>
+<a href="#1969" id="1969">1969</a>
+<a href="#1970" id="1970">1970</a>
+<a href="#1971" id="1971">1971</a>
+<a href="#1972" id="1972">1972</a>
+<a href="#1973" id="1973">1973</a>
+<a href="#1974" id="1974">1974</a>
+<a href="#1975" id="1975">1975</a>
+<a href="#1976" id="1976">1976</a>
+<a href="#1977" id="1977">1977</a>
+<a href="#1978" id="1978">1978</a>
+<a href="#1979" id="1979">1979</a>
+<a href="#1980" id="1980">1980</a>
+<a href="#1981" id="1981">1981</a>
+<a href="#1982" id="1982">1982</a>
+<a href="#1983" id="1983">1983</a>
+<a href="#1984" id="1984">1984</a>
+<a href="#1985" id="1985">1985</a>
+<a href="#1986" id="1986">1986</a>
+<a href="#1987" id="1987">1987</a>
+<a href="#1988" id="1988">1988</a>
+<a href="#1989" id="1989">1989</a>
+<a href="#1990" id="1990">1990</a>
+<a href="#1991" id="1991">1991</a>
+<a href="#1992" id="1992">1992</a>
+<a href="#1993" id="1993">1993</a>
+<a href="#1994" id="1994">1994</a>
+<a href="#1995" id="1995">1995</a>
+<a href="#1996" id="1996">1996</a>
+<a href="#1997" id="1997">1997</a>
+<a href="#1998" id="1998">1998</a>
+<a href="#1999" id="1999">1999</a>
+<a href="#2000" id="2000">2000</a>
+<a href="#2001" id="2001">2001</a>
+<a href="#2002" id="2002">2002</a>
+<a href="#2003" id="2003">2003</a>
+<a href="#2004" id="2004">2004</a>
+<a href="#2005" id="2005">2005</a>
+<a href="#2006" id="2006">2006</a>
+<a href="#2007" id="2007">2007</a>
+<a href="#2008" id="2008">2008</a>
+<a href="#2009" id="2009">2009</a>
+<a href="#2010" id="2010">2010</a>
+<a href="#2011" id="2011">2011</a>
+<a href="#2012" id="2012">2012</a>
+<a href="#2013" id="2013">2013</a>
+<a href="#2014" id="2014">2014</a>
+<a href="#2015" id="2015">2015</a>
+<a href="#2016" id="2016">2016</a>
+<a href="#2017" id="2017">2017</a>
+<a href="#2018" id="2018">2018</a>
+<a href="#2019" id="2019">2019</a>
+<a href="#2020" id="2020">2020</a>
+<a href="#2021" id="2021">2021</a>
+<a href="#2022" id="2022">2022</a>
+<a href="#2023" id="2023">2023</a>
+<a href="#2024" id="2024">2024</a>
+<a href="#2025" id="2025">2025</a>
+<a href="#2026" id="2026">2026</a>
+<a href="#2027" id="2027">2027</a>
+<a href="#2028" id="2028">2028</a>
+<a href="#2029" id="2029">2029</a>
+<a href="#2030" id="2030">2030</a>
+<a href="#2031" id="2031">2031</a>
+<a href="#2032" id="2032">2032</a>
+<a href="#2033" id="2033">2033</a>
+<a href="#2034" id="2034">2034</a>
+<a href="#2035" id="2035">2035</a>
+<a href="#2036" id="2036">2036</a>
+<a href="#2037" id="2037">2037</a>
+<a href="#2038" id="2038">2038</a>
+<a href="#2039" id="2039">2039</a>
+<a href="#2040" id="2040">2040</a>
+<a href="#2041" id="2041">2041</a>
+<a href="#2042" id="2042">2042</a>
+<a href="#2043" id="2043">2043</a>
+<a href="#2044" id="2044">2044</a>
+<a href="#2045" id="2045">2045</a>
+<a href="#2046" id="2046">2046</a>
+<a href="#2047" id="2047">2047</a>
+<a href="#2048" id="2048">2048</a>
+<a href="#2049" id="2049">2049</a>
+<a href="#2050" id="2050">2050</a>
+<a href="#2051" id="2051">2051</a>
+<a href="#2052" id="2052">2052</a>
+<a href="#2053" id="2053">2053</a>
+<a href="#2054" id="2054">2054</a>
+<a href="#2055" id="2055">2055</a>
+<a href="#2056" id="2056">2056</a>
+<a href="#2057" id="2057">2057</a>
+<a href="#2058" id="2058">2058</a>
+<a href="#2059" id="2059">2059</a>
+<a href="#2060" id="2060">2060</a>
+<a href="#2061" id="2061">2061</a>
+<a href="#2062" id="2062">2062</a>
+<a href="#2063" id="2063">2063</a>
+<a href="#2064" id="2064">2064</a>
+<a href="#2065" id="2065">2065</a>
+<a href="#2066" id="2066">2066</a>
+<a href="#2067" id="2067">2067</a>
+<a href="#2068" id="2068">2068</a>
+<a href="#2069" id="2069">2069</a>
+<a href="#2070" id="2070">2070</a>
+<a href="#2071" id="2071">2071</a>
+<a href="#2072" id="2072">2072</a>
+<a href="#2073" id="2073">2073</a>
+<a href="#2074" id="2074">2074</a>
+<a href="#2075" id="2075">2075</a>
+<a href="#2076" id="2076">2076</a>
+<a href="#2077" id="2077">2077</a>
+<a href="#2078" id="2078">2078</a>
+<a href="#2079" id="2079">2079</a>
+<a href="#2080" id="2080">2080</a>
+<a href="#2081" id="2081">2081</a>
+<a href="#2082" id="2082">2082</a>
+<a href="#2083" id="2083">2083</a>
+<a href="#2084" id="2084">2084</a>
+<a href="#2085" id="2085">2085</a>
+<a href="#2086" id="2086">2086</a>
+<a href="#2087" id="2087">2087</a>
+<a href="#2088" id="2088">2088</a>
+<a href="#2089" id="2089">2089</a>
+<a href="#2090" id="2090">2090</a>
+<a href="#2091" id="2091">2091</a>
+<a href="#2092" id="2092">2092</a>
+<a href="#2093" id="2093">2093</a>
+<a href="#2094" id="2094">2094</a>
+<a href="#2095" id="2095">2095</a>
+<a href="#2096" id="2096">2096</a>
+<a href="#2097" id="2097">2097</a>
+<a href="#2098" id="2098">2098</a>
+<a href="#2099" id="2099">2099</a>
+<a href="#2100" id="2100">2100</a>
+<a href="#2101" id="2101">2101</a>
+<a href="#2102" id="2102">2102</a>
+<a href="#2103" id="2103">2103</a>
+<a href="#2104" id="2104">2104</a>
+<a href="#2105" id="2105">2105</a>
+<a href="#2106" id="2106">2106</a>
+<a href="#2107" id="2107">2107</a>
+<a href="#2108" id="2108">2108</a>
+<a href="#2109" id="2109">2109</a>
+<a href="#2110" id="2110">2110</a>
+<a href="#2111" id="2111">2111</a>
+<a href="#2112" id="2112">2112</a>
+<a href="#2113" id="2113">2113</a>
+<a href="#2114" id="2114">2114</a>
+<a href="#2115" id="2115">2115</a>
+<a href="#2116" id="2116">2116</a>
+<a href="#2117" id="2117">2117</a>
+<a href="#2118" id="2118">2118</a>
+<a href="#2119" id="2119">2119</a>
+<a href="#2120" id="2120">2120</a>
+<a href="#2121" id="2121">2121</a>
+<a href="#2122" id="2122">2122</a>
+<a href="#2123" id="2123">2123</a>
+<a href="#2124" id="2124">2124</a>
+<a href="#2125" id="2125">2125</a>
+<a href="#2126" id="2126">2126</a>
+<a href="#2127" id="2127">2127</a>
+<a href="#2128" id="2128">2128</a>
+<a href="#2129" id="2129">2129</a>
+<a href="#2130" id="2130">2130</a>
+<a href="#2131" id="2131">2131</a>
+<a href="#2132" id="2132">2132</a>
+<a href="#2133" id="2133">2133</a>
+<a href="#2134" id="2134">2134</a>
+<a href="#2135" id="2135">2135</a>
+<a href="#2136" id="2136">2136</a>
+<a href="#2137" id="2137">2137</a>
+<a href="#2138" id="2138">2138</a>
+<a href="#2139" id="2139">2139</a>
+<a href="#2140" id="2140">2140</a>
+<a href="#2141" id="2141">2141</a>
+<a href="#2142" id="2142">2142</a>
+<a href="#2143" id="2143">2143</a>
+<a href="#2144" id="2144">2144</a>
+<a href="#2145" id="2145">2145</a>
+<a href="#2146" id="2146">2146</a>
+<a href="#2147" id="2147">2147</a>
+<a href="#2148" id="2148">2148</a>
+<a href="#2149" id="2149">2149</a>
+<a href="#2150" id="2150">2150</a>
+<a href="#2151" id="2151">2151</a>
+<a href="#2152" id="2152">2152</a>
+<a href="#2153" id="2153">2153</a>
+<a href="#2154" id="2154">2154</a>
+<a href="#2155" id="2155">2155</a>
+<a href="#2156" id="2156">2156</a>
+<a href="#2157" id="2157">2157</a>
+<a href="#2158" id="2158">2158</a>
+<a href="#2159" id="2159">2159</a>
+<a href="#2160" id="2160">2160</a>
+<a href="#2161" id="2161">2161</a>
+<a href="#2162" id="2162">2162</a>
+<a href="#2163" id="2163">2163</a>
+<a href="#2164" id="2164">2164</a>
+<a href="#2165" id="2165">2165</a>
+<a href="#2166" id="2166">2166</a>
+<a href="#2167" id="2167">2167</a>
+<a href="#2168" id="2168">2168</a>
+<a href="#2169" id="2169">2169</a>
+<a href="#2170" id="2170">2170</a>
+<a href="#2171" id="2171">2171</a>
+<a href="#2172" id="2172">2172</a>
+<a href="#2173" id="2173">2173</a>
+<a href="#2174" id="2174">2174</a>
+<a href="#2175" id="2175">2175</a>
+<a href="#2176" id="2176">2176</a>
+<a href="#2177" id="2177">2177</a>
+<a href="#2178" id="2178">2178</a>
+<a href="#2179" id="2179">2179</a>
+<a href="#2180" id="2180">2180</a>
+<a href="#2181" id="2181">2181</a>
+<a href="#2182" id="2182">2182</a>
+<a href="#2183" id="2183">2183</a>
+<a href="#2184" id="2184">2184</a>
+<a href="#2185" id="2185">2185</a>
+<a href="#2186" id="2186">2186</a>
+<a href="#2187" id="2187">2187</a>
+<a href="#2188" id="2188">2188</a>
+<a href="#2189" id="2189">2189</a>
+<a href="#2190" id="2190">2190</a>
+<a href="#2191" id="2191">2191</a>
+<a href="#2192" id="2192">2192</a>
+<a href="#2193" id="2193">2193</a>
+<a href="#2194" id="2194">2194</a>
+<a href="#2195" id="2195">2195</a>
+<a href="#2196" id="2196">2196</a>
+<a href="#2197" id="2197">2197</a>
+<a href="#2198" id="2198">2198</a>
+<a href="#2199" id="2199">2199</a>
+<a href="#2200" id="2200">2200</a>
+<a href="#2201" id="2201">2201</a>
+<a href="#2202" id="2202">2202</a>
+<a href="#2203" id="2203">2203</a>
+<a href="#2204" id="2204">2204</a>
+<a href="#2205" id="2205">2205</a>
+<a href="#2206" id="2206">2206</a>
+<a href="#2207" id="2207">2207</a>
+<a href="#2208" id="2208">2208</a>
+<a href="#2209" id="2209">2209</a>
+<a href="#2210" id="2210">2210</a>
+<a href="#2211" id="2211">2211</a>
+<a href="#2212" id="2212">2212</a>
+<a href="#2213" id="2213">2213</a>
+<a href="#2214" id="2214">2214</a>
+<a href="#2215" id="2215">2215</a>
+<a href="#2216" id="2216">2216</a>
+<a href="#2217" id="2217">2217</a>
+<a href="#2218" id="2218">2218</a>
+<a href="#2219" id="2219">2219</a>
+<a href="#2220" id="2220">2220</a>
+<a href="#2221" id="2221">2221</a>
+<a href="#2222" id="2222">2222</a>
+<a href="#2223" id="2223">2223</a>
+<a href="#2224" id="2224">2224</a>
+<a href="#2225" id="2225">2225</a>
+<a href="#2226" id="2226">2226</a>
+<a href="#2227" id="2227">2227</a>
+<a href="#2228" id="2228">2228</a>
+<a href="#2229" id="2229">2229</a>
+<a href="#2230" id="2230">2230</a>
+<a href="#2231" id="2231">2231</a>
+<a href="#2232" id="2232">2232</a>
+<a href="#2233" id="2233">2233</a>
+<a href="#2234" id="2234">2234</a>
+<a href="#2235" id="2235">2235</a>
+<a href="#2236" id="2236">2236</a>
+<a href="#2237" id="2237">2237</a>
+<a href="#2238" id="2238">2238</a>
+<a href="#2239" id="2239">2239</a>
+<a href="#2240" id="2240">2240</a>
+<a href="#2241" id="2241">2241</a>
+<a href="#2242" id="2242">2242</a>
+<a href="#2243" id="2243">2243</a>
+<a href="#2244" id="2244">2244</a>
+<a href="#2245" id="2245">2245</a>
+<a href="#2246" id="2246">2246</a>
+<a href="#2247" id="2247">2247</a>
+<a href="#2248" id="2248">2248</a>
+<a href="#2249" id="2249">2249</a>
+<a href="#2250" id="2250">2250</a>
+<a href="#2251" id="2251">2251</a>
+<a href="#2252" id="2252">2252</a>
+<a href="#2253" id="2253">2253</a>
+<a href="#2254" id="2254">2254</a>
+<a href="#2255" id="2255">2255</a>
+<a href="#2256" id="2256">2256</a>
+<a href="#2257" id="2257">2257</a>
+<a href="#2258" id="2258">2258</a>
+<a href="#2259" id="2259">2259</a>
+<a href="#2260" id="2260">2260</a>
+<a href="#2261" id="2261">2261</a>
+<a href="#2262" id="2262">2262</a>
+<a href="#2263" id="2263">2263</a>
+<a href="#2264" id="2264">2264</a>
+<a href="#2265" id="2265">2265</a>
+<a href="#2266" id="2266">2266</a>
+<a href="#2267" id="2267">2267</a>
+<a href="#2268" id="2268">2268</a>
+<a href="#2269" id="2269">2269</a>
+<a href="#2270" id="2270">2270</a>
+<a href="#2271" id="2271">2271</a>
+<a href="#2272" id="2272">2272</a>
+<a href="#2273" id="2273">2273</a>
+<a href="#2274" id="2274">2274</a>
+<a href="#2275" id="2275">2275</a>
+<a href="#2276" id="2276">2276</a>
+<a href="#2277" id="2277">2277</a>
+<a href="#2278" id="2278">2278</a>
+<a href="#2279" id="2279">2279</a>
+<a href="#2280" id="2280">2280</a>
+<a href="#2281" id="2281">2281</a>
+<a href="#2282" id="2282">2282</a>
+<a href="#2283" id="2283">2283</a>
+<a href="#2284" id="2284">2284</a>
+<a href="#2285" id="2285">2285</a>
+<a href="#2286" id="2286">2286</a>
+<a href="#2287" id="2287">2287</a>
+<a href="#2288" id="2288">2288</a>
+<a href="#2289" id="2289">2289</a>
+<a href="#2290" id="2290">2290</a>
+<a href="#2291" id="2291">2291</a>
+<a href="#2292" id="2292">2292</a>
+<a href="#2293" id="2293">2293</a>
+<a href="#2294" id="2294">2294</a>
+<a href="#2295" id="2295">2295</a>
+<a href="#2296" id="2296">2296</a>
+<a href="#2297" id="2297">2297</a>
+<a href="#2298" id="2298">2298</a>
+<a href="#2299" id="2299">2299</a>
+<a href="#2300" id="2300">2300</a>
+<a href="#2301" id="2301">2301</a>
+<a href="#2302" id="2302">2302</a>
+<a href="#2303" id="2303">2303</a>
+<a href="#2304" id="2304">2304</a>
+<a href="#2305" id="2305">2305</a>
+<a href="#2306" id="2306">2306</a>
+<a href="#2307" id="2307">2307</a>
+<a href="#2308" id="2308">2308</a>
+<a href="#2309" id="2309">2309</a>
+<a href="#2310" id="2310">2310</a>
+<a href="#2311" id="2311">2311</a>
+<a href="#2312" id="2312">2312</a>
+<a href="#2313" id="2313">2313</a>
+<a href="#2314" id="2314">2314</a>
+<a href="#2315" id="2315">2315</a>
+<a href="#2316" id="2316">2316</a>
+<a href="#2317" id="2317">2317</a>
+<a href="#2318" id="2318">2318</a>
+<a href="#2319" id="2319">2319</a>
+<a href="#2320" id="2320">2320</a>
+<a href="#2321" id="2321">2321</a>
+<a href="#2322" id="2322">2322</a>
+<a href="#2323" id="2323">2323</a>
+<a href="#2324" id="2324">2324</a>
+<a href="#2325" id="2325">2325</a>
+<a href="#2326" id="2326">2326</a>
+<a href="#2327" id="2327">2327</a>
+<a href="#2328" id="2328">2328</a>
+<a href="#2329" id="2329">2329</a>
+<a href="#2330" id="2330">2330</a>
+<a href="#2331" id="2331">2331</a>
+<a href="#2332" id="2332">2332</a>
+<a href="#2333" id="2333">2333</a>
+<a href="#2334" id="2334">2334</a>
+<a href="#2335" id="2335">2335</a>
+<a href="#2336" id="2336">2336</a>
+<a href="#2337" id="2337">2337</a>
+<a href="#2338" id="2338">2338</a>
+<a href="#2339" id="2339">2339</a>
+<a href="#2340" id="2340">2340</a>
+<a href="#2341" id="2341">2341</a>
+<a href="#2342" id="2342">2342</a>
+<a href="#2343" id="2343">2343</a>
+<a href="#2344" id="2344">2344</a>
+<a href="#2345" id="2345">2345</a>
+<a href="#2346" id="2346">2346</a>
+<a href="#2347" id="2347">2347</a>
+<a href="#2348" id="2348">2348</a>
+<a href="#2349" id="2349">2349</a>
+<a href="#2350" id="2350">2350</a>
+<a href="#2351" id="2351">2351</a>
+<a href="#2352" id="2352">2352</a>
+<a href="#2353" id="2353">2353</a>
+<a href="#2354" id="2354">2354</a>
+<a href="#2355" id="2355">2355</a>
+<a href="#2356" id="2356">2356</a>
+<a href="#2357" id="2357">2357</a>
+<a href="#2358" id="2358">2358</a>
+<a href="#2359" id="2359">2359</a>
+<a href="#2360" id="2360">2360</a>
+<a href="#2361" id="2361">2361</a>
+<a href="#2362" id="2362">2362</a>
+<a href="#2363" id="2363">2363</a>
+<a href="#2364" id="2364">2364</a>
+<a href="#2365" id="2365">2365</a>
+<a href="#2366" id="2366">2366</a>
+<a href="#2367" id="2367">2367</a>
+<a href="#2368" id="2368">2368</a>
+<a href="#2369" id="2369">2369</a>
+<a href="#2370" id="2370">2370</a>
+<a href="#2371" id="2371">2371</a>
+<a href="#2372" id="2372">2372</a>
+<a href="#2373" id="2373">2373</a>
+<a href="#2374" id="2374">2374</a>
+<a href="#2375" id="2375">2375</a>
+<a href="#2376" id="2376">2376</a>
+<a href="#2377" id="2377">2377</a>
+<a href="#2378" id="2378">2378</a>
+<a href="#2379" id="2379">2379</a>
+<a href="#2380" id="2380">2380</a>
+<a href="#2381" id="2381">2381</a>
+<a href="#2382" id="2382">2382</a>
+<a href="#2383" id="2383">2383</a>
+<a href="#2384" id="2384">2384</a>
+<a href="#2385" id="2385">2385</a>
+<a href="#2386" id="2386">2386</a>
+<a href="#2387" id="2387">2387</a>
+<a href="#2388" id="2388">2388</a>
+<a href="#2389" id="2389">2389</a>
+<a href="#2390" id="2390">2390</a>
+<a href="#2391" id="2391">2391</a>
+<a href="#2392" id="2392">2392</a>
+<a href="#2393" id="2393">2393</a>
+<a href="#2394" id="2394">2394</a>
+<a href="#2395" id="2395">2395</a>
+<a href="#2396" id="2396">2396</a>
+<a href="#2397" id="2397">2397</a>
+<a href="#2398" id="2398">2398</a>
+<a href="#2399" id="2399">2399</a>
+<a href="#2400" id="2400">2400</a>
+<a href="#2401" id="2401">2401</a>
+<a href="#2402" id="2402">2402</a>
+<a href="#2403" id="2403">2403</a>
+<a href="#2404" id="2404">2404</a>
+<a href="#2405" id="2405">2405</a>
+<a href="#2406" id="2406">2406</a>
+<a href="#2407" id="2407">2407</a>
+<a href="#2408" id="2408">2408</a>
+<a href="#2409" id="2409">2409</a>
+<a href="#2410" id="2410">2410</a>
+<a href="#2411" id="2411">2411</a>
+<a href="#2412" id="2412">2412</a>
+<a href="#2413" id="2413">2413</a>
+<a href="#2414" id="2414">2414</a>
+<a href="#2415" id="2415">2415</a>
+<a href="#2416" id="2416">2416</a>
+<a href="#2417" id="2417">2417</a>
+<a href="#2418" id="2418">2418</a>
+<a href="#2419" id="2419">2419</a>
+<a href="#2420" id="2420">2420</a>
+<a href="#2421" id="2421">2421</a>
+<a href="#2422" id="2422">2422</a>
+<a href="#2423" id="2423">2423</a>
+<a href="#2424" id="2424">2424</a>
+<a href="#2425" id="2425">2425</a>
+<a href="#2426" id="2426">2426</a>
+<a href="#2427" id="2427">2427</a>
+<a href="#2428" id="2428">2428</a>
+<a href="#2429" id="2429">2429</a>
+<a href="#2430" id="2430">2430</a>
+<a href="#2431" id="2431">2431</a>
+<a href="#2432" id="2432">2432</a>
+<a href="#2433" id="2433">2433</a>
+<a href="#2434" id="2434">2434</a>
+<a href="#2435" id="2435">2435</a>
+<a href="#2436" id="2436">2436</a>
+<a href="#2437" id="2437">2437</a>
+<a href="#2438" id="2438">2438</a>
+<a href="#2439" id="2439">2439</a>
+<a href="#2440" id="2440">2440</a>
+<a href="#2441" id="2441">2441</a>
+<a href="#2442" id="2442">2442</a>
+<a href="#2443" id="2443">2443</a>
+<a href="#2444" id="2444">2444</a>
+<a href="#2445" id="2445">2445</a>
+<a href="#2446" id="2446">2446</a>
+<a href="#2447" id="2447">2447</a>
+<a href="#2448" id="2448">2448</a>
+<a href="#2449" id="2449">2449</a>
+<a href="#2450" id="2450">2450</a>
+<a href="#2451" id="2451">2451</a>
+<a href="#2452" id="2452">2452</a>
+<a href="#2453" id="2453">2453</a>
+<a href="#2454" id="2454">2454</a>
+<a href="#2455" id="2455">2455</a>
+<a href="#2456" id="2456">2456</a>
+<a href="#2457" id="2457">2457</a>
+<a href="#2458" id="2458">2458</a>
+<a href="#2459" id="2459">2459</a>
+<a href="#2460" id="2460">2460</a>
+<a href="#2461" id="2461">2461</a>
+<a href="#2462" id="2462">2462</a>
+<a href="#2463" id="2463">2463</a>
+<a href="#2464" id="2464">2464</a>
+<a href="#2465" id="2465">2465</a>
+<a href="#2466" id="2466">2466</a>
+<a href="#2467" id="2467">2467</a>
+<a href="#2468" id="2468">2468</a>
+<a href="#2469" id="2469">2469</a>
+<a href="#2470" id="2470">2470</a>
+<a href="#2471" id="2471">2471</a>
+<a href="#2472" id="2472">2472</a>
+<a href="#2473" id="2473">2473</a>
+<a href="#2474" id="2474">2474</a>
+<a href="#2475" id="2475">2475</a>
+<a href="#2476" id="2476">2476</a>
+<a href="#2477" id="2477">2477</a>
+<a href="#2478" id="2478">2478</a>
+<a href="#2479" id="2479">2479</a>
+<a href="#2480" id="2480">2480</a>
+<a href="#2481" id="2481">2481</a>
+<a href="#2482" id="2482">2482</a>
+<a href="#2483" id="2483">2483</a>
+<a href="#2484" id="2484">2484</a>
+<a href="#2485" id="2485">2485</a>
+<a href="#2486" id="2486">2486</a>
+<a href="#2487" id="2487">2487</a>
+<a href="#2488" id="2488">2488</a>
+<a href="#2489" id="2489">2489</a>
+<a href="#2490" id="2490">2490</a>
+<a href="#2491" id="2491">2491</a>
+<a href="#2492" id="2492">2492</a>
+<a href="#2493" id="2493">2493</a>
+<a href="#2494" id="2494">2494</a>
+<a href="#2495" id="2495">2495</a>
+<a href="#2496" id="2496">2496</a>
+<a href="#2497" id="2497">2497</a>
+<a href="#2498" id="2498">2498</a>
+<a href="#2499" id="2499">2499</a>
+<a href="#2500" id="2500">2500</a>
+<a href="#2501" id="2501">2501</a>
+<a href="#2502" id="2502">2502</a>
+<a href="#2503" id="2503">2503</a>
+<a href="#2504" id="2504">2504</a>
+<a href="#2505" id="2505">2505</a>
+<a href="#2506" id="2506">2506</a>
+<a href="#2507" id="2507">2507</a>
+<a href="#2508" id="2508">2508</a>
+<a href="#2509" id="2509">2509</a>
+<a href="#2510" id="2510">2510</a>
+<a href="#2511" id="2511">2511</a>
+<a href="#2512" id="2512">2512</a>
+<a href="#2513" id="2513">2513</a>
+<a href="#2514" id="2514">2514</a>
+<a href="#2515" id="2515">2515</a>
+<a href="#2516" id="2516">2516</a>
+<a href="#2517" id="2517">2517</a>
+<a href="#2518" id="2518">2518</a>
+<a href="#2519" id="2519">2519</a>
+<a href="#2520" id="2520">2520</a>
+<a href="#2521" id="2521">2521</a>
+<a href="#2522" id="2522">2522</a>
+<a href="#2523" id="2523">2523</a>
+<a href="#2524" id="2524">2524</a>
+<a href="#2525" id="2525">2525</a>
+<a href="#2526" id="2526">2526</a>
+<a href="#2527" id="2527">2527</a>
+<a href="#2528" id="2528">2528</a>
+<a href="#2529" id="2529">2529</a>
+<a href="#2530" id="2530">2530</a>
+<a href="#2531" id="2531">2531</a>
+<a href="#2532" id="2532">2532</a>
+<a href="#2533" id="2533">2533</a>
+<a href="#2534" id="2534">2534</a>
+<a href="#2535" id="2535">2535</a>
+<a href="#2536" id="2536">2536</a>
+<a href="#2537" id="2537">2537</a>
+<a href="#2538" id="2538">2538</a>
+<a href="#2539" id="2539">2539</a>
+<a href="#2540" id="2540">2540</a>
+<a href="#2541" id="2541">2541</a>
+<a href="#2542" id="2542">2542</a>
+<a href="#2543" id="2543">2543</a>
+<a href="#2544" id="2544">2544</a>
+<a href="#2545" id="2545">2545</a>
+<a href="#2546" id="2546">2546</a>
+<a href="#2547" id="2547">2547</a>
+<a href="#2548" id="2548">2548</a>
+<a href="#2549" id="2549">2549</a>
+<a href="#2550" id="2550">2550</a>
+<a href="#2551" id="2551">2551</a>
+<a href="#2552" id="2552">2552</a>
+<a href="#2553" id="2553">2553</a>
+<a href="#2554" id="2554">2554</a>
+<a href="#2555" id="2555">2555</a>
+<a href="#2556" id="2556">2556</a>
+<a href="#2557" id="2557">2557</a>
+<a href="#2558" id="2558">2558</a>
+<a href="#2559" id="2559">2559</a>
+<a href="#2560" id="2560">2560</a>
+<a href="#2561" id="2561">2561</a>
+<a href="#2562" id="2562">2562</a>
+<a href="#2563" id="2563">2563</a>
+<a href="#2564" id="2564">2564</a>
+<a href="#2565" id="2565">2565</a>
+<a href="#2566" id="2566">2566</a>
+<a href="#2567" id="2567">2567</a>
+<a href="#2568" id="2568">2568</a>
+<a href="#2569" id="2569">2569</a>
+<a href="#2570" id="2570">2570</a>
+<a href="#2571" id="2571">2571</a>
+<a href="#2572" id="2572">2572</a>
+<a href="#2573" id="2573">2573</a>
+<a href="#2574" id="2574">2574</a>
+<a href="#2575" id="2575">2575</a>
+<a href="#2576" id="2576">2576</a>
+<a href="#2577" id="2577">2577</a>
+<a href="#2578" id="2578">2578</a>
+<a href="#2579" id="2579">2579</a>
+<a href="#2580" id="2580">2580</a>
+<a href="#2581" id="2581">2581</a>
+<a href="#2582" id="2582">2582</a>
+<a href="#2583" id="2583">2583</a>
+<a href="#2584" id="2584">2584</a>
+<a href="#2585" id="2585">2585</a>
+<a href="#2586" id="2586">2586</a>
+<a href="#2587" id="2587">2587</a>
+<a href="#2588" id="2588">2588</a>
+<a href="#2589" id="2589">2589</a>
+<a href="#2590" id="2590">2590</a>
+<a href="#2591" id="2591">2591</a>
+<a href="#2592" id="2592">2592</a>
+<a href="#2593" id="2593">2593</a>
+<a href="#2594" id="2594">2594</a>
+<a href="#2595" id="2595">2595</a>
+<a href="#2596" id="2596">2596</a>
+<a href="#2597" id="2597">2597</a>
+<a href="#2598" id="2598">2598</a>
+<a href="#2599" id="2599">2599</a>
+<a href="#2600" id="2600">2600</a>
+<a href="#2601" id="2601">2601</a>
+<a href="#2602" id="2602">2602</a>
+<a href="#2603" id="2603">2603</a>
+<a href="#2604" id="2604">2604</a>
+<a href="#2605" id="2605">2605</a>
+<a href="#2606" id="2606">2606</a>
+<a href="#2607" id="2607">2607</a>
+<a href="#2608" id="2608">2608</a>
+<a href="#2609" id="2609">2609</a>
+<a href="#2610" id="2610">2610</a>
+<a href="#2611" id="2611">2611</a>
+<a href="#2612" id="2612">2612</a>
+<a href="#2613" id="2613">2613</a>
+<a href="#2614" id="2614">2614</a>
+<a href="#2615" id="2615">2615</a>
+<a href="#2616" id="2616">2616</a>
+<a href="#2617" id="2617">2617</a>
+<a href="#2618" id="2618">2618</a>
+<a href="#2619" id="2619">2619</a>
+<a href="#2620" id="2620">2620</a>
+<a href="#2621" id="2621">2621</a>
+<a href="#2622" id="2622">2622</a>
+<a href="#2623" id="2623">2623</a>
+<a href="#2624" id="2624">2624</a>
+<a href="#2625" id="2625">2625</a>
+<a href="#2626" id="2626">2626</a>
+<a href="#2627" id="2627">2627</a>
+<a href="#2628" id="2628">2628</a>
+<a href="#2629" id="2629">2629</a>
+<a href="#2630" id="2630">2630</a>
+<a href="#2631" id="2631">2631</a>
+<a href="#2632" id="2632">2632</a>
+<a href="#2633" id="2633">2633</a>
+<a href="#2634" id="2634">2634</a>
+<a href="#2635" id="2635">2635</a>
+<a href="#2636" id="2636">2636</a>
+<a href="#2637" id="2637">2637</a>
+<a href="#2638" id="2638">2638</a>
+<a href="#2639" id="2639">2639</a>
+<a href="#2640" id="2640">2640</a>
+<a href="#2641" id="2641">2641</a>
+<a href="#2642" id="2642">2642</a>
+<a href="#2643" id="2643">2643</a>
+<a href="#2644" id="2644">2644</a>
+<a href="#2645" id="2645">2645</a>
+<a href="#2646" id="2646">2646</a>
+<a href="#2647" id="2647">2647</a>
+<a href="#2648" id="2648">2648</a>
+<a href="#2649" id="2649">2649</a>
+<a href="#2650" id="2650">2650</a>
+<a href="#2651" id="2651">2651</a>
+<a href="#2652" id="2652">2652</a>
+<a href="#2653" id="2653">2653</a>
+<a href="#2654" id="2654">2654</a>
+<a href="#2655" id="2655">2655</a>
+<a href="#2656" id="2656">2656</a>
+<a href="#2657" id="2657">2657</a>
+<a href="#2658" id="2658">2658</a>
+<a href="#2659" id="2659">2659</a>
+<a href="#2660" id="2660">2660</a>
+<a href="#2661" id="2661">2661</a>
+<a href="#2662" id="2662">2662</a>
+<a href="#2663" id="2663">2663</a>
+<a href="#2664" id="2664">2664</a>
+<a href="#2665" id="2665">2665</a>
+<a href="#2666" id="2666">2666</a>
+<a href="#2667" id="2667">2667</a>
+<a href="#2668" id="2668">2668</a>
+<a href="#2669" id="2669">2669</a>
+<a href="#2670" id="2670">2670</a>
+<a href="#2671" id="2671">2671</a>
+<a href="#2672" id="2672">2672</a>
+<a href="#2673" id="2673">2673</a>
+<a href="#2674" id="2674">2674</a>
+<a href="#2675" id="2675">2675</a>
+<a href="#2676" id="2676">2676</a>
+<a href="#2677" id="2677">2677</a>
+<a href="#2678" id="2678">2678</a>
+<a href="#2679" id="2679">2679</a>
+<a href="#2680" id="2680">2680</a>
+<a href="#2681" id="2681">2681</a>
+<a href="#2682" id="2682">2682</a>
+<a href="#2683" id="2683">2683</a>
+<a href="#2684" id="2684">2684</a>
+<a href="#2685" id="2685">2685</a>
+<a href="#2686" id="2686">2686</a>
+<a href="#2687" id="2687">2687</a>
+<a href="#2688" id="2688">2688</a>
+<a href="#2689" id="2689">2689</a>
+<a href="#2690" id="2690">2690</a>
+<a href="#2691" id="2691">2691</a>
+<a href="#2692" id="2692">2692</a>
+<a href="#2693" id="2693">2693</a>
+<a href="#2694" id="2694">2694</a>
+<a href="#2695" id="2695">2695</a>
+<a href="#2696" id="2696">2696</a>
+<a href="#2697" id="2697">2697</a>
+<a href="#2698" id="2698">2698</a>
+<a href="#2699" id="2699">2699</a>
+<a href="#2700" id="2700">2700</a>
+<a href="#2701" id="2701">2701</a>
+<a href="#2702" id="2702">2702</a>
+<a href="#2703" id="2703">2703</a>
+<a href="#2704" id="2704">2704</a>
+<a href="#2705" id="2705">2705</a>
+<a href="#2706" id="2706">2706</a>
+<a href="#2707" id="2707">2707</a>
+<a href="#2708" id="2708">2708</a>
+<a href="#2709" id="2709">2709</a>
+<a href="#2710" id="2710">2710</a>
+<a href="#2711" id="2711">2711</a>
+<a href="#2712" id="2712">2712</a>
+<a href="#2713" id="2713">2713</a>
+<a href="#2714" id="2714">2714</a>
+<a href="#2715" id="2715">2715</a>
+<a href="#2716" id="2716">2716</a>
+<a href="#2717" id="2717">2717</a>
+<a href="#2718" id="2718">2718</a>
+<a href="#2719" id="2719">2719</a>
+<a href="#2720" id="2720">2720</a>
+<a href="#2721" id="2721">2721</a>
+<a href="#2722" id="2722">2722</a>
+<a href="#2723" id="2723">2723</a>
+<a href="#2724" id="2724">2724</a>
+<a href="#2725" id="2725">2725</a>
+<a href="#2726" id="2726">2726</a>
+<a href="#2727" id="2727">2727</a>
+<a href="#2728" id="2728">2728</a>
+<a href="#2729" id="2729">2729</a>
+<a href="#2730" id="2730">2730</a>
+<a href="#2731" id="2731">2731</a>
+<a href="#2732" id="2732">2732</a>
+<a href="#2733" id="2733">2733</a>
+<a href="#2734" id="2734">2734</a>
+<a href="#2735" id="2735">2735</a>
+<a href="#2736" id="2736">2736</a>
+<a href="#2737" id="2737">2737</a>
+<a href="#2738" id="2738">2738</a>
+<a href="#2739" id="2739">2739</a>
+<a href="#2740" id="2740">2740</a>
+<a href="#2741" id="2741">2741</a>
+<a href="#2742" id="2742">2742</a>
+<a href="#2743" id="2743">2743</a>
+<a href="#2744" id="2744">2744</a>
+<a href="#2745" id="2745">2745</a>
+<a href="#2746" id="2746">2746</a>
+<a href="#2747" id="2747">2747</a>
+<a href="#2748" id="2748">2748</a>
+<a href="#2749" id="2749">2749</a>
+<a href="#2750" id="2750">2750</a>
+<a href="#2751" id="2751">2751</a>
+<a href="#2752" id="2752">2752</a>
+<a href="#2753" id="2753">2753</a>
+<a href="#2754" id="2754">2754</a>
+<a href="#2755" id="2755">2755</a>
+<a href="#2756" id="2756">2756</a>
+<a href="#2757" id="2757">2757</a>
+<a href="#2758" id="2758">2758</a>
+<a href="#2759" id="2759">2759</a>
+<a href="#2760" id="2760">2760</a>
+<a href="#2761" id="2761">2761</a>
+<a href="#2762" id="2762">2762</a>
+<a href="#2763" id="2763">2763</a>
+<a href="#2764" id="2764">2764</a>
+<a href="#2765" id="2765">2765</a>
+<a href="#2766" id="2766">2766</a>
+<a href="#2767" id="2767">2767</a>
+<a href="#2768" id="2768">2768</a>
+<a href="#2769" id="2769">2769</a>
+<a href="#2770" id="2770">2770</a>
+<a href="#2771" id="2771">2771</a>
+<a href="#2772" id="2772">2772</a>
+<a href="#2773" id="2773">2773</a>
+<a href="#2774" id="2774">2774</a>
+<a href="#2775" id="2775">2775</a>
+<a href="#2776" id="2776">2776</a>
+<a href="#2777" id="2777">2777</a>
+<a href="#2778" id="2778">2778</a>
+<a href="#2779" id="2779">2779</a>
+<a href="#2780" id="2780">2780</a>
+<a href="#2781" id="2781">2781</a>
+<a href="#2782" id="2782">2782</a>
+<a href="#2783" id="2783">2783</a>
+<a href="#2784" id="2784">2784</a>
+<a href="#2785" id="2785">2785</a>
+<a href="#2786" id="2786">2786</a>
+<a href="#2787" id="2787">2787</a>
+<a href="#2788" id="2788">2788</a>
+<a href="#2789" id="2789">2789</a>
+<a href="#2790" id="2790">2790</a>
+<a href="#2791" id="2791">2791</a>
+<a href="#2792" id="2792">2792</a>
+<a href="#2793" id="2793">2793</a>
+<a href="#2794" id="2794">2794</a>
+<a href="#2795" id="2795">2795</a>
+<a href="#2796" id="2796">2796</a>
+<a href="#2797" id="2797">2797</a>
+<a href="#2798" id="2798">2798</a>
+<a href="#2799" id="2799">2799</a>
+<a href="#2800" id="2800">2800</a>
+<a href="#2801" id="2801">2801</a>
+<a href="#2802" id="2802">2802</a>
+<a href="#2803" id="2803">2803</a>
+<a href="#2804" id="2804">2804</a>
+<a href="#2805" id="2805">2805</a>
+<a href="#2806" id="2806">2806</a>
+<a href="#2807" id="2807">2807</a>
+<a href="#2808" id="2808">2808</a>
+<a href="#2809" id="2809">2809</a>
+<a href="#2810" id="2810">2810</a>
+<a href="#2811" id="2811">2811</a>
+<a href="#2812" id="2812">2812</a>
+<a href="#2813" id="2813">2813</a>
+<a href="#2814" id="2814">2814</a>
+<a href="#2815" id="2815">2815</a>
+<a href="#2816" id="2816">2816</a>
+<a href="#2817" id="2817">2817</a>
+<a href="#2818" id="2818">2818</a>
+<a href="#2819" id="2819">2819</a>
+<a href="#2820" id="2820">2820</a>
+<a href="#2821" id="2821">2821</a>
+<a href="#2822" id="2822">2822</a>
+<a href="#2823" id="2823">2823</a>
+<a href="#2824" id="2824">2824</a>
+<a href="#2825" id="2825">2825</a>
+<a href="#2826" id="2826">2826</a>
+<a href="#2827" id="2827">2827</a>
+<a href="#2828" id="2828">2828</a>
+<a href="#2829" id="2829">2829</a>
+<a href="#2830" id="2830">2830</a>
+<a href="#2831" id="2831">2831</a>
+<a href="#2832" id="2832">2832</a>
+<a href="#2833" id="2833">2833</a>
+<a href="#2834" id="2834">2834</a>
+<a href="#2835" id="2835">2835</a>
+<a href="#2836" id="2836">2836</a>
+<a href="#2837" id="2837">2837</a>
+<a href="#2838" id="2838">2838</a>
+<a href="#2839" id="2839">2839</a>
+<a href="#2840" id="2840">2840</a>
+<a href="#2841" id="2841">2841</a>
+<a href="#2842" id="2842">2842</a>
+<a href="#2843" id="2843">2843</a>
+<a href="#2844" id="2844">2844</a>
+<a href="#2845" id="2845">2845</a>
+<a href="#2846" id="2846">2846</a>
+<a href="#2847" id="2847">2847</a>
+<a href="#2848" id="2848">2848</a>
+<a href="#2849" id="2849">2849</a>
+<a href="#2850" id="2850">2850</a>
+<a href="#2851" id="2851">2851</a>
+<a href="#2852" id="2852">2852</a>
+<a href="#2853" id="2853">2853</a>
+<a href="#2854" id="2854">2854</a>
+<a href="#2855" id="2855">2855</a>
+<a href="#2856" id="2856">2856</a>
+<a href="#2857" id="2857">2857</a>
+<a href="#2858" id="2858">2858</a>
+<a href="#2859" id="2859">2859</a>
+<a href="#2860" id="2860">2860</a>
+<a href="#2861" id="2861">2861</a>
+<a href="#2862" id="2862">2862</a>
+<a href="#2863" id="2863">2863</a>
+<a href="#2864" id="2864">2864</a>
+<a href="#2865" id="2865">2865</a>
+<a href="#2866" id="2866">2866</a>
+<a href="#2867" id="2867">2867</a>
+<a href="#2868" id="2868">2868</a>
+<a href="#2869" id="2869">2869</a>
+<a href="#2870" id="2870">2870</a>
+<a href="#2871" id="2871">2871</a>
+<a href="#2872" id="2872">2872</a>
+<a href="#2873" id="2873">2873</a>
+<a href="#2874" id="2874">2874</a>
+<a href="#2875" id="2875">2875</a>
+<a href="#2876" id="2876">2876</a>
+<a href="#2877" id="2877">2877</a>
+<a href="#2878" id="2878">2878</a>
+<a href="#2879" id="2879">2879</a>
+<a href="#2880" id="2880">2880</a>
+<a href="#2881" id="2881">2881</a>
+<a href="#2882" id="2882">2882</a>
+<a href="#2883" id="2883">2883</a>
+<a href="#2884" id="2884">2884</a>
+<a href="#2885" id="2885">2885</a>
+<a href="#2886" id="2886">2886</a>
+<a href="#2887" id="2887">2887</a>
+<a href="#2888" id="2888">2888</a>
+<a href="#2889" id="2889">2889</a>
+<a href="#2890" id="2890">2890</a>
+<a href="#2891" id="2891">2891</a>
+<a href="#2892" id="2892">2892</a>
+<a href="#2893" id="2893">2893</a>
+<a href="#2894" id="2894">2894</a>
+<a href="#2895" id="2895">2895</a>
+<a href="#2896" id="2896">2896</a>
+<a href="#2897" id="2897">2897</a>
+<a href="#2898" id="2898">2898</a>
+<a href="#2899" id="2899">2899</a>
+<a href="#2900" id="2900">2900</a>
+<a href="#2901" id="2901">2901</a>
+<a href="#2902" id="2902">2902</a>
+<a href="#2903" id="2903">2903</a>
+<a href="#2904" id="2904">2904</a>
+<a href="#2905" id="2905">2905</a>
+<a href="#2906" id="2906">2906</a>
+<a href="#2907" id="2907">2907</a>
+<a href="#2908" id="2908">2908</a>
+<a href="#2909" id="2909">2909</a>
+<a href="#2910" id="2910">2910</a>
+<a href="#2911" id="2911">2911</a>
+<a href="#2912" id="2912">2912</a>
+<a href="#2913" id="2913">2913</a>
+<a href="#2914" id="2914">2914</a>
+<a href="#2915" id="2915">2915</a>
+<a href="#2916" id="2916">2916</a>
+<a href="#2917" id="2917">2917</a>
+<a href="#2918" id="2918">2918</a>
+<a href="#2919" id="2919">2919</a>
+<a href="#2920" id="2920">2920</a>
+<a href="#2921" id="2921">2921</a>
+<a href="#2922" id="2922">2922</a>
+<a href="#2923" id="2923">2923</a>
+<a href="#2924" id="2924">2924</a>
+<a href="#2925" id="2925">2925</a>
+<a href="#2926" id="2926">2926</a>
+<a href="#2927" id="2927">2927</a>
+<a href="#2928" id="2928">2928</a>
+<a href="#2929" id="2929">2929</a>
+<a href="#2930" id="2930">2930</a>
+<a href="#2931" id="2931">2931</a>
+<a href="#2932" id="2932">2932</a>
+<a href="#2933" id="2933">2933</a>
+<a href="#2934" id="2934">2934</a>
+<a href="#2935" id="2935">2935</a>
+<a href="#2936" id="2936">2936</a>
+<a href="#2937" id="2937">2937</a>
+<a href="#2938" id="2938">2938</a>
+<a href="#2939" id="2939">2939</a>
+<a href="#2940" id="2940">2940</a>
+<a href="#2941" id="2941">2941</a>
+<a href="#2942" id="2942">2942</a>
+<a href="#2943" id="2943">2943</a>
+<a href="#2944" id="2944">2944</a>
+<a href="#2945" id="2945">2945</a>
+<a href="#2946" id="2946">2946</a>
+<a href="#2947" id="2947">2947</a>
+<a href="#2948" id="2948">2948</a>
+<a href="#2949" id="2949">2949</a>
+<a href="#2950" id="2950">2950</a>
+<a href="#2951" id="2951">2951</a>
+<a href="#2952" id="2952">2952</a>
+<a href="#2953" id="2953">2953</a>
+<a href="#2954" id="2954">2954</a>
+<a href="#2955" id="2955">2955</a>
+<a href="#2956" id="2956">2956</a>
+<a href="#2957" id="2957">2957</a>
+<a href="#2958" id="2958">2958</a>
+<a href="#2959" id="2959">2959</a>
+<a href="#2960" id="2960">2960</a>
+<a href="#2961" id="2961">2961</a>
+<a href="#2962" id="2962">2962</a>
+<a href="#2963" id="2963">2963</a>
+<a href="#2964" id="2964">2964</a>
+<a href="#2965" id="2965">2965</a>
+<a href="#2966" id="2966">2966</a>
+<a href="#2967" id="2967">2967</a>
+<a href="#2968" id="2968">2968</a>
+<a href="#2969" id="2969">2969</a>
+<a href="#2970" id="2970">2970</a>
+<a href="#2971" id="2971">2971</a>
+<a href="#2972" id="2972">2972</a>
+<a href="#2973" id="2973">2973</a>
+<a href="#2974" id="2974">2974</a>
+<a href="#2975" id="2975">2975</a>
+<a href="#2976" id="2976">2976</a>
+<a href="#2977" id="2977">2977</a>
+<a href="#2978" id="2978">2978</a>
+<a href="#2979" id="2979">2979</a>
+<a href="#2980" id="2980">2980</a>
+<a href="#2981" id="2981">2981</a>
+<a href="#2982" id="2982">2982</a>
+<a href="#2983" id="2983">2983</a>
+<a href="#2984" id="2984">2984</a>
+<a href="#2985" id="2985">2985</a>
+<a href="#2986" id="2986">2986</a>
+<a href="#2987" id="2987">2987</a>
+<a href="#2988" id="2988">2988</a>
+<a href="#2989" id="2989">2989</a>
+<a href="#2990" id="2990">2990</a>
+<a href="#2991" id="2991">2991</a>
+<a href="#2992" id="2992">2992</a>
+<a href="#2993" id="2993">2993</a>
+<a href="#2994" id="2994">2994</a>
+<a href="#2995" id="2995">2995</a>
+<a href="#2996" id="2996">2996</a>
+<a href="#2997" id="2997">2997</a>
+<a href="#2998" id="2998">2998</a>
+<a href="#2999" id="2999">2999</a>
+<a href="#3000" id="3000">3000</a>
+<a href="#3001" id="3001">3001</a>
+<a href="#3002" id="3002">3002</a>
+<a href="#3003" id="3003">3003</a>
+<a href="#3004" id="3004">3004</a>
+<a href="#3005" id="3005">3005</a>
+<a href="#3006" id="3006">3006</a>
+<a href="#3007" id="3007">3007</a>
+<a href="#3008" id="3008">3008</a>
+<a href="#3009" id="3009">3009</a>
+<a href="#3010" id="3010">3010</a>
+<a href="#3011" id="3011">3011</a>
+<a href="#3012" id="3012">3012</a>
+<a href="#3013" id="3013">3013</a>
+<a href="#3014" id="3014">3014</a>
+<a href="#3015" id="3015">3015</a>
+<a href="#3016" id="3016">3016</a>
+<a href="#3017" id="3017">3017</a>
+<a href="#3018" id="3018">3018</a>
+<a href="#3019" id="3019">3019</a>
+<a href="#3020" id="3020">3020</a>
+<a href="#3021" id="3021">3021</a>
+<a href="#3022" id="3022">3022</a>
+<a href="#3023" id="3023">3023</a>
+<a href="#3024" id="3024">3024</a>
+<a href="#3025" id="3025">3025</a>
+<a href="#3026" id="3026">3026</a>
+<a href="#3027" id="3027">3027</a>
+<a href="#3028" id="3028">3028</a>
+<a href="#3029" id="3029">3029</a>
+<a href="#3030" id="3030">3030</a>
+<a href="#3031" id="3031">3031</a>
+<a href="#3032" id="3032">3032</a>
+<a href="#3033" id="3033">3033</a>
+<a href="#3034" id="3034">3034</a>
+<a href="#3035" id="3035">3035</a>
+<a href="#3036" id="3036">3036</a>
+<a href="#3037" id="3037">3037</a>
+<a href="#3038" id="3038">3038</a>
+<a href="#3039" id="3039">3039</a>
+<a href="#3040" id="3040">3040</a>
+<a href="#3041" id="3041">3041</a>
+<a href="#3042" id="3042">3042</a>
+<a href="#3043" id="3043">3043</a>
+<a href="#3044" id="3044">3044</a>
+<a href="#3045" id="3045">3045</a>
+<a href="#3046" id="3046">3046</a>
+<a href="#3047" id="3047">3047</a>
+<a href="#3048" id="3048">3048</a>
+<a href="#3049" id="3049">3049</a>
+<a href="#3050" id="3050">3050</a>
+<a href="#3051" id="3051">3051</a>
+<a href="#3052" id="3052">3052</a>
+<a href="#3053" id="3053">3053</a>
+<a href="#3054" id="3054">3054</a>
+<a href="#3055" id="3055">3055</a>
+<a href="#3056" id="3056">3056</a>
+<a href="#3057" id="3057">3057</a>
+<a href="#3058" id="3058">3058</a>
+<a href="#3059" id="3059">3059</a>
+<a href="#3060" id="3060">3060</a>
+<a href="#3061" id="3061">3061</a>
+<a href="#3062" id="3062">3062</a>
+<a href="#3063" id="3063">3063</a>
+<a href="#3064" id="3064">3064</a>
+<a href="#3065" id="3065">3065</a>
+<a href="#3066" id="3066">3066</a>
+<a href="#3067" id="3067">3067</a>
+<a href="#3068" id="3068">3068</a>
+<a href="#3069" id="3069">3069</a>
+<a href="#3070" id="3070">3070</a>
+<a href="#3071" id="3071">3071</a>
+<a href="#3072" id="3072">3072</a>
+<a href="#3073" id="3073">3073</a>
+<a href="#3074" id="3074">3074</a>
+<a href="#3075" id="3075">3075</a>
+<a href="#3076" id="3076">3076</a>
+<a href="#3077" id="3077">3077</a>
+<a href="#3078" id="3078">3078</a>
+<a href="#3079" id="3079">3079</a>
+<a href="#3080" id="3080">3080</a>
+<a href="#3081" id="3081">3081</a>
+<a href="#3082" id="3082">3082</a>
+<a href="#3083" id="3083">3083</a>
+<a href="#3084" id="3084">3084</a>
+<a href="#3085" id="3085">3085</a>
+<a href="#3086" id="3086">3086</a>
+<a href="#3087" id="3087">3087</a>
+<a href="#3088" id="3088">3088</a>
+<a href="#3089" id="3089">3089</a>
+<a href="#3090" id="3090">3090</a>
+<a href="#3091" id="3091">3091</a>
+<a href="#3092" id="3092">3092</a>
+<a href="#3093" id="3093">3093</a>
+<a href="#3094" id="3094">3094</a>
+<a href="#3095" id="3095">3095</a>
+<a href="#3096" id="3096">3096</a>
+<a href="#3097" id="3097">3097</a>
+<a href="#3098" id="3098">3098</a>
+<a href="#3099" id="3099">3099</a>
+<a href="#3100" id="3100">3100</a>
+<a href="#3101" id="3101">3101</a>
+<a href="#3102" id="3102">3102</a>
+<a href="#3103" id="3103">3103</a>
+<a href="#3104" id="3104">3104</a>
+<a href="#3105" id="3105">3105</a>
+<a href="#3106" id="3106">3106</a>
+<a href="#3107" id="3107">3107</a>
+<a href="#3108" id="3108">3108</a>
+<a href="#3109" id="3109">3109</a>
+<a href="#3110" id="3110">3110</a>
+<a href="#3111" id="3111">3111</a>
+<a href="#3112" id="3112">3112</a>
+<a href="#3113" id="3113">3113</a>
+<a href="#3114" id="3114">3114</a>
+<a href="#3115" id="3115">3115</a>
+<a href="#3116" id="3116">3116</a>
+<a href="#3117" id="3117">3117</a>
+<a href="#3118" id="3118">3118</a>
+<a href="#3119" id="3119">3119</a>
+<a href="#3120" id="3120">3120</a>
+<a href="#3121" id="3121">3121</a>
+<a href="#3122" id="3122">3122</a>
+<a href="#3123" id="3123">3123</a>
+<a href="#3124" id="3124">3124</a>
+<a href="#3125" id="3125">3125</a>
+<a href="#3126" id="3126">3126</a>
+<a href="#3127" id="3127">3127</a>
+<a href="#3128" id="3128">3128</a>
+<a href="#3129" id="3129">3129</a>
+<a href="#3130" id="3130">3130</a>
+<a href="#3131" id="3131">3131</a>
+<a href="#3132" id="3132">3132</a>
+<a href="#3133" id="3133">3133</a>
+<a href="#3134" id="3134">3134</a>
+<a href="#3135" id="3135">3135</a>
+<a href="#3136" id="3136">3136</a>
+<a href="#3137" id="3137">3137</a>
+<a href="#3138" id="3138">3138</a>
+<a href="#3139" id="3139">3139</a>
+<a href="#3140" id="3140">3140</a>
+<a href="#3141" id="3141">3141</a>
+<a href="#3142" id="3142">3142</a>
+<a href="#3143" id="3143">3143</a>
+<a href="#3144" id="3144">3144</a>
+<a href="#3145" id="3145">3145</a>
+<a href="#3146" id="3146">3146</a>
+<a href="#3147" id="3147">3147</a>
+<a href="#3148" id="3148">3148</a>
+<a href="#3149" id="3149">3149</a>
+<a href="#3150" id="3150">3150</a>
+<a href="#3151" id="3151">3151</a>
+<a href="#3152" id="3152">3152</a>
+<a href="#3153" id="3153">3153</a>
+<a href="#3154" id="3154">3154</a>
+<a href="#3155" id="3155">3155</a>
+<a href="#3156" id="3156">3156</a>
+<a href="#3157" id="3157">3157</a>
+<a href="#3158" id="3158">3158</a>
+<a href="#3159" id="3159">3159</a>
+<a href="#3160" id="3160">3160</a>
+<a href="#3161" id="3161">3161</a>
+<a href="#3162" id="3162">3162</a>
+<a href="#3163" id="3163">3163</a>
+<a href="#3164" id="3164">3164</a>
+<a href="#3165" id="3165">3165</a>
+<a href="#3166" id="3166">3166</a>
+<a href="#3167" id="3167">3167</a>
+<a href="#3168" id="3168">3168</a>
+<a href="#3169" id="3169">3169</a>
+<a href="#3170" id="3170">3170</a>
+<a href="#3171" id="3171">3171</a>
+<a href="#3172" id="3172">3172</a>
+<a href="#3173" id="3173">3173</a>
+<a href="#3174" id="3174">3174</a>
+<a href="#3175" id="3175">3175</a>
+<a href="#3176" id="3176">3176</a>
+<a href="#3177" id="3177">3177</a>
+<a href="#3178" id="3178">3178</a>
+<a href="#3179" id="3179">3179</a>
+<a href="#3180" id="3180">3180</a>
+<a href="#3181" id="3181">3181</a>
+<a href="#3182" id="3182">3182</a>
+<a href="#3183" id="3183">3183</a>
+<a href="#3184" id="3184">3184</a>
+<a href="#3185" id="3185">3185</a>
+<a href="#3186" id="3186">3186</a>
+<a href="#3187" id="3187">3187</a>
+<a href="#3188" id="3188">3188</a>
+<a href="#3189" id="3189">3189</a>
+<a href="#3190" id="3190">3190</a>
+<a href="#3191" id="3191">3191</a>
+<a href="#3192" id="3192">3192</a>
+<a href="#3193" id="3193">3193</a>
+<a href="#3194" id="3194">3194</a>
+<a href="#3195" id="3195">3195</a>
+<a href="#3196" id="3196">3196</a>
+<a href="#3197" id="3197">3197</a>
+<a href="#3198" id="3198">3198</a>
+<a href="#3199" id="3199">3199</a>
+<a href="#3200" id="3200">3200</a>
+<a href="#3201" id="3201">3201</a>
+<a href="#3202" id="3202">3202</a>
+<a href="#3203" id="3203">3203</a>
+<a href="#3204" id="3204">3204</a>
+<a href="#3205" id="3205">3205</a>
+<a href="#3206" id="3206">3206</a>
+<a href="#3207" id="3207">3207</a>
+<a href="#3208" id="3208">3208</a>
+<a href="#3209" id="3209">3209</a>
+<a href="#3210" id="3210">3210</a>
+<a href="#3211" id="3211">3211</a>
+<a href="#3212" id="3212">3212</a>
+<a href="#3213" id="3213">3213</a>
+<a href="#3214" id="3214">3214</a>
+<a href="#3215" id="3215">3215</a>
+<a href="#3216" id="3216">3216</a>
+<a href="#3217" id="3217">3217</a>
+<a href="#3218" id="3218">3218</a>
+<a href="#3219" id="3219">3219</a>
+<a href="#3220" id="3220">3220</a>
+<a href="#3221" id="3221">3221</a>
+<a href="#3222" id="3222">3222</a>
+<a href="#3223" id="3223">3223</a>
+<a href="#3224" id="3224">3224</a>
+<a href="#3225" id="3225">3225</a>
+<a href="#3226" id="3226">3226</a>
+<a href="#3227" id="3227">3227</a>
+<a href="#3228" id="3228">3228</a>
+<a href="#3229" id="3229">3229</a>
+<a href="#3230" id="3230">3230</a>
+<a href="#3231" id="3231">3231</a>
+<a href="#3232" id="3232">3232</a>
+<a href="#3233" id="3233">3233</a>
+<a href="#3234" id="3234">3234</a>
+<a href="#3235" id="3235">3235</a>
+<a href="#3236" id="3236">3236</a>
+<a href="#3237" id="3237">3237</a>
+<a href="#3238" id="3238">3238</a>
+<a href="#3239" id="3239">3239</a>
+<a href="#3240" id="3240">3240</a>
+<a href="#3241" id="3241">3241</a>
+<a href="#3242" id="3242">3242</a>
+<a href="#3243" id="3243">3243</a>
+<a href="#3244" id="3244">3244</a>
+<a href="#3245" id="3245">3245</a>
+<a href="#3246" id="3246">3246</a>
+<a href="#3247" id="3247">3247</a>
+<a href="#3248" id="3248">3248</a>
+<a href="#3249" id="3249">3249</a>
+<a href="#3250" id="3250">3250</a>
+<a href="#3251" id="3251">3251</a>
+<a href="#3252" id="3252">3252</a>
+<a href="#3253" id="3253">3253</a>
+<a href="#3254" id="3254">3254</a>
+<a href="#3255" id="3255">3255</a>
+<a href="#3256" id="3256">3256</a>
+<a href="#3257" id="3257">3257</a>
+<a href="#3258" id="3258">3258</a>
+<a href="#3259" id="3259">3259</a>
+<a href="#3260" id="3260">3260</a>
+<a href="#3261" id="3261">3261</a>
+<a href="#3262" id="3262">3262</a>
+<a href="#3263" id="3263">3263</a>
+<a href="#3264" id="3264">3264</a>
+<a href="#3265" id="3265">3265</a>
+<a href="#3266" id="3266">3266</a>
+<a href="#3267" id="3267">3267</a>
+<a href="#3268" id="3268">3268</a>
+<a href="#3269" id="3269">3269</a>
+<a href="#3270" id="3270">3270</a>
+<a href="#3271" id="3271">3271</a>
+<a href="#3272" id="3272">3272</a>
+<a href="#3273" id="3273">3273</a>
+<a href="#3274" id="3274">3274</a>
+<a href="#3275" id="3275">3275</a>
+<a href="#3276" id="3276">3276</a>
+<a href="#3277" id="3277">3277</a>
+<a href="#3278" id="3278">3278</a>
+<a href="#3279" id="3279">3279</a>
+<a href="#3280" id="3280">3280</a>
+<a href="#3281" id="3281">3281</a>
+<a href="#3282" id="3282">3282</a>
+<a href="#3283" id="3283">3283</a>
+<a href="#3284" id="3284">3284</a>
+<a href="#3285" id="3285">3285</a>
+<a href="#3286" id="3286">3286</a>
+<a href="#3287" id="3287">3287</a>
+<a href="#3288" id="3288">3288</a>
+<a href="#3289" id="3289">3289</a>
+<a href="#3290" id="3290">3290</a>
+<a href="#3291" id="3291">3291</a>
+<a href="#3292" id="3292">3292</a>
+<a href="#3293" id="3293">3293</a>
+<a href="#3294" id="3294">3294</a>
+<a href="#3295" id="3295">3295</a>
+<a href="#3296" id="3296">3296</a>
+<a href="#3297" id="3297">3297</a>
+<a href="#3298" id="3298">3298</a>
+<a href="#3299" id="3299">3299</a>
+<a href="#3300" id="3300">3300</a>
+<a href="#3301" id="3301">3301</a>
+<a href="#3302" id="3302">3302</a>
+<a href="#3303" id="3303">3303</a>
+<a href="#3304" id="3304">3304</a>
+<a href="#3305" id="3305">3305</a>
+<a href="#3306" id="3306">3306</a>
+<a href="#3307" id="3307">3307</a>
+<a href="#3308" id="3308">3308</a>
+<a href="#3309" id="3309">3309</a>
+<a href="#3310" id="3310">3310</a>
+<a href="#3311" id="3311">3311</a>
+<a href="#3312" id="3312">3312</a>
+<a href="#3313" id="3313">3313</a>
+<a href="#3314" id="3314">3314</a>
+<a href="#3315" id="3315">3315</a>
+<a href="#3316" id="3316">3316</a>
+<a href="#3317" id="3317">3317</a>
+<a href="#3318" id="3318">3318</a>
+<a href="#3319" id="3319">3319</a>
+<a href="#3320" id="3320">3320</a>
+<a href="#3321" id="3321">3321</a>
+<a href="#3322" id="3322">3322</a>
+<a href="#3323" id="3323">3323</a>
+<a href="#3324" id="3324">3324</a>
+<a href="#3325" id="3325">3325</a>
+<a href="#3326" id="3326">3326</a>
+<a href="#3327" id="3327">3327</a>
+<a href="#3328" id="3328">3328</a>
+<a href="#3329" id="3329">3329</a>
+<a href="#3330" id="3330">3330</a>
+<a href="#3331" id="3331">3331</a>
+<a href="#3332" id="3332">3332</a>
+<a href="#3333" id="3333">3333</a>
+<a href="#3334" id="3334">3334</a>
+<a href="#3335" id="3335">3335</a>
+<a href="#3336" id="3336">3336</a>
+<a href="#3337" id="3337">3337</a>
+<a href="#3338" id="3338">3338</a>
+<a href="#3339" id="3339">3339</a>
+<a href="#3340" id="3340">3340</a>
+<a href="#3341" id="3341">3341</a>
+<a href="#3342" id="3342">3342</a>
+<a href="#3343" id="3343">3343</a>
+<a href="#3344" id="3344">3344</a>
+<a href="#3345" id="3345">3345</a>
+<a href="#3346" id="3346">3346</a>
+<a href="#3347" id="3347">3347</a>
+<a href="#3348" id="3348">3348</a>
+<a href="#3349" id="3349">3349</a>
+<a href="#3350" id="3350">3350</a>
+<a href="#3351" id="3351">3351</a>
+<a href="#3352" id="3352">3352</a>
+<a href="#3353" id="3353">3353</a>
+<a href="#3354" id="3354">3354</a>
+<a href="#3355" id="3355">3355</a>
+<a href="#3356" id="3356">3356</a>
+<a href="#3357" id="3357">3357</a>
+<a href="#3358" id="3358">3358</a>
+<a href="#3359" id="3359">3359</a>
+<a href="#3360" id="3360">3360</a>
+<a href="#3361" id="3361">3361</a>
+<a href="#3362" id="3362">3362</a>
+<a href="#3363" id="3363">3363</a>
+<a href="#3364" id="3364">3364</a>
+<a href="#3365" id="3365">3365</a>
+<a href="#3366" id="3366">3366</a>
+<a href="#3367" id="3367">3367</a>
+<a href="#3368" id="3368">3368</a>
+<a href="#3369" id="3369">3369</a>
+<a href="#3370" id="3370">3370</a>
+<a href="#3371" id="3371">3371</a>
+<a href="#3372" id="3372">3372</a>
+<a href="#3373" id="3373">3373</a>
+<a href="#3374" id="3374">3374</a>
+<a href="#3375" id="3375">3375</a>
+<a href="#3376" id="3376">3376</a>
+<a href="#3377" id="3377">3377</a>
+<a href="#3378" id="3378">3378</a>
+<a href="#3379" id="3379">3379</a>
+<a href="#3380" id="3380">3380</a>
+<a href="#3381" id="3381">3381</a>
+<a href="#3382" id="3382">3382</a>
+<a href="#3383" id="3383">3383</a>
+<a href="#3384" id="3384">3384</a>
+<a href="#3385" id="3385">3385</a>
+<a href="#3386" id="3386">3386</a>
+<a href="#3387" id="3387">3387</a>
+<a href="#3388" id="3388">3388</a>
+<a href="#3389" id="3389">3389</a>
+<a href="#3390" id="3390">3390</a>
+<a href="#3391" id="3391">3391</a>
+<a href="#3392" id="3392">3392</a>
+<a href="#3393" id="3393">3393</a>
+<a href="#3394" id="3394">3394</a>
+<a href="#3395" id="3395">3395</a>
+<a href="#3396" id="3396">3396</a>
+<a href="#3397" id="3397">3397</a>
+<a href="#3398" id="3398">3398</a>
+<a href="#3399" id="3399">3399</a>
+<a href="#3400" id="3400">3400</a>
+<a href="#3401" id="3401">3401</a>
+<a href="#3402" id="3402">3402</a>
+<a href="#3403" id="3403">3403</a>
+<a href="#3404" id="3404">3404</a>
+<a href="#3405" id="3405">3405</a>
+<a href="#3406" id="3406">3406</a>
+<a href="#3407" id="3407">3407</a>
+<a href="#3408" id="3408">3408</a>
+<a href="#3409" id="3409">3409</a>
+<a href="#3410" id="3410">3410</a>
+<a href="#3411" id="3411">3411</a>
+<a href="#3412" id="3412">3412</a>
+<a href="#3413" id="3413">3413</a>
+<a href="#3414" id="3414">3414</a>
+<a href="#3415" id="3415">3415</a>
+<a href="#3416" id="3416">3416</a>
+<a href="#3417" id="3417">3417</a>
+<a href="#3418" id="3418">3418</a>
+<a href="#3419" id="3419">3419</a>
+<a href="#3420" id="3420">3420</a>
+<a href="#3421" id="3421">3421</a>
+<a href="#3422" id="3422">3422</a>
+<a href="#3423" id="3423">3423</a>
+<a href="#3424" id="3424">3424</a>
+<a href="#3425" id="3425">3425</a>
+<a href="#3426" id="3426">3426</a>
+<a href="#3427" id="3427">3427</a>
+<a href="#3428" id="3428">3428</a>
+<a href="#3429" id="3429">3429</a>
+<a href="#3430" id="3430">3430</a>
+<a href="#3431" id="3431">3431</a>
+<a href="#3432" id="3432">3432</a>
+<a href="#3433" id="3433">3433</a>
+<a href="#3434" id="3434">3434</a>
+<a href="#3435" id="3435">3435</a>
+<a href="#3436" id="3436">3436</a>
+<a href="#3437" id="3437">3437</a>
+<a href="#3438" id="3438">3438</a>
+<a href="#3439" id="3439">3439</a>
+<a href="#3440" id="3440">3440</a>
+<a href="#3441" id="3441">3441</a>
+<a href="#3442" id="3442">3442</a>
+<a href="#3443" id="3443">3443</a>
+<a href="#3444" id="3444">3444</a>
+<a href="#3445" id="3445">3445</a>
+<a href="#3446" id="3446">3446</a>
+<a href="#3447" id="3447">3447</a>
+<a href="#3448" id="3448">3448</a>
+<a href="#3449" id="3449">3449</a>
+<a href="#3450" id="3450">3450</a>
+<a href="#3451" id="3451">3451</a>
+<a href="#3452" id="3452">3452</a>
+<a href="#3453" id="3453">3453</a>
+<a href="#3454" id="3454">3454</a>
+<a href="#3455" id="3455">3455</a>
+<a href="#3456" id="3456">3456</a>
+<a href="#3457" id="3457">3457</a>
+<a href="#3458" id="3458">3458</a>
+<a href="#3459" id="3459">3459</a>
+<a href="#3460" id="3460">3460</a>
+<a href="#3461" id="3461">3461</a>
+<a href="#3462" id="3462">3462</a>
+<a href="#3463" id="3463">3463</a>
+<a href="#3464" id="3464">3464</a>
+<a href="#3465" id="3465">3465</a>
+<a href="#3466" id="3466">3466</a>
+<a href="#3467" id="3467">3467</a>
+<a href="#3468" id="3468">3468</a>
+<a href="#3469" id="3469">3469</a>
+<a href="#3470" id="3470">3470</a>
+<a href="#3471" id="3471">3471</a>
+<a href="#3472" id="3472">3472</a>
+<a href="#3473" id="3473">3473</a>
+<a href="#3474" id="3474">3474</a>
+<a href="#3475" id="3475">3475</a>
+<a href="#3476" id="3476">3476</a>
+<a href="#3477" id="3477">3477</a>
+<a href="#3478" id="3478">3478</a>
+<a href="#3479" id="3479">3479</a>
+<a href="#3480" id="3480">3480</a>
+<a href="#3481" id="3481">3481</a>
+<a href="#3482" id="3482">3482</a>
+<a href="#3483" id="3483">3483</a>
+<a href="#3484" id="3484">3484</a>
+<a href="#3485" id="3485">3485</a>
+<a href="#3486" id="3486">3486</a>
+<a href="#3487" id="3487">3487</a>
+<a href="#3488" id="3488">3488</a>
+<a href="#3489" id="3489">3489</a>
+<a href="#3490" id="3490">3490</a>
+<a href="#3491" id="3491">3491</a>
+<a href="#3492" id="3492">3492</a>
+<a href="#3493" id="3493">3493</a>
+<a href="#3494" id="3494">3494</a>
+<a href="#3495" id="3495">3495</a>
+<a href="#3496" id="3496">3496</a>
+<a href="#3497" id="3497">3497</a>
+<a href="#3498" id="3498">3498</a>
+<a href="#3499" id="3499">3499</a>
+<a href="#3500" id="3500">3500</a>
+<a href="#3501" id="3501">3501</a>
+<a href="#3502" id="3502">3502</a>
+<a href="#3503" id="3503">3503</a>
+<a href="#3504" id="3504">3504</a>
+<a href="#3505" id="3505">3505</a>
+<a href="#3506" id="3506">3506</a>
+<a href="#3507" id="3507">3507</a>
+<a href="#3508" id="3508">3508</a>
+<a href="#3509" id="3509">3509</a>
+<a href="#3510" id="3510">3510</a>
+<a href="#3511" id="3511">3511</a>
+<a href="#3512" id="3512">3512</a>
+<a href="#3513" id="3513">3513</a>
+<a href="#3514" id="3514">3514</a>
+<a href="#3515" id="3515">3515</a>
+<a href="#3516" id="3516">3516</a>
+<a href="#3517" id="3517">3517</a>
+<a href="#3518" id="3518">3518</a>
+<a href="#3519" id="3519">3519</a>
+<a href="#3520" id="3520">3520</a>
+<a href="#3521" id="3521">3521</a>
+<a href="#3522" id="3522">3522</a>
+<a href="#3523" id="3523">3523</a>
+<a href="#3524" id="3524">3524</a>
+<a href="#3525" id="3525">3525</a>
+<a href="#3526" id="3526">3526</a>
+<a href="#3527" id="3527">3527</a>
+<a href="#3528" id="3528">3528</a>
+<a href="#3529" id="3529">3529</a>
+<a href="#3530" id="3530">3530</a>
+<a href="#3531" id="3531">3531</a>
+<a href="#3532" id="3532">3532</a>
+<a href="#3533" id="3533">3533</a>
+<a href="#3534" id="3534">3534</a>
+<a href="#3535" id="3535">3535</a>
+<a href="#3536" id="3536">3536</a>
+<a href="#3537" id="3537">3537</a>
+<a href="#3538" id="3538">3538</a>
+<a href="#3539" id="3539">3539</a>
+<a href="#3540" id="3540">3540</a>
+<a href="#3541" id="3541">3541</a>
+<a href="#3542" id="3542">3542</a>
+<a href="#3543" id="3543">3543</a>
+<a href="#3544" id="3544">3544</a>
+<a href="#3545" id="3545">3545</a>
+<a href="#3546" id="3546">3546</a>
+<a href="#3547" id="3547">3547</a>
+<a href="#3548" id="3548">3548</a>
+<a href="#3549" id="3549">3549</a>
+<a href="#3550" id="3550">3550</a>
+<a href="#3551" id="3551">3551</a>
+<a href="#3552" id="3552">3552</a>
+<a href="#3553" id="3553">3553</a>
+<a href="#3554" id="3554">3554</a>
+<a href="#3555" id="3555">3555</a>
+<a href="#3556" id="3556">3556</a>
+<a href="#3557" id="3557">3557</a>
+<a href="#3558" id="3558">3558</a>
+<a href="#3559" id="3559">3559</a>
+<a href="#3560" id="3560">3560</a>
+<a href="#3561" id="3561">3561</a>
+<a href="#3562" id="3562">3562</a>
+<a href="#3563" id="3563">3563</a>
+<a href="#3564" id="3564">3564</a>
+<a href="#3565" id="3565">3565</a>
+<a href="#3566" id="3566">3566</a>
+<a href="#3567" id="3567">3567</a>
+<a href="#3568" id="3568">3568</a>
+<a href="#3569" id="3569">3569</a>
+<a href="#3570" id="3570">3570</a>
+<a href="#3571" id="3571">3571</a>
+<a href="#3572" id="3572">3572</a>
+<a href="#3573" id="3573">3573</a>
+<a href="#3574" id="3574">3574</a>
+<a href="#3575" id="3575">3575</a>
+<a href="#3576" id="3576">3576</a>
+<a href="#3577" id="3577">3577</a>
+<a href="#3578" id="3578">3578</a>
+<a href="#3579" id="3579">3579</a>
+<a href="#3580" id="3580">3580</a>
+<a href="#3581" id="3581">3581</a>
+<a href="#3582" id="3582">3582</a>
+<a href="#3583" id="3583">3583</a>
+<a href="#3584" id="3584">3584</a>
+<a href="#3585" id="3585">3585</a>
+<a href="#3586" id="3586">3586</a>
+<a href="#3587" id="3587">3587</a>
+<a href="#3588" id="3588">3588</a>
+<a href="#3589" id="3589">3589</a>
+<a href="#3590" id="3590">3590</a>
+<a href="#3591" id="3591">3591</a>
+<a href="#3592" id="3592">3592</a>
+<a href="#3593" id="3593">3593</a>
+<a href="#3594" id="3594">3594</a>
+<a href="#3595" id="3595">3595</a>
+<a href="#3596" id="3596">3596</a>
+<a href="#3597" id="3597">3597</a>
+<a href="#3598" id="3598">3598</a>
+<a href="#3599" id="3599">3599</a>
+<a href="#3600" id="3600">3600</a>
+<a href="#3601" id="3601">3601</a>
+<a href="#3602" id="3602">3602</a>
+<a href="#3603" id="3603">3603</a>
+<a href="#3604" id="3604">3604</a>
+<a href="#3605" id="3605">3605</a>
+<a href="#3606" id="3606">3606</a>
+<a href="#3607" id="3607">3607</a>
+<a href="#3608" id="3608">3608</a>
+<a href="#3609" id="3609">3609</a>
+<a href="#3610" id="3610">3610</a>
+<a href="#3611" id="3611">3611</a>
+<a href="#3612" id="3612">3612</a>
+<a href="#3613" id="3613">3613</a>
+<a href="#3614" id="3614">3614</a>
+<a href="#3615" id="3615">3615</a>
+<a href="#3616" id="3616">3616</a>
+<a href="#3617" id="3617">3617</a>
+<a href="#3618" id="3618">3618</a>
+<a href="#3619" id="3619">3619</a>
+<a href="#3620" id="3620">3620</a>
+<a href="#3621" id="3621">3621</a>
+<a href="#3622" id="3622">3622</a>
+<a href="#3623" id="3623">3623</a>
+<a href="#3624" id="3624">3624</a>
+<a href="#3625" id="3625">3625</a>
+<a href="#3626" id="3626">3626</a>
+<a href="#3627" id="3627">3627</a>
+<a href="#3628" id="3628">3628</a>
+<a href="#3629" id="3629">3629</a>
+<a href="#3630" id="3630">3630</a>
+<a href="#3631" id="3631">3631</a>
+<a href="#3632" id="3632">3632</a>
+<a href="#3633" id="3633">3633</a>
+<a href="#3634" id="3634">3634</a>
+<a href="#3635" id="3635">3635</a>
+<a href="#3636" id="3636">3636</a>
+<a href="#3637" id="3637">3637</a>
+<a href="#3638" id="3638">3638</a>
+<a href="#3639" id="3639">3639</a>
+<a href="#3640" id="3640">3640</a>
+<a href="#3641" id="3641">3641</a>
+<a href="#3642" id="3642">3642</a>
+<a href="#3643" id="3643">3643</a>
+<a href="#3644" id="3644">3644</a>
+<a href="#3645" id="3645">3645</a>
+<a href="#3646" id="3646">3646</a>
+<a href="#3647" id="3647">3647</a>
+<a href="#3648" id="3648">3648</a>
+<a href="#3649" id="3649">3649</a>
+<a href="#3650" id="3650">3650</a>
+<a href="#3651" id="3651">3651</a>
+<a href="#3652" id="3652">3652</a>
+<a href="#3653" id="3653">3653</a>
+<a href="#3654" id="3654">3654</a>
+<a href="#3655" id="3655">3655</a>
+<a href="#3656" id="3656">3656</a>
+<a href="#3657" id="3657">3657</a>
+<a href="#3658" id="3658">3658</a>
+<a href="#3659" id="3659">3659</a>
+<a href="#3660" id="3660">3660</a>
+<a href="#3661" id="3661">3661</a>
+<a href="#3662" id="3662">3662</a>
+<a href="#3663" id="3663">3663</a>
+<a href="#3664" id="3664">3664</a>
+<a href="#3665" id="3665">3665</a>
+<a href="#3666" id="3666">3666</a>
+<a href="#3667" id="3667">3667</a>
+<a href="#3668" id="3668">3668</a>
+<a href="#3669" id="3669">3669</a>
+<a href="#3670" id="3670">3670</a>
+<a href="#3671" id="3671">3671</a>
+<a href="#3672" id="3672">3672</a>
+<a href="#3673" id="3673">3673</a>
+<a href="#3674" id="3674">3674</a>
+<a href="#3675" id="3675">3675</a>
+<a href="#3676" id="3676">3676</a>
+<a href="#3677" id="3677">3677</a>
+<a href="#3678" id="3678">3678</a>
+<a href="#3679" id="3679">3679</a>
+<a href="#3680" id="3680">3680</a>
+<a href="#3681" id="3681">3681</a>
+<a href="#3682" id="3682">3682</a>
+<a href="#3683" id="3683">3683</a>
+<a href="#3684" id="3684">3684</a>
+<a href="#3685" id="3685">3685</a>
+<a href="#3686" id="3686">3686</a>
+<a href="#3687" id="3687">3687</a>
+<a href="#3688" id="3688">3688</a>
+<a href="#3689" id="3689">3689</a>
+<a href="#3690" id="3690">3690</a>
+<a href="#3691" id="3691">3691</a>
+<a href="#3692" id="3692">3692</a>
+<a href="#3693" id="3693">3693</a>
+<a href="#3694" id="3694">3694</a>
+<a href="#3695" id="3695">3695</a>
+<a href="#3696" id="3696">3696</a>
+<a href="#3697" id="3697">3697</a>
+<a href="#3698" id="3698">3698</a>
+<a href="#3699" id="3699">3699</a>
+<a href="#3700" id="3700">3700</a>
+<a href="#3701" id="3701">3701</a>
+<a href="#3702" id="3702">3702</a>
+<a href="#3703" id="3703">3703</a>
+<a href="#3704" id="3704">3704</a>
+<a href="#3705" id="3705">3705</a>
+<a href="#3706" id="3706">3706</a>
+<a href="#3707" id="3707">3707</a>
+<a href="#3708" id="3708">3708</a>
+<a href="#3709" id="3709">3709</a>
+<a href="#3710" id="3710">3710</a>
+<a href="#3711" id="3711">3711</a>
+<a href="#3712" id="3712">3712</a>
+<a href="#3713" id="3713">3713</a>
+<a href="#3714" id="3714">3714</a>
+<a href="#3715" id="3715">3715</a>
+<a href="#3716" id="3716">3716</a>
+<a href="#3717" id="3717">3717</a>
+<a href="#3718" id="3718">3718</a>
+<a href="#3719" id="3719">3719</a>
+<a href="#3720" id="3720">3720</a>
+<a href="#3721" id="3721">3721</a>
+<a href="#3722" id="3722">3722</a>
+<a href="#3723" id="3723">3723</a>
+<a href="#3724" id="3724">3724</a>
+<a href="#3725" id="3725">3725</a>
+<a href="#3726" id="3726">3726</a>
+<a href="#3727" id="3727">3727</a>
+<a href="#3728" id="3728">3728</a>
+<a href="#3729" id="3729">3729</a>
+<a href="#3730" id="3730">3730</a>
+<a href="#3731" id="3731">3731</a>
+<a href="#3732" id="3732">3732</a>
+<a href="#3733" id="3733">3733</a>
+<a href="#3734" id="3734">3734</a>
+<a href="#3735" id="3735">3735</a>
+<a href="#3736" id="3736">3736</a>
+<a href="#3737" id="3737">3737</a>
+<a href="#3738" id="3738">3738</a>
+<a href="#3739" id="3739">3739</a>
+<a href="#3740" id="3740">3740</a>
+<a href="#3741" id="3741">3741</a>
+<a href="#3742" id="3742">3742</a>
+<a href="#3743" id="3743">3743</a>
+<a href="#3744" id="3744">3744</a>
+<a href="#3745" id="3745">3745</a>
+<a href="#3746" id="3746">3746</a>
+<a href="#3747" id="3747">3747</a>
+<a href="#3748" id="3748">3748</a>
+<a href="#3749" id="3749">3749</a>
+<a href="#3750" id="3750">3750</a>
+<a href="#3751" id="3751">3751</a>
+<a href="#3752" id="3752">3752</a>
+<a href="#3753" id="3753">3753</a>
+<a href="#3754" id="3754">3754</a>
+<a href="#3755" id="3755">3755</a>
+<a href="#3756" id="3756">3756</a>
+<a href="#3757" id="3757">3757</a>
+<a href="#3758" id="3758">3758</a>
+<a href="#3759" id="3759">3759</a>
+<a href="#3760" id="3760">3760</a>
+<a href="#3761" id="3761">3761</a>
+<a href="#3762" id="3762">3762</a>
+<a href="#3763" id="3763">3763</a>
+<a href="#3764" id="3764">3764</a>
+<a href="#3765" id="3765">3765</a>
+<a href="#3766" id="3766">3766</a>
+<a href="#3767" id="3767">3767</a>
+<a href="#3768" id="3768">3768</a>
+<a href="#3769" id="3769">3769</a>
+<a href="#3770" id="3770">3770</a>
+<a href="#3771" id="3771">3771</a>
+<a href="#3772" id="3772">3772</a>
+<a href="#3773" id="3773">3773</a>
+<a href="#3774" id="3774">3774</a>
+<a href="#3775" id="3775">3775</a>
+<a href="#3776" id="3776">3776</a>
+<a href="#3777" id="3777">3777</a>
+<a href="#3778" id="3778">3778</a>
+<a href="#3779" id="3779">3779</a>
+<a href="#3780" id="3780">3780</a>
+<a href="#3781" id="3781">3781</a>
+<a href="#3782" id="3782">3782</a>
+<a href="#3783" id="3783">3783</a>
+<a href="#3784" id="3784">3784</a>
+<a href="#3785" id="3785">3785</a>
+<a href="#3786" id="3786">3786</a>
+<a href="#3787" id="3787">3787</a>
+<a href="#3788" id="3788">3788</a>
+<a href="#3789" id="3789">3789</a>
+<a href="#3790" id="3790">3790</a>
+<a href="#3791" id="3791">3791</a>
+<a href="#3792" id="3792">3792</a>
+<a href="#3793" id="3793">3793</a>
+<a href="#3794" id="3794">3794</a>
+<a href="#3795" id="3795">3795</a>
+<a href="#3796" id="3796">3796</a>
+<a href="#3797" id="3797">3797</a>
+<a href="#3798" id="3798">3798</a>
+<a href="#3799" id="3799">3799</a>
+<a href="#3800" id="3800">3800</a>
+<a href="#3801" id="3801">3801</a>
+<a href="#3802" id="3802">3802</a>
+<a href="#3803" id="3803">3803</a>
+<a href="#3804" id="3804">3804</a>
+<a href="#3805" id="3805">3805</a>
+<a href="#3806" id="3806">3806</a>
+<a href="#3807" id="3807">3807</a>
+<a href="#3808" id="3808">3808</a>
+<a href="#3809" id="3809">3809</a>
+<a href="#3810" id="3810">3810</a>
+<a href="#3811" id="3811">3811</a>
+<a href="#3812" id="3812">3812</a>
+<a href="#3813" id="3813">3813</a>
+<a href="#3814" id="3814">3814</a>
+<a href="#3815" id="3815">3815</a>
+<a href="#3816" id="3816">3816</a>
+<a href="#3817" id="3817">3817</a>
+<a href="#3818" id="3818">3818</a>
+<a href="#3819" id="3819">3819</a>
+<a href="#3820" id="3820">3820</a>
+<a href="#3821" id="3821">3821</a>
+<a href="#3822" id="3822">3822</a>
+<a href="#3823" id="3823">3823</a>
+<a href="#3824" id="3824">3824</a>
+<a href="#3825" id="3825">3825</a>
+<a href="#3826" id="3826">3826</a>
+<a href="#3827" id="3827">3827</a>
+<a href="#3828" id="3828">3828</a>
+<a href="#3829" id="3829">3829</a>
+<a href="#3830" id="3830">3830</a>
+<a href="#3831" id="3831">3831</a>
+<a href="#3832" id="3832">3832</a>
+<a href="#3833" id="3833">3833</a>
+<a href="#3834" id="3834">3834</a>
+<a href="#3835" id="3835">3835</a>
+<a href="#3836" id="3836">3836</a>
+<a href="#3837" id="3837">3837</a>
+<a href="#3838" id="3838">3838</a>
+<a href="#3839" id="3839">3839</a>
+<a href="#3840" id="3840">3840</a>
+<a href="#3841" id="3841">3841</a>
+<a href="#3842" id="3842">3842</a>
+<a href="#3843" id="3843">3843</a>
+<a href="#3844" id="3844">3844</a>
+<a href="#3845" id="3845">3845</a>
+<a href="#3846" id="3846">3846</a>
+<a href="#3847" id="3847">3847</a>
+<a href="#3848" id="3848">3848</a>
+<a href="#3849" id="3849">3849</a>
+<a href="#3850" id="3850">3850</a>
+<a href="#3851" id="3851">3851</a>
+<a href="#3852" id="3852">3852</a>
+<a href="#3853" id="3853">3853</a>
+<a href="#3854" id="3854">3854</a>
+<a href="#3855" id="3855">3855</a>
+<a href="#3856" id="3856">3856</a>
+<a href="#3857" id="3857">3857</a>
+<a href="#3858" id="3858">3858</a>
+<a href="#3859" id="3859">3859</a>
+<a href="#3860" id="3860">3860</a>
+<a href="#3861" id="3861">3861</a>
+<a href="#3862" id="3862">3862</a>
+<a href="#3863" id="3863">3863</a>
+<a href="#3864" id="3864">3864</a>
+<a href="#3865" id="3865">3865</a>
+<a href="#3866" id="3866">3866</a>
+<a href="#3867" id="3867">3867</a>
+<a href="#3868" id="3868">3868</a>
+<a href="#3869" id="3869">3869</a>
+<a href="#3870" id="3870">3870</a>
+<a href="#3871" id="3871">3871</a>
+<a href="#3872" id="3872">3872</a>
+<a href="#3873" id="3873">3873</a>
+<a href="#3874" id="3874">3874</a>
+<a href="#3875" id="3875">3875</a>
+<a href="#3876" id="3876">3876</a>
+<a href="#3877" id="3877">3877</a>
+<a href="#3878" id="3878">3878</a>
+<a href="#3879" id="3879">3879</a>
+<a href="#3880" id="3880">3880</a>
+<a href="#3881" id="3881">3881</a>
+<a href="#3882" id="3882">3882</a>
+<a href="#3883" id="3883">3883</a>
+<a href="#3884" id="3884">3884</a>
+<a href="#3885" id="3885">3885</a>
+<a href="#3886" id="3886">3886</a>
+<a href="#3887" id="3887">3887</a>
+<a href="#3888" id="3888">3888</a>
+<a href="#3889" id="3889">3889</a>
+<a href="#3890" id="3890">3890</a>
+<a href="#3891" id="3891">3891</a>
+<a href="#3892" id="3892">3892</a>
+<a href="#3893" id="3893">3893</a>
+<a href="#3894" id="3894">3894</a>
+<a href="#3895" id="3895">3895</a>
+<a href="#3896" id="3896">3896</a>
+<a href="#3897" id="3897">3897</a>
+<a href="#3898" id="3898">3898</a>
+<a href="#3899" id="3899">3899</a>
+<a href="#3900" id="3900">3900</a>
+<a href="#3901" id="3901">3901</a>
+<a href="#3902" id="3902">3902</a>
+<a href="#3903" id="3903">3903</a>
+<a href="#3904" id="3904">3904</a>
+<a href="#3905" id="3905">3905</a>
+<a href="#3906" id="3906">3906</a>
+<a href="#3907" id="3907">3907</a>
+<a href="#3908" id="3908">3908</a>
+<a href="#3909" id="3909">3909</a>
+<a href="#3910" id="3910">3910</a>
+<a href="#3911" id="3911">3911</a>
+<a href="#3912" id="3912">3912</a>
+<a href="#3913" id="3913">3913</a>
+<a href="#3914" id="3914">3914</a>
+<a href="#3915" id="3915">3915</a>
+<a href="#3916" id="3916">3916</a>
+<a href="#3917" id="3917">3917</a>
+<a href="#3918" id="3918">3918</a>
+<a href="#3919" id="3919">3919</a>
+<a href="#3920" id="3920">3920</a>
+<a href="#3921" id="3921">3921</a>
+<a href="#3922" id="3922">3922</a>
+<a href="#3923" id="3923">3923</a>
+<a href="#3924" id="3924">3924</a>
+<a href="#3925" id="3925">3925</a>
+<a href="#3926" id="3926">3926</a>
+<a href="#3927" id="3927">3927</a>
+<a href="#3928" id="3928">3928</a>
+<a href="#3929" id="3929">3929</a>
+<a href="#3930" id="3930">3930</a>
+<a href="#3931" id="3931">3931</a>
+<a href="#3932" id="3932">3932</a>
+<a href="#3933" id="3933">3933</a>
+<a href="#3934" id="3934">3934</a>
+<a href="#3935" id="3935">3935</a>
+<a href="#3936" id="3936">3936</a>
+<a href="#3937" id="3937">3937</a>
+<a href="#3938" id="3938">3938</a>
+<a href="#3939" id="3939">3939</a>
+<a href="#3940" id="3940">3940</a>
+<a href="#3941" id="3941">3941</a>
+<a href="#3942" id="3942">3942</a>
+<a href="#3943" id="3943">3943</a>
+<a href="#3944" id="3944">3944</a>
+<a href="#3945" id="3945">3945</a>
+<a href="#3946" id="3946">3946</a>
+<a href="#3947" id="3947">3947</a>
+<a href="#3948" id="3948">3948</a>
+<a href="#3949" id="3949">3949</a>
+<a href="#3950" id="3950">3950</a>
+<a href="#3951" id="3951">3951</a>
+<a href="#3952" id="3952">3952</a>
+<a href="#3953" id="3953">3953</a>
+<a href="#3954" id="3954">3954</a>
+<a href="#3955" id="3955">3955</a>
+<a href="#3956" id="3956">3956</a>
+<a href="#3957" id="3957">3957</a>
+<a href="#3958" id="3958">3958</a>
+<a href="#3959" id="3959">3959</a>
+<a href="#3960" id="3960">3960</a>
+<a href="#3961" id="3961">3961</a>
+<a href="#3962" id="3962">3962</a>
+<a href="#3963" id="3963">3963</a>
+<a href="#3964" id="3964">3964</a>
+<a href="#3965" id="3965">3965</a>
+<a href="#3966" id="3966">3966</a>
+<a href="#3967" id="3967">3967</a>
+<a href="#3968" id="3968">3968</a>
+<a href="#3969" id="3969">3969</a>
+<a href="#3970" id="3970">3970</a>
+<a href="#3971" id="3971">3971</a>
+<a href="#3972" id="3972">3972</a>
+<a href="#3973" id="3973">3973</a>
+<a href="#3974" id="3974">3974</a>
+<a href="#3975" id="3975">3975</a>
+<a href="#3976" id="3976">3976</a>
+<a href="#3977" id="3977">3977</a>
+<a href="#3978" id="3978">3978</a>
+<a href="#3979" id="3979">3979</a>
+<a href="#3980" id="3980">3980</a>
+<a href="#3981" id="3981">3981</a>
+<a href="#3982" id="3982">3982</a>
+<a href="#3983" id="3983">3983</a>
+<a href="#3984" id="3984">3984</a>
+<a href="#3985" id="3985">3985</a>
+<a href="#3986" id="3986">3986</a>
+<a href="#3987" id="3987">3987</a>
+<a href="#3988" id="3988">3988</a>
+<a href="#3989" id="3989">3989</a>
+<a href="#3990" id="3990">3990</a>
+<a href="#3991" id="3991">3991</a>
+<a href="#3992" id="3992">3992</a>
+<a href="#3993" id="3993">3993</a>
+<a href="#3994" id="3994">3994</a>
+<a href="#3995" id="3995">3995</a>
+<a href="#3996" id="3996">3996</a>
+<a href="#3997" id="3997">3997</a>
+<a href="#3998" id="3998">3998</a>
+<a href="#3999" id="3999">3999</a>
+<a href="#4000" id="4000">4000</a>
+<a href="#4001" id="4001">4001</a>
+<a href="#4002" id="4002">4002</a>
+<a href="#4003" id="4003">4003</a>
+<a href="#4004" id="4004">4004</a>
+<a href="#4005" id="4005">4005</a>
+<a href="#4006" id="4006">4006</a>
+<a href="#4007" id="4007">4007</a>
+<a href="#4008" id="4008">4008</a>
+<a href="#4009" id="4009">4009</a>
+<a href="#4010" id="4010">4010</a>
+<a href="#4011" id="4011">4011</a>
+<a href="#4012" id="4012">4012</a>
+<a href="#4013" id="4013">4013</a>
+<a href="#4014" id="4014">4014</a>
+<a href="#4015" id="4015">4015</a>
+<a href="#4016" id="4016">4016</a>
+<a href="#4017" id="4017">4017</a>
+<a href="#4018" id="4018">4018</a>
+<a href="#4019" id="4019">4019</a>
+<a href="#4020" id="4020">4020</a>
+<a href="#4021" id="4021">4021</a>
+<a href="#4022" id="4022">4022</a>
+<a href="#4023" id="4023">4023</a>
+<a href="#4024" id="4024">4024</a>
+<a href="#4025" id="4025">4025</a>
+<a href="#4026" id="4026">4026</a>
+<a href="#4027" id="4027">4027</a>
+<a href="#4028" id="4028">4028</a>
+<a href="#4029" id="4029">4029</a>
+<a href="#4030" id="4030">4030</a>
+<a href="#4031" id="4031">4031</a>
+<a href="#4032" id="4032">4032</a>
+<a href="#4033" id="4033">4033</a>
+<a href="#4034" id="4034">4034</a>
+<a href="#4035" id="4035">4035</a>
+<a href="#4036" id="4036">4036</a>
+<a href="#4037" id="4037">4037</a>
+<a href="#4038" id="4038">4038</a>
+<a href="#4039" id="4039">4039</a>
+<a href="#4040" id="4040">4040</a>
+<a href="#4041" id="4041">4041</a>
+<a href="#4042" id="4042">4042</a>
+<a href="#4043" id="4043">4043</a>
+<a href="#4044" id="4044">4044</a>
+<a href="#4045" id="4045">4045</a>
+<a href="#4046" id="4046">4046</a>
+<a href="#4047" id="4047">4047</a>
+<a href="#4048" id="4048">4048</a>
+<a href="#4049" id="4049">4049</a>
+<a href="#4050" id="4050">4050</a>
+<a href="#4051" id="4051">4051</a>
+<a href="#4052" id="4052">4052</a>
+<a href="#4053" id="4053">4053</a>
+<a href="#4054" id="4054">4054</a>
+<a href="#4055" id="4055">4055</a>
+<a href="#4056" id="4056">4056</a>
+<a href="#4057" id="4057">4057</a>
+<a href="#4058" id="4058">4058</a>
+<a href="#4059" id="4059">4059</a>
+<a href="#4060" id="4060">4060</a>
+<a href="#4061" id="4061">4061</a>
+<a href="#4062" id="4062">4062</a>
+<a href="#4063" id="4063">4063</a>
+<a href="#4064" id="4064">4064</a>
+<a href="#4065" id="4065">4065</a>
+<a href="#4066" id="4066">4066</a>
+<a href="#4067" id="4067">4067</a>
+<a href="#4068" id="4068">4068</a>
+<a href="#4069" id="4069">4069</a>
+<a href="#4070" id="4070">4070</a>
+<a href="#4071" id="4071">4071</a>
+<a href="#4072" id="4072">4072</a>
+<a href="#4073" id="4073">4073</a>
+<a href="#4074" id="4074">4074</a>
+<a href="#4075" id="4075">4075</a>
+<a href="#4076" id="4076">4076</a>
+<a href="#4077" id="4077">4077</a>
+<a href="#4078" id="4078">4078</a>
+<a href="#4079" id="4079">4079</a>
+<a href="#4080" id="4080">4080</a>
+<a href="#4081" id="4081">4081</a>
+<a href="#4082" id="4082">4082</a>
+<a href="#4083" id="4083">4083</a>
+<a href="#4084" id="4084">4084</a>
+<a href="#4085" id="4085">4085</a>
+<a href="#4086" id="4086">4086</a>
+<a href="#4087" id="4087">4087</a>
+<a href="#4088" id="4088">4088</a>
+<a href="#4089" id="4089">4089</a>
+<a href="#4090" id="4090">4090</a>
+<a href="#4091" id="4091">4091</a>
+<a href="#4092" id="4092">4092</a>
+<a href="#4093" id="4093">4093</a>
+<a href="#4094" id="4094">4094</a>
+<a href="#4095" id="4095">4095</a>
+<a href="#4096" id="4096">4096</a>
+<a href="#4097" id="4097">4097</a>
+<a href="#4098" id="4098">4098</a>
+<a href="#4099" id="4099">4099</a>
+<a href="#4100" id="4100">4100</a>
+<a href="#4101" id="4101">4101</a>
+<a href="#4102" id="4102">4102</a>
+<a href="#4103" id="4103">4103</a>
+<a href="#4104" id="4104">4104</a>
+<a href="#4105" id="4105">4105</a>
+<a href="#4106" id="4106">4106</a>
+<a href="#4107" id="4107">4107</a>
+<a href="#4108" id="4108">4108</a>
+<a href="#4109" id="4109">4109</a>
+<a href="#4110" id="4110">4110</a>
+<a href="#4111" id="4111">4111</a>
+<a href="#4112" id="4112">4112</a>
+<a href="#4113" id="4113">4113</a>
+<a href="#4114" id="4114">4114</a>
+<a href="#4115" id="4115">4115</a>
+<a href="#4116" id="4116">4116</a>
+<a href="#4117" id="4117">4117</a>
+<a href="#4118" id="4118">4118</a>
+<a href="#4119" id="4119">4119</a>
+<a href="#4120" id="4120">4120</a>
+<a href="#4121" id="4121">4121</a>
+<a href="#4122" id="4122">4122</a>
+<a href="#4123" id="4123">4123</a>
+<a href="#4124" id="4124">4124</a>
+<a href="#4125" id="4125">4125</a>
+<a href="#4126" id="4126">4126</a>
+<a href="#4127" id="4127">4127</a>
+<a href="#4128" id="4128">4128</a>
+<a href="#4129" id="4129">4129</a>
+<a href="#4130" id="4130">4130</a>
+<a href="#4131" id="4131">4131</a>
+<a href="#4132" id="4132">4132</a>
+<a href="#4133" id="4133">4133</a>
+<a href="#4134" id="4134">4134</a>
+<a href="#4135" id="4135">4135</a>
+<a href="#4136" id="4136">4136</a>
+<a href="#4137" id="4137">4137</a>
+<a href="#4138" id="4138">4138</a>
+<a href="#4139" id="4139">4139</a>
+<a href="#4140" id="4140">4140</a>
+<a href="#4141" id="4141">4141</a>
+<a href="#4142" id="4142">4142</a>
+<a href="#4143" id="4143">4143</a>
+<a href="#4144" id="4144">4144</a>
+<a href="#4145" id="4145">4145</a>
+<a href="#4146" id="4146">4146</a>
+<a href="#4147" id="4147">4147</a>
+<a href="#4148" id="4148">4148</a>
+<a href="#4149" id="4149">4149</a>
+<a href="#4150" id="4150">4150</a>
+<a href="#4151" id="4151">4151</a>
+<a href="#4152" id="4152">4152</a>
+<a href="#4153" id="4153">4153</a>
+<a href="#4154" id="4154">4154</a>
+<a href="#4155" id="4155">4155</a>
+<a href="#4156" id="4156">4156</a>
+<a href="#4157" id="4157">4157</a>
+<a href="#4158" id="4158">4158</a>
+<a href="#4159" id="4159">4159</a>
+<a href="#4160" id="4160">4160</a>
+<a href="#4161" id="4161">4161</a>
+<a href="#4162" id="4162">4162</a>
+<a href="#4163" id="4163">4163</a>
+<a href="#4164" id="4164">4164</a>
+<a href="#4165" id="4165">4165</a>
+<a href="#4166" id="4166">4166</a>
+<a href="#4167" id="4167">4167</a>
+<a href="#4168" id="4168">4168</a>
+<a href="#4169" id="4169">4169</a>
+<a href="#4170" id="4170">4170</a>
+<a href="#4171" id="4171">4171</a>
+<a href="#4172" id="4172">4172</a>
+<a href="#4173" id="4173">4173</a>
+<a href="#4174" id="4174">4174</a>
+<a href="#4175" id="4175">4175</a>
+<a href="#4176" id="4176">4176</a>
+<a href="#4177" id="4177">4177</a>
+<a href="#4178" id="4178">4178</a>
+<a href="#4179" id="4179">4179</a>
+<a href="#4180" id="4180">4180</a>
+<a href="#4181" id="4181">4181</a>
+<a href="#4182" id="4182">4182</a>
+<a href="#4183" id="4183">4183</a>
+<a href="#4184" id="4184">4184</a>
+<a href="#4185" id="4185">4185</a>
+<a href="#4186" id="4186">4186</a>
+<a href="#4187" id="4187">4187</a>
+<a href="#4188" id="4188">4188</a>
+<a href="#4189" id="4189">4189</a>
+<a href="#4190" id="4190">4190</a>
+<a href="#4191" id="4191">4191</a>
+<a href="#4192" id="4192">4192</a>
+<a href="#4193" id="4193">4193</a>
+<a href="#4194" id="4194">4194</a>
+<a href="#4195" id="4195">4195</a>
+<a href="#4196" id="4196">4196</a>
+<a href="#4197" id="4197">4197</a>
+<a href="#4198" id="4198">4198</a>
+<a href="#4199" id="4199">4199</a>
+<a href="#4200" id="4200">4200</a>
+<a href="#4201" id="4201">4201</a>
+<a href="#4202" id="4202">4202</a>
+<a href="#4203" id="4203">4203</a>
+<a href="#4204" id="4204">4204</a>
+<a href="#4205" id="4205">4205</a>
+<a href="#4206" id="4206">4206</a>
+<a href="#4207" id="4207">4207</a>
+<a href="#4208" id="4208">4208</a>
+<a href="#4209" id="4209">4209</a>
+<a href="#4210" id="4210">4210</a>
+<a href="#4211" id="4211">4211</a>
+<a href="#4212" id="4212">4212</a>
+<a href="#4213" id="4213">4213</a>
+<a href="#4214" id="4214">4214</a>
+<a href="#4215" id="4215">4215</a>
+<a href="#4216" id="4216">4216</a>
+<a href="#4217" id="4217">4217</a>
+<a href="#4218" id="4218">4218</a>
+<a href="#4219" id="4219">4219</a>
+<a href="#4220" id="4220">4220</a>
+<a href="#4221" id="4221">4221</a>
+<a href="#4222" id="4222">4222</a>
+<a href="#4223" id="4223">4223</a>
+<a href="#4224" id="4224">4224</a>
+<a href="#4225" id="4225">4225</a>
+<a href="#4226" id="4226">4226</a>
+<a href="#4227" id="4227">4227</a>
+<a href="#4228" id="4228">4228</a>
+<a href="#4229" id="4229">4229</a>
+<a href="#4230" id="4230">4230</a>
+<a href="#4231" id="4231">4231</a>
+<a href="#4232" id="4232">4232</a>
+<a href="#4233" id="4233">4233</a>
+<a href="#4234" id="4234">4234</a>
+<a href="#4235" id="4235">4235</a>
+<a href="#4236" id="4236">4236</a>
+<a href="#4237" id="4237">4237</a>
+<a href="#4238" id="4238">4238</a>
+<a href="#4239" id="4239">4239</a>
+<a href="#4240" id="4240">4240</a>
+<a href="#4241" id="4241">4241</a>
+<a href="#4242" id="4242">4242</a>
+<a href="#4243" id="4243">4243</a>
+<a href="#4244" id="4244">4244</a>
+<a href="#4245" id="4245">4245</a>
+<a href="#4246" id="4246">4246</a>
+<a href="#4247" id="4247">4247</a>
+<a href="#4248" id="4248">4248</a>
+<a href="#4249" id="4249">4249</a>
+<a href="#4250" id="4250">4250</a>
+<a href="#4251" id="4251">4251</a>
+<a href="#4252" id="4252">4252</a>
+<a href="#4253" id="4253">4253</a>
+<a href="#4254" id="4254">4254</a>
+<a href="#4255" id="4255">4255</a>
+<a href="#4256" id="4256">4256</a>
+<a href="#4257" id="4257">4257</a>
+<a href="#4258" id="4258">4258</a>
+<a href="#4259" id="4259">4259</a>
+<a href="#4260" id="4260">4260</a>
+<a href="#4261" id="4261">4261</a>
+<a href="#4262" id="4262">4262</a>
+<a href="#4263" id="4263">4263</a>
+<a href="#4264" id="4264">4264</a>
+<a href="#4265" id="4265">4265</a>
+<a href="#4266" id="4266">4266</a>
+<a href="#4267" id="4267">4267</a>
+<a href="#4268" id="4268">4268</a>
+<a href="#4269" id="4269">4269</a>
+<a href="#4270" id="4270">4270</a>
+<a href="#4271" id="4271">4271</a>
+<a href="#4272" id="4272">4272</a>
+<a href="#4273" id="4273">4273</a>
+<a href="#4274" id="4274">4274</a>
+<a href="#4275" id="4275">4275</a>
+<a href="#4276" id="4276">4276</a>
+<a href="#4277" id="4277">4277</a>
+<a href="#4278" id="4278">4278</a>
+<a href="#4279" id="4279">4279</a>
+<a href="#4280" id="4280">4280</a>
+<a href="#4281" id="4281">4281</a>
+<a href="#4282" id="4282">4282</a>
+<a href="#4283" id="4283">4283</a>
+<a href="#4284" id="4284">4284</a>
+<a href="#4285" id="4285">4285</a>
+<a href="#4286" id="4286">4286</a>
+<a href="#4287" id="4287">4287</a>
+<a href="#4288" id="4288">4288</a>
+<a href="#4289" id="4289">4289</a>
+<a href="#4290" id="4290">4290</a>
+<a href="#4291" id="4291">4291</a>
+<a href="#4292" id="4292">4292</a>
+<a href="#4293" id="4293">4293</a>
+<a href="#4294" id="4294">4294</a>
+<a href="#4295" id="4295">4295</a>
+<a href="#4296" id="4296">4296</a>
+<a href="#4297" id="4297">4297</a>
+<a href="#4298" id="4298">4298</a>
+<a href="#4299" id="4299">4299</a>
+<a href="#4300" id="4300">4300</a>
+<a href="#4301" id="4301">4301</a>
+<a href="#4302" id="4302">4302</a>
+<a href="#4303" id="4303">4303</a>
+<a href="#4304" id="4304">4304</a>
+<a href="#4305" id="4305">4305</a>
+<a href="#4306" id="4306">4306</a>
+<a href="#4307" id="4307">4307</a>
+<a href="#4308" id="4308">4308</a>
+<a href="#4309" id="4309">4309</a>
+<a href="#4310" id="4310">4310</a>
+<a href="#4311" id="4311">4311</a>
+<a href="#4312" id="4312">4312</a>
+<a href="#4313" id="4313">4313</a>
+<a href="#4314" id="4314">4314</a>
+<a href="#4315" id="4315">4315</a>
+<a href="#4316" id="4316">4316</a>
+<a href="#4317" id="4317">4317</a>
+<a href="#4318" id="4318">4318</a>
+<a href="#4319" id="4319">4319</a>
+<a href="#4320" id="4320">4320</a>
+<a href="#4321" id="4321">4321</a>
+<a href="#4322" id="4322">4322</a>
+<a href="#4323" id="4323">4323</a>
+<a href="#4324" id="4324">4324</a>
+<a href="#4325" id="4325">4325</a>
+<a href="#4326" id="4326">4326</a>
+<a href="#4327" id="4327">4327</a>
+<a href="#4328" id="4328">4328</a>
+<a href="#4329" id="4329">4329</a>
+<a href="#4330" id="4330">4330</a>
+<a href="#4331" id="4331">4331</a>
+<a href="#4332" id="4332">4332</a>
+<a href="#4333" id="4333">4333</a>
+<a href="#4334" id="4334">4334</a>
+<a href="#4335" id="4335">4335</a>
+<a href="#4336" id="4336">4336</a>
+<a href="#4337" id="4337">4337</a>
+<a href="#4338" id="4338">4338</a>
+<a href="#4339" id="4339">4339</a>
+<a href="#4340" id="4340">4340</a>
+<a href="#4341" id="4341">4341</a>
+<a href="#4342" id="4342">4342</a>
+<a href="#4343" id="4343">4343</a>
+<a href="#4344" id="4344">4344</a>
+<a href="#4345" id="4345">4345</a>
+<a href="#4346" id="4346">4346</a>
+<a href="#4347" id="4347">4347</a>
+<a href="#4348" id="4348">4348</a>
+<a href="#4349" id="4349">4349</a>
+<a href="#4350" id="4350">4350</a>
+<a href="#4351" id="4351">4351</a>
+<a href="#4352" id="4352">4352</a>
+<a href="#4353" id="4353">4353</a>
+<a href="#4354" id="4354">4354</a>
+<a href="#4355" id="4355">4355</a>
+<a href="#4356" id="4356">4356</a>
+<a href="#4357" id="4357">4357</a>
+<a href="#4358" id="4358">4358</a>
+<a href="#4359" id="4359">4359</a>
+<a href="#4360" id="4360">4360</a>
+<a href="#4361" id="4361">4361</a>
+<a href="#4362" id="4362">4362</a>
+<a href="#4363" id="4363">4363</a>
+<a href="#4364" id="4364">4364</a>
+<a href="#4365" id="4365">4365</a>
+<a href="#4366" id="4366">4366</a>
+<a href="#4367" id="4367">4367</a>
+<a href="#4368" id="4368">4368</a>
+<a href="#4369" id="4369">4369</a>
+<a href="#4370" id="4370">4370</a>
+<a href="#4371" id="4371">4371</a>
+<a href="#4372" id="4372">4372</a>
+<a href="#4373" id="4373">4373</a>
+<a href="#4374" id="4374">4374</a>
+<a href="#4375" id="4375">4375</a>
+<a href="#4376" id="4376">4376</a>
+<a href="#4377" id="4377">4377</a>
+<a href="#4378" id="4378">4378</a>
+<a href="#4379" id="4379">4379</a>
+<a href="#4380" id="4380">4380</a>
+<a href="#4381" id="4381">4381</a>
+<a href="#4382" id="4382">4382</a>
+<a href="#4383" id="4383">4383</a>
+<a href="#4384" id="4384">4384</a>
+<a href="#4385" id="4385">4385</a>
+<a href="#4386" id="4386">4386</a>
+<a href="#4387" id="4387">4387</a>
+<a href="#4388" id="4388">4388</a>
+<a href="#4389" id="4389">4389</a>
+<a href="#4390" id="4390">4390</a>
+<a href="#4391" id="4391">4391</a>
+<a href="#4392" id="4392">4392</a>
+<a href="#4393" id="4393">4393</a>
+<a href="#4394" id="4394">4394</a>
+<a href="#4395" id="4395">4395</a>
+<a href="#4396" id="4396">4396</a>
+<a href="#4397" id="4397">4397</a>
+<a href="#4398" id="4398">4398</a>
+<a href="#4399" id="4399">4399</a>
+<a href="#4400" id="4400">4400</a>
+<a href="#4401" id="4401">4401</a>
+<a href="#4402" id="4402">4402</a>
+<a href="#4403" id="4403">4403</a>
+<a href="#4404" id="4404">4404</a>
+<a href="#4405" id="4405">4405</a>
+<a href="#4406" id="4406">4406</a>
+<a href="#4407" id="4407">4407</a>
+<a href="#4408" id="4408">4408</a>
+<a href="#4409" id="4409">4409</a>
+<a href="#4410" id="4410">4410</a>
+<a href="#4411" id="4411">4411</a>
+<a href="#4412" id="4412">4412</a>
+<a href="#4413" id="4413">4413</a>
+<a href="#4414" id="4414">4414</a>
+<a href="#4415" id="4415">4415</a>
+<a href="#4416" id="4416">4416</a>
+<a href="#4417" id="4417">4417</a>
+<a href="#4418" id="4418">4418</a>
+<a href="#4419" id="4419">4419</a>
+<a href="#4420" id="4420">4420</a>
+<a href="#4421" id="4421">4421</a>
+<a href="#4422" id="4422">4422</a>
+<a href="#4423" id="4423">4423</a>
+<a href="#4424" id="4424">4424</a>
+<a href="#4425" id="4425">4425</a>
+<a href="#4426" id="4426">4426</a>
+<a href="#4427" id="4427">4427</a>
+<a href="#4428" id="4428">4428</a>
+<a href="#4429" id="4429">4429</a>
+<a href="#4430" id="4430">4430</a>
+<a href="#4431" id="4431">4431</a>
+<a href="#4432" id="4432">4432</a>
+<a href="#4433" id="4433">4433</a>
+<a href="#4434" id="4434">4434</a>
+<a href="#4435" id="4435">4435</a>
+<a href="#4436" id="4436">4436</a>
+<a href="#4437" id="4437">4437</a>
+<a href="#4438" id="4438">4438</a>
+<a href="#4439" id="4439">4439</a>
+<a href="#4440" id="4440">4440</a>
+<a href="#4441" id="4441">4441</a>
+<a href="#4442" id="4442">4442</a>
+<a href="#4443" id="4443">4443</a>
+<a href="#4444" id="4444">4444</a>
+<a href="#4445" id="4445">4445</a>
+<a href="#4446" id="4446">4446</a>
+<a href="#4447" id="4447">4447</a>
+<a href="#4448" id="4448">4448</a>
+<a href="#4449" id="4449">4449</a>
+<a href="#4450" id="4450">4450</a>
+<a href="#4451" id="4451">4451</a>
+<a href="#4452" id="4452">4452</a>
+<a href="#4453" id="4453">4453</a>
+<a href="#4454" id="4454">4454</a>
+<a href="#4455" id="4455">4455</a>
+<a href="#4456" id="4456">4456</a>
+<a href="#4457" id="4457">4457</a>
+<a href="#4458" id="4458">4458</a>
+<a href="#4459" id="4459">4459</a>
+<a href="#4460" id="4460">4460</a>
+<a href="#4461" id="4461">4461</a>
+<a href="#4462" id="4462">4462</a>
+<a href="#4463" id="4463">4463</a>
+<a href="#4464" id="4464">4464</a>
+<a href="#4465" id="4465">4465</a>
+<a href="#4466" id="4466">4466</a>
+<a href="#4467" id="4467">4467</a>
+<a href="#4468" id="4468">4468</a>
+<a href="#4469" id="4469">4469</a>
+<a href="#4470" id="4470">4470</a>
+<a href="#4471" id="4471">4471</a>
+<a href="#4472" id="4472">4472</a>
+<a href="#4473" id="4473">4473</a>
+<a href="#4474" id="4474">4474</a>
+<a href="#4475" id="4475">4475</a>
+<a href="#4476" id="4476">4476</a>
+<a href="#4477" id="4477">4477</a>
+<a href="#4478" id="4478">4478</a>
+<a href="#4479" id="4479">4479</a>
+<a href="#4480" id="4480">4480</a>
+<a href="#4481" id="4481">4481</a>
+<a href="#4482" id="4482">4482</a>
+<a href="#4483" id="4483">4483</a>
+<a href="#4484" id="4484">4484</a>
+<a href="#4485" id="4485">4485</a>
+<a href="#4486" id="4486">4486</a>
+<a href="#4487" id="4487">4487</a>
+<a href="#4488" id="4488">4488</a>
+<a href="#4489" id="4489">4489</a>
+<a href="#4490" id="4490">4490</a>
+<a href="#4491" id="4491">4491</a>
+<a href="#4492" id="4492">4492</a>
+<a href="#4493" id="4493">4493</a>
+<a href="#4494" id="4494">4494</a>
+<a href="#4495" id="4495">4495</a>
+<a href="#4496" id="4496">4496</a>
+<a href="#4497" id="4497">4497</a>
+<a href="#4498" id="4498">4498</a>
+<a href="#4499" id="4499">4499</a>
+<a href="#4500" id="4500">4500</a>
+<a href="#4501" id="4501">4501</a>
+<a href="#4502" id="4502">4502</a>
+<a href="#4503" id="4503">4503</a>
+<a href="#4504" id="4504">4504</a>
+<a href="#4505" id="4505">4505</a>
+<a href="#4506" id="4506">4506</a>
+<a href="#4507" id="4507">4507</a>
+<a href="#4508" id="4508">4508</a>
+<a href="#4509" id="4509">4509</a>
+<a href="#4510" id="4510">4510</a>
+<a href="#4511" id="4511">4511</a>
+<a href="#4512" id="4512">4512</a>
+<a href="#4513" id="4513">4513</a>
+<a href="#4514" id="4514">4514</a>
+<a href="#4515" id="4515">4515</a>
+<a href="#4516" id="4516">4516</a>
+<a href="#4517" id="4517">4517</a>
+<a href="#4518" id="4518">4518</a>
+<a href="#4519" id="4519">4519</a>
+<a href="#4520" id="4520">4520</a>
+<a href="#4521" id="4521">4521</a>
+<a href="#4522" id="4522">4522</a>
+<a href="#4523" id="4523">4523</a>
+<a href="#4524" id="4524">4524</a>
+<a href="#4525" id="4525">4525</a>
+<a href="#4526" id="4526">4526</a>
+<a href="#4527" id="4527">4527</a>
+<a href="#4528" id="4528">4528</a>
+<a href="#4529" id="4529">4529</a>
+<a href="#4530" id="4530">4530</a>
+<a href="#4531" id="4531">4531</a>
+<a href="#4532" id="4532">4532</a>
+<a href="#4533" id="4533">4533</a>
+<a href="#4534" id="4534">4534</a>
+<a href="#4535" id="4535">4535</a>
+<a href="#4536" id="4536">4536</a>
+<a href="#4537" id="4537">4537</a>
+<a href="#4538" id="4538">4538</a>
+<a href="#4539" id="4539">4539</a>
+<a href="#4540" id="4540">4540</a>
+<a href="#4541" id="4541">4541</a>
+<a href="#4542" id="4542">4542</a>
+<a href="#4543" id="4543">4543</a>
+<a href="#4544" id="4544">4544</a>
+<a href="#4545" id="4545">4545</a>
+<a href="#4546" id="4546">4546</a>
+<a href="#4547" id="4547">4547</a>
+<a href="#4548" id="4548">4548</a>
+<a href="#4549" id="4549">4549</a>
+<a href="#4550" id="4550">4550</a>
+<a href="#4551" id="4551">4551</a>
+<a href="#4552" id="4552">4552</a>
+<a href="#4553" id="4553">4553</a>
+<a href="#4554" id="4554">4554</a>
+<a href="#4555" id="4555">4555</a>
+<a href="#4556" id="4556">4556</a>
+<a href="#4557" id="4557">4557</a>
+<a href="#4558" id="4558">4558</a>
+<a href="#4559" id="4559">4559</a>
+<a href="#4560" id="4560">4560</a>
+<a href="#4561" id="4561">4561</a>
+<a href="#4562" id="4562">4562</a>
+<a href="#4563" id="4563">4563</a>
+<a href="#4564" id="4564">4564</a>
+<a href="#4565" id="4565">4565</a>
+<a href="#4566" id="4566">4566</a>
+<a href="#4567" id="4567">4567</a>
+<a href="#4568" id="4568">4568</a>
+<a href="#4569" id="4569">4569</a>
+<a href="#4570" id="4570">4570</a>
+<a href="#4571" id="4571">4571</a>
+<a href="#4572" id="4572">4572</a>
+<a href="#4573" id="4573">4573</a>
+<a href="#4574" id="4574">4574</a>
+<a href="#4575" id="4575">4575</a>
+<a href="#4576" id="4576">4576</a>
+<a href="#4577" id="4577">4577</a>
+<a href="#4578" id="4578">4578</a>
+<a href="#4579" id="4579">4579</a>
+<a href="#4580" id="4580">4580</a>
+<a href="#4581" id="4581">4581</a>
+<a href="#4582" id="4582">4582</a>
+<a href="#4583" id="4583">4583</a>
+<a href="#4584" id="4584">4584</a>
+<a href="#4585" id="4585">4585</a>
+<a href="#4586" id="4586">4586</a>
+<a href="#4587" id="4587">4587</a>
+<a href="#4588" id="4588">4588</a>
+<a href="#4589" id="4589">4589</a>
+<a href="#4590" id="4590">4590</a>
+<a href="#4591" id="4591">4591</a>
+<a href="#4592" id="4592">4592</a>
+<a href="#4593" id="4593">4593</a>
+<a href="#4594" id="4594">4594</a>
+<a href="#4595" id="4595">4595</a>
+<a href="#4596" id="4596">4596</a>
+<a href="#4597" id="4597">4597</a>
+<a href="#4598" id="4598">4598</a>
+<a href="#4599" id="4599">4599</a>
+<a href="#4600" id="4600">4600</a>
+<a href="#4601" id="4601">4601</a>
+<a href="#4602" id="4602">4602</a>
+<a href="#4603" id="4603">4603</a>
+<a href="#4604" id="4604">4604</a>
+<a href="#4605" id="4605">4605</a>
+<a href="#4606" id="4606">4606</a>
+<a href="#4607" id="4607">4607</a>
+<a href="#4608" id="4608">4608</a>
+<a href="#4609" id="4609">4609</a>
+<a href="#4610" id="4610">4610</a>
+<a href="#4611" id="4611">4611</a>
+<a href="#4612" id="4612">4612</a>
+<a href="#4613" id="4613">4613</a>
+<a href="#4614" id="4614">4614</a>
+<a href="#4615" id="4615">4615</a>
+<a href="#4616" id="4616">4616</a>
+<a href="#4617" id="4617">4617</a>
+<a href="#4618" id="4618">4618</a>
+<a href="#4619" id="4619">4619</a>
+<a href="#4620" id="4620">4620</a>
+<a href="#4621" id="4621">4621</a>
+<a href="#4622" id="4622">4622</a>
+<a href="#4623" id="4623">4623</a>
+<a href="#4624" id="4624">4624</a>
+<a href="#4625" id="4625">4625</a>
+<a href="#4626" id="4626">4626</a>
+<a href="#4627" id="4627">4627</a>
+<a href="#4628" id="4628">4628</a>
+<a href="#4629" id="4629">4629</a>
+<a href="#4630" id="4630">4630</a>
+<a href="#4631" id="4631">4631</a>
+<a href="#4632" id="4632">4632</a>
+<a href="#4633" id="4633">4633</a>
+<a href="#4634" id="4634">4634</a>
+<a href="#4635" id="4635">4635</a>
+<a href="#4636" id="4636">4636</a>
+<a href="#4637" id="4637">4637</a>
+<a href="#4638" id="4638">4638</a>
+<a href="#4639" id="4639">4639</a>
+<a href="#4640" id="4640">4640</a>
+<a href="#4641" id="4641">4641</a>
+<a href="#4642" id="4642">4642</a>
+<a href="#4643" id="4643">4643</a>
+<a href="#4644" id="4644">4644</a>
+<a href="#4645" id="4645">4645</a>
+<a href="#4646" id="4646">4646</a>
+<a href="#4647" id="4647">4647</a>
+<a href="#4648" id="4648">4648</a>
+<a href="#4649" id="4649">4649</a>
+<a href="#4650" id="4650">4650</a>
+<a href="#4651" id="4651">4651</a>
+<a href="#4652" id="4652">4652</a>
+<a href="#4653" id="4653">4653</a>
+<a href="#4654" id="4654">4654</a>
+<a href="#4655" id="4655">4655</a>
+<a href="#4656" id="4656">4656</a>
+<a href="#4657" id="4657">4657</a>
+<a href="#4658" id="4658">4658</a>
+<a href="#4659" id="4659">4659</a>
+<a href="#4660" id="4660">4660</a>
+<a href="#4661" id="4661">4661</a>
+<a href="#4662" id="4662">4662</a>
+<a href="#4663" id="4663">4663</a>
+<a href="#4664" id="4664">4664</a>
+<a href="#4665" id="4665">4665</a>
+<a href="#4666" id="4666">4666</a>
+<a href="#4667" id="4667">4667</a>
+<a href="#4668" id="4668">4668</a>
+<a href="#4669" id="4669">4669</a>
+<a href="#4670" id="4670">4670</a>
+<a href="#4671" id="4671">4671</a>
+<a href="#4672" id="4672">4672</a>
+<a href="#4673" id="4673">4673</a>
+<a href="#4674" id="4674">4674</a>
+<a href="#4675" id="4675">4675</a>
+<a href="#4676" id="4676">4676</a>
+<a href="#4677" id="4677">4677</a>
+<a href="#4678" id="4678">4678</a>
+<a href="#4679" id="4679">4679</a>
+<a href="#4680" id="4680">4680</a>
+<a href="#4681" id="4681">4681</a>
+<a href="#4682" id="4682">4682</a>
+<a href="#4683" id="4683">4683</a>
+<a href="#4684" id="4684">4684</a>
+<a href="#4685" id="4685">4685</a>
+<a href="#4686" id="4686">4686</a>
+<a href="#4687" id="4687">4687</a>
+<a href="#4688" id="4688">4688</a>
+<a href="#4689" id="4689">4689</a>
+<a href="#4690" id="4690">4690</a>
+<a href="#4691" id="4691">4691</a>
+<a href="#4692" id="4692">4692</a>
+<a href="#4693" id="4693">4693</a>
+<a href="#4694" id="4694">4694</a>
+<a href="#4695" id="4695">4695</a>
+<a href="#4696" id="4696">4696</a>
+<a href="#4697" id="4697">4697</a>
+<a href="#4698" id="4698">4698</a>
+<a href="#4699" id="4699">4699</a>
+<a href="#4700" id="4700">4700</a>
+<a href="#4701" id="4701">4701</a>
+<a href="#4702" id="4702">4702</a>
+<a href="#4703" id="4703">4703</a>
+<a href="#4704" id="4704">4704</a>
+<a href="#4705" id="4705">4705</a>
+<a href="#4706" id="4706">4706</a>
+<a href="#4707" id="4707">4707</a>
+<a href="#4708" id="4708">4708</a>
+<a href="#4709" id="4709">4709</a>
+<a href="#4710" id="4710">4710</a>
+<a href="#4711" id="4711">4711</a>
+<a href="#4712" id="4712">4712</a>
+<a href="#4713" id="4713">4713</a>
+<a href="#4714" id="4714">4714</a>
+<a href="#4715" id="4715">4715</a>
+<a href="#4716" id="4716">4716</a>
+<a href="#4717" id="4717">4717</a>
+<a href="#4718" id="4718">4718</a>
+<a href="#4719" id="4719">4719</a>
+<a href="#4720" id="4720">4720</a>
+<a href="#4721" id="4721">4721</a>
+<a href="#4722" id="4722">4722</a>
+<a href="#4723" id="4723">4723</a>
+<a href="#4724" id="4724">4724</a>
+<a href="#4725" id="4725">4725</a>
+<a href="#4726" id="4726">4726</a>
+<a href="#4727" id="4727">4727</a>
+<a href="#4728" id="4728">4728</a>
+<a href="#4729" id="4729">4729</a>
+<a href="#4730" id="4730">4730</a>
+<a href="#4731" id="4731">4731</a>
+<a href="#4732" id="4732">4732</a>
+<a href="#4733" id="4733">4733</a>
+<a href="#4734" id="4734">4734</a>
+<a href="#4735" id="4735">4735</a>
+<a href="#4736" id="4736">4736</a>
+<a href="#4737" id="4737">4737</a>
+<a href="#4738" id="4738">4738</a>
+<a href="#4739" id="4739">4739</a>
+<a href="#4740" id="4740">4740</a>
+<a href="#4741" id="4741">4741</a>
+<a href="#4742" id="4742">4742</a>
+<a href="#4743" id="4743">4743</a>
+<a href="#4744" id="4744">4744</a>
+<a href="#4745" id="4745">4745</a>
+<a href="#4746" id="4746">4746</a>
+<a href="#4747" id="4747">4747</a>
+<a href="#4748" id="4748">4748</a>
+<a href="#4749" id="4749">4749</a>
+<a href="#4750" id="4750">4750</a>
+<a href="#4751" id="4751">4751</a>
+<a href="#4752" id="4752">4752</a>
+<a href="#4753" id="4753">4753</a>
+<a href="#4754" id="4754">4754</a>
+<a href="#4755" id="4755">4755</a>
+<a href="#4756" id="4756">4756</a>
+<a href="#4757" id="4757">4757</a>
+<a href="#4758" id="4758">4758</a>
+<a href="#4759" id="4759">4759</a>
+<a href="#4760" id="4760">4760</a>
+<a href="#4761" id="4761">4761</a>
+<a href="#4762" id="4762">4762</a>
+<a href="#4763" id="4763">4763</a>
+<a href="#4764" id="4764">4764</a>
+<a href="#4765" id="4765">4765</a>
+<a href="#4766" id="4766">4766</a>
+<a href="#4767" id="4767">4767</a>
+<a href="#4768" id="4768">4768</a>
+<a href="#4769" id="4769">4769</a>
+<a href="#4770" id="4770">4770</a>
+<a href="#4771" id="4771">4771</a>
+<a href="#4772" id="4772">4772</a>
+<a href="#4773" id="4773">4773</a>
+<a href="#4774" id="4774">4774</a>
+<a href="#4775" id="4775">4775</a>
+<a href="#4776" id="4776">4776</a>
+<a href="#4777" id="4777">4777</a>
+<a href="#4778" id="4778">4778</a>
+<a href="#4779" id="4779">4779</a>
+<a href="#4780" id="4780">4780</a>
+<a href="#4781" id="4781">4781</a>
+<a href="#4782" id="4782">4782</a>
+<a href="#4783" id="4783">4783</a>
+<a href="#4784" id="4784">4784</a>
+<a href="#4785" id="4785">4785</a>
+<a href="#4786" id="4786">4786</a>
+<a href="#4787" id="4787">4787</a>
+<a href="#4788" id="4788">4788</a>
+<a href="#4789" id="4789">4789</a>
+<a href="#4790" id="4790">4790</a>
+<a href="#4791" id="4791">4791</a>
+<a href="#4792" id="4792">4792</a>
+<a href="#4793" id="4793">4793</a>
+<a href="#4794" id="4794">4794</a>
+<a href="#4795" id="4795">4795</a>
+<a href="#4796" id="4796">4796</a>
+<a href="#4797" id="4797">4797</a>
+<a href="#4798" id="4798">4798</a>
+<a href="#4799" id="4799">4799</a>
+<a href="#4800" id="4800">4800</a>
+<a href="#4801" id="4801">4801</a>
+<a href="#4802" id="4802">4802</a>
+<a href="#4803" id="4803">4803</a>
+<a href="#4804" id="4804">4804</a>
+<a href="#4805" id="4805">4805</a>
+<a href="#4806" id="4806">4806</a>
+<a href="#4807" id="4807">4807</a>
+<a href="#4808" id="4808">4808</a>
+<a href="#4809" id="4809">4809</a>
+<a href="#4810" id="4810">4810</a>
+<a href="#4811" id="4811">4811</a>
+<a href="#4812" id="4812">4812</a>
+<a href="#4813" id="4813">4813</a>
+<a href="#4814" id="4814">4814</a>
+<a href="#4815" id="4815">4815</a>
+<a href="#4816" id="4816">4816</a>
+<a href="#4817" id="4817">4817</a>
+<a href="#4818" id="4818">4818</a>
+<a href="#4819" id="4819">4819</a>
+<a href="#4820" id="4820">4820</a>
+<a href="#4821" id="4821">4821</a>
+<a href="#4822" id="4822">4822</a>
+<a href="#4823" id="4823">4823</a>
+<a href="#4824" id="4824">4824</a>
+<a href="#4825" id="4825">4825</a>
+<a href="#4826" id="4826">4826</a>
+<a href="#4827" id="4827">4827</a>
+<a href="#4828" id="4828">4828</a>
+<a href="#4829" id="4829">4829</a>
+<a href="#4830" id="4830">4830</a>
+<a href="#4831" id="4831">4831</a>
+<a href="#4832" id="4832">4832</a>
+<a href="#4833" id="4833">4833</a>
+<a href="#4834" id="4834">4834</a>
+<a href="#4835" id="4835">4835</a>
+<a href="#4836" id="4836">4836</a>
+<a href="#4837" id="4837">4837</a>
+<a href="#4838" id="4838">4838</a>
+<a href="#4839" id="4839">4839</a>
+<a href="#4840" id="4840">4840</a>
+<a href="#4841" id="4841">4841</a>
+<a href="#4842" id="4842">4842</a>
+<a href="#4843" id="4843">4843</a>
+<a href="#4844" id="4844">4844</a>
+<a href="#4845" id="4845">4845</a>
+<a href="#4846" id="4846">4846</a>
+<a href="#4847" id="4847">4847</a>
+<a href="#4848" id="4848">4848</a>
+<a href="#4849" id="4849">4849</a>
+<a href="#4850" id="4850">4850</a>
+<a href="#4851" id="4851">4851</a>
+<a href="#4852" id="4852">4852</a>
+<a href="#4853" id="4853">4853</a>
+<a href="#4854" id="4854">4854</a>
+<a href="#4855" id="4855">4855</a>
+<a href="#4856" id="4856">4856</a>
+<a href="#4857" id="4857">4857</a>
+<a href="#4858" id="4858">4858</a>
+<a href="#4859" id="4859">4859</a>
+<a href="#4860" id="4860">4860</a>
+<a href="#4861" id="4861">4861</a>
+<a href="#4862" id="4862">4862</a>
+<a href="#4863" id="4863">4863</a>
+<a href="#4864" id="4864">4864</a>
+<a href="#4865" id="4865">4865</a>
+<a href="#4866" id="4866">4866</a>
+<a href="#4867" id="4867">4867</a>
+<a href="#4868" id="4868">4868</a>
+<a href="#4869" id="4869">4869</a>
+<a href="#4870" id="4870">4870</a>
+<a href="#4871" id="4871">4871</a>
+<a href="#4872" id="4872">4872</a>
+<a href="#4873" id="4873">4873</a>
+<a href="#4874" id="4874">4874</a>
+<a href="#4875" id="4875">4875</a>
+<a href="#4876" id="4876">4876</a>
+<a href="#4877" id="4877">4877</a>
+<a href="#4878" id="4878">4878</a>
+<a href="#4879" id="4879">4879</a>
+<a href="#4880" id="4880">4880</a>
+<a href="#4881" id="4881">4881</a>
+<a href="#4882" id="4882">4882</a>
+<a href="#4883" id="4883">4883</a>
+<a href="#4884" id="4884">4884</a>
+<a href="#4885" id="4885">4885</a>
+<a href="#4886" id="4886">4886</a>
+<a href="#4887" id="4887">4887</a>
+<a href="#4888" id="4888">4888</a>
+<a href="#4889" id="4889">4889</a>
+<a href="#4890" id="4890">4890</a>
+<a href="#4891" id="4891">4891</a>
+<a href="#4892" id="4892">4892</a>
+<a href="#4893" id="4893">4893</a>
+<a href="#4894" id="4894">4894</a>
+<a href="#4895" id="4895">4895</a>
+<a href="#4896" id="4896">4896</a>
+<a href="#4897" id="4897">4897</a>
+<a href="#4898" id="4898">4898</a>
+<a href="#4899" id="4899">4899</a>
+<a href="#4900" id="4900">4900</a>
+<a href="#4901" id="4901">4901</a>
+<a href="#4902" id="4902">4902</a>
+<a href="#4903" id="4903">4903</a>
+<a href="#4904" id="4904">4904</a>
+<a href="#4905" id="4905">4905</a>
+<a href="#4906" id="4906">4906</a>
+<a href="#4907" id="4907">4907</a>
+<a href="#4908" id="4908">4908</a>
+<a href="#4909" id="4909">4909</a>
+<a href="#4910" id="4910">4910</a>
+<a href="#4911" id="4911">4911</a>
+<a href="#4912" id="4912">4912</a>
+<a href="#4913" id="4913">4913</a>
+<a href="#4914" id="4914">4914</a>
+<a href="#4915" id="4915">4915</a>
+<a href="#4916" id="4916">4916</a>
+<a href="#4917" id="4917">4917</a>
+<a href="#4918" id="4918">4918</a>
+<a href="#4919" id="4919">4919</a>
+<a href="#4920" id="4920">4920</a>
+<a href="#4921" id="4921">4921</a>
+<a href="#4922" id="4922">4922</a>
+<a href="#4923" id="4923">4923</a>
+<a href="#4924" id="4924">4924</a>
+<a href="#4925" id="4925">4925</a>
+<a href="#4926" id="4926">4926</a>
+<a href="#4927" id="4927">4927</a>
+<a href="#4928" id="4928">4928</a>
+<a href="#4929" id="4929">4929</a>
+<a href="#4930" id="4930">4930</a>
+<a href="#4931" id="4931">4931</a>
+<a href="#4932" id="4932">4932</a>
+<a href="#4933" id="4933">4933</a>
+<a href="#4934" id="4934">4934</a>
+<a href="#4935" id="4935">4935</a>
+<a href="#4936" id="4936">4936</a>
+<a href="#4937" id="4937">4937</a>
+<a href="#4938" id="4938">4938</a>
+<a href="#4939" id="4939">4939</a>
+<a href="#4940" id="4940">4940</a>
+<a href="#4941" id="4941">4941</a>
+<a href="#4942" id="4942">4942</a>
+<a href="#4943" id="4943">4943</a>
+<a href="#4944" id="4944">4944</a>
+<a href="#4945" id="4945">4945</a>
+<a href="#4946" id="4946">4946</a>
+<a href="#4947" id="4947">4947</a>
+<a href="#4948" id="4948">4948</a>
+<a href="#4949" id="4949">4949</a>
+<a href="#4950" id="4950">4950</a>
+<a href="#4951" id="4951">4951</a>
+<a href="#4952" id="4952">4952</a>
+<a href="#4953" id="4953">4953</a>
+<a href="#4954" id="4954">4954</a>
+<a href="#4955" id="4955">4955</a>
+<a href="#4956" id="4956">4956</a>
+<a href="#4957" id="4957">4957</a>
+<a href="#4958" id="4958">4958</a>
+<a href="#4959" id="4959">4959</a>
+<a href="#4960" id="4960">4960</a>
+<a href="#4961" id="4961">4961</a>
+<a href="#4962" id="4962">4962</a>
+<a href="#4963" id="4963">4963</a>
+<a href="#4964" id="4964">4964</a>
+<a href="#4965" id="4965">4965</a>
+<a href="#4966" id="4966">4966</a>
+<a href="#4967" id="4967">4967</a>
+<a href="#4968" id="4968">4968</a>
+<a href="#4969" id="4969">4969</a>
+<a href="#4970" id="4970">4970</a>
+<a href="#4971" id="4971">4971</a>
+<a href="#4972" id="4972">4972</a>
+<a href="#4973" id="4973">4973</a>
+<a href="#4974" id="4974">4974</a>
+<a href="#4975" id="4975">4975</a>
+<a href="#4976" id="4976">4976</a>
+<a href="#4977" id="4977">4977</a>
+<a href="#4978" id="4978">4978</a>
+<a href="#4979" id="4979">4979</a>
+<a href="#4980" id="4980">4980</a>
+<a href="#4981" id="4981">4981</a>
+<a href="#4982" id="4982">4982</a>
+<a href="#4983" id="4983">4983</a>
+<a href="#4984" id="4984">4984</a>
+<a href="#4985" id="4985">4985</a>
+<a href="#4986" id="4986">4986</a>
+<a href="#4987" id="4987">4987</a>
+<a href="#4988" id="4988">4988</a>
+<a href="#4989" id="4989">4989</a>
+<a href="#4990" id="4990">4990</a>
+<a href="#4991" id="4991">4991</a>
+<a href="#4992" id="4992">4992</a>
+<a href="#4993" id="4993">4993</a>
+<a href="#4994" id="4994">4994</a>
+<a href="#4995" id="4995">4995</a>
+<a href="#4996" id="4996">4996</a>
+<a href="#4997" id="4997">4997</a>
+<a href="#4998" id="4998">4998</a>
+<a href="#4999" id="4999">4999</a>
+<a href="#5000" id="5000">5000</a>
+<a href="#5001" id="5001">5001</a>
+<a href="#5002" id="5002">5002</a>
+<a href="#5003" id="5003">5003</a>
+<a href="#5004" id="5004">5004</a>
+<a href="#5005" id="5005">5005</a>
+<a href="#5006" id="5006">5006</a>
+<a href="#5007" id="5007">5007</a>
+<a href="#5008" id="5008">5008</a>
+<a href="#5009" id="5009">5009</a>
+<a href="#5010" id="5010">5010</a>
+<a href="#5011" id="5011">5011</a>
+<a href="#5012" id="5012">5012</a>
+<a href="#5013" id="5013">5013</a>
+<a href="#5014" id="5014">5014</a>
+<a href="#5015" id="5015">5015</a>
+<a href="#5016" id="5016">5016</a>
+<a href="#5017" id="5017">5017</a>
+<a href="#5018" id="5018">5018</a>
+<a href="#5019" id="5019">5019</a>
+<a href="#5020" id="5020">5020</a>
+<a href="#5021" id="5021">5021</a>
+<a href="#5022" id="5022">5022</a>
+<a href="#5023" id="5023">5023</a>
+<a href="#5024" id="5024">5024</a>
+<a href="#5025" id="5025">5025</a>
+<a href="#5026" id="5026">5026</a>
+<a href="#5027" id="5027">5027</a>
+<a href="#5028" id="5028">5028</a>
+<a href="#5029" id="5029">5029</a>
+<a href="#5030" id="5030">5030</a>
+<a href="#5031" id="5031">5031</a>
+<a href="#5032" id="5032">5032</a>
+<a href="#5033" id="5033">5033</a>
+<a href="#5034" id="5034">5034</a>
+<a href="#5035" id="5035">5035</a>
+<a href="#5036" id="5036">5036</a>
+<a href="#5037" id="5037">5037</a>
+<a href="#5038" id="5038">5038</a>
+<a href="#5039" id="5039">5039</a>
+<a href="#5040" id="5040">5040</a>
+<a href="#5041" id="5041">5041</a>
+<a href="#5042" id="5042">5042</a>
+<a href="#5043" id="5043">5043</a>
+<a href="#5044" id="5044">5044</a>
+<a href="#5045" id="5045">5045</a>
+<a href="#5046" id="5046">5046</a>
+<a href="#5047" id="5047">5047</a>
+<a href="#5048" id="5048">5048</a>
+<a href="#5049" id="5049">5049</a>
+<a href="#5050" id="5050">5050</a>
+<a href="#5051" id="5051">5051</a>
+<a href="#5052" id="5052">5052</a>
+<a href="#5053" id="5053">5053</a>
+<a href="#5054" id="5054">5054</a>
+<a href="#5055" id="5055">5055</a>
+<a href="#5056" id="5056">5056</a>
+<a href="#5057" id="5057">5057</a>
+<a href="#5058" id="5058">5058</a>
+<a href="#5059" id="5059">5059</a>
+<a href="#5060" id="5060">5060</a>
+<a href="#5061" id="5061">5061</a>
+<a href="#5062" id="5062">5062</a>
+<a href="#5063" id="5063">5063</a>
+<a href="#5064" id="5064">5064</a>
+<a href="#5065" id="5065">5065</a>
+<a href="#5066" id="5066">5066</a>
+<a href="#5067" id="5067">5067</a>
+<a href="#5068" id="5068">5068</a>
+<a href="#5069" id="5069">5069</a>
+<a href="#5070" id="5070">5070</a>
+<a href="#5071" id="5071">5071</a>
+<a href="#5072" id="5072">5072</a>
+<a href="#5073" id="5073">5073</a>
+<a href="#5074" id="5074">5074</a>
+<a href="#5075" id="5075">5075</a>
+<a href="#5076" id="5076">5076</a>
+<a href="#5077" id="5077">5077</a>
+<a href="#5078" id="5078">5078</a>
+<a href="#5079" id="5079">5079</a>
+<a href="#5080" id="5080">5080</a>
+<a href="#5081" id="5081">5081</a>
+<a href="#5082" id="5082">5082</a>
+<a href="#5083" id="5083">5083</a>
+<a href="#5084" id="5084">5084</a>
+<a href="#5085" id="5085">5085</a>
+<a href="#5086" id="5086">5086</a>
+<a href="#5087" id="5087">5087</a>
+<a href="#5088" id="5088">5088</a>
+<a href="#5089" id="5089">5089</a>
+<a href="#5090" id="5090">5090</a>
+<a href="#5091" id="5091">5091</a>
+<a href="#5092" id="5092">5092</a>
+<a href="#5093" id="5093">5093</a>
+<a href="#5094" id="5094">5094</a>
+<a href="#5095" id="5095">5095</a>
+<a href="#5096" id="5096">5096</a>
+<a href="#5097" id="5097">5097</a>
+<a href="#5098" id="5098">5098</a>
+<a href="#5099" id="5099">5099</a>
+<a href="#5100" id="5100">5100</a>
+<a href="#5101" id="5101">5101</a>
+<a href="#5102" id="5102">5102</a>
+<a href="#5103" id="5103">5103</a>
+<a href="#5104" id="5104">5104</a>
+<a href="#5105" id="5105">5105</a>
+<a href="#5106" id="5106">5106</a>
+<a href="#5107" id="5107">5107</a>
+<a href="#5108" id="5108">5108</a>
+<a href="#5109" id="5109">5109</a>
+<a href="#5110" id="5110">5110</a>
+<a href="#5111" id="5111">5111</a>
+<a href="#5112" id="5112">5112</a>
+<a href="#5113" id="5113">5113</a>
+<a href="#5114" id="5114">5114</a>
+<a href="#5115" id="5115">5115</a>
+<a href="#5116" id="5116">5116</a>
+<a href="#5117" id="5117">5117</a>
+<a href="#5118" id="5118">5118</a>
+<a href="#5119" id="5119">5119</a>
+<a href="#5120" id="5120">5120</a>
+<a href="#5121" id="5121">5121</a>
+<a href="#5122" id="5122">5122</a>
+<a href="#5123" id="5123">5123</a>
+<a href="#5124" id="5124">5124</a>
+<a href="#5125" id="5125">5125</a>
+<a href="#5126" id="5126">5126</a>
+<a href="#5127" id="5127">5127</a>
+<a href="#5128" id="5128">5128</a>
+</pre></div><pre class="rust"><code><span class="comment">// (num-bits, bits)
+</span><span class="kw">pub const </span>ENCODE_TABLE: [(usize, u64); <span class="number">257</span>] = [
+    (<span class="number">13</span>, <span class="number">0x1ff8</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffd8</span>),
+    (<span class="number">28</span>, <span class="number">0xfffffe2</span>),
+    (<span class="number">28</span>, <span class="number">0xfffffe3</span>),
+    (<span class="number">28</span>, <span class="number">0xfffffe4</span>),
+    (<span class="number">28</span>, <span class="number">0xfffffe5</span>),
+    (<span class="number">28</span>, <span class="number">0xfffffe6</span>),
+    (<span class="number">28</span>, <span class="number">0xfffffe7</span>),
+    (<span class="number">28</span>, <span class="number">0xfffffe8</span>),
+    (<span class="number">24</span>, <span class="number">0xffffea</span>),
+    (<span class="number">30</span>, <span class="number">0x3ffffffc</span>),
+    (<span class="number">28</span>, <span class="number">0xfffffe9</span>),
+    (<span class="number">28</span>, <span class="number">0xfffffea</span>),
+    (<span class="number">30</span>, <span class="number">0x3ffffffd</span>),
+    (<span class="number">28</span>, <span class="number">0xfffffeb</span>),
+    (<span class="number">28</span>, <span class="number">0xfffffec</span>),
+    (<span class="number">28</span>, <span class="number">0xfffffed</span>),
+    (<span class="number">28</span>, <span class="number">0xfffffee</span>),
+    (<span class="number">28</span>, <span class="number">0xfffffef</span>),
+    (<span class="number">28</span>, <span class="number">0xffffff0</span>),
+    (<span class="number">28</span>, <span class="number">0xffffff1</span>),
+    (<span class="number">28</span>, <span class="number">0xffffff2</span>),
+    (<span class="number">30</span>, <span class="number">0x3ffffffe</span>),
+    (<span class="number">28</span>, <span class="number">0xffffff3</span>),
+    (<span class="number">28</span>, <span class="number">0xffffff4</span>),
+    (<span class="number">28</span>, <span class="number">0xffffff5</span>),
+    (<span class="number">28</span>, <span class="number">0xffffff6</span>),
+    (<span class="number">28</span>, <span class="number">0xffffff7</span>),
+    (<span class="number">28</span>, <span class="number">0xffffff8</span>),
+    (<span class="number">28</span>, <span class="number">0xffffff9</span>),
+    (<span class="number">28</span>, <span class="number">0xffffffa</span>),
+    (<span class="number">28</span>, <span class="number">0xffffffb</span>),
+    (<span class="number">6</span>, <span class="number">0x14</span>),
+    (<span class="number">10</span>, <span class="number">0x3f8</span>),
+    (<span class="number">10</span>, <span class="number">0x3f9</span>),
+    (<span class="number">12</span>, <span class="number">0xffa</span>),
+    (<span class="number">13</span>, <span class="number">0x1ff9</span>),
+    (<span class="number">6</span>, <span class="number">0x15</span>),
+    (<span class="number">8</span>, <span class="number">0xf8</span>),
+    (<span class="number">11</span>, <span class="number">0x7fa</span>),
+    (<span class="number">10</span>, <span class="number">0x3fa</span>),
+    (<span class="number">10</span>, <span class="number">0x3fb</span>),
+    (<span class="number">8</span>, <span class="number">0xf9</span>),
+    (<span class="number">11</span>, <span class="number">0x7fb</span>),
+    (<span class="number">8</span>, <span class="number">0xfa</span>),
+    (<span class="number">6</span>, <span class="number">0x16</span>),
+    (<span class="number">6</span>, <span class="number">0x17</span>),
+    (<span class="number">6</span>, <span class="number">0x18</span>),
+    (<span class="number">5</span>, <span class="number">0x0</span>),
+    (<span class="number">5</span>, <span class="number">0x1</span>),
+    (<span class="number">5</span>, <span class="number">0x2</span>),
+    (<span class="number">6</span>, <span class="number">0x19</span>),
+    (<span class="number">6</span>, <span class="number">0x1a</span>),
+    (<span class="number">6</span>, <span class="number">0x1b</span>),
+    (<span class="number">6</span>, <span class="number">0x1c</span>),
+    (<span class="number">6</span>, <span class="number">0x1d</span>),
+    (<span class="number">6</span>, <span class="number">0x1e</span>),
+    (<span class="number">6</span>, <span class="number">0x1f</span>),
+    (<span class="number">7</span>, <span class="number">0x5c</span>),
+    (<span class="number">8</span>, <span class="number">0xfb</span>),
+    (<span class="number">15</span>, <span class="number">0x7ffc</span>),
+    (<span class="number">6</span>, <span class="number">0x20</span>),
+    (<span class="number">12</span>, <span class="number">0xffb</span>),
+    (<span class="number">10</span>, <span class="number">0x3fc</span>),
+    (<span class="number">13</span>, <span class="number">0x1ffa</span>),
+    (<span class="number">6</span>, <span class="number">0x21</span>),
+    (<span class="number">7</span>, <span class="number">0x5d</span>),
+    (<span class="number">7</span>, <span class="number">0x5e</span>),
+    (<span class="number">7</span>, <span class="number">0x5f</span>),
+    (<span class="number">7</span>, <span class="number">0x60</span>),
+    (<span class="number">7</span>, <span class="number">0x61</span>),
+    (<span class="number">7</span>, <span class="number">0x62</span>),
+    (<span class="number">7</span>, <span class="number">0x63</span>),
+    (<span class="number">7</span>, <span class="number">0x64</span>),
+    (<span class="number">7</span>, <span class="number">0x65</span>),
+    (<span class="number">7</span>, <span class="number">0x66</span>),
+    (<span class="number">7</span>, <span class="number">0x67</span>),
+    (<span class="number">7</span>, <span class="number">0x68</span>),
+    (<span class="number">7</span>, <span class="number">0x69</span>),
+    (<span class="number">7</span>, <span class="number">0x6a</span>),
+    (<span class="number">7</span>, <span class="number">0x6b</span>),
+    (<span class="number">7</span>, <span class="number">0x6c</span>),
+    (<span class="number">7</span>, <span class="number">0x6d</span>),
+    (<span class="number">7</span>, <span class="number">0x6e</span>),
+    (<span class="number">7</span>, <span class="number">0x6f</span>),
+    (<span class="number">7</span>, <span class="number">0x70</span>),
+    (<span class="number">7</span>, <span class="number">0x71</span>),
+    (<span class="number">7</span>, <span class="number">0x72</span>),
+    (<span class="number">8</span>, <span class="number">0xfc</span>),
+    (<span class="number">7</span>, <span class="number">0x73</span>),
+    (<span class="number">8</span>, <span class="number">0xfd</span>),
+    (<span class="number">13</span>, <span class="number">0x1ffb</span>),
+    (<span class="number">19</span>, <span class="number">0x7fff0</span>),
+    (<span class="number">13</span>, <span class="number">0x1ffc</span>),
+    (<span class="number">14</span>, <span class="number">0x3ffc</span>),
+    (<span class="number">6</span>, <span class="number">0x22</span>),
+    (<span class="number">15</span>, <span class="number">0x7ffd</span>),
+    (<span class="number">5</span>, <span class="number">0x3</span>),
+    (<span class="number">6</span>, <span class="number">0x23</span>),
+    (<span class="number">5</span>, <span class="number">0x4</span>),
+    (<span class="number">6</span>, <span class="number">0x24</span>),
+    (<span class="number">5</span>, <span class="number">0x5</span>),
+    (<span class="number">6</span>, <span class="number">0x25</span>),
+    (<span class="number">6</span>, <span class="number">0x26</span>),
+    (<span class="number">6</span>, <span class="number">0x27</span>),
+    (<span class="number">5</span>, <span class="number">0x6</span>),
+    (<span class="number">7</span>, <span class="number">0x74</span>),
+    (<span class="number">7</span>, <span class="number">0x75</span>),
+    (<span class="number">6</span>, <span class="number">0x28</span>),
+    (<span class="number">6</span>, <span class="number">0x29</span>),
+    (<span class="number">6</span>, <span class="number">0x2a</span>),
+    (<span class="number">5</span>, <span class="number">0x7</span>),
+    (<span class="number">6</span>, <span class="number">0x2b</span>),
+    (<span class="number">7</span>, <span class="number">0x76</span>),
+    (<span class="number">6</span>, <span class="number">0x2c</span>),
+    (<span class="number">5</span>, <span class="number">0x8</span>),
+    (<span class="number">5</span>, <span class="number">0x9</span>),
+    (<span class="number">6</span>, <span class="number">0x2d</span>),
+    (<span class="number">7</span>, <span class="number">0x77</span>),
+    (<span class="number">7</span>, <span class="number">0x78</span>),
+    (<span class="number">7</span>, <span class="number">0x79</span>),
+    (<span class="number">7</span>, <span class="number">0x7a</span>),
+    (<span class="number">7</span>, <span class="number">0x7b</span>),
+    (<span class="number">15</span>, <span class="number">0x7ffe</span>),
+    (<span class="number">11</span>, <span class="number">0x7fc</span>),
+    (<span class="number">14</span>, <span class="number">0x3ffd</span>),
+    (<span class="number">13</span>, <span class="number">0x1ffd</span>),
+    (<span class="number">28</span>, <span class="number">0xffffffc</span>),
+    (<span class="number">20</span>, <span class="number">0xfffe6</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffd2</span>),
+    (<span class="number">20</span>, <span class="number">0xfffe7</span>),
+    (<span class="number">20</span>, <span class="number">0xfffe8</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffd3</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffd4</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffd5</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffd9</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffd6</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffda</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffdb</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffdc</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffdd</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffde</span>),
+    (<span class="number">24</span>, <span class="number">0xffffeb</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffdf</span>),
+    (<span class="number">24</span>, <span class="number">0xffffec</span>),
+    (<span class="number">24</span>, <span class="number">0xffffed</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffd7</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffe0</span>),
+    (<span class="number">24</span>, <span class="number">0xffffee</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffe1</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffe2</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffe3</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffe4</span>),
+    (<span class="number">21</span>, <span class="number">0x1fffdc</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffd8</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffe5</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffd9</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffe6</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffe7</span>),
+    (<span class="number">24</span>, <span class="number">0xffffef</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffda</span>),
+    (<span class="number">21</span>, <span class="number">0x1fffdd</span>),
+    (<span class="number">20</span>, <span class="number">0xfffe9</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffdb</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffdc</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffe8</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffe9</span>),
+    (<span class="number">21</span>, <span class="number">0x1fffde</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffea</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffdd</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffde</span>),
+    (<span class="number">24</span>, <span class="number">0xfffff0</span>),
+    (<span class="number">21</span>, <span class="number">0x1fffdf</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffdf</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffeb</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffec</span>),
+    (<span class="number">21</span>, <span class="number">0x1fffe0</span>),
+    (<span class="number">21</span>, <span class="number">0x1fffe1</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffe0</span>),
+    (<span class="number">21</span>, <span class="number">0x1fffe2</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffed</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffe1</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffee</span>),
+    (<span class="number">23</span>, <span class="number">0x7fffef</span>),
+    (<span class="number">20</span>, <span class="number">0xfffea</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffe2</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffe3</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffe4</span>),
+    (<span class="number">23</span>, <span class="number">0x7ffff0</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffe5</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffe6</span>),
+    (<span class="number">23</span>, <span class="number">0x7ffff1</span>),
+    (<span class="number">26</span>, <span class="number">0x3ffffe0</span>),
+    (<span class="number">26</span>, <span class="number">0x3ffffe1</span>),
+    (<span class="number">20</span>, <span class="number">0xfffeb</span>),
+    (<span class="number">19</span>, <span class="number">0x7fff1</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffe7</span>),
+    (<span class="number">23</span>, <span class="number">0x7ffff2</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffe8</span>),
+    (<span class="number">25</span>, <span class="number">0x1ffffec</span>),
+    (<span class="number">26</span>, <span class="number">0x3ffffe2</span>),
+    (<span class="number">26</span>, <span class="number">0x3ffffe3</span>),
+    (<span class="number">26</span>, <span class="number">0x3ffffe4</span>),
+    (<span class="number">27</span>, <span class="number">0x7ffffde</span>),
+    (<span class="number">27</span>, <span class="number">0x7ffffdf</span>),
+    (<span class="number">26</span>, <span class="number">0x3ffffe5</span>),
+    (<span class="number">24</span>, <span class="number">0xfffff1</span>),
+    (<span class="number">25</span>, <span class="number">0x1ffffed</span>),
+    (<span class="number">19</span>, <span class="number">0x7fff2</span>),
+    (<span class="number">21</span>, <span class="number">0x1fffe3</span>),
+    (<span class="number">26</span>, <span class="number">0x3ffffe6</span>),
+    (<span class="number">27</span>, <span class="number">0x7ffffe0</span>),
+    (<span class="number">27</span>, <span class="number">0x7ffffe1</span>),
+    (<span class="number">26</span>, <span class="number">0x3ffffe7</span>),
+    (<span class="number">27</span>, <span class="number">0x7ffffe2</span>),
+    (<span class="number">24</span>, <span class="number">0xfffff2</span>),
+    (<span class="number">21</span>, <span class="number">0x1fffe4</span>),
+    (<span class="number">21</span>, <span class="number">0x1fffe5</span>),
+    (<span class="number">26</span>, <span class="number">0x3ffffe8</span>),
+    (<span class="number">26</span>, <span class="number">0x3ffffe9</span>),
+    (<span class="number">28</span>, <span class="number">0xffffffd</span>),
+    (<span class="number">27</span>, <span class="number">0x7ffffe3</span>),
+    (<span class="number">27</span>, <span class="number">0x7ffffe4</span>),
+    (<span class="number">27</span>, <span class="number">0x7ffffe5</span>),
+    (<span class="number">20</span>, <span class="number">0xfffec</span>),
+    (<span class="number">24</span>, <span class="number">0xfffff3</span>),
+    (<span class="number">20</span>, <span class="number">0xfffed</span>),
+    (<span class="number">21</span>, <span class="number">0x1fffe6</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffe9</span>),
+    (<span class="number">21</span>, <span class="number">0x1fffe7</span>),
+    (<span class="number">21</span>, <span class="number">0x1fffe8</span>),
+    (<span class="number">23</span>, <span class="number">0x7ffff3</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffea</span>),
+    (<span class="number">22</span>, <span class="number">0x3fffeb</span>),
+    (<span class="number">25</span>, <span class="number">0x1ffffee</span>),
+    (<span class="number">25</span>, <span class="number">0x1ffffef</span>),
+    (<span class="number">24</span>, <span class="number">0xfffff4</span>),
+    (<span class="number">24</span>, <span class="number">0xfffff5</span>),
+    (<span class="number">26</span>, <span class="number">0x3ffffea</span>),
+    (<span class="number">23</span>, <span class="number">0x7ffff4</span>),
+    (<span class="number">26</span>, <span class="number">0x3ffffeb</span>),
+    (<span class="number">27</span>, <span class="number">0x7ffffe6</span>),
+    (<span class="number">26</span>, <span class="number">0x3ffffec</span>),
+    (<span class="number">26</span>, <span class="number">0x3ffffed</span>),
+    (<span class="number">27</span>, <span class="number">0x7ffffe7</span>),
+    (<span class="number">27</span>, <span class="number">0x7ffffe8</span>),
+    (<span class="number">27</span>, <span class="number">0x7ffffe9</span>),
+    (<span class="number">27</span>, <span class="number">0x7ffffea</span>),
+    (<span class="number">27</span>, <span class="number">0x7ffffeb</span>),
+    (<span class="number">28</span>, <span class="number">0xffffffe</span>),
+    (<span class="number">27</span>, <span class="number">0x7ffffec</span>),
+    (<span class="number">27</span>, <span class="number">0x7ffffed</span>),
+    (<span class="number">27</span>, <span class="number">0x7ffffee</span>),
+    (<span class="number">27</span>, <span class="number">0x7ffffef</span>),
+    (<span class="number">27</span>, <span class="number">0x7fffff0</span>),
+    (<span class="number">26</span>, <span class="number">0x3ffffee</span>),
+    (<span class="number">30</span>, <span class="number">0x3fffffff</span>),
+];
+
+<span class="comment">// (next-state, byte, flags)
+</span><span class="kw">pub const </span>DECODE_TABLE: [[(usize, u8, u8); <span class="number">16</span>]; <span class="number">256</span>] = [
+    <span class="comment">// 0
+    </span>[
+        (<span class="number">4</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">5</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">7</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">8</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">11</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">12</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">16</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">19</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">25</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">28</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">32</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">35</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">42</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">49</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">57</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">64</span>, <span class="number">0</span>, <span class="number">0x01</span>),
+    ],
+    <span class="comment">// 1
+    </span>[
+        (<span class="number">0</span>, <span class="number">48</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">49</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">50</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">97</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">99</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">101</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">105</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">111</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">115</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">116</span>, <span class="number">0x02</span>),
+        (<span class="number">13</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">14</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">17</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">18</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">20</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">21</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 2
+    </span>[
+        (<span class="number">1</span>, <span class="number">48</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">48</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">49</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">49</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">50</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">50</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">97</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">97</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">99</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">99</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">101</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">101</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">105</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">105</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">111</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">111</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 3
+    </span>[
+        (<span class="number">2</span>, <span class="number">48</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">48</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">48</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">48</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">49</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">49</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">49</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">49</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">50</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">50</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">50</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">50</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">97</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">97</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">97</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">97</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 4
+    </span>[
+        (<span class="number">3</span>, <span class="number">48</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">48</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">48</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">48</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">48</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">48</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">48</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">48</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">49</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">49</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">49</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">49</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">49</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">49</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">49</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">49</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 5
+    </span>[
+        (<span class="number">3</span>, <span class="number">50</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">50</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">50</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">50</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">50</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">50</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">50</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">50</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">97</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">97</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">97</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">97</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">97</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">97</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">97</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">97</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 6
+    </span>[
+        (<span class="number">2</span>, <span class="number">99</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">99</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">99</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">99</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">101</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">101</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">101</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">101</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">105</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">105</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">105</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">105</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">111</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">111</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">111</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">111</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 7
+    </span>[
+        (<span class="number">3</span>, <span class="number">99</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">99</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">99</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">99</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">99</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">99</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">99</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">99</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">101</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">101</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">101</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">101</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">101</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">101</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">101</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">101</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 8
+    </span>[
+        (<span class="number">3</span>, <span class="number">105</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">105</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">105</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">105</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">105</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">105</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">105</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">105</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">111</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">111</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">111</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">111</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">111</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">111</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">111</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">111</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 9
+    </span>[
+        (<span class="number">1</span>, <span class="number">115</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">115</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">116</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">116</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">32</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">37</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">45</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">46</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">47</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">51</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">52</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">53</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">54</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">55</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">56</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">57</span>, <span class="number">0x02</span>),
+    ],
+    <span class="comment">// 10
+    </span>[
+        (<span class="number">2</span>, <span class="number">115</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">115</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">115</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">115</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">116</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">116</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">116</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">116</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">32</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">32</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">37</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">37</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">45</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">45</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">46</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">46</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 11
+    </span>[
+        (<span class="number">3</span>, <span class="number">115</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">115</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">115</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">115</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">115</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">115</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">115</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">115</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">116</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">116</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">116</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">116</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">116</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">116</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">116</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">116</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 12
+    </span>[
+        (<span class="number">2</span>, <span class="number">32</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">32</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">32</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">32</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">37</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">37</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">37</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">37</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">45</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">45</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">45</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">45</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">46</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">46</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">46</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">46</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 13
+    </span>[
+        (<span class="number">3</span>, <span class="number">32</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">32</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">32</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">32</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">32</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">32</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">32</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">32</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">37</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">37</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">37</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">37</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">37</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">37</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">37</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">37</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 14
+    </span>[
+        (<span class="number">3</span>, <span class="number">45</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">45</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">45</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">45</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">45</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">45</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">45</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">45</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">46</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">46</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">46</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">46</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">46</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">46</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">46</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">46</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 15
+    </span>[
+        (<span class="number">1</span>, <span class="number">47</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">47</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">51</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">51</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">52</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">52</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">53</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">53</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">54</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">54</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">55</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">55</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">56</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">56</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">57</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">57</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 16
+    </span>[
+        (<span class="number">2</span>, <span class="number">47</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">47</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">47</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">47</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">51</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">51</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">51</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">51</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">52</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">52</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">52</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">52</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">53</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">53</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">53</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">53</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 17
+    </span>[
+        (<span class="number">3</span>, <span class="number">47</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">47</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">47</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">47</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">47</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">47</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">47</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">47</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">51</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">51</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">51</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">51</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">51</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">51</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">51</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">51</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 18
+    </span>[
+        (<span class="number">3</span>, <span class="number">52</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">52</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">52</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">52</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">52</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">52</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">52</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">52</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">53</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">53</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">53</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">53</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">53</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">53</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">53</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">53</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 19
+    </span>[
+        (<span class="number">2</span>, <span class="number">54</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">54</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">54</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">54</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">55</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">55</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">55</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">55</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">56</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">56</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">56</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">56</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">57</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">57</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">57</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">57</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 20
+    </span>[
+        (<span class="number">3</span>, <span class="number">54</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">54</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">54</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">54</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">54</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">54</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">54</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">54</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">55</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">55</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">55</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">55</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">55</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">55</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">55</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">55</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 21
+    </span>[
+        (<span class="number">3</span>, <span class="number">56</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">56</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">56</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">56</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">56</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">56</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">56</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">56</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">57</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">57</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">57</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">57</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">57</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">57</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">57</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">57</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 22
+    </span>[
+        (<span class="number">26</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">27</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">29</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">30</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">33</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">34</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">36</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">37</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">43</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">46</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">50</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">53</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">58</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">61</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">65</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">68</span>, <span class="number">0</span>, <span class="number">0x01</span>),
+    ],
+    <span class="comment">// 23
+    </span>[
+        (<span class="number">0</span>, <span class="number">61</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">65</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">95</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">98</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">100</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">102</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">103</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">104</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">108</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">109</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">110</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">112</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">114</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">117</span>, <span class="number">0x02</span>),
+        (<span class="number">38</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">39</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 24
+    </span>[
+        (<span class="number">1</span>, <span class="number">61</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">61</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">65</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">65</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">95</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">95</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">98</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">98</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">100</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">100</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">102</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">102</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">103</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">103</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">104</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">104</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 25
+    </span>[
+        (<span class="number">2</span>, <span class="number">61</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">61</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">61</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">61</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">65</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">65</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">65</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">65</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">95</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">95</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">95</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">95</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">98</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">98</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">98</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">98</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 26
+    </span>[
+        (<span class="number">3</span>, <span class="number">61</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">61</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">61</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">61</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">61</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">61</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">61</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">61</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">65</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">65</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">65</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">65</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">65</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">65</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">65</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">65</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 27
+    </span>[
+        (<span class="number">3</span>, <span class="number">95</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">95</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">95</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">95</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">95</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">95</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">95</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">95</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">98</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">98</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">98</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">98</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">98</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">98</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">98</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">98</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 28
+    </span>[
+        (<span class="number">2</span>, <span class="number">100</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">100</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">100</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">100</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">102</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">102</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">102</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">102</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">103</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">103</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">103</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">103</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">104</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">104</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">104</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">104</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 29
+    </span>[
+        (<span class="number">3</span>, <span class="number">100</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">100</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">100</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">100</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">100</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">100</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">100</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">100</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">102</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">102</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">102</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">102</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">102</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">102</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">102</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">102</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 30
+    </span>[
+        (<span class="number">3</span>, <span class="number">103</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">103</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">103</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">103</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">103</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">103</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">103</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">103</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">104</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">104</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">104</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">104</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">104</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">104</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">104</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">104</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 31
+    </span>[
+        (<span class="number">1</span>, <span class="number">108</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">108</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">109</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">109</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">110</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">110</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">112</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">112</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">114</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">114</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">117</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">117</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">58</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">66</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">67</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">68</span>, <span class="number">0x02</span>),
+    ],
+    <span class="comment">// 32
+    </span>[
+        (<span class="number">2</span>, <span class="number">108</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">108</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">108</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">108</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">109</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">109</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">109</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">109</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">110</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">110</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">110</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">110</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">112</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">112</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">112</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">112</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 33
+    </span>[
+        (<span class="number">3</span>, <span class="number">108</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">108</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">108</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">108</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">108</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">108</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">108</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">108</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">109</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">109</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">109</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">109</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">109</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">109</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">109</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">109</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 34
+    </span>[
+        (<span class="number">3</span>, <span class="number">110</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">110</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">110</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">110</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">110</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">110</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">110</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">110</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">112</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">112</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">112</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">112</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">112</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">112</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">112</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">112</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 35
+    </span>[
+        (<span class="number">2</span>, <span class="number">114</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">114</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">114</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">114</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">117</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">117</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">117</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">117</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">58</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">58</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">66</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">66</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">67</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">67</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">68</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">68</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 36
+    </span>[
+        (<span class="number">3</span>, <span class="number">114</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">114</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">114</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">114</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">114</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">114</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">114</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">114</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">117</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">117</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">117</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">117</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">117</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">117</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">117</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">117</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 37
+    </span>[
+        (<span class="number">2</span>, <span class="number">58</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">58</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">58</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">58</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">66</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">66</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">66</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">66</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">67</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">67</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">67</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">67</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">68</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">68</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">68</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">68</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 38
+    </span>[
+        (<span class="number">3</span>, <span class="number">58</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">58</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">58</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">58</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">58</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">58</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">58</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">58</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">66</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">66</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">66</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">66</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">66</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">66</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">66</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">66</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 39
+    </span>[
+        (<span class="number">3</span>, <span class="number">67</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">67</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">67</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">67</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">67</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">67</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">67</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">67</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">68</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">68</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">68</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">68</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">68</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">68</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">68</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">68</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 40
+    </span>[
+        (<span class="number">44</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">45</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">47</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">48</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">51</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">52</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">54</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">55</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">59</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">60</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">62</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">63</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">66</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">67</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">69</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">72</span>, <span class="number">0</span>, <span class="number">0x01</span>),
+    ],
+    <span class="comment">// 41
+    </span>[
+        (<span class="number">0</span>, <span class="number">69</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">70</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">71</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">72</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">73</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">74</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">75</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">76</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">77</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">78</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">79</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">80</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">81</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">82</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">83</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">84</span>, <span class="number">0x02</span>),
+    ],
+    <span class="comment">// 42
+    </span>[
+        (<span class="number">1</span>, <span class="number">69</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">69</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">70</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">70</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">71</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">71</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">72</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">72</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">73</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">73</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">74</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">74</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">75</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">75</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">76</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">76</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 43
+    </span>[
+        (<span class="number">2</span>, <span class="number">69</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">69</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">69</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">69</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">70</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">70</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">70</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">70</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">71</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">71</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">71</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">71</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">72</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">72</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">72</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">72</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 44
+    </span>[
+        (<span class="number">3</span>, <span class="number">69</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">69</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">69</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">69</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">69</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">69</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">69</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">69</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">70</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">70</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">70</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">70</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">70</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">70</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">70</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">70</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 45
+    </span>[
+        (<span class="number">3</span>, <span class="number">71</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">71</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">71</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">71</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">71</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">71</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">71</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">71</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">72</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">72</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">72</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">72</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">72</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">72</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">72</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">72</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 46
+    </span>[
+        (<span class="number">2</span>, <span class="number">73</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">73</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">73</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">73</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">74</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">74</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">74</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">74</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">75</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">75</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">75</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">75</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">76</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">76</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">76</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">76</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 47
+    </span>[
+        (<span class="number">3</span>, <span class="number">73</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">73</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">73</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">73</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">73</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">73</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">73</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">73</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">74</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">74</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">74</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">74</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">74</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">74</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">74</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">74</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 48
+    </span>[
+        (<span class="number">3</span>, <span class="number">75</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">75</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">75</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">75</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">75</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">75</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">75</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">75</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">76</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">76</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">76</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">76</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">76</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">76</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">76</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">76</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 49
+    </span>[
+        (<span class="number">1</span>, <span class="number">77</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">77</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">78</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">78</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">79</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">79</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">80</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">80</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">81</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">81</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">82</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">82</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">83</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">83</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">84</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">84</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 50
+    </span>[
+        (<span class="number">2</span>, <span class="number">77</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">77</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">77</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">77</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">78</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">78</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">78</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">78</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">79</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">79</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">79</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">79</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">80</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">80</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">80</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">80</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 51
+    </span>[
+        (<span class="number">3</span>, <span class="number">77</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">77</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">77</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">77</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">77</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">77</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">77</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">77</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">78</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">78</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">78</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">78</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">78</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">78</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">78</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">78</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 52
+    </span>[
+        (<span class="number">3</span>, <span class="number">79</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">79</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">79</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">79</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">79</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">79</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">79</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">79</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">80</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">80</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">80</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">80</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">80</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">80</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">80</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">80</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 53
+    </span>[
+        (<span class="number">2</span>, <span class="number">81</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">81</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">81</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">81</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">82</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">82</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">82</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">82</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">83</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">83</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">83</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">83</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">84</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">84</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">84</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">84</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 54
+    </span>[
+        (<span class="number">3</span>, <span class="number">81</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">81</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">81</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">81</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">81</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">81</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">81</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">81</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">82</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">82</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">82</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">82</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">82</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">82</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">82</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">82</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 55
+    </span>[
+        (<span class="number">3</span>, <span class="number">83</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">83</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">83</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">83</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">83</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">83</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">83</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">83</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">84</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">84</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">84</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">84</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">84</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">84</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">84</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">84</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 56
+    </span>[
+        (<span class="number">0</span>, <span class="number">85</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">86</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">87</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">89</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">106</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">107</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">113</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">118</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">119</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">120</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">121</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">122</span>, <span class="number">0x02</span>),
+        (<span class="number">70</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">71</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">73</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">74</span>, <span class="number">0</span>, <span class="number">0x01</span>),
+    ],
+    <span class="comment">// 57
+    </span>[
+        (<span class="number">1</span>, <span class="number">85</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">85</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">86</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">86</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">87</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">87</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">89</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">89</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">106</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">106</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">107</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">107</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">113</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">113</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">118</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">118</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 58
+    </span>[
+        (<span class="number">2</span>, <span class="number">85</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">85</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">85</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">85</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">86</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">86</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">86</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">86</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">87</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">87</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">87</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">87</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">89</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">89</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">89</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">89</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 59
+    </span>[
+        (<span class="number">3</span>, <span class="number">85</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">85</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">85</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">85</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">85</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">85</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">85</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">85</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">86</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">86</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">86</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">86</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">86</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">86</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">86</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">86</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 60
+    </span>[
+        (<span class="number">3</span>, <span class="number">87</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">87</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">87</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">87</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">87</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">87</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">87</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">87</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">89</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">89</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">89</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">89</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">89</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">89</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">89</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">89</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 61
+    </span>[
+        (<span class="number">2</span>, <span class="number">106</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">106</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">106</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">106</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">107</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">107</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">107</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">107</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">113</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">113</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">113</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">113</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">118</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">118</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">118</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">118</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 62
+    </span>[
+        (<span class="number">3</span>, <span class="number">106</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">106</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">106</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">106</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">106</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">106</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">106</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">106</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">107</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">107</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">107</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">107</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">107</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">107</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">107</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">107</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 63
+    </span>[
+        (<span class="number">3</span>, <span class="number">113</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">113</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">113</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">113</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">113</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">113</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">113</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">113</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">118</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">118</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">118</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">118</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">118</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">118</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">118</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">118</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 64
+    </span>[
+        (<span class="number">1</span>, <span class="number">119</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">119</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">120</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">120</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">121</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">121</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">122</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">122</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">38</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">42</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">44</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">59</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">88</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">90</span>, <span class="number">0x02</span>),
+        (<span class="number">75</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">78</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 65
+    </span>[
+        (<span class="number">2</span>, <span class="number">119</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">119</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">119</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">119</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">120</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">120</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">120</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">120</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">121</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">121</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">121</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">121</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">122</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">122</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">122</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">122</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 66
+    </span>[
+        (<span class="number">3</span>, <span class="number">119</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">119</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">119</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">119</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">119</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">119</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">119</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">119</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">120</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">120</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">120</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">120</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">120</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">120</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">120</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">120</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 67
+    </span>[
+        (<span class="number">3</span>, <span class="number">121</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">121</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">121</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">121</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">121</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">121</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">121</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">121</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">122</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">122</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">122</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">122</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">122</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">122</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">122</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">122</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 68
+    </span>[
+        (<span class="number">1</span>, <span class="number">38</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">38</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">42</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">42</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">44</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">44</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">59</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">59</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">88</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">88</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">90</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">90</span>, <span class="number">0x03</span>),
+        (<span class="number">76</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">77</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">79</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">81</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 69
+    </span>[
+        (<span class="number">2</span>, <span class="number">38</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">38</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">38</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">38</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">42</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">42</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">42</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">42</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">44</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">44</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">44</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">44</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">59</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">59</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">59</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">59</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 70
+    </span>[
+        (<span class="number">3</span>, <span class="number">38</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">38</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">38</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">38</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">38</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">38</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">38</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">38</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">42</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">42</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">42</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">42</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">42</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">42</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">42</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">42</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 71
+    </span>[
+        (<span class="number">3</span>, <span class="number">44</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">44</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">44</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">44</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">44</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">44</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">44</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">44</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">59</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">59</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">59</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">59</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">59</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">59</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">59</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">59</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 72
+    </span>[
+        (<span class="number">2</span>, <span class="number">88</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">88</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">88</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">88</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">90</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">90</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">90</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">90</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">33</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">34</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">40</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">41</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">63</span>, <span class="number">0x02</span>),
+        (<span class="number">80</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">82</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">84</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 73
+    </span>[
+        (<span class="number">3</span>, <span class="number">88</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">88</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">88</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">88</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">88</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">88</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">88</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">88</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">90</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">90</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">90</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">90</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">90</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">90</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">90</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">90</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 74
+    </span>[
+        (<span class="number">1</span>, <span class="number">33</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">33</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">34</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">34</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">40</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">40</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">41</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">41</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">63</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">63</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">39</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">43</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">124</span>, <span class="number">0x02</span>),
+        (<span class="number">83</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">85</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">88</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 75
+    </span>[
+        (<span class="number">2</span>, <span class="number">33</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">33</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">33</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">33</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">34</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">34</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">34</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">34</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">40</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">40</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">40</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">40</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">41</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">41</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">41</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">41</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 76
+    </span>[
+        (<span class="number">3</span>, <span class="number">33</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">33</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">33</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">33</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">33</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">33</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">33</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">33</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">34</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">34</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">34</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">34</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">34</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">34</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">34</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">34</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 77
+    </span>[
+        (<span class="number">3</span>, <span class="number">40</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">40</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">40</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">40</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">40</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">40</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">40</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">40</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">41</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">41</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">41</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">41</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">41</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">41</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">41</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">41</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 78
+    </span>[
+        (<span class="number">2</span>, <span class="number">63</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">63</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">63</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">63</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">39</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">39</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">43</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">43</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">124</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">124</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">35</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">62</span>, <span class="number">0x02</span>),
+        (<span class="number">86</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">87</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">89</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">90</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 79
+    </span>[
+        (<span class="number">3</span>, <span class="number">63</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">63</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">63</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">63</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">63</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">63</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">63</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">63</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">39</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">39</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">39</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">39</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">43</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">43</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">43</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">43</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 80
+    </span>[
+        (<span class="number">3</span>, <span class="number">39</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">39</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">39</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">39</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">39</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">39</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">39</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">39</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">43</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">43</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">43</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">43</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">43</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">43</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">43</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">43</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 81
+    </span>[
+        (<span class="number">2</span>, <span class="number">124</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">124</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">124</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">124</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">35</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">35</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">62</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">62</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">0</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">36</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">64</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">91</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">93</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">126</span>, <span class="number">0x02</span>),
+        (<span class="number">91</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">92</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 82
+    </span>[
+        (<span class="number">3</span>, <span class="number">124</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">124</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">124</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">124</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">124</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">124</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">124</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">124</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">35</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">35</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">35</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">35</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">62</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">62</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">62</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">62</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 83
+    </span>[
+        (<span class="number">3</span>, <span class="number">35</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">35</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">35</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">35</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">35</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">35</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">35</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">35</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">62</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">62</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">62</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">62</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">62</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">62</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">62</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">62</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 84
+    </span>[
+        (<span class="number">1</span>, <span class="number">0</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">0</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">36</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">36</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">64</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">64</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">91</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">91</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">93</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">93</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">126</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">126</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">94</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">125</span>, <span class="number">0x02</span>),
+        (<span class="number">93</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">94</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 85
+    </span>[
+        (<span class="number">2</span>, <span class="number">0</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">0</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">0</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">0</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">36</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">36</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">36</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">36</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">64</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">64</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">64</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">64</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">91</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">91</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">91</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">91</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 86
+    </span>[
+        (<span class="number">3</span>, <span class="number">0</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">0</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">0</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">0</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">0</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">0</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">0</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">0</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">36</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">36</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">36</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">36</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">36</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">36</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">36</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">36</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 87
+    </span>[
+        (<span class="number">3</span>, <span class="number">64</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">64</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">64</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">64</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">64</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">64</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">64</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">64</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">91</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">91</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">91</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">91</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">91</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">91</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">91</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">91</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 88
+    </span>[
+        (<span class="number">2</span>, <span class="number">93</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">93</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">93</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">93</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">126</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">126</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">126</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">126</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">94</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">94</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">125</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">125</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">60</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">96</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">123</span>, <span class="number">0x02</span>),
+        (<span class="number">95</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 89
+    </span>[
+        (<span class="number">3</span>, <span class="number">93</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">93</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">93</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">93</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">93</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">93</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">93</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">93</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">126</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">126</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">126</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">126</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">126</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">126</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">126</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">126</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 90
+    </span>[
+        (<span class="number">2</span>, <span class="number">94</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">94</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">94</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">94</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">125</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">125</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">125</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">125</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">60</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">60</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">96</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">96</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">123</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">123</span>, <span class="number">0x03</span>),
+        (<span class="number">96</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">110</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 91
+    </span>[
+        (<span class="number">3</span>, <span class="number">94</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">94</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">94</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">94</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">94</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">94</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">94</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">94</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">125</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">125</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">125</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">125</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">125</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">125</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">125</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">125</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 92
+    </span>[
+        (<span class="number">2</span>, <span class="number">60</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">60</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">60</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">60</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">96</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">96</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">96</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">96</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">123</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">123</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">123</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">123</span>, <span class="number">0x03</span>),
+        (<span class="number">97</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">101</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">111</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">133</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 93
+    </span>[
+        (<span class="number">3</span>, <span class="number">60</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">60</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">60</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">60</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">60</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">60</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">60</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">60</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">96</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">96</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">96</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">96</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">96</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">96</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">96</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">96</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 94
+    </span>[
+        (<span class="number">3</span>, <span class="number">123</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">123</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">123</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">123</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">123</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">123</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">123</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">123</span>, <span class="number">0x03</span>),
+        (<span class="number">98</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">99</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">102</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">105</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">112</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">119</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">134</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">153</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 95
+    </span>[
+        (<span class="number">0</span>, <span class="number">92</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">195</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">208</span>, <span class="number">0x02</span>),
+        (<span class="number">100</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">103</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">104</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">106</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">107</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">113</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">116</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">120</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">126</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">135</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">142</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">154</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">169</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 96
+    </span>[
+        (<span class="number">1</span>, <span class="number">92</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">92</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">195</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">195</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">208</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">208</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">128</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">130</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">131</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">162</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">184</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">194</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">224</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">226</span>, <span class="number">0x02</span>),
+        (<span class="number">108</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">109</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 97
+    </span>[
+        (<span class="number">2</span>, <span class="number">92</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">92</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">92</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">92</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">195</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">195</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">195</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">195</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">208</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">208</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">208</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">208</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">128</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">128</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">130</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">130</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 98
+    </span>[
+        (<span class="number">3</span>, <span class="number">92</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">92</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">92</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">92</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">92</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">92</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">92</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">92</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">195</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">195</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">195</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">195</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">195</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">195</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">195</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">195</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 99
+    </span>[
+        (<span class="number">3</span>, <span class="number">208</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">208</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">208</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">208</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">208</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">208</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">208</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">208</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">128</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">128</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">128</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">128</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">130</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">130</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">130</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">130</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 100
+    </span>[
+        (<span class="number">3</span>, <span class="number">128</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">128</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">128</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">128</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">128</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">128</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">128</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">128</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">130</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">130</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">130</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">130</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">130</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">130</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">130</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">130</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 101
+    </span>[
+        (<span class="number">1</span>, <span class="number">131</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">131</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">162</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">162</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">184</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">184</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">194</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">194</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">224</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">224</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">226</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">226</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">153</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">161</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">167</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">172</span>, <span class="number">0x02</span>),
+    ],
+    <span class="comment">// 102
+    </span>[
+        (<span class="number">2</span>, <span class="number">131</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">131</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">131</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">131</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">162</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">162</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">162</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">162</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">184</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">184</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">184</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">184</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">194</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">194</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">194</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">194</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 103
+    </span>[
+        (<span class="number">3</span>, <span class="number">131</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">131</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">131</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">131</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">131</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">131</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">131</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">131</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">162</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">162</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">162</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">162</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">162</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">162</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">162</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">162</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 104
+    </span>[
+        (<span class="number">3</span>, <span class="number">184</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">184</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">184</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">184</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">184</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">184</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">184</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">184</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">194</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">194</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">194</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">194</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">194</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">194</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">194</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">194</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 105
+    </span>[
+        (<span class="number">2</span>, <span class="number">224</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">224</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">224</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">224</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">226</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">226</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">226</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">226</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">153</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">153</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">161</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">161</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">167</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">167</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">172</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">172</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 106
+    </span>[
+        (<span class="number">3</span>, <span class="number">224</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">224</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">224</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">224</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">224</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">224</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">224</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">224</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">226</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">226</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">226</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">226</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">226</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">226</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">226</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">226</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 107
+    </span>[
+        (<span class="number">2</span>, <span class="number">153</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">153</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">153</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">153</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">161</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">161</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">161</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">161</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">167</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">167</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">167</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">167</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">172</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">172</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">172</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">172</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 108
+    </span>[
+        (<span class="number">3</span>, <span class="number">153</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">153</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">153</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">153</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">153</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">153</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">153</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">153</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">161</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">161</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">161</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">161</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">161</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">161</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">161</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">161</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 109
+    </span>[
+        (<span class="number">3</span>, <span class="number">167</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">167</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">167</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">167</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">167</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">167</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">167</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">167</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">172</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">172</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">172</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">172</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">172</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">172</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">172</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">172</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 110
+    </span>[
+        (<span class="number">114</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">115</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">117</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">118</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">121</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">123</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">127</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">130</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">136</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">139</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">143</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">146</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">155</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">162</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">170</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">180</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 111
+    </span>[
+        (<span class="number">0</span>, <span class="number">176</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">177</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">179</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">209</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">216</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">217</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">227</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">229</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">230</span>, <span class="number">0x02</span>),
+        (<span class="number">122</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">124</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">125</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">128</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">129</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">131</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">132</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 112
+    </span>[
+        (<span class="number">1</span>, <span class="number">176</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">176</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">177</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">177</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">179</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">179</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">209</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">209</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">216</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">216</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">217</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">217</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">227</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">227</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">229</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">229</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 113
+    </span>[
+        (<span class="number">2</span>, <span class="number">176</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">176</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">176</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">176</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">177</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">177</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">177</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">177</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">179</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">179</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">179</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">179</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">209</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">209</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">209</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">209</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 114
+    </span>[
+        (<span class="number">3</span>, <span class="number">176</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">176</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">176</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">176</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">176</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">176</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">176</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">176</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">177</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">177</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">177</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">177</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">177</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">177</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">177</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">177</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 115
+    </span>[
+        (<span class="number">3</span>, <span class="number">179</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">179</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">179</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">179</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">179</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">179</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">179</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">179</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">209</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">209</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">209</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">209</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">209</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">209</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">209</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">209</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 116
+    </span>[
+        (<span class="number">2</span>, <span class="number">216</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">216</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">216</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">216</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">217</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">217</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">217</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">217</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">227</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">227</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">227</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">227</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">229</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">229</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">229</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">229</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 117
+    </span>[
+        (<span class="number">3</span>, <span class="number">216</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">216</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">216</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">216</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">216</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">216</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">216</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">216</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">217</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">217</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">217</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">217</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">217</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">217</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">217</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">217</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 118
+    </span>[
+        (<span class="number">3</span>, <span class="number">227</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">227</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">227</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">227</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">227</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">227</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">227</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">227</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">229</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">229</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">229</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">229</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">229</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">229</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">229</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">229</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 119
+    </span>[
+        (<span class="number">1</span>, <span class="number">230</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">230</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">129</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">132</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">133</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">134</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">136</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">146</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">154</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">156</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">160</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">163</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">164</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">169</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">170</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">173</span>, <span class="number">0x02</span>),
+    ],
+    <span class="comment">// 120
+    </span>[
+        (<span class="number">2</span>, <span class="number">230</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">230</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">230</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">230</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">129</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">129</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">132</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">132</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">133</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">133</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">134</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">134</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">136</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">136</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">146</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">146</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 121
+    </span>[
+        (<span class="number">3</span>, <span class="number">230</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">230</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">230</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">230</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">230</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">230</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">230</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">230</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">129</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">129</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">129</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">129</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">132</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">132</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">132</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">132</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 122
+    </span>[
+        (<span class="number">3</span>, <span class="number">129</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">129</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">129</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">129</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">129</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">129</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">129</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">129</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">132</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">132</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">132</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">132</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">132</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">132</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">132</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">132</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 123
+    </span>[
+        (<span class="number">2</span>, <span class="number">133</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">133</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">133</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">133</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">134</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">134</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">134</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">134</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">136</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">136</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">136</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">136</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">146</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">146</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">146</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">146</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 124
+    </span>[
+        (<span class="number">3</span>, <span class="number">133</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">133</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">133</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">133</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">133</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">133</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">133</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">133</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">134</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">134</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">134</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">134</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">134</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">134</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">134</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">134</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 125
+    </span>[
+        (<span class="number">3</span>, <span class="number">136</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">136</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">136</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">136</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">136</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">136</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">136</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">136</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">146</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">146</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">146</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">146</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">146</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">146</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">146</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">146</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 126
+    </span>[
+        (<span class="number">1</span>, <span class="number">154</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">154</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">156</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">156</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">160</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">160</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">163</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">163</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">164</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">164</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">169</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">169</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">170</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">170</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">173</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">173</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 127
+    </span>[
+        (<span class="number">2</span>, <span class="number">154</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">154</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">154</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">154</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">156</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">156</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">156</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">156</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">160</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">160</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">160</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">160</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">163</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">163</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">163</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">163</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 128
+    </span>[
+        (<span class="number">3</span>, <span class="number">154</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">154</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">154</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">154</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">154</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">154</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">154</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">154</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">156</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">156</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">156</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">156</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">156</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">156</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">156</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">156</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 129
+    </span>[
+        (<span class="number">3</span>, <span class="number">160</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">160</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">160</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">160</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">160</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">160</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">160</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">160</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">163</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">163</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">163</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">163</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">163</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">163</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">163</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">163</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 130
+    </span>[
+        (<span class="number">2</span>, <span class="number">164</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">164</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">164</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">164</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">169</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">169</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">169</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">169</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">170</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">170</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">170</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">170</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">173</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">173</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">173</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">173</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 131
+    </span>[
+        (<span class="number">3</span>, <span class="number">164</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">164</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">164</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">164</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">164</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">164</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">164</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">164</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">169</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">169</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">169</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">169</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">169</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">169</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">169</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">169</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 132
+    </span>[
+        (<span class="number">3</span>, <span class="number">170</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">170</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">170</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">170</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">170</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">170</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">170</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">170</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">173</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">173</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">173</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">173</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">173</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">173</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">173</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">173</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 133
+    </span>[
+        (<span class="number">137</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">138</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">140</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">141</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">144</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">145</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">147</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">150</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">156</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">159</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">163</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">166</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">171</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">174</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">181</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">190</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 134
+    </span>[
+        (<span class="number">0</span>, <span class="number">178</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">181</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">185</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">186</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">187</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">189</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">190</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">196</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">198</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">228</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">232</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">233</span>, <span class="number">0x02</span>),
+        (<span class="number">148</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">149</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">151</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">152</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 135
+    </span>[
+        (<span class="number">1</span>, <span class="number">178</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">178</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">181</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">181</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">185</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">185</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">186</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">186</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">187</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">187</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">189</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">189</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">190</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">190</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">196</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">196</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 136
+    </span>[
+        (<span class="number">2</span>, <span class="number">178</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">178</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">178</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">178</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">181</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">181</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">181</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">181</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">185</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">185</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">185</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">185</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">186</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">186</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">186</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">186</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 137
+    </span>[
+        (<span class="number">3</span>, <span class="number">178</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">178</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">178</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">178</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">178</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">178</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">178</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">178</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">181</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">181</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">181</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">181</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">181</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">181</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">181</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">181</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 138
+    </span>[
+        (<span class="number">3</span>, <span class="number">185</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">185</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">185</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">185</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">185</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">185</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">185</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">185</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">186</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">186</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">186</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">186</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">186</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">186</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">186</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">186</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 139
+    </span>[
+        (<span class="number">2</span>, <span class="number">187</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">187</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">187</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">187</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">189</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">189</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">189</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">189</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">190</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">190</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">190</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">190</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">196</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">196</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">196</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">196</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 140
+    </span>[
+        (<span class="number">3</span>, <span class="number">187</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">187</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">187</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">187</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">187</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">187</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">187</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">187</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">189</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">189</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">189</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">189</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">189</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">189</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">189</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">189</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 141
+    </span>[
+        (<span class="number">3</span>, <span class="number">190</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">190</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">190</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">190</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">190</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">190</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">190</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">190</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">196</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">196</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">196</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">196</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">196</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">196</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">196</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">196</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 142
+    </span>[
+        (<span class="number">1</span>, <span class="number">198</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">198</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">228</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">228</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">232</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">232</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">233</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">233</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">1</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">135</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">137</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">138</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">139</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">140</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">141</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">143</span>, <span class="number">0x02</span>),
+    ],
+    <span class="comment">// 143
+    </span>[
+        (<span class="number">2</span>, <span class="number">198</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">198</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">198</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">198</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">228</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">228</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">228</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">228</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">232</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">232</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">232</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">232</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">233</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">233</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">233</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">233</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 144
+    </span>[
+        (<span class="number">3</span>, <span class="number">198</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">198</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">198</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">198</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">198</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">198</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">198</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">198</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">228</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">228</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">228</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">228</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">228</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">228</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">228</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">228</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 145
+    </span>[
+        (<span class="number">3</span>, <span class="number">232</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">232</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">232</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">232</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">232</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">232</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">232</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">232</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">233</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">233</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">233</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">233</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">233</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">233</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">233</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">233</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 146
+    </span>[
+        (<span class="number">1</span>, <span class="number">1</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">1</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">135</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">135</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">137</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">137</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">138</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">138</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">139</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">139</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">140</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">140</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">141</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">141</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">143</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">143</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 147
+    </span>[
+        (<span class="number">2</span>, <span class="number">1</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">1</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">1</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">1</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">135</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">135</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">135</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">135</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">137</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">137</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">137</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">137</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">138</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">138</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">138</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">138</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 148
+    </span>[
+        (<span class="number">3</span>, <span class="number">1</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">1</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">1</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">1</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">1</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">1</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">1</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">1</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">135</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">135</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">135</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">135</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">135</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">135</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">135</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">135</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 149
+    </span>[
+        (<span class="number">3</span>, <span class="number">137</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">137</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">137</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">137</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">137</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">137</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">137</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">137</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">138</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">138</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">138</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">138</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">138</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">138</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">138</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">138</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 150
+    </span>[
+        (<span class="number">2</span>, <span class="number">139</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">139</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">139</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">139</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">140</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">140</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">140</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">140</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">141</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">141</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">141</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">141</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">143</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">143</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">143</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">143</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 151
+    </span>[
+        (<span class="number">3</span>, <span class="number">139</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">139</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">139</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">139</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">139</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">139</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">139</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">139</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">140</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">140</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">140</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">140</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">140</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">140</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">140</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">140</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 152
+    </span>[
+        (<span class="number">3</span>, <span class="number">141</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">141</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">141</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">141</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">141</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">141</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">141</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">141</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">143</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">143</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">143</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">143</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">143</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">143</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">143</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">143</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 153
+    </span>[
+        (<span class="number">157</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">158</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">160</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">161</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">164</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">165</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">167</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">168</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">172</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">173</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">175</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">177</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">182</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">185</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">191</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">207</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 154
+    </span>[
+        (<span class="number">0</span>, <span class="number">147</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">149</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">150</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">151</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">152</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">155</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">157</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">158</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">165</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">166</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">168</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">174</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">175</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">180</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">182</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">183</span>, <span class="number">0x02</span>),
+    ],
+    <span class="comment">// 155
+    </span>[
+        (<span class="number">1</span>, <span class="number">147</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">147</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">149</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">149</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">150</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">150</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">151</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">151</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">152</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">152</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">155</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">155</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">157</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">157</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">158</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">158</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 156
+    </span>[
+        (<span class="number">2</span>, <span class="number">147</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">147</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">147</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">147</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">149</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">149</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">149</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">149</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">150</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">150</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">150</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">150</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">151</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">151</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">151</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">151</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 157
+    </span>[
+        (<span class="number">3</span>, <span class="number">147</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">147</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">147</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">147</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">147</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">147</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">147</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">147</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">149</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">149</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">149</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">149</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">149</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">149</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">149</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">149</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 158
+    </span>[
+        (<span class="number">3</span>, <span class="number">150</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">150</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">150</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">150</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">150</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">150</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">150</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">150</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">151</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">151</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">151</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">151</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">151</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">151</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">151</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">151</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 159
+    </span>[
+        (<span class="number">2</span>, <span class="number">152</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">152</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">152</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">152</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">155</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">155</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">155</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">155</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">157</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">157</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">157</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">157</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">158</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">158</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">158</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">158</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 160
+    </span>[
+        (<span class="number">3</span>, <span class="number">152</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">152</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">152</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">152</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">152</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">152</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">152</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">152</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">155</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">155</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">155</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">155</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">155</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">155</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">155</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">155</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 161
+    </span>[
+        (<span class="number">3</span>, <span class="number">157</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">157</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">157</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">157</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">157</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">157</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">157</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">157</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">158</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">158</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">158</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">158</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">158</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">158</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">158</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">158</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 162
+    </span>[
+        (<span class="number">1</span>, <span class="number">165</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">165</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">166</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">166</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">168</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">168</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">174</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">174</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">175</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">175</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">180</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">180</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">182</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">182</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">183</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">183</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 163
+    </span>[
+        (<span class="number">2</span>, <span class="number">165</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">165</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">165</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">165</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">166</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">166</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">166</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">166</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">168</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">168</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">168</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">168</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">174</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">174</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">174</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">174</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 164
+    </span>[
+        (<span class="number">3</span>, <span class="number">165</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">165</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">165</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">165</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">165</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">165</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">165</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">165</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">166</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">166</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">166</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">166</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">166</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">166</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">166</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">166</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 165
+    </span>[
+        (<span class="number">3</span>, <span class="number">168</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">168</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">168</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">168</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">168</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">168</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">168</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">168</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">174</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">174</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">174</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">174</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">174</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">174</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">174</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">174</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 166
+    </span>[
+        (<span class="number">2</span>, <span class="number">175</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">175</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">175</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">175</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">180</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">180</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">180</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">180</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">182</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">182</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">182</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">182</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">183</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">183</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">183</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">183</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 167
+    </span>[
+        (<span class="number">3</span>, <span class="number">175</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">175</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">175</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">175</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">175</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">175</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">175</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">175</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">180</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">180</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">180</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">180</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">180</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">180</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">180</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">180</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 168
+    </span>[
+        (<span class="number">3</span>, <span class="number">182</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">182</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">182</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">182</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">182</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">182</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">182</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">182</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">183</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">183</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">183</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">183</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">183</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">183</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">183</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">183</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 169
+    </span>[
+        (<span class="number">0</span>, <span class="number">188</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">191</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">197</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">231</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">239</span>, <span class="number">0x02</span>),
+        (<span class="number">176</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">178</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">179</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">183</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">184</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">186</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">187</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">192</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">199</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">208</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">223</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 170
+    </span>[
+        (<span class="number">1</span>, <span class="number">188</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">188</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">191</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">191</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">197</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">197</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">231</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">231</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">239</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">239</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">9</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">142</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">144</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">145</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">148</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">159</span>, <span class="number">0x02</span>),
+    ],
+    <span class="comment">// 171
+    </span>[
+        (<span class="number">2</span>, <span class="number">188</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">188</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">188</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">188</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">191</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">191</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">191</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">191</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">197</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">197</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">197</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">197</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">231</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">231</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">231</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">231</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 172
+    </span>[
+        (<span class="number">3</span>, <span class="number">188</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">188</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">188</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">188</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">188</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">188</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">188</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">188</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">191</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">191</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">191</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">191</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">191</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">191</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">191</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">191</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 173
+    </span>[
+        (<span class="number">3</span>, <span class="number">197</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">197</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">197</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">197</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">197</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">197</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">197</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">197</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">231</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">231</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">231</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">231</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">231</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">231</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">231</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">231</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 174
+    </span>[
+        (<span class="number">2</span>, <span class="number">239</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">239</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">239</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">239</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">9</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">9</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">142</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">142</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">144</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">144</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">145</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">145</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">148</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">148</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">159</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">159</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 175
+    </span>[
+        (<span class="number">3</span>, <span class="number">239</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">239</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">239</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">239</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">239</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">239</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">239</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">239</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">9</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">9</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">9</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">9</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">142</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">142</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">142</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">142</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 176
+    </span>[
+        (<span class="number">3</span>, <span class="number">9</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">9</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">9</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">9</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">9</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">9</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">9</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">9</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">142</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">142</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">142</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">142</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">142</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">142</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">142</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">142</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 177
+    </span>[
+        (<span class="number">2</span>, <span class="number">144</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">144</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">144</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">144</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">145</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">145</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">145</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">145</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">148</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">148</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">148</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">148</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">159</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">159</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">159</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">159</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 178
+    </span>[
+        (<span class="number">3</span>, <span class="number">144</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">144</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">144</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">144</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">144</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">144</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">144</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">144</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">145</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">145</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">145</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">145</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">145</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">145</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">145</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">145</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 179
+    </span>[
+        (<span class="number">3</span>, <span class="number">148</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">148</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">148</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">148</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">148</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">148</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">148</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">148</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">159</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">159</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">159</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">159</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">159</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">159</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">159</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">159</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 180
+    </span>[
+        (<span class="number">0</span>, <span class="number">171</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">206</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">215</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">225</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">236</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">237</span>, <span class="number">0x02</span>),
+        (<span class="number">188</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">189</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">193</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">196</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">200</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">203</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">209</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">216</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">224</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">238</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 181
+    </span>[
+        (<span class="number">1</span>, <span class="number">171</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">171</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">206</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">206</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">215</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">215</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">225</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">225</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">236</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">236</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">237</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">237</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">199</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">207</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">234</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">235</span>, <span class="number">0x02</span>),
+    ],
+    <span class="comment">// 182
+    </span>[
+        (<span class="number">2</span>, <span class="number">171</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">171</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">171</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">171</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">206</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">206</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">206</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">206</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">215</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">215</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">215</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">215</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">225</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">225</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">225</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">225</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 183
+    </span>[
+        (<span class="number">3</span>, <span class="number">171</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">171</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">171</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">171</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">171</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">171</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">171</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">171</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">206</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">206</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">206</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">206</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">206</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">206</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">206</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">206</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 184
+    </span>[
+        (<span class="number">3</span>, <span class="number">215</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">215</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">215</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">215</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">215</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">215</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">215</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">215</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">225</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">225</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">225</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">225</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">225</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">225</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">225</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">225</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 185
+    </span>[
+        (<span class="number">2</span>, <span class="number">236</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">236</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">236</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">236</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">237</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">237</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">237</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">237</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">199</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">199</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">207</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">207</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">234</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">234</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">235</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">235</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 186
+    </span>[
+        (<span class="number">3</span>, <span class="number">236</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">236</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">236</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">236</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">236</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">236</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">236</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">236</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">237</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">237</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">237</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">237</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">237</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">237</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">237</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">237</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 187
+    </span>[
+        (<span class="number">2</span>, <span class="number">199</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">199</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">199</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">199</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">207</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">207</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">207</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">207</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">234</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">234</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">234</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">234</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">235</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">235</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">235</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">235</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 188
+    </span>[
+        (<span class="number">3</span>, <span class="number">199</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">199</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">199</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">199</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">199</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">199</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">199</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">199</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">207</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">207</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">207</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">207</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">207</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">207</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">207</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">207</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 189
+    </span>[
+        (<span class="number">3</span>, <span class="number">234</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">234</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">234</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">234</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">234</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">234</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">234</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">234</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">235</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">235</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">235</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">235</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">235</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">235</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">235</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">235</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 190
+    </span>[
+        (<span class="number">194</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">195</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">197</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">198</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">201</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">202</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">204</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">205</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">210</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">213</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">217</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">220</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">225</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">231</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">239</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">246</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 191
+    </span>[
+        (<span class="number">0</span>, <span class="number">192</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">193</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">200</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">201</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">202</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">205</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">210</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">213</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">218</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">219</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">238</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">240</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">242</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">243</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">255</span>, <span class="number">0x02</span>),
+        (<span class="number">206</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 192
+    </span>[
+        (<span class="number">1</span>, <span class="number">192</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">192</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">193</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">193</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">200</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">200</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">201</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">201</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">202</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">202</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">205</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">205</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">210</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">210</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">213</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">213</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 193
+    </span>[
+        (<span class="number">2</span>, <span class="number">192</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">192</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">192</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">192</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">193</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">193</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">193</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">193</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">200</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">200</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">200</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">200</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">201</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">201</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">201</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">201</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 194
+    </span>[
+        (<span class="number">3</span>, <span class="number">192</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">192</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">192</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">192</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">192</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">192</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">192</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">192</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">193</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">193</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">193</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">193</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">193</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">193</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">193</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">193</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 195
+    </span>[
+        (<span class="number">3</span>, <span class="number">200</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">200</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">200</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">200</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">200</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">200</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">200</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">200</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">201</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">201</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">201</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">201</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">201</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">201</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">201</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">201</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 196
+    </span>[
+        (<span class="number">2</span>, <span class="number">202</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">202</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">202</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">202</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">205</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">205</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">205</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">205</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">210</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">210</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">210</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">210</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">213</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">213</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">213</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">213</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 197
+    </span>[
+        (<span class="number">3</span>, <span class="number">202</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">202</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">202</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">202</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">202</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">202</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">202</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">202</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">205</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">205</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">205</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">205</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">205</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">205</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">205</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">205</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 198
+    </span>[
+        (<span class="number">3</span>, <span class="number">210</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">210</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">210</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">210</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">210</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">210</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">210</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">210</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">213</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">213</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">213</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">213</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">213</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">213</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">213</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">213</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 199
+    </span>[
+        (<span class="number">1</span>, <span class="number">218</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">218</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">219</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">219</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">238</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">238</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">240</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">240</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">242</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">242</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">243</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">243</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">255</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">255</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">203</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">204</span>, <span class="number">0x02</span>),
+    ],
+    <span class="comment">// 200
+    </span>[
+        (<span class="number">2</span>, <span class="number">218</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">218</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">218</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">218</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">219</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">219</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">219</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">219</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">238</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">238</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">238</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">238</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">240</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">240</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">240</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">240</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 201
+    </span>[
+        (<span class="number">3</span>, <span class="number">218</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">218</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">218</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">218</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">218</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">218</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">218</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">218</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">219</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">219</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">219</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">219</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">219</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">219</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">219</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">219</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 202
+    </span>[
+        (<span class="number">3</span>, <span class="number">238</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">238</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">238</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">238</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">238</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">238</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">238</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">238</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">240</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">240</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">240</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">240</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">240</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">240</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">240</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">240</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 203
+    </span>[
+        (<span class="number">2</span>, <span class="number">242</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">242</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">242</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">242</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">243</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">243</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">243</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">243</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">255</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">255</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">255</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">255</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">203</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">203</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">204</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">204</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 204
+    </span>[
+        (<span class="number">3</span>, <span class="number">242</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">242</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">242</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">242</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">242</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">242</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">242</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">242</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">243</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">243</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">243</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">243</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">243</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">243</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">243</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">243</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 205
+    </span>[
+        (<span class="number">3</span>, <span class="number">255</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">255</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">255</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">255</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">255</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">255</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">255</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">255</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">203</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">203</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">203</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">203</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">204</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">204</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">204</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">204</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 206
+    </span>[
+        (<span class="number">3</span>, <span class="number">203</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">203</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">203</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">203</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">203</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">203</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">203</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">203</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">204</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">204</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">204</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">204</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">204</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">204</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">204</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">204</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 207
+    </span>[
+        (<span class="number">211</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">212</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">214</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">215</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">218</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">219</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">221</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">222</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">226</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">228</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">232</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">235</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">240</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">243</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">247</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">250</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 208
+    </span>[
+        (<span class="number">0</span>, <span class="number">211</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">212</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">214</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">221</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">222</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">223</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">241</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">244</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">245</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">246</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">247</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">248</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">250</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">251</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">252</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">253</span>, <span class="number">0x02</span>),
+    ],
+    <span class="comment">// 209
+    </span>[
+        (<span class="number">1</span>, <span class="number">211</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">211</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">212</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">212</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">214</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">214</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">221</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">221</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">222</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">222</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">223</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">223</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">241</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">241</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">244</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">244</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 210
+    </span>[
+        (<span class="number">2</span>, <span class="number">211</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">211</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">211</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">211</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">212</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">212</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">212</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">212</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">214</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">214</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">214</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">214</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">221</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">221</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">221</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">221</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 211
+    </span>[
+        (<span class="number">3</span>, <span class="number">211</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">211</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">211</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">211</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">211</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">211</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">211</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">211</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">212</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">212</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">212</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">212</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">212</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">212</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">212</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">212</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 212
+    </span>[
+        (<span class="number">3</span>, <span class="number">214</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">214</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">214</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">214</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">214</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">214</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">214</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">214</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">221</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">221</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">221</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">221</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">221</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">221</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">221</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">221</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 213
+    </span>[
+        (<span class="number">2</span>, <span class="number">222</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">222</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">222</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">222</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">223</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">223</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">223</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">223</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">241</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">241</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">241</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">241</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">244</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">244</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">244</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">244</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 214
+    </span>[
+        (<span class="number">3</span>, <span class="number">222</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">222</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">222</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">222</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">222</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">222</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">222</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">222</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">223</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">223</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">223</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">223</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">223</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">223</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">223</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">223</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 215
+    </span>[
+        (<span class="number">3</span>, <span class="number">241</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">241</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">241</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">241</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">241</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">241</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">241</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">241</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">244</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">244</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">244</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">244</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">244</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">244</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">244</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">244</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 216
+    </span>[
+        (<span class="number">1</span>, <span class="number">245</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">245</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">246</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">246</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">247</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">247</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">248</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">248</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">250</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">250</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">251</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">251</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">252</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">252</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">253</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">253</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 217
+    </span>[
+        (<span class="number">2</span>, <span class="number">245</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">245</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">245</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">245</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">246</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">246</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">246</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">246</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">247</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">247</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">247</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">247</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">248</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">248</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">248</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">248</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 218
+    </span>[
+        (<span class="number">3</span>, <span class="number">245</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">245</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">245</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">245</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">245</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">245</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">245</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">245</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">246</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">246</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">246</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">246</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">246</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">246</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">246</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">246</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 219
+    </span>[
+        (<span class="number">3</span>, <span class="number">247</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">247</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">247</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">247</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">247</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">247</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">247</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">247</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">248</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">248</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">248</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">248</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">248</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">248</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">248</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">248</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 220
+    </span>[
+        (<span class="number">2</span>, <span class="number">250</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">250</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">250</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">250</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">251</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">251</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">251</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">251</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">252</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">252</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">252</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">252</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">253</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">253</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">253</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">253</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 221
+    </span>[
+        (<span class="number">3</span>, <span class="number">250</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">250</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">250</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">250</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">250</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">250</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">250</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">250</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">251</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">251</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">251</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">251</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">251</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">251</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">251</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">251</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 222
+    </span>[
+        (<span class="number">3</span>, <span class="number">252</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">252</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">252</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">252</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">252</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">252</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">252</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">252</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">253</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">253</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">253</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">253</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">253</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">253</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">253</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">253</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 223
+    </span>[
+        (<span class="number">0</span>, <span class="number">254</span>, <span class="number">0x02</span>),
+        (<span class="number">227</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">229</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">230</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">233</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">234</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">236</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">237</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">241</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">242</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">244</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">245</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">248</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">249</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">251</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">252</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 224
+    </span>[
+        (<span class="number">1</span>, <span class="number">254</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">254</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">2</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">3</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">4</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">5</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">6</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">7</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">8</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">11</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">12</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">14</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">15</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">16</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">17</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">18</span>, <span class="number">0x02</span>),
+    ],
+    <span class="comment">// 225
+    </span>[
+        (<span class="number">2</span>, <span class="number">254</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">254</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">254</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">254</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">2</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">2</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">3</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">3</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">4</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">4</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">5</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">5</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">6</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">6</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">7</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">7</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 226
+    </span>[
+        (<span class="number">3</span>, <span class="number">254</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">254</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">254</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">254</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">254</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">254</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">254</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">254</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">2</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">2</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">2</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">2</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">3</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">3</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">3</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">3</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 227
+    </span>[
+        (<span class="number">3</span>, <span class="number">2</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">2</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">2</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">2</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">2</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">2</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">2</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">2</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">3</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">3</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">3</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">3</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">3</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">3</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">3</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">3</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 228
+    </span>[
+        (<span class="number">2</span>, <span class="number">4</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">4</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">4</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">4</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">5</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">5</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">5</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">5</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">6</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">6</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">6</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">6</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">7</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">7</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">7</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">7</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 229
+    </span>[
+        (<span class="number">3</span>, <span class="number">4</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">4</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">4</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">4</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">4</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">4</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">4</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">4</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">5</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">5</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">5</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">5</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">5</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">5</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">5</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">5</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 230
+    </span>[
+        (<span class="number">3</span>, <span class="number">6</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">6</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">6</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">6</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">6</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">6</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">6</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">6</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">7</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">7</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">7</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">7</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">7</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">7</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">7</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">7</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 231
+    </span>[
+        (<span class="number">1</span>, <span class="number">8</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">8</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">11</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">11</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">12</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">12</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">14</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">14</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">15</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">15</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">16</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">16</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">17</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">17</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">18</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">18</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 232
+    </span>[
+        (<span class="number">2</span>, <span class="number">8</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">8</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">8</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">8</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">11</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">11</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">11</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">11</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">12</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">12</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">12</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">12</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">14</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">14</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">14</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">14</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 233
+    </span>[
+        (<span class="number">3</span>, <span class="number">8</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">8</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">8</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">8</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">8</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">8</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">8</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">8</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">11</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">11</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">11</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">11</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">11</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">11</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">11</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">11</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 234
+    </span>[
+        (<span class="number">3</span>, <span class="number">12</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">12</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">12</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">12</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">12</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">12</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">12</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">12</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">14</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">14</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">14</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">14</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">14</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">14</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">14</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">14</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 235
+    </span>[
+        (<span class="number">2</span>, <span class="number">15</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">15</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">15</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">15</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">16</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">16</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">16</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">16</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">17</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">17</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">17</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">17</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">18</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">18</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">18</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">18</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 236
+    </span>[
+        (<span class="number">3</span>, <span class="number">15</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">15</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">15</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">15</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">15</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">15</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">15</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">15</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">16</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">16</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">16</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">16</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">16</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">16</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">16</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">16</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 237
+    </span>[
+        (<span class="number">3</span>, <span class="number">17</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">17</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">17</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">17</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">17</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">17</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">17</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">17</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">18</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">18</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">18</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">18</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">18</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">18</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">18</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">18</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 238
+    </span>[
+        (<span class="number">0</span>, <span class="number">19</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">20</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">21</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">23</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">24</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">25</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">26</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">27</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">28</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">29</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">30</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">31</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">127</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">220</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">249</span>, <span class="number">0x02</span>),
+        (<span class="number">253</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 239
+    </span>[
+        (<span class="number">1</span>, <span class="number">19</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">19</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">20</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">20</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">21</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">21</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">23</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">23</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">24</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">24</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">25</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">25</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">26</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">26</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">27</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">27</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 240
+    </span>[
+        (<span class="number">2</span>, <span class="number">19</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">19</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">19</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">19</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">20</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">20</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">20</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">20</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">21</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">21</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">21</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">21</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">23</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">23</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">23</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">23</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 241
+    </span>[
+        (<span class="number">3</span>, <span class="number">19</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">19</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">19</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">19</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">19</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">19</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">19</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">19</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">20</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">20</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">20</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">20</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">20</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">20</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">20</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">20</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 242
+    </span>[
+        (<span class="number">3</span>, <span class="number">21</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">21</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">21</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">21</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">21</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">21</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">21</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">21</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">23</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">23</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">23</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">23</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">23</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">23</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">23</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">23</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 243
+    </span>[
+        (<span class="number">2</span>, <span class="number">24</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">24</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">24</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">24</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">25</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">25</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">25</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">25</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">26</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">26</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">26</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">26</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">27</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">27</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">27</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">27</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 244
+    </span>[
+        (<span class="number">3</span>, <span class="number">24</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">24</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">24</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">24</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">24</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">24</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">24</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">24</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">25</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">25</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">25</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">25</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">25</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">25</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">25</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">25</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 245
+    </span>[
+        (<span class="number">3</span>, <span class="number">26</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">26</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">26</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">26</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">26</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">26</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">26</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">26</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">27</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">27</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">27</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">27</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">27</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">27</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">27</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">27</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 246
+    </span>[
+        (<span class="number">1</span>, <span class="number">28</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">28</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">29</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">29</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">30</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">30</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">31</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">31</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">127</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">127</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">220</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">220</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">249</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">249</span>, <span class="number">0x03</span>),
+        (<span class="number">254</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+        (<span class="number">255</span>, <span class="number">0</span>, <span class="number">0x00</span>),
+    ],
+    <span class="comment">// 247
+    </span>[
+        (<span class="number">2</span>, <span class="number">28</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">28</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">28</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">28</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">29</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">29</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">29</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">29</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">30</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">30</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">30</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">30</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">31</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">31</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">31</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">31</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 248
+    </span>[
+        (<span class="number">3</span>, <span class="number">28</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">28</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">28</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">28</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">28</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">28</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">28</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">28</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">29</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">29</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">29</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">29</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">29</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">29</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">29</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">29</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 249
+    </span>[
+        (<span class="number">3</span>, <span class="number">30</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">30</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">30</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">30</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">30</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">30</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">30</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">30</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">31</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">31</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">31</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">31</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">31</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">31</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">31</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">31</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 250
+    </span>[
+        (<span class="number">2</span>, <span class="number">127</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">127</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">127</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">127</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">220</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">220</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">220</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">220</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">249</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">249</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">249</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">249</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">10</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">13</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">22</span>, <span class="number">0x02</span>),
+        (<span class="number">0</span>, <span class="number">0</span>, <span class="number">0x04</span>),
+    ],
+    <span class="comment">// 251
+    </span>[
+        (<span class="number">3</span>, <span class="number">127</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">127</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">127</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">127</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">127</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">127</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">127</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">127</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">220</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">220</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">220</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">220</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">220</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">220</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">220</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">220</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 252
+    </span>[
+        (<span class="number">3</span>, <span class="number">249</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">249</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">249</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">249</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">249</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">249</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">249</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">249</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">10</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">10</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">13</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">13</span>, <span class="number">0x03</span>),
+        (<span class="number">1</span>, <span class="number">22</span>, <span class="number">0x02</span>),
+        (<span class="number">22</span>, <span class="number">22</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">0</span>, <span class="number">0x04</span>),
+        (<span class="number">0</span>, <span class="number">0</span>, <span class="number">0x05</span>),
+    ],
+    <span class="comment">// 253
+    </span>[
+        (<span class="number">2</span>, <span class="number">10</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">10</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">10</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">10</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">13</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">13</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">13</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">13</span>, <span class="number">0x03</span>),
+        (<span class="number">2</span>, <span class="number">22</span>, <span class="number">0x02</span>),
+        (<span class="number">9</span>, <span class="number">22</span>, <span class="number">0x02</span>),
+        (<span class="number">23</span>, <span class="number">22</span>, <span class="number">0x02</span>),
+        (<span class="number">40</span>, <span class="number">22</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">0</span>, <span class="number">0x04</span>),
+        (<span class="number">0</span>, <span class="number">0</span>, <span class="number">0x04</span>),
+        (<span class="number">0</span>, <span class="number">0</span>, <span class="number">0x04</span>),
+        (<span class="number">0</span>, <span class="number">0</span>, <span class="number">0x05</span>),
+    ],
+    <span class="comment">// 254
+    </span>[
+        (<span class="number">3</span>, <span class="number">10</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">10</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">10</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">10</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">10</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">10</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">10</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">10</span>, <span class="number">0x03</span>),
+        (<span class="number">3</span>, <span class="number">13</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">13</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">13</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">13</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">13</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">13</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">13</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">13</span>, <span class="number">0x03</span>),
+    ],
+    <span class="comment">// 255
+    </span>[
+        (<span class="number">3</span>, <span class="number">22</span>, <span class="number">0x02</span>),
+        (<span class="number">6</span>, <span class="number">22</span>, <span class="number">0x02</span>),
+        (<span class="number">10</span>, <span class="number">22</span>, <span class="number">0x02</span>),
+        (<span class="number">15</span>, <span class="number">22</span>, <span class="number">0x02</span>),
+        (<span class="number">24</span>, <span class="number">22</span>, <span class="number">0x02</span>),
+        (<span class="number">31</span>, <span class="number">22</span>, <span class="number">0x02</span>),
+        (<span class="number">41</span>, <span class="number">22</span>, <span class="number">0x02</span>),
+        (<span class="number">56</span>, <span class="number">22</span>, <span class="number">0x03</span>),
+        (<span class="number">0</span>, <span class="number">0</span>, <span class="number">0x04</span>),
+        (<span class="number">0</span>, <span class="number">0</span>, <span class="number">0x04</span>),
+        (<span class="number">0</span>, <span class="number">0</span>, <span class="number">0x04</span>),
+        (<span class="number">0</span>, <span class="number">0</span>, <span class="number">0x04</span>),
+        (<span class="number">0</span>, <span class="number">0</span>, <span class="number">0x04</span>),
+        (<span class="number">0</span>, <span class="number">0</span>, <span class="number">0x04</span>),
+        (<span class="number">0</span>, <span class="number">0</span>, <span class="number">0x04</span>),
+        (<span class="number">0</span>, <span class="number">0</span>, <span class="number">0x05</span>),
+    ],
+];
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/h3/qpack/mod.rs.html b/src/quiche/h3/qpack/mod.rs.html
new file mode 100644
index 0000000..837a693
--- /dev/null
+++ b/src/quiche/h3/qpack/mod.rs.html
@@ -0,0 +1,407 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/h3/qpack/mod.rs`."><title>mod.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../../src-files.js"></script><script defer src="../../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="doccomment">//! HTTP/3 header compression (QPACK).
+
+</span><span class="kw">const </span>INDEXED: u8 = <span class="number">0b1000_0000</span>;
+<span class="kw">const </span>INDEXED_WITH_POST_BASE: u8 = <span class="number">0b0001_0000</span>;
+<span class="kw">const </span>LITERAL: u8 = <span class="number">0b0010_0000</span>;
+<span class="kw">const </span>LITERAL_WITH_NAME_REF: u8 = <span class="number">0b0100_0000</span>;
+
+<span class="doccomment">/// A specialized [`Result`] type for quiche QPACK operations.
+///
+/// This type is used throughout quiche's QPACK public API for any operation
+/// that can produce an error.
+///
+/// [`Result`]: https://doc.rust-lang.org/std/result/enum.Result.html
+</span><span class="kw">pub type </span><span class="prelude-ty">Result</span>&lt;T&gt; = std::result::Result&lt;T, Error&gt;;
+
+<span class="doccomment">/// A QPACK error.
+</span><span class="attr">#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+</span><span class="kw">pub enum </span>Error {
+    <span class="doccomment">/// The provided buffer is too short.
+    </span>BufferTooShort,
+
+    <span class="doccomment">/// The provided string would be larger after huffman encoding.
+    </span>InflatedHuffmanEncoding,
+
+    <span class="doccomment">/// The QPACK header block's huffman encoding is invalid.
+    </span>InvalidHuffmanEncoding,
+
+    <span class="doccomment">/// The QPACK static table index provided doesn't exist.
+    </span>InvalidStaticTableIndex,
+
+    <span class="doccomment">/// The decoded QPACK header name or value is not valid.
+    </span>InvalidHeaderValue,
+
+    <span class="doccomment">/// The decoded header list exceeded the size limit.
+    </span>HeaderListTooLarge,
+}
+
+<span class="kw">impl </span>std::fmt::Display <span class="kw">for </span>Error {
+    <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+        <span class="macro">write!</span>(f, <span class="string">"{self:?}"</span>)
+    }
+}
+
+<span class="kw">impl </span>std::error::Error <span class="kw">for </span>Error {
+    <span class="kw">fn </span>source(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>(<span class="kw">dyn </span>std::error::Error + <span class="lifetime">'static</span>)&gt; {
+        <span class="prelude-val">None
+    </span>}
+}
+
+<span class="kw">impl </span>std::convert::From&lt;octets::BufferTooShortError&gt; <span class="kw">for </span>Error {
+    <span class="kw">fn </span>from(_err: octets::BufferTooShortError) -&gt; <span class="self">Self </span>{
+        Error::BufferTooShort
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use crate</span>::<span class="kw-2">*</span>;
+
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>encode_decode() {
+        <span class="kw">let </span><span class="kw-2">mut </span>encoded = [<span class="number">0u8</span>; <span class="number">240</span>];
+
+        <span class="kw">let </span>headers = <span class="macro">vec!</span>[
+            h3::Header::new(<span class="string">b":path"</span>, <span class="string">b"/rsrc.php/v3/yn/r/rIPZ9Qkrdd9.png"</span>),
+            h3::Header::new(<span class="string">b"accept-encoding"</span>, <span class="string">b"gzip, deflate, br"</span>),
+            h3::Header::new(<span class="string">b"accept-language"</span>, <span class="string">b"en-US,en;q=0.9"</span>),
+            h3::Header::new(<span class="string">b"user-agent"</span>, <span class="string">b"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36"</span>),
+            h3::Header::new(<span class="string">b"accept"</span>, <span class="string">b"image/webp,image/apng,image/*,*/*;q=0.8"</span>),
+            h3::Header::new(<span class="string">b"referer"</span>, <span class="string">b"https://static.xx.fbcdn.net/rsrc.php/v3/yT/l/0,cross/dzXGESIlGQQ.css"</span>),
+            h3::Header::new(<span class="string">b":authority"</span>, <span class="string">b"static.xx.fbcdn.net"</span>),
+            h3::Header::new(<span class="string">b":scheme"</span>, <span class="string">b"https"</span>),
+            h3::Header::new(<span class="string">b":method"</span>, <span class="string">b"GET"</span>),
+        ];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>enc = Encoder::new();
+        <span class="macro">assert_eq!</span>(enc.encode(<span class="kw-2">&amp;</span>headers, <span class="kw-2">&amp;mut </span>encoded), <span class="prelude-val">Ok</span>(<span class="number">240</span>));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>dec = Decoder::new();
+        <span class="macro">assert_eq!</span>(dec.decode(<span class="kw-2">&amp;</span>encoded, u64::MAX), <span class="prelude-val">Ok</span>(headers));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>lower_case() {
+        <span class="kw">let </span><span class="kw-2">mut </span>encoded = [<span class="number">0u8</span>; <span class="number">35</span>];
+
+        <span class="kw">let </span>headers_expected = <span class="macro">vec!</span>[
+            <span class="kw">crate</span>::h3::Header::new(<span class="string">b":status"</span>, <span class="string">b"200"</span>),
+            <span class="kw">crate</span>::h3::Header::new(<span class="string">b":path"</span>, <span class="string">b"/HeLlO"</span>),
+            <span class="kw">crate</span>::h3::Header::new(<span class="string">b"woot"</span>, <span class="string">b"woot"</span>),
+            <span class="kw">crate</span>::h3::Header::new(<span class="string">b"hello"</span>, <span class="string">b"WorlD"</span>),
+            <span class="kw">crate</span>::h3::Header::new(<span class="string">b"foo"</span>, <span class="string">b"BaR"</span>),
+        ];
+
+        <span class="comment">// Header.
+        </span><span class="kw">let </span>headers_in = <span class="macro">vec!</span>[
+            <span class="kw">crate</span>::h3::Header::new(<span class="string">b":StAtUs"</span>, <span class="string">b"200"</span>),
+            <span class="kw">crate</span>::h3::Header::new(<span class="string">b":PaTh"</span>, <span class="string">b"/HeLlO"</span>),
+            <span class="kw">crate</span>::h3::Header::new(<span class="string">b"WooT"</span>, <span class="string">b"woot"</span>),
+            <span class="kw">crate</span>::h3::Header::new(<span class="string">b"hello"</span>, <span class="string">b"WorlD"</span>),
+            <span class="kw">crate</span>::h3::Header::new(<span class="string">b"fOo"</span>, <span class="string">b"BaR"</span>),
+        ];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>enc = Encoder::new();
+        <span class="macro">assert_eq!</span>(enc.encode(<span class="kw-2">&amp;</span>headers_in, <span class="kw-2">&amp;mut </span>encoded), <span class="prelude-val">Ok</span>(<span class="number">35</span>));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>dec = Decoder::new();
+        <span class="kw">let </span>headers_out = dec.decode(<span class="kw-2">&amp;</span>encoded, u64::MAX).unwrap();
+
+        <span class="macro">assert_eq!</span>(headers_expected, headers_out);
+
+        <span class="comment">// HeaderRef.
+        </span><span class="kw">let </span>headers_in = <span class="macro">vec!</span>[
+            <span class="kw">crate</span>::h3::HeaderRef::new(<span class="string">b":StAtUs"</span>, <span class="string">b"200"</span>),
+            <span class="kw">crate</span>::h3::HeaderRef::new(<span class="string">b":PaTh"</span>, <span class="string">b"/HeLlO"</span>),
+            <span class="kw">crate</span>::h3::HeaderRef::new(<span class="string">b"WooT"</span>, <span class="string">b"woot"</span>),
+            <span class="kw">crate</span>::h3::HeaderRef::new(<span class="string">b"hello"</span>, <span class="string">b"WorlD"</span>),
+            <span class="kw">crate</span>::h3::HeaderRef::new(<span class="string">b"fOo"</span>, <span class="string">b"BaR"</span>),
+        ];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>enc = Encoder::new();
+        <span class="macro">assert_eq!</span>(enc.encode(<span class="kw-2">&amp;</span>headers_in, <span class="kw-2">&amp;mut </span>encoded), <span class="prelude-val">Ok</span>(<span class="number">35</span>));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>dec = Decoder::new();
+        <span class="kw">let </span>headers_out = dec.decode(<span class="kw-2">&amp;</span>encoded, u64::MAX).unwrap();
+
+        <span class="macro">assert_eq!</span>(headers_expected, headers_out);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>lower_ascii_range() {
+        <span class="kw">let </span><span class="kw-2">mut </span>encoded = [<span class="number">0u8</span>; <span class="number">50</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>enc = Encoder::new();
+
+        <span class="comment">// Indexed name with literal value
+        </span><span class="kw">let </span>headers1 = <span class="macro">vec!</span>[<span class="kw">crate</span>::h3::Header::new(<span class="string">b"location"</span>, <span class="string">b"															"</span>)];
+        <span class="macro">assert_eq!</span>(enc.encode(<span class="kw-2">&amp;</span>headers1, <span class="kw-2">&amp;mut </span>encoded), <span class="prelude-val">Ok</span>(<span class="number">19</span>));
+
+        <span class="comment">// Literal name and value
+        </span><span class="kw">let </span>headers2 = <span class="macro">vec!</span>[<span class="kw">crate</span>::h3::Header::new(<span class="string">b"a"</span>, <span class="string">b""</span>)];
+        <span class="macro">assert_eq!</span>(enc.encode(<span class="kw-2">&amp;</span>headers2, <span class="kw-2">&amp;mut </span>encoded), <span class="prelude-val">Ok</span>(<span class="number">20</span>));
+
+        <span class="kw">let </span>headers3 = <span class="macro">vec!</span>[<span class="kw">crate</span>::h3::Header::new(<span class="string">b"															"</span>, <span class="string">b"hello"</span>)];
+        <span class="macro">assert_eq!</span>(enc.encode(<span class="kw-2">&amp;</span>headers3, <span class="kw-2">&amp;mut </span>encoded), <span class="prelude-val">Ok</span>(<span class="number">24</span>));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>extended_ascii_range() {
+        <span class="kw">let </span><span class="kw-2">mut </span>encoded = [<span class="number">0u8</span>; <span class="number">50</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>enc = Encoder::new();
+
+        <span class="kw">let </span>name = <span class="string">b"location"</span>;
+        <span class="kw">let </span>value = <span class="string">"£££££££££££££££"</span>;
+
+        <span class="comment">// Indexed name with literal value
+        </span><span class="kw">let </span>headers1 = <span class="macro">vec!</span>[<span class="kw">crate</span>::h3::Header::new(name, value.as_bytes())];
+        <span class="macro">assert_eq!</span>(enc.encode(<span class="kw-2">&amp;</span>headers1, <span class="kw-2">&amp;mut </span>encoded), <span class="prelude-val">Ok</span>(<span class="number">34</span>));
+
+        <span class="comment">// Literal name and value
+        </span><span class="kw">let </span>value = <span class="string">"ððððððððððððððð"</span>;
+        <span class="kw">let </span>headers2 = <span class="macro">vec!</span>[<span class="kw">crate</span>::h3::Header::new(<span class="string">b"a"</span>, value.as_bytes())];
+        <span class="macro">assert_eq!</span>(enc.encode(<span class="kw-2">&amp;</span>headers2, <span class="kw-2">&amp;mut </span>encoded), <span class="prelude-val">Ok</span>(<span class="number">35</span>));
+
+        <span class="kw">let </span>headers3 = <span class="macro">vec!</span>[<span class="kw">crate</span>::h3::Header::new(value.as_bytes(), <span class="string">b"hello"</span>)];
+        <span class="macro">assert_eq!</span>(enc.encode(<span class="kw-2">&amp;</span>headers3, <span class="kw-2">&amp;mut </span>encoded), <span class="prelude-val">Ok</span>(<span class="number">39</span>));
+    }
+}
+
+<span class="kw">pub use </span>decoder::Decoder;
+<span class="kw">pub use </span>encoder::Encoder;
+
+<span class="kw">mod </span>decoder;
+<span class="kw">mod </span>encoder;
+<span class="kw">mod </span>huffman;
+<span class="kw">mod </span>static_table;
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/h3/qpack/static_table.rs.html b/src/quiche/h3/qpack/static_table.rs.html
new file mode 100644
index 0000000..5ecbb01
--- /dev/null
+++ b/src/quiche/h3/qpack/static_table.rs.html
@@ -0,0 +1,647 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/h3/qpack/static_table.rs`."><title>static_table.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../../src-files.js"></script><script defer src="../../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2020, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="doccomment">/// This table maps the statically encoded QPACK entries to their
+/// index. The mapping is from name length to a list of names of this
+/// length, with the list of possible values for that name and the proper
+/// encoding for this name: value pair.
+</span><span class="kw">type </span>HeaderName = <span class="kw-2">&amp;</span><span class="lifetime">'static </span>[u8];
+<span class="kw">type </span>HeaderValue = <span class="kw-2">&amp;</span><span class="lifetime">'static </span>[u8];
+<span class="kw">type </span>HeaderValueEncPairs = <span class="kw-2">&amp;</span><span class="lifetime">'static </span>[(HeaderValue, u64)];
+<span class="kw">pub const </span>STATIC_ENCODE_TABLE: <span class="kw-2">&amp;</span>[<span class="kw-2">&amp;</span>[(HeaderName, HeaderValueEncPairs)]] = <span class="kw-2">&amp;</span>[
+    <span class="comment">// Headers of len 0
+    </span><span class="kw-2">&amp;</span>[],
+    <span class="comment">// Headers of len 1
+    </span><span class="kw-2">&amp;</span>[],
+    <span class="comment">// Headers of len 2
+    </span><span class="kw-2">&amp;</span>[],
+    <span class="comment">// Headers of len 3
+    </span><span class="kw-2">&amp;</span>[(<span class="string">b"age"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"0"</span>, <span class="number">2</span>)])],
+    <span class="comment">// Headers of len 4
+    </span><span class="kw-2">&amp;</span>[
+        (<span class="string">b"etag"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">7</span>)]),
+        (<span class="string">b"date"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">6</span>)]),
+        (<span class="string">b"link"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">11</span>)]),
+        (<span class="string">b"vary"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"accept-encoding"</span>, <span class="number">59</span>), (<span class="string">b"origin"</span>, <span class="number">60</span>)]),
+    ],
+    <span class="comment">// Headers of len 5
+    </span><span class="kw-2">&amp;</span>[(<span class="string">b"range"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"bytes=0-"</span>, <span class="number">55</span>)]), (<span class="string">b":path"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"/"</span>, <span class="number">1</span>)])],
+    <span class="comment">// Headers of len 6
+    </span><span class="kw-2">&amp;</span>[
+        (<span class="string">b"cookie"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">5</span>)]),
+        (<span class="string">b"origin"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">90</span>)]),
+        (<span class="string">b"server"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">92</span>)]),
+        (<span class="string">b"accept"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"*/*"</span>, <span class="number">29</span>), (<span class="string">b"application/dns-message"</span>, <span class="number">30</span>)]),
+    ],
+    <span class="comment">// Headers of len 7
+    </span><span class="kw-2">&amp;</span>[
+        (<span class="string">b"purpose"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"prefetch"</span>, <span class="number">91</span>)]),
+        (<span class="string">b"referer"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">13</span>)]),
+        (<span class="string">b"alt-svc"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"clear"</span>, <span class="number">83</span>)]),
+        (<span class="string">b":status"</span>, <span class="kw-2">&amp;</span>[
+            (<span class="string">b"103"</span>, <span class="number">24</span>),
+            (<span class="string">b"200"</span>, <span class="number">25</span>),
+            (<span class="string">b"304"</span>, <span class="number">26</span>),
+            (<span class="string">b"404"</span>, <span class="number">27</span>),
+            (<span class="string">b"503"</span>, <span class="number">28</span>),
+            (<span class="string">b"100"</span>, <span class="number">63</span>),
+            (<span class="string">b"204"</span>, <span class="number">64</span>),
+            (<span class="string">b"206"</span>, <span class="number">65</span>),
+            (<span class="string">b"302"</span>, <span class="number">66</span>),
+            (<span class="string">b"400"</span>, <span class="number">67</span>),
+            (<span class="string">b"403"</span>, <span class="number">68</span>),
+            (<span class="string">b"421"</span>, <span class="number">69</span>),
+            (<span class="string">b"425"</span>, <span class="number">70</span>),
+            (<span class="string">b"500"</span>, <span class="number">71</span>),
+        ]),
+        (<span class="string">b":scheme"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"http"</span>, <span class="number">22</span>), (<span class="string">b"https"</span>, <span class="number">23</span>)]),
+        (<span class="string">b":method"</span>, <span class="kw-2">&amp;</span>[
+            (<span class="string">b"CONNECT"</span>, <span class="number">15</span>),
+            (<span class="string">b"DELETE"</span>, <span class="number">16</span>),
+            (<span class="string">b"GET"</span>, <span class="number">17</span>),
+            (<span class="string">b"HEAD"</span>, <span class="number">18</span>),
+            (<span class="string">b"OPTIONS"</span>, <span class="number">19</span>),
+            (<span class="string">b"POST"</span>, <span class="number">20</span>),
+            (<span class="string">b"PUT"</span>, <span class="number">21</span>),
+        ]),
+    ],
+    <span class="comment">// Headers of len 8
+    </span><span class="kw-2">&amp;</span>[(<span class="string">b"location"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">12</span>)]), (<span class="string">b"if-range"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">89</span>)])],
+    <span class="comment">// Headers of len 9
+    </span><span class="kw-2">&amp;</span>[(<span class="string">b"expect-ct"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">87</span>)]), (<span class="string">b"forwarded"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">88</span>)])],
+    <span class="comment">// Headers of len 10
+    </span><span class="kw-2">&amp;</span>[
+        (<span class="string">b"user-agent"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">95</span>)]),
+        (<span class="string">b":authority"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">0</span>)]),
+        (<span class="string">b"set-cookie"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">14</span>)]),
+        (<span class="string">b"early-data"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"1"</span>, <span class="number">86</span>)]),
+    ],
+    <span class="comment">// Headers of len 11
+    </span><span class="kw-2">&amp;</span>[],
+    <span class="comment">// Headers of len 12
+    </span><span class="kw-2">&amp;</span>[(<span class="string">b"content-type"</span>, <span class="kw-2">&amp;</span>[
+        (<span class="string">b"application/dns-message"</span>, <span class="number">44</span>),
+        (<span class="string">b"application/javascript"</span>, <span class="number">45</span>),
+        (<span class="string">b"application/json"</span>, <span class="number">46</span>),
+        (<span class="string">b"application/x-www-form-urlencoded"</span>, <span class="number">47</span>),
+        (<span class="string">b"image/gif"</span>, <span class="number">48</span>),
+        (<span class="string">b"image/jpeg"</span>, <span class="number">49</span>),
+        (<span class="string">b"image/png"</span>, <span class="number">50</span>),
+        (<span class="string">b"text/css"</span>, <span class="number">51</span>),
+        (<span class="string">b"text/html; charset=utf-8"</span>, <span class="number">52</span>),
+        (<span class="string">b"text/plain"</span>, <span class="number">53</span>),
+        (<span class="string">b"text/plain;charset=utf-8"</span>, <span class="number">54</span>),
+    ])],
+    <span class="comment">// Headers of len 13
+    </span><span class="kw-2">&amp;</span>[
+        (<span class="string">b"last-modified"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">10</span>)]),
+        (<span class="string">b"accept-ranges"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"bytes"</span>, <span class="number">32</span>)]),
+        (<span class="string">b"authorization"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">84</span>)]),
+        (<span class="string">b"if-none-match"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">9</span>)]),
+        (<span class="string">b"cache-control"</span>, <span class="kw-2">&amp;</span>[
+            (<span class="string">b"max-age=0"</span>, <span class="number">36</span>),
+            (<span class="string">b"max-age=2592000"</span>, <span class="number">37</span>),
+            (<span class="string">b"max-age=604800"</span>, <span class="number">38</span>),
+            (<span class="string">b"no-cache"</span>, <span class="number">39</span>),
+            (<span class="string">b"no-store"</span>, <span class="number">40</span>),
+            (<span class="string">b"public, max-age=31536000"</span>, <span class="number">41</span>),
+        ]),
+    ],
+    <span class="comment">// Headers of len 14
+    </span><span class="kw-2">&amp;</span>[(<span class="string">b"content-length"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"0"</span>, <span class="number">4</span>)])],
+    <span class="comment">// Headers of len 15
+    </span><span class="kw-2">&amp;</span>[
+        (<span class="string">b"accept-encoding"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"gzip, deflate, br"</span>, <span class="number">31</span>)]),
+        (<span class="string">b"x-forwarded-for"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">96</span>)]),
+        (<span class="string">b"accept-language"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">72</span>)]),
+        (<span class="string">b"x-frame-options"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"deny"</span>, <span class="number">97</span>), (<span class="string">b"sameorigin"</span>, <span class="number">98</span>)]),
+    ],
+    <span class="comment">// Headers of len 16
+    </span><span class="kw-2">&amp;</span>[
+        (<span class="string">b"content-encoding"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"br"</span>, <span class="number">42</span>), (<span class="string">b"gzip"</span>, <span class="number">43</span>)]),
+        (<span class="string">b"x-xss-protection"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"1; mode=block"</span>, <span class="number">62</span>)]),
+    ],
+    <span class="comment">// Headers of len 17
+    </span><span class="kw-2">&amp;</span>[(<span class="string">b"if-modified-since"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">8</span>)])],
+    <span class="comment">// Headers of len 18
+    </span><span class="kw-2">&amp;</span>[],
+    <span class="comment">// Headers of len 19
+    </span><span class="kw-2">&amp;</span>[
+        (<span class="string">b"content-disposition"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b""</span>, <span class="number">3</span>)]),
+        (<span class="string">b"timing-allow-origin"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"*"</span>, <span class="number">93</span>)]),
+    ],
+    <span class="comment">// Headers of len 20
+    </span><span class="kw-2">&amp;</span>[],
+    <span class="comment">// Headers of len 21
+    </span><span class="kw-2">&amp;</span>[],
+    <span class="comment">// Headers of len 22
+    </span><span class="kw-2">&amp;</span>[(<span class="string">b"x-content-type-options"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"nosniff"</span>, <span class="number">61</span>)])],
+    <span class="comment">// Headers of len 23
+    </span><span class="kw-2">&amp;</span>[(<span class="string">b"content-security-policy"</span>, <span class="kw-2">&amp;</span>[(
+        <span class="string">b"script-src 'none'; object-src 'none'; base-uri 'none'"</span>,
+        <span class="number">85</span>,
+    )])],
+    <span class="comment">// Headers of len 24
+    </span><span class="kw-2">&amp;</span>[],
+    <span class="comment">// Headers of len 25
+    </span><span class="kw-2">&amp;</span>[
+        (<span class="string">b"upgrade-insecure-requests"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"1"</span>, <span class="number">94</span>)]),
+        (<span class="string">b"strict-transport-security"</span>, <span class="kw-2">&amp;</span>[
+            (<span class="string">b"max-age=31536000"</span>, <span class="number">56</span>),
+            (<span class="string">b"max-age=31536000; includesubdomains"</span>, <span class="number">57</span>),
+            (<span class="string">b"max-age=31536000; includesubdomains; preload"</span>, <span class="number">58</span>),
+        ]),
+    ],
+    <span class="comment">// Headers of len 26
+    </span><span class="kw-2">&amp;</span>[],
+    <span class="comment">// Headers of len 27
+    </span><span class="kw-2">&amp;</span>[(<span class="string">b"access-control-allow-origin"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"*"</span>, <span class="number">35</span>)])],
+    <span class="comment">// Headers of len 28
+    </span><span class="kw-2">&amp;</span>[
+        (<span class="string">b"access-control-allow-methods"</span>, <span class="kw-2">&amp;</span>[
+            (<span class="string">b"get"</span>, <span class="number">76</span>),
+            (<span class="string">b"get, post, options"</span>, <span class="number">77</span>),
+            (<span class="string">b"options"</span>, <span class="number">78</span>),
+        ]),
+        (<span class="string">b"access-control-allow-headers"</span>, <span class="kw-2">&amp;</span>[
+            (<span class="string">b"cache-control"</span>, <span class="number">33</span>),
+            (<span class="string">b"content-type"</span>, <span class="number">34</span>),
+            (<span class="string">b"*"</span>, <span class="number">75</span>),
+        ]),
+    ],
+    <span class="comment">// Headers of len 29
+    </span><span class="kw-2">&amp;</span>[
+        (<span class="string">b"access-control-expose-headers"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"content-length"</span>, <span class="number">79</span>)]),
+        (<span class="string">b"access-control-request-method"</span>, <span class="kw-2">&amp;</span>[
+            (<span class="string">b"get"</span>, <span class="number">81</span>),
+            (<span class="string">b"post"</span>, <span class="number">82</span>),
+        ]),
+    ],
+    <span class="comment">// Headers of len 30
+    </span><span class="kw-2">&amp;</span>[(<span class="string">b"access-control-request-headers"</span>, <span class="kw-2">&amp;</span>[(<span class="string">b"content-type"</span>, <span class="number">80</span>)])],
+    <span class="comment">// Headers of len 31
+    </span><span class="kw-2">&amp;</span>[],
+    <span class="comment">// Headers of len 32
+    </span><span class="kw-2">&amp;</span>[(<span class="string">b"access-control-allow-credentials"</span>, <span class="kw-2">&amp;</span>[
+        (<span class="string">b"FALSE"</span>, <span class="number">73</span>),
+        (<span class="string">b"TRUE"</span>, <span class="number">74</span>),
+    ])],
+];
+
+<span class="kw">pub const </span>STATIC_DECODE_TABLE: [(<span class="kw-2">&amp;</span>[u8], <span class="kw-2">&amp;</span>[u8]); <span class="number">99</span>] = [
+    (<span class="string">b":authority"</span>, <span class="string">b""</span>),
+    (<span class="string">b":path"</span>, <span class="string">b"/"</span>),
+    (<span class="string">b"age"</span>, <span class="string">b"0"</span>),
+    (<span class="string">b"content-disposition"</span>, <span class="string">b""</span>),
+    (<span class="string">b"content-length"</span>, <span class="string">b"0"</span>),
+    (<span class="string">b"cookie"</span>, <span class="string">b""</span>),
+    (<span class="string">b"date"</span>, <span class="string">b""</span>),
+    (<span class="string">b"etag"</span>, <span class="string">b""</span>),
+    (<span class="string">b"if-modified-since"</span>, <span class="string">b""</span>),
+    (<span class="string">b"if-none-match"</span>, <span class="string">b""</span>),
+    (<span class="string">b"last-modified"</span>, <span class="string">b""</span>),
+    (<span class="string">b"link"</span>, <span class="string">b""</span>),
+    (<span class="string">b"location"</span>, <span class="string">b""</span>),
+    (<span class="string">b"referer"</span>, <span class="string">b""</span>),
+    (<span class="string">b"set-cookie"</span>, <span class="string">b""</span>),
+    (<span class="string">b":method"</span>, <span class="string">b"CONNECT"</span>),
+    (<span class="string">b":method"</span>, <span class="string">b"DELETE"</span>),
+    (<span class="string">b":method"</span>, <span class="string">b"GET"</span>),
+    (<span class="string">b":method"</span>, <span class="string">b"HEAD"</span>),
+    (<span class="string">b":method"</span>, <span class="string">b"OPTIONS"</span>),
+    (<span class="string">b":method"</span>, <span class="string">b"POST"</span>),
+    (<span class="string">b":method"</span>, <span class="string">b"PUT"</span>),
+    (<span class="string">b":scheme"</span>, <span class="string">b"http"</span>),
+    (<span class="string">b":scheme"</span>, <span class="string">b"https"</span>),
+    (<span class="string">b":status"</span>, <span class="string">b"103"</span>),
+    (<span class="string">b":status"</span>, <span class="string">b"200"</span>),
+    (<span class="string">b":status"</span>, <span class="string">b"304"</span>),
+    (<span class="string">b":status"</span>, <span class="string">b"404"</span>),
+    (<span class="string">b":status"</span>, <span class="string">b"503"</span>),
+    (<span class="string">b"accept"</span>, <span class="string">b"*/*"</span>),
+    (<span class="string">b"accept"</span>, <span class="string">b"application/dns-message"</span>),
+    (<span class="string">b"accept-encoding"</span>, <span class="string">b"gzip, deflate, br"</span>),
+    (<span class="string">b"accept-ranges"</span>, <span class="string">b"bytes"</span>),
+    (<span class="string">b"access-control-allow-headers"</span>, <span class="string">b"cache-control"</span>),
+    (<span class="string">b"access-control-allow-headers"</span>, <span class="string">b"content-type"</span>),
+    (<span class="string">b"access-control-allow-origin"</span>, <span class="string">b"*"</span>),
+    (<span class="string">b"cache-control"</span>, <span class="string">b"max-age=0"</span>),
+    (<span class="string">b"cache-control"</span>, <span class="string">b"max-age=2592000"</span>),
+    (<span class="string">b"cache-control"</span>, <span class="string">b"max-age=604800"</span>),
+    (<span class="string">b"cache-control"</span>, <span class="string">b"no-cache"</span>),
+    (<span class="string">b"cache-control"</span>, <span class="string">b"no-store"</span>),
+    (<span class="string">b"cache-control"</span>, <span class="string">b"public, max-age=31536000"</span>),
+    (<span class="string">b"content-encoding"</span>, <span class="string">b"br"</span>),
+    (<span class="string">b"content-encoding"</span>, <span class="string">b"gzip"</span>),
+    (<span class="string">b"content-type"</span>, <span class="string">b"application/dns-message"</span>),
+    (<span class="string">b"content-type"</span>, <span class="string">b"application/javascript"</span>),
+    (<span class="string">b"content-type"</span>, <span class="string">b"application/json"</span>),
+    (<span class="string">b"content-type"</span>, <span class="string">b"application/x-www-form-urlencoded"</span>),
+    (<span class="string">b"content-type"</span>, <span class="string">b"image/gif"</span>),
+    (<span class="string">b"content-type"</span>, <span class="string">b"image/jpeg"</span>),
+    (<span class="string">b"content-type"</span>, <span class="string">b"image/png"</span>),
+    (<span class="string">b"content-type"</span>, <span class="string">b"text/css"</span>),
+    (<span class="string">b"content-type"</span>, <span class="string">b"text/html; charset=utf-8"</span>),
+    (<span class="string">b"content-type"</span>, <span class="string">b"text/plain"</span>),
+    (<span class="string">b"content-type"</span>, <span class="string">b"text/plain;charset=utf-8"</span>),
+    (<span class="string">b"range"</span>, <span class="string">b"bytes=0-"</span>),
+    (<span class="string">b"strict-transport-security"</span>, <span class="string">b"max-age=31536000"</span>),
+    (
+        <span class="string">b"strict-transport-security"</span>,
+        <span class="string">b"max-age=31536000; includesubdomains"</span>,
+    ),
+    (
+        <span class="string">b"strict-transport-security"</span>,
+        <span class="string">b"max-age=31536000; includesubdomains; preload"</span>,
+    ),
+    (<span class="string">b"vary"</span>, <span class="string">b"accept-encoding"</span>),
+    (<span class="string">b"vary"</span>, <span class="string">b"origin"</span>),
+    (<span class="string">b"x-content-type-options"</span>, <span class="string">b"nosniff"</span>),
+    (<span class="string">b"x-xss-protection"</span>, <span class="string">b"1; mode=block"</span>),
+    (<span class="string">b":status"</span>, <span class="string">b"100"</span>),
+    (<span class="string">b":status"</span>, <span class="string">b"204"</span>),
+    (<span class="string">b":status"</span>, <span class="string">b"206"</span>),
+    (<span class="string">b":status"</span>, <span class="string">b"302"</span>),
+    (<span class="string">b":status"</span>, <span class="string">b"400"</span>),
+    (<span class="string">b":status"</span>, <span class="string">b"403"</span>),
+    (<span class="string">b":status"</span>, <span class="string">b"421"</span>),
+    (<span class="string">b":status"</span>, <span class="string">b"425"</span>),
+    (<span class="string">b":status"</span>, <span class="string">b"500"</span>),
+    (<span class="string">b"accept-language"</span>, <span class="string">b""</span>),
+    (<span class="string">b"access-control-allow-credentials"</span>, <span class="string">b"FALSE"</span>),
+    (<span class="string">b"access-control-allow-credentials"</span>, <span class="string">b"TRUE"</span>),
+    (<span class="string">b"access-control-allow-headers"</span>, <span class="string">b"*"</span>),
+    (<span class="string">b"access-control-allow-methods"</span>, <span class="string">b"get"</span>),
+    (<span class="string">b"access-control-allow-methods"</span>, <span class="string">b"get, post, options"</span>),
+    (<span class="string">b"access-control-allow-methods"</span>, <span class="string">b"options"</span>),
+    (<span class="string">b"access-control-expose-headers"</span>, <span class="string">b"content-length"</span>),
+    (<span class="string">b"access-control-request-headers"</span>, <span class="string">b"content-type"</span>),
+    (<span class="string">b"access-control-request-method"</span>, <span class="string">b"get"</span>),
+    (<span class="string">b"access-control-request-method"</span>, <span class="string">b"post"</span>),
+    (<span class="string">b"alt-svc"</span>, <span class="string">b"clear"</span>),
+    (<span class="string">b"authorization"</span>, <span class="string">b""</span>),
+    (
+        <span class="string">b"content-security-policy"</span>,
+        <span class="string">b"script-src 'none'; object-src 'none'; base-uri 'none'"</span>,
+    ),
+    (<span class="string">b"early-data"</span>, <span class="string">b"1"</span>),
+    (<span class="string">b"expect-ct"</span>, <span class="string">b""</span>),
+    (<span class="string">b"forwarded"</span>, <span class="string">b""</span>),
+    (<span class="string">b"if-range"</span>, <span class="string">b""</span>),
+    (<span class="string">b"origin"</span>, <span class="string">b""</span>),
+    (<span class="string">b"purpose"</span>, <span class="string">b"prefetch"</span>),
+    (<span class="string">b"server"</span>, <span class="string">b""</span>),
+    (<span class="string">b"timing-allow-origin"</span>, <span class="string">b"*"</span>),
+    (<span class="string">b"upgrade-insecure-requests"</span>, <span class="string">b"1"</span>),
+    (<span class="string">b"user-agent"</span>, <span class="string">b""</span>),
+    (<span class="string">b"x-forwarded-for"</span>, <span class="string">b""</span>),
+    (<span class="string">b"x-frame-options"</span>, <span class="string">b"deny"</span>),
+    (<span class="string">b"x-frame-options"</span>, <span class="string">b"sameorigin"</span>),
+];
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/h3/stream.rs.html b/src/quiche/h3/stream.rs.html
new file mode 100644
index 0000000..72e2ab4
--- /dev/null
+++ b/src/quiche/h3/stream.rs.html
@@ -0,0 +1,2685 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/h3/stream.rs`."><title>stream.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+<a href="#1217" id="1217">1217</a>
+<a href="#1218" id="1218">1218</a>
+<a href="#1219" id="1219">1219</a>
+<a href="#1220" id="1220">1220</a>
+<a href="#1221" id="1221">1221</a>
+<a href="#1222" id="1222">1222</a>
+<a href="#1223" id="1223">1223</a>
+<a href="#1224" id="1224">1224</a>
+<a href="#1225" id="1225">1225</a>
+<a href="#1226" id="1226">1226</a>
+<a href="#1227" id="1227">1227</a>
+<a href="#1228" id="1228">1228</a>
+<a href="#1229" id="1229">1229</a>
+<a href="#1230" id="1230">1230</a>
+<a href="#1231" id="1231">1231</a>
+<a href="#1232" id="1232">1232</a>
+<a href="#1233" id="1233">1233</a>
+<a href="#1234" id="1234">1234</a>
+<a href="#1235" id="1235">1235</a>
+<a href="#1236" id="1236">1236</a>
+<a href="#1237" id="1237">1237</a>
+<a href="#1238" id="1238">1238</a>
+<a href="#1239" id="1239">1239</a>
+<a href="#1240" id="1240">1240</a>
+<a href="#1241" id="1241">1241</a>
+<a href="#1242" id="1242">1242</a>
+<a href="#1243" id="1243">1243</a>
+<a href="#1244" id="1244">1244</a>
+<a href="#1245" id="1245">1245</a>
+<a href="#1246" id="1246">1246</a>
+<a href="#1247" id="1247">1247</a>
+<a href="#1248" id="1248">1248</a>
+<a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</a>
+<a href="#1259" id="1259">1259</a>
+<a href="#1260" id="1260">1260</a>
+<a href="#1261" id="1261">1261</a>
+<a href="#1262" id="1262">1262</a>
+<a href="#1263" id="1263">1263</a>
+<a href="#1264" id="1264">1264</a>
+<a href="#1265" id="1265">1265</a>
+<a href="#1266" id="1266">1266</a>
+<a href="#1267" id="1267">1267</a>
+<a href="#1268" id="1268">1268</a>
+<a href="#1269" id="1269">1269</a>
+<a href="#1270" id="1270">1270</a>
+<a href="#1271" id="1271">1271</a>
+<a href="#1272" id="1272">1272</a>
+<a href="#1273" id="1273">1273</a>
+<a href="#1274" id="1274">1274</a>
+<a href="#1275" id="1275">1275</a>
+<a href="#1276" id="1276">1276</a>
+<a href="#1277" id="1277">1277</a>
+<a href="#1278" id="1278">1278</a>
+<a href="#1279" id="1279">1279</a>
+<a href="#1280" id="1280">1280</a>
+<a href="#1281" id="1281">1281</a>
+<a href="#1282" id="1282">1282</a>
+<a href="#1283" id="1283">1283</a>
+<a href="#1284" id="1284">1284</a>
+<a href="#1285" id="1285">1285</a>
+<a href="#1286" id="1286">1286</a>
+<a href="#1287" id="1287">1287</a>
+<a href="#1288" id="1288">1288</a>
+<a href="#1289" id="1289">1289</a>
+<a href="#1290" id="1290">1290</a>
+<a href="#1291" id="1291">1291</a>
+<a href="#1292" id="1292">1292</a>
+<a href="#1293" id="1293">1293</a>
+<a href="#1294" id="1294">1294</a>
+<a href="#1295" id="1295">1295</a>
+<a href="#1296" id="1296">1296</a>
+<a href="#1297" id="1297">1297</a>
+<a href="#1298" id="1298">1298</a>
+<a href="#1299" id="1299">1299</a>
+<a href="#1300" id="1300">1300</a>
+<a href="#1301" id="1301">1301</a>
+<a href="#1302" id="1302">1302</a>
+<a href="#1303" id="1303">1303</a>
+<a href="#1304" id="1304">1304</a>
+<a href="#1305" id="1305">1305</a>
+<a href="#1306" id="1306">1306</a>
+<a href="#1307" id="1307">1307</a>
+<a href="#1308" id="1308">1308</a>
+<a href="#1309" id="1309">1309</a>
+<a href="#1310" id="1310">1310</a>
+<a href="#1311" id="1311">1311</a>
+<a href="#1312" id="1312">1312</a>
+<a href="#1313" id="1313">1313</a>
+<a href="#1314" id="1314">1314</a>
+<a href="#1315" id="1315">1315</a>
+<a href="#1316" id="1316">1316</a>
+<a href="#1317" id="1317">1317</a>
+<a href="#1318" id="1318">1318</a>
+<a href="#1319" id="1319">1319</a>
+<a href="#1320" id="1320">1320</a>
+<a href="#1321" id="1321">1321</a>
+<a href="#1322" id="1322">1322</a>
+<a href="#1323" id="1323">1323</a>
+<a href="#1324" id="1324">1324</a>
+<a href="#1325" id="1325">1325</a>
+<a href="#1326" id="1326">1326</a>
+<a href="#1327" id="1327">1327</a>
+<a href="#1328" id="1328">1328</a>
+<a href="#1329" id="1329">1329</a>
+<a href="#1330" id="1330">1330</a>
+<a href="#1331" id="1331">1331</a>
+<a href="#1332" id="1332">1332</a>
+<a href="#1333" id="1333">1333</a>
+<a href="#1334" id="1334">1334</a>
+<a href="#1335" id="1335">1335</a>
+<a href="#1336" id="1336">1336</a>
+<a href="#1337" id="1337">1337</a>
+<a href="#1338" id="1338">1338</a>
+<a href="#1339" id="1339">1339</a>
+<a href="#1340" id="1340">1340</a>
+<a href="#1341" id="1341">1341</a>
+<a href="#1342" id="1342">1342</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span><span class="kw">super</span>::Error;
+<span class="kw">use </span><span class="kw">super</span>::Result;
+
+<span class="kw">use </span><span class="kw">super</span>::frame;
+
+<span class="kw">pub const </span>HTTP3_CONTROL_STREAM_TYPE_ID: u64 = <span class="number">0x0</span>;
+<span class="kw">pub const </span>HTTP3_PUSH_STREAM_TYPE_ID: u64 = <span class="number">0x1</span>;
+<span class="kw">pub const </span>QPACK_ENCODER_STREAM_TYPE_ID: u64 = <span class="number">0x2</span>;
+<span class="kw">pub const </span>QPACK_DECODER_STREAM_TYPE_ID: u64 = <span class="number">0x3</span>;
+
+<span class="kw">const </span>MAX_STATE_BUF_SIZE: usize = (<span class="number">1 </span>&lt;&lt; <span class="number">24</span>) - <span class="number">1</span>;
+
+<span class="attr">#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+</span><span class="kw">pub enum </span>Type {
+    Control,
+    Request,
+    Push,
+    QpackEncoder,
+    QpackDecoder,
+    Unknown,
+}
+
+<span class="kw">impl </span>Type {
+    <span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+    </span><span class="kw">pub fn </span>to_qlog(<span class="self">self</span>) -&gt; qlog::events::h3::H3StreamType {
+        <span class="kw">match </span><span class="self">self </span>{
+            Type::Control =&gt; qlog::events::h3::H3StreamType::Control,
+            Type::Request =&gt; qlog::events::h3::H3StreamType::Request,
+            Type::Push =&gt; qlog::events::h3::H3StreamType::Push,
+            Type::QpackEncoder =&gt; qlog::events::h3::H3StreamType::QpackEncode,
+            Type::QpackDecoder =&gt; qlog::events::h3::H3StreamType::QpackDecode,
+            Type::Unknown =&gt; qlog::events::h3::H3StreamType::Unknown,
+        }
+    }
+}
+
+<span class="attr">#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+</span><span class="kw">pub enum </span>State {
+    <span class="doccomment">/// Reading the stream's type.
+    </span>StreamType,
+
+    <span class="doccomment">/// Reading the stream's current frame's type.
+    </span>FrameType,
+
+    <span class="doccomment">/// Reading the stream's current frame's payload length.
+    </span>FramePayloadLen,
+
+    <span class="doccomment">/// Reading the stream's current frame's payload.
+    </span>FramePayload,
+
+    <span class="doccomment">/// Reading DATA payload.
+    </span>Data,
+
+    <span class="doccomment">/// Reading the push ID.
+    </span>PushId,
+
+    <span class="doccomment">/// Reading a QPACK instruction.
+    </span>QpackInstruction,
+
+    <span class="doccomment">/// Reading and discarding data.
+    </span>Drain,
+
+    <span class="doccomment">/// All data has been read.
+    </span>Finished,
+}
+
+<span class="kw">impl </span>Type {
+    <span class="kw">pub fn </span>deserialize(v: u64) -&gt; <span class="prelude-ty">Result</span>&lt;Type&gt; {
+        <span class="kw">match </span>v {
+            HTTP3_CONTROL_STREAM_TYPE_ID =&gt; <span class="prelude-val">Ok</span>(Type::Control),
+            HTTP3_PUSH_STREAM_TYPE_ID =&gt; <span class="prelude-val">Ok</span>(Type::Push),
+            QPACK_ENCODER_STREAM_TYPE_ID =&gt; <span class="prelude-val">Ok</span>(Type::QpackEncoder),
+            QPACK_DECODER_STREAM_TYPE_ID =&gt; <span class="prelude-val">Ok</span>(Type::QpackDecoder),
+
+            <span class="kw">_ </span>=&gt; <span class="prelude-val">Ok</span>(Type::Unknown),
+        }
+    }
+}
+
+<span class="doccomment">/// An HTTP/3 stream.
+///
+/// This maintains the HTTP/3 state for streams of any type (control, request,
+/// QPACK, ...).
+///
+/// A number of bytes, depending on the current stream's state, is read from the
+/// transport stream into the HTTP/3 stream's "state buffer". This intermediate
+/// buffering is required due to the fact that data read from the transport
+/// might not be complete (e.g. a varint might be split across multiple QUIC
+/// packets).
+///
+/// When enough data to complete the current state has been buffered, it is
+/// consumed from the state buffer and the stream is transitioned to the next
+/// state (see `State` for a list of possible states).
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub struct </span>Stream {
+    <span class="doccomment">/// The corresponding transport stream's ID.
+    </span>id: u64,
+
+    <span class="doccomment">/// The stream's type (if known).
+    </span>ty: <span class="prelude-ty">Option</span>&lt;Type&gt;,
+
+    <span class="doccomment">/// The current stream state.
+    </span>state: State,
+
+    <span class="doccomment">/// The buffer holding partial data for the current state.
+    </span>state_buf: Vec&lt;u8&gt;,
+
+    <span class="doccomment">/// The expected amount of bytes required to complete the state.
+    </span>state_len: usize,
+
+    <span class="doccomment">/// The write offset in the state buffer, that is, how many bytes have
+    /// already been read from the transport for the current state. When
+    /// it reaches `stream_len` the state can be completed.
+    </span>state_off: usize,
+
+    <span class="doccomment">/// The type of the frame currently being parsed.
+    </span>frame_type: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    <span class="doccomment">/// Whether the stream was created locally, or by the peer.
+    </span>is_local: bool,
+
+    <span class="doccomment">/// Whether the stream has been remotely initialized.
+    </span>remote_initialized: bool,
+
+    <span class="doccomment">/// Whether the stream has been locally initialized.
+    </span>local_initialized: bool,
+
+    <span class="doccomment">/// Whether a `Data` event has been triggered for this stream.
+    </span>data_event_triggered: bool,
+
+    <span class="doccomment">/// The last `PRIORITY_UPDATE` frame encoded field value, if any.
+    </span>last_priority_update: <span class="prelude-ty">Option</span>&lt;Vec&lt;u8&gt;&gt;,
+}
+
+<span class="kw">impl </span>Stream {
+    <span class="doccomment">/// Creates a new HTTP/3 stream.
+    ///
+    /// The `is_local` parameter indicates whether the stream was created by the
+    /// local endpoint, or by the peer.
+    </span><span class="kw">pub fn </span>new(id: u64, is_local: bool) -&gt; Stream {
+        <span class="kw">let </span>(ty, state) = <span class="kw">if </span><span class="kw">crate</span>::stream::is_bidi(id) {
+            <span class="comment">// All bidirectional streams are "request" streams, so we don't
+            // need to read the stream type.
+            </span>(<span class="prelude-val">Some</span>(Type::Request), State::FrameType)
+        } <span class="kw">else </span>{
+            <span class="comment">// The stream's type is yet to be determined.
+            </span>(<span class="prelude-val">None</span>, State::StreamType)
+        };
+
+        Stream {
+            id,
+            ty,
+
+            state,
+
+            <span class="comment">// Pre-allocate a buffer to avoid multiple tiny early allocations.
+            </span>state_buf: <span class="macro">vec!</span>[<span class="number">0</span>; <span class="number">16</span>],
+
+            <span class="comment">// Expect one byte for the initial state, to parse the initial
+            // varint length.
+            </span>state_len: <span class="number">1</span>,
+            state_off: <span class="number">0</span>,
+
+            frame_type: <span class="prelude-val">None</span>,
+
+            is_local,
+            remote_initialized: <span class="bool-val">false</span>,
+            local_initialized: <span class="bool-val">false</span>,
+
+            data_event_triggered: <span class="bool-val">false</span>,
+
+            last_priority_update: <span class="prelude-val">None</span>,
+        }
+    }
+
+    <span class="kw">pub fn </span>ty(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;Type&gt; {
+        <span class="self">self</span>.ty
+    }
+
+    <span class="kw">pub fn </span>state(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; State {
+        <span class="self">self</span>.state
+    }
+
+    <span class="doccomment">/// Sets the stream's type and transitions to the next state.
+    </span><span class="kw">pub fn </span>set_ty(<span class="kw-2">&amp;mut </span><span class="self">self</span>, ty: Type) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="macro">assert_eq!</span>(<span class="self">self</span>.state, State::StreamType);
+
+        <span class="self">self</span>.ty = <span class="prelude-val">Some</span>(ty);
+
+        <span class="kw">let </span>state = <span class="kw">match </span>ty {
+            Type::Control | Type::Request =&gt; State::FrameType,
+
+            Type::Push =&gt; State::PushId,
+
+            Type::QpackEncoder | Type::QpackDecoder =&gt; {
+                <span class="self">self</span>.remote_initialized = <span class="bool-val">true</span>;
+
+                State::QpackInstruction
+            },
+
+            Type::Unknown =&gt; State::Drain,
+        };
+
+        <span class="self">self</span>.state_transition(state, <span class="number">1</span>, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Sets the push ID and transitions to the next state.
+    </span><span class="kw">pub fn </span>set_push_id(<span class="kw-2">&amp;mut </span><span class="self">self</span>, _id: u64) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="macro">assert_eq!</span>(<span class="self">self</span>.state, State::PushId);
+
+        <span class="comment">// TODO: implement push ID.
+
+        </span><span class="self">self</span>.state_transition(State::FrameType, <span class="number">1</span>, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Sets the frame type and transitions to the next state.
+    </span><span class="kw">pub fn </span>set_frame_type(<span class="kw-2">&amp;mut </span><span class="self">self</span>, ty: u64) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="macro">assert_eq!</span>(<span class="self">self</span>.state, State::FrameType);
+
+        <span class="comment">// Only expect frames on Control, Request and Push streams.
+        </span><span class="kw">match </span><span class="self">self</span>.ty {
+            <span class="prelude-val">Some</span>(Type::Control) =&gt; {
+                <span class="comment">// Control stream starts uninitialized and only SETTINGS is
+                // accepted in that state. Other frames cause an error. Once
+                // initialized, no more SETTINGS are permitted.
+                </span><span class="kw">match </span>(ty, <span class="self">self</span>.remote_initialized) {
+                    <span class="comment">// Initialize control stream.
+                    </span>(frame::SETTINGS_FRAME_TYPE_ID, <span class="bool-val">false</span>) =&gt;
+                        <span class="self">self</span>.remote_initialized = <span class="bool-val">true</span>,
+
+                    <span class="comment">// Non-SETTINGS frames not allowed on control stream
+                    // before initialization.
+                    </span>(<span class="kw">_</span>, <span class="bool-val">false</span>) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::MissingSettings),
+
+                    <span class="comment">// Additional SETTINGS frame.
+                    </span>(frame::SETTINGS_FRAME_TYPE_ID, <span class="bool-val">true</span>) =&gt;
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected),
+
+                    <span class="comment">// Frames that can't be received on control stream
+                    // after initialization.
+                    </span>(frame::DATA_FRAME_TYPE_ID, <span class="bool-val">true</span>) =&gt;
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected),
+
+                    (frame::HEADERS_FRAME_TYPE_ID, <span class="bool-val">true</span>) =&gt;
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected),
+
+                    (frame::PUSH_PROMISE_FRAME_TYPE_ID, <span class="bool-val">true</span>) =&gt;
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected),
+
+                    <span class="comment">// All other frames are ignored after initialization.
+                    </span>(<span class="kw">_</span>, <span class="bool-val">true</span>) =&gt; (),
+                }
+            },
+
+            <span class="prelude-val">Some</span>(Type::Request) =&gt; {
+                <span class="comment">// Request stream starts uninitialized and only HEADERS
+                // is accepted. Other frames cause an error.
+                </span><span class="kw">if </span>!<span class="self">self</span>.is_local {
+                    <span class="kw">match </span>(ty, <span class="self">self</span>.remote_initialized) {
+                        (frame::HEADERS_FRAME_TYPE_ID, <span class="bool-val">false</span>) =&gt;
+                            <span class="self">self</span>.remote_initialized = <span class="bool-val">true</span>,
+
+                        (frame::DATA_FRAME_TYPE_ID, <span class="bool-val">false</span>) =&gt;
+                            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected),
+
+                        (frame::CANCEL_PUSH_FRAME_TYPE_ID, <span class="kw">_</span>) =&gt;
+                            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected),
+
+                        (frame::SETTINGS_FRAME_TYPE_ID, <span class="kw">_</span>) =&gt;
+                            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected),
+
+                        (frame::GOAWAY_FRAME_TYPE_ID, <span class="kw">_</span>) =&gt;
+                            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected),
+
+                        (frame::MAX_PUSH_FRAME_TYPE_ID, <span class="kw">_</span>) =&gt;
+                            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected),
+
+                        <span class="comment">// All other frames can be ignored regardless of stream
+                        // state.
+                        </span><span class="kw">_ </span>=&gt; (),
+                    }
+                }
+            },
+
+            <span class="prelude-val">Some</span>(Type::Push) =&gt; {
+                <span class="kw">match </span>ty {
+                    <span class="comment">// Frames that can never be received on request streams.
+                    </span>frame::CANCEL_PUSH_FRAME_TYPE_ID =&gt;
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected),
+
+                    frame::SETTINGS_FRAME_TYPE_ID =&gt;
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected),
+
+                    frame::PUSH_PROMISE_FRAME_TYPE_ID =&gt;
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected),
+
+                    frame::GOAWAY_FRAME_TYPE_ID =&gt;
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected),
+
+                    frame::MAX_PUSH_FRAME_TYPE_ID =&gt;
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected),
+
+                    <span class="kw">_ </span>=&gt; (),
+                }
+            },
+
+            <span class="kw">_ </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameUnexpected),
+        }
+
+        <span class="self">self</span>.frame_type = <span class="prelude-val">Some</span>(ty);
+
+        <span class="self">self</span>.state_transition(State::FramePayloadLen, <span class="number">1</span>, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="comment">// Returns the stream's current frame type, if any
+    </span><span class="kw">pub fn </span>frame_type(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;u64&gt; {
+        <span class="self">self</span>.frame_type
+    }
+
+    <span class="doccomment">/// Sets the frame's payload length and transitions to the next state.
+    </span><span class="kw">pub fn </span>set_frame_payload_len(<span class="kw-2">&amp;mut </span><span class="self">self</span>, len: u64) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="macro">assert_eq!</span>(<span class="self">self</span>.state, State::FramePayloadLen);
+
+        <span class="comment">// Only expect frames on Control, Request and Push streams.
+        </span><span class="kw">if </span><span class="macro">matches!</span>(<span class="self">self</span>.ty, <span class="prelude-val">Some</span>(Type::Control | Type::Request | Type::Push)) {
+            <span class="kw">let </span>(state, resize) = <span class="kw">match </span><span class="self">self</span>.frame_type {
+                <span class="prelude-val">Some</span>(frame::DATA_FRAME_TYPE_ID) =&gt; (State::Data, <span class="bool-val">false</span>),
+
+                <span class="comment">// These frame types can never have 0 payload length because
+                // they always have fields that must be populated.
+                </span><span class="prelude-val">Some</span>(
+                    frame::GOAWAY_FRAME_TYPE_ID |
+                    frame::PUSH_PROMISE_FRAME_TYPE_ID |
+                    frame::CANCEL_PUSH_FRAME_TYPE_ID |
+                    frame::MAX_PUSH_FRAME_TYPE_ID,
+                ) =&gt; {
+                    <span class="kw">if </span>len == <span class="number">0 </span>{
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FrameError);
+                    }
+
+                    (State::FramePayload, <span class="bool-val">true</span>)
+                },
+
+                <span class="kw">_ </span>=&gt; (State::FramePayload, <span class="bool-val">true</span>),
+            };
+
+            <span class="self">self</span>.state_transition(state, len <span class="kw">as </span>usize, resize)<span class="question-mark">?</span>;
+
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+        }
+
+        <span class="prelude-val">Err</span>(Error::InternalError)
+    }
+
+    <span class="doccomment">/// Tries to fill the state buffer by reading data from the corresponding
+    /// transport stream.
+    ///
+    /// When not enough data can be read to complete the state, this returns
+    /// `Error::Done`.
+    </span><span class="kw">pub fn </span>try_fill_buffer(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">crate</span>::Connection,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="comment">// If no bytes are required to be read, return early.
+        </span><span class="kw">if </span><span class="self">self</span>.state_buffer_complete() {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+        }
+
+        <span class="kw">let </span>buf = <span class="kw-2">&amp;mut </span><span class="self">self</span>.state_buf[<span class="self">self</span>.state_off..<span class="self">self</span>.state_len];
+
+        <span class="kw">let </span>read = <span class="kw">match </span>conn.stream_recv(<span class="self">self</span>.id, buf) {
+            <span class="prelude-val">Ok</span>((len, <span class="kw">_</span>)) =&gt; len,
+
+            <span class="prelude-val">Err</span>(e) =&gt; {
+                <span class="comment">// The stream is not readable anymore, so re-arm the Data event.
+                </span><span class="kw">if </span>e == <span class="kw">crate</span>::Error::Done {
+                    <span class="self">self</span>.reset_data_event();
+                }
+
+                <span class="kw">return </span><span class="prelude-val">Err</span>(e.into());
+            },
+        };
+
+        <span class="macro">trace!</span>(
+            <span class="string">"{} read {} bytes on stream {}"</span>,
+            conn.trace_id(),
+            read,
+            <span class="self">self</span>.id,
+        );
+
+        <span class="self">self</span>.state_off += read;
+
+        <span class="kw">if </span>!<span class="self">self</span>.state_buffer_complete() {
+            <span class="self">self</span>.reset_data_event();
+
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Initialize the local part of the stream.
+    </span><span class="kw">pub fn </span>initialize_local(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="self">self</span>.local_initialized = <span class="bool-val">true
+    </span>}
+
+    <span class="doccomment">/// Whether the stream has been locally initialized.
+    </span><span class="kw">pub fn </span>local_initialized(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.local_initialized
+    }
+
+    <span class="doccomment">/// Tries to fill the state buffer by reading data from the given cursor.
+    ///
+    /// This is intended to replace `try_fill_buffer()` in tests, in order to
+    /// avoid having to setup a transport connection.
+    </span><span class="attr">#[cfg(test)]
+    </span><span class="kw">fn </span>try_fill_buffer_for_tests(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, stream: <span class="kw-2">&amp;mut </span>std::io::Cursor&lt;Vec&lt;u8&gt;&gt;,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="comment">// If no bytes are required to be read, return early
+        </span><span class="kw">if </span><span class="self">self</span>.state_buffer_complete() {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+        }
+
+        <span class="kw">let </span>buf = <span class="kw-2">&amp;mut </span><span class="self">self</span>.state_buf[<span class="self">self</span>.state_off..<span class="self">self</span>.state_len];
+
+        <span class="kw">let </span>read = std::io::Read::read(stream, buf).unwrap();
+
+        <span class="self">self</span>.state_off += read;
+
+        <span class="kw">if </span>!<span class="self">self</span>.state_buffer_complete() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Tries to parse a varint (including length) from the state buffer.
+    </span><span class="kw">pub fn </span>try_consume_varint(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;u64&gt; {
+        <span class="kw">if </span><span class="self">self</span>.state_off == <span class="number">1 </span>{
+            <span class="self">self</span>.state_len = octets::varint_parse_len(<span class="self">self</span>.state_buf[<span class="number">0</span>]);
+            <span class="self">self</span>.state_buf.resize(<span class="self">self</span>.state_len, <span class="number">0</span>);
+        }
+
+        <span class="comment">// Return early if we don't have enough data in the state buffer to
+        // parse the whole varint.
+        </span><span class="kw">if </span>!<span class="self">self</span>.state_buffer_complete() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="kw">let </span>varint = octets::Octets::with_slice(<span class="kw-2">&amp;</span><span class="self">self</span>.state_buf).get_varint()<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(varint)
+    }
+
+    <span class="doccomment">/// Tries to parse a frame from the state buffer.
+    ///
+    /// If successful, returns the `frame::Frame` and the payload length.
+    </span><span class="kw">pub fn </span>try_consume_frame(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;(frame::Frame, u64)&gt; {
+        <span class="comment">// Processing a frame other than DATA, so re-arm the Data event.
+        </span><span class="self">self</span>.reset_data_event();
+
+        <span class="kw">let </span>payload_len = <span class="self">self</span>.state_len <span class="kw">as </span>u64;
+
+        <span class="comment">// TODO: properly propagate frame parsing errors.
+        </span><span class="kw">let </span>frame = frame::Frame::from_bytes(
+            <span class="self">self</span>.frame_type.unwrap(),
+            payload_len,
+            <span class="kw-2">&amp;</span><span class="self">self</span>.state_buf,
+        )<span class="question-mark">?</span>;
+
+        <span class="self">self</span>.state_transition(State::FrameType, <span class="number">1</span>, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>((frame, payload_len))
+    }
+
+    <span class="doccomment">/// Tries to read DATA payload from the transport stream.
+    </span><span class="kw">pub fn </span>try_consume_data(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span><span class="kw">crate</span>::Connection, out: <span class="kw-2">&amp;mut </span>[u8],
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;(usize, bool)&gt; {
+        <span class="kw">let </span>left = std::cmp::min(out.len(), <span class="self">self</span>.state_len - <span class="self">self</span>.state_off);
+
+        <span class="kw">let </span>(len, fin) = <span class="kw">match </span>conn.stream_recv(<span class="self">self</span>.id, <span class="kw-2">&amp;mut </span>out[..left]) {
+            <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+            <span class="prelude-val">Err</span>(e) =&gt; {
+                <span class="comment">// The stream is not readable anymore, so re-arm the Data event.
+                </span><span class="kw">if </span>e == <span class="kw">crate</span>::Error::Done {
+                    <span class="self">self</span>.reset_data_event();
+                }
+
+                <span class="kw">return </span><span class="prelude-val">Err</span>(e.into());
+            },
+        };
+
+        <span class="self">self</span>.state_off += len;
+
+        <span class="comment">// The stream is not readable anymore, so re-arm the Data event.
+        </span><span class="kw">if </span>!conn.stream_readable(<span class="self">self</span>.id) {
+            <span class="self">self</span>.reset_data_event();
+        }
+
+        <span class="kw">if </span><span class="self">self</span>.state_buffer_complete() {
+            <span class="self">self</span>.state_transition(State::FrameType, <span class="number">1</span>, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
+        }
+
+        <span class="prelude-val">Ok</span>((len, fin))
+    }
+
+    <span class="doccomment">/// Marks the stream as finished.
+    </span><span class="kw">pub fn </span>finished(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="kw">let _ </span>= <span class="self">self</span>.state_transition(State::Finished, <span class="number">0</span>, <span class="bool-val">false</span>);
+    }
+
+    <span class="doccomment">/// Tries to read DATA payload from the given cursor.
+    ///
+    /// This is intended to replace `try_consume_data()` in tests, in order to
+    /// avoid having to setup a transport connection.
+    </span><span class="attr">#[cfg(test)]
+    </span><span class="kw">fn </span>try_consume_data_for_tests(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, stream: <span class="kw-2">&amp;mut </span>std::io::Cursor&lt;Vec&lt;u8&gt;&gt;, out: <span class="kw-2">&amp;mut </span>[u8],
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="kw">let </span>left = std::cmp::min(out.len(), <span class="self">self</span>.state_len - <span class="self">self</span>.state_off);
+
+        <span class="kw">let </span>len = std::io::Read::read(stream, <span class="kw-2">&amp;mut </span>out[..left]).unwrap();
+
+        <span class="self">self</span>.state_off += len;
+
+        <span class="kw">if </span><span class="self">self</span>.state_buffer_complete() {
+            <span class="self">self</span>.state_transition(State::FrameType, <span class="number">1</span>, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
+        }
+
+        <span class="prelude-val">Ok</span>(len)
+    }
+
+    <span class="doccomment">/// Tries to update the data triggered state for the stream.
+    ///
+    /// This returns `true` if a Data event was not already triggered before
+    /// the last reset, and updates the state. Returns `false` otherwise.
+    </span><span class="kw">pub fn </span>try_trigger_data_event(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; bool {
+        <span class="kw">if </span><span class="self">self</span>.data_event_triggered {
+            <span class="kw">return </span><span class="bool-val">false</span>;
+        }
+
+        <span class="self">self</span>.data_event_triggered = <span class="bool-val">true</span>;
+
+        <span class="bool-val">true
+    </span>}
+
+    <span class="doccomment">/// Resets the data triggered state.
+    </span><span class="kw">fn </span>reset_data_event(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="self">self</span>.data_event_triggered = <span class="bool-val">false</span>;
+    }
+
+    <span class="doccomment">/// Set the last priority update for the stream.
+    </span><span class="kw">pub fn </span>set_last_priority_update(<span class="kw-2">&amp;mut </span><span class="self">self</span>, priority_update: <span class="prelude-ty">Option</span>&lt;Vec&lt;u8&gt;&gt;) {
+        <span class="self">self</span>.last_priority_update = priority_update;
+    }
+
+    <span class="doccomment">/// Take the last priority update and leave `None` in its place.
+    </span><span class="kw">pub fn </span>take_last_priority_update(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;Vec&lt;u8&gt;&gt; {
+        <span class="self">self</span>.last_priority_update.take()
+    }
+
+    <span class="doccomment">/// Returns `true` if there is a priority update.
+    </span><span class="kw">pub fn </span>has_last_priority_update(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.last_priority_update.is_some()
+    }
+
+    <span class="doccomment">/// Returns true if the state buffer has enough data to complete the state.
+    </span><span class="kw">fn </span>state_buffer_complete(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.state_off == <span class="self">self</span>.state_len
+    }
+
+    <span class="doccomment">/// Transitions the stream to a new state, and optionally resets the state
+    /// buffer.
+    </span><span class="kw">fn </span>state_transition(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, new_state: State, expected_len: usize, resize: bool,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="comment">// Some states don't need the state buffer, so don't resize it if not
+        // necessary.
+        </span><span class="kw">if </span>resize {
+            <span class="comment">// A peer can influence the size of the state buffer (e.g. with the
+            // payload size of a GREASE frame), so we need to limit the maximum
+            // size to avoid DoS.
+            </span><span class="kw">if </span>expected_len &gt; MAX_STATE_BUF_SIZE {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::ExcessiveLoad);
+            }
+
+            <span class="self">self</span>.state_buf.resize(expected_len, <span class="number">0</span>);
+        }
+
+        <span class="self">self</span>.state = new_state;
+        <span class="self">self</span>.state_off = <span class="number">0</span>;
+        <span class="self">self</span>.state_len = expected_len;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use </span><span class="kw">crate</span>::h3::frame::<span class="kw-2">*</span>;
+
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="kw">fn </span>open_uni(b: <span class="kw-2">&amp;mut </span>octets::OctetsMut, ty: u64) -&gt; <span class="prelude-ty">Result</span>&lt;Stream&gt; {
+        <span class="kw">let </span>stream = Stream::new(<span class="number">2</span>, <span class="bool-val">false</span>);
+        <span class="macro">assert_eq!</span>(stream.state, State::StreamType);
+
+        b.put_varint(ty)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(stream)
+    }
+
+    <span class="kw">fn </span>parse_uni(
+        stream: <span class="kw-2">&amp;mut </span>Stream, ty: u64, cursor: <span class="kw-2">&amp;mut </span>std::io::Cursor&lt;Vec&lt;u8&gt;&gt;,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        stream.try_fill_buffer_for_tests(cursor)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>stream_ty = stream.try_consume_varint()<span class="question-mark">?</span>;
+        <span class="macro">assert_eq!</span>(stream_ty, ty);
+        stream.set_ty(Type::deserialize(stream_ty).unwrap())<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="kw">fn </span>parse_skip_frame(
+        stream: <span class="kw-2">&amp;mut </span>Stream, cursor: <span class="kw-2">&amp;mut </span>std::io::Cursor&lt;Vec&lt;u8&gt;&gt;,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="comment">// Parse the frame type.
+        </span>stream.try_fill_buffer_for_tests(cursor)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>frame_ty = stream.try_consume_varint()<span class="question-mark">?</span>;
+
+        stream.set_frame_type(frame_ty)<span class="question-mark">?</span>;
+        <span class="macro">assert_eq!</span>(stream.state, State::FramePayloadLen);
+
+        <span class="comment">// Parse the frame payload length.
+        </span>stream.try_fill_buffer_for_tests(cursor)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>frame_payload_len = stream.try_consume_varint()<span class="question-mark">?</span>;
+        stream.set_frame_payload_len(frame_payload_len)<span class="question-mark">?</span>;
+        <span class="macro">assert_eq!</span>(stream.state, State::FramePayload);
+
+        <span class="comment">// Parse the frame payload.
+        </span>stream.try_fill_buffer_for_tests(cursor)<span class="question-mark">?</span>;
+
+        stream.try_consume_frame()<span class="question-mark">?</span>;
+        <span class="macro">assert_eq!</span>(stream.state, State::FrameType);
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Process incoming SETTINGS frame on control stream.
+    </span><span class="kw">fn </span>control_good() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="macro">vec!</span>[<span class="number">42</span>; <span class="number">40</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">let </span>raw_settings = <span class="macro">vec!</span>[
+            (SETTINGS_MAX_FIELD_SECTION_SIZE, <span class="number">0</span>),
+            (SETTINGS_QPACK_MAX_TABLE_CAPACITY, <span class="number">0</span>),
+            (SETTINGS_QPACK_BLOCKED_STREAMS, <span class="number">0</span>),
+        ];
+
+        <span class="kw">let </span>frame = Frame::Settings {
+            max_field_section_size: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            qpack_max_table_capacity: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            qpack_blocked_streams: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            connect_protocol_enabled: <span class="prelude-val">None</span>,
+            h3_datagram: <span class="prelude-val">None</span>,
+            grease: <span class="prelude-val">None</span>,
+            additional_settings: <span class="prelude-val">None</span>,
+            raw: <span class="prelude-val">Some</span>(raw_settings),
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = open_uni(<span class="kw-2">&amp;mut </span>b, HTTP3_CONTROL_STREAM_TYPE_ID).unwrap();
+        frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>cursor = std::io::Cursor::new(d);
+
+        parse_uni(<span class="kw-2">&amp;mut </span>stream, HTTP3_CONTROL_STREAM_TYPE_ID, <span class="kw-2">&amp;mut </span>cursor)
+            .unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FrameType);
+
+        <span class="comment">// Parse the SETTINGS frame type.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_ty = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(frame_ty, frame::SETTINGS_FRAME_TYPE_ID);
+
+        stream.set_frame_type(frame_ty).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FramePayloadLen);
+
+        <span class="comment">// Parse the SETTINGS frame payload length.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_payload_len = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(frame_payload_len, <span class="number">6</span>);
+        stream.set_frame_payload_len(frame_payload_len).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FramePayload);
+
+        <span class="comment">// Parse the SETTINGS frame payload.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="macro">assert_eq!</span>(stream.try_consume_frame(), <span class="prelude-val">Ok</span>((frame, <span class="number">6</span>)));
+        <span class="macro">assert_eq!</span>(stream.state, State::FrameType);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Process incoming empty SETTINGS frame on control stream.
+    </span><span class="kw">fn </span>control_empty_settings() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="macro">vec!</span>[<span class="number">42</span>; <span class="number">40</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">let </span>frame = Frame::Settings {
+            max_field_section_size: <span class="prelude-val">None</span>,
+            qpack_max_table_capacity: <span class="prelude-val">None</span>,
+            qpack_blocked_streams: <span class="prelude-val">None</span>,
+            connect_protocol_enabled: <span class="prelude-val">None</span>,
+            h3_datagram: <span class="prelude-val">None</span>,
+            grease: <span class="prelude-val">None</span>,
+            additional_settings: <span class="prelude-val">None</span>,
+            raw: <span class="prelude-val">Some</span>(<span class="macro">vec!</span>[]),
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = open_uni(<span class="kw-2">&amp;mut </span>b, HTTP3_CONTROL_STREAM_TYPE_ID).unwrap();
+        frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>cursor = std::io::Cursor::new(d);
+
+        parse_uni(<span class="kw-2">&amp;mut </span>stream, HTTP3_CONTROL_STREAM_TYPE_ID, <span class="kw-2">&amp;mut </span>cursor)
+            .unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FrameType);
+
+        <span class="comment">// Parse the SETTINGS frame type.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_ty = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(frame_ty, frame::SETTINGS_FRAME_TYPE_ID);
+
+        stream.set_frame_type(frame_ty).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FramePayloadLen);
+
+        <span class="comment">// Parse the SETTINGS frame payload length.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_payload_len = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(frame_payload_len, <span class="number">0</span>);
+        stream.set_frame_payload_len(frame_payload_len).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FramePayload);
+
+        <span class="comment">// Parse the SETTINGS frame payload.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="macro">assert_eq!</span>(stream.try_consume_frame(), <span class="prelude-val">Ok</span>((frame, <span class="number">0</span>)));
+        <span class="macro">assert_eq!</span>(stream.state, State::FrameType);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Process duplicate SETTINGS frame on control stream.
+    </span><span class="kw">fn </span>control_bad_multiple_settings() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="macro">vec!</span>[<span class="number">42</span>; <span class="number">40</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">let </span>raw_settings = <span class="macro">vec!</span>[
+            (SETTINGS_MAX_FIELD_SECTION_SIZE, <span class="number">0</span>),
+            (SETTINGS_QPACK_MAX_TABLE_CAPACITY, <span class="number">0</span>),
+            (SETTINGS_QPACK_BLOCKED_STREAMS, <span class="number">0</span>),
+        ];
+
+        <span class="kw">let </span>frame = frame::Frame::Settings {
+            max_field_section_size: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            qpack_max_table_capacity: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            qpack_blocked_streams: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            connect_protocol_enabled: <span class="prelude-val">None</span>,
+            h3_datagram: <span class="prelude-val">None</span>,
+            grease: <span class="prelude-val">None</span>,
+            additional_settings: <span class="prelude-val">None</span>,
+            raw: <span class="prelude-val">Some</span>(raw_settings),
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = open_uni(<span class="kw-2">&amp;mut </span>b, HTTP3_CONTROL_STREAM_TYPE_ID).unwrap();
+        frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+        frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>cursor = std::io::Cursor::new(d);
+
+        parse_uni(<span class="kw-2">&amp;mut </span>stream, HTTP3_CONTROL_STREAM_TYPE_ID, <span class="kw-2">&amp;mut </span>cursor)
+            .unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FrameType);
+
+        <span class="comment">// Parse the SETTINGS frame type.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_ty = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(frame_ty, frame::SETTINGS_FRAME_TYPE_ID);
+
+        stream.set_frame_type(frame_ty).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FramePayloadLen);
+
+        <span class="comment">// Parse the SETTINGS frame payload length.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_payload_len = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(frame_payload_len, <span class="number">6</span>);
+        stream.set_frame_payload_len(frame_payload_len).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FramePayload);
+
+        <span class="comment">// Parse the SETTINGS frame payload.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="macro">assert_eq!</span>(stream.try_consume_frame(), <span class="prelude-val">Ok</span>((frame, <span class="number">6</span>)));
+        <span class="macro">assert_eq!</span>(stream.state, State::FrameType);
+
+        <span class="comment">// Parse the second SETTINGS frame type.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_ty = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(stream.set_frame_type(frame_ty), <span class="prelude-val">Err</span>(Error::FrameUnexpected));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Process other frame before SETTINGS frame on control stream.
+    </span><span class="kw">fn </span>control_bad_late_settings() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="macro">vec!</span>[<span class="number">42</span>; <span class="number">40</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">let </span>goaway = frame::Frame::GoAway { id: <span class="number">0 </span>};
+
+        <span class="kw">let </span>raw_settings = <span class="macro">vec!</span>[
+            (SETTINGS_MAX_FIELD_SECTION_SIZE, <span class="number">0</span>),
+            (SETTINGS_QPACK_MAX_TABLE_CAPACITY, <span class="number">0</span>),
+            (SETTINGS_QPACK_BLOCKED_STREAMS, <span class="number">0</span>),
+        ];
+
+        <span class="kw">let </span>settings = frame::Frame::Settings {
+            max_field_section_size: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            qpack_max_table_capacity: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            qpack_blocked_streams: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            connect_protocol_enabled: <span class="prelude-val">None</span>,
+            h3_datagram: <span class="prelude-val">None</span>,
+            grease: <span class="prelude-val">None</span>,
+            additional_settings: <span class="prelude-val">None</span>,
+            raw: <span class="prelude-val">Some</span>(raw_settings),
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = open_uni(<span class="kw-2">&amp;mut </span>b, HTTP3_CONTROL_STREAM_TYPE_ID).unwrap();
+        goaway.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+        settings.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>cursor = std::io::Cursor::new(d);
+
+        parse_uni(<span class="kw-2">&amp;mut </span>stream, HTTP3_CONTROL_STREAM_TYPE_ID, <span class="kw-2">&amp;mut </span>cursor)
+            .unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FrameType);
+
+        <span class="comment">// Parse GOAWAY.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_ty = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(stream.set_frame_type(frame_ty), <span class="prelude-val">Err</span>(Error::MissingSettings));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Process not-allowed frame on control stream.
+    </span><span class="kw">fn </span>control_bad_frame() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="macro">vec!</span>[<span class="number">42</span>; <span class="number">40</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">let </span>header_block = <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>];
+        <span class="kw">let </span>hdrs = frame::Frame::Headers { header_block };
+
+        <span class="kw">let </span>raw_settings = <span class="macro">vec!</span>[
+            (SETTINGS_MAX_FIELD_SECTION_SIZE, <span class="number">0</span>),
+            (SETTINGS_QPACK_MAX_TABLE_CAPACITY, <span class="number">0</span>),
+            (SETTINGS_QPACK_BLOCKED_STREAMS, <span class="number">0</span>),
+            (<span class="number">33</span>, <span class="number">33</span>),
+        ];
+
+        <span class="kw">let </span>settings = frame::Frame::Settings {
+            max_field_section_size: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            qpack_max_table_capacity: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            qpack_blocked_streams: <span class="prelude-val">Some</span>(<span class="number">0</span>),
+            connect_protocol_enabled: <span class="prelude-val">None</span>,
+            h3_datagram: <span class="prelude-val">None</span>,
+            grease: <span class="prelude-val">None</span>,
+            additional_settings: <span class="prelude-val">None</span>,
+            raw: <span class="prelude-val">Some</span>(raw_settings),
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = open_uni(<span class="kw-2">&amp;mut </span>b, HTTP3_CONTROL_STREAM_TYPE_ID).unwrap();
+        settings.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+        hdrs.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>cursor = std::io::Cursor::new(d);
+
+        parse_uni(<span class="kw-2">&amp;mut </span>stream, HTTP3_CONTROL_STREAM_TYPE_ID, <span class="kw-2">&amp;mut </span>cursor)
+            .unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FrameType);
+
+        <span class="comment">// Parse first SETTINGS frame.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_ty = stream.try_consume_varint().unwrap();
+        stream.set_frame_type(frame_ty).unwrap();
+
+        stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_payload_len = stream.try_consume_varint().unwrap();
+        stream.set_frame_payload_len(frame_payload_len).unwrap();
+
+        stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="macro">assert!</span>(stream.try_consume_frame().is_ok());
+
+        <span class="comment">// Parse HEADERS.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_ty = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(stream.set_frame_type(frame_ty), <span class="prelude-val">Err</span>(Error::FrameUnexpected));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>request_no_data() {
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="bool-val">false</span>);
+
+        <span class="macro">assert_eq!</span>(stream.ty, <span class="prelude-val">Some</span>(Type::Request));
+        <span class="macro">assert_eq!</span>(stream.state, State::FrameType);
+
+        <span class="macro">assert_eq!</span>(stream.try_consume_varint(), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>request_good() {
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="macro">vec!</span>[<span class="number">42</span>; <span class="number">128</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">let </span>header_block = <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>];
+        <span class="kw">let </span>payload = <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>];
+        <span class="kw">let </span>hdrs = frame::Frame::Headers { header_block };
+        <span class="kw">let </span>data = frame::Frame::Data {
+            payload: payload.clone(),
+        };
+
+        hdrs.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+        data.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>cursor = std::io::Cursor::new(d);
+
+        <span class="comment">// Parse the HEADERS frame type.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_ty = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(frame_ty, frame::HEADERS_FRAME_TYPE_ID);
+
+        stream.set_frame_type(frame_ty).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FramePayloadLen);
+
+        <span class="comment">// Parse the HEADERS frame payload length.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_payload_len = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(frame_payload_len, <span class="number">12</span>);
+
+        stream.set_frame_payload_len(frame_payload_len).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FramePayload);
+
+        <span class="comment">// Parse the HEADERS frame.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="macro">assert_eq!</span>(stream.try_consume_frame(), <span class="prelude-val">Ok</span>((hdrs, <span class="number">12</span>)));
+        <span class="macro">assert_eq!</span>(stream.state, State::FrameType);
+
+        <span class="comment">// Parse the DATA frame type.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_ty = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(frame_ty, frame::DATA_FRAME_TYPE_ID);
+
+        stream.set_frame_type(frame_ty).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FramePayloadLen);
+
+        <span class="comment">// Parse the DATA frame payload length.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_payload_len = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(frame_payload_len, <span class="number">12</span>);
+
+        stream.set_frame_payload_len(frame_payload_len).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::Data);
+
+        <span class="comment">// Parse the DATA payload.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>recv_buf = <span class="macro">vec!</span>[<span class="number">0</span>; payload.len()];
+        <span class="macro">assert_eq!</span>(
+            stream.try_consume_data_for_tests(<span class="kw-2">&amp;mut </span>cursor, <span class="kw-2">&amp;mut </span>recv_buf),
+            <span class="prelude-val">Ok</span>(payload.len())
+        );
+        <span class="macro">assert_eq!</span>(payload, recv_buf);
+
+        <span class="macro">assert_eq!</span>(stream.state, State::FrameType);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>push_good() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="macro">vec!</span>[<span class="number">42</span>; <span class="number">128</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">let </span>header_block = <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>];
+        <span class="kw">let </span>payload = <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>];
+        <span class="kw">let </span>hdrs = frame::Frame::Headers { header_block };
+        <span class="kw">let </span>data = frame::Frame::Data {
+            payload: payload.clone(),
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = open_uni(<span class="kw-2">&amp;mut </span>b, HTTP3_PUSH_STREAM_TYPE_ID).unwrap();
+        b.put_varint(<span class="number">1</span>).unwrap();
+        hdrs.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+        data.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>cursor = std::io::Cursor::new(d);
+
+        parse_uni(<span class="kw-2">&amp;mut </span>stream, HTTP3_PUSH_STREAM_TYPE_ID, <span class="kw-2">&amp;mut </span>cursor).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::PushId);
+
+        <span class="comment">// Parse push ID.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>push_id = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(push_id, <span class="number">1</span>);
+
+        stream.set_push_id(push_id).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FrameType);
+
+        <span class="comment">// Parse the HEADERS frame type.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_ty = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(frame_ty, frame::HEADERS_FRAME_TYPE_ID);
+
+        stream.set_frame_type(frame_ty).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FramePayloadLen);
+
+        <span class="comment">// Parse the HEADERS frame payload length.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_payload_len = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(frame_payload_len, <span class="number">12</span>);
+
+        stream.set_frame_payload_len(frame_payload_len).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FramePayload);
+
+        <span class="comment">// Parse the HEADERS frame.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="macro">assert_eq!</span>(stream.try_consume_frame(), <span class="prelude-val">Ok</span>((hdrs, <span class="number">12</span>)));
+        <span class="macro">assert_eq!</span>(stream.state, State::FrameType);
+
+        <span class="comment">// Parse the DATA frame type.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_ty = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(frame_ty, frame::DATA_FRAME_TYPE_ID);
+
+        stream.set_frame_type(frame_ty).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FramePayloadLen);
+
+        <span class="comment">// Parse the DATA frame payload length.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_payload_len = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(frame_payload_len, <span class="number">12</span>);
+
+        stream.set_frame_payload_len(frame_payload_len).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::Data);
+
+        <span class="comment">// Parse the DATA payload.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>recv_buf = <span class="macro">vec!</span>[<span class="number">0</span>; payload.len()];
+        <span class="macro">assert_eq!</span>(
+            stream.try_consume_data_for_tests(<span class="kw-2">&amp;mut </span>cursor, <span class="kw-2">&amp;mut </span>recv_buf),
+            <span class="prelude-val">Ok</span>(payload.len())
+        );
+        <span class="macro">assert_eq!</span>(payload, recv_buf);
+
+        <span class="macro">assert_eq!</span>(stream.state, State::FrameType);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>grease() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="macro">vec!</span>[<span class="number">42</span>; <span class="number">20</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = open_uni(<span class="kw-2">&amp;mut </span>b, <span class="number">33</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>cursor = std::io::Cursor::new(d);
+
+        <span class="comment">// Parse stream type.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>stream_ty = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(stream_ty, <span class="number">33</span>);
+        stream
+            .set_ty(Type::deserialize(stream_ty).unwrap())
+            .unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::Drain);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>data_before_headers() {
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="macro">vec!</span>[<span class="number">42</span>; <span class="number">128</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">let </span>data = frame::Frame::Data {
+            payload: <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>],
+        };
+
+        data.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>cursor = std::io::Cursor::new(d);
+
+        <span class="comment">// Parse the DATA frame type.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="kw">let </span>frame_ty = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(frame_ty, frame::DATA_FRAME_TYPE_ID);
+
+        <span class="macro">assert_eq!</span>(stream.set_frame_type(frame_ty), <span class="prelude-val">Err</span>(Error::FrameUnexpected));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>zero_length_goaway() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="macro">vec!</span>[<span class="number">42</span>; <span class="number">128</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">let </span>frame = Frame::Settings {
+            max_field_section_size: <span class="prelude-val">None</span>,
+            qpack_max_table_capacity: <span class="prelude-val">None</span>,
+            qpack_blocked_streams: <span class="prelude-val">None</span>,
+            connect_protocol_enabled: <span class="prelude-val">None</span>,
+            h3_datagram: <span class="prelude-val">None</span>,
+            grease: <span class="prelude-val">None</span>,
+            additional_settings: <span class="prelude-val">None</span>,
+            raw: <span class="prelude-val">Some</span>(<span class="macro">vec!</span>[]),
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = open_uni(<span class="kw-2">&amp;mut </span>b, HTTP3_CONTROL_STREAM_TYPE_ID).unwrap();
+        frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+
+        <span class="comment">// Write a 0-length payload frame.
+        </span>b.put_varint(frame::GOAWAY_FRAME_TYPE_ID).unwrap();
+        b.put_varint(<span class="number">0</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>cursor = std::io::Cursor::new(d);
+
+        parse_uni(<span class="kw-2">&amp;mut </span>stream, HTTP3_CONTROL_STREAM_TYPE_ID, <span class="kw-2">&amp;mut </span>cursor)
+            .unwrap();
+
+        <span class="comment">// Skip SETTINGS frame type.
+        </span>parse_skip_frame(<span class="kw-2">&amp;mut </span>stream, <span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="comment">// Parse frame type.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+        <span class="kw">let </span>frame_ty = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(frame_ty, frame::GOAWAY_FRAME_TYPE_ID);
+
+        stream.set_frame_type(frame_ty).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FramePayloadLen);
+
+        <span class="comment">// Parse frame payload length.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+        <span class="kw">let </span>frame_payload_len = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Err</span>(Error::FrameError),
+            stream.set_frame_payload_len(frame_payload_len)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>zero_length_push_promise() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="macro">vec!</span>[<span class="number">42</span>; <span class="number">128</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="bool-val">false</span>);
+
+        <span class="macro">assert_eq!</span>(stream.ty, <span class="prelude-val">Some</span>(Type::Request));
+        <span class="macro">assert_eq!</span>(stream.state, State::FrameType);
+
+        <span class="comment">// Write a 0-length payload frame.
+        </span>b.put_varint(frame::PUSH_PROMISE_FRAME_TYPE_ID).unwrap();
+        b.put_varint(<span class="number">0</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>cursor = std::io::Cursor::new(d);
+
+        <span class="comment">// Parse frame type.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+        <span class="kw">let </span>frame_ty = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(frame_ty, frame::PUSH_PROMISE_FRAME_TYPE_ID);
+
+        stream.set_frame_type(frame_ty).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FramePayloadLen);
+
+        <span class="comment">// Parse frame payload length.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+        <span class="kw">let </span>frame_payload_len = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Err</span>(Error::FrameError),
+            stream.set_frame_payload_len(frame_payload_len)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>zero_length_cancel_push() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="macro">vec!</span>[<span class="number">42</span>; <span class="number">128</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">let </span>frame = Frame::Settings {
+            max_field_section_size: <span class="prelude-val">None</span>,
+            qpack_max_table_capacity: <span class="prelude-val">None</span>,
+            qpack_blocked_streams: <span class="prelude-val">None</span>,
+            connect_protocol_enabled: <span class="prelude-val">None</span>,
+            h3_datagram: <span class="prelude-val">None</span>,
+            grease: <span class="prelude-val">None</span>,
+            additional_settings: <span class="prelude-val">None</span>,
+            raw: <span class="prelude-val">Some</span>(<span class="macro">vec!</span>[]),
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = open_uni(<span class="kw-2">&amp;mut </span>b, HTTP3_CONTROL_STREAM_TYPE_ID).unwrap();
+        frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+
+        <span class="comment">// Write a 0-length payload frame.
+        </span>b.put_varint(frame::CANCEL_PUSH_FRAME_TYPE_ID).unwrap();
+        b.put_varint(<span class="number">0</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>cursor = std::io::Cursor::new(d);
+
+        parse_uni(<span class="kw-2">&amp;mut </span>stream, HTTP3_CONTROL_STREAM_TYPE_ID, <span class="kw-2">&amp;mut </span>cursor)
+            .unwrap();
+
+        <span class="comment">// Skip SETTINGS frame type.
+        </span>parse_skip_frame(<span class="kw-2">&amp;mut </span>stream, <span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="comment">// Parse frame type.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+        <span class="kw">let </span>frame_ty = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(frame_ty, frame::CANCEL_PUSH_FRAME_TYPE_ID);
+
+        stream.set_frame_type(frame_ty).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FramePayloadLen);
+
+        <span class="comment">// Parse frame payload length.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+        <span class="kw">let </span>frame_payload_len = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Err</span>(Error::FrameError),
+            stream.set_frame_payload_len(frame_payload_len)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>zero_length_max_push_id() {
+        <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="macro">vec!</span>[<span class="number">42</span>; <span class="number">128</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+        <span class="kw">let </span>frame = Frame::Settings {
+            max_field_section_size: <span class="prelude-val">None</span>,
+            qpack_max_table_capacity: <span class="prelude-val">None</span>,
+            qpack_blocked_streams: <span class="prelude-val">None</span>,
+            connect_protocol_enabled: <span class="prelude-val">None</span>,
+            h3_datagram: <span class="prelude-val">None</span>,
+            grease: <span class="prelude-val">None</span>,
+            additional_settings: <span class="prelude-val">None</span>,
+            raw: <span class="prelude-val">Some</span>(<span class="macro">vec!</span>[]),
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = open_uni(<span class="kw-2">&amp;mut </span>b, HTTP3_CONTROL_STREAM_TYPE_ID).unwrap();
+        frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+
+        <span class="comment">// Write a 0-length payload frame.
+        </span>b.put_varint(frame::MAX_PUSH_FRAME_TYPE_ID).unwrap();
+        b.put_varint(<span class="number">0</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>cursor = std::io::Cursor::new(d);
+
+        parse_uni(<span class="kw-2">&amp;mut </span>stream, HTTP3_CONTROL_STREAM_TYPE_ID, <span class="kw-2">&amp;mut </span>cursor)
+            .unwrap();
+
+        <span class="comment">// Skip SETTINGS frame type.
+        </span>parse_skip_frame(<span class="kw-2">&amp;mut </span>stream, <span class="kw-2">&amp;mut </span>cursor).unwrap();
+
+        <span class="comment">// Parse frame type.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+        <span class="kw">let </span>frame_ty = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(frame_ty, frame::MAX_PUSH_FRAME_TYPE_ID);
+
+        stream.set_frame_type(frame_ty).unwrap();
+        <span class="macro">assert_eq!</span>(stream.state, State::FramePayloadLen);
+
+        <span class="comment">// Parse frame payload length.
+        </span>stream.try_fill_buffer_for_tests(<span class="kw-2">&amp;mut </span>cursor).unwrap();
+        <span class="kw">let </span>frame_payload_len = stream.try_consume_varint().unwrap();
+        <span class="macro">assert_eq!</span>(
+            <span class="prelude-val">Err</span>(Error::FrameError),
+            stream.set_frame_payload_len(frame_payload_len)
+        );
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/lib.rs.html b/src/quiche/lib.rs.html
new file mode 100644
index 0000000..fed4191
--- /dev/null
+++ b/src/quiche/lib.rs.html
@@ -0,0 +1,34341 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/lib.rs`."><title>lib.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+<a href="#1217" id="1217">1217</a>
+<a href="#1218" id="1218">1218</a>
+<a href="#1219" id="1219">1219</a>
+<a href="#1220" id="1220">1220</a>
+<a href="#1221" id="1221">1221</a>
+<a href="#1222" id="1222">1222</a>
+<a href="#1223" id="1223">1223</a>
+<a href="#1224" id="1224">1224</a>
+<a href="#1225" id="1225">1225</a>
+<a href="#1226" id="1226">1226</a>
+<a href="#1227" id="1227">1227</a>
+<a href="#1228" id="1228">1228</a>
+<a href="#1229" id="1229">1229</a>
+<a href="#1230" id="1230">1230</a>
+<a href="#1231" id="1231">1231</a>
+<a href="#1232" id="1232">1232</a>
+<a href="#1233" id="1233">1233</a>
+<a href="#1234" id="1234">1234</a>
+<a href="#1235" id="1235">1235</a>
+<a href="#1236" id="1236">1236</a>
+<a href="#1237" id="1237">1237</a>
+<a href="#1238" id="1238">1238</a>
+<a href="#1239" id="1239">1239</a>
+<a href="#1240" id="1240">1240</a>
+<a href="#1241" id="1241">1241</a>
+<a href="#1242" id="1242">1242</a>
+<a href="#1243" id="1243">1243</a>
+<a href="#1244" id="1244">1244</a>
+<a href="#1245" id="1245">1245</a>
+<a href="#1246" id="1246">1246</a>
+<a href="#1247" id="1247">1247</a>
+<a href="#1248" id="1248">1248</a>
+<a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</a>
+<a href="#1259" id="1259">1259</a>
+<a href="#1260" id="1260">1260</a>
+<a href="#1261" id="1261">1261</a>
+<a href="#1262" id="1262">1262</a>
+<a href="#1263" id="1263">1263</a>
+<a href="#1264" id="1264">1264</a>
+<a href="#1265" id="1265">1265</a>
+<a href="#1266" id="1266">1266</a>
+<a href="#1267" id="1267">1267</a>
+<a href="#1268" id="1268">1268</a>
+<a href="#1269" id="1269">1269</a>
+<a href="#1270" id="1270">1270</a>
+<a href="#1271" id="1271">1271</a>
+<a href="#1272" id="1272">1272</a>
+<a href="#1273" id="1273">1273</a>
+<a href="#1274" id="1274">1274</a>
+<a href="#1275" id="1275">1275</a>
+<a href="#1276" id="1276">1276</a>
+<a href="#1277" id="1277">1277</a>
+<a href="#1278" id="1278">1278</a>
+<a href="#1279" id="1279">1279</a>
+<a href="#1280" id="1280">1280</a>
+<a href="#1281" id="1281">1281</a>
+<a href="#1282" id="1282">1282</a>
+<a href="#1283" id="1283">1283</a>
+<a href="#1284" id="1284">1284</a>
+<a href="#1285" id="1285">1285</a>
+<a href="#1286" id="1286">1286</a>
+<a href="#1287" id="1287">1287</a>
+<a href="#1288" id="1288">1288</a>
+<a href="#1289" id="1289">1289</a>
+<a href="#1290" id="1290">1290</a>
+<a href="#1291" id="1291">1291</a>
+<a href="#1292" id="1292">1292</a>
+<a href="#1293" id="1293">1293</a>
+<a href="#1294" id="1294">1294</a>
+<a href="#1295" id="1295">1295</a>
+<a href="#1296" id="1296">1296</a>
+<a href="#1297" id="1297">1297</a>
+<a href="#1298" id="1298">1298</a>
+<a href="#1299" id="1299">1299</a>
+<a href="#1300" id="1300">1300</a>
+<a href="#1301" id="1301">1301</a>
+<a href="#1302" id="1302">1302</a>
+<a href="#1303" id="1303">1303</a>
+<a href="#1304" id="1304">1304</a>
+<a href="#1305" id="1305">1305</a>
+<a href="#1306" id="1306">1306</a>
+<a href="#1307" id="1307">1307</a>
+<a href="#1308" id="1308">1308</a>
+<a href="#1309" id="1309">1309</a>
+<a href="#1310" id="1310">1310</a>
+<a href="#1311" id="1311">1311</a>
+<a href="#1312" id="1312">1312</a>
+<a href="#1313" id="1313">1313</a>
+<a href="#1314" id="1314">1314</a>
+<a href="#1315" id="1315">1315</a>
+<a href="#1316" id="1316">1316</a>
+<a href="#1317" id="1317">1317</a>
+<a href="#1318" id="1318">1318</a>
+<a href="#1319" id="1319">1319</a>
+<a href="#1320" id="1320">1320</a>
+<a href="#1321" id="1321">1321</a>
+<a href="#1322" id="1322">1322</a>
+<a href="#1323" id="1323">1323</a>
+<a href="#1324" id="1324">1324</a>
+<a href="#1325" id="1325">1325</a>
+<a href="#1326" id="1326">1326</a>
+<a href="#1327" id="1327">1327</a>
+<a href="#1328" id="1328">1328</a>
+<a href="#1329" id="1329">1329</a>
+<a href="#1330" id="1330">1330</a>
+<a href="#1331" id="1331">1331</a>
+<a href="#1332" id="1332">1332</a>
+<a href="#1333" id="1333">1333</a>
+<a href="#1334" id="1334">1334</a>
+<a href="#1335" id="1335">1335</a>
+<a href="#1336" id="1336">1336</a>
+<a href="#1337" id="1337">1337</a>
+<a href="#1338" id="1338">1338</a>
+<a href="#1339" id="1339">1339</a>
+<a href="#1340" id="1340">1340</a>
+<a href="#1341" id="1341">1341</a>
+<a href="#1342" id="1342">1342</a>
+<a href="#1343" id="1343">1343</a>
+<a href="#1344" id="1344">1344</a>
+<a href="#1345" id="1345">1345</a>
+<a href="#1346" id="1346">1346</a>
+<a href="#1347" id="1347">1347</a>
+<a href="#1348" id="1348">1348</a>
+<a href="#1349" id="1349">1349</a>
+<a href="#1350" id="1350">1350</a>
+<a href="#1351" id="1351">1351</a>
+<a href="#1352" id="1352">1352</a>
+<a href="#1353" id="1353">1353</a>
+<a href="#1354" id="1354">1354</a>
+<a href="#1355" id="1355">1355</a>
+<a href="#1356" id="1356">1356</a>
+<a href="#1357" id="1357">1357</a>
+<a href="#1358" id="1358">1358</a>
+<a href="#1359" id="1359">1359</a>
+<a href="#1360" id="1360">1360</a>
+<a href="#1361" id="1361">1361</a>
+<a href="#1362" id="1362">1362</a>
+<a href="#1363" id="1363">1363</a>
+<a href="#1364" id="1364">1364</a>
+<a href="#1365" id="1365">1365</a>
+<a href="#1366" id="1366">1366</a>
+<a href="#1367" id="1367">1367</a>
+<a href="#1368" id="1368">1368</a>
+<a href="#1369" id="1369">1369</a>
+<a href="#1370" id="1370">1370</a>
+<a href="#1371" id="1371">1371</a>
+<a href="#1372" id="1372">1372</a>
+<a href="#1373" id="1373">1373</a>
+<a href="#1374" id="1374">1374</a>
+<a href="#1375" id="1375">1375</a>
+<a href="#1376" id="1376">1376</a>
+<a href="#1377" id="1377">1377</a>
+<a href="#1378" id="1378">1378</a>
+<a href="#1379" id="1379">1379</a>
+<a href="#1380" id="1380">1380</a>
+<a href="#1381" id="1381">1381</a>
+<a href="#1382" id="1382">1382</a>
+<a href="#1383" id="1383">1383</a>
+<a href="#1384" id="1384">1384</a>
+<a href="#1385" id="1385">1385</a>
+<a href="#1386" id="1386">1386</a>
+<a href="#1387" id="1387">1387</a>
+<a href="#1388" id="1388">1388</a>
+<a href="#1389" id="1389">1389</a>
+<a href="#1390" id="1390">1390</a>
+<a href="#1391" id="1391">1391</a>
+<a href="#1392" id="1392">1392</a>
+<a href="#1393" id="1393">1393</a>
+<a href="#1394" id="1394">1394</a>
+<a href="#1395" id="1395">1395</a>
+<a href="#1396" id="1396">1396</a>
+<a href="#1397" id="1397">1397</a>
+<a href="#1398" id="1398">1398</a>
+<a href="#1399" id="1399">1399</a>
+<a href="#1400" id="1400">1400</a>
+<a href="#1401" id="1401">1401</a>
+<a href="#1402" id="1402">1402</a>
+<a href="#1403" id="1403">1403</a>
+<a href="#1404" id="1404">1404</a>
+<a href="#1405" id="1405">1405</a>
+<a href="#1406" id="1406">1406</a>
+<a href="#1407" id="1407">1407</a>
+<a href="#1408" id="1408">1408</a>
+<a href="#1409" id="1409">1409</a>
+<a href="#1410" id="1410">1410</a>
+<a href="#1411" id="1411">1411</a>
+<a href="#1412" id="1412">1412</a>
+<a href="#1413" id="1413">1413</a>
+<a href="#1414" id="1414">1414</a>
+<a href="#1415" id="1415">1415</a>
+<a href="#1416" id="1416">1416</a>
+<a href="#1417" id="1417">1417</a>
+<a href="#1418" id="1418">1418</a>
+<a href="#1419" id="1419">1419</a>
+<a href="#1420" id="1420">1420</a>
+<a href="#1421" id="1421">1421</a>
+<a href="#1422" id="1422">1422</a>
+<a href="#1423" id="1423">1423</a>
+<a href="#1424" id="1424">1424</a>
+<a href="#1425" id="1425">1425</a>
+<a href="#1426" id="1426">1426</a>
+<a href="#1427" id="1427">1427</a>
+<a href="#1428" id="1428">1428</a>
+<a href="#1429" id="1429">1429</a>
+<a href="#1430" id="1430">1430</a>
+<a href="#1431" id="1431">1431</a>
+<a href="#1432" id="1432">1432</a>
+<a href="#1433" id="1433">1433</a>
+<a href="#1434" id="1434">1434</a>
+<a href="#1435" id="1435">1435</a>
+<a href="#1436" id="1436">1436</a>
+<a href="#1437" id="1437">1437</a>
+<a href="#1438" id="1438">1438</a>
+<a href="#1439" id="1439">1439</a>
+<a href="#1440" id="1440">1440</a>
+<a href="#1441" id="1441">1441</a>
+<a href="#1442" id="1442">1442</a>
+<a href="#1443" id="1443">1443</a>
+<a href="#1444" id="1444">1444</a>
+<a href="#1445" id="1445">1445</a>
+<a href="#1446" id="1446">1446</a>
+<a href="#1447" id="1447">1447</a>
+<a href="#1448" id="1448">1448</a>
+<a href="#1449" id="1449">1449</a>
+<a href="#1450" id="1450">1450</a>
+<a href="#1451" id="1451">1451</a>
+<a href="#1452" id="1452">1452</a>
+<a href="#1453" id="1453">1453</a>
+<a href="#1454" id="1454">1454</a>
+<a href="#1455" id="1455">1455</a>
+<a href="#1456" id="1456">1456</a>
+<a href="#1457" id="1457">1457</a>
+<a href="#1458" id="1458">1458</a>
+<a href="#1459" id="1459">1459</a>
+<a href="#1460" id="1460">1460</a>
+<a href="#1461" id="1461">1461</a>
+<a href="#1462" id="1462">1462</a>
+<a href="#1463" id="1463">1463</a>
+<a href="#1464" id="1464">1464</a>
+<a href="#1465" id="1465">1465</a>
+<a href="#1466" id="1466">1466</a>
+<a href="#1467" id="1467">1467</a>
+<a href="#1468" id="1468">1468</a>
+<a href="#1469" id="1469">1469</a>
+<a href="#1470" id="1470">1470</a>
+<a href="#1471" id="1471">1471</a>
+<a href="#1472" id="1472">1472</a>
+<a href="#1473" id="1473">1473</a>
+<a href="#1474" id="1474">1474</a>
+<a href="#1475" id="1475">1475</a>
+<a href="#1476" id="1476">1476</a>
+<a href="#1477" id="1477">1477</a>
+<a href="#1478" id="1478">1478</a>
+<a href="#1479" id="1479">1479</a>
+<a href="#1480" id="1480">1480</a>
+<a href="#1481" id="1481">1481</a>
+<a href="#1482" id="1482">1482</a>
+<a href="#1483" id="1483">1483</a>
+<a href="#1484" id="1484">1484</a>
+<a href="#1485" id="1485">1485</a>
+<a href="#1486" id="1486">1486</a>
+<a href="#1487" id="1487">1487</a>
+<a href="#1488" id="1488">1488</a>
+<a href="#1489" id="1489">1489</a>
+<a href="#1490" id="1490">1490</a>
+<a href="#1491" id="1491">1491</a>
+<a href="#1492" id="1492">1492</a>
+<a href="#1493" id="1493">1493</a>
+<a href="#1494" id="1494">1494</a>
+<a href="#1495" id="1495">1495</a>
+<a href="#1496" id="1496">1496</a>
+<a href="#1497" id="1497">1497</a>
+<a href="#1498" id="1498">1498</a>
+<a href="#1499" id="1499">1499</a>
+<a href="#1500" id="1500">1500</a>
+<a href="#1501" id="1501">1501</a>
+<a href="#1502" id="1502">1502</a>
+<a href="#1503" id="1503">1503</a>
+<a href="#1504" id="1504">1504</a>
+<a href="#1505" id="1505">1505</a>
+<a href="#1506" id="1506">1506</a>
+<a href="#1507" id="1507">1507</a>
+<a href="#1508" id="1508">1508</a>
+<a href="#1509" id="1509">1509</a>
+<a href="#1510" id="1510">1510</a>
+<a href="#1511" id="1511">1511</a>
+<a href="#1512" id="1512">1512</a>
+<a href="#1513" id="1513">1513</a>
+<a href="#1514" id="1514">1514</a>
+<a href="#1515" id="1515">1515</a>
+<a href="#1516" id="1516">1516</a>
+<a href="#1517" id="1517">1517</a>
+<a href="#1518" id="1518">1518</a>
+<a href="#1519" id="1519">1519</a>
+<a href="#1520" id="1520">1520</a>
+<a href="#1521" id="1521">1521</a>
+<a href="#1522" id="1522">1522</a>
+<a href="#1523" id="1523">1523</a>
+<a href="#1524" id="1524">1524</a>
+<a href="#1525" id="1525">1525</a>
+<a href="#1526" id="1526">1526</a>
+<a href="#1527" id="1527">1527</a>
+<a href="#1528" id="1528">1528</a>
+<a href="#1529" id="1529">1529</a>
+<a href="#1530" id="1530">1530</a>
+<a href="#1531" id="1531">1531</a>
+<a href="#1532" id="1532">1532</a>
+<a href="#1533" id="1533">1533</a>
+<a href="#1534" id="1534">1534</a>
+<a href="#1535" id="1535">1535</a>
+<a href="#1536" id="1536">1536</a>
+<a href="#1537" id="1537">1537</a>
+<a href="#1538" id="1538">1538</a>
+<a href="#1539" id="1539">1539</a>
+<a href="#1540" id="1540">1540</a>
+<a href="#1541" id="1541">1541</a>
+<a href="#1542" id="1542">1542</a>
+<a href="#1543" id="1543">1543</a>
+<a href="#1544" id="1544">1544</a>
+<a href="#1545" id="1545">1545</a>
+<a href="#1546" id="1546">1546</a>
+<a href="#1547" id="1547">1547</a>
+<a href="#1548" id="1548">1548</a>
+<a href="#1549" id="1549">1549</a>
+<a href="#1550" id="1550">1550</a>
+<a href="#1551" id="1551">1551</a>
+<a href="#1552" id="1552">1552</a>
+<a href="#1553" id="1553">1553</a>
+<a href="#1554" id="1554">1554</a>
+<a href="#1555" id="1555">1555</a>
+<a href="#1556" id="1556">1556</a>
+<a href="#1557" id="1557">1557</a>
+<a href="#1558" id="1558">1558</a>
+<a href="#1559" id="1559">1559</a>
+<a href="#1560" id="1560">1560</a>
+<a href="#1561" id="1561">1561</a>
+<a href="#1562" id="1562">1562</a>
+<a href="#1563" id="1563">1563</a>
+<a href="#1564" id="1564">1564</a>
+<a href="#1565" id="1565">1565</a>
+<a href="#1566" id="1566">1566</a>
+<a href="#1567" id="1567">1567</a>
+<a href="#1568" id="1568">1568</a>
+<a href="#1569" id="1569">1569</a>
+<a href="#1570" id="1570">1570</a>
+<a href="#1571" id="1571">1571</a>
+<a href="#1572" id="1572">1572</a>
+<a href="#1573" id="1573">1573</a>
+<a href="#1574" id="1574">1574</a>
+<a href="#1575" id="1575">1575</a>
+<a href="#1576" id="1576">1576</a>
+<a href="#1577" id="1577">1577</a>
+<a href="#1578" id="1578">1578</a>
+<a href="#1579" id="1579">1579</a>
+<a href="#1580" id="1580">1580</a>
+<a href="#1581" id="1581">1581</a>
+<a href="#1582" id="1582">1582</a>
+<a href="#1583" id="1583">1583</a>
+<a href="#1584" id="1584">1584</a>
+<a href="#1585" id="1585">1585</a>
+<a href="#1586" id="1586">1586</a>
+<a href="#1587" id="1587">1587</a>
+<a href="#1588" id="1588">1588</a>
+<a href="#1589" id="1589">1589</a>
+<a href="#1590" id="1590">1590</a>
+<a href="#1591" id="1591">1591</a>
+<a href="#1592" id="1592">1592</a>
+<a href="#1593" id="1593">1593</a>
+<a href="#1594" id="1594">1594</a>
+<a href="#1595" id="1595">1595</a>
+<a href="#1596" id="1596">1596</a>
+<a href="#1597" id="1597">1597</a>
+<a href="#1598" id="1598">1598</a>
+<a href="#1599" id="1599">1599</a>
+<a href="#1600" id="1600">1600</a>
+<a href="#1601" id="1601">1601</a>
+<a href="#1602" id="1602">1602</a>
+<a href="#1603" id="1603">1603</a>
+<a href="#1604" id="1604">1604</a>
+<a href="#1605" id="1605">1605</a>
+<a href="#1606" id="1606">1606</a>
+<a href="#1607" id="1607">1607</a>
+<a href="#1608" id="1608">1608</a>
+<a href="#1609" id="1609">1609</a>
+<a href="#1610" id="1610">1610</a>
+<a href="#1611" id="1611">1611</a>
+<a href="#1612" id="1612">1612</a>
+<a href="#1613" id="1613">1613</a>
+<a href="#1614" id="1614">1614</a>
+<a href="#1615" id="1615">1615</a>
+<a href="#1616" id="1616">1616</a>
+<a href="#1617" id="1617">1617</a>
+<a href="#1618" id="1618">1618</a>
+<a href="#1619" id="1619">1619</a>
+<a href="#1620" id="1620">1620</a>
+<a href="#1621" id="1621">1621</a>
+<a href="#1622" id="1622">1622</a>
+<a href="#1623" id="1623">1623</a>
+<a href="#1624" id="1624">1624</a>
+<a href="#1625" id="1625">1625</a>
+<a href="#1626" id="1626">1626</a>
+<a href="#1627" id="1627">1627</a>
+<a href="#1628" id="1628">1628</a>
+<a href="#1629" id="1629">1629</a>
+<a href="#1630" id="1630">1630</a>
+<a href="#1631" id="1631">1631</a>
+<a href="#1632" id="1632">1632</a>
+<a href="#1633" id="1633">1633</a>
+<a href="#1634" id="1634">1634</a>
+<a href="#1635" id="1635">1635</a>
+<a href="#1636" id="1636">1636</a>
+<a href="#1637" id="1637">1637</a>
+<a href="#1638" id="1638">1638</a>
+<a href="#1639" id="1639">1639</a>
+<a href="#1640" id="1640">1640</a>
+<a href="#1641" id="1641">1641</a>
+<a href="#1642" id="1642">1642</a>
+<a href="#1643" id="1643">1643</a>
+<a href="#1644" id="1644">1644</a>
+<a href="#1645" id="1645">1645</a>
+<a href="#1646" id="1646">1646</a>
+<a href="#1647" id="1647">1647</a>
+<a href="#1648" id="1648">1648</a>
+<a href="#1649" id="1649">1649</a>
+<a href="#1650" id="1650">1650</a>
+<a href="#1651" id="1651">1651</a>
+<a href="#1652" id="1652">1652</a>
+<a href="#1653" id="1653">1653</a>
+<a href="#1654" id="1654">1654</a>
+<a href="#1655" id="1655">1655</a>
+<a href="#1656" id="1656">1656</a>
+<a href="#1657" id="1657">1657</a>
+<a href="#1658" id="1658">1658</a>
+<a href="#1659" id="1659">1659</a>
+<a href="#1660" id="1660">1660</a>
+<a href="#1661" id="1661">1661</a>
+<a href="#1662" id="1662">1662</a>
+<a href="#1663" id="1663">1663</a>
+<a href="#1664" id="1664">1664</a>
+<a href="#1665" id="1665">1665</a>
+<a href="#1666" id="1666">1666</a>
+<a href="#1667" id="1667">1667</a>
+<a href="#1668" id="1668">1668</a>
+<a href="#1669" id="1669">1669</a>
+<a href="#1670" id="1670">1670</a>
+<a href="#1671" id="1671">1671</a>
+<a href="#1672" id="1672">1672</a>
+<a href="#1673" id="1673">1673</a>
+<a href="#1674" id="1674">1674</a>
+<a href="#1675" id="1675">1675</a>
+<a href="#1676" id="1676">1676</a>
+<a href="#1677" id="1677">1677</a>
+<a href="#1678" id="1678">1678</a>
+<a href="#1679" id="1679">1679</a>
+<a href="#1680" id="1680">1680</a>
+<a href="#1681" id="1681">1681</a>
+<a href="#1682" id="1682">1682</a>
+<a href="#1683" id="1683">1683</a>
+<a href="#1684" id="1684">1684</a>
+<a href="#1685" id="1685">1685</a>
+<a href="#1686" id="1686">1686</a>
+<a href="#1687" id="1687">1687</a>
+<a href="#1688" id="1688">1688</a>
+<a href="#1689" id="1689">1689</a>
+<a href="#1690" id="1690">1690</a>
+<a href="#1691" id="1691">1691</a>
+<a href="#1692" id="1692">1692</a>
+<a href="#1693" id="1693">1693</a>
+<a href="#1694" id="1694">1694</a>
+<a href="#1695" id="1695">1695</a>
+<a href="#1696" id="1696">1696</a>
+<a href="#1697" id="1697">1697</a>
+<a href="#1698" id="1698">1698</a>
+<a href="#1699" id="1699">1699</a>
+<a href="#1700" id="1700">1700</a>
+<a href="#1701" id="1701">1701</a>
+<a href="#1702" id="1702">1702</a>
+<a href="#1703" id="1703">1703</a>
+<a href="#1704" id="1704">1704</a>
+<a href="#1705" id="1705">1705</a>
+<a href="#1706" id="1706">1706</a>
+<a href="#1707" id="1707">1707</a>
+<a href="#1708" id="1708">1708</a>
+<a href="#1709" id="1709">1709</a>
+<a href="#1710" id="1710">1710</a>
+<a href="#1711" id="1711">1711</a>
+<a href="#1712" id="1712">1712</a>
+<a href="#1713" id="1713">1713</a>
+<a href="#1714" id="1714">1714</a>
+<a href="#1715" id="1715">1715</a>
+<a href="#1716" id="1716">1716</a>
+<a href="#1717" id="1717">1717</a>
+<a href="#1718" id="1718">1718</a>
+<a href="#1719" id="1719">1719</a>
+<a href="#1720" id="1720">1720</a>
+<a href="#1721" id="1721">1721</a>
+<a href="#1722" id="1722">1722</a>
+<a href="#1723" id="1723">1723</a>
+<a href="#1724" id="1724">1724</a>
+<a href="#1725" id="1725">1725</a>
+<a href="#1726" id="1726">1726</a>
+<a href="#1727" id="1727">1727</a>
+<a href="#1728" id="1728">1728</a>
+<a href="#1729" id="1729">1729</a>
+<a href="#1730" id="1730">1730</a>
+<a href="#1731" id="1731">1731</a>
+<a href="#1732" id="1732">1732</a>
+<a href="#1733" id="1733">1733</a>
+<a href="#1734" id="1734">1734</a>
+<a href="#1735" id="1735">1735</a>
+<a href="#1736" id="1736">1736</a>
+<a href="#1737" id="1737">1737</a>
+<a href="#1738" id="1738">1738</a>
+<a href="#1739" id="1739">1739</a>
+<a href="#1740" id="1740">1740</a>
+<a href="#1741" id="1741">1741</a>
+<a href="#1742" id="1742">1742</a>
+<a href="#1743" id="1743">1743</a>
+<a href="#1744" id="1744">1744</a>
+<a href="#1745" id="1745">1745</a>
+<a href="#1746" id="1746">1746</a>
+<a href="#1747" id="1747">1747</a>
+<a href="#1748" id="1748">1748</a>
+<a href="#1749" id="1749">1749</a>
+<a href="#1750" id="1750">1750</a>
+<a href="#1751" id="1751">1751</a>
+<a href="#1752" id="1752">1752</a>
+<a href="#1753" id="1753">1753</a>
+<a href="#1754" id="1754">1754</a>
+<a href="#1755" id="1755">1755</a>
+<a href="#1756" id="1756">1756</a>
+<a href="#1757" id="1757">1757</a>
+<a href="#1758" id="1758">1758</a>
+<a href="#1759" id="1759">1759</a>
+<a href="#1760" id="1760">1760</a>
+<a href="#1761" id="1761">1761</a>
+<a href="#1762" id="1762">1762</a>
+<a href="#1763" id="1763">1763</a>
+<a href="#1764" id="1764">1764</a>
+<a href="#1765" id="1765">1765</a>
+<a href="#1766" id="1766">1766</a>
+<a href="#1767" id="1767">1767</a>
+<a href="#1768" id="1768">1768</a>
+<a href="#1769" id="1769">1769</a>
+<a href="#1770" id="1770">1770</a>
+<a href="#1771" id="1771">1771</a>
+<a href="#1772" id="1772">1772</a>
+<a href="#1773" id="1773">1773</a>
+<a href="#1774" id="1774">1774</a>
+<a href="#1775" id="1775">1775</a>
+<a href="#1776" id="1776">1776</a>
+<a href="#1777" id="1777">1777</a>
+<a href="#1778" id="1778">1778</a>
+<a href="#1779" id="1779">1779</a>
+<a href="#1780" id="1780">1780</a>
+<a href="#1781" id="1781">1781</a>
+<a href="#1782" id="1782">1782</a>
+<a href="#1783" id="1783">1783</a>
+<a href="#1784" id="1784">1784</a>
+<a href="#1785" id="1785">1785</a>
+<a href="#1786" id="1786">1786</a>
+<a href="#1787" id="1787">1787</a>
+<a href="#1788" id="1788">1788</a>
+<a href="#1789" id="1789">1789</a>
+<a href="#1790" id="1790">1790</a>
+<a href="#1791" id="1791">1791</a>
+<a href="#1792" id="1792">1792</a>
+<a href="#1793" id="1793">1793</a>
+<a href="#1794" id="1794">1794</a>
+<a href="#1795" id="1795">1795</a>
+<a href="#1796" id="1796">1796</a>
+<a href="#1797" id="1797">1797</a>
+<a href="#1798" id="1798">1798</a>
+<a href="#1799" id="1799">1799</a>
+<a href="#1800" id="1800">1800</a>
+<a href="#1801" id="1801">1801</a>
+<a href="#1802" id="1802">1802</a>
+<a href="#1803" id="1803">1803</a>
+<a href="#1804" id="1804">1804</a>
+<a href="#1805" id="1805">1805</a>
+<a href="#1806" id="1806">1806</a>
+<a href="#1807" id="1807">1807</a>
+<a href="#1808" id="1808">1808</a>
+<a href="#1809" id="1809">1809</a>
+<a href="#1810" id="1810">1810</a>
+<a href="#1811" id="1811">1811</a>
+<a href="#1812" id="1812">1812</a>
+<a href="#1813" id="1813">1813</a>
+<a href="#1814" id="1814">1814</a>
+<a href="#1815" id="1815">1815</a>
+<a href="#1816" id="1816">1816</a>
+<a href="#1817" id="1817">1817</a>
+<a href="#1818" id="1818">1818</a>
+<a href="#1819" id="1819">1819</a>
+<a href="#1820" id="1820">1820</a>
+<a href="#1821" id="1821">1821</a>
+<a href="#1822" id="1822">1822</a>
+<a href="#1823" id="1823">1823</a>
+<a href="#1824" id="1824">1824</a>
+<a href="#1825" id="1825">1825</a>
+<a href="#1826" id="1826">1826</a>
+<a href="#1827" id="1827">1827</a>
+<a href="#1828" id="1828">1828</a>
+<a href="#1829" id="1829">1829</a>
+<a href="#1830" id="1830">1830</a>
+<a href="#1831" id="1831">1831</a>
+<a href="#1832" id="1832">1832</a>
+<a href="#1833" id="1833">1833</a>
+<a href="#1834" id="1834">1834</a>
+<a href="#1835" id="1835">1835</a>
+<a href="#1836" id="1836">1836</a>
+<a href="#1837" id="1837">1837</a>
+<a href="#1838" id="1838">1838</a>
+<a href="#1839" id="1839">1839</a>
+<a href="#1840" id="1840">1840</a>
+<a href="#1841" id="1841">1841</a>
+<a href="#1842" id="1842">1842</a>
+<a href="#1843" id="1843">1843</a>
+<a href="#1844" id="1844">1844</a>
+<a href="#1845" id="1845">1845</a>
+<a href="#1846" id="1846">1846</a>
+<a href="#1847" id="1847">1847</a>
+<a href="#1848" id="1848">1848</a>
+<a href="#1849" id="1849">1849</a>
+<a href="#1850" id="1850">1850</a>
+<a href="#1851" id="1851">1851</a>
+<a href="#1852" id="1852">1852</a>
+<a href="#1853" id="1853">1853</a>
+<a href="#1854" id="1854">1854</a>
+<a href="#1855" id="1855">1855</a>
+<a href="#1856" id="1856">1856</a>
+<a href="#1857" id="1857">1857</a>
+<a href="#1858" id="1858">1858</a>
+<a href="#1859" id="1859">1859</a>
+<a href="#1860" id="1860">1860</a>
+<a href="#1861" id="1861">1861</a>
+<a href="#1862" id="1862">1862</a>
+<a href="#1863" id="1863">1863</a>
+<a href="#1864" id="1864">1864</a>
+<a href="#1865" id="1865">1865</a>
+<a href="#1866" id="1866">1866</a>
+<a href="#1867" id="1867">1867</a>
+<a href="#1868" id="1868">1868</a>
+<a href="#1869" id="1869">1869</a>
+<a href="#1870" id="1870">1870</a>
+<a href="#1871" id="1871">1871</a>
+<a href="#1872" id="1872">1872</a>
+<a href="#1873" id="1873">1873</a>
+<a href="#1874" id="1874">1874</a>
+<a href="#1875" id="1875">1875</a>
+<a href="#1876" id="1876">1876</a>
+<a href="#1877" id="1877">1877</a>
+<a href="#1878" id="1878">1878</a>
+<a href="#1879" id="1879">1879</a>
+<a href="#1880" id="1880">1880</a>
+<a href="#1881" id="1881">1881</a>
+<a href="#1882" id="1882">1882</a>
+<a href="#1883" id="1883">1883</a>
+<a href="#1884" id="1884">1884</a>
+<a href="#1885" id="1885">1885</a>
+<a href="#1886" id="1886">1886</a>
+<a href="#1887" id="1887">1887</a>
+<a href="#1888" id="1888">1888</a>
+<a href="#1889" id="1889">1889</a>
+<a href="#1890" id="1890">1890</a>
+<a href="#1891" id="1891">1891</a>
+<a href="#1892" id="1892">1892</a>
+<a href="#1893" id="1893">1893</a>
+<a href="#1894" id="1894">1894</a>
+<a href="#1895" id="1895">1895</a>
+<a href="#1896" id="1896">1896</a>
+<a href="#1897" id="1897">1897</a>
+<a href="#1898" id="1898">1898</a>
+<a href="#1899" id="1899">1899</a>
+<a href="#1900" id="1900">1900</a>
+<a href="#1901" id="1901">1901</a>
+<a href="#1902" id="1902">1902</a>
+<a href="#1903" id="1903">1903</a>
+<a href="#1904" id="1904">1904</a>
+<a href="#1905" id="1905">1905</a>
+<a href="#1906" id="1906">1906</a>
+<a href="#1907" id="1907">1907</a>
+<a href="#1908" id="1908">1908</a>
+<a href="#1909" id="1909">1909</a>
+<a href="#1910" id="1910">1910</a>
+<a href="#1911" id="1911">1911</a>
+<a href="#1912" id="1912">1912</a>
+<a href="#1913" id="1913">1913</a>
+<a href="#1914" id="1914">1914</a>
+<a href="#1915" id="1915">1915</a>
+<a href="#1916" id="1916">1916</a>
+<a href="#1917" id="1917">1917</a>
+<a href="#1918" id="1918">1918</a>
+<a href="#1919" id="1919">1919</a>
+<a href="#1920" id="1920">1920</a>
+<a href="#1921" id="1921">1921</a>
+<a href="#1922" id="1922">1922</a>
+<a href="#1923" id="1923">1923</a>
+<a href="#1924" id="1924">1924</a>
+<a href="#1925" id="1925">1925</a>
+<a href="#1926" id="1926">1926</a>
+<a href="#1927" id="1927">1927</a>
+<a href="#1928" id="1928">1928</a>
+<a href="#1929" id="1929">1929</a>
+<a href="#1930" id="1930">1930</a>
+<a href="#1931" id="1931">1931</a>
+<a href="#1932" id="1932">1932</a>
+<a href="#1933" id="1933">1933</a>
+<a href="#1934" id="1934">1934</a>
+<a href="#1935" id="1935">1935</a>
+<a href="#1936" id="1936">1936</a>
+<a href="#1937" id="1937">1937</a>
+<a href="#1938" id="1938">1938</a>
+<a href="#1939" id="1939">1939</a>
+<a href="#1940" id="1940">1940</a>
+<a href="#1941" id="1941">1941</a>
+<a href="#1942" id="1942">1942</a>
+<a href="#1943" id="1943">1943</a>
+<a href="#1944" id="1944">1944</a>
+<a href="#1945" id="1945">1945</a>
+<a href="#1946" id="1946">1946</a>
+<a href="#1947" id="1947">1947</a>
+<a href="#1948" id="1948">1948</a>
+<a href="#1949" id="1949">1949</a>
+<a href="#1950" id="1950">1950</a>
+<a href="#1951" id="1951">1951</a>
+<a href="#1952" id="1952">1952</a>
+<a href="#1953" id="1953">1953</a>
+<a href="#1954" id="1954">1954</a>
+<a href="#1955" id="1955">1955</a>
+<a href="#1956" id="1956">1956</a>
+<a href="#1957" id="1957">1957</a>
+<a href="#1958" id="1958">1958</a>
+<a href="#1959" id="1959">1959</a>
+<a href="#1960" id="1960">1960</a>
+<a href="#1961" id="1961">1961</a>
+<a href="#1962" id="1962">1962</a>
+<a href="#1963" id="1963">1963</a>
+<a href="#1964" id="1964">1964</a>
+<a href="#1965" id="1965">1965</a>
+<a href="#1966" id="1966">1966</a>
+<a href="#1967" id="1967">1967</a>
+<a href="#1968" id="1968">1968</a>
+<a href="#1969" id="1969">1969</a>
+<a href="#1970" id="1970">1970</a>
+<a href="#1971" id="1971">1971</a>
+<a href="#1972" id="1972">1972</a>
+<a href="#1973" id="1973">1973</a>
+<a href="#1974" id="1974">1974</a>
+<a href="#1975" id="1975">1975</a>
+<a href="#1976" id="1976">1976</a>
+<a href="#1977" id="1977">1977</a>
+<a href="#1978" id="1978">1978</a>
+<a href="#1979" id="1979">1979</a>
+<a href="#1980" id="1980">1980</a>
+<a href="#1981" id="1981">1981</a>
+<a href="#1982" id="1982">1982</a>
+<a href="#1983" id="1983">1983</a>
+<a href="#1984" id="1984">1984</a>
+<a href="#1985" id="1985">1985</a>
+<a href="#1986" id="1986">1986</a>
+<a href="#1987" id="1987">1987</a>
+<a href="#1988" id="1988">1988</a>
+<a href="#1989" id="1989">1989</a>
+<a href="#1990" id="1990">1990</a>
+<a href="#1991" id="1991">1991</a>
+<a href="#1992" id="1992">1992</a>
+<a href="#1993" id="1993">1993</a>
+<a href="#1994" id="1994">1994</a>
+<a href="#1995" id="1995">1995</a>
+<a href="#1996" id="1996">1996</a>
+<a href="#1997" id="1997">1997</a>
+<a href="#1998" id="1998">1998</a>
+<a href="#1999" id="1999">1999</a>
+<a href="#2000" id="2000">2000</a>
+<a href="#2001" id="2001">2001</a>
+<a href="#2002" id="2002">2002</a>
+<a href="#2003" id="2003">2003</a>
+<a href="#2004" id="2004">2004</a>
+<a href="#2005" id="2005">2005</a>
+<a href="#2006" id="2006">2006</a>
+<a href="#2007" id="2007">2007</a>
+<a href="#2008" id="2008">2008</a>
+<a href="#2009" id="2009">2009</a>
+<a href="#2010" id="2010">2010</a>
+<a href="#2011" id="2011">2011</a>
+<a href="#2012" id="2012">2012</a>
+<a href="#2013" id="2013">2013</a>
+<a href="#2014" id="2014">2014</a>
+<a href="#2015" id="2015">2015</a>
+<a href="#2016" id="2016">2016</a>
+<a href="#2017" id="2017">2017</a>
+<a href="#2018" id="2018">2018</a>
+<a href="#2019" id="2019">2019</a>
+<a href="#2020" id="2020">2020</a>
+<a href="#2021" id="2021">2021</a>
+<a href="#2022" id="2022">2022</a>
+<a href="#2023" id="2023">2023</a>
+<a href="#2024" id="2024">2024</a>
+<a href="#2025" id="2025">2025</a>
+<a href="#2026" id="2026">2026</a>
+<a href="#2027" id="2027">2027</a>
+<a href="#2028" id="2028">2028</a>
+<a href="#2029" id="2029">2029</a>
+<a href="#2030" id="2030">2030</a>
+<a href="#2031" id="2031">2031</a>
+<a href="#2032" id="2032">2032</a>
+<a href="#2033" id="2033">2033</a>
+<a href="#2034" id="2034">2034</a>
+<a href="#2035" id="2035">2035</a>
+<a href="#2036" id="2036">2036</a>
+<a href="#2037" id="2037">2037</a>
+<a href="#2038" id="2038">2038</a>
+<a href="#2039" id="2039">2039</a>
+<a href="#2040" id="2040">2040</a>
+<a href="#2041" id="2041">2041</a>
+<a href="#2042" id="2042">2042</a>
+<a href="#2043" id="2043">2043</a>
+<a href="#2044" id="2044">2044</a>
+<a href="#2045" id="2045">2045</a>
+<a href="#2046" id="2046">2046</a>
+<a href="#2047" id="2047">2047</a>
+<a href="#2048" id="2048">2048</a>
+<a href="#2049" id="2049">2049</a>
+<a href="#2050" id="2050">2050</a>
+<a href="#2051" id="2051">2051</a>
+<a href="#2052" id="2052">2052</a>
+<a href="#2053" id="2053">2053</a>
+<a href="#2054" id="2054">2054</a>
+<a href="#2055" id="2055">2055</a>
+<a href="#2056" id="2056">2056</a>
+<a href="#2057" id="2057">2057</a>
+<a href="#2058" id="2058">2058</a>
+<a href="#2059" id="2059">2059</a>
+<a href="#2060" id="2060">2060</a>
+<a href="#2061" id="2061">2061</a>
+<a href="#2062" id="2062">2062</a>
+<a href="#2063" id="2063">2063</a>
+<a href="#2064" id="2064">2064</a>
+<a href="#2065" id="2065">2065</a>
+<a href="#2066" id="2066">2066</a>
+<a href="#2067" id="2067">2067</a>
+<a href="#2068" id="2068">2068</a>
+<a href="#2069" id="2069">2069</a>
+<a href="#2070" id="2070">2070</a>
+<a href="#2071" id="2071">2071</a>
+<a href="#2072" id="2072">2072</a>
+<a href="#2073" id="2073">2073</a>
+<a href="#2074" id="2074">2074</a>
+<a href="#2075" id="2075">2075</a>
+<a href="#2076" id="2076">2076</a>
+<a href="#2077" id="2077">2077</a>
+<a href="#2078" id="2078">2078</a>
+<a href="#2079" id="2079">2079</a>
+<a href="#2080" id="2080">2080</a>
+<a href="#2081" id="2081">2081</a>
+<a href="#2082" id="2082">2082</a>
+<a href="#2083" id="2083">2083</a>
+<a href="#2084" id="2084">2084</a>
+<a href="#2085" id="2085">2085</a>
+<a href="#2086" id="2086">2086</a>
+<a href="#2087" id="2087">2087</a>
+<a href="#2088" id="2088">2088</a>
+<a href="#2089" id="2089">2089</a>
+<a href="#2090" id="2090">2090</a>
+<a href="#2091" id="2091">2091</a>
+<a href="#2092" id="2092">2092</a>
+<a href="#2093" id="2093">2093</a>
+<a href="#2094" id="2094">2094</a>
+<a href="#2095" id="2095">2095</a>
+<a href="#2096" id="2096">2096</a>
+<a href="#2097" id="2097">2097</a>
+<a href="#2098" id="2098">2098</a>
+<a href="#2099" id="2099">2099</a>
+<a href="#2100" id="2100">2100</a>
+<a href="#2101" id="2101">2101</a>
+<a href="#2102" id="2102">2102</a>
+<a href="#2103" id="2103">2103</a>
+<a href="#2104" id="2104">2104</a>
+<a href="#2105" id="2105">2105</a>
+<a href="#2106" id="2106">2106</a>
+<a href="#2107" id="2107">2107</a>
+<a href="#2108" id="2108">2108</a>
+<a href="#2109" id="2109">2109</a>
+<a href="#2110" id="2110">2110</a>
+<a href="#2111" id="2111">2111</a>
+<a href="#2112" id="2112">2112</a>
+<a href="#2113" id="2113">2113</a>
+<a href="#2114" id="2114">2114</a>
+<a href="#2115" id="2115">2115</a>
+<a href="#2116" id="2116">2116</a>
+<a href="#2117" id="2117">2117</a>
+<a href="#2118" id="2118">2118</a>
+<a href="#2119" id="2119">2119</a>
+<a href="#2120" id="2120">2120</a>
+<a href="#2121" id="2121">2121</a>
+<a href="#2122" id="2122">2122</a>
+<a href="#2123" id="2123">2123</a>
+<a href="#2124" id="2124">2124</a>
+<a href="#2125" id="2125">2125</a>
+<a href="#2126" id="2126">2126</a>
+<a href="#2127" id="2127">2127</a>
+<a href="#2128" id="2128">2128</a>
+<a href="#2129" id="2129">2129</a>
+<a href="#2130" id="2130">2130</a>
+<a href="#2131" id="2131">2131</a>
+<a href="#2132" id="2132">2132</a>
+<a href="#2133" id="2133">2133</a>
+<a href="#2134" id="2134">2134</a>
+<a href="#2135" id="2135">2135</a>
+<a href="#2136" id="2136">2136</a>
+<a href="#2137" id="2137">2137</a>
+<a href="#2138" id="2138">2138</a>
+<a href="#2139" id="2139">2139</a>
+<a href="#2140" id="2140">2140</a>
+<a href="#2141" id="2141">2141</a>
+<a href="#2142" id="2142">2142</a>
+<a href="#2143" id="2143">2143</a>
+<a href="#2144" id="2144">2144</a>
+<a href="#2145" id="2145">2145</a>
+<a href="#2146" id="2146">2146</a>
+<a href="#2147" id="2147">2147</a>
+<a href="#2148" id="2148">2148</a>
+<a href="#2149" id="2149">2149</a>
+<a href="#2150" id="2150">2150</a>
+<a href="#2151" id="2151">2151</a>
+<a href="#2152" id="2152">2152</a>
+<a href="#2153" id="2153">2153</a>
+<a href="#2154" id="2154">2154</a>
+<a href="#2155" id="2155">2155</a>
+<a href="#2156" id="2156">2156</a>
+<a href="#2157" id="2157">2157</a>
+<a href="#2158" id="2158">2158</a>
+<a href="#2159" id="2159">2159</a>
+<a href="#2160" id="2160">2160</a>
+<a href="#2161" id="2161">2161</a>
+<a href="#2162" id="2162">2162</a>
+<a href="#2163" id="2163">2163</a>
+<a href="#2164" id="2164">2164</a>
+<a href="#2165" id="2165">2165</a>
+<a href="#2166" id="2166">2166</a>
+<a href="#2167" id="2167">2167</a>
+<a href="#2168" id="2168">2168</a>
+<a href="#2169" id="2169">2169</a>
+<a href="#2170" id="2170">2170</a>
+<a href="#2171" id="2171">2171</a>
+<a href="#2172" id="2172">2172</a>
+<a href="#2173" id="2173">2173</a>
+<a href="#2174" id="2174">2174</a>
+<a href="#2175" id="2175">2175</a>
+<a href="#2176" id="2176">2176</a>
+<a href="#2177" id="2177">2177</a>
+<a href="#2178" id="2178">2178</a>
+<a href="#2179" id="2179">2179</a>
+<a href="#2180" id="2180">2180</a>
+<a href="#2181" id="2181">2181</a>
+<a href="#2182" id="2182">2182</a>
+<a href="#2183" id="2183">2183</a>
+<a href="#2184" id="2184">2184</a>
+<a href="#2185" id="2185">2185</a>
+<a href="#2186" id="2186">2186</a>
+<a href="#2187" id="2187">2187</a>
+<a href="#2188" id="2188">2188</a>
+<a href="#2189" id="2189">2189</a>
+<a href="#2190" id="2190">2190</a>
+<a href="#2191" id="2191">2191</a>
+<a href="#2192" id="2192">2192</a>
+<a href="#2193" id="2193">2193</a>
+<a href="#2194" id="2194">2194</a>
+<a href="#2195" id="2195">2195</a>
+<a href="#2196" id="2196">2196</a>
+<a href="#2197" id="2197">2197</a>
+<a href="#2198" id="2198">2198</a>
+<a href="#2199" id="2199">2199</a>
+<a href="#2200" id="2200">2200</a>
+<a href="#2201" id="2201">2201</a>
+<a href="#2202" id="2202">2202</a>
+<a href="#2203" id="2203">2203</a>
+<a href="#2204" id="2204">2204</a>
+<a href="#2205" id="2205">2205</a>
+<a href="#2206" id="2206">2206</a>
+<a href="#2207" id="2207">2207</a>
+<a href="#2208" id="2208">2208</a>
+<a href="#2209" id="2209">2209</a>
+<a href="#2210" id="2210">2210</a>
+<a href="#2211" id="2211">2211</a>
+<a href="#2212" id="2212">2212</a>
+<a href="#2213" id="2213">2213</a>
+<a href="#2214" id="2214">2214</a>
+<a href="#2215" id="2215">2215</a>
+<a href="#2216" id="2216">2216</a>
+<a href="#2217" id="2217">2217</a>
+<a href="#2218" id="2218">2218</a>
+<a href="#2219" id="2219">2219</a>
+<a href="#2220" id="2220">2220</a>
+<a href="#2221" id="2221">2221</a>
+<a href="#2222" id="2222">2222</a>
+<a href="#2223" id="2223">2223</a>
+<a href="#2224" id="2224">2224</a>
+<a href="#2225" id="2225">2225</a>
+<a href="#2226" id="2226">2226</a>
+<a href="#2227" id="2227">2227</a>
+<a href="#2228" id="2228">2228</a>
+<a href="#2229" id="2229">2229</a>
+<a href="#2230" id="2230">2230</a>
+<a href="#2231" id="2231">2231</a>
+<a href="#2232" id="2232">2232</a>
+<a href="#2233" id="2233">2233</a>
+<a href="#2234" id="2234">2234</a>
+<a href="#2235" id="2235">2235</a>
+<a href="#2236" id="2236">2236</a>
+<a href="#2237" id="2237">2237</a>
+<a href="#2238" id="2238">2238</a>
+<a href="#2239" id="2239">2239</a>
+<a href="#2240" id="2240">2240</a>
+<a href="#2241" id="2241">2241</a>
+<a href="#2242" id="2242">2242</a>
+<a href="#2243" id="2243">2243</a>
+<a href="#2244" id="2244">2244</a>
+<a href="#2245" id="2245">2245</a>
+<a href="#2246" id="2246">2246</a>
+<a href="#2247" id="2247">2247</a>
+<a href="#2248" id="2248">2248</a>
+<a href="#2249" id="2249">2249</a>
+<a href="#2250" id="2250">2250</a>
+<a href="#2251" id="2251">2251</a>
+<a href="#2252" id="2252">2252</a>
+<a href="#2253" id="2253">2253</a>
+<a href="#2254" id="2254">2254</a>
+<a href="#2255" id="2255">2255</a>
+<a href="#2256" id="2256">2256</a>
+<a href="#2257" id="2257">2257</a>
+<a href="#2258" id="2258">2258</a>
+<a href="#2259" id="2259">2259</a>
+<a href="#2260" id="2260">2260</a>
+<a href="#2261" id="2261">2261</a>
+<a href="#2262" id="2262">2262</a>
+<a href="#2263" id="2263">2263</a>
+<a href="#2264" id="2264">2264</a>
+<a href="#2265" id="2265">2265</a>
+<a href="#2266" id="2266">2266</a>
+<a href="#2267" id="2267">2267</a>
+<a href="#2268" id="2268">2268</a>
+<a href="#2269" id="2269">2269</a>
+<a href="#2270" id="2270">2270</a>
+<a href="#2271" id="2271">2271</a>
+<a href="#2272" id="2272">2272</a>
+<a href="#2273" id="2273">2273</a>
+<a href="#2274" id="2274">2274</a>
+<a href="#2275" id="2275">2275</a>
+<a href="#2276" id="2276">2276</a>
+<a href="#2277" id="2277">2277</a>
+<a href="#2278" id="2278">2278</a>
+<a href="#2279" id="2279">2279</a>
+<a href="#2280" id="2280">2280</a>
+<a href="#2281" id="2281">2281</a>
+<a href="#2282" id="2282">2282</a>
+<a href="#2283" id="2283">2283</a>
+<a href="#2284" id="2284">2284</a>
+<a href="#2285" id="2285">2285</a>
+<a href="#2286" id="2286">2286</a>
+<a href="#2287" id="2287">2287</a>
+<a href="#2288" id="2288">2288</a>
+<a href="#2289" id="2289">2289</a>
+<a href="#2290" id="2290">2290</a>
+<a href="#2291" id="2291">2291</a>
+<a href="#2292" id="2292">2292</a>
+<a href="#2293" id="2293">2293</a>
+<a href="#2294" id="2294">2294</a>
+<a href="#2295" id="2295">2295</a>
+<a href="#2296" id="2296">2296</a>
+<a href="#2297" id="2297">2297</a>
+<a href="#2298" id="2298">2298</a>
+<a href="#2299" id="2299">2299</a>
+<a href="#2300" id="2300">2300</a>
+<a href="#2301" id="2301">2301</a>
+<a href="#2302" id="2302">2302</a>
+<a href="#2303" id="2303">2303</a>
+<a href="#2304" id="2304">2304</a>
+<a href="#2305" id="2305">2305</a>
+<a href="#2306" id="2306">2306</a>
+<a href="#2307" id="2307">2307</a>
+<a href="#2308" id="2308">2308</a>
+<a href="#2309" id="2309">2309</a>
+<a href="#2310" id="2310">2310</a>
+<a href="#2311" id="2311">2311</a>
+<a href="#2312" id="2312">2312</a>
+<a href="#2313" id="2313">2313</a>
+<a href="#2314" id="2314">2314</a>
+<a href="#2315" id="2315">2315</a>
+<a href="#2316" id="2316">2316</a>
+<a href="#2317" id="2317">2317</a>
+<a href="#2318" id="2318">2318</a>
+<a href="#2319" id="2319">2319</a>
+<a href="#2320" id="2320">2320</a>
+<a href="#2321" id="2321">2321</a>
+<a href="#2322" id="2322">2322</a>
+<a href="#2323" id="2323">2323</a>
+<a href="#2324" id="2324">2324</a>
+<a href="#2325" id="2325">2325</a>
+<a href="#2326" id="2326">2326</a>
+<a href="#2327" id="2327">2327</a>
+<a href="#2328" id="2328">2328</a>
+<a href="#2329" id="2329">2329</a>
+<a href="#2330" id="2330">2330</a>
+<a href="#2331" id="2331">2331</a>
+<a href="#2332" id="2332">2332</a>
+<a href="#2333" id="2333">2333</a>
+<a href="#2334" id="2334">2334</a>
+<a href="#2335" id="2335">2335</a>
+<a href="#2336" id="2336">2336</a>
+<a href="#2337" id="2337">2337</a>
+<a href="#2338" id="2338">2338</a>
+<a href="#2339" id="2339">2339</a>
+<a href="#2340" id="2340">2340</a>
+<a href="#2341" id="2341">2341</a>
+<a href="#2342" id="2342">2342</a>
+<a href="#2343" id="2343">2343</a>
+<a href="#2344" id="2344">2344</a>
+<a href="#2345" id="2345">2345</a>
+<a href="#2346" id="2346">2346</a>
+<a href="#2347" id="2347">2347</a>
+<a href="#2348" id="2348">2348</a>
+<a href="#2349" id="2349">2349</a>
+<a href="#2350" id="2350">2350</a>
+<a href="#2351" id="2351">2351</a>
+<a href="#2352" id="2352">2352</a>
+<a href="#2353" id="2353">2353</a>
+<a href="#2354" id="2354">2354</a>
+<a href="#2355" id="2355">2355</a>
+<a href="#2356" id="2356">2356</a>
+<a href="#2357" id="2357">2357</a>
+<a href="#2358" id="2358">2358</a>
+<a href="#2359" id="2359">2359</a>
+<a href="#2360" id="2360">2360</a>
+<a href="#2361" id="2361">2361</a>
+<a href="#2362" id="2362">2362</a>
+<a href="#2363" id="2363">2363</a>
+<a href="#2364" id="2364">2364</a>
+<a href="#2365" id="2365">2365</a>
+<a href="#2366" id="2366">2366</a>
+<a href="#2367" id="2367">2367</a>
+<a href="#2368" id="2368">2368</a>
+<a href="#2369" id="2369">2369</a>
+<a href="#2370" id="2370">2370</a>
+<a href="#2371" id="2371">2371</a>
+<a href="#2372" id="2372">2372</a>
+<a href="#2373" id="2373">2373</a>
+<a href="#2374" id="2374">2374</a>
+<a href="#2375" id="2375">2375</a>
+<a href="#2376" id="2376">2376</a>
+<a href="#2377" id="2377">2377</a>
+<a href="#2378" id="2378">2378</a>
+<a href="#2379" id="2379">2379</a>
+<a href="#2380" id="2380">2380</a>
+<a href="#2381" id="2381">2381</a>
+<a href="#2382" id="2382">2382</a>
+<a href="#2383" id="2383">2383</a>
+<a href="#2384" id="2384">2384</a>
+<a href="#2385" id="2385">2385</a>
+<a href="#2386" id="2386">2386</a>
+<a href="#2387" id="2387">2387</a>
+<a href="#2388" id="2388">2388</a>
+<a href="#2389" id="2389">2389</a>
+<a href="#2390" id="2390">2390</a>
+<a href="#2391" id="2391">2391</a>
+<a href="#2392" id="2392">2392</a>
+<a href="#2393" id="2393">2393</a>
+<a href="#2394" id="2394">2394</a>
+<a href="#2395" id="2395">2395</a>
+<a href="#2396" id="2396">2396</a>
+<a href="#2397" id="2397">2397</a>
+<a href="#2398" id="2398">2398</a>
+<a href="#2399" id="2399">2399</a>
+<a href="#2400" id="2400">2400</a>
+<a href="#2401" id="2401">2401</a>
+<a href="#2402" id="2402">2402</a>
+<a href="#2403" id="2403">2403</a>
+<a href="#2404" id="2404">2404</a>
+<a href="#2405" id="2405">2405</a>
+<a href="#2406" id="2406">2406</a>
+<a href="#2407" id="2407">2407</a>
+<a href="#2408" id="2408">2408</a>
+<a href="#2409" id="2409">2409</a>
+<a href="#2410" id="2410">2410</a>
+<a href="#2411" id="2411">2411</a>
+<a href="#2412" id="2412">2412</a>
+<a href="#2413" id="2413">2413</a>
+<a href="#2414" id="2414">2414</a>
+<a href="#2415" id="2415">2415</a>
+<a href="#2416" id="2416">2416</a>
+<a href="#2417" id="2417">2417</a>
+<a href="#2418" id="2418">2418</a>
+<a href="#2419" id="2419">2419</a>
+<a href="#2420" id="2420">2420</a>
+<a href="#2421" id="2421">2421</a>
+<a href="#2422" id="2422">2422</a>
+<a href="#2423" id="2423">2423</a>
+<a href="#2424" id="2424">2424</a>
+<a href="#2425" id="2425">2425</a>
+<a href="#2426" id="2426">2426</a>
+<a href="#2427" id="2427">2427</a>
+<a href="#2428" id="2428">2428</a>
+<a href="#2429" id="2429">2429</a>
+<a href="#2430" id="2430">2430</a>
+<a href="#2431" id="2431">2431</a>
+<a href="#2432" id="2432">2432</a>
+<a href="#2433" id="2433">2433</a>
+<a href="#2434" id="2434">2434</a>
+<a href="#2435" id="2435">2435</a>
+<a href="#2436" id="2436">2436</a>
+<a href="#2437" id="2437">2437</a>
+<a href="#2438" id="2438">2438</a>
+<a href="#2439" id="2439">2439</a>
+<a href="#2440" id="2440">2440</a>
+<a href="#2441" id="2441">2441</a>
+<a href="#2442" id="2442">2442</a>
+<a href="#2443" id="2443">2443</a>
+<a href="#2444" id="2444">2444</a>
+<a href="#2445" id="2445">2445</a>
+<a href="#2446" id="2446">2446</a>
+<a href="#2447" id="2447">2447</a>
+<a href="#2448" id="2448">2448</a>
+<a href="#2449" id="2449">2449</a>
+<a href="#2450" id="2450">2450</a>
+<a href="#2451" id="2451">2451</a>
+<a href="#2452" id="2452">2452</a>
+<a href="#2453" id="2453">2453</a>
+<a href="#2454" id="2454">2454</a>
+<a href="#2455" id="2455">2455</a>
+<a href="#2456" id="2456">2456</a>
+<a href="#2457" id="2457">2457</a>
+<a href="#2458" id="2458">2458</a>
+<a href="#2459" id="2459">2459</a>
+<a href="#2460" id="2460">2460</a>
+<a href="#2461" id="2461">2461</a>
+<a href="#2462" id="2462">2462</a>
+<a href="#2463" id="2463">2463</a>
+<a href="#2464" id="2464">2464</a>
+<a href="#2465" id="2465">2465</a>
+<a href="#2466" id="2466">2466</a>
+<a href="#2467" id="2467">2467</a>
+<a href="#2468" id="2468">2468</a>
+<a href="#2469" id="2469">2469</a>
+<a href="#2470" id="2470">2470</a>
+<a href="#2471" id="2471">2471</a>
+<a href="#2472" id="2472">2472</a>
+<a href="#2473" id="2473">2473</a>
+<a href="#2474" id="2474">2474</a>
+<a href="#2475" id="2475">2475</a>
+<a href="#2476" id="2476">2476</a>
+<a href="#2477" id="2477">2477</a>
+<a href="#2478" id="2478">2478</a>
+<a href="#2479" id="2479">2479</a>
+<a href="#2480" id="2480">2480</a>
+<a href="#2481" id="2481">2481</a>
+<a href="#2482" id="2482">2482</a>
+<a href="#2483" id="2483">2483</a>
+<a href="#2484" id="2484">2484</a>
+<a href="#2485" id="2485">2485</a>
+<a href="#2486" id="2486">2486</a>
+<a href="#2487" id="2487">2487</a>
+<a href="#2488" id="2488">2488</a>
+<a href="#2489" id="2489">2489</a>
+<a href="#2490" id="2490">2490</a>
+<a href="#2491" id="2491">2491</a>
+<a href="#2492" id="2492">2492</a>
+<a href="#2493" id="2493">2493</a>
+<a href="#2494" id="2494">2494</a>
+<a href="#2495" id="2495">2495</a>
+<a href="#2496" id="2496">2496</a>
+<a href="#2497" id="2497">2497</a>
+<a href="#2498" id="2498">2498</a>
+<a href="#2499" id="2499">2499</a>
+<a href="#2500" id="2500">2500</a>
+<a href="#2501" id="2501">2501</a>
+<a href="#2502" id="2502">2502</a>
+<a href="#2503" id="2503">2503</a>
+<a href="#2504" id="2504">2504</a>
+<a href="#2505" id="2505">2505</a>
+<a href="#2506" id="2506">2506</a>
+<a href="#2507" id="2507">2507</a>
+<a href="#2508" id="2508">2508</a>
+<a href="#2509" id="2509">2509</a>
+<a href="#2510" id="2510">2510</a>
+<a href="#2511" id="2511">2511</a>
+<a href="#2512" id="2512">2512</a>
+<a href="#2513" id="2513">2513</a>
+<a href="#2514" id="2514">2514</a>
+<a href="#2515" id="2515">2515</a>
+<a href="#2516" id="2516">2516</a>
+<a href="#2517" id="2517">2517</a>
+<a href="#2518" id="2518">2518</a>
+<a href="#2519" id="2519">2519</a>
+<a href="#2520" id="2520">2520</a>
+<a href="#2521" id="2521">2521</a>
+<a href="#2522" id="2522">2522</a>
+<a href="#2523" id="2523">2523</a>
+<a href="#2524" id="2524">2524</a>
+<a href="#2525" id="2525">2525</a>
+<a href="#2526" id="2526">2526</a>
+<a href="#2527" id="2527">2527</a>
+<a href="#2528" id="2528">2528</a>
+<a href="#2529" id="2529">2529</a>
+<a href="#2530" id="2530">2530</a>
+<a href="#2531" id="2531">2531</a>
+<a href="#2532" id="2532">2532</a>
+<a href="#2533" id="2533">2533</a>
+<a href="#2534" id="2534">2534</a>
+<a href="#2535" id="2535">2535</a>
+<a href="#2536" id="2536">2536</a>
+<a href="#2537" id="2537">2537</a>
+<a href="#2538" id="2538">2538</a>
+<a href="#2539" id="2539">2539</a>
+<a href="#2540" id="2540">2540</a>
+<a href="#2541" id="2541">2541</a>
+<a href="#2542" id="2542">2542</a>
+<a href="#2543" id="2543">2543</a>
+<a href="#2544" id="2544">2544</a>
+<a href="#2545" id="2545">2545</a>
+<a href="#2546" id="2546">2546</a>
+<a href="#2547" id="2547">2547</a>
+<a href="#2548" id="2548">2548</a>
+<a href="#2549" id="2549">2549</a>
+<a href="#2550" id="2550">2550</a>
+<a href="#2551" id="2551">2551</a>
+<a href="#2552" id="2552">2552</a>
+<a href="#2553" id="2553">2553</a>
+<a href="#2554" id="2554">2554</a>
+<a href="#2555" id="2555">2555</a>
+<a href="#2556" id="2556">2556</a>
+<a href="#2557" id="2557">2557</a>
+<a href="#2558" id="2558">2558</a>
+<a href="#2559" id="2559">2559</a>
+<a href="#2560" id="2560">2560</a>
+<a href="#2561" id="2561">2561</a>
+<a href="#2562" id="2562">2562</a>
+<a href="#2563" id="2563">2563</a>
+<a href="#2564" id="2564">2564</a>
+<a href="#2565" id="2565">2565</a>
+<a href="#2566" id="2566">2566</a>
+<a href="#2567" id="2567">2567</a>
+<a href="#2568" id="2568">2568</a>
+<a href="#2569" id="2569">2569</a>
+<a href="#2570" id="2570">2570</a>
+<a href="#2571" id="2571">2571</a>
+<a href="#2572" id="2572">2572</a>
+<a href="#2573" id="2573">2573</a>
+<a href="#2574" id="2574">2574</a>
+<a href="#2575" id="2575">2575</a>
+<a href="#2576" id="2576">2576</a>
+<a href="#2577" id="2577">2577</a>
+<a href="#2578" id="2578">2578</a>
+<a href="#2579" id="2579">2579</a>
+<a href="#2580" id="2580">2580</a>
+<a href="#2581" id="2581">2581</a>
+<a href="#2582" id="2582">2582</a>
+<a href="#2583" id="2583">2583</a>
+<a href="#2584" id="2584">2584</a>
+<a href="#2585" id="2585">2585</a>
+<a href="#2586" id="2586">2586</a>
+<a href="#2587" id="2587">2587</a>
+<a href="#2588" id="2588">2588</a>
+<a href="#2589" id="2589">2589</a>
+<a href="#2590" id="2590">2590</a>
+<a href="#2591" id="2591">2591</a>
+<a href="#2592" id="2592">2592</a>
+<a href="#2593" id="2593">2593</a>
+<a href="#2594" id="2594">2594</a>
+<a href="#2595" id="2595">2595</a>
+<a href="#2596" id="2596">2596</a>
+<a href="#2597" id="2597">2597</a>
+<a href="#2598" id="2598">2598</a>
+<a href="#2599" id="2599">2599</a>
+<a href="#2600" id="2600">2600</a>
+<a href="#2601" id="2601">2601</a>
+<a href="#2602" id="2602">2602</a>
+<a href="#2603" id="2603">2603</a>
+<a href="#2604" id="2604">2604</a>
+<a href="#2605" id="2605">2605</a>
+<a href="#2606" id="2606">2606</a>
+<a href="#2607" id="2607">2607</a>
+<a href="#2608" id="2608">2608</a>
+<a href="#2609" id="2609">2609</a>
+<a href="#2610" id="2610">2610</a>
+<a href="#2611" id="2611">2611</a>
+<a href="#2612" id="2612">2612</a>
+<a href="#2613" id="2613">2613</a>
+<a href="#2614" id="2614">2614</a>
+<a href="#2615" id="2615">2615</a>
+<a href="#2616" id="2616">2616</a>
+<a href="#2617" id="2617">2617</a>
+<a href="#2618" id="2618">2618</a>
+<a href="#2619" id="2619">2619</a>
+<a href="#2620" id="2620">2620</a>
+<a href="#2621" id="2621">2621</a>
+<a href="#2622" id="2622">2622</a>
+<a href="#2623" id="2623">2623</a>
+<a href="#2624" id="2624">2624</a>
+<a href="#2625" id="2625">2625</a>
+<a href="#2626" id="2626">2626</a>
+<a href="#2627" id="2627">2627</a>
+<a href="#2628" id="2628">2628</a>
+<a href="#2629" id="2629">2629</a>
+<a href="#2630" id="2630">2630</a>
+<a href="#2631" id="2631">2631</a>
+<a href="#2632" id="2632">2632</a>
+<a href="#2633" id="2633">2633</a>
+<a href="#2634" id="2634">2634</a>
+<a href="#2635" id="2635">2635</a>
+<a href="#2636" id="2636">2636</a>
+<a href="#2637" id="2637">2637</a>
+<a href="#2638" id="2638">2638</a>
+<a href="#2639" id="2639">2639</a>
+<a href="#2640" id="2640">2640</a>
+<a href="#2641" id="2641">2641</a>
+<a href="#2642" id="2642">2642</a>
+<a href="#2643" id="2643">2643</a>
+<a href="#2644" id="2644">2644</a>
+<a href="#2645" id="2645">2645</a>
+<a href="#2646" id="2646">2646</a>
+<a href="#2647" id="2647">2647</a>
+<a href="#2648" id="2648">2648</a>
+<a href="#2649" id="2649">2649</a>
+<a href="#2650" id="2650">2650</a>
+<a href="#2651" id="2651">2651</a>
+<a href="#2652" id="2652">2652</a>
+<a href="#2653" id="2653">2653</a>
+<a href="#2654" id="2654">2654</a>
+<a href="#2655" id="2655">2655</a>
+<a href="#2656" id="2656">2656</a>
+<a href="#2657" id="2657">2657</a>
+<a href="#2658" id="2658">2658</a>
+<a href="#2659" id="2659">2659</a>
+<a href="#2660" id="2660">2660</a>
+<a href="#2661" id="2661">2661</a>
+<a href="#2662" id="2662">2662</a>
+<a href="#2663" id="2663">2663</a>
+<a href="#2664" id="2664">2664</a>
+<a href="#2665" id="2665">2665</a>
+<a href="#2666" id="2666">2666</a>
+<a href="#2667" id="2667">2667</a>
+<a href="#2668" id="2668">2668</a>
+<a href="#2669" id="2669">2669</a>
+<a href="#2670" id="2670">2670</a>
+<a href="#2671" id="2671">2671</a>
+<a href="#2672" id="2672">2672</a>
+<a href="#2673" id="2673">2673</a>
+<a href="#2674" id="2674">2674</a>
+<a href="#2675" id="2675">2675</a>
+<a href="#2676" id="2676">2676</a>
+<a href="#2677" id="2677">2677</a>
+<a href="#2678" id="2678">2678</a>
+<a href="#2679" id="2679">2679</a>
+<a href="#2680" id="2680">2680</a>
+<a href="#2681" id="2681">2681</a>
+<a href="#2682" id="2682">2682</a>
+<a href="#2683" id="2683">2683</a>
+<a href="#2684" id="2684">2684</a>
+<a href="#2685" id="2685">2685</a>
+<a href="#2686" id="2686">2686</a>
+<a href="#2687" id="2687">2687</a>
+<a href="#2688" id="2688">2688</a>
+<a href="#2689" id="2689">2689</a>
+<a href="#2690" id="2690">2690</a>
+<a href="#2691" id="2691">2691</a>
+<a href="#2692" id="2692">2692</a>
+<a href="#2693" id="2693">2693</a>
+<a href="#2694" id="2694">2694</a>
+<a href="#2695" id="2695">2695</a>
+<a href="#2696" id="2696">2696</a>
+<a href="#2697" id="2697">2697</a>
+<a href="#2698" id="2698">2698</a>
+<a href="#2699" id="2699">2699</a>
+<a href="#2700" id="2700">2700</a>
+<a href="#2701" id="2701">2701</a>
+<a href="#2702" id="2702">2702</a>
+<a href="#2703" id="2703">2703</a>
+<a href="#2704" id="2704">2704</a>
+<a href="#2705" id="2705">2705</a>
+<a href="#2706" id="2706">2706</a>
+<a href="#2707" id="2707">2707</a>
+<a href="#2708" id="2708">2708</a>
+<a href="#2709" id="2709">2709</a>
+<a href="#2710" id="2710">2710</a>
+<a href="#2711" id="2711">2711</a>
+<a href="#2712" id="2712">2712</a>
+<a href="#2713" id="2713">2713</a>
+<a href="#2714" id="2714">2714</a>
+<a href="#2715" id="2715">2715</a>
+<a href="#2716" id="2716">2716</a>
+<a href="#2717" id="2717">2717</a>
+<a href="#2718" id="2718">2718</a>
+<a href="#2719" id="2719">2719</a>
+<a href="#2720" id="2720">2720</a>
+<a href="#2721" id="2721">2721</a>
+<a href="#2722" id="2722">2722</a>
+<a href="#2723" id="2723">2723</a>
+<a href="#2724" id="2724">2724</a>
+<a href="#2725" id="2725">2725</a>
+<a href="#2726" id="2726">2726</a>
+<a href="#2727" id="2727">2727</a>
+<a href="#2728" id="2728">2728</a>
+<a href="#2729" id="2729">2729</a>
+<a href="#2730" id="2730">2730</a>
+<a href="#2731" id="2731">2731</a>
+<a href="#2732" id="2732">2732</a>
+<a href="#2733" id="2733">2733</a>
+<a href="#2734" id="2734">2734</a>
+<a href="#2735" id="2735">2735</a>
+<a href="#2736" id="2736">2736</a>
+<a href="#2737" id="2737">2737</a>
+<a href="#2738" id="2738">2738</a>
+<a href="#2739" id="2739">2739</a>
+<a href="#2740" id="2740">2740</a>
+<a href="#2741" id="2741">2741</a>
+<a href="#2742" id="2742">2742</a>
+<a href="#2743" id="2743">2743</a>
+<a href="#2744" id="2744">2744</a>
+<a href="#2745" id="2745">2745</a>
+<a href="#2746" id="2746">2746</a>
+<a href="#2747" id="2747">2747</a>
+<a href="#2748" id="2748">2748</a>
+<a href="#2749" id="2749">2749</a>
+<a href="#2750" id="2750">2750</a>
+<a href="#2751" id="2751">2751</a>
+<a href="#2752" id="2752">2752</a>
+<a href="#2753" id="2753">2753</a>
+<a href="#2754" id="2754">2754</a>
+<a href="#2755" id="2755">2755</a>
+<a href="#2756" id="2756">2756</a>
+<a href="#2757" id="2757">2757</a>
+<a href="#2758" id="2758">2758</a>
+<a href="#2759" id="2759">2759</a>
+<a href="#2760" id="2760">2760</a>
+<a href="#2761" id="2761">2761</a>
+<a href="#2762" id="2762">2762</a>
+<a href="#2763" id="2763">2763</a>
+<a href="#2764" id="2764">2764</a>
+<a href="#2765" id="2765">2765</a>
+<a href="#2766" id="2766">2766</a>
+<a href="#2767" id="2767">2767</a>
+<a href="#2768" id="2768">2768</a>
+<a href="#2769" id="2769">2769</a>
+<a href="#2770" id="2770">2770</a>
+<a href="#2771" id="2771">2771</a>
+<a href="#2772" id="2772">2772</a>
+<a href="#2773" id="2773">2773</a>
+<a href="#2774" id="2774">2774</a>
+<a href="#2775" id="2775">2775</a>
+<a href="#2776" id="2776">2776</a>
+<a href="#2777" id="2777">2777</a>
+<a href="#2778" id="2778">2778</a>
+<a href="#2779" id="2779">2779</a>
+<a href="#2780" id="2780">2780</a>
+<a href="#2781" id="2781">2781</a>
+<a href="#2782" id="2782">2782</a>
+<a href="#2783" id="2783">2783</a>
+<a href="#2784" id="2784">2784</a>
+<a href="#2785" id="2785">2785</a>
+<a href="#2786" id="2786">2786</a>
+<a href="#2787" id="2787">2787</a>
+<a href="#2788" id="2788">2788</a>
+<a href="#2789" id="2789">2789</a>
+<a href="#2790" id="2790">2790</a>
+<a href="#2791" id="2791">2791</a>
+<a href="#2792" id="2792">2792</a>
+<a href="#2793" id="2793">2793</a>
+<a href="#2794" id="2794">2794</a>
+<a href="#2795" id="2795">2795</a>
+<a href="#2796" id="2796">2796</a>
+<a href="#2797" id="2797">2797</a>
+<a href="#2798" id="2798">2798</a>
+<a href="#2799" id="2799">2799</a>
+<a href="#2800" id="2800">2800</a>
+<a href="#2801" id="2801">2801</a>
+<a href="#2802" id="2802">2802</a>
+<a href="#2803" id="2803">2803</a>
+<a href="#2804" id="2804">2804</a>
+<a href="#2805" id="2805">2805</a>
+<a href="#2806" id="2806">2806</a>
+<a href="#2807" id="2807">2807</a>
+<a href="#2808" id="2808">2808</a>
+<a href="#2809" id="2809">2809</a>
+<a href="#2810" id="2810">2810</a>
+<a href="#2811" id="2811">2811</a>
+<a href="#2812" id="2812">2812</a>
+<a href="#2813" id="2813">2813</a>
+<a href="#2814" id="2814">2814</a>
+<a href="#2815" id="2815">2815</a>
+<a href="#2816" id="2816">2816</a>
+<a href="#2817" id="2817">2817</a>
+<a href="#2818" id="2818">2818</a>
+<a href="#2819" id="2819">2819</a>
+<a href="#2820" id="2820">2820</a>
+<a href="#2821" id="2821">2821</a>
+<a href="#2822" id="2822">2822</a>
+<a href="#2823" id="2823">2823</a>
+<a href="#2824" id="2824">2824</a>
+<a href="#2825" id="2825">2825</a>
+<a href="#2826" id="2826">2826</a>
+<a href="#2827" id="2827">2827</a>
+<a href="#2828" id="2828">2828</a>
+<a href="#2829" id="2829">2829</a>
+<a href="#2830" id="2830">2830</a>
+<a href="#2831" id="2831">2831</a>
+<a href="#2832" id="2832">2832</a>
+<a href="#2833" id="2833">2833</a>
+<a href="#2834" id="2834">2834</a>
+<a href="#2835" id="2835">2835</a>
+<a href="#2836" id="2836">2836</a>
+<a href="#2837" id="2837">2837</a>
+<a href="#2838" id="2838">2838</a>
+<a href="#2839" id="2839">2839</a>
+<a href="#2840" id="2840">2840</a>
+<a href="#2841" id="2841">2841</a>
+<a href="#2842" id="2842">2842</a>
+<a href="#2843" id="2843">2843</a>
+<a href="#2844" id="2844">2844</a>
+<a href="#2845" id="2845">2845</a>
+<a href="#2846" id="2846">2846</a>
+<a href="#2847" id="2847">2847</a>
+<a href="#2848" id="2848">2848</a>
+<a href="#2849" id="2849">2849</a>
+<a href="#2850" id="2850">2850</a>
+<a href="#2851" id="2851">2851</a>
+<a href="#2852" id="2852">2852</a>
+<a href="#2853" id="2853">2853</a>
+<a href="#2854" id="2854">2854</a>
+<a href="#2855" id="2855">2855</a>
+<a href="#2856" id="2856">2856</a>
+<a href="#2857" id="2857">2857</a>
+<a href="#2858" id="2858">2858</a>
+<a href="#2859" id="2859">2859</a>
+<a href="#2860" id="2860">2860</a>
+<a href="#2861" id="2861">2861</a>
+<a href="#2862" id="2862">2862</a>
+<a href="#2863" id="2863">2863</a>
+<a href="#2864" id="2864">2864</a>
+<a href="#2865" id="2865">2865</a>
+<a href="#2866" id="2866">2866</a>
+<a href="#2867" id="2867">2867</a>
+<a href="#2868" id="2868">2868</a>
+<a href="#2869" id="2869">2869</a>
+<a href="#2870" id="2870">2870</a>
+<a href="#2871" id="2871">2871</a>
+<a href="#2872" id="2872">2872</a>
+<a href="#2873" id="2873">2873</a>
+<a href="#2874" id="2874">2874</a>
+<a href="#2875" id="2875">2875</a>
+<a href="#2876" id="2876">2876</a>
+<a href="#2877" id="2877">2877</a>
+<a href="#2878" id="2878">2878</a>
+<a href="#2879" id="2879">2879</a>
+<a href="#2880" id="2880">2880</a>
+<a href="#2881" id="2881">2881</a>
+<a href="#2882" id="2882">2882</a>
+<a href="#2883" id="2883">2883</a>
+<a href="#2884" id="2884">2884</a>
+<a href="#2885" id="2885">2885</a>
+<a href="#2886" id="2886">2886</a>
+<a href="#2887" id="2887">2887</a>
+<a href="#2888" id="2888">2888</a>
+<a href="#2889" id="2889">2889</a>
+<a href="#2890" id="2890">2890</a>
+<a href="#2891" id="2891">2891</a>
+<a href="#2892" id="2892">2892</a>
+<a href="#2893" id="2893">2893</a>
+<a href="#2894" id="2894">2894</a>
+<a href="#2895" id="2895">2895</a>
+<a href="#2896" id="2896">2896</a>
+<a href="#2897" id="2897">2897</a>
+<a href="#2898" id="2898">2898</a>
+<a href="#2899" id="2899">2899</a>
+<a href="#2900" id="2900">2900</a>
+<a href="#2901" id="2901">2901</a>
+<a href="#2902" id="2902">2902</a>
+<a href="#2903" id="2903">2903</a>
+<a href="#2904" id="2904">2904</a>
+<a href="#2905" id="2905">2905</a>
+<a href="#2906" id="2906">2906</a>
+<a href="#2907" id="2907">2907</a>
+<a href="#2908" id="2908">2908</a>
+<a href="#2909" id="2909">2909</a>
+<a href="#2910" id="2910">2910</a>
+<a href="#2911" id="2911">2911</a>
+<a href="#2912" id="2912">2912</a>
+<a href="#2913" id="2913">2913</a>
+<a href="#2914" id="2914">2914</a>
+<a href="#2915" id="2915">2915</a>
+<a href="#2916" id="2916">2916</a>
+<a href="#2917" id="2917">2917</a>
+<a href="#2918" id="2918">2918</a>
+<a href="#2919" id="2919">2919</a>
+<a href="#2920" id="2920">2920</a>
+<a href="#2921" id="2921">2921</a>
+<a href="#2922" id="2922">2922</a>
+<a href="#2923" id="2923">2923</a>
+<a href="#2924" id="2924">2924</a>
+<a href="#2925" id="2925">2925</a>
+<a href="#2926" id="2926">2926</a>
+<a href="#2927" id="2927">2927</a>
+<a href="#2928" id="2928">2928</a>
+<a href="#2929" id="2929">2929</a>
+<a href="#2930" id="2930">2930</a>
+<a href="#2931" id="2931">2931</a>
+<a href="#2932" id="2932">2932</a>
+<a href="#2933" id="2933">2933</a>
+<a href="#2934" id="2934">2934</a>
+<a href="#2935" id="2935">2935</a>
+<a href="#2936" id="2936">2936</a>
+<a href="#2937" id="2937">2937</a>
+<a href="#2938" id="2938">2938</a>
+<a href="#2939" id="2939">2939</a>
+<a href="#2940" id="2940">2940</a>
+<a href="#2941" id="2941">2941</a>
+<a href="#2942" id="2942">2942</a>
+<a href="#2943" id="2943">2943</a>
+<a href="#2944" id="2944">2944</a>
+<a href="#2945" id="2945">2945</a>
+<a href="#2946" id="2946">2946</a>
+<a href="#2947" id="2947">2947</a>
+<a href="#2948" id="2948">2948</a>
+<a href="#2949" id="2949">2949</a>
+<a href="#2950" id="2950">2950</a>
+<a href="#2951" id="2951">2951</a>
+<a href="#2952" id="2952">2952</a>
+<a href="#2953" id="2953">2953</a>
+<a href="#2954" id="2954">2954</a>
+<a href="#2955" id="2955">2955</a>
+<a href="#2956" id="2956">2956</a>
+<a href="#2957" id="2957">2957</a>
+<a href="#2958" id="2958">2958</a>
+<a href="#2959" id="2959">2959</a>
+<a href="#2960" id="2960">2960</a>
+<a href="#2961" id="2961">2961</a>
+<a href="#2962" id="2962">2962</a>
+<a href="#2963" id="2963">2963</a>
+<a href="#2964" id="2964">2964</a>
+<a href="#2965" id="2965">2965</a>
+<a href="#2966" id="2966">2966</a>
+<a href="#2967" id="2967">2967</a>
+<a href="#2968" id="2968">2968</a>
+<a href="#2969" id="2969">2969</a>
+<a href="#2970" id="2970">2970</a>
+<a href="#2971" id="2971">2971</a>
+<a href="#2972" id="2972">2972</a>
+<a href="#2973" id="2973">2973</a>
+<a href="#2974" id="2974">2974</a>
+<a href="#2975" id="2975">2975</a>
+<a href="#2976" id="2976">2976</a>
+<a href="#2977" id="2977">2977</a>
+<a href="#2978" id="2978">2978</a>
+<a href="#2979" id="2979">2979</a>
+<a href="#2980" id="2980">2980</a>
+<a href="#2981" id="2981">2981</a>
+<a href="#2982" id="2982">2982</a>
+<a href="#2983" id="2983">2983</a>
+<a href="#2984" id="2984">2984</a>
+<a href="#2985" id="2985">2985</a>
+<a href="#2986" id="2986">2986</a>
+<a href="#2987" id="2987">2987</a>
+<a href="#2988" id="2988">2988</a>
+<a href="#2989" id="2989">2989</a>
+<a href="#2990" id="2990">2990</a>
+<a href="#2991" id="2991">2991</a>
+<a href="#2992" id="2992">2992</a>
+<a href="#2993" id="2993">2993</a>
+<a href="#2994" id="2994">2994</a>
+<a href="#2995" id="2995">2995</a>
+<a href="#2996" id="2996">2996</a>
+<a href="#2997" id="2997">2997</a>
+<a href="#2998" id="2998">2998</a>
+<a href="#2999" id="2999">2999</a>
+<a href="#3000" id="3000">3000</a>
+<a href="#3001" id="3001">3001</a>
+<a href="#3002" id="3002">3002</a>
+<a href="#3003" id="3003">3003</a>
+<a href="#3004" id="3004">3004</a>
+<a href="#3005" id="3005">3005</a>
+<a href="#3006" id="3006">3006</a>
+<a href="#3007" id="3007">3007</a>
+<a href="#3008" id="3008">3008</a>
+<a href="#3009" id="3009">3009</a>
+<a href="#3010" id="3010">3010</a>
+<a href="#3011" id="3011">3011</a>
+<a href="#3012" id="3012">3012</a>
+<a href="#3013" id="3013">3013</a>
+<a href="#3014" id="3014">3014</a>
+<a href="#3015" id="3015">3015</a>
+<a href="#3016" id="3016">3016</a>
+<a href="#3017" id="3017">3017</a>
+<a href="#3018" id="3018">3018</a>
+<a href="#3019" id="3019">3019</a>
+<a href="#3020" id="3020">3020</a>
+<a href="#3021" id="3021">3021</a>
+<a href="#3022" id="3022">3022</a>
+<a href="#3023" id="3023">3023</a>
+<a href="#3024" id="3024">3024</a>
+<a href="#3025" id="3025">3025</a>
+<a href="#3026" id="3026">3026</a>
+<a href="#3027" id="3027">3027</a>
+<a href="#3028" id="3028">3028</a>
+<a href="#3029" id="3029">3029</a>
+<a href="#3030" id="3030">3030</a>
+<a href="#3031" id="3031">3031</a>
+<a href="#3032" id="3032">3032</a>
+<a href="#3033" id="3033">3033</a>
+<a href="#3034" id="3034">3034</a>
+<a href="#3035" id="3035">3035</a>
+<a href="#3036" id="3036">3036</a>
+<a href="#3037" id="3037">3037</a>
+<a href="#3038" id="3038">3038</a>
+<a href="#3039" id="3039">3039</a>
+<a href="#3040" id="3040">3040</a>
+<a href="#3041" id="3041">3041</a>
+<a href="#3042" id="3042">3042</a>
+<a href="#3043" id="3043">3043</a>
+<a href="#3044" id="3044">3044</a>
+<a href="#3045" id="3045">3045</a>
+<a href="#3046" id="3046">3046</a>
+<a href="#3047" id="3047">3047</a>
+<a href="#3048" id="3048">3048</a>
+<a href="#3049" id="3049">3049</a>
+<a href="#3050" id="3050">3050</a>
+<a href="#3051" id="3051">3051</a>
+<a href="#3052" id="3052">3052</a>
+<a href="#3053" id="3053">3053</a>
+<a href="#3054" id="3054">3054</a>
+<a href="#3055" id="3055">3055</a>
+<a href="#3056" id="3056">3056</a>
+<a href="#3057" id="3057">3057</a>
+<a href="#3058" id="3058">3058</a>
+<a href="#3059" id="3059">3059</a>
+<a href="#3060" id="3060">3060</a>
+<a href="#3061" id="3061">3061</a>
+<a href="#3062" id="3062">3062</a>
+<a href="#3063" id="3063">3063</a>
+<a href="#3064" id="3064">3064</a>
+<a href="#3065" id="3065">3065</a>
+<a href="#3066" id="3066">3066</a>
+<a href="#3067" id="3067">3067</a>
+<a href="#3068" id="3068">3068</a>
+<a href="#3069" id="3069">3069</a>
+<a href="#3070" id="3070">3070</a>
+<a href="#3071" id="3071">3071</a>
+<a href="#3072" id="3072">3072</a>
+<a href="#3073" id="3073">3073</a>
+<a href="#3074" id="3074">3074</a>
+<a href="#3075" id="3075">3075</a>
+<a href="#3076" id="3076">3076</a>
+<a href="#3077" id="3077">3077</a>
+<a href="#3078" id="3078">3078</a>
+<a href="#3079" id="3079">3079</a>
+<a href="#3080" id="3080">3080</a>
+<a href="#3081" id="3081">3081</a>
+<a href="#3082" id="3082">3082</a>
+<a href="#3083" id="3083">3083</a>
+<a href="#3084" id="3084">3084</a>
+<a href="#3085" id="3085">3085</a>
+<a href="#3086" id="3086">3086</a>
+<a href="#3087" id="3087">3087</a>
+<a href="#3088" id="3088">3088</a>
+<a href="#3089" id="3089">3089</a>
+<a href="#3090" id="3090">3090</a>
+<a href="#3091" id="3091">3091</a>
+<a href="#3092" id="3092">3092</a>
+<a href="#3093" id="3093">3093</a>
+<a href="#3094" id="3094">3094</a>
+<a href="#3095" id="3095">3095</a>
+<a href="#3096" id="3096">3096</a>
+<a href="#3097" id="3097">3097</a>
+<a href="#3098" id="3098">3098</a>
+<a href="#3099" id="3099">3099</a>
+<a href="#3100" id="3100">3100</a>
+<a href="#3101" id="3101">3101</a>
+<a href="#3102" id="3102">3102</a>
+<a href="#3103" id="3103">3103</a>
+<a href="#3104" id="3104">3104</a>
+<a href="#3105" id="3105">3105</a>
+<a href="#3106" id="3106">3106</a>
+<a href="#3107" id="3107">3107</a>
+<a href="#3108" id="3108">3108</a>
+<a href="#3109" id="3109">3109</a>
+<a href="#3110" id="3110">3110</a>
+<a href="#3111" id="3111">3111</a>
+<a href="#3112" id="3112">3112</a>
+<a href="#3113" id="3113">3113</a>
+<a href="#3114" id="3114">3114</a>
+<a href="#3115" id="3115">3115</a>
+<a href="#3116" id="3116">3116</a>
+<a href="#3117" id="3117">3117</a>
+<a href="#3118" id="3118">3118</a>
+<a href="#3119" id="3119">3119</a>
+<a href="#3120" id="3120">3120</a>
+<a href="#3121" id="3121">3121</a>
+<a href="#3122" id="3122">3122</a>
+<a href="#3123" id="3123">3123</a>
+<a href="#3124" id="3124">3124</a>
+<a href="#3125" id="3125">3125</a>
+<a href="#3126" id="3126">3126</a>
+<a href="#3127" id="3127">3127</a>
+<a href="#3128" id="3128">3128</a>
+<a href="#3129" id="3129">3129</a>
+<a href="#3130" id="3130">3130</a>
+<a href="#3131" id="3131">3131</a>
+<a href="#3132" id="3132">3132</a>
+<a href="#3133" id="3133">3133</a>
+<a href="#3134" id="3134">3134</a>
+<a href="#3135" id="3135">3135</a>
+<a href="#3136" id="3136">3136</a>
+<a href="#3137" id="3137">3137</a>
+<a href="#3138" id="3138">3138</a>
+<a href="#3139" id="3139">3139</a>
+<a href="#3140" id="3140">3140</a>
+<a href="#3141" id="3141">3141</a>
+<a href="#3142" id="3142">3142</a>
+<a href="#3143" id="3143">3143</a>
+<a href="#3144" id="3144">3144</a>
+<a href="#3145" id="3145">3145</a>
+<a href="#3146" id="3146">3146</a>
+<a href="#3147" id="3147">3147</a>
+<a href="#3148" id="3148">3148</a>
+<a href="#3149" id="3149">3149</a>
+<a href="#3150" id="3150">3150</a>
+<a href="#3151" id="3151">3151</a>
+<a href="#3152" id="3152">3152</a>
+<a href="#3153" id="3153">3153</a>
+<a href="#3154" id="3154">3154</a>
+<a href="#3155" id="3155">3155</a>
+<a href="#3156" id="3156">3156</a>
+<a href="#3157" id="3157">3157</a>
+<a href="#3158" id="3158">3158</a>
+<a href="#3159" id="3159">3159</a>
+<a href="#3160" id="3160">3160</a>
+<a href="#3161" id="3161">3161</a>
+<a href="#3162" id="3162">3162</a>
+<a href="#3163" id="3163">3163</a>
+<a href="#3164" id="3164">3164</a>
+<a href="#3165" id="3165">3165</a>
+<a href="#3166" id="3166">3166</a>
+<a href="#3167" id="3167">3167</a>
+<a href="#3168" id="3168">3168</a>
+<a href="#3169" id="3169">3169</a>
+<a href="#3170" id="3170">3170</a>
+<a href="#3171" id="3171">3171</a>
+<a href="#3172" id="3172">3172</a>
+<a href="#3173" id="3173">3173</a>
+<a href="#3174" id="3174">3174</a>
+<a href="#3175" id="3175">3175</a>
+<a href="#3176" id="3176">3176</a>
+<a href="#3177" id="3177">3177</a>
+<a href="#3178" id="3178">3178</a>
+<a href="#3179" id="3179">3179</a>
+<a href="#3180" id="3180">3180</a>
+<a href="#3181" id="3181">3181</a>
+<a href="#3182" id="3182">3182</a>
+<a href="#3183" id="3183">3183</a>
+<a href="#3184" id="3184">3184</a>
+<a href="#3185" id="3185">3185</a>
+<a href="#3186" id="3186">3186</a>
+<a href="#3187" id="3187">3187</a>
+<a href="#3188" id="3188">3188</a>
+<a href="#3189" id="3189">3189</a>
+<a href="#3190" id="3190">3190</a>
+<a href="#3191" id="3191">3191</a>
+<a href="#3192" id="3192">3192</a>
+<a href="#3193" id="3193">3193</a>
+<a href="#3194" id="3194">3194</a>
+<a href="#3195" id="3195">3195</a>
+<a href="#3196" id="3196">3196</a>
+<a href="#3197" id="3197">3197</a>
+<a href="#3198" id="3198">3198</a>
+<a href="#3199" id="3199">3199</a>
+<a href="#3200" id="3200">3200</a>
+<a href="#3201" id="3201">3201</a>
+<a href="#3202" id="3202">3202</a>
+<a href="#3203" id="3203">3203</a>
+<a href="#3204" id="3204">3204</a>
+<a href="#3205" id="3205">3205</a>
+<a href="#3206" id="3206">3206</a>
+<a href="#3207" id="3207">3207</a>
+<a href="#3208" id="3208">3208</a>
+<a href="#3209" id="3209">3209</a>
+<a href="#3210" id="3210">3210</a>
+<a href="#3211" id="3211">3211</a>
+<a href="#3212" id="3212">3212</a>
+<a href="#3213" id="3213">3213</a>
+<a href="#3214" id="3214">3214</a>
+<a href="#3215" id="3215">3215</a>
+<a href="#3216" id="3216">3216</a>
+<a href="#3217" id="3217">3217</a>
+<a href="#3218" id="3218">3218</a>
+<a href="#3219" id="3219">3219</a>
+<a href="#3220" id="3220">3220</a>
+<a href="#3221" id="3221">3221</a>
+<a href="#3222" id="3222">3222</a>
+<a href="#3223" id="3223">3223</a>
+<a href="#3224" id="3224">3224</a>
+<a href="#3225" id="3225">3225</a>
+<a href="#3226" id="3226">3226</a>
+<a href="#3227" id="3227">3227</a>
+<a href="#3228" id="3228">3228</a>
+<a href="#3229" id="3229">3229</a>
+<a href="#3230" id="3230">3230</a>
+<a href="#3231" id="3231">3231</a>
+<a href="#3232" id="3232">3232</a>
+<a href="#3233" id="3233">3233</a>
+<a href="#3234" id="3234">3234</a>
+<a href="#3235" id="3235">3235</a>
+<a href="#3236" id="3236">3236</a>
+<a href="#3237" id="3237">3237</a>
+<a href="#3238" id="3238">3238</a>
+<a href="#3239" id="3239">3239</a>
+<a href="#3240" id="3240">3240</a>
+<a href="#3241" id="3241">3241</a>
+<a href="#3242" id="3242">3242</a>
+<a href="#3243" id="3243">3243</a>
+<a href="#3244" id="3244">3244</a>
+<a href="#3245" id="3245">3245</a>
+<a href="#3246" id="3246">3246</a>
+<a href="#3247" id="3247">3247</a>
+<a href="#3248" id="3248">3248</a>
+<a href="#3249" id="3249">3249</a>
+<a href="#3250" id="3250">3250</a>
+<a href="#3251" id="3251">3251</a>
+<a href="#3252" id="3252">3252</a>
+<a href="#3253" id="3253">3253</a>
+<a href="#3254" id="3254">3254</a>
+<a href="#3255" id="3255">3255</a>
+<a href="#3256" id="3256">3256</a>
+<a href="#3257" id="3257">3257</a>
+<a href="#3258" id="3258">3258</a>
+<a href="#3259" id="3259">3259</a>
+<a href="#3260" id="3260">3260</a>
+<a href="#3261" id="3261">3261</a>
+<a href="#3262" id="3262">3262</a>
+<a href="#3263" id="3263">3263</a>
+<a href="#3264" id="3264">3264</a>
+<a href="#3265" id="3265">3265</a>
+<a href="#3266" id="3266">3266</a>
+<a href="#3267" id="3267">3267</a>
+<a href="#3268" id="3268">3268</a>
+<a href="#3269" id="3269">3269</a>
+<a href="#3270" id="3270">3270</a>
+<a href="#3271" id="3271">3271</a>
+<a href="#3272" id="3272">3272</a>
+<a href="#3273" id="3273">3273</a>
+<a href="#3274" id="3274">3274</a>
+<a href="#3275" id="3275">3275</a>
+<a href="#3276" id="3276">3276</a>
+<a href="#3277" id="3277">3277</a>
+<a href="#3278" id="3278">3278</a>
+<a href="#3279" id="3279">3279</a>
+<a href="#3280" id="3280">3280</a>
+<a href="#3281" id="3281">3281</a>
+<a href="#3282" id="3282">3282</a>
+<a href="#3283" id="3283">3283</a>
+<a href="#3284" id="3284">3284</a>
+<a href="#3285" id="3285">3285</a>
+<a href="#3286" id="3286">3286</a>
+<a href="#3287" id="3287">3287</a>
+<a href="#3288" id="3288">3288</a>
+<a href="#3289" id="3289">3289</a>
+<a href="#3290" id="3290">3290</a>
+<a href="#3291" id="3291">3291</a>
+<a href="#3292" id="3292">3292</a>
+<a href="#3293" id="3293">3293</a>
+<a href="#3294" id="3294">3294</a>
+<a href="#3295" id="3295">3295</a>
+<a href="#3296" id="3296">3296</a>
+<a href="#3297" id="3297">3297</a>
+<a href="#3298" id="3298">3298</a>
+<a href="#3299" id="3299">3299</a>
+<a href="#3300" id="3300">3300</a>
+<a href="#3301" id="3301">3301</a>
+<a href="#3302" id="3302">3302</a>
+<a href="#3303" id="3303">3303</a>
+<a href="#3304" id="3304">3304</a>
+<a href="#3305" id="3305">3305</a>
+<a href="#3306" id="3306">3306</a>
+<a href="#3307" id="3307">3307</a>
+<a href="#3308" id="3308">3308</a>
+<a href="#3309" id="3309">3309</a>
+<a href="#3310" id="3310">3310</a>
+<a href="#3311" id="3311">3311</a>
+<a href="#3312" id="3312">3312</a>
+<a href="#3313" id="3313">3313</a>
+<a href="#3314" id="3314">3314</a>
+<a href="#3315" id="3315">3315</a>
+<a href="#3316" id="3316">3316</a>
+<a href="#3317" id="3317">3317</a>
+<a href="#3318" id="3318">3318</a>
+<a href="#3319" id="3319">3319</a>
+<a href="#3320" id="3320">3320</a>
+<a href="#3321" id="3321">3321</a>
+<a href="#3322" id="3322">3322</a>
+<a href="#3323" id="3323">3323</a>
+<a href="#3324" id="3324">3324</a>
+<a href="#3325" id="3325">3325</a>
+<a href="#3326" id="3326">3326</a>
+<a href="#3327" id="3327">3327</a>
+<a href="#3328" id="3328">3328</a>
+<a href="#3329" id="3329">3329</a>
+<a href="#3330" id="3330">3330</a>
+<a href="#3331" id="3331">3331</a>
+<a href="#3332" id="3332">3332</a>
+<a href="#3333" id="3333">3333</a>
+<a href="#3334" id="3334">3334</a>
+<a href="#3335" id="3335">3335</a>
+<a href="#3336" id="3336">3336</a>
+<a href="#3337" id="3337">3337</a>
+<a href="#3338" id="3338">3338</a>
+<a href="#3339" id="3339">3339</a>
+<a href="#3340" id="3340">3340</a>
+<a href="#3341" id="3341">3341</a>
+<a href="#3342" id="3342">3342</a>
+<a href="#3343" id="3343">3343</a>
+<a href="#3344" id="3344">3344</a>
+<a href="#3345" id="3345">3345</a>
+<a href="#3346" id="3346">3346</a>
+<a href="#3347" id="3347">3347</a>
+<a href="#3348" id="3348">3348</a>
+<a href="#3349" id="3349">3349</a>
+<a href="#3350" id="3350">3350</a>
+<a href="#3351" id="3351">3351</a>
+<a href="#3352" id="3352">3352</a>
+<a href="#3353" id="3353">3353</a>
+<a href="#3354" id="3354">3354</a>
+<a href="#3355" id="3355">3355</a>
+<a href="#3356" id="3356">3356</a>
+<a href="#3357" id="3357">3357</a>
+<a href="#3358" id="3358">3358</a>
+<a href="#3359" id="3359">3359</a>
+<a href="#3360" id="3360">3360</a>
+<a href="#3361" id="3361">3361</a>
+<a href="#3362" id="3362">3362</a>
+<a href="#3363" id="3363">3363</a>
+<a href="#3364" id="3364">3364</a>
+<a href="#3365" id="3365">3365</a>
+<a href="#3366" id="3366">3366</a>
+<a href="#3367" id="3367">3367</a>
+<a href="#3368" id="3368">3368</a>
+<a href="#3369" id="3369">3369</a>
+<a href="#3370" id="3370">3370</a>
+<a href="#3371" id="3371">3371</a>
+<a href="#3372" id="3372">3372</a>
+<a href="#3373" id="3373">3373</a>
+<a href="#3374" id="3374">3374</a>
+<a href="#3375" id="3375">3375</a>
+<a href="#3376" id="3376">3376</a>
+<a href="#3377" id="3377">3377</a>
+<a href="#3378" id="3378">3378</a>
+<a href="#3379" id="3379">3379</a>
+<a href="#3380" id="3380">3380</a>
+<a href="#3381" id="3381">3381</a>
+<a href="#3382" id="3382">3382</a>
+<a href="#3383" id="3383">3383</a>
+<a href="#3384" id="3384">3384</a>
+<a href="#3385" id="3385">3385</a>
+<a href="#3386" id="3386">3386</a>
+<a href="#3387" id="3387">3387</a>
+<a href="#3388" id="3388">3388</a>
+<a href="#3389" id="3389">3389</a>
+<a href="#3390" id="3390">3390</a>
+<a href="#3391" id="3391">3391</a>
+<a href="#3392" id="3392">3392</a>
+<a href="#3393" id="3393">3393</a>
+<a href="#3394" id="3394">3394</a>
+<a href="#3395" id="3395">3395</a>
+<a href="#3396" id="3396">3396</a>
+<a href="#3397" id="3397">3397</a>
+<a href="#3398" id="3398">3398</a>
+<a href="#3399" id="3399">3399</a>
+<a href="#3400" id="3400">3400</a>
+<a href="#3401" id="3401">3401</a>
+<a href="#3402" id="3402">3402</a>
+<a href="#3403" id="3403">3403</a>
+<a href="#3404" id="3404">3404</a>
+<a href="#3405" id="3405">3405</a>
+<a href="#3406" id="3406">3406</a>
+<a href="#3407" id="3407">3407</a>
+<a href="#3408" id="3408">3408</a>
+<a href="#3409" id="3409">3409</a>
+<a href="#3410" id="3410">3410</a>
+<a href="#3411" id="3411">3411</a>
+<a href="#3412" id="3412">3412</a>
+<a href="#3413" id="3413">3413</a>
+<a href="#3414" id="3414">3414</a>
+<a href="#3415" id="3415">3415</a>
+<a href="#3416" id="3416">3416</a>
+<a href="#3417" id="3417">3417</a>
+<a href="#3418" id="3418">3418</a>
+<a href="#3419" id="3419">3419</a>
+<a href="#3420" id="3420">3420</a>
+<a href="#3421" id="3421">3421</a>
+<a href="#3422" id="3422">3422</a>
+<a href="#3423" id="3423">3423</a>
+<a href="#3424" id="3424">3424</a>
+<a href="#3425" id="3425">3425</a>
+<a href="#3426" id="3426">3426</a>
+<a href="#3427" id="3427">3427</a>
+<a href="#3428" id="3428">3428</a>
+<a href="#3429" id="3429">3429</a>
+<a href="#3430" id="3430">3430</a>
+<a href="#3431" id="3431">3431</a>
+<a href="#3432" id="3432">3432</a>
+<a href="#3433" id="3433">3433</a>
+<a href="#3434" id="3434">3434</a>
+<a href="#3435" id="3435">3435</a>
+<a href="#3436" id="3436">3436</a>
+<a href="#3437" id="3437">3437</a>
+<a href="#3438" id="3438">3438</a>
+<a href="#3439" id="3439">3439</a>
+<a href="#3440" id="3440">3440</a>
+<a href="#3441" id="3441">3441</a>
+<a href="#3442" id="3442">3442</a>
+<a href="#3443" id="3443">3443</a>
+<a href="#3444" id="3444">3444</a>
+<a href="#3445" id="3445">3445</a>
+<a href="#3446" id="3446">3446</a>
+<a href="#3447" id="3447">3447</a>
+<a href="#3448" id="3448">3448</a>
+<a href="#3449" id="3449">3449</a>
+<a href="#3450" id="3450">3450</a>
+<a href="#3451" id="3451">3451</a>
+<a href="#3452" id="3452">3452</a>
+<a href="#3453" id="3453">3453</a>
+<a href="#3454" id="3454">3454</a>
+<a href="#3455" id="3455">3455</a>
+<a href="#3456" id="3456">3456</a>
+<a href="#3457" id="3457">3457</a>
+<a href="#3458" id="3458">3458</a>
+<a href="#3459" id="3459">3459</a>
+<a href="#3460" id="3460">3460</a>
+<a href="#3461" id="3461">3461</a>
+<a href="#3462" id="3462">3462</a>
+<a href="#3463" id="3463">3463</a>
+<a href="#3464" id="3464">3464</a>
+<a href="#3465" id="3465">3465</a>
+<a href="#3466" id="3466">3466</a>
+<a href="#3467" id="3467">3467</a>
+<a href="#3468" id="3468">3468</a>
+<a href="#3469" id="3469">3469</a>
+<a href="#3470" id="3470">3470</a>
+<a href="#3471" id="3471">3471</a>
+<a href="#3472" id="3472">3472</a>
+<a href="#3473" id="3473">3473</a>
+<a href="#3474" id="3474">3474</a>
+<a href="#3475" id="3475">3475</a>
+<a href="#3476" id="3476">3476</a>
+<a href="#3477" id="3477">3477</a>
+<a href="#3478" id="3478">3478</a>
+<a href="#3479" id="3479">3479</a>
+<a href="#3480" id="3480">3480</a>
+<a href="#3481" id="3481">3481</a>
+<a href="#3482" id="3482">3482</a>
+<a href="#3483" id="3483">3483</a>
+<a href="#3484" id="3484">3484</a>
+<a href="#3485" id="3485">3485</a>
+<a href="#3486" id="3486">3486</a>
+<a href="#3487" id="3487">3487</a>
+<a href="#3488" id="3488">3488</a>
+<a href="#3489" id="3489">3489</a>
+<a href="#3490" id="3490">3490</a>
+<a href="#3491" id="3491">3491</a>
+<a href="#3492" id="3492">3492</a>
+<a href="#3493" id="3493">3493</a>
+<a href="#3494" id="3494">3494</a>
+<a href="#3495" id="3495">3495</a>
+<a href="#3496" id="3496">3496</a>
+<a href="#3497" id="3497">3497</a>
+<a href="#3498" id="3498">3498</a>
+<a href="#3499" id="3499">3499</a>
+<a href="#3500" id="3500">3500</a>
+<a href="#3501" id="3501">3501</a>
+<a href="#3502" id="3502">3502</a>
+<a href="#3503" id="3503">3503</a>
+<a href="#3504" id="3504">3504</a>
+<a href="#3505" id="3505">3505</a>
+<a href="#3506" id="3506">3506</a>
+<a href="#3507" id="3507">3507</a>
+<a href="#3508" id="3508">3508</a>
+<a href="#3509" id="3509">3509</a>
+<a href="#3510" id="3510">3510</a>
+<a href="#3511" id="3511">3511</a>
+<a href="#3512" id="3512">3512</a>
+<a href="#3513" id="3513">3513</a>
+<a href="#3514" id="3514">3514</a>
+<a href="#3515" id="3515">3515</a>
+<a href="#3516" id="3516">3516</a>
+<a href="#3517" id="3517">3517</a>
+<a href="#3518" id="3518">3518</a>
+<a href="#3519" id="3519">3519</a>
+<a href="#3520" id="3520">3520</a>
+<a href="#3521" id="3521">3521</a>
+<a href="#3522" id="3522">3522</a>
+<a href="#3523" id="3523">3523</a>
+<a href="#3524" id="3524">3524</a>
+<a href="#3525" id="3525">3525</a>
+<a href="#3526" id="3526">3526</a>
+<a href="#3527" id="3527">3527</a>
+<a href="#3528" id="3528">3528</a>
+<a href="#3529" id="3529">3529</a>
+<a href="#3530" id="3530">3530</a>
+<a href="#3531" id="3531">3531</a>
+<a href="#3532" id="3532">3532</a>
+<a href="#3533" id="3533">3533</a>
+<a href="#3534" id="3534">3534</a>
+<a href="#3535" id="3535">3535</a>
+<a href="#3536" id="3536">3536</a>
+<a href="#3537" id="3537">3537</a>
+<a href="#3538" id="3538">3538</a>
+<a href="#3539" id="3539">3539</a>
+<a href="#3540" id="3540">3540</a>
+<a href="#3541" id="3541">3541</a>
+<a href="#3542" id="3542">3542</a>
+<a href="#3543" id="3543">3543</a>
+<a href="#3544" id="3544">3544</a>
+<a href="#3545" id="3545">3545</a>
+<a href="#3546" id="3546">3546</a>
+<a href="#3547" id="3547">3547</a>
+<a href="#3548" id="3548">3548</a>
+<a href="#3549" id="3549">3549</a>
+<a href="#3550" id="3550">3550</a>
+<a href="#3551" id="3551">3551</a>
+<a href="#3552" id="3552">3552</a>
+<a href="#3553" id="3553">3553</a>
+<a href="#3554" id="3554">3554</a>
+<a href="#3555" id="3555">3555</a>
+<a href="#3556" id="3556">3556</a>
+<a href="#3557" id="3557">3557</a>
+<a href="#3558" id="3558">3558</a>
+<a href="#3559" id="3559">3559</a>
+<a href="#3560" id="3560">3560</a>
+<a href="#3561" id="3561">3561</a>
+<a href="#3562" id="3562">3562</a>
+<a href="#3563" id="3563">3563</a>
+<a href="#3564" id="3564">3564</a>
+<a href="#3565" id="3565">3565</a>
+<a href="#3566" id="3566">3566</a>
+<a href="#3567" id="3567">3567</a>
+<a href="#3568" id="3568">3568</a>
+<a href="#3569" id="3569">3569</a>
+<a href="#3570" id="3570">3570</a>
+<a href="#3571" id="3571">3571</a>
+<a href="#3572" id="3572">3572</a>
+<a href="#3573" id="3573">3573</a>
+<a href="#3574" id="3574">3574</a>
+<a href="#3575" id="3575">3575</a>
+<a href="#3576" id="3576">3576</a>
+<a href="#3577" id="3577">3577</a>
+<a href="#3578" id="3578">3578</a>
+<a href="#3579" id="3579">3579</a>
+<a href="#3580" id="3580">3580</a>
+<a href="#3581" id="3581">3581</a>
+<a href="#3582" id="3582">3582</a>
+<a href="#3583" id="3583">3583</a>
+<a href="#3584" id="3584">3584</a>
+<a href="#3585" id="3585">3585</a>
+<a href="#3586" id="3586">3586</a>
+<a href="#3587" id="3587">3587</a>
+<a href="#3588" id="3588">3588</a>
+<a href="#3589" id="3589">3589</a>
+<a href="#3590" id="3590">3590</a>
+<a href="#3591" id="3591">3591</a>
+<a href="#3592" id="3592">3592</a>
+<a href="#3593" id="3593">3593</a>
+<a href="#3594" id="3594">3594</a>
+<a href="#3595" id="3595">3595</a>
+<a href="#3596" id="3596">3596</a>
+<a href="#3597" id="3597">3597</a>
+<a href="#3598" id="3598">3598</a>
+<a href="#3599" id="3599">3599</a>
+<a href="#3600" id="3600">3600</a>
+<a href="#3601" id="3601">3601</a>
+<a href="#3602" id="3602">3602</a>
+<a href="#3603" id="3603">3603</a>
+<a href="#3604" id="3604">3604</a>
+<a href="#3605" id="3605">3605</a>
+<a href="#3606" id="3606">3606</a>
+<a href="#3607" id="3607">3607</a>
+<a href="#3608" id="3608">3608</a>
+<a href="#3609" id="3609">3609</a>
+<a href="#3610" id="3610">3610</a>
+<a href="#3611" id="3611">3611</a>
+<a href="#3612" id="3612">3612</a>
+<a href="#3613" id="3613">3613</a>
+<a href="#3614" id="3614">3614</a>
+<a href="#3615" id="3615">3615</a>
+<a href="#3616" id="3616">3616</a>
+<a href="#3617" id="3617">3617</a>
+<a href="#3618" id="3618">3618</a>
+<a href="#3619" id="3619">3619</a>
+<a href="#3620" id="3620">3620</a>
+<a href="#3621" id="3621">3621</a>
+<a href="#3622" id="3622">3622</a>
+<a href="#3623" id="3623">3623</a>
+<a href="#3624" id="3624">3624</a>
+<a href="#3625" id="3625">3625</a>
+<a href="#3626" id="3626">3626</a>
+<a href="#3627" id="3627">3627</a>
+<a href="#3628" id="3628">3628</a>
+<a href="#3629" id="3629">3629</a>
+<a href="#3630" id="3630">3630</a>
+<a href="#3631" id="3631">3631</a>
+<a href="#3632" id="3632">3632</a>
+<a href="#3633" id="3633">3633</a>
+<a href="#3634" id="3634">3634</a>
+<a href="#3635" id="3635">3635</a>
+<a href="#3636" id="3636">3636</a>
+<a href="#3637" id="3637">3637</a>
+<a href="#3638" id="3638">3638</a>
+<a href="#3639" id="3639">3639</a>
+<a href="#3640" id="3640">3640</a>
+<a href="#3641" id="3641">3641</a>
+<a href="#3642" id="3642">3642</a>
+<a href="#3643" id="3643">3643</a>
+<a href="#3644" id="3644">3644</a>
+<a href="#3645" id="3645">3645</a>
+<a href="#3646" id="3646">3646</a>
+<a href="#3647" id="3647">3647</a>
+<a href="#3648" id="3648">3648</a>
+<a href="#3649" id="3649">3649</a>
+<a href="#3650" id="3650">3650</a>
+<a href="#3651" id="3651">3651</a>
+<a href="#3652" id="3652">3652</a>
+<a href="#3653" id="3653">3653</a>
+<a href="#3654" id="3654">3654</a>
+<a href="#3655" id="3655">3655</a>
+<a href="#3656" id="3656">3656</a>
+<a href="#3657" id="3657">3657</a>
+<a href="#3658" id="3658">3658</a>
+<a href="#3659" id="3659">3659</a>
+<a href="#3660" id="3660">3660</a>
+<a href="#3661" id="3661">3661</a>
+<a href="#3662" id="3662">3662</a>
+<a href="#3663" id="3663">3663</a>
+<a href="#3664" id="3664">3664</a>
+<a href="#3665" id="3665">3665</a>
+<a href="#3666" id="3666">3666</a>
+<a href="#3667" id="3667">3667</a>
+<a href="#3668" id="3668">3668</a>
+<a href="#3669" id="3669">3669</a>
+<a href="#3670" id="3670">3670</a>
+<a href="#3671" id="3671">3671</a>
+<a href="#3672" id="3672">3672</a>
+<a href="#3673" id="3673">3673</a>
+<a href="#3674" id="3674">3674</a>
+<a href="#3675" id="3675">3675</a>
+<a href="#3676" id="3676">3676</a>
+<a href="#3677" id="3677">3677</a>
+<a href="#3678" id="3678">3678</a>
+<a href="#3679" id="3679">3679</a>
+<a href="#3680" id="3680">3680</a>
+<a href="#3681" id="3681">3681</a>
+<a href="#3682" id="3682">3682</a>
+<a href="#3683" id="3683">3683</a>
+<a href="#3684" id="3684">3684</a>
+<a href="#3685" id="3685">3685</a>
+<a href="#3686" id="3686">3686</a>
+<a href="#3687" id="3687">3687</a>
+<a href="#3688" id="3688">3688</a>
+<a href="#3689" id="3689">3689</a>
+<a href="#3690" id="3690">3690</a>
+<a href="#3691" id="3691">3691</a>
+<a href="#3692" id="3692">3692</a>
+<a href="#3693" id="3693">3693</a>
+<a href="#3694" id="3694">3694</a>
+<a href="#3695" id="3695">3695</a>
+<a href="#3696" id="3696">3696</a>
+<a href="#3697" id="3697">3697</a>
+<a href="#3698" id="3698">3698</a>
+<a href="#3699" id="3699">3699</a>
+<a href="#3700" id="3700">3700</a>
+<a href="#3701" id="3701">3701</a>
+<a href="#3702" id="3702">3702</a>
+<a href="#3703" id="3703">3703</a>
+<a href="#3704" id="3704">3704</a>
+<a href="#3705" id="3705">3705</a>
+<a href="#3706" id="3706">3706</a>
+<a href="#3707" id="3707">3707</a>
+<a href="#3708" id="3708">3708</a>
+<a href="#3709" id="3709">3709</a>
+<a href="#3710" id="3710">3710</a>
+<a href="#3711" id="3711">3711</a>
+<a href="#3712" id="3712">3712</a>
+<a href="#3713" id="3713">3713</a>
+<a href="#3714" id="3714">3714</a>
+<a href="#3715" id="3715">3715</a>
+<a href="#3716" id="3716">3716</a>
+<a href="#3717" id="3717">3717</a>
+<a href="#3718" id="3718">3718</a>
+<a href="#3719" id="3719">3719</a>
+<a href="#3720" id="3720">3720</a>
+<a href="#3721" id="3721">3721</a>
+<a href="#3722" id="3722">3722</a>
+<a href="#3723" id="3723">3723</a>
+<a href="#3724" id="3724">3724</a>
+<a href="#3725" id="3725">3725</a>
+<a href="#3726" id="3726">3726</a>
+<a href="#3727" id="3727">3727</a>
+<a href="#3728" id="3728">3728</a>
+<a href="#3729" id="3729">3729</a>
+<a href="#3730" id="3730">3730</a>
+<a href="#3731" id="3731">3731</a>
+<a href="#3732" id="3732">3732</a>
+<a href="#3733" id="3733">3733</a>
+<a href="#3734" id="3734">3734</a>
+<a href="#3735" id="3735">3735</a>
+<a href="#3736" id="3736">3736</a>
+<a href="#3737" id="3737">3737</a>
+<a href="#3738" id="3738">3738</a>
+<a href="#3739" id="3739">3739</a>
+<a href="#3740" id="3740">3740</a>
+<a href="#3741" id="3741">3741</a>
+<a href="#3742" id="3742">3742</a>
+<a href="#3743" id="3743">3743</a>
+<a href="#3744" id="3744">3744</a>
+<a href="#3745" id="3745">3745</a>
+<a href="#3746" id="3746">3746</a>
+<a href="#3747" id="3747">3747</a>
+<a href="#3748" id="3748">3748</a>
+<a href="#3749" id="3749">3749</a>
+<a href="#3750" id="3750">3750</a>
+<a href="#3751" id="3751">3751</a>
+<a href="#3752" id="3752">3752</a>
+<a href="#3753" id="3753">3753</a>
+<a href="#3754" id="3754">3754</a>
+<a href="#3755" id="3755">3755</a>
+<a href="#3756" id="3756">3756</a>
+<a href="#3757" id="3757">3757</a>
+<a href="#3758" id="3758">3758</a>
+<a href="#3759" id="3759">3759</a>
+<a href="#3760" id="3760">3760</a>
+<a href="#3761" id="3761">3761</a>
+<a href="#3762" id="3762">3762</a>
+<a href="#3763" id="3763">3763</a>
+<a href="#3764" id="3764">3764</a>
+<a href="#3765" id="3765">3765</a>
+<a href="#3766" id="3766">3766</a>
+<a href="#3767" id="3767">3767</a>
+<a href="#3768" id="3768">3768</a>
+<a href="#3769" id="3769">3769</a>
+<a href="#3770" id="3770">3770</a>
+<a href="#3771" id="3771">3771</a>
+<a href="#3772" id="3772">3772</a>
+<a href="#3773" id="3773">3773</a>
+<a href="#3774" id="3774">3774</a>
+<a href="#3775" id="3775">3775</a>
+<a href="#3776" id="3776">3776</a>
+<a href="#3777" id="3777">3777</a>
+<a href="#3778" id="3778">3778</a>
+<a href="#3779" id="3779">3779</a>
+<a href="#3780" id="3780">3780</a>
+<a href="#3781" id="3781">3781</a>
+<a href="#3782" id="3782">3782</a>
+<a href="#3783" id="3783">3783</a>
+<a href="#3784" id="3784">3784</a>
+<a href="#3785" id="3785">3785</a>
+<a href="#3786" id="3786">3786</a>
+<a href="#3787" id="3787">3787</a>
+<a href="#3788" id="3788">3788</a>
+<a href="#3789" id="3789">3789</a>
+<a href="#3790" id="3790">3790</a>
+<a href="#3791" id="3791">3791</a>
+<a href="#3792" id="3792">3792</a>
+<a href="#3793" id="3793">3793</a>
+<a href="#3794" id="3794">3794</a>
+<a href="#3795" id="3795">3795</a>
+<a href="#3796" id="3796">3796</a>
+<a href="#3797" id="3797">3797</a>
+<a href="#3798" id="3798">3798</a>
+<a href="#3799" id="3799">3799</a>
+<a href="#3800" id="3800">3800</a>
+<a href="#3801" id="3801">3801</a>
+<a href="#3802" id="3802">3802</a>
+<a href="#3803" id="3803">3803</a>
+<a href="#3804" id="3804">3804</a>
+<a href="#3805" id="3805">3805</a>
+<a href="#3806" id="3806">3806</a>
+<a href="#3807" id="3807">3807</a>
+<a href="#3808" id="3808">3808</a>
+<a href="#3809" id="3809">3809</a>
+<a href="#3810" id="3810">3810</a>
+<a href="#3811" id="3811">3811</a>
+<a href="#3812" id="3812">3812</a>
+<a href="#3813" id="3813">3813</a>
+<a href="#3814" id="3814">3814</a>
+<a href="#3815" id="3815">3815</a>
+<a href="#3816" id="3816">3816</a>
+<a href="#3817" id="3817">3817</a>
+<a href="#3818" id="3818">3818</a>
+<a href="#3819" id="3819">3819</a>
+<a href="#3820" id="3820">3820</a>
+<a href="#3821" id="3821">3821</a>
+<a href="#3822" id="3822">3822</a>
+<a href="#3823" id="3823">3823</a>
+<a href="#3824" id="3824">3824</a>
+<a href="#3825" id="3825">3825</a>
+<a href="#3826" id="3826">3826</a>
+<a href="#3827" id="3827">3827</a>
+<a href="#3828" id="3828">3828</a>
+<a href="#3829" id="3829">3829</a>
+<a href="#3830" id="3830">3830</a>
+<a href="#3831" id="3831">3831</a>
+<a href="#3832" id="3832">3832</a>
+<a href="#3833" id="3833">3833</a>
+<a href="#3834" id="3834">3834</a>
+<a href="#3835" id="3835">3835</a>
+<a href="#3836" id="3836">3836</a>
+<a href="#3837" id="3837">3837</a>
+<a href="#3838" id="3838">3838</a>
+<a href="#3839" id="3839">3839</a>
+<a href="#3840" id="3840">3840</a>
+<a href="#3841" id="3841">3841</a>
+<a href="#3842" id="3842">3842</a>
+<a href="#3843" id="3843">3843</a>
+<a href="#3844" id="3844">3844</a>
+<a href="#3845" id="3845">3845</a>
+<a href="#3846" id="3846">3846</a>
+<a href="#3847" id="3847">3847</a>
+<a href="#3848" id="3848">3848</a>
+<a href="#3849" id="3849">3849</a>
+<a href="#3850" id="3850">3850</a>
+<a href="#3851" id="3851">3851</a>
+<a href="#3852" id="3852">3852</a>
+<a href="#3853" id="3853">3853</a>
+<a href="#3854" id="3854">3854</a>
+<a href="#3855" id="3855">3855</a>
+<a href="#3856" id="3856">3856</a>
+<a href="#3857" id="3857">3857</a>
+<a href="#3858" id="3858">3858</a>
+<a href="#3859" id="3859">3859</a>
+<a href="#3860" id="3860">3860</a>
+<a href="#3861" id="3861">3861</a>
+<a href="#3862" id="3862">3862</a>
+<a href="#3863" id="3863">3863</a>
+<a href="#3864" id="3864">3864</a>
+<a href="#3865" id="3865">3865</a>
+<a href="#3866" id="3866">3866</a>
+<a href="#3867" id="3867">3867</a>
+<a href="#3868" id="3868">3868</a>
+<a href="#3869" id="3869">3869</a>
+<a href="#3870" id="3870">3870</a>
+<a href="#3871" id="3871">3871</a>
+<a href="#3872" id="3872">3872</a>
+<a href="#3873" id="3873">3873</a>
+<a href="#3874" id="3874">3874</a>
+<a href="#3875" id="3875">3875</a>
+<a href="#3876" id="3876">3876</a>
+<a href="#3877" id="3877">3877</a>
+<a href="#3878" id="3878">3878</a>
+<a href="#3879" id="3879">3879</a>
+<a href="#3880" id="3880">3880</a>
+<a href="#3881" id="3881">3881</a>
+<a href="#3882" id="3882">3882</a>
+<a href="#3883" id="3883">3883</a>
+<a href="#3884" id="3884">3884</a>
+<a href="#3885" id="3885">3885</a>
+<a href="#3886" id="3886">3886</a>
+<a href="#3887" id="3887">3887</a>
+<a href="#3888" id="3888">3888</a>
+<a href="#3889" id="3889">3889</a>
+<a href="#3890" id="3890">3890</a>
+<a href="#3891" id="3891">3891</a>
+<a href="#3892" id="3892">3892</a>
+<a href="#3893" id="3893">3893</a>
+<a href="#3894" id="3894">3894</a>
+<a href="#3895" id="3895">3895</a>
+<a href="#3896" id="3896">3896</a>
+<a href="#3897" id="3897">3897</a>
+<a href="#3898" id="3898">3898</a>
+<a href="#3899" id="3899">3899</a>
+<a href="#3900" id="3900">3900</a>
+<a href="#3901" id="3901">3901</a>
+<a href="#3902" id="3902">3902</a>
+<a href="#3903" id="3903">3903</a>
+<a href="#3904" id="3904">3904</a>
+<a href="#3905" id="3905">3905</a>
+<a href="#3906" id="3906">3906</a>
+<a href="#3907" id="3907">3907</a>
+<a href="#3908" id="3908">3908</a>
+<a href="#3909" id="3909">3909</a>
+<a href="#3910" id="3910">3910</a>
+<a href="#3911" id="3911">3911</a>
+<a href="#3912" id="3912">3912</a>
+<a href="#3913" id="3913">3913</a>
+<a href="#3914" id="3914">3914</a>
+<a href="#3915" id="3915">3915</a>
+<a href="#3916" id="3916">3916</a>
+<a href="#3917" id="3917">3917</a>
+<a href="#3918" id="3918">3918</a>
+<a href="#3919" id="3919">3919</a>
+<a href="#3920" id="3920">3920</a>
+<a href="#3921" id="3921">3921</a>
+<a href="#3922" id="3922">3922</a>
+<a href="#3923" id="3923">3923</a>
+<a href="#3924" id="3924">3924</a>
+<a href="#3925" id="3925">3925</a>
+<a href="#3926" id="3926">3926</a>
+<a href="#3927" id="3927">3927</a>
+<a href="#3928" id="3928">3928</a>
+<a href="#3929" id="3929">3929</a>
+<a href="#3930" id="3930">3930</a>
+<a href="#3931" id="3931">3931</a>
+<a href="#3932" id="3932">3932</a>
+<a href="#3933" id="3933">3933</a>
+<a href="#3934" id="3934">3934</a>
+<a href="#3935" id="3935">3935</a>
+<a href="#3936" id="3936">3936</a>
+<a href="#3937" id="3937">3937</a>
+<a href="#3938" id="3938">3938</a>
+<a href="#3939" id="3939">3939</a>
+<a href="#3940" id="3940">3940</a>
+<a href="#3941" id="3941">3941</a>
+<a href="#3942" id="3942">3942</a>
+<a href="#3943" id="3943">3943</a>
+<a href="#3944" id="3944">3944</a>
+<a href="#3945" id="3945">3945</a>
+<a href="#3946" id="3946">3946</a>
+<a href="#3947" id="3947">3947</a>
+<a href="#3948" id="3948">3948</a>
+<a href="#3949" id="3949">3949</a>
+<a href="#3950" id="3950">3950</a>
+<a href="#3951" id="3951">3951</a>
+<a href="#3952" id="3952">3952</a>
+<a href="#3953" id="3953">3953</a>
+<a href="#3954" id="3954">3954</a>
+<a href="#3955" id="3955">3955</a>
+<a href="#3956" id="3956">3956</a>
+<a href="#3957" id="3957">3957</a>
+<a href="#3958" id="3958">3958</a>
+<a href="#3959" id="3959">3959</a>
+<a href="#3960" id="3960">3960</a>
+<a href="#3961" id="3961">3961</a>
+<a href="#3962" id="3962">3962</a>
+<a href="#3963" id="3963">3963</a>
+<a href="#3964" id="3964">3964</a>
+<a href="#3965" id="3965">3965</a>
+<a href="#3966" id="3966">3966</a>
+<a href="#3967" id="3967">3967</a>
+<a href="#3968" id="3968">3968</a>
+<a href="#3969" id="3969">3969</a>
+<a href="#3970" id="3970">3970</a>
+<a href="#3971" id="3971">3971</a>
+<a href="#3972" id="3972">3972</a>
+<a href="#3973" id="3973">3973</a>
+<a href="#3974" id="3974">3974</a>
+<a href="#3975" id="3975">3975</a>
+<a href="#3976" id="3976">3976</a>
+<a href="#3977" id="3977">3977</a>
+<a href="#3978" id="3978">3978</a>
+<a href="#3979" id="3979">3979</a>
+<a href="#3980" id="3980">3980</a>
+<a href="#3981" id="3981">3981</a>
+<a href="#3982" id="3982">3982</a>
+<a href="#3983" id="3983">3983</a>
+<a href="#3984" id="3984">3984</a>
+<a href="#3985" id="3985">3985</a>
+<a href="#3986" id="3986">3986</a>
+<a href="#3987" id="3987">3987</a>
+<a href="#3988" id="3988">3988</a>
+<a href="#3989" id="3989">3989</a>
+<a href="#3990" id="3990">3990</a>
+<a href="#3991" id="3991">3991</a>
+<a href="#3992" id="3992">3992</a>
+<a href="#3993" id="3993">3993</a>
+<a href="#3994" id="3994">3994</a>
+<a href="#3995" id="3995">3995</a>
+<a href="#3996" id="3996">3996</a>
+<a href="#3997" id="3997">3997</a>
+<a href="#3998" id="3998">3998</a>
+<a href="#3999" id="3999">3999</a>
+<a href="#4000" id="4000">4000</a>
+<a href="#4001" id="4001">4001</a>
+<a href="#4002" id="4002">4002</a>
+<a href="#4003" id="4003">4003</a>
+<a href="#4004" id="4004">4004</a>
+<a href="#4005" id="4005">4005</a>
+<a href="#4006" id="4006">4006</a>
+<a href="#4007" id="4007">4007</a>
+<a href="#4008" id="4008">4008</a>
+<a href="#4009" id="4009">4009</a>
+<a href="#4010" id="4010">4010</a>
+<a href="#4011" id="4011">4011</a>
+<a href="#4012" id="4012">4012</a>
+<a href="#4013" id="4013">4013</a>
+<a href="#4014" id="4014">4014</a>
+<a href="#4015" id="4015">4015</a>
+<a href="#4016" id="4016">4016</a>
+<a href="#4017" id="4017">4017</a>
+<a href="#4018" id="4018">4018</a>
+<a href="#4019" id="4019">4019</a>
+<a href="#4020" id="4020">4020</a>
+<a href="#4021" id="4021">4021</a>
+<a href="#4022" id="4022">4022</a>
+<a href="#4023" id="4023">4023</a>
+<a href="#4024" id="4024">4024</a>
+<a href="#4025" id="4025">4025</a>
+<a href="#4026" id="4026">4026</a>
+<a href="#4027" id="4027">4027</a>
+<a href="#4028" id="4028">4028</a>
+<a href="#4029" id="4029">4029</a>
+<a href="#4030" id="4030">4030</a>
+<a href="#4031" id="4031">4031</a>
+<a href="#4032" id="4032">4032</a>
+<a href="#4033" id="4033">4033</a>
+<a href="#4034" id="4034">4034</a>
+<a href="#4035" id="4035">4035</a>
+<a href="#4036" id="4036">4036</a>
+<a href="#4037" id="4037">4037</a>
+<a href="#4038" id="4038">4038</a>
+<a href="#4039" id="4039">4039</a>
+<a href="#4040" id="4040">4040</a>
+<a href="#4041" id="4041">4041</a>
+<a href="#4042" id="4042">4042</a>
+<a href="#4043" id="4043">4043</a>
+<a href="#4044" id="4044">4044</a>
+<a href="#4045" id="4045">4045</a>
+<a href="#4046" id="4046">4046</a>
+<a href="#4047" id="4047">4047</a>
+<a href="#4048" id="4048">4048</a>
+<a href="#4049" id="4049">4049</a>
+<a href="#4050" id="4050">4050</a>
+<a href="#4051" id="4051">4051</a>
+<a href="#4052" id="4052">4052</a>
+<a href="#4053" id="4053">4053</a>
+<a href="#4054" id="4054">4054</a>
+<a href="#4055" id="4055">4055</a>
+<a href="#4056" id="4056">4056</a>
+<a href="#4057" id="4057">4057</a>
+<a href="#4058" id="4058">4058</a>
+<a href="#4059" id="4059">4059</a>
+<a href="#4060" id="4060">4060</a>
+<a href="#4061" id="4061">4061</a>
+<a href="#4062" id="4062">4062</a>
+<a href="#4063" id="4063">4063</a>
+<a href="#4064" id="4064">4064</a>
+<a href="#4065" id="4065">4065</a>
+<a href="#4066" id="4066">4066</a>
+<a href="#4067" id="4067">4067</a>
+<a href="#4068" id="4068">4068</a>
+<a href="#4069" id="4069">4069</a>
+<a href="#4070" id="4070">4070</a>
+<a href="#4071" id="4071">4071</a>
+<a href="#4072" id="4072">4072</a>
+<a href="#4073" id="4073">4073</a>
+<a href="#4074" id="4074">4074</a>
+<a href="#4075" id="4075">4075</a>
+<a href="#4076" id="4076">4076</a>
+<a href="#4077" id="4077">4077</a>
+<a href="#4078" id="4078">4078</a>
+<a href="#4079" id="4079">4079</a>
+<a href="#4080" id="4080">4080</a>
+<a href="#4081" id="4081">4081</a>
+<a href="#4082" id="4082">4082</a>
+<a href="#4083" id="4083">4083</a>
+<a href="#4084" id="4084">4084</a>
+<a href="#4085" id="4085">4085</a>
+<a href="#4086" id="4086">4086</a>
+<a href="#4087" id="4087">4087</a>
+<a href="#4088" id="4088">4088</a>
+<a href="#4089" id="4089">4089</a>
+<a href="#4090" id="4090">4090</a>
+<a href="#4091" id="4091">4091</a>
+<a href="#4092" id="4092">4092</a>
+<a href="#4093" id="4093">4093</a>
+<a href="#4094" id="4094">4094</a>
+<a href="#4095" id="4095">4095</a>
+<a href="#4096" id="4096">4096</a>
+<a href="#4097" id="4097">4097</a>
+<a href="#4098" id="4098">4098</a>
+<a href="#4099" id="4099">4099</a>
+<a href="#4100" id="4100">4100</a>
+<a href="#4101" id="4101">4101</a>
+<a href="#4102" id="4102">4102</a>
+<a href="#4103" id="4103">4103</a>
+<a href="#4104" id="4104">4104</a>
+<a href="#4105" id="4105">4105</a>
+<a href="#4106" id="4106">4106</a>
+<a href="#4107" id="4107">4107</a>
+<a href="#4108" id="4108">4108</a>
+<a href="#4109" id="4109">4109</a>
+<a href="#4110" id="4110">4110</a>
+<a href="#4111" id="4111">4111</a>
+<a href="#4112" id="4112">4112</a>
+<a href="#4113" id="4113">4113</a>
+<a href="#4114" id="4114">4114</a>
+<a href="#4115" id="4115">4115</a>
+<a href="#4116" id="4116">4116</a>
+<a href="#4117" id="4117">4117</a>
+<a href="#4118" id="4118">4118</a>
+<a href="#4119" id="4119">4119</a>
+<a href="#4120" id="4120">4120</a>
+<a href="#4121" id="4121">4121</a>
+<a href="#4122" id="4122">4122</a>
+<a href="#4123" id="4123">4123</a>
+<a href="#4124" id="4124">4124</a>
+<a href="#4125" id="4125">4125</a>
+<a href="#4126" id="4126">4126</a>
+<a href="#4127" id="4127">4127</a>
+<a href="#4128" id="4128">4128</a>
+<a href="#4129" id="4129">4129</a>
+<a href="#4130" id="4130">4130</a>
+<a href="#4131" id="4131">4131</a>
+<a href="#4132" id="4132">4132</a>
+<a href="#4133" id="4133">4133</a>
+<a href="#4134" id="4134">4134</a>
+<a href="#4135" id="4135">4135</a>
+<a href="#4136" id="4136">4136</a>
+<a href="#4137" id="4137">4137</a>
+<a href="#4138" id="4138">4138</a>
+<a href="#4139" id="4139">4139</a>
+<a href="#4140" id="4140">4140</a>
+<a href="#4141" id="4141">4141</a>
+<a href="#4142" id="4142">4142</a>
+<a href="#4143" id="4143">4143</a>
+<a href="#4144" id="4144">4144</a>
+<a href="#4145" id="4145">4145</a>
+<a href="#4146" id="4146">4146</a>
+<a href="#4147" id="4147">4147</a>
+<a href="#4148" id="4148">4148</a>
+<a href="#4149" id="4149">4149</a>
+<a href="#4150" id="4150">4150</a>
+<a href="#4151" id="4151">4151</a>
+<a href="#4152" id="4152">4152</a>
+<a href="#4153" id="4153">4153</a>
+<a href="#4154" id="4154">4154</a>
+<a href="#4155" id="4155">4155</a>
+<a href="#4156" id="4156">4156</a>
+<a href="#4157" id="4157">4157</a>
+<a href="#4158" id="4158">4158</a>
+<a href="#4159" id="4159">4159</a>
+<a href="#4160" id="4160">4160</a>
+<a href="#4161" id="4161">4161</a>
+<a href="#4162" id="4162">4162</a>
+<a href="#4163" id="4163">4163</a>
+<a href="#4164" id="4164">4164</a>
+<a href="#4165" id="4165">4165</a>
+<a href="#4166" id="4166">4166</a>
+<a href="#4167" id="4167">4167</a>
+<a href="#4168" id="4168">4168</a>
+<a href="#4169" id="4169">4169</a>
+<a href="#4170" id="4170">4170</a>
+<a href="#4171" id="4171">4171</a>
+<a href="#4172" id="4172">4172</a>
+<a href="#4173" id="4173">4173</a>
+<a href="#4174" id="4174">4174</a>
+<a href="#4175" id="4175">4175</a>
+<a href="#4176" id="4176">4176</a>
+<a href="#4177" id="4177">4177</a>
+<a href="#4178" id="4178">4178</a>
+<a href="#4179" id="4179">4179</a>
+<a href="#4180" id="4180">4180</a>
+<a href="#4181" id="4181">4181</a>
+<a href="#4182" id="4182">4182</a>
+<a href="#4183" id="4183">4183</a>
+<a href="#4184" id="4184">4184</a>
+<a href="#4185" id="4185">4185</a>
+<a href="#4186" id="4186">4186</a>
+<a href="#4187" id="4187">4187</a>
+<a href="#4188" id="4188">4188</a>
+<a href="#4189" id="4189">4189</a>
+<a href="#4190" id="4190">4190</a>
+<a href="#4191" id="4191">4191</a>
+<a href="#4192" id="4192">4192</a>
+<a href="#4193" id="4193">4193</a>
+<a href="#4194" id="4194">4194</a>
+<a href="#4195" id="4195">4195</a>
+<a href="#4196" id="4196">4196</a>
+<a href="#4197" id="4197">4197</a>
+<a href="#4198" id="4198">4198</a>
+<a href="#4199" id="4199">4199</a>
+<a href="#4200" id="4200">4200</a>
+<a href="#4201" id="4201">4201</a>
+<a href="#4202" id="4202">4202</a>
+<a href="#4203" id="4203">4203</a>
+<a href="#4204" id="4204">4204</a>
+<a href="#4205" id="4205">4205</a>
+<a href="#4206" id="4206">4206</a>
+<a href="#4207" id="4207">4207</a>
+<a href="#4208" id="4208">4208</a>
+<a href="#4209" id="4209">4209</a>
+<a href="#4210" id="4210">4210</a>
+<a href="#4211" id="4211">4211</a>
+<a href="#4212" id="4212">4212</a>
+<a href="#4213" id="4213">4213</a>
+<a href="#4214" id="4214">4214</a>
+<a href="#4215" id="4215">4215</a>
+<a href="#4216" id="4216">4216</a>
+<a href="#4217" id="4217">4217</a>
+<a href="#4218" id="4218">4218</a>
+<a href="#4219" id="4219">4219</a>
+<a href="#4220" id="4220">4220</a>
+<a href="#4221" id="4221">4221</a>
+<a href="#4222" id="4222">4222</a>
+<a href="#4223" id="4223">4223</a>
+<a href="#4224" id="4224">4224</a>
+<a href="#4225" id="4225">4225</a>
+<a href="#4226" id="4226">4226</a>
+<a href="#4227" id="4227">4227</a>
+<a href="#4228" id="4228">4228</a>
+<a href="#4229" id="4229">4229</a>
+<a href="#4230" id="4230">4230</a>
+<a href="#4231" id="4231">4231</a>
+<a href="#4232" id="4232">4232</a>
+<a href="#4233" id="4233">4233</a>
+<a href="#4234" id="4234">4234</a>
+<a href="#4235" id="4235">4235</a>
+<a href="#4236" id="4236">4236</a>
+<a href="#4237" id="4237">4237</a>
+<a href="#4238" id="4238">4238</a>
+<a href="#4239" id="4239">4239</a>
+<a href="#4240" id="4240">4240</a>
+<a href="#4241" id="4241">4241</a>
+<a href="#4242" id="4242">4242</a>
+<a href="#4243" id="4243">4243</a>
+<a href="#4244" id="4244">4244</a>
+<a href="#4245" id="4245">4245</a>
+<a href="#4246" id="4246">4246</a>
+<a href="#4247" id="4247">4247</a>
+<a href="#4248" id="4248">4248</a>
+<a href="#4249" id="4249">4249</a>
+<a href="#4250" id="4250">4250</a>
+<a href="#4251" id="4251">4251</a>
+<a href="#4252" id="4252">4252</a>
+<a href="#4253" id="4253">4253</a>
+<a href="#4254" id="4254">4254</a>
+<a href="#4255" id="4255">4255</a>
+<a href="#4256" id="4256">4256</a>
+<a href="#4257" id="4257">4257</a>
+<a href="#4258" id="4258">4258</a>
+<a href="#4259" id="4259">4259</a>
+<a href="#4260" id="4260">4260</a>
+<a href="#4261" id="4261">4261</a>
+<a href="#4262" id="4262">4262</a>
+<a href="#4263" id="4263">4263</a>
+<a href="#4264" id="4264">4264</a>
+<a href="#4265" id="4265">4265</a>
+<a href="#4266" id="4266">4266</a>
+<a href="#4267" id="4267">4267</a>
+<a href="#4268" id="4268">4268</a>
+<a href="#4269" id="4269">4269</a>
+<a href="#4270" id="4270">4270</a>
+<a href="#4271" id="4271">4271</a>
+<a href="#4272" id="4272">4272</a>
+<a href="#4273" id="4273">4273</a>
+<a href="#4274" id="4274">4274</a>
+<a href="#4275" id="4275">4275</a>
+<a href="#4276" id="4276">4276</a>
+<a href="#4277" id="4277">4277</a>
+<a href="#4278" id="4278">4278</a>
+<a href="#4279" id="4279">4279</a>
+<a href="#4280" id="4280">4280</a>
+<a href="#4281" id="4281">4281</a>
+<a href="#4282" id="4282">4282</a>
+<a href="#4283" id="4283">4283</a>
+<a href="#4284" id="4284">4284</a>
+<a href="#4285" id="4285">4285</a>
+<a href="#4286" id="4286">4286</a>
+<a href="#4287" id="4287">4287</a>
+<a href="#4288" id="4288">4288</a>
+<a href="#4289" id="4289">4289</a>
+<a href="#4290" id="4290">4290</a>
+<a href="#4291" id="4291">4291</a>
+<a href="#4292" id="4292">4292</a>
+<a href="#4293" id="4293">4293</a>
+<a href="#4294" id="4294">4294</a>
+<a href="#4295" id="4295">4295</a>
+<a href="#4296" id="4296">4296</a>
+<a href="#4297" id="4297">4297</a>
+<a href="#4298" id="4298">4298</a>
+<a href="#4299" id="4299">4299</a>
+<a href="#4300" id="4300">4300</a>
+<a href="#4301" id="4301">4301</a>
+<a href="#4302" id="4302">4302</a>
+<a href="#4303" id="4303">4303</a>
+<a href="#4304" id="4304">4304</a>
+<a href="#4305" id="4305">4305</a>
+<a href="#4306" id="4306">4306</a>
+<a href="#4307" id="4307">4307</a>
+<a href="#4308" id="4308">4308</a>
+<a href="#4309" id="4309">4309</a>
+<a href="#4310" id="4310">4310</a>
+<a href="#4311" id="4311">4311</a>
+<a href="#4312" id="4312">4312</a>
+<a href="#4313" id="4313">4313</a>
+<a href="#4314" id="4314">4314</a>
+<a href="#4315" id="4315">4315</a>
+<a href="#4316" id="4316">4316</a>
+<a href="#4317" id="4317">4317</a>
+<a href="#4318" id="4318">4318</a>
+<a href="#4319" id="4319">4319</a>
+<a href="#4320" id="4320">4320</a>
+<a href="#4321" id="4321">4321</a>
+<a href="#4322" id="4322">4322</a>
+<a href="#4323" id="4323">4323</a>
+<a href="#4324" id="4324">4324</a>
+<a href="#4325" id="4325">4325</a>
+<a href="#4326" id="4326">4326</a>
+<a href="#4327" id="4327">4327</a>
+<a href="#4328" id="4328">4328</a>
+<a href="#4329" id="4329">4329</a>
+<a href="#4330" id="4330">4330</a>
+<a href="#4331" id="4331">4331</a>
+<a href="#4332" id="4332">4332</a>
+<a href="#4333" id="4333">4333</a>
+<a href="#4334" id="4334">4334</a>
+<a href="#4335" id="4335">4335</a>
+<a href="#4336" id="4336">4336</a>
+<a href="#4337" id="4337">4337</a>
+<a href="#4338" id="4338">4338</a>
+<a href="#4339" id="4339">4339</a>
+<a href="#4340" id="4340">4340</a>
+<a href="#4341" id="4341">4341</a>
+<a href="#4342" id="4342">4342</a>
+<a href="#4343" id="4343">4343</a>
+<a href="#4344" id="4344">4344</a>
+<a href="#4345" id="4345">4345</a>
+<a href="#4346" id="4346">4346</a>
+<a href="#4347" id="4347">4347</a>
+<a href="#4348" id="4348">4348</a>
+<a href="#4349" id="4349">4349</a>
+<a href="#4350" id="4350">4350</a>
+<a href="#4351" id="4351">4351</a>
+<a href="#4352" id="4352">4352</a>
+<a href="#4353" id="4353">4353</a>
+<a href="#4354" id="4354">4354</a>
+<a href="#4355" id="4355">4355</a>
+<a href="#4356" id="4356">4356</a>
+<a href="#4357" id="4357">4357</a>
+<a href="#4358" id="4358">4358</a>
+<a href="#4359" id="4359">4359</a>
+<a href="#4360" id="4360">4360</a>
+<a href="#4361" id="4361">4361</a>
+<a href="#4362" id="4362">4362</a>
+<a href="#4363" id="4363">4363</a>
+<a href="#4364" id="4364">4364</a>
+<a href="#4365" id="4365">4365</a>
+<a href="#4366" id="4366">4366</a>
+<a href="#4367" id="4367">4367</a>
+<a href="#4368" id="4368">4368</a>
+<a href="#4369" id="4369">4369</a>
+<a href="#4370" id="4370">4370</a>
+<a href="#4371" id="4371">4371</a>
+<a href="#4372" id="4372">4372</a>
+<a href="#4373" id="4373">4373</a>
+<a href="#4374" id="4374">4374</a>
+<a href="#4375" id="4375">4375</a>
+<a href="#4376" id="4376">4376</a>
+<a href="#4377" id="4377">4377</a>
+<a href="#4378" id="4378">4378</a>
+<a href="#4379" id="4379">4379</a>
+<a href="#4380" id="4380">4380</a>
+<a href="#4381" id="4381">4381</a>
+<a href="#4382" id="4382">4382</a>
+<a href="#4383" id="4383">4383</a>
+<a href="#4384" id="4384">4384</a>
+<a href="#4385" id="4385">4385</a>
+<a href="#4386" id="4386">4386</a>
+<a href="#4387" id="4387">4387</a>
+<a href="#4388" id="4388">4388</a>
+<a href="#4389" id="4389">4389</a>
+<a href="#4390" id="4390">4390</a>
+<a href="#4391" id="4391">4391</a>
+<a href="#4392" id="4392">4392</a>
+<a href="#4393" id="4393">4393</a>
+<a href="#4394" id="4394">4394</a>
+<a href="#4395" id="4395">4395</a>
+<a href="#4396" id="4396">4396</a>
+<a href="#4397" id="4397">4397</a>
+<a href="#4398" id="4398">4398</a>
+<a href="#4399" id="4399">4399</a>
+<a href="#4400" id="4400">4400</a>
+<a href="#4401" id="4401">4401</a>
+<a href="#4402" id="4402">4402</a>
+<a href="#4403" id="4403">4403</a>
+<a href="#4404" id="4404">4404</a>
+<a href="#4405" id="4405">4405</a>
+<a href="#4406" id="4406">4406</a>
+<a href="#4407" id="4407">4407</a>
+<a href="#4408" id="4408">4408</a>
+<a href="#4409" id="4409">4409</a>
+<a href="#4410" id="4410">4410</a>
+<a href="#4411" id="4411">4411</a>
+<a href="#4412" id="4412">4412</a>
+<a href="#4413" id="4413">4413</a>
+<a href="#4414" id="4414">4414</a>
+<a href="#4415" id="4415">4415</a>
+<a href="#4416" id="4416">4416</a>
+<a href="#4417" id="4417">4417</a>
+<a href="#4418" id="4418">4418</a>
+<a href="#4419" id="4419">4419</a>
+<a href="#4420" id="4420">4420</a>
+<a href="#4421" id="4421">4421</a>
+<a href="#4422" id="4422">4422</a>
+<a href="#4423" id="4423">4423</a>
+<a href="#4424" id="4424">4424</a>
+<a href="#4425" id="4425">4425</a>
+<a href="#4426" id="4426">4426</a>
+<a href="#4427" id="4427">4427</a>
+<a href="#4428" id="4428">4428</a>
+<a href="#4429" id="4429">4429</a>
+<a href="#4430" id="4430">4430</a>
+<a href="#4431" id="4431">4431</a>
+<a href="#4432" id="4432">4432</a>
+<a href="#4433" id="4433">4433</a>
+<a href="#4434" id="4434">4434</a>
+<a href="#4435" id="4435">4435</a>
+<a href="#4436" id="4436">4436</a>
+<a href="#4437" id="4437">4437</a>
+<a href="#4438" id="4438">4438</a>
+<a href="#4439" id="4439">4439</a>
+<a href="#4440" id="4440">4440</a>
+<a href="#4441" id="4441">4441</a>
+<a href="#4442" id="4442">4442</a>
+<a href="#4443" id="4443">4443</a>
+<a href="#4444" id="4444">4444</a>
+<a href="#4445" id="4445">4445</a>
+<a href="#4446" id="4446">4446</a>
+<a href="#4447" id="4447">4447</a>
+<a href="#4448" id="4448">4448</a>
+<a href="#4449" id="4449">4449</a>
+<a href="#4450" id="4450">4450</a>
+<a href="#4451" id="4451">4451</a>
+<a href="#4452" id="4452">4452</a>
+<a href="#4453" id="4453">4453</a>
+<a href="#4454" id="4454">4454</a>
+<a href="#4455" id="4455">4455</a>
+<a href="#4456" id="4456">4456</a>
+<a href="#4457" id="4457">4457</a>
+<a href="#4458" id="4458">4458</a>
+<a href="#4459" id="4459">4459</a>
+<a href="#4460" id="4460">4460</a>
+<a href="#4461" id="4461">4461</a>
+<a href="#4462" id="4462">4462</a>
+<a href="#4463" id="4463">4463</a>
+<a href="#4464" id="4464">4464</a>
+<a href="#4465" id="4465">4465</a>
+<a href="#4466" id="4466">4466</a>
+<a href="#4467" id="4467">4467</a>
+<a href="#4468" id="4468">4468</a>
+<a href="#4469" id="4469">4469</a>
+<a href="#4470" id="4470">4470</a>
+<a href="#4471" id="4471">4471</a>
+<a href="#4472" id="4472">4472</a>
+<a href="#4473" id="4473">4473</a>
+<a href="#4474" id="4474">4474</a>
+<a href="#4475" id="4475">4475</a>
+<a href="#4476" id="4476">4476</a>
+<a href="#4477" id="4477">4477</a>
+<a href="#4478" id="4478">4478</a>
+<a href="#4479" id="4479">4479</a>
+<a href="#4480" id="4480">4480</a>
+<a href="#4481" id="4481">4481</a>
+<a href="#4482" id="4482">4482</a>
+<a href="#4483" id="4483">4483</a>
+<a href="#4484" id="4484">4484</a>
+<a href="#4485" id="4485">4485</a>
+<a href="#4486" id="4486">4486</a>
+<a href="#4487" id="4487">4487</a>
+<a href="#4488" id="4488">4488</a>
+<a href="#4489" id="4489">4489</a>
+<a href="#4490" id="4490">4490</a>
+<a href="#4491" id="4491">4491</a>
+<a href="#4492" id="4492">4492</a>
+<a href="#4493" id="4493">4493</a>
+<a href="#4494" id="4494">4494</a>
+<a href="#4495" id="4495">4495</a>
+<a href="#4496" id="4496">4496</a>
+<a href="#4497" id="4497">4497</a>
+<a href="#4498" id="4498">4498</a>
+<a href="#4499" id="4499">4499</a>
+<a href="#4500" id="4500">4500</a>
+<a href="#4501" id="4501">4501</a>
+<a href="#4502" id="4502">4502</a>
+<a href="#4503" id="4503">4503</a>
+<a href="#4504" id="4504">4504</a>
+<a href="#4505" id="4505">4505</a>
+<a href="#4506" id="4506">4506</a>
+<a href="#4507" id="4507">4507</a>
+<a href="#4508" id="4508">4508</a>
+<a href="#4509" id="4509">4509</a>
+<a href="#4510" id="4510">4510</a>
+<a href="#4511" id="4511">4511</a>
+<a href="#4512" id="4512">4512</a>
+<a href="#4513" id="4513">4513</a>
+<a href="#4514" id="4514">4514</a>
+<a href="#4515" id="4515">4515</a>
+<a href="#4516" id="4516">4516</a>
+<a href="#4517" id="4517">4517</a>
+<a href="#4518" id="4518">4518</a>
+<a href="#4519" id="4519">4519</a>
+<a href="#4520" id="4520">4520</a>
+<a href="#4521" id="4521">4521</a>
+<a href="#4522" id="4522">4522</a>
+<a href="#4523" id="4523">4523</a>
+<a href="#4524" id="4524">4524</a>
+<a href="#4525" id="4525">4525</a>
+<a href="#4526" id="4526">4526</a>
+<a href="#4527" id="4527">4527</a>
+<a href="#4528" id="4528">4528</a>
+<a href="#4529" id="4529">4529</a>
+<a href="#4530" id="4530">4530</a>
+<a href="#4531" id="4531">4531</a>
+<a href="#4532" id="4532">4532</a>
+<a href="#4533" id="4533">4533</a>
+<a href="#4534" id="4534">4534</a>
+<a href="#4535" id="4535">4535</a>
+<a href="#4536" id="4536">4536</a>
+<a href="#4537" id="4537">4537</a>
+<a href="#4538" id="4538">4538</a>
+<a href="#4539" id="4539">4539</a>
+<a href="#4540" id="4540">4540</a>
+<a href="#4541" id="4541">4541</a>
+<a href="#4542" id="4542">4542</a>
+<a href="#4543" id="4543">4543</a>
+<a href="#4544" id="4544">4544</a>
+<a href="#4545" id="4545">4545</a>
+<a href="#4546" id="4546">4546</a>
+<a href="#4547" id="4547">4547</a>
+<a href="#4548" id="4548">4548</a>
+<a href="#4549" id="4549">4549</a>
+<a href="#4550" id="4550">4550</a>
+<a href="#4551" id="4551">4551</a>
+<a href="#4552" id="4552">4552</a>
+<a href="#4553" id="4553">4553</a>
+<a href="#4554" id="4554">4554</a>
+<a href="#4555" id="4555">4555</a>
+<a href="#4556" id="4556">4556</a>
+<a href="#4557" id="4557">4557</a>
+<a href="#4558" id="4558">4558</a>
+<a href="#4559" id="4559">4559</a>
+<a href="#4560" id="4560">4560</a>
+<a href="#4561" id="4561">4561</a>
+<a href="#4562" id="4562">4562</a>
+<a href="#4563" id="4563">4563</a>
+<a href="#4564" id="4564">4564</a>
+<a href="#4565" id="4565">4565</a>
+<a href="#4566" id="4566">4566</a>
+<a href="#4567" id="4567">4567</a>
+<a href="#4568" id="4568">4568</a>
+<a href="#4569" id="4569">4569</a>
+<a href="#4570" id="4570">4570</a>
+<a href="#4571" id="4571">4571</a>
+<a href="#4572" id="4572">4572</a>
+<a href="#4573" id="4573">4573</a>
+<a href="#4574" id="4574">4574</a>
+<a href="#4575" id="4575">4575</a>
+<a href="#4576" id="4576">4576</a>
+<a href="#4577" id="4577">4577</a>
+<a href="#4578" id="4578">4578</a>
+<a href="#4579" id="4579">4579</a>
+<a href="#4580" id="4580">4580</a>
+<a href="#4581" id="4581">4581</a>
+<a href="#4582" id="4582">4582</a>
+<a href="#4583" id="4583">4583</a>
+<a href="#4584" id="4584">4584</a>
+<a href="#4585" id="4585">4585</a>
+<a href="#4586" id="4586">4586</a>
+<a href="#4587" id="4587">4587</a>
+<a href="#4588" id="4588">4588</a>
+<a href="#4589" id="4589">4589</a>
+<a href="#4590" id="4590">4590</a>
+<a href="#4591" id="4591">4591</a>
+<a href="#4592" id="4592">4592</a>
+<a href="#4593" id="4593">4593</a>
+<a href="#4594" id="4594">4594</a>
+<a href="#4595" id="4595">4595</a>
+<a href="#4596" id="4596">4596</a>
+<a href="#4597" id="4597">4597</a>
+<a href="#4598" id="4598">4598</a>
+<a href="#4599" id="4599">4599</a>
+<a href="#4600" id="4600">4600</a>
+<a href="#4601" id="4601">4601</a>
+<a href="#4602" id="4602">4602</a>
+<a href="#4603" id="4603">4603</a>
+<a href="#4604" id="4604">4604</a>
+<a href="#4605" id="4605">4605</a>
+<a href="#4606" id="4606">4606</a>
+<a href="#4607" id="4607">4607</a>
+<a href="#4608" id="4608">4608</a>
+<a href="#4609" id="4609">4609</a>
+<a href="#4610" id="4610">4610</a>
+<a href="#4611" id="4611">4611</a>
+<a href="#4612" id="4612">4612</a>
+<a href="#4613" id="4613">4613</a>
+<a href="#4614" id="4614">4614</a>
+<a href="#4615" id="4615">4615</a>
+<a href="#4616" id="4616">4616</a>
+<a href="#4617" id="4617">4617</a>
+<a href="#4618" id="4618">4618</a>
+<a href="#4619" id="4619">4619</a>
+<a href="#4620" id="4620">4620</a>
+<a href="#4621" id="4621">4621</a>
+<a href="#4622" id="4622">4622</a>
+<a href="#4623" id="4623">4623</a>
+<a href="#4624" id="4624">4624</a>
+<a href="#4625" id="4625">4625</a>
+<a href="#4626" id="4626">4626</a>
+<a href="#4627" id="4627">4627</a>
+<a href="#4628" id="4628">4628</a>
+<a href="#4629" id="4629">4629</a>
+<a href="#4630" id="4630">4630</a>
+<a href="#4631" id="4631">4631</a>
+<a href="#4632" id="4632">4632</a>
+<a href="#4633" id="4633">4633</a>
+<a href="#4634" id="4634">4634</a>
+<a href="#4635" id="4635">4635</a>
+<a href="#4636" id="4636">4636</a>
+<a href="#4637" id="4637">4637</a>
+<a href="#4638" id="4638">4638</a>
+<a href="#4639" id="4639">4639</a>
+<a href="#4640" id="4640">4640</a>
+<a href="#4641" id="4641">4641</a>
+<a href="#4642" id="4642">4642</a>
+<a href="#4643" id="4643">4643</a>
+<a href="#4644" id="4644">4644</a>
+<a href="#4645" id="4645">4645</a>
+<a href="#4646" id="4646">4646</a>
+<a href="#4647" id="4647">4647</a>
+<a href="#4648" id="4648">4648</a>
+<a href="#4649" id="4649">4649</a>
+<a href="#4650" id="4650">4650</a>
+<a href="#4651" id="4651">4651</a>
+<a href="#4652" id="4652">4652</a>
+<a href="#4653" id="4653">4653</a>
+<a href="#4654" id="4654">4654</a>
+<a href="#4655" id="4655">4655</a>
+<a href="#4656" id="4656">4656</a>
+<a href="#4657" id="4657">4657</a>
+<a href="#4658" id="4658">4658</a>
+<a href="#4659" id="4659">4659</a>
+<a href="#4660" id="4660">4660</a>
+<a href="#4661" id="4661">4661</a>
+<a href="#4662" id="4662">4662</a>
+<a href="#4663" id="4663">4663</a>
+<a href="#4664" id="4664">4664</a>
+<a href="#4665" id="4665">4665</a>
+<a href="#4666" id="4666">4666</a>
+<a href="#4667" id="4667">4667</a>
+<a href="#4668" id="4668">4668</a>
+<a href="#4669" id="4669">4669</a>
+<a href="#4670" id="4670">4670</a>
+<a href="#4671" id="4671">4671</a>
+<a href="#4672" id="4672">4672</a>
+<a href="#4673" id="4673">4673</a>
+<a href="#4674" id="4674">4674</a>
+<a href="#4675" id="4675">4675</a>
+<a href="#4676" id="4676">4676</a>
+<a href="#4677" id="4677">4677</a>
+<a href="#4678" id="4678">4678</a>
+<a href="#4679" id="4679">4679</a>
+<a href="#4680" id="4680">4680</a>
+<a href="#4681" id="4681">4681</a>
+<a href="#4682" id="4682">4682</a>
+<a href="#4683" id="4683">4683</a>
+<a href="#4684" id="4684">4684</a>
+<a href="#4685" id="4685">4685</a>
+<a href="#4686" id="4686">4686</a>
+<a href="#4687" id="4687">4687</a>
+<a href="#4688" id="4688">4688</a>
+<a href="#4689" id="4689">4689</a>
+<a href="#4690" id="4690">4690</a>
+<a href="#4691" id="4691">4691</a>
+<a href="#4692" id="4692">4692</a>
+<a href="#4693" id="4693">4693</a>
+<a href="#4694" id="4694">4694</a>
+<a href="#4695" id="4695">4695</a>
+<a href="#4696" id="4696">4696</a>
+<a href="#4697" id="4697">4697</a>
+<a href="#4698" id="4698">4698</a>
+<a href="#4699" id="4699">4699</a>
+<a href="#4700" id="4700">4700</a>
+<a href="#4701" id="4701">4701</a>
+<a href="#4702" id="4702">4702</a>
+<a href="#4703" id="4703">4703</a>
+<a href="#4704" id="4704">4704</a>
+<a href="#4705" id="4705">4705</a>
+<a href="#4706" id="4706">4706</a>
+<a href="#4707" id="4707">4707</a>
+<a href="#4708" id="4708">4708</a>
+<a href="#4709" id="4709">4709</a>
+<a href="#4710" id="4710">4710</a>
+<a href="#4711" id="4711">4711</a>
+<a href="#4712" id="4712">4712</a>
+<a href="#4713" id="4713">4713</a>
+<a href="#4714" id="4714">4714</a>
+<a href="#4715" id="4715">4715</a>
+<a href="#4716" id="4716">4716</a>
+<a href="#4717" id="4717">4717</a>
+<a href="#4718" id="4718">4718</a>
+<a href="#4719" id="4719">4719</a>
+<a href="#4720" id="4720">4720</a>
+<a href="#4721" id="4721">4721</a>
+<a href="#4722" id="4722">4722</a>
+<a href="#4723" id="4723">4723</a>
+<a href="#4724" id="4724">4724</a>
+<a href="#4725" id="4725">4725</a>
+<a href="#4726" id="4726">4726</a>
+<a href="#4727" id="4727">4727</a>
+<a href="#4728" id="4728">4728</a>
+<a href="#4729" id="4729">4729</a>
+<a href="#4730" id="4730">4730</a>
+<a href="#4731" id="4731">4731</a>
+<a href="#4732" id="4732">4732</a>
+<a href="#4733" id="4733">4733</a>
+<a href="#4734" id="4734">4734</a>
+<a href="#4735" id="4735">4735</a>
+<a href="#4736" id="4736">4736</a>
+<a href="#4737" id="4737">4737</a>
+<a href="#4738" id="4738">4738</a>
+<a href="#4739" id="4739">4739</a>
+<a href="#4740" id="4740">4740</a>
+<a href="#4741" id="4741">4741</a>
+<a href="#4742" id="4742">4742</a>
+<a href="#4743" id="4743">4743</a>
+<a href="#4744" id="4744">4744</a>
+<a href="#4745" id="4745">4745</a>
+<a href="#4746" id="4746">4746</a>
+<a href="#4747" id="4747">4747</a>
+<a href="#4748" id="4748">4748</a>
+<a href="#4749" id="4749">4749</a>
+<a href="#4750" id="4750">4750</a>
+<a href="#4751" id="4751">4751</a>
+<a href="#4752" id="4752">4752</a>
+<a href="#4753" id="4753">4753</a>
+<a href="#4754" id="4754">4754</a>
+<a href="#4755" id="4755">4755</a>
+<a href="#4756" id="4756">4756</a>
+<a href="#4757" id="4757">4757</a>
+<a href="#4758" id="4758">4758</a>
+<a href="#4759" id="4759">4759</a>
+<a href="#4760" id="4760">4760</a>
+<a href="#4761" id="4761">4761</a>
+<a href="#4762" id="4762">4762</a>
+<a href="#4763" id="4763">4763</a>
+<a href="#4764" id="4764">4764</a>
+<a href="#4765" id="4765">4765</a>
+<a href="#4766" id="4766">4766</a>
+<a href="#4767" id="4767">4767</a>
+<a href="#4768" id="4768">4768</a>
+<a href="#4769" id="4769">4769</a>
+<a href="#4770" id="4770">4770</a>
+<a href="#4771" id="4771">4771</a>
+<a href="#4772" id="4772">4772</a>
+<a href="#4773" id="4773">4773</a>
+<a href="#4774" id="4774">4774</a>
+<a href="#4775" id="4775">4775</a>
+<a href="#4776" id="4776">4776</a>
+<a href="#4777" id="4777">4777</a>
+<a href="#4778" id="4778">4778</a>
+<a href="#4779" id="4779">4779</a>
+<a href="#4780" id="4780">4780</a>
+<a href="#4781" id="4781">4781</a>
+<a href="#4782" id="4782">4782</a>
+<a href="#4783" id="4783">4783</a>
+<a href="#4784" id="4784">4784</a>
+<a href="#4785" id="4785">4785</a>
+<a href="#4786" id="4786">4786</a>
+<a href="#4787" id="4787">4787</a>
+<a href="#4788" id="4788">4788</a>
+<a href="#4789" id="4789">4789</a>
+<a href="#4790" id="4790">4790</a>
+<a href="#4791" id="4791">4791</a>
+<a href="#4792" id="4792">4792</a>
+<a href="#4793" id="4793">4793</a>
+<a href="#4794" id="4794">4794</a>
+<a href="#4795" id="4795">4795</a>
+<a href="#4796" id="4796">4796</a>
+<a href="#4797" id="4797">4797</a>
+<a href="#4798" id="4798">4798</a>
+<a href="#4799" id="4799">4799</a>
+<a href="#4800" id="4800">4800</a>
+<a href="#4801" id="4801">4801</a>
+<a href="#4802" id="4802">4802</a>
+<a href="#4803" id="4803">4803</a>
+<a href="#4804" id="4804">4804</a>
+<a href="#4805" id="4805">4805</a>
+<a href="#4806" id="4806">4806</a>
+<a href="#4807" id="4807">4807</a>
+<a href="#4808" id="4808">4808</a>
+<a href="#4809" id="4809">4809</a>
+<a href="#4810" id="4810">4810</a>
+<a href="#4811" id="4811">4811</a>
+<a href="#4812" id="4812">4812</a>
+<a href="#4813" id="4813">4813</a>
+<a href="#4814" id="4814">4814</a>
+<a href="#4815" id="4815">4815</a>
+<a href="#4816" id="4816">4816</a>
+<a href="#4817" id="4817">4817</a>
+<a href="#4818" id="4818">4818</a>
+<a href="#4819" id="4819">4819</a>
+<a href="#4820" id="4820">4820</a>
+<a href="#4821" id="4821">4821</a>
+<a href="#4822" id="4822">4822</a>
+<a href="#4823" id="4823">4823</a>
+<a href="#4824" id="4824">4824</a>
+<a href="#4825" id="4825">4825</a>
+<a href="#4826" id="4826">4826</a>
+<a href="#4827" id="4827">4827</a>
+<a href="#4828" id="4828">4828</a>
+<a href="#4829" id="4829">4829</a>
+<a href="#4830" id="4830">4830</a>
+<a href="#4831" id="4831">4831</a>
+<a href="#4832" id="4832">4832</a>
+<a href="#4833" id="4833">4833</a>
+<a href="#4834" id="4834">4834</a>
+<a href="#4835" id="4835">4835</a>
+<a href="#4836" id="4836">4836</a>
+<a href="#4837" id="4837">4837</a>
+<a href="#4838" id="4838">4838</a>
+<a href="#4839" id="4839">4839</a>
+<a href="#4840" id="4840">4840</a>
+<a href="#4841" id="4841">4841</a>
+<a href="#4842" id="4842">4842</a>
+<a href="#4843" id="4843">4843</a>
+<a href="#4844" id="4844">4844</a>
+<a href="#4845" id="4845">4845</a>
+<a href="#4846" id="4846">4846</a>
+<a href="#4847" id="4847">4847</a>
+<a href="#4848" id="4848">4848</a>
+<a href="#4849" id="4849">4849</a>
+<a href="#4850" id="4850">4850</a>
+<a href="#4851" id="4851">4851</a>
+<a href="#4852" id="4852">4852</a>
+<a href="#4853" id="4853">4853</a>
+<a href="#4854" id="4854">4854</a>
+<a href="#4855" id="4855">4855</a>
+<a href="#4856" id="4856">4856</a>
+<a href="#4857" id="4857">4857</a>
+<a href="#4858" id="4858">4858</a>
+<a href="#4859" id="4859">4859</a>
+<a href="#4860" id="4860">4860</a>
+<a href="#4861" id="4861">4861</a>
+<a href="#4862" id="4862">4862</a>
+<a href="#4863" id="4863">4863</a>
+<a href="#4864" id="4864">4864</a>
+<a href="#4865" id="4865">4865</a>
+<a href="#4866" id="4866">4866</a>
+<a href="#4867" id="4867">4867</a>
+<a href="#4868" id="4868">4868</a>
+<a href="#4869" id="4869">4869</a>
+<a href="#4870" id="4870">4870</a>
+<a href="#4871" id="4871">4871</a>
+<a href="#4872" id="4872">4872</a>
+<a href="#4873" id="4873">4873</a>
+<a href="#4874" id="4874">4874</a>
+<a href="#4875" id="4875">4875</a>
+<a href="#4876" id="4876">4876</a>
+<a href="#4877" id="4877">4877</a>
+<a href="#4878" id="4878">4878</a>
+<a href="#4879" id="4879">4879</a>
+<a href="#4880" id="4880">4880</a>
+<a href="#4881" id="4881">4881</a>
+<a href="#4882" id="4882">4882</a>
+<a href="#4883" id="4883">4883</a>
+<a href="#4884" id="4884">4884</a>
+<a href="#4885" id="4885">4885</a>
+<a href="#4886" id="4886">4886</a>
+<a href="#4887" id="4887">4887</a>
+<a href="#4888" id="4888">4888</a>
+<a href="#4889" id="4889">4889</a>
+<a href="#4890" id="4890">4890</a>
+<a href="#4891" id="4891">4891</a>
+<a href="#4892" id="4892">4892</a>
+<a href="#4893" id="4893">4893</a>
+<a href="#4894" id="4894">4894</a>
+<a href="#4895" id="4895">4895</a>
+<a href="#4896" id="4896">4896</a>
+<a href="#4897" id="4897">4897</a>
+<a href="#4898" id="4898">4898</a>
+<a href="#4899" id="4899">4899</a>
+<a href="#4900" id="4900">4900</a>
+<a href="#4901" id="4901">4901</a>
+<a href="#4902" id="4902">4902</a>
+<a href="#4903" id="4903">4903</a>
+<a href="#4904" id="4904">4904</a>
+<a href="#4905" id="4905">4905</a>
+<a href="#4906" id="4906">4906</a>
+<a href="#4907" id="4907">4907</a>
+<a href="#4908" id="4908">4908</a>
+<a href="#4909" id="4909">4909</a>
+<a href="#4910" id="4910">4910</a>
+<a href="#4911" id="4911">4911</a>
+<a href="#4912" id="4912">4912</a>
+<a href="#4913" id="4913">4913</a>
+<a href="#4914" id="4914">4914</a>
+<a href="#4915" id="4915">4915</a>
+<a href="#4916" id="4916">4916</a>
+<a href="#4917" id="4917">4917</a>
+<a href="#4918" id="4918">4918</a>
+<a href="#4919" id="4919">4919</a>
+<a href="#4920" id="4920">4920</a>
+<a href="#4921" id="4921">4921</a>
+<a href="#4922" id="4922">4922</a>
+<a href="#4923" id="4923">4923</a>
+<a href="#4924" id="4924">4924</a>
+<a href="#4925" id="4925">4925</a>
+<a href="#4926" id="4926">4926</a>
+<a href="#4927" id="4927">4927</a>
+<a href="#4928" id="4928">4928</a>
+<a href="#4929" id="4929">4929</a>
+<a href="#4930" id="4930">4930</a>
+<a href="#4931" id="4931">4931</a>
+<a href="#4932" id="4932">4932</a>
+<a href="#4933" id="4933">4933</a>
+<a href="#4934" id="4934">4934</a>
+<a href="#4935" id="4935">4935</a>
+<a href="#4936" id="4936">4936</a>
+<a href="#4937" id="4937">4937</a>
+<a href="#4938" id="4938">4938</a>
+<a href="#4939" id="4939">4939</a>
+<a href="#4940" id="4940">4940</a>
+<a href="#4941" id="4941">4941</a>
+<a href="#4942" id="4942">4942</a>
+<a href="#4943" id="4943">4943</a>
+<a href="#4944" id="4944">4944</a>
+<a href="#4945" id="4945">4945</a>
+<a href="#4946" id="4946">4946</a>
+<a href="#4947" id="4947">4947</a>
+<a href="#4948" id="4948">4948</a>
+<a href="#4949" id="4949">4949</a>
+<a href="#4950" id="4950">4950</a>
+<a href="#4951" id="4951">4951</a>
+<a href="#4952" id="4952">4952</a>
+<a href="#4953" id="4953">4953</a>
+<a href="#4954" id="4954">4954</a>
+<a href="#4955" id="4955">4955</a>
+<a href="#4956" id="4956">4956</a>
+<a href="#4957" id="4957">4957</a>
+<a href="#4958" id="4958">4958</a>
+<a href="#4959" id="4959">4959</a>
+<a href="#4960" id="4960">4960</a>
+<a href="#4961" id="4961">4961</a>
+<a href="#4962" id="4962">4962</a>
+<a href="#4963" id="4963">4963</a>
+<a href="#4964" id="4964">4964</a>
+<a href="#4965" id="4965">4965</a>
+<a href="#4966" id="4966">4966</a>
+<a href="#4967" id="4967">4967</a>
+<a href="#4968" id="4968">4968</a>
+<a href="#4969" id="4969">4969</a>
+<a href="#4970" id="4970">4970</a>
+<a href="#4971" id="4971">4971</a>
+<a href="#4972" id="4972">4972</a>
+<a href="#4973" id="4973">4973</a>
+<a href="#4974" id="4974">4974</a>
+<a href="#4975" id="4975">4975</a>
+<a href="#4976" id="4976">4976</a>
+<a href="#4977" id="4977">4977</a>
+<a href="#4978" id="4978">4978</a>
+<a href="#4979" id="4979">4979</a>
+<a href="#4980" id="4980">4980</a>
+<a href="#4981" id="4981">4981</a>
+<a href="#4982" id="4982">4982</a>
+<a href="#4983" id="4983">4983</a>
+<a href="#4984" id="4984">4984</a>
+<a href="#4985" id="4985">4985</a>
+<a href="#4986" id="4986">4986</a>
+<a href="#4987" id="4987">4987</a>
+<a href="#4988" id="4988">4988</a>
+<a href="#4989" id="4989">4989</a>
+<a href="#4990" id="4990">4990</a>
+<a href="#4991" id="4991">4991</a>
+<a href="#4992" id="4992">4992</a>
+<a href="#4993" id="4993">4993</a>
+<a href="#4994" id="4994">4994</a>
+<a href="#4995" id="4995">4995</a>
+<a href="#4996" id="4996">4996</a>
+<a href="#4997" id="4997">4997</a>
+<a href="#4998" id="4998">4998</a>
+<a href="#4999" id="4999">4999</a>
+<a href="#5000" id="5000">5000</a>
+<a href="#5001" id="5001">5001</a>
+<a href="#5002" id="5002">5002</a>
+<a href="#5003" id="5003">5003</a>
+<a href="#5004" id="5004">5004</a>
+<a href="#5005" id="5005">5005</a>
+<a href="#5006" id="5006">5006</a>
+<a href="#5007" id="5007">5007</a>
+<a href="#5008" id="5008">5008</a>
+<a href="#5009" id="5009">5009</a>
+<a href="#5010" id="5010">5010</a>
+<a href="#5011" id="5011">5011</a>
+<a href="#5012" id="5012">5012</a>
+<a href="#5013" id="5013">5013</a>
+<a href="#5014" id="5014">5014</a>
+<a href="#5015" id="5015">5015</a>
+<a href="#5016" id="5016">5016</a>
+<a href="#5017" id="5017">5017</a>
+<a href="#5018" id="5018">5018</a>
+<a href="#5019" id="5019">5019</a>
+<a href="#5020" id="5020">5020</a>
+<a href="#5021" id="5021">5021</a>
+<a href="#5022" id="5022">5022</a>
+<a href="#5023" id="5023">5023</a>
+<a href="#5024" id="5024">5024</a>
+<a href="#5025" id="5025">5025</a>
+<a href="#5026" id="5026">5026</a>
+<a href="#5027" id="5027">5027</a>
+<a href="#5028" id="5028">5028</a>
+<a href="#5029" id="5029">5029</a>
+<a href="#5030" id="5030">5030</a>
+<a href="#5031" id="5031">5031</a>
+<a href="#5032" id="5032">5032</a>
+<a href="#5033" id="5033">5033</a>
+<a href="#5034" id="5034">5034</a>
+<a href="#5035" id="5035">5035</a>
+<a href="#5036" id="5036">5036</a>
+<a href="#5037" id="5037">5037</a>
+<a href="#5038" id="5038">5038</a>
+<a href="#5039" id="5039">5039</a>
+<a href="#5040" id="5040">5040</a>
+<a href="#5041" id="5041">5041</a>
+<a href="#5042" id="5042">5042</a>
+<a href="#5043" id="5043">5043</a>
+<a href="#5044" id="5044">5044</a>
+<a href="#5045" id="5045">5045</a>
+<a href="#5046" id="5046">5046</a>
+<a href="#5047" id="5047">5047</a>
+<a href="#5048" id="5048">5048</a>
+<a href="#5049" id="5049">5049</a>
+<a href="#5050" id="5050">5050</a>
+<a href="#5051" id="5051">5051</a>
+<a href="#5052" id="5052">5052</a>
+<a href="#5053" id="5053">5053</a>
+<a href="#5054" id="5054">5054</a>
+<a href="#5055" id="5055">5055</a>
+<a href="#5056" id="5056">5056</a>
+<a href="#5057" id="5057">5057</a>
+<a href="#5058" id="5058">5058</a>
+<a href="#5059" id="5059">5059</a>
+<a href="#5060" id="5060">5060</a>
+<a href="#5061" id="5061">5061</a>
+<a href="#5062" id="5062">5062</a>
+<a href="#5063" id="5063">5063</a>
+<a href="#5064" id="5064">5064</a>
+<a href="#5065" id="5065">5065</a>
+<a href="#5066" id="5066">5066</a>
+<a href="#5067" id="5067">5067</a>
+<a href="#5068" id="5068">5068</a>
+<a href="#5069" id="5069">5069</a>
+<a href="#5070" id="5070">5070</a>
+<a href="#5071" id="5071">5071</a>
+<a href="#5072" id="5072">5072</a>
+<a href="#5073" id="5073">5073</a>
+<a href="#5074" id="5074">5074</a>
+<a href="#5075" id="5075">5075</a>
+<a href="#5076" id="5076">5076</a>
+<a href="#5077" id="5077">5077</a>
+<a href="#5078" id="5078">5078</a>
+<a href="#5079" id="5079">5079</a>
+<a href="#5080" id="5080">5080</a>
+<a href="#5081" id="5081">5081</a>
+<a href="#5082" id="5082">5082</a>
+<a href="#5083" id="5083">5083</a>
+<a href="#5084" id="5084">5084</a>
+<a href="#5085" id="5085">5085</a>
+<a href="#5086" id="5086">5086</a>
+<a href="#5087" id="5087">5087</a>
+<a href="#5088" id="5088">5088</a>
+<a href="#5089" id="5089">5089</a>
+<a href="#5090" id="5090">5090</a>
+<a href="#5091" id="5091">5091</a>
+<a href="#5092" id="5092">5092</a>
+<a href="#5093" id="5093">5093</a>
+<a href="#5094" id="5094">5094</a>
+<a href="#5095" id="5095">5095</a>
+<a href="#5096" id="5096">5096</a>
+<a href="#5097" id="5097">5097</a>
+<a href="#5098" id="5098">5098</a>
+<a href="#5099" id="5099">5099</a>
+<a href="#5100" id="5100">5100</a>
+<a href="#5101" id="5101">5101</a>
+<a href="#5102" id="5102">5102</a>
+<a href="#5103" id="5103">5103</a>
+<a href="#5104" id="5104">5104</a>
+<a href="#5105" id="5105">5105</a>
+<a href="#5106" id="5106">5106</a>
+<a href="#5107" id="5107">5107</a>
+<a href="#5108" id="5108">5108</a>
+<a href="#5109" id="5109">5109</a>
+<a href="#5110" id="5110">5110</a>
+<a href="#5111" id="5111">5111</a>
+<a href="#5112" id="5112">5112</a>
+<a href="#5113" id="5113">5113</a>
+<a href="#5114" id="5114">5114</a>
+<a href="#5115" id="5115">5115</a>
+<a href="#5116" id="5116">5116</a>
+<a href="#5117" id="5117">5117</a>
+<a href="#5118" id="5118">5118</a>
+<a href="#5119" id="5119">5119</a>
+<a href="#5120" id="5120">5120</a>
+<a href="#5121" id="5121">5121</a>
+<a href="#5122" id="5122">5122</a>
+<a href="#5123" id="5123">5123</a>
+<a href="#5124" id="5124">5124</a>
+<a href="#5125" id="5125">5125</a>
+<a href="#5126" id="5126">5126</a>
+<a href="#5127" id="5127">5127</a>
+<a href="#5128" id="5128">5128</a>
+<a href="#5129" id="5129">5129</a>
+<a href="#5130" id="5130">5130</a>
+<a href="#5131" id="5131">5131</a>
+<a href="#5132" id="5132">5132</a>
+<a href="#5133" id="5133">5133</a>
+<a href="#5134" id="5134">5134</a>
+<a href="#5135" id="5135">5135</a>
+<a href="#5136" id="5136">5136</a>
+<a href="#5137" id="5137">5137</a>
+<a href="#5138" id="5138">5138</a>
+<a href="#5139" id="5139">5139</a>
+<a href="#5140" id="5140">5140</a>
+<a href="#5141" id="5141">5141</a>
+<a href="#5142" id="5142">5142</a>
+<a href="#5143" id="5143">5143</a>
+<a href="#5144" id="5144">5144</a>
+<a href="#5145" id="5145">5145</a>
+<a href="#5146" id="5146">5146</a>
+<a href="#5147" id="5147">5147</a>
+<a href="#5148" id="5148">5148</a>
+<a href="#5149" id="5149">5149</a>
+<a href="#5150" id="5150">5150</a>
+<a href="#5151" id="5151">5151</a>
+<a href="#5152" id="5152">5152</a>
+<a href="#5153" id="5153">5153</a>
+<a href="#5154" id="5154">5154</a>
+<a href="#5155" id="5155">5155</a>
+<a href="#5156" id="5156">5156</a>
+<a href="#5157" id="5157">5157</a>
+<a href="#5158" id="5158">5158</a>
+<a href="#5159" id="5159">5159</a>
+<a href="#5160" id="5160">5160</a>
+<a href="#5161" id="5161">5161</a>
+<a href="#5162" id="5162">5162</a>
+<a href="#5163" id="5163">5163</a>
+<a href="#5164" id="5164">5164</a>
+<a href="#5165" id="5165">5165</a>
+<a href="#5166" id="5166">5166</a>
+<a href="#5167" id="5167">5167</a>
+<a href="#5168" id="5168">5168</a>
+<a href="#5169" id="5169">5169</a>
+<a href="#5170" id="5170">5170</a>
+<a href="#5171" id="5171">5171</a>
+<a href="#5172" id="5172">5172</a>
+<a href="#5173" id="5173">5173</a>
+<a href="#5174" id="5174">5174</a>
+<a href="#5175" id="5175">5175</a>
+<a href="#5176" id="5176">5176</a>
+<a href="#5177" id="5177">5177</a>
+<a href="#5178" id="5178">5178</a>
+<a href="#5179" id="5179">5179</a>
+<a href="#5180" id="5180">5180</a>
+<a href="#5181" id="5181">5181</a>
+<a href="#5182" id="5182">5182</a>
+<a href="#5183" id="5183">5183</a>
+<a href="#5184" id="5184">5184</a>
+<a href="#5185" id="5185">5185</a>
+<a href="#5186" id="5186">5186</a>
+<a href="#5187" id="5187">5187</a>
+<a href="#5188" id="5188">5188</a>
+<a href="#5189" id="5189">5189</a>
+<a href="#5190" id="5190">5190</a>
+<a href="#5191" id="5191">5191</a>
+<a href="#5192" id="5192">5192</a>
+<a href="#5193" id="5193">5193</a>
+<a href="#5194" id="5194">5194</a>
+<a href="#5195" id="5195">5195</a>
+<a href="#5196" id="5196">5196</a>
+<a href="#5197" id="5197">5197</a>
+<a href="#5198" id="5198">5198</a>
+<a href="#5199" id="5199">5199</a>
+<a href="#5200" id="5200">5200</a>
+<a href="#5201" id="5201">5201</a>
+<a href="#5202" id="5202">5202</a>
+<a href="#5203" id="5203">5203</a>
+<a href="#5204" id="5204">5204</a>
+<a href="#5205" id="5205">5205</a>
+<a href="#5206" id="5206">5206</a>
+<a href="#5207" id="5207">5207</a>
+<a href="#5208" id="5208">5208</a>
+<a href="#5209" id="5209">5209</a>
+<a href="#5210" id="5210">5210</a>
+<a href="#5211" id="5211">5211</a>
+<a href="#5212" id="5212">5212</a>
+<a href="#5213" id="5213">5213</a>
+<a href="#5214" id="5214">5214</a>
+<a href="#5215" id="5215">5215</a>
+<a href="#5216" id="5216">5216</a>
+<a href="#5217" id="5217">5217</a>
+<a href="#5218" id="5218">5218</a>
+<a href="#5219" id="5219">5219</a>
+<a href="#5220" id="5220">5220</a>
+<a href="#5221" id="5221">5221</a>
+<a href="#5222" id="5222">5222</a>
+<a href="#5223" id="5223">5223</a>
+<a href="#5224" id="5224">5224</a>
+<a href="#5225" id="5225">5225</a>
+<a href="#5226" id="5226">5226</a>
+<a href="#5227" id="5227">5227</a>
+<a href="#5228" id="5228">5228</a>
+<a href="#5229" id="5229">5229</a>
+<a href="#5230" id="5230">5230</a>
+<a href="#5231" id="5231">5231</a>
+<a href="#5232" id="5232">5232</a>
+<a href="#5233" id="5233">5233</a>
+<a href="#5234" id="5234">5234</a>
+<a href="#5235" id="5235">5235</a>
+<a href="#5236" id="5236">5236</a>
+<a href="#5237" id="5237">5237</a>
+<a href="#5238" id="5238">5238</a>
+<a href="#5239" id="5239">5239</a>
+<a href="#5240" id="5240">5240</a>
+<a href="#5241" id="5241">5241</a>
+<a href="#5242" id="5242">5242</a>
+<a href="#5243" id="5243">5243</a>
+<a href="#5244" id="5244">5244</a>
+<a href="#5245" id="5245">5245</a>
+<a href="#5246" id="5246">5246</a>
+<a href="#5247" id="5247">5247</a>
+<a href="#5248" id="5248">5248</a>
+<a href="#5249" id="5249">5249</a>
+<a href="#5250" id="5250">5250</a>
+<a href="#5251" id="5251">5251</a>
+<a href="#5252" id="5252">5252</a>
+<a href="#5253" id="5253">5253</a>
+<a href="#5254" id="5254">5254</a>
+<a href="#5255" id="5255">5255</a>
+<a href="#5256" id="5256">5256</a>
+<a href="#5257" id="5257">5257</a>
+<a href="#5258" id="5258">5258</a>
+<a href="#5259" id="5259">5259</a>
+<a href="#5260" id="5260">5260</a>
+<a href="#5261" id="5261">5261</a>
+<a href="#5262" id="5262">5262</a>
+<a href="#5263" id="5263">5263</a>
+<a href="#5264" id="5264">5264</a>
+<a href="#5265" id="5265">5265</a>
+<a href="#5266" id="5266">5266</a>
+<a href="#5267" id="5267">5267</a>
+<a href="#5268" id="5268">5268</a>
+<a href="#5269" id="5269">5269</a>
+<a href="#5270" id="5270">5270</a>
+<a href="#5271" id="5271">5271</a>
+<a href="#5272" id="5272">5272</a>
+<a href="#5273" id="5273">5273</a>
+<a href="#5274" id="5274">5274</a>
+<a href="#5275" id="5275">5275</a>
+<a href="#5276" id="5276">5276</a>
+<a href="#5277" id="5277">5277</a>
+<a href="#5278" id="5278">5278</a>
+<a href="#5279" id="5279">5279</a>
+<a href="#5280" id="5280">5280</a>
+<a href="#5281" id="5281">5281</a>
+<a href="#5282" id="5282">5282</a>
+<a href="#5283" id="5283">5283</a>
+<a href="#5284" id="5284">5284</a>
+<a href="#5285" id="5285">5285</a>
+<a href="#5286" id="5286">5286</a>
+<a href="#5287" id="5287">5287</a>
+<a href="#5288" id="5288">5288</a>
+<a href="#5289" id="5289">5289</a>
+<a href="#5290" id="5290">5290</a>
+<a href="#5291" id="5291">5291</a>
+<a href="#5292" id="5292">5292</a>
+<a href="#5293" id="5293">5293</a>
+<a href="#5294" id="5294">5294</a>
+<a href="#5295" id="5295">5295</a>
+<a href="#5296" id="5296">5296</a>
+<a href="#5297" id="5297">5297</a>
+<a href="#5298" id="5298">5298</a>
+<a href="#5299" id="5299">5299</a>
+<a href="#5300" id="5300">5300</a>
+<a href="#5301" id="5301">5301</a>
+<a href="#5302" id="5302">5302</a>
+<a href="#5303" id="5303">5303</a>
+<a href="#5304" id="5304">5304</a>
+<a href="#5305" id="5305">5305</a>
+<a href="#5306" id="5306">5306</a>
+<a href="#5307" id="5307">5307</a>
+<a href="#5308" id="5308">5308</a>
+<a href="#5309" id="5309">5309</a>
+<a href="#5310" id="5310">5310</a>
+<a href="#5311" id="5311">5311</a>
+<a href="#5312" id="5312">5312</a>
+<a href="#5313" id="5313">5313</a>
+<a href="#5314" id="5314">5314</a>
+<a href="#5315" id="5315">5315</a>
+<a href="#5316" id="5316">5316</a>
+<a href="#5317" id="5317">5317</a>
+<a href="#5318" id="5318">5318</a>
+<a href="#5319" id="5319">5319</a>
+<a href="#5320" id="5320">5320</a>
+<a href="#5321" id="5321">5321</a>
+<a href="#5322" id="5322">5322</a>
+<a href="#5323" id="5323">5323</a>
+<a href="#5324" id="5324">5324</a>
+<a href="#5325" id="5325">5325</a>
+<a href="#5326" id="5326">5326</a>
+<a href="#5327" id="5327">5327</a>
+<a href="#5328" id="5328">5328</a>
+<a href="#5329" id="5329">5329</a>
+<a href="#5330" id="5330">5330</a>
+<a href="#5331" id="5331">5331</a>
+<a href="#5332" id="5332">5332</a>
+<a href="#5333" id="5333">5333</a>
+<a href="#5334" id="5334">5334</a>
+<a href="#5335" id="5335">5335</a>
+<a href="#5336" id="5336">5336</a>
+<a href="#5337" id="5337">5337</a>
+<a href="#5338" id="5338">5338</a>
+<a href="#5339" id="5339">5339</a>
+<a href="#5340" id="5340">5340</a>
+<a href="#5341" id="5341">5341</a>
+<a href="#5342" id="5342">5342</a>
+<a href="#5343" id="5343">5343</a>
+<a href="#5344" id="5344">5344</a>
+<a href="#5345" id="5345">5345</a>
+<a href="#5346" id="5346">5346</a>
+<a href="#5347" id="5347">5347</a>
+<a href="#5348" id="5348">5348</a>
+<a href="#5349" id="5349">5349</a>
+<a href="#5350" id="5350">5350</a>
+<a href="#5351" id="5351">5351</a>
+<a href="#5352" id="5352">5352</a>
+<a href="#5353" id="5353">5353</a>
+<a href="#5354" id="5354">5354</a>
+<a href="#5355" id="5355">5355</a>
+<a href="#5356" id="5356">5356</a>
+<a href="#5357" id="5357">5357</a>
+<a href="#5358" id="5358">5358</a>
+<a href="#5359" id="5359">5359</a>
+<a href="#5360" id="5360">5360</a>
+<a href="#5361" id="5361">5361</a>
+<a href="#5362" id="5362">5362</a>
+<a href="#5363" id="5363">5363</a>
+<a href="#5364" id="5364">5364</a>
+<a href="#5365" id="5365">5365</a>
+<a href="#5366" id="5366">5366</a>
+<a href="#5367" id="5367">5367</a>
+<a href="#5368" id="5368">5368</a>
+<a href="#5369" id="5369">5369</a>
+<a href="#5370" id="5370">5370</a>
+<a href="#5371" id="5371">5371</a>
+<a href="#5372" id="5372">5372</a>
+<a href="#5373" id="5373">5373</a>
+<a href="#5374" id="5374">5374</a>
+<a href="#5375" id="5375">5375</a>
+<a href="#5376" id="5376">5376</a>
+<a href="#5377" id="5377">5377</a>
+<a href="#5378" id="5378">5378</a>
+<a href="#5379" id="5379">5379</a>
+<a href="#5380" id="5380">5380</a>
+<a href="#5381" id="5381">5381</a>
+<a href="#5382" id="5382">5382</a>
+<a href="#5383" id="5383">5383</a>
+<a href="#5384" id="5384">5384</a>
+<a href="#5385" id="5385">5385</a>
+<a href="#5386" id="5386">5386</a>
+<a href="#5387" id="5387">5387</a>
+<a href="#5388" id="5388">5388</a>
+<a href="#5389" id="5389">5389</a>
+<a href="#5390" id="5390">5390</a>
+<a href="#5391" id="5391">5391</a>
+<a href="#5392" id="5392">5392</a>
+<a href="#5393" id="5393">5393</a>
+<a href="#5394" id="5394">5394</a>
+<a href="#5395" id="5395">5395</a>
+<a href="#5396" id="5396">5396</a>
+<a href="#5397" id="5397">5397</a>
+<a href="#5398" id="5398">5398</a>
+<a href="#5399" id="5399">5399</a>
+<a href="#5400" id="5400">5400</a>
+<a href="#5401" id="5401">5401</a>
+<a href="#5402" id="5402">5402</a>
+<a href="#5403" id="5403">5403</a>
+<a href="#5404" id="5404">5404</a>
+<a href="#5405" id="5405">5405</a>
+<a href="#5406" id="5406">5406</a>
+<a href="#5407" id="5407">5407</a>
+<a href="#5408" id="5408">5408</a>
+<a href="#5409" id="5409">5409</a>
+<a href="#5410" id="5410">5410</a>
+<a href="#5411" id="5411">5411</a>
+<a href="#5412" id="5412">5412</a>
+<a href="#5413" id="5413">5413</a>
+<a href="#5414" id="5414">5414</a>
+<a href="#5415" id="5415">5415</a>
+<a href="#5416" id="5416">5416</a>
+<a href="#5417" id="5417">5417</a>
+<a href="#5418" id="5418">5418</a>
+<a href="#5419" id="5419">5419</a>
+<a href="#5420" id="5420">5420</a>
+<a href="#5421" id="5421">5421</a>
+<a href="#5422" id="5422">5422</a>
+<a href="#5423" id="5423">5423</a>
+<a href="#5424" id="5424">5424</a>
+<a href="#5425" id="5425">5425</a>
+<a href="#5426" id="5426">5426</a>
+<a href="#5427" id="5427">5427</a>
+<a href="#5428" id="5428">5428</a>
+<a href="#5429" id="5429">5429</a>
+<a href="#5430" id="5430">5430</a>
+<a href="#5431" id="5431">5431</a>
+<a href="#5432" id="5432">5432</a>
+<a href="#5433" id="5433">5433</a>
+<a href="#5434" id="5434">5434</a>
+<a href="#5435" id="5435">5435</a>
+<a href="#5436" id="5436">5436</a>
+<a href="#5437" id="5437">5437</a>
+<a href="#5438" id="5438">5438</a>
+<a href="#5439" id="5439">5439</a>
+<a href="#5440" id="5440">5440</a>
+<a href="#5441" id="5441">5441</a>
+<a href="#5442" id="5442">5442</a>
+<a href="#5443" id="5443">5443</a>
+<a href="#5444" id="5444">5444</a>
+<a href="#5445" id="5445">5445</a>
+<a href="#5446" id="5446">5446</a>
+<a href="#5447" id="5447">5447</a>
+<a href="#5448" id="5448">5448</a>
+<a href="#5449" id="5449">5449</a>
+<a href="#5450" id="5450">5450</a>
+<a href="#5451" id="5451">5451</a>
+<a href="#5452" id="5452">5452</a>
+<a href="#5453" id="5453">5453</a>
+<a href="#5454" id="5454">5454</a>
+<a href="#5455" id="5455">5455</a>
+<a href="#5456" id="5456">5456</a>
+<a href="#5457" id="5457">5457</a>
+<a href="#5458" id="5458">5458</a>
+<a href="#5459" id="5459">5459</a>
+<a href="#5460" id="5460">5460</a>
+<a href="#5461" id="5461">5461</a>
+<a href="#5462" id="5462">5462</a>
+<a href="#5463" id="5463">5463</a>
+<a href="#5464" id="5464">5464</a>
+<a href="#5465" id="5465">5465</a>
+<a href="#5466" id="5466">5466</a>
+<a href="#5467" id="5467">5467</a>
+<a href="#5468" id="5468">5468</a>
+<a href="#5469" id="5469">5469</a>
+<a href="#5470" id="5470">5470</a>
+<a href="#5471" id="5471">5471</a>
+<a href="#5472" id="5472">5472</a>
+<a href="#5473" id="5473">5473</a>
+<a href="#5474" id="5474">5474</a>
+<a href="#5475" id="5475">5475</a>
+<a href="#5476" id="5476">5476</a>
+<a href="#5477" id="5477">5477</a>
+<a href="#5478" id="5478">5478</a>
+<a href="#5479" id="5479">5479</a>
+<a href="#5480" id="5480">5480</a>
+<a href="#5481" id="5481">5481</a>
+<a href="#5482" id="5482">5482</a>
+<a href="#5483" id="5483">5483</a>
+<a href="#5484" id="5484">5484</a>
+<a href="#5485" id="5485">5485</a>
+<a href="#5486" id="5486">5486</a>
+<a href="#5487" id="5487">5487</a>
+<a href="#5488" id="5488">5488</a>
+<a href="#5489" id="5489">5489</a>
+<a href="#5490" id="5490">5490</a>
+<a href="#5491" id="5491">5491</a>
+<a href="#5492" id="5492">5492</a>
+<a href="#5493" id="5493">5493</a>
+<a href="#5494" id="5494">5494</a>
+<a href="#5495" id="5495">5495</a>
+<a href="#5496" id="5496">5496</a>
+<a href="#5497" id="5497">5497</a>
+<a href="#5498" id="5498">5498</a>
+<a href="#5499" id="5499">5499</a>
+<a href="#5500" id="5500">5500</a>
+<a href="#5501" id="5501">5501</a>
+<a href="#5502" id="5502">5502</a>
+<a href="#5503" id="5503">5503</a>
+<a href="#5504" id="5504">5504</a>
+<a href="#5505" id="5505">5505</a>
+<a href="#5506" id="5506">5506</a>
+<a href="#5507" id="5507">5507</a>
+<a href="#5508" id="5508">5508</a>
+<a href="#5509" id="5509">5509</a>
+<a href="#5510" id="5510">5510</a>
+<a href="#5511" id="5511">5511</a>
+<a href="#5512" id="5512">5512</a>
+<a href="#5513" id="5513">5513</a>
+<a href="#5514" id="5514">5514</a>
+<a href="#5515" id="5515">5515</a>
+<a href="#5516" id="5516">5516</a>
+<a href="#5517" id="5517">5517</a>
+<a href="#5518" id="5518">5518</a>
+<a href="#5519" id="5519">5519</a>
+<a href="#5520" id="5520">5520</a>
+<a href="#5521" id="5521">5521</a>
+<a href="#5522" id="5522">5522</a>
+<a href="#5523" id="5523">5523</a>
+<a href="#5524" id="5524">5524</a>
+<a href="#5525" id="5525">5525</a>
+<a href="#5526" id="5526">5526</a>
+<a href="#5527" id="5527">5527</a>
+<a href="#5528" id="5528">5528</a>
+<a href="#5529" id="5529">5529</a>
+<a href="#5530" id="5530">5530</a>
+<a href="#5531" id="5531">5531</a>
+<a href="#5532" id="5532">5532</a>
+<a href="#5533" id="5533">5533</a>
+<a href="#5534" id="5534">5534</a>
+<a href="#5535" id="5535">5535</a>
+<a href="#5536" id="5536">5536</a>
+<a href="#5537" id="5537">5537</a>
+<a href="#5538" id="5538">5538</a>
+<a href="#5539" id="5539">5539</a>
+<a href="#5540" id="5540">5540</a>
+<a href="#5541" id="5541">5541</a>
+<a href="#5542" id="5542">5542</a>
+<a href="#5543" id="5543">5543</a>
+<a href="#5544" id="5544">5544</a>
+<a href="#5545" id="5545">5545</a>
+<a href="#5546" id="5546">5546</a>
+<a href="#5547" id="5547">5547</a>
+<a href="#5548" id="5548">5548</a>
+<a href="#5549" id="5549">5549</a>
+<a href="#5550" id="5550">5550</a>
+<a href="#5551" id="5551">5551</a>
+<a href="#5552" id="5552">5552</a>
+<a href="#5553" id="5553">5553</a>
+<a href="#5554" id="5554">5554</a>
+<a href="#5555" id="5555">5555</a>
+<a href="#5556" id="5556">5556</a>
+<a href="#5557" id="5557">5557</a>
+<a href="#5558" id="5558">5558</a>
+<a href="#5559" id="5559">5559</a>
+<a href="#5560" id="5560">5560</a>
+<a href="#5561" id="5561">5561</a>
+<a href="#5562" id="5562">5562</a>
+<a href="#5563" id="5563">5563</a>
+<a href="#5564" id="5564">5564</a>
+<a href="#5565" id="5565">5565</a>
+<a href="#5566" id="5566">5566</a>
+<a href="#5567" id="5567">5567</a>
+<a href="#5568" id="5568">5568</a>
+<a href="#5569" id="5569">5569</a>
+<a href="#5570" id="5570">5570</a>
+<a href="#5571" id="5571">5571</a>
+<a href="#5572" id="5572">5572</a>
+<a href="#5573" id="5573">5573</a>
+<a href="#5574" id="5574">5574</a>
+<a href="#5575" id="5575">5575</a>
+<a href="#5576" id="5576">5576</a>
+<a href="#5577" id="5577">5577</a>
+<a href="#5578" id="5578">5578</a>
+<a href="#5579" id="5579">5579</a>
+<a href="#5580" id="5580">5580</a>
+<a href="#5581" id="5581">5581</a>
+<a href="#5582" id="5582">5582</a>
+<a href="#5583" id="5583">5583</a>
+<a href="#5584" id="5584">5584</a>
+<a href="#5585" id="5585">5585</a>
+<a href="#5586" id="5586">5586</a>
+<a href="#5587" id="5587">5587</a>
+<a href="#5588" id="5588">5588</a>
+<a href="#5589" id="5589">5589</a>
+<a href="#5590" id="5590">5590</a>
+<a href="#5591" id="5591">5591</a>
+<a href="#5592" id="5592">5592</a>
+<a href="#5593" id="5593">5593</a>
+<a href="#5594" id="5594">5594</a>
+<a href="#5595" id="5595">5595</a>
+<a href="#5596" id="5596">5596</a>
+<a href="#5597" id="5597">5597</a>
+<a href="#5598" id="5598">5598</a>
+<a href="#5599" id="5599">5599</a>
+<a href="#5600" id="5600">5600</a>
+<a href="#5601" id="5601">5601</a>
+<a href="#5602" id="5602">5602</a>
+<a href="#5603" id="5603">5603</a>
+<a href="#5604" id="5604">5604</a>
+<a href="#5605" id="5605">5605</a>
+<a href="#5606" id="5606">5606</a>
+<a href="#5607" id="5607">5607</a>
+<a href="#5608" id="5608">5608</a>
+<a href="#5609" id="5609">5609</a>
+<a href="#5610" id="5610">5610</a>
+<a href="#5611" id="5611">5611</a>
+<a href="#5612" id="5612">5612</a>
+<a href="#5613" id="5613">5613</a>
+<a href="#5614" id="5614">5614</a>
+<a href="#5615" id="5615">5615</a>
+<a href="#5616" id="5616">5616</a>
+<a href="#5617" id="5617">5617</a>
+<a href="#5618" id="5618">5618</a>
+<a href="#5619" id="5619">5619</a>
+<a href="#5620" id="5620">5620</a>
+<a href="#5621" id="5621">5621</a>
+<a href="#5622" id="5622">5622</a>
+<a href="#5623" id="5623">5623</a>
+<a href="#5624" id="5624">5624</a>
+<a href="#5625" id="5625">5625</a>
+<a href="#5626" id="5626">5626</a>
+<a href="#5627" id="5627">5627</a>
+<a href="#5628" id="5628">5628</a>
+<a href="#5629" id="5629">5629</a>
+<a href="#5630" id="5630">5630</a>
+<a href="#5631" id="5631">5631</a>
+<a href="#5632" id="5632">5632</a>
+<a href="#5633" id="5633">5633</a>
+<a href="#5634" id="5634">5634</a>
+<a href="#5635" id="5635">5635</a>
+<a href="#5636" id="5636">5636</a>
+<a href="#5637" id="5637">5637</a>
+<a href="#5638" id="5638">5638</a>
+<a href="#5639" id="5639">5639</a>
+<a href="#5640" id="5640">5640</a>
+<a href="#5641" id="5641">5641</a>
+<a href="#5642" id="5642">5642</a>
+<a href="#5643" id="5643">5643</a>
+<a href="#5644" id="5644">5644</a>
+<a href="#5645" id="5645">5645</a>
+<a href="#5646" id="5646">5646</a>
+<a href="#5647" id="5647">5647</a>
+<a href="#5648" id="5648">5648</a>
+<a href="#5649" id="5649">5649</a>
+<a href="#5650" id="5650">5650</a>
+<a href="#5651" id="5651">5651</a>
+<a href="#5652" id="5652">5652</a>
+<a href="#5653" id="5653">5653</a>
+<a href="#5654" id="5654">5654</a>
+<a href="#5655" id="5655">5655</a>
+<a href="#5656" id="5656">5656</a>
+<a href="#5657" id="5657">5657</a>
+<a href="#5658" id="5658">5658</a>
+<a href="#5659" id="5659">5659</a>
+<a href="#5660" id="5660">5660</a>
+<a href="#5661" id="5661">5661</a>
+<a href="#5662" id="5662">5662</a>
+<a href="#5663" id="5663">5663</a>
+<a href="#5664" id="5664">5664</a>
+<a href="#5665" id="5665">5665</a>
+<a href="#5666" id="5666">5666</a>
+<a href="#5667" id="5667">5667</a>
+<a href="#5668" id="5668">5668</a>
+<a href="#5669" id="5669">5669</a>
+<a href="#5670" id="5670">5670</a>
+<a href="#5671" id="5671">5671</a>
+<a href="#5672" id="5672">5672</a>
+<a href="#5673" id="5673">5673</a>
+<a href="#5674" id="5674">5674</a>
+<a href="#5675" id="5675">5675</a>
+<a href="#5676" id="5676">5676</a>
+<a href="#5677" id="5677">5677</a>
+<a href="#5678" id="5678">5678</a>
+<a href="#5679" id="5679">5679</a>
+<a href="#5680" id="5680">5680</a>
+<a href="#5681" id="5681">5681</a>
+<a href="#5682" id="5682">5682</a>
+<a href="#5683" id="5683">5683</a>
+<a href="#5684" id="5684">5684</a>
+<a href="#5685" id="5685">5685</a>
+<a href="#5686" id="5686">5686</a>
+<a href="#5687" id="5687">5687</a>
+<a href="#5688" id="5688">5688</a>
+<a href="#5689" id="5689">5689</a>
+<a href="#5690" id="5690">5690</a>
+<a href="#5691" id="5691">5691</a>
+<a href="#5692" id="5692">5692</a>
+<a href="#5693" id="5693">5693</a>
+<a href="#5694" id="5694">5694</a>
+<a href="#5695" id="5695">5695</a>
+<a href="#5696" id="5696">5696</a>
+<a href="#5697" id="5697">5697</a>
+<a href="#5698" id="5698">5698</a>
+<a href="#5699" id="5699">5699</a>
+<a href="#5700" id="5700">5700</a>
+<a href="#5701" id="5701">5701</a>
+<a href="#5702" id="5702">5702</a>
+<a href="#5703" id="5703">5703</a>
+<a href="#5704" id="5704">5704</a>
+<a href="#5705" id="5705">5705</a>
+<a href="#5706" id="5706">5706</a>
+<a href="#5707" id="5707">5707</a>
+<a href="#5708" id="5708">5708</a>
+<a href="#5709" id="5709">5709</a>
+<a href="#5710" id="5710">5710</a>
+<a href="#5711" id="5711">5711</a>
+<a href="#5712" id="5712">5712</a>
+<a href="#5713" id="5713">5713</a>
+<a href="#5714" id="5714">5714</a>
+<a href="#5715" id="5715">5715</a>
+<a href="#5716" id="5716">5716</a>
+<a href="#5717" id="5717">5717</a>
+<a href="#5718" id="5718">5718</a>
+<a href="#5719" id="5719">5719</a>
+<a href="#5720" id="5720">5720</a>
+<a href="#5721" id="5721">5721</a>
+<a href="#5722" id="5722">5722</a>
+<a href="#5723" id="5723">5723</a>
+<a href="#5724" id="5724">5724</a>
+<a href="#5725" id="5725">5725</a>
+<a href="#5726" id="5726">5726</a>
+<a href="#5727" id="5727">5727</a>
+<a href="#5728" id="5728">5728</a>
+<a href="#5729" id="5729">5729</a>
+<a href="#5730" id="5730">5730</a>
+<a href="#5731" id="5731">5731</a>
+<a href="#5732" id="5732">5732</a>
+<a href="#5733" id="5733">5733</a>
+<a href="#5734" id="5734">5734</a>
+<a href="#5735" id="5735">5735</a>
+<a href="#5736" id="5736">5736</a>
+<a href="#5737" id="5737">5737</a>
+<a href="#5738" id="5738">5738</a>
+<a href="#5739" id="5739">5739</a>
+<a href="#5740" id="5740">5740</a>
+<a href="#5741" id="5741">5741</a>
+<a href="#5742" id="5742">5742</a>
+<a href="#5743" id="5743">5743</a>
+<a href="#5744" id="5744">5744</a>
+<a href="#5745" id="5745">5745</a>
+<a href="#5746" id="5746">5746</a>
+<a href="#5747" id="5747">5747</a>
+<a href="#5748" id="5748">5748</a>
+<a href="#5749" id="5749">5749</a>
+<a href="#5750" id="5750">5750</a>
+<a href="#5751" id="5751">5751</a>
+<a href="#5752" id="5752">5752</a>
+<a href="#5753" id="5753">5753</a>
+<a href="#5754" id="5754">5754</a>
+<a href="#5755" id="5755">5755</a>
+<a href="#5756" id="5756">5756</a>
+<a href="#5757" id="5757">5757</a>
+<a href="#5758" id="5758">5758</a>
+<a href="#5759" id="5759">5759</a>
+<a href="#5760" id="5760">5760</a>
+<a href="#5761" id="5761">5761</a>
+<a href="#5762" id="5762">5762</a>
+<a href="#5763" id="5763">5763</a>
+<a href="#5764" id="5764">5764</a>
+<a href="#5765" id="5765">5765</a>
+<a href="#5766" id="5766">5766</a>
+<a href="#5767" id="5767">5767</a>
+<a href="#5768" id="5768">5768</a>
+<a href="#5769" id="5769">5769</a>
+<a href="#5770" id="5770">5770</a>
+<a href="#5771" id="5771">5771</a>
+<a href="#5772" id="5772">5772</a>
+<a href="#5773" id="5773">5773</a>
+<a href="#5774" id="5774">5774</a>
+<a href="#5775" id="5775">5775</a>
+<a href="#5776" id="5776">5776</a>
+<a href="#5777" id="5777">5777</a>
+<a href="#5778" id="5778">5778</a>
+<a href="#5779" id="5779">5779</a>
+<a href="#5780" id="5780">5780</a>
+<a href="#5781" id="5781">5781</a>
+<a href="#5782" id="5782">5782</a>
+<a href="#5783" id="5783">5783</a>
+<a href="#5784" id="5784">5784</a>
+<a href="#5785" id="5785">5785</a>
+<a href="#5786" id="5786">5786</a>
+<a href="#5787" id="5787">5787</a>
+<a href="#5788" id="5788">5788</a>
+<a href="#5789" id="5789">5789</a>
+<a href="#5790" id="5790">5790</a>
+<a href="#5791" id="5791">5791</a>
+<a href="#5792" id="5792">5792</a>
+<a href="#5793" id="5793">5793</a>
+<a href="#5794" id="5794">5794</a>
+<a href="#5795" id="5795">5795</a>
+<a href="#5796" id="5796">5796</a>
+<a href="#5797" id="5797">5797</a>
+<a href="#5798" id="5798">5798</a>
+<a href="#5799" id="5799">5799</a>
+<a href="#5800" id="5800">5800</a>
+<a href="#5801" id="5801">5801</a>
+<a href="#5802" id="5802">5802</a>
+<a href="#5803" id="5803">5803</a>
+<a href="#5804" id="5804">5804</a>
+<a href="#5805" id="5805">5805</a>
+<a href="#5806" id="5806">5806</a>
+<a href="#5807" id="5807">5807</a>
+<a href="#5808" id="5808">5808</a>
+<a href="#5809" id="5809">5809</a>
+<a href="#5810" id="5810">5810</a>
+<a href="#5811" id="5811">5811</a>
+<a href="#5812" id="5812">5812</a>
+<a href="#5813" id="5813">5813</a>
+<a href="#5814" id="5814">5814</a>
+<a href="#5815" id="5815">5815</a>
+<a href="#5816" id="5816">5816</a>
+<a href="#5817" id="5817">5817</a>
+<a href="#5818" id="5818">5818</a>
+<a href="#5819" id="5819">5819</a>
+<a href="#5820" id="5820">5820</a>
+<a href="#5821" id="5821">5821</a>
+<a href="#5822" id="5822">5822</a>
+<a href="#5823" id="5823">5823</a>
+<a href="#5824" id="5824">5824</a>
+<a href="#5825" id="5825">5825</a>
+<a href="#5826" id="5826">5826</a>
+<a href="#5827" id="5827">5827</a>
+<a href="#5828" id="5828">5828</a>
+<a href="#5829" id="5829">5829</a>
+<a href="#5830" id="5830">5830</a>
+<a href="#5831" id="5831">5831</a>
+<a href="#5832" id="5832">5832</a>
+<a href="#5833" id="5833">5833</a>
+<a href="#5834" id="5834">5834</a>
+<a href="#5835" id="5835">5835</a>
+<a href="#5836" id="5836">5836</a>
+<a href="#5837" id="5837">5837</a>
+<a href="#5838" id="5838">5838</a>
+<a href="#5839" id="5839">5839</a>
+<a href="#5840" id="5840">5840</a>
+<a href="#5841" id="5841">5841</a>
+<a href="#5842" id="5842">5842</a>
+<a href="#5843" id="5843">5843</a>
+<a href="#5844" id="5844">5844</a>
+<a href="#5845" id="5845">5845</a>
+<a href="#5846" id="5846">5846</a>
+<a href="#5847" id="5847">5847</a>
+<a href="#5848" id="5848">5848</a>
+<a href="#5849" id="5849">5849</a>
+<a href="#5850" id="5850">5850</a>
+<a href="#5851" id="5851">5851</a>
+<a href="#5852" id="5852">5852</a>
+<a href="#5853" id="5853">5853</a>
+<a href="#5854" id="5854">5854</a>
+<a href="#5855" id="5855">5855</a>
+<a href="#5856" id="5856">5856</a>
+<a href="#5857" id="5857">5857</a>
+<a href="#5858" id="5858">5858</a>
+<a href="#5859" id="5859">5859</a>
+<a href="#5860" id="5860">5860</a>
+<a href="#5861" id="5861">5861</a>
+<a href="#5862" id="5862">5862</a>
+<a href="#5863" id="5863">5863</a>
+<a href="#5864" id="5864">5864</a>
+<a href="#5865" id="5865">5865</a>
+<a href="#5866" id="5866">5866</a>
+<a href="#5867" id="5867">5867</a>
+<a href="#5868" id="5868">5868</a>
+<a href="#5869" id="5869">5869</a>
+<a href="#5870" id="5870">5870</a>
+<a href="#5871" id="5871">5871</a>
+<a href="#5872" id="5872">5872</a>
+<a href="#5873" id="5873">5873</a>
+<a href="#5874" id="5874">5874</a>
+<a href="#5875" id="5875">5875</a>
+<a href="#5876" id="5876">5876</a>
+<a href="#5877" id="5877">5877</a>
+<a href="#5878" id="5878">5878</a>
+<a href="#5879" id="5879">5879</a>
+<a href="#5880" id="5880">5880</a>
+<a href="#5881" id="5881">5881</a>
+<a href="#5882" id="5882">5882</a>
+<a href="#5883" id="5883">5883</a>
+<a href="#5884" id="5884">5884</a>
+<a href="#5885" id="5885">5885</a>
+<a href="#5886" id="5886">5886</a>
+<a href="#5887" id="5887">5887</a>
+<a href="#5888" id="5888">5888</a>
+<a href="#5889" id="5889">5889</a>
+<a href="#5890" id="5890">5890</a>
+<a href="#5891" id="5891">5891</a>
+<a href="#5892" id="5892">5892</a>
+<a href="#5893" id="5893">5893</a>
+<a href="#5894" id="5894">5894</a>
+<a href="#5895" id="5895">5895</a>
+<a href="#5896" id="5896">5896</a>
+<a href="#5897" id="5897">5897</a>
+<a href="#5898" id="5898">5898</a>
+<a href="#5899" id="5899">5899</a>
+<a href="#5900" id="5900">5900</a>
+<a href="#5901" id="5901">5901</a>
+<a href="#5902" id="5902">5902</a>
+<a href="#5903" id="5903">5903</a>
+<a href="#5904" id="5904">5904</a>
+<a href="#5905" id="5905">5905</a>
+<a href="#5906" id="5906">5906</a>
+<a href="#5907" id="5907">5907</a>
+<a href="#5908" id="5908">5908</a>
+<a href="#5909" id="5909">5909</a>
+<a href="#5910" id="5910">5910</a>
+<a href="#5911" id="5911">5911</a>
+<a href="#5912" id="5912">5912</a>
+<a href="#5913" id="5913">5913</a>
+<a href="#5914" id="5914">5914</a>
+<a href="#5915" id="5915">5915</a>
+<a href="#5916" id="5916">5916</a>
+<a href="#5917" id="5917">5917</a>
+<a href="#5918" id="5918">5918</a>
+<a href="#5919" id="5919">5919</a>
+<a href="#5920" id="5920">5920</a>
+<a href="#5921" id="5921">5921</a>
+<a href="#5922" id="5922">5922</a>
+<a href="#5923" id="5923">5923</a>
+<a href="#5924" id="5924">5924</a>
+<a href="#5925" id="5925">5925</a>
+<a href="#5926" id="5926">5926</a>
+<a href="#5927" id="5927">5927</a>
+<a href="#5928" id="5928">5928</a>
+<a href="#5929" id="5929">5929</a>
+<a href="#5930" id="5930">5930</a>
+<a href="#5931" id="5931">5931</a>
+<a href="#5932" id="5932">5932</a>
+<a href="#5933" id="5933">5933</a>
+<a href="#5934" id="5934">5934</a>
+<a href="#5935" id="5935">5935</a>
+<a href="#5936" id="5936">5936</a>
+<a href="#5937" id="5937">5937</a>
+<a href="#5938" id="5938">5938</a>
+<a href="#5939" id="5939">5939</a>
+<a href="#5940" id="5940">5940</a>
+<a href="#5941" id="5941">5941</a>
+<a href="#5942" id="5942">5942</a>
+<a href="#5943" id="5943">5943</a>
+<a href="#5944" id="5944">5944</a>
+<a href="#5945" id="5945">5945</a>
+<a href="#5946" id="5946">5946</a>
+<a href="#5947" id="5947">5947</a>
+<a href="#5948" id="5948">5948</a>
+<a href="#5949" id="5949">5949</a>
+<a href="#5950" id="5950">5950</a>
+<a href="#5951" id="5951">5951</a>
+<a href="#5952" id="5952">5952</a>
+<a href="#5953" id="5953">5953</a>
+<a href="#5954" id="5954">5954</a>
+<a href="#5955" id="5955">5955</a>
+<a href="#5956" id="5956">5956</a>
+<a href="#5957" id="5957">5957</a>
+<a href="#5958" id="5958">5958</a>
+<a href="#5959" id="5959">5959</a>
+<a href="#5960" id="5960">5960</a>
+<a href="#5961" id="5961">5961</a>
+<a href="#5962" id="5962">5962</a>
+<a href="#5963" id="5963">5963</a>
+<a href="#5964" id="5964">5964</a>
+<a href="#5965" id="5965">5965</a>
+<a href="#5966" id="5966">5966</a>
+<a href="#5967" id="5967">5967</a>
+<a href="#5968" id="5968">5968</a>
+<a href="#5969" id="5969">5969</a>
+<a href="#5970" id="5970">5970</a>
+<a href="#5971" id="5971">5971</a>
+<a href="#5972" id="5972">5972</a>
+<a href="#5973" id="5973">5973</a>
+<a href="#5974" id="5974">5974</a>
+<a href="#5975" id="5975">5975</a>
+<a href="#5976" id="5976">5976</a>
+<a href="#5977" id="5977">5977</a>
+<a href="#5978" id="5978">5978</a>
+<a href="#5979" id="5979">5979</a>
+<a href="#5980" id="5980">5980</a>
+<a href="#5981" id="5981">5981</a>
+<a href="#5982" id="5982">5982</a>
+<a href="#5983" id="5983">5983</a>
+<a href="#5984" id="5984">5984</a>
+<a href="#5985" id="5985">5985</a>
+<a href="#5986" id="5986">5986</a>
+<a href="#5987" id="5987">5987</a>
+<a href="#5988" id="5988">5988</a>
+<a href="#5989" id="5989">5989</a>
+<a href="#5990" id="5990">5990</a>
+<a href="#5991" id="5991">5991</a>
+<a href="#5992" id="5992">5992</a>
+<a href="#5993" id="5993">5993</a>
+<a href="#5994" id="5994">5994</a>
+<a href="#5995" id="5995">5995</a>
+<a href="#5996" id="5996">5996</a>
+<a href="#5997" id="5997">5997</a>
+<a href="#5998" id="5998">5998</a>
+<a href="#5999" id="5999">5999</a>
+<a href="#6000" id="6000">6000</a>
+<a href="#6001" id="6001">6001</a>
+<a href="#6002" id="6002">6002</a>
+<a href="#6003" id="6003">6003</a>
+<a href="#6004" id="6004">6004</a>
+<a href="#6005" id="6005">6005</a>
+<a href="#6006" id="6006">6006</a>
+<a href="#6007" id="6007">6007</a>
+<a href="#6008" id="6008">6008</a>
+<a href="#6009" id="6009">6009</a>
+<a href="#6010" id="6010">6010</a>
+<a href="#6011" id="6011">6011</a>
+<a href="#6012" id="6012">6012</a>
+<a href="#6013" id="6013">6013</a>
+<a href="#6014" id="6014">6014</a>
+<a href="#6015" id="6015">6015</a>
+<a href="#6016" id="6016">6016</a>
+<a href="#6017" id="6017">6017</a>
+<a href="#6018" id="6018">6018</a>
+<a href="#6019" id="6019">6019</a>
+<a href="#6020" id="6020">6020</a>
+<a href="#6021" id="6021">6021</a>
+<a href="#6022" id="6022">6022</a>
+<a href="#6023" id="6023">6023</a>
+<a href="#6024" id="6024">6024</a>
+<a href="#6025" id="6025">6025</a>
+<a href="#6026" id="6026">6026</a>
+<a href="#6027" id="6027">6027</a>
+<a href="#6028" id="6028">6028</a>
+<a href="#6029" id="6029">6029</a>
+<a href="#6030" id="6030">6030</a>
+<a href="#6031" id="6031">6031</a>
+<a href="#6032" id="6032">6032</a>
+<a href="#6033" id="6033">6033</a>
+<a href="#6034" id="6034">6034</a>
+<a href="#6035" id="6035">6035</a>
+<a href="#6036" id="6036">6036</a>
+<a href="#6037" id="6037">6037</a>
+<a href="#6038" id="6038">6038</a>
+<a href="#6039" id="6039">6039</a>
+<a href="#6040" id="6040">6040</a>
+<a href="#6041" id="6041">6041</a>
+<a href="#6042" id="6042">6042</a>
+<a href="#6043" id="6043">6043</a>
+<a href="#6044" id="6044">6044</a>
+<a href="#6045" id="6045">6045</a>
+<a href="#6046" id="6046">6046</a>
+<a href="#6047" id="6047">6047</a>
+<a href="#6048" id="6048">6048</a>
+<a href="#6049" id="6049">6049</a>
+<a href="#6050" id="6050">6050</a>
+<a href="#6051" id="6051">6051</a>
+<a href="#6052" id="6052">6052</a>
+<a href="#6053" id="6053">6053</a>
+<a href="#6054" id="6054">6054</a>
+<a href="#6055" id="6055">6055</a>
+<a href="#6056" id="6056">6056</a>
+<a href="#6057" id="6057">6057</a>
+<a href="#6058" id="6058">6058</a>
+<a href="#6059" id="6059">6059</a>
+<a href="#6060" id="6060">6060</a>
+<a href="#6061" id="6061">6061</a>
+<a href="#6062" id="6062">6062</a>
+<a href="#6063" id="6063">6063</a>
+<a href="#6064" id="6064">6064</a>
+<a href="#6065" id="6065">6065</a>
+<a href="#6066" id="6066">6066</a>
+<a href="#6067" id="6067">6067</a>
+<a href="#6068" id="6068">6068</a>
+<a href="#6069" id="6069">6069</a>
+<a href="#6070" id="6070">6070</a>
+<a href="#6071" id="6071">6071</a>
+<a href="#6072" id="6072">6072</a>
+<a href="#6073" id="6073">6073</a>
+<a href="#6074" id="6074">6074</a>
+<a href="#6075" id="6075">6075</a>
+<a href="#6076" id="6076">6076</a>
+<a href="#6077" id="6077">6077</a>
+<a href="#6078" id="6078">6078</a>
+<a href="#6079" id="6079">6079</a>
+<a href="#6080" id="6080">6080</a>
+<a href="#6081" id="6081">6081</a>
+<a href="#6082" id="6082">6082</a>
+<a href="#6083" id="6083">6083</a>
+<a href="#6084" id="6084">6084</a>
+<a href="#6085" id="6085">6085</a>
+<a href="#6086" id="6086">6086</a>
+<a href="#6087" id="6087">6087</a>
+<a href="#6088" id="6088">6088</a>
+<a href="#6089" id="6089">6089</a>
+<a href="#6090" id="6090">6090</a>
+<a href="#6091" id="6091">6091</a>
+<a href="#6092" id="6092">6092</a>
+<a href="#6093" id="6093">6093</a>
+<a href="#6094" id="6094">6094</a>
+<a href="#6095" id="6095">6095</a>
+<a href="#6096" id="6096">6096</a>
+<a href="#6097" id="6097">6097</a>
+<a href="#6098" id="6098">6098</a>
+<a href="#6099" id="6099">6099</a>
+<a href="#6100" id="6100">6100</a>
+<a href="#6101" id="6101">6101</a>
+<a href="#6102" id="6102">6102</a>
+<a href="#6103" id="6103">6103</a>
+<a href="#6104" id="6104">6104</a>
+<a href="#6105" id="6105">6105</a>
+<a href="#6106" id="6106">6106</a>
+<a href="#6107" id="6107">6107</a>
+<a href="#6108" id="6108">6108</a>
+<a href="#6109" id="6109">6109</a>
+<a href="#6110" id="6110">6110</a>
+<a href="#6111" id="6111">6111</a>
+<a href="#6112" id="6112">6112</a>
+<a href="#6113" id="6113">6113</a>
+<a href="#6114" id="6114">6114</a>
+<a href="#6115" id="6115">6115</a>
+<a href="#6116" id="6116">6116</a>
+<a href="#6117" id="6117">6117</a>
+<a href="#6118" id="6118">6118</a>
+<a href="#6119" id="6119">6119</a>
+<a href="#6120" id="6120">6120</a>
+<a href="#6121" id="6121">6121</a>
+<a href="#6122" id="6122">6122</a>
+<a href="#6123" id="6123">6123</a>
+<a href="#6124" id="6124">6124</a>
+<a href="#6125" id="6125">6125</a>
+<a href="#6126" id="6126">6126</a>
+<a href="#6127" id="6127">6127</a>
+<a href="#6128" id="6128">6128</a>
+<a href="#6129" id="6129">6129</a>
+<a href="#6130" id="6130">6130</a>
+<a href="#6131" id="6131">6131</a>
+<a href="#6132" id="6132">6132</a>
+<a href="#6133" id="6133">6133</a>
+<a href="#6134" id="6134">6134</a>
+<a href="#6135" id="6135">6135</a>
+<a href="#6136" id="6136">6136</a>
+<a href="#6137" id="6137">6137</a>
+<a href="#6138" id="6138">6138</a>
+<a href="#6139" id="6139">6139</a>
+<a href="#6140" id="6140">6140</a>
+<a href="#6141" id="6141">6141</a>
+<a href="#6142" id="6142">6142</a>
+<a href="#6143" id="6143">6143</a>
+<a href="#6144" id="6144">6144</a>
+<a href="#6145" id="6145">6145</a>
+<a href="#6146" id="6146">6146</a>
+<a href="#6147" id="6147">6147</a>
+<a href="#6148" id="6148">6148</a>
+<a href="#6149" id="6149">6149</a>
+<a href="#6150" id="6150">6150</a>
+<a href="#6151" id="6151">6151</a>
+<a href="#6152" id="6152">6152</a>
+<a href="#6153" id="6153">6153</a>
+<a href="#6154" id="6154">6154</a>
+<a href="#6155" id="6155">6155</a>
+<a href="#6156" id="6156">6156</a>
+<a href="#6157" id="6157">6157</a>
+<a href="#6158" id="6158">6158</a>
+<a href="#6159" id="6159">6159</a>
+<a href="#6160" id="6160">6160</a>
+<a href="#6161" id="6161">6161</a>
+<a href="#6162" id="6162">6162</a>
+<a href="#6163" id="6163">6163</a>
+<a href="#6164" id="6164">6164</a>
+<a href="#6165" id="6165">6165</a>
+<a href="#6166" id="6166">6166</a>
+<a href="#6167" id="6167">6167</a>
+<a href="#6168" id="6168">6168</a>
+<a href="#6169" id="6169">6169</a>
+<a href="#6170" id="6170">6170</a>
+<a href="#6171" id="6171">6171</a>
+<a href="#6172" id="6172">6172</a>
+<a href="#6173" id="6173">6173</a>
+<a href="#6174" id="6174">6174</a>
+<a href="#6175" id="6175">6175</a>
+<a href="#6176" id="6176">6176</a>
+<a href="#6177" id="6177">6177</a>
+<a href="#6178" id="6178">6178</a>
+<a href="#6179" id="6179">6179</a>
+<a href="#6180" id="6180">6180</a>
+<a href="#6181" id="6181">6181</a>
+<a href="#6182" id="6182">6182</a>
+<a href="#6183" id="6183">6183</a>
+<a href="#6184" id="6184">6184</a>
+<a href="#6185" id="6185">6185</a>
+<a href="#6186" id="6186">6186</a>
+<a href="#6187" id="6187">6187</a>
+<a href="#6188" id="6188">6188</a>
+<a href="#6189" id="6189">6189</a>
+<a href="#6190" id="6190">6190</a>
+<a href="#6191" id="6191">6191</a>
+<a href="#6192" id="6192">6192</a>
+<a href="#6193" id="6193">6193</a>
+<a href="#6194" id="6194">6194</a>
+<a href="#6195" id="6195">6195</a>
+<a href="#6196" id="6196">6196</a>
+<a href="#6197" id="6197">6197</a>
+<a href="#6198" id="6198">6198</a>
+<a href="#6199" id="6199">6199</a>
+<a href="#6200" id="6200">6200</a>
+<a href="#6201" id="6201">6201</a>
+<a href="#6202" id="6202">6202</a>
+<a href="#6203" id="6203">6203</a>
+<a href="#6204" id="6204">6204</a>
+<a href="#6205" id="6205">6205</a>
+<a href="#6206" id="6206">6206</a>
+<a href="#6207" id="6207">6207</a>
+<a href="#6208" id="6208">6208</a>
+<a href="#6209" id="6209">6209</a>
+<a href="#6210" id="6210">6210</a>
+<a href="#6211" id="6211">6211</a>
+<a href="#6212" id="6212">6212</a>
+<a href="#6213" id="6213">6213</a>
+<a href="#6214" id="6214">6214</a>
+<a href="#6215" id="6215">6215</a>
+<a href="#6216" id="6216">6216</a>
+<a href="#6217" id="6217">6217</a>
+<a href="#6218" id="6218">6218</a>
+<a href="#6219" id="6219">6219</a>
+<a href="#6220" id="6220">6220</a>
+<a href="#6221" id="6221">6221</a>
+<a href="#6222" id="6222">6222</a>
+<a href="#6223" id="6223">6223</a>
+<a href="#6224" id="6224">6224</a>
+<a href="#6225" id="6225">6225</a>
+<a href="#6226" id="6226">6226</a>
+<a href="#6227" id="6227">6227</a>
+<a href="#6228" id="6228">6228</a>
+<a href="#6229" id="6229">6229</a>
+<a href="#6230" id="6230">6230</a>
+<a href="#6231" id="6231">6231</a>
+<a href="#6232" id="6232">6232</a>
+<a href="#6233" id="6233">6233</a>
+<a href="#6234" id="6234">6234</a>
+<a href="#6235" id="6235">6235</a>
+<a href="#6236" id="6236">6236</a>
+<a href="#6237" id="6237">6237</a>
+<a href="#6238" id="6238">6238</a>
+<a href="#6239" id="6239">6239</a>
+<a href="#6240" id="6240">6240</a>
+<a href="#6241" id="6241">6241</a>
+<a href="#6242" id="6242">6242</a>
+<a href="#6243" id="6243">6243</a>
+<a href="#6244" id="6244">6244</a>
+<a href="#6245" id="6245">6245</a>
+<a href="#6246" id="6246">6246</a>
+<a href="#6247" id="6247">6247</a>
+<a href="#6248" id="6248">6248</a>
+<a href="#6249" id="6249">6249</a>
+<a href="#6250" id="6250">6250</a>
+<a href="#6251" id="6251">6251</a>
+<a href="#6252" id="6252">6252</a>
+<a href="#6253" id="6253">6253</a>
+<a href="#6254" id="6254">6254</a>
+<a href="#6255" id="6255">6255</a>
+<a href="#6256" id="6256">6256</a>
+<a href="#6257" id="6257">6257</a>
+<a href="#6258" id="6258">6258</a>
+<a href="#6259" id="6259">6259</a>
+<a href="#6260" id="6260">6260</a>
+<a href="#6261" id="6261">6261</a>
+<a href="#6262" id="6262">6262</a>
+<a href="#6263" id="6263">6263</a>
+<a href="#6264" id="6264">6264</a>
+<a href="#6265" id="6265">6265</a>
+<a href="#6266" id="6266">6266</a>
+<a href="#6267" id="6267">6267</a>
+<a href="#6268" id="6268">6268</a>
+<a href="#6269" id="6269">6269</a>
+<a href="#6270" id="6270">6270</a>
+<a href="#6271" id="6271">6271</a>
+<a href="#6272" id="6272">6272</a>
+<a href="#6273" id="6273">6273</a>
+<a href="#6274" id="6274">6274</a>
+<a href="#6275" id="6275">6275</a>
+<a href="#6276" id="6276">6276</a>
+<a href="#6277" id="6277">6277</a>
+<a href="#6278" id="6278">6278</a>
+<a href="#6279" id="6279">6279</a>
+<a href="#6280" id="6280">6280</a>
+<a href="#6281" id="6281">6281</a>
+<a href="#6282" id="6282">6282</a>
+<a href="#6283" id="6283">6283</a>
+<a href="#6284" id="6284">6284</a>
+<a href="#6285" id="6285">6285</a>
+<a href="#6286" id="6286">6286</a>
+<a href="#6287" id="6287">6287</a>
+<a href="#6288" id="6288">6288</a>
+<a href="#6289" id="6289">6289</a>
+<a href="#6290" id="6290">6290</a>
+<a href="#6291" id="6291">6291</a>
+<a href="#6292" id="6292">6292</a>
+<a href="#6293" id="6293">6293</a>
+<a href="#6294" id="6294">6294</a>
+<a href="#6295" id="6295">6295</a>
+<a href="#6296" id="6296">6296</a>
+<a href="#6297" id="6297">6297</a>
+<a href="#6298" id="6298">6298</a>
+<a href="#6299" id="6299">6299</a>
+<a href="#6300" id="6300">6300</a>
+<a href="#6301" id="6301">6301</a>
+<a href="#6302" id="6302">6302</a>
+<a href="#6303" id="6303">6303</a>
+<a href="#6304" id="6304">6304</a>
+<a href="#6305" id="6305">6305</a>
+<a href="#6306" id="6306">6306</a>
+<a href="#6307" id="6307">6307</a>
+<a href="#6308" id="6308">6308</a>
+<a href="#6309" id="6309">6309</a>
+<a href="#6310" id="6310">6310</a>
+<a href="#6311" id="6311">6311</a>
+<a href="#6312" id="6312">6312</a>
+<a href="#6313" id="6313">6313</a>
+<a href="#6314" id="6314">6314</a>
+<a href="#6315" id="6315">6315</a>
+<a href="#6316" id="6316">6316</a>
+<a href="#6317" id="6317">6317</a>
+<a href="#6318" id="6318">6318</a>
+<a href="#6319" id="6319">6319</a>
+<a href="#6320" id="6320">6320</a>
+<a href="#6321" id="6321">6321</a>
+<a href="#6322" id="6322">6322</a>
+<a href="#6323" id="6323">6323</a>
+<a href="#6324" id="6324">6324</a>
+<a href="#6325" id="6325">6325</a>
+<a href="#6326" id="6326">6326</a>
+<a href="#6327" id="6327">6327</a>
+<a href="#6328" id="6328">6328</a>
+<a href="#6329" id="6329">6329</a>
+<a href="#6330" id="6330">6330</a>
+<a href="#6331" id="6331">6331</a>
+<a href="#6332" id="6332">6332</a>
+<a href="#6333" id="6333">6333</a>
+<a href="#6334" id="6334">6334</a>
+<a href="#6335" id="6335">6335</a>
+<a href="#6336" id="6336">6336</a>
+<a href="#6337" id="6337">6337</a>
+<a href="#6338" id="6338">6338</a>
+<a href="#6339" id="6339">6339</a>
+<a href="#6340" id="6340">6340</a>
+<a href="#6341" id="6341">6341</a>
+<a href="#6342" id="6342">6342</a>
+<a href="#6343" id="6343">6343</a>
+<a href="#6344" id="6344">6344</a>
+<a href="#6345" id="6345">6345</a>
+<a href="#6346" id="6346">6346</a>
+<a href="#6347" id="6347">6347</a>
+<a href="#6348" id="6348">6348</a>
+<a href="#6349" id="6349">6349</a>
+<a href="#6350" id="6350">6350</a>
+<a href="#6351" id="6351">6351</a>
+<a href="#6352" id="6352">6352</a>
+<a href="#6353" id="6353">6353</a>
+<a href="#6354" id="6354">6354</a>
+<a href="#6355" id="6355">6355</a>
+<a href="#6356" id="6356">6356</a>
+<a href="#6357" id="6357">6357</a>
+<a href="#6358" id="6358">6358</a>
+<a href="#6359" id="6359">6359</a>
+<a href="#6360" id="6360">6360</a>
+<a href="#6361" id="6361">6361</a>
+<a href="#6362" id="6362">6362</a>
+<a href="#6363" id="6363">6363</a>
+<a href="#6364" id="6364">6364</a>
+<a href="#6365" id="6365">6365</a>
+<a href="#6366" id="6366">6366</a>
+<a href="#6367" id="6367">6367</a>
+<a href="#6368" id="6368">6368</a>
+<a href="#6369" id="6369">6369</a>
+<a href="#6370" id="6370">6370</a>
+<a href="#6371" id="6371">6371</a>
+<a href="#6372" id="6372">6372</a>
+<a href="#6373" id="6373">6373</a>
+<a href="#6374" id="6374">6374</a>
+<a href="#6375" id="6375">6375</a>
+<a href="#6376" id="6376">6376</a>
+<a href="#6377" id="6377">6377</a>
+<a href="#6378" id="6378">6378</a>
+<a href="#6379" id="6379">6379</a>
+<a href="#6380" id="6380">6380</a>
+<a href="#6381" id="6381">6381</a>
+<a href="#6382" id="6382">6382</a>
+<a href="#6383" id="6383">6383</a>
+<a href="#6384" id="6384">6384</a>
+<a href="#6385" id="6385">6385</a>
+<a href="#6386" id="6386">6386</a>
+<a href="#6387" id="6387">6387</a>
+<a href="#6388" id="6388">6388</a>
+<a href="#6389" id="6389">6389</a>
+<a href="#6390" id="6390">6390</a>
+<a href="#6391" id="6391">6391</a>
+<a href="#6392" id="6392">6392</a>
+<a href="#6393" id="6393">6393</a>
+<a href="#6394" id="6394">6394</a>
+<a href="#6395" id="6395">6395</a>
+<a href="#6396" id="6396">6396</a>
+<a href="#6397" id="6397">6397</a>
+<a href="#6398" id="6398">6398</a>
+<a href="#6399" id="6399">6399</a>
+<a href="#6400" id="6400">6400</a>
+<a href="#6401" id="6401">6401</a>
+<a href="#6402" id="6402">6402</a>
+<a href="#6403" id="6403">6403</a>
+<a href="#6404" id="6404">6404</a>
+<a href="#6405" id="6405">6405</a>
+<a href="#6406" id="6406">6406</a>
+<a href="#6407" id="6407">6407</a>
+<a href="#6408" id="6408">6408</a>
+<a href="#6409" id="6409">6409</a>
+<a href="#6410" id="6410">6410</a>
+<a href="#6411" id="6411">6411</a>
+<a href="#6412" id="6412">6412</a>
+<a href="#6413" id="6413">6413</a>
+<a href="#6414" id="6414">6414</a>
+<a href="#6415" id="6415">6415</a>
+<a href="#6416" id="6416">6416</a>
+<a href="#6417" id="6417">6417</a>
+<a href="#6418" id="6418">6418</a>
+<a href="#6419" id="6419">6419</a>
+<a href="#6420" id="6420">6420</a>
+<a href="#6421" id="6421">6421</a>
+<a href="#6422" id="6422">6422</a>
+<a href="#6423" id="6423">6423</a>
+<a href="#6424" id="6424">6424</a>
+<a href="#6425" id="6425">6425</a>
+<a href="#6426" id="6426">6426</a>
+<a href="#6427" id="6427">6427</a>
+<a href="#6428" id="6428">6428</a>
+<a href="#6429" id="6429">6429</a>
+<a href="#6430" id="6430">6430</a>
+<a href="#6431" id="6431">6431</a>
+<a href="#6432" id="6432">6432</a>
+<a href="#6433" id="6433">6433</a>
+<a href="#6434" id="6434">6434</a>
+<a href="#6435" id="6435">6435</a>
+<a href="#6436" id="6436">6436</a>
+<a href="#6437" id="6437">6437</a>
+<a href="#6438" id="6438">6438</a>
+<a href="#6439" id="6439">6439</a>
+<a href="#6440" id="6440">6440</a>
+<a href="#6441" id="6441">6441</a>
+<a href="#6442" id="6442">6442</a>
+<a href="#6443" id="6443">6443</a>
+<a href="#6444" id="6444">6444</a>
+<a href="#6445" id="6445">6445</a>
+<a href="#6446" id="6446">6446</a>
+<a href="#6447" id="6447">6447</a>
+<a href="#6448" id="6448">6448</a>
+<a href="#6449" id="6449">6449</a>
+<a href="#6450" id="6450">6450</a>
+<a href="#6451" id="6451">6451</a>
+<a href="#6452" id="6452">6452</a>
+<a href="#6453" id="6453">6453</a>
+<a href="#6454" id="6454">6454</a>
+<a href="#6455" id="6455">6455</a>
+<a href="#6456" id="6456">6456</a>
+<a href="#6457" id="6457">6457</a>
+<a href="#6458" id="6458">6458</a>
+<a href="#6459" id="6459">6459</a>
+<a href="#6460" id="6460">6460</a>
+<a href="#6461" id="6461">6461</a>
+<a href="#6462" id="6462">6462</a>
+<a href="#6463" id="6463">6463</a>
+<a href="#6464" id="6464">6464</a>
+<a href="#6465" id="6465">6465</a>
+<a href="#6466" id="6466">6466</a>
+<a href="#6467" id="6467">6467</a>
+<a href="#6468" id="6468">6468</a>
+<a href="#6469" id="6469">6469</a>
+<a href="#6470" id="6470">6470</a>
+<a href="#6471" id="6471">6471</a>
+<a href="#6472" id="6472">6472</a>
+<a href="#6473" id="6473">6473</a>
+<a href="#6474" id="6474">6474</a>
+<a href="#6475" id="6475">6475</a>
+<a href="#6476" id="6476">6476</a>
+<a href="#6477" id="6477">6477</a>
+<a href="#6478" id="6478">6478</a>
+<a href="#6479" id="6479">6479</a>
+<a href="#6480" id="6480">6480</a>
+<a href="#6481" id="6481">6481</a>
+<a href="#6482" id="6482">6482</a>
+<a href="#6483" id="6483">6483</a>
+<a href="#6484" id="6484">6484</a>
+<a href="#6485" id="6485">6485</a>
+<a href="#6486" id="6486">6486</a>
+<a href="#6487" id="6487">6487</a>
+<a href="#6488" id="6488">6488</a>
+<a href="#6489" id="6489">6489</a>
+<a href="#6490" id="6490">6490</a>
+<a href="#6491" id="6491">6491</a>
+<a href="#6492" id="6492">6492</a>
+<a href="#6493" id="6493">6493</a>
+<a href="#6494" id="6494">6494</a>
+<a href="#6495" id="6495">6495</a>
+<a href="#6496" id="6496">6496</a>
+<a href="#6497" id="6497">6497</a>
+<a href="#6498" id="6498">6498</a>
+<a href="#6499" id="6499">6499</a>
+<a href="#6500" id="6500">6500</a>
+<a href="#6501" id="6501">6501</a>
+<a href="#6502" id="6502">6502</a>
+<a href="#6503" id="6503">6503</a>
+<a href="#6504" id="6504">6504</a>
+<a href="#6505" id="6505">6505</a>
+<a href="#6506" id="6506">6506</a>
+<a href="#6507" id="6507">6507</a>
+<a href="#6508" id="6508">6508</a>
+<a href="#6509" id="6509">6509</a>
+<a href="#6510" id="6510">6510</a>
+<a href="#6511" id="6511">6511</a>
+<a href="#6512" id="6512">6512</a>
+<a href="#6513" id="6513">6513</a>
+<a href="#6514" id="6514">6514</a>
+<a href="#6515" id="6515">6515</a>
+<a href="#6516" id="6516">6516</a>
+<a href="#6517" id="6517">6517</a>
+<a href="#6518" id="6518">6518</a>
+<a href="#6519" id="6519">6519</a>
+<a href="#6520" id="6520">6520</a>
+<a href="#6521" id="6521">6521</a>
+<a href="#6522" id="6522">6522</a>
+<a href="#6523" id="6523">6523</a>
+<a href="#6524" id="6524">6524</a>
+<a href="#6525" id="6525">6525</a>
+<a href="#6526" id="6526">6526</a>
+<a href="#6527" id="6527">6527</a>
+<a href="#6528" id="6528">6528</a>
+<a href="#6529" id="6529">6529</a>
+<a href="#6530" id="6530">6530</a>
+<a href="#6531" id="6531">6531</a>
+<a href="#6532" id="6532">6532</a>
+<a href="#6533" id="6533">6533</a>
+<a href="#6534" id="6534">6534</a>
+<a href="#6535" id="6535">6535</a>
+<a href="#6536" id="6536">6536</a>
+<a href="#6537" id="6537">6537</a>
+<a href="#6538" id="6538">6538</a>
+<a href="#6539" id="6539">6539</a>
+<a href="#6540" id="6540">6540</a>
+<a href="#6541" id="6541">6541</a>
+<a href="#6542" id="6542">6542</a>
+<a href="#6543" id="6543">6543</a>
+<a href="#6544" id="6544">6544</a>
+<a href="#6545" id="6545">6545</a>
+<a href="#6546" id="6546">6546</a>
+<a href="#6547" id="6547">6547</a>
+<a href="#6548" id="6548">6548</a>
+<a href="#6549" id="6549">6549</a>
+<a href="#6550" id="6550">6550</a>
+<a href="#6551" id="6551">6551</a>
+<a href="#6552" id="6552">6552</a>
+<a href="#6553" id="6553">6553</a>
+<a href="#6554" id="6554">6554</a>
+<a href="#6555" id="6555">6555</a>
+<a href="#6556" id="6556">6556</a>
+<a href="#6557" id="6557">6557</a>
+<a href="#6558" id="6558">6558</a>
+<a href="#6559" id="6559">6559</a>
+<a href="#6560" id="6560">6560</a>
+<a href="#6561" id="6561">6561</a>
+<a href="#6562" id="6562">6562</a>
+<a href="#6563" id="6563">6563</a>
+<a href="#6564" id="6564">6564</a>
+<a href="#6565" id="6565">6565</a>
+<a href="#6566" id="6566">6566</a>
+<a href="#6567" id="6567">6567</a>
+<a href="#6568" id="6568">6568</a>
+<a href="#6569" id="6569">6569</a>
+<a href="#6570" id="6570">6570</a>
+<a href="#6571" id="6571">6571</a>
+<a href="#6572" id="6572">6572</a>
+<a href="#6573" id="6573">6573</a>
+<a href="#6574" id="6574">6574</a>
+<a href="#6575" id="6575">6575</a>
+<a href="#6576" id="6576">6576</a>
+<a href="#6577" id="6577">6577</a>
+<a href="#6578" id="6578">6578</a>
+<a href="#6579" id="6579">6579</a>
+<a href="#6580" id="6580">6580</a>
+<a href="#6581" id="6581">6581</a>
+<a href="#6582" id="6582">6582</a>
+<a href="#6583" id="6583">6583</a>
+<a href="#6584" id="6584">6584</a>
+<a href="#6585" id="6585">6585</a>
+<a href="#6586" id="6586">6586</a>
+<a href="#6587" id="6587">6587</a>
+<a href="#6588" id="6588">6588</a>
+<a href="#6589" id="6589">6589</a>
+<a href="#6590" id="6590">6590</a>
+<a href="#6591" id="6591">6591</a>
+<a href="#6592" id="6592">6592</a>
+<a href="#6593" id="6593">6593</a>
+<a href="#6594" id="6594">6594</a>
+<a href="#6595" id="6595">6595</a>
+<a href="#6596" id="6596">6596</a>
+<a href="#6597" id="6597">6597</a>
+<a href="#6598" id="6598">6598</a>
+<a href="#6599" id="6599">6599</a>
+<a href="#6600" id="6600">6600</a>
+<a href="#6601" id="6601">6601</a>
+<a href="#6602" id="6602">6602</a>
+<a href="#6603" id="6603">6603</a>
+<a href="#6604" id="6604">6604</a>
+<a href="#6605" id="6605">6605</a>
+<a href="#6606" id="6606">6606</a>
+<a href="#6607" id="6607">6607</a>
+<a href="#6608" id="6608">6608</a>
+<a href="#6609" id="6609">6609</a>
+<a href="#6610" id="6610">6610</a>
+<a href="#6611" id="6611">6611</a>
+<a href="#6612" id="6612">6612</a>
+<a href="#6613" id="6613">6613</a>
+<a href="#6614" id="6614">6614</a>
+<a href="#6615" id="6615">6615</a>
+<a href="#6616" id="6616">6616</a>
+<a href="#6617" id="6617">6617</a>
+<a href="#6618" id="6618">6618</a>
+<a href="#6619" id="6619">6619</a>
+<a href="#6620" id="6620">6620</a>
+<a href="#6621" id="6621">6621</a>
+<a href="#6622" id="6622">6622</a>
+<a href="#6623" id="6623">6623</a>
+<a href="#6624" id="6624">6624</a>
+<a href="#6625" id="6625">6625</a>
+<a href="#6626" id="6626">6626</a>
+<a href="#6627" id="6627">6627</a>
+<a href="#6628" id="6628">6628</a>
+<a href="#6629" id="6629">6629</a>
+<a href="#6630" id="6630">6630</a>
+<a href="#6631" id="6631">6631</a>
+<a href="#6632" id="6632">6632</a>
+<a href="#6633" id="6633">6633</a>
+<a href="#6634" id="6634">6634</a>
+<a href="#6635" id="6635">6635</a>
+<a href="#6636" id="6636">6636</a>
+<a href="#6637" id="6637">6637</a>
+<a href="#6638" id="6638">6638</a>
+<a href="#6639" id="6639">6639</a>
+<a href="#6640" id="6640">6640</a>
+<a href="#6641" id="6641">6641</a>
+<a href="#6642" id="6642">6642</a>
+<a href="#6643" id="6643">6643</a>
+<a href="#6644" id="6644">6644</a>
+<a href="#6645" id="6645">6645</a>
+<a href="#6646" id="6646">6646</a>
+<a href="#6647" id="6647">6647</a>
+<a href="#6648" id="6648">6648</a>
+<a href="#6649" id="6649">6649</a>
+<a href="#6650" id="6650">6650</a>
+<a href="#6651" id="6651">6651</a>
+<a href="#6652" id="6652">6652</a>
+<a href="#6653" id="6653">6653</a>
+<a href="#6654" id="6654">6654</a>
+<a href="#6655" id="6655">6655</a>
+<a href="#6656" id="6656">6656</a>
+<a href="#6657" id="6657">6657</a>
+<a href="#6658" id="6658">6658</a>
+<a href="#6659" id="6659">6659</a>
+<a href="#6660" id="6660">6660</a>
+<a href="#6661" id="6661">6661</a>
+<a href="#6662" id="6662">6662</a>
+<a href="#6663" id="6663">6663</a>
+<a href="#6664" id="6664">6664</a>
+<a href="#6665" id="6665">6665</a>
+<a href="#6666" id="6666">6666</a>
+<a href="#6667" id="6667">6667</a>
+<a href="#6668" id="6668">6668</a>
+<a href="#6669" id="6669">6669</a>
+<a href="#6670" id="6670">6670</a>
+<a href="#6671" id="6671">6671</a>
+<a href="#6672" id="6672">6672</a>
+<a href="#6673" id="6673">6673</a>
+<a href="#6674" id="6674">6674</a>
+<a href="#6675" id="6675">6675</a>
+<a href="#6676" id="6676">6676</a>
+<a href="#6677" id="6677">6677</a>
+<a href="#6678" id="6678">6678</a>
+<a href="#6679" id="6679">6679</a>
+<a href="#6680" id="6680">6680</a>
+<a href="#6681" id="6681">6681</a>
+<a href="#6682" id="6682">6682</a>
+<a href="#6683" id="6683">6683</a>
+<a href="#6684" id="6684">6684</a>
+<a href="#6685" id="6685">6685</a>
+<a href="#6686" id="6686">6686</a>
+<a href="#6687" id="6687">6687</a>
+<a href="#6688" id="6688">6688</a>
+<a href="#6689" id="6689">6689</a>
+<a href="#6690" id="6690">6690</a>
+<a href="#6691" id="6691">6691</a>
+<a href="#6692" id="6692">6692</a>
+<a href="#6693" id="6693">6693</a>
+<a href="#6694" id="6694">6694</a>
+<a href="#6695" id="6695">6695</a>
+<a href="#6696" id="6696">6696</a>
+<a href="#6697" id="6697">6697</a>
+<a href="#6698" id="6698">6698</a>
+<a href="#6699" id="6699">6699</a>
+<a href="#6700" id="6700">6700</a>
+<a href="#6701" id="6701">6701</a>
+<a href="#6702" id="6702">6702</a>
+<a href="#6703" id="6703">6703</a>
+<a href="#6704" id="6704">6704</a>
+<a href="#6705" id="6705">6705</a>
+<a href="#6706" id="6706">6706</a>
+<a href="#6707" id="6707">6707</a>
+<a href="#6708" id="6708">6708</a>
+<a href="#6709" id="6709">6709</a>
+<a href="#6710" id="6710">6710</a>
+<a href="#6711" id="6711">6711</a>
+<a href="#6712" id="6712">6712</a>
+<a href="#6713" id="6713">6713</a>
+<a href="#6714" id="6714">6714</a>
+<a href="#6715" id="6715">6715</a>
+<a href="#6716" id="6716">6716</a>
+<a href="#6717" id="6717">6717</a>
+<a href="#6718" id="6718">6718</a>
+<a href="#6719" id="6719">6719</a>
+<a href="#6720" id="6720">6720</a>
+<a href="#6721" id="6721">6721</a>
+<a href="#6722" id="6722">6722</a>
+<a href="#6723" id="6723">6723</a>
+<a href="#6724" id="6724">6724</a>
+<a href="#6725" id="6725">6725</a>
+<a href="#6726" id="6726">6726</a>
+<a href="#6727" id="6727">6727</a>
+<a href="#6728" id="6728">6728</a>
+<a href="#6729" id="6729">6729</a>
+<a href="#6730" id="6730">6730</a>
+<a href="#6731" id="6731">6731</a>
+<a href="#6732" id="6732">6732</a>
+<a href="#6733" id="6733">6733</a>
+<a href="#6734" id="6734">6734</a>
+<a href="#6735" id="6735">6735</a>
+<a href="#6736" id="6736">6736</a>
+<a href="#6737" id="6737">6737</a>
+<a href="#6738" id="6738">6738</a>
+<a href="#6739" id="6739">6739</a>
+<a href="#6740" id="6740">6740</a>
+<a href="#6741" id="6741">6741</a>
+<a href="#6742" id="6742">6742</a>
+<a href="#6743" id="6743">6743</a>
+<a href="#6744" id="6744">6744</a>
+<a href="#6745" id="6745">6745</a>
+<a href="#6746" id="6746">6746</a>
+<a href="#6747" id="6747">6747</a>
+<a href="#6748" id="6748">6748</a>
+<a href="#6749" id="6749">6749</a>
+<a href="#6750" id="6750">6750</a>
+<a href="#6751" id="6751">6751</a>
+<a href="#6752" id="6752">6752</a>
+<a href="#6753" id="6753">6753</a>
+<a href="#6754" id="6754">6754</a>
+<a href="#6755" id="6755">6755</a>
+<a href="#6756" id="6756">6756</a>
+<a href="#6757" id="6757">6757</a>
+<a href="#6758" id="6758">6758</a>
+<a href="#6759" id="6759">6759</a>
+<a href="#6760" id="6760">6760</a>
+<a href="#6761" id="6761">6761</a>
+<a href="#6762" id="6762">6762</a>
+<a href="#6763" id="6763">6763</a>
+<a href="#6764" id="6764">6764</a>
+<a href="#6765" id="6765">6765</a>
+<a href="#6766" id="6766">6766</a>
+<a href="#6767" id="6767">6767</a>
+<a href="#6768" id="6768">6768</a>
+<a href="#6769" id="6769">6769</a>
+<a href="#6770" id="6770">6770</a>
+<a href="#6771" id="6771">6771</a>
+<a href="#6772" id="6772">6772</a>
+<a href="#6773" id="6773">6773</a>
+<a href="#6774" id="6774">6774</a>
+<a href="#6775" id="6775">6775</a>
+<a href="#6776" id="6776">6776</a>
+<a href="#6777" id="6777">6777</a>
+<a href="#6778" id="6778">6778</a>
+<a href="#6779" id="6779">6779</a>
+<a href="#6780" id="6780">6780</a>
+<a href="#6781" id="6781">6781</a>
+<a href="#6782" id="6782">6782</a>
+<a href="#6783" id="6783">6783</a>
+<a href="#6784" id="6784">6784</a>
+<a href="#6785" id="6785">6785</a>
+<a href="#6786" id="6786">6786</a>
+<a href="#6787" id="6787">6787</a>
+<a href="#6788" id="6788">6788</a>
+<a href="#6789" id="6789">6789</a>
+<a href="#6790" id="6790">6790</a>
+<a href="#6791" id="6791">6791</a>
+<a href="#6792" id="6792">6792</a>
+<a href="#6793" id="6793">6793</a>
+<a href="#6794" id="6794">6794</a>
+<a href="#6795" id="6795">6795</a>
+<a href="#6796" id="6796">6796</a>
+<a href="#6797" id="6797">6797</a>
+<a href="#6798" id="6798">6798</a>
+<a href="#6799" id="6799">6799</a>
+<a href="#6800" id="6800">6800</a>
+<a href="#6801" id="6801">6801</a>
+<a href="#6802" id="6802">6802</a>
+<a href="#6803" id="6803">6803</a>
+<a href="#6804" id="6804">6804</a>
+<a href="#6805" id="6805">6805</a>
+<a href="#6806" id="6806">6806</a>
+<a href="#6807" id="6807">6807</a>
+<a href="#6808" id="6808">6808</a>
+<a href="#6809" id="6809">6809</a>
+<a href="#6810" id="6810">6810</a>
+<a href="#6811" id="6811">6811</a>
+<a href="#6812" id="6812">6812</a>
+<a href="#6813" id="6813">6813</a>
+<a href="#6814" id="6814">6814</a>
+<a href="#6815" id="6815">6815</a>
+<a href="#6816" id="6816">6816</a>
+<a href="#6817" id="6817">6817</a>
+<a href="#6818" id="6818">6818</a>
+<a href="#6819" id="6819">6819</a>
+<a href="#6820" id="6820">6820</a>
+<a href="#6821" id="6821">6821</a>
+<a href="#6822" id="6822">6822</a>
+<a href="#6823" id="6823">6823</a>
+<a href="#6824" id="6824">6824</a>
+<a href="#6825" id="6825">6825</a>
+<a href="#6826" id="6826">6826</a>
+<a href="#6827" id="6827">6827</a>
+<a href="#6828" id="6828">6828</a>
+<a href="#6829" id="6829">6829</a>
+<a href="#6830" id="6830">6830</a>
+<a href="#6831" id="6831">6831</a>
+<a href="#6832" id="6832">6832</a>
+<a href="#6833" id="6833">6833</a>
+<a href="#6834" id="6834">6834</a>
+<a href="#6835" id="6835">6835</a>
+<a href="#6836" id="6836">6836</a>
+<a href="#6837" id="6837">6837</a>
+<a href="#6838" id="6838">6838</a>
+<a href="#6839" id="6839">6839</a>
+<a href="#6840" id="6840">6840</a>
+<a href="#6841" id="6841">6841</a>
+<a href="#6842" id="6842">6842</a>
+<a href="#6843" id="6843">6843</a>
+<a href="#6844" id="6844">6844</a>
+<a href="#6845" id="6845">6845</a>
+<a href="#6846" id="6846">6846</a>
+<a href="#6847" id="6847">6847</a>
+<a href="#6848" id="6848">6848</a>
+<a href="#6849" id="6849">6849</a>
+<a href="#6850" id="6850">6850</a>
+<a href="#6851" id="6851">6851</a>
+<a href="#6852" id="6852">6852</a>
+<a href="#6853" id="6853">6853</a>
+<a href="#6854" id="6854">6854</a>
+<a href="#6855" id="6855">6855</a>
+<a href="#6856" id="6856">6856</a>
+<a href="#6857" id="6857">6857</a>
+<a href="#6858" id="6858">6858</a>
+<a href="#6859" id="6859">6859</a>
+<a href="#6860" id="6860">6860</a>
+<a href="#6861" id="6861">6861</a>
+<a href="#6862" id="6862">6862</a>
+<a href="#6863" id="6863">6863</a>
+<a href="#6864" id="6864">6864</a>
+<a href="#6865" id="6865">6865</a>
+<a href="#6866" id="6866">6866</a>
+<a href="#6867" id="6867">6867</a>
+<a href="#6868" id="6868">6868</a>
+<a href="#6869" id="6869">6869</a>
+<a href="#6870" id="6870">6870</a>
+<a href="#6871" id="6871">6871</a>
+<a href="#6872" id="6872">6872</a>
+<a href="#6873" id="6873">6873</a>
+<a href="#6874" id="6874">6874</a>
+<a href="#6875" id="6875">6875</a>
+<a href="#6876" id="6876">6876</a>
+<a href="#6877" id="6877">6877</a>
+<a href="#6878" id="6878">6878</a>
+<a href="#6879" id="6879">6879</a>
+<a href="#6880" id="6880">6880</a>
+<a href="#6881" id="6881">6881</a>
+<a href="#6882" id="6882">6882</a>
+<a href="#6883" id="6883">6883</a>
+<a href="#6884" id="6884">6884</a>
+<a href="#6885" id="6885">6885</a>
+<a href="#6886" id="6886">6886</a>
+<a href="#6887" id="6887">6887</a>
+<a href="#6888" id="6888">6888</a>
+<a href="#6889" id="6889">6889</a>
+<a href="#6890" id="6890">6890</a>
+<a href="#6891" id="6891">6891</a>
+<a href="#6892" id="6892">6892</a>
+<a href="#6893" id="6893">6893</a>
+<a href="#6894" id="6894">6894</a>
+<a href="#6895" id="6895">6895</a>
+<a href="#6896" id="6896">6896</a>
+<a href="#6897" id="6897">6897</a>
+<a href="#6898" id="6898">6898</a>
+<a href="#6899" id="6899">6899</a>
+<a href="#6900" id="6900">6900</a>
+<a href="#6901" id="6901">6901</a>
+<a href="#6902" id="6902">6902</a>
+<a href="#6903" id="6903">6903</a>
+<a href="#6904" id="6904">6904</a>
+<a href="#6905" id="6905">6905</a>
+<a href="#6906" id="6906">6906</a>
+<a href="#6907" id="6907">6907</a>
+<a href="#6908" id="6908">6908</a>
+<a href="#6909" id="6909">6909</a>
+<a href="#6910" id="6910">6910</a>
+<a href="#6911" id="6911">6911</a>
+<a href="#6912" id="6912">6912</a>
+<a href="#6913" id="6913">6913</a>
+<a href="#6914" id="6914">6914</a>
+<a href="#6915" id="6915">6915</a>
+<a href="#6916" id="6916">6916</a>
+<a href="#6917" id="6917">6917</a>
+<a href="#6918" id="6918">6918</a>
+<a href="#6919" id="6919">6919</a>
+<a href="#6920" id="6920">6920</a>
+<a href="#6921" id="6921">6921</a>
+<a href="#6922" id="6922">6922</a>
+<a href="#6923" id="6923">6923</a>
+<a href="#6924" id="6924">6924</a>
+<a href="#6925" id="6925">6925</a>
+<a href="#6926" id="6926">6926</a>
+<a href="#6927" id="6927">6927</a>
+<a href="#6928" id="6928">6928</a>
+<a href="#6929" id="6929">6929</a>
+<a href="#6930" id="6930">6930</a>
+<a href="#6931" id="6931">6931</a>
+<a href="#6932" id="6932">6932</a>
+<a href="#6933" id="6933">6933</a>
+<a href="#6934" id="6934">6934</a>
+<a href="#6935" id="6935">6935</a>
+<a href="#6936" id="6936">6936</a>
+<a href="#6937" id="6937">6937</a>
+<a href="#6938" id="6938">6938</a>
+<a href="#6939" id="6939">6939</a>
+<a href="#6940" id="6940">6940</a>
+<a href="#6941" id="6941">6941</a>
+<a href="#6942" id="6942">6942</a>
+<a href="#6943" id="6943">6943</a>
+<a href="#6944" id="6944">6944</a>
+<a href="#6945" id="6945">6945</a>
+<a href="#6946" id="6946">6946</a>
+<a href="#6947" id="6947">6947</a>
+<a href="#6948" id="6948">6948</a>
+<a href="#6949" id="6949">6949</a>
+<a href="#6950" id="6950">6950</a>
+<a href="#6951" id="6951">6951</a>
+<a href="#6952" id="6952">6952</a>
+<a href="#6953" id="6953">6953</a>
+<a href="#6954" id="6954">6954</a>
+<a href="#6955" id="6955">6955</a>
+<a href="#6956" id="6956">6956</a>
+<a href="#6957" id="6957">6957</a>
+<a href="#6958" id="6958">6958</a>
+<a href="#6959" id="6959">6959</a>
+<a href="#6960" id="6960">6960</a>
+<a href="#6961" id="6961">6961</a>
+<a href="#6962" id="6962">6962</a>
+<a href="#6963" id="6963">6963</a>
+<a href="#6964" id="6964">6964</a>
+<a href="#6965" id="6965">6965</a>
+<a href="#6966" id="6966">6966</a>
+<a href="#6967" id="6967">6967</a>
+<a href="#6968" id="6968">6968</a>
+<a href="#6969" id="6969">6969</a>
+<a href="#6970" id="6970">6970</a>
+<a href="#6971" id="6971">6971</a>
+<a href="#6972" id="6972">6972</a>
+<a href="#6973" id="6973">6973</a>
+<a href="#6974" id="6974">6974</a>
+<a href="#6975" id="6975">6975</a>
+<a href="#6976" id="6976">6976</a>
+<a href="#6977" id="6977">6977</a>
+<a href="#6978" id="6978">6978</a>
+<a href="#6979" id="6979">6979</a>
+<a href="#6980" id="6980">6980</a>
+<a href="#6981" id="6981">6981</a>
+<a href="#6982" id="6982">6982</a>
+<a href="#6983" id="6983">6983</a>
+<a href="#6984" id="6984">6984</a>
+<a href="#6985" id="6985">6985</a>
+<a href="#6986" id="6986">6986</a>
+<a href="#6987" id="6987">6987</a>
+<a href="#6988" id="6988">6988</a>
+<a href="#6989" id="6989">6989</a>
+<a href="#6990" id="6990">6990</a>
+<a href="#6991" id="6991">6991</a>
+<a href="#6992" id="6992">6992</a>
+<a href="#6993" id="6993">6993</a>
+<a href="#6994" id="6994">6994</a>
+<a href="#6995" id="6995">6995</a>
+<a href="#6996" id="6996">6996</a>
+<a href="#6997" id="6997">6997</a>
+<a href="#6998" id="6998">6998</a>
+<a href="#6999" id="6999">6999</a>
+<a href="#7000" id="7000">7000</a>
+<a href="#7001" id="7001">7001</a>
+<a href="#7002" id="7002">7002</a>
+<a href="#7003" id="7003">7003</a>
+<a href="#7004" id="7004">7004</a>
+<a href="#7005" id="7005">7005</a>
+<a href="#7006" id="7006">7006</a>
+<a href="#7007" id="7007">7007</a>
+<a href="#7008" id="7008">7008</a>
+<a href="#7009" id="7009">7009</a>
+<a href="#7010" id="7010">7010</a>
+<a href="#7011" id="7011">7011</a>
+<a href="#7012" id="7012">7012</a>
+<a href="#7013" id="7013">7013</a>
+<a href="#7014" id="7014">7014</a>
+<a href="#7015" id="7015">7015</a>
+<a href="#7016" id="7016">7016</a>
+<a href="#7017" id="7017">7017</a>
+<a href="#7018" id="7018">7018</a>
+<a href="#7019" id="7019">7019</a>
+<a href="#7020" id="7020">7020</a>
+<a href="#7021" id="7021">7021</a>
+<a href="#7022" id="7022">7022</a>
+<a href="#7023" id="7023">7023</a>
+<a href="#7024" id="7024">7024</a>
+<a href="#7025" id="7025">7025</a>
+<a href="#7026" id="7026">7026</a>
+<a href="#7027" id="7027">7027</a>
+<a href="#7028" id="7028">7028</a>
+<a href="#7029" id="7029">7029</a>
+<a href="#7030" id="7030">7030</a>
+<a href="#7031" id="7031">7031</a>
+<a href="#7032" id="7032">7032</a>
+<a href="#7033" id="7033">7033</a>
+<a href="#7034" id="7034">7034</a>
+<a href="#7035" id="7035">7035</a>
+<a href="#7036" id="7036">7036</a>
+<a href="#7037" id="7037">7037</a>
+<a href="#7038" id="7038">7038</a>
+<a href="#7039" id="7039">7039</a>
+<a href="#7040" id="7040">7040</a>
+<a href="#7041" id="7041">7041</a>
+<a href="#7042" id="7042">7042</a>
+<a href="#7043" id="7043">7043</a>
+<a href="#7044" id="7044">7044</a>
+<a href="#7045" id="7045">7045</a>
+<a href="#7046" id="7046">7046</a>
+<a href="#7047" id="7047">7047</a>
+<a href="#7048" id="7048">7048</a>
+<a href="#7049" id="7049">7049</a>
+<a href="#7050" id="7050">7050</a>
+<a href="#7051" id="7051">7051</a>
+<a href="#7052" id="7052">7052</a>
+<a href="#7053" id="7053">7053</a>
+<a href="#7054" id="7054">7054</a>
+<a href="#7055" id="7055">7055</a>
+<a href="#7056" id="7056">7056</a>
+<a href="#7057" id="7057">7057</a>
+<a href="#7058" id="7058">7058</a>
+<a href="#7059" id="7059">7059</a>
+<a href="#7060" id="7060">7060</a>
+<a href="#7061" id="7061">7061</a>
+<a href="#7062" id="7062">7062</a>
+<a href="#7063" id="7063">7063</a>
+<a href="#7064" id="7064">7064</a>
+<a href="#7065" id="7065">7065</a>
+<a href="#7066" id="7066">7066</a>
+<a href="#7067" id="7067">7067</a>
+<a href="#7068" id="7068">7068</a>
+<a href="#7069" id="7069">7069</a>
+<a href="#7070" id="7070">7070</a>
+<a href="#7071" id="7071">7071</a>
+<a href="#7072" id="7072">7072</a>
+<a href="#7073" id="7073">7073</a>
+<a href="#7074" id="7074">7074</a>
+<a href="#7075" id="7075">7075</a>
+<a href="#7076" id="7076">7076</a>
+<a href="#7077" id="7077">7077</a>
+<a href="#7078" id="7078">7078</a>
+<a href="#7079" id="7079">7079</a>
+<a href="#7080" id="7080">7080</a>
+<a href="#7081" id="7081">7081</a>
+<a href="#7082" id="7082">7082</a>
+<a href="#7083" id="7083">7083</a>
+<a href="#7084" id="7084">7084</a>
+<a href="#7085" id="7085">7085</a>
+<a href="#7086" id="7086">7086</a>
+<a href="#7087" id="7087">7087</a>
+<a href="#7088" id="7088">7088</a>
+<a href="#7089" id="7089">7089</a>
+<a href="#7090" id="7090">7090</a>
+<a href="#7091" id="7091">7091</a>
+<a href="#7092" id="7092">7092</a>
+<a href="#7093" id="7093">7093</a>
+<a href="#7094" id="7094">7094</a>
+<a href="#7095" id="7095">7095</a>
+<a href="#7096" id="7096">7096</a>
+<a href="#7097" id="7097">7097</a>
+<a href="#7098" id="7098">7098</a>
+<a href="#7099" id="7099">7099</a>
+<a href="#7100" id="7100">7100</a>
+<a href="#7101" id="7101">7101</a>
+<a href="#7102" id="7102">7102</a>
+<a href="#7103" id="7103">7103</a>
+<a href="#7104" id="7104">7104</a>
+<a href="#7105" id="7105">7105</a>
+<a href="#7106" id="7106">7106</a>
+<a href="#7107" id="7107">7107</a>
+<a href="#7108" id="7108">7108</a>
+<a href="#7109" id="7109">7109</a>
+<a href="#7110" id="7110">7110</a>
+<a href="#7111" id="7111">7111</a>
+<a href="#7112" id="7112">7112</a>
+<a href="#7113" id="7113">7113</a>
+<a href="#7114" id="7114">7114</a>
+<a href="#7115" id="7115">7115</a>
+<a href="#7116" id="7116">7116</a>
+<a href="#7117" id="7117">7117</a>
+<a href="#7118" id="7118">7118</a>
+<a href="#7119" id="7119">7119</a>
+<a href="#7120" id="7120">7120</a>
+<a href="#7121" id="7121">7121</a>
+<a href="#7122" id="7122">7122</a>
+<a href="#7123" id="7123">7123</a>
+<a href="#7124" id="7124">7124</a>
+<a href="#7125" id="7125">7125</a>
+<a href="#7126" id="7126">7126</a>
+<a href="#7127" id="7127">7127</a>
+<a href="#7128" id="7128">7128</a>
+<a href="#7129" id="7129">7129</a>
+<a href="#7130" id="7130">7130</a>
+<a href="#7131" id="7131">7131</a>
+<a href="#7132" id="7132">7132</a>
+<a href="#7133" id="7133">7133</a>
+<a href="#7134" id="7134">7134</a>
+<a href="#7135" id="7135">7135</a>
+<a href="#7136" id="7136">7136</a>
+<a href="#7137" id="7137">7137</a>
+<a href="#7138" id="7138">7138</a>
+<a href="#7139" id="7139">7139</a>
+<a href="#7140" id="7140">7140</a>
+<a href="#7141" id="7141">7141</a>
+<a href="#7142" id="7142">7142</a>
+<a href="#7143" id="7143">7143</a>
+<a href="#7144" id="7144">7144</a>
+<a href="#7145" id="7145">7145</a>
+<a href="#7146" id="7146">7146</a>
+<a href="#7147" id="7147">7147</a>
+<a href="#7148" id="7148">7148</a>
+<a href="#7149" id="7149">7149</a>
+<a href="#7150" id="7150">7150</a>
+<a href="#7151" id="7151">7151</a>
+<a href="#7152" id="7152">7152</a>
+<a href="#7153" id="7153">7153</a>
+<a href="#7154" id="7154">7154</a>
+<a href="#7155" id="7155">7155</a>
+<a href="#7156" id="7156">7156</a>
+<a href="#7157" id="7157">7157</a>
+<a href="#7158" id="7158">7158</a>
+<a href="#7159" id="7159">7159</a>
+<a href="#7160" id="7160">7160</a>
+<a href="#7161" id="7161">7161</a>
+<a href="#7162" id="7162">7162</a>
+<a href="#7163" id="7163">7163</a>
+<a href="#7164" id="7164">7164</a>
+<a href="#7165" id="7165">7165</a>
+<a href="#7166" id="7166">7166</a>
+<a href="#7167" id="7167">7167</a>
+<a href="#7168" id="7168">7168</a>
+<a href="#7169" id="7169">7169</a>
+<a href="#7170" id="7170">7170</a>
+<a href="#7171" id="7171">7171</a>
+<a href="#7172" id="7172">7172</a>
+<a href="#7173" id="7173">7173</a>
+<a href="#7174" id="7174">7174</a>
+<a href="#7175" id="7175">7175</a>
+<a href="#7176" id="7176">7176</a>
+<a href="#7177" id="7177">7177</a>
+<a href="#7178" id="7178">7178</a>
+<a href="#7179" id="7179">7179</a>
+<a href="#7180" id="7180">7180</a>
+<a href="#7181" id="7181">7181</a>
+<a href="#7182" id="7182">7182</a>
+<a href="#7183" id="7183">7183</a>
+<a href="#7184" id="7184">7184</a>
+<a href="#7185" id="7185">7185</a>
+<a href="#7186" id="7186">7186</a>
+<a href="#7187" id="7187">7187</a>
+<a href="#7188" id="7188">7188</a>
+<a href="#7189" id="7189">7189</a>
+<a href="#7190" id="7190">7190</a>
+<a href="#7191" id="7191">7191</a>
+<a href="#7192" id="7192">7192</a>
+<a href="#7193" id="7193">7193</a>
+<a href="#7194" id="7194">7194</a>
+<a href="#7195" id="7195">7195</a>
+<a href="#7196" id="7196">7196</a>
+<a href="#7197" id="7197">7197</a>
+<a href="#7198" id="7198">7198</a>
+<a href="#7199" id="7199">7199</a>
+<a href="#7200" id="7200">7200</a>
+<a href="#7201" id="7201">7201</a>
+<a href="#7202" id="7202">7202</a>
+<a href="#7203" id="7203">7203</a>
+<a href="#7204" id="7204">7204</a>
+<a href="#7205" id="7205">7205</a>
+<a href="#7206" id="7206">7206</a>
+<a href="#7207" id="7207">7207</a>
+<a href="#7208" id="7208">7208</a>
+<a href="#7209" id="7209">7209</a>
+<a href="#7210" id="7210">7210</a>
+<a href="#7211" id="7211">7211</a>
+<a href="#7212" id="7212">7212</a>
+<a href="#7213" id="7213">7213</a>
+<a href="#7214" id="7214">7214</a>
+<a href="#7215" id="7215">7215</a>
+<a href="#7216" id="7216">7216</a>
+<a href="#7217" id="7217">7217</a>
+<a href="#7218" id="7218">7218</a>
+<a href="#7219" id="7219">7219</a>
+<a href="#7220" id="7220">7220</a>
+<a href="#7221" id="7221">7221</a>
+<a href="#7222" id="7222">7222</a>
+<a href="#7223" id="7223">7223</a>
+<a href="#7224" id="7224">7224</a>
+<a href="#7225" id="7225">7225</a>
+<a href="#7226" id="7226">7226</a>
+<a href="#7227" id="7227">7227</a>
+<a href="#7228" id="7228">7228</a>
+<a href="#7229" id="7229">7229</a>
+<a href="#7230" id="7230">7230</a>
+<a href="#7231" id="7231">7231</a>
+<a href="#7232" id="7232">7232</a>
+<a href="#7233" id="7233">7233</a>
+<a href="#7234" id="7234">7234</a>
+<a href="#7235" id="7235">7235</a>
+<a href="#7236" id="7236">7236</a>
+<a href="#7237" id="7237">7237</a>
+<a href="#7238" id="7238">7238</a>
+<a href="#7239" id="7239">7239</a>
+<a href="#7240" id="7240">7240</a>
+<a href="#7241" id="7241">7241</a>
+<a href="#7242" id="7242">7242</a>
+<a href="#7243" id="7243">7243</a>
+<a href="#7244" id="7244">7244</a>
+<a href="#7245" id="7245">7245</a>
+<a href="#7246" id="7246">7246</a>
+<a href="#7247" id="7247">7247</a>
+<a href="#7248" id="7248">7248</a>
+<a href="#7249" id="7249">7249</a>
+<a href="#7250" id="7250">7250</a>
+<a href="#7251" id="7251">7251</a>
+<a href="#7252" id="7252">7252</a>
+<a href="#7253" id="7253">7253</a>
+<a href="#7254" id="7254">7254</a>
+<a href="#7255" id="7255">7255</a>
+<a href="#7256" id="7256">7256</a>
+<a href="#7257" id="7257">7257</a>
+<a href="#7258" id="7258">7258</a>
+<a href="#7259" id="7259">7259</a>
+<a href="#7260" id="7260">7260</a>
+<a href="#7261" id="7261">7261</a>
+<a href="#7262" id="7262">7262</a>
+<a href="#7263" id="7263">7263</a>
+<a href="#7264" id="7264">7264</a>
+<a href="#7265" id="7265">7265</a>
+<a href="#7266" id="7266">7266</a>
+<a href="#7267" id="7267">7267</a>
+<a href="#7268" id="7268">7268</a>
+<a href="#7269" id="7269">7269</a>
+<a href="#7270" id="7270">7270</a>
+<a href="#7271" id="7271">7271</a>
+<a href="#7272" id="7272">7272</a>
+<a href="#7273" id="7273">7273</a>
+<a href="#7274" id="7274">7274</a>
+<a href="#7275" id="7275">7275</a>
+<a href="#7276" id="7276">7276</a>
+<a href="#7277" id="7277">7277</a>
+<a href="#7278" id="7278">7278</a>
+<a href="#7279" id="7279">7279</a>
+<a href="#7280" id="7280">7280</a>
+<a href="#7281" id="7281">7281</a>
+<a href="#7282" id="7282">7282</a>
+<a href="#7283" id="7283">7283</a>
+<a href="#7284" id="7284">7284</a>
+<a href="#7285" id="7285">7285</a>
+<a href="#7286" id="7286">7286</a>
+<a href="#7287" id="7287">7287</a>
+<a href="#7288" id="7288">7288</a>
+<a href="#7289" id="7289">7289</a>
+<a href="#7290" id="7290">7290</a>
+<a href="#7291" id="7291">7291</a>
+<a href="#7292" id="7292">7292</a>
+<a href="#7293" id="7293">7293</a>
+<a href="#7294" id="7294">7294</a>
+<a href="#7295" id="7295">7295</a>
+<a href="#7296" id="7296">7296</a>
+<a href="#7297" id="7297">7297</a>
+<a href="#7298" id="7298">7298</a>
+<a href="#7299" id="7299">7299</a>
+<a href="#7300" id="7300">7300</a>
+<a href="#7301" id="7301">7301</a>
+<a href="#7302" id="7302">7302</a>
+<a href="#7303" id="7303">7303</a>
+<a href="#7304" id="7304">7304</a>
+<a href="#7305" id="7305">7305</a>
+<a href="#7306" id="7306">7306</a>
+<a href="#7307" id="7307">7307</a>
+<a href="#7308" id="7308">7308</a>
+<a href="#7309" id="7309">7309</a>
+<a href="#7310" id="7310">7310</a>
+<a href="#7311" id="7311">7311</a>
+<a href="#7312" id="7312">7312</a>
+<a href="#7313" id="7313">7313</a>
+<a href="#7314" id="7314">7314</a>
+<a href="#7315" id="7315">7315</a>
+<a href="#7316" id="7316">7316</a>
+<a href="#7317" id="7317">7317</a>
+<a href="#7318" id="7318">7318</a>
+<a href="#7319" id="7319">7319</a>
+<a href="#7320" id="7320">7320</a>
+<a href="#7321" id="7321">7321</a>
+<a href="#7322" id="7322">7322</a>
+<a href="#7323" id="7323">7323</a>
+<a href="#7324" id="7324">7324</a>
+<a href="#7325" id="7325">7325</a>
+<a href="#7326" id="7326">7326</a>
+<a href="#7327" id="7327">7327</a>
+<a href="#7328" id="7328">7328</a>
+<a href="#7329" id="7329">7329</a>
+<a href="#7330" id="7330">7330</a>
+<a href="#7331" id="7331">7331</a>
+<a href="#7332" id="7332">7332</a>
+<a href="#7333" id="7333">7333</a>
+<a href="#7334" id="7334">7334</a>
+<a href="#7335" id="7335">7335</a>
+<a href="#7336" id="7336">7336</a>
+<a href="#7337" id="7337">7337</a>
+<a href="#7338" id="7338">7338</a>
+<a href="#7339" id="7339">7339</a>
+<a href="#7340" id="7340">7340</a>
+<a href="#7341" id="7341">7341</a>
+<a href="#7342" id="7342">7342</a>
+<a href="#7343" id="7343">7343</a>
+<a href="#7344" id="7344">7344</a>
+<a href="#7345" id="7345">7345</a>
+<a href="#7346" id="7346">7346</a>
+<a href="#7347" id="7347">7347</a>
+<a href="#7348" id="7348">7348</a>
+<a href="#7349" id="7349">7349</a>
+<a href="#7350" id="7350">7350</a>
+<a href="#7351" id="7351">7351</a>
+<a href="#7352" id="7352">7352</a>
+<a href="#7353" id="7353">7353</a>
+<a href="#7354" id="7354">7354</a>
+<a href="#7355" id="7355">7355</a>
+<a href="#7356" id="7356">7356</a>
+<a href="#7357" id="7357">7357</a>
+<a href="#7358" id="7358">7358</a>
+<a href="#7359" id="7359">7359</a>
+<a href="#7360" id="7360">7360</a>
+<a href="#7361" id="7361">7361</a>
+<a href="#7362" id="7362">7362</a>
+<a href="#7363" id="7363">7363</a>
+<a href="#7364" id="7364">7364</a>
+<a href="#7365" id="7365">7365</a>
+<a href="#7366" id="7366">7366</a>
+<a href="#7367" id="7367">7367</a>
+<a href="#7368" id="7368">7368</a>
+<a href="#7369" id="7369">7369</a>
+<a href="#7370" id="7370">7370</a>
+<a href="#7371" id="7371">7371</a>
+<a href="#7372" id="7372">7372</a>
+<a href="#7373" id="7373">7373</a>
+<a href="#7374" id="7374">7374</a>
+<a href="#7375" id="7375">7375</a>
+<a href="#7376" id="7376">7376</a>
+<a href="#7377" id="7377">7377</a>
+<a href="#7378" id="7378">7378</a>
+<a href="#7379" id="7379">7379</a>
+<a href="#7380" id="7380">7380</a>
+<a href="#7381" id="7381">7381</a>
+<a href="#7382" id="7382">7382</a>
+<a href="#7383" id="7383">7383</a>
+<a href="#7384" id="7384">7384</a>
+<a href="#7385" id="7385">7385</a>
+<a href="#7386" id="7386">7386</a>
+<a href="#7387" id="7387">7387</a>
+<a href="#7388" id="7388">7388</a>
+<a href="#7389" id="7389">7389</a>
+<a href="#7390" id="7390">7390</a>
+<a href="#7391" id="7391">7391</a>
+<a href="#7392" id="7392">7392</a>
+<a href="#7393" id="7393">7393</a>
+<a href="#7394" id="7394">7394</a>
+<a href="#7395" id="7395">7395</a>
+<a href="#7396" id="7396">7396</a>
+<a href="#7397" id="7397">7397</a>
+<a href="#7398" id="7398">7398</a>
+<a href="#7399" id="7399">7399</a>
+<a href="#7400" id="7400">7400</a>
+<a href="#7401" id="7401">7401</a>
+<a href="#7402" id="7402">7402</a>
+<a href="#7403" id="7403">7403</a>
+<a href="#7404" id="7404">7404</a>
+<a href="#7405" id="7405">7405</a>
+<a href="#7406" id="7406">7406</a>
+<a href="#7407" id="7407">7407</a>
+<a href="#7408" id="7408">7408</a>
+<a href="#7409" id="7409">7409</a>
+<a href="#7410" id="7410">7410</a>
+<a href="#7411" id="7411">7411</a>
+<a href="#7412" id="7412">7412</a>
+<a href="#7413" id="7413">7413</a>
+<a href="#7414" id="7414">7414</a>
+<a href="#7415" id="7415">7415</a>
+<a href="#7416" id="7416">7416</a>
+<a href="#7417" id="7417">7417</a>
+<a href="#7418" id="7418">7418</a>
+<a href="#7419" id="7419">7419</a>
+<a href="#7420" id="7420">7420</a>
+<a href="#7421" id="7421">7421</a>
+<a href="#7422" id="7422">7422</a>
+<a href="#7423" id="7423">7423</a>
+<a href="#7424" id="7424">7424</a>
+<a href="#7425" id="7425">7425</a>
+<a href="#7426" id="7426">7426</a>
+<a href="#7427" id="7427">7427</a>
+<a href="#7428" id="7428">7428</a>
+<a href="#7429" id="7429">7429</a>
+<a href="#7430" id="7430">7430</a>
+<a href="#7431" id="7431">7431</a>
+<a href="#7432" id="7432">7432</a>
+<a href="#7433" id="7433">7433</a>
+<a href="#7434" id="7434">7434</a>
+<a href="#7435" id="7435">7435</a>
+<a href="#7436" id="7436">7436</a>
+<a href="#7437" id="7437">7437</a>
+<a href="#7438" id="7438">7438</a>
+<a href="#7439" id="7439">7439</a>
+<a href="#7440" id="7440">7440</a>
+<a href="#7441" id="7441">7441</a>
+<a href="#7442" id="7442">7442</a>
+<a href="#7443" id="7443">7443</a>
+<a href="#7444" id="7444">7444</a>
+<a href="#7445" id="7445">7445</a>
+<a href="#7446" id="7446">7446</a>
+<a href="#7447" id="7447">7447</a>
+<a href="#7448" id="7448">7448</a>
+<a href="#7449" id="7449">7449</a>
+<a href="#7450" id="7450">7450</a>
+<a href="#7451" id="7451">7451</a>
+<a href="#7452" id="7452">7452</a>
+<a href="#7453" id="7453">7453</a>
+<a href="#7454" id="7454">7454</a>
+<a href="#7455" id="7455">7455</a>
+<a href="#7456" id="7456">7456</a>
+<a href="#7457" id="7457">7457</a>
+<a href="#7458" id="7458">7458</a>
+<a href="#7459" id="7459">7459</a>
+<a href="#7460" id="7460">7460</a>
+<a href="#7461" id="7461">7461</a>
+<a href="#7462" id="7462">7462</a>
+<a href="#7463" id="7463">7463</a>
+<a href="#7464" id="7464">7464</a>
+<a href="#7465" id="7465">7465</a>
+<a href="#7466" id="7466">7466</a>
+<a href="#7467" id="7467">7467</a>
+<a href="#7468" id="7468">7468</a>
+<a href="#7469" id="7469">7469</a>
+<a href="#7470" id="7470">7470</a>
+<a href="#7471" id="7471">7471</a>
+<a href="#7472" id="7472">7472</a>
+<a href="#7473" id="7473">7473</a>
+<a href="#7474" id="7474">7474</a>
+<a href="#7475" id="7475">7475</a>
+<a href="#7476" id="7476">7476</a>
+<a href="#7477" id="7477">7477</a>
+<a href="#7478" id="7478">7478</a>
+<a href="#7479" id="7479">7479</a>
+<a href="#7480" id="7480">7480</a>
+<a href="#7481" id="7481">7481</a>
+<a href="#7482" id="7482">7482</a>
+<a href="#7483" id="7483">7483</a>
+<a href="#7484" id="7484">7484</a>
+<a href="#7485" id="7485">7485</a>
+<a href="#7486" id="7486">7486</a>
+<a href="#7487" id="7487">7487</a>
+<a href="#7488" id="7488">7488</a>
+<a href="#7489" id="7489">7489</a>
+<a href="#7490" id="7490">7490</a>
+<a href="#7491" id="7491">7491</a>
+<a href="#7492" id="7492">7492</a>
+<a href="#7493" id="7493">7493</a>
+<a href="#7494" id="7494">7494</a>
+<a href="#7495" id="7495">7495</a>
+<a href="#7496" id="7496">7496</a>
+<a href="#7497" id="7497">7497</a>
+<a href="#7498" id="7498">7498</a>
+<a href="#7499" id="7499">7499</a>
+<a href="#7500" id="7500">7500</a>
+<a href="#7501" id="7501">7501</a>
+<a href="#7502" id="7502">7502</a>
+<a href="#7503" id="7503">7503</a>
+<a href="#7504" id="7504">7504</a>
+<a href="#7505" id="7505">7505</a>
+<a href="#7506" id="7506">7506</a>
+<a href="#7507" id="7507">7507</a>
+<a href="#7508" id="7508">7508</a>
+<a href="#7509" id="7509">7509</a>
+<a href="#7510" id="7510">7510</a>
+<a href="#7511" id="7511">7511</a>
+<a href="#7512" id="7512">7512</a>
+<a href="#7513" id="7513">7513</a>
+<a href="#7514" id="7514">7514</a>
+<a href="#7515" id="7515">7515</a>
+<a href="#7516" id="7516">7516</a>
+<a href="#7517" id="7517">7517</a>
+<a href="#7518" id="7518">7518</a>
+<a href="#7519" id="7519">7519</a>
+<a href="#7520" id="7520">7520</a>
+<a href="#7521" id="7521">7521</a>
+<a href="#7522" id="7522">7522</a>
+<a href="#7523" id="7523">7523</a>
+<a href="#7524" id="7524">7524</a>
+<a href="#7525" id="7525">7525</a>
+<a href="#7526" id="7526">7526</a>
+<a href="#7527" id="7527">7527</a>
+<a href="#7528" id="7528">7528</a>
+<a href="#7529" id="7529">7529</a>
+<a href="#7530" id="7530">7530</a>
+<a href="#7531" id="7531">7531</a>
+<a href="#7532" id="7532">7532</a>
+<a href="#7533" id="7533">7533</a>
+<a href="#7534" id="7534">7534</a>
+<a href="#7535" id="7535">7535</a>
+<a href="#7536" id="7536">7536</a>
+<a href="#7537" id="7537">7537</a>
+<a href="#7538" id="7538">7538</a>
+<a href="#7539" id="7539">7539</a>
+<a href="#7540" id="7540">7540</a>
+<a href="#7541" id="7541">7541</a>
+<a href="#7542" id="7542">7542</a>
+<a href="#7543" id="7543">7543</a>
+<a href="#7544" id="7544">7544</a>
+<a href="#7545" id="7545">7545</a>
+<a href="#7546" id="7546">7546</a>
+<a href="#7547" id="7547">7547</a>
+<a href="#7548" id="7548">7548</a>
+<a href="#7549" id="7549">7549</a>
+<a href="#7550" id="7550">7550</a>
+<a href="#7551" id="7551">7551</a>
+<a href="#7552" id="7552">7552</a>
+<a href="#7553" id="7553">7553</a>
+<a href="#7554" id="7554">7554</a>
+<a href="#7555" id="7555">7555</a>
+<a href="#7556" id="7556">7556</a>
+<a href="#7557" id="7557">7557</a>
+<a href="#7558" id="7558">7558</a>
+<a href="#7559" id="7559">7559</a>
+<a href="#7560" id="7560">7560</a>
+<a href="#7561" id="7561">7561</a>
+<a href="#7562" id="7562">7562</a>
+<a href="#7563" id="7563">7563</a>
+<a href="#7564" id="7564">7564</a>
+<a href="#7565" id="7565">7565</a>
+<a href="#7566" id="7566">7566</a>
+<a href="#7567" id="7567">7567</a>
+<a href="#7568" id="7568">7568</a>
+<a href="#7569" id="7569">7569</a>
+<a href="#7570" id="7570">7570</a>
+<a href="#7571" id="7571">7571</a>
+<a href="#7572" id="7572">7572</a>
+<a href="#7573" id="7573">7573</a>
+<a href="#7574" id="7574">7574</a>
+<a href="#7575" id="7575">7575</a>
+<a href="#7576" id="7576">7576</a>
+<a href="#7577" id="7577">7577</a>
+<a href="#7578" id="7578">7578</a>
+<a href="#7579" id="7579">7579</a>
+<a href="#7580" id="7580">7580</a>
+<a href="#7581" id="7581">7581</a>
+<a href="#7582" id="7582">7582</a>
+<a href="#7583" id="7583">7583</a>
+<a href="#7584" id="7584">7584</a>
+<a href="#7585" id="7585">7585</a>
+<a href="#7586" id="7586">7586</a>
+<a href="#7587" id="7587">7587</a>
+<a href="#7588" id="7588">7588</a>
+<a href="#7589" id="7589">7589</a>
+<a href="#7590" id="7590">7590</a>
+<a href="#7591" id="7591">7591</a>
+<a href="#7592" id="7592">7592</a>
+<a href="#7593" id="7593">7593</a>
+<a href="#7594" id="7594">7594</a>
+<a href="#7595" id="7595">7595</a>
+<a href="#7596" id="7596">7596</a>
+<a href="#7597" id="7597">7597</a>
+<a href="#7598" id="7598">7598</a>
+<a href="#7599" id="7599">7599</a>
+<a href="#7600" id="7600">7600</a>
+<a href="#7601" id="7601">7601</a>
+<a href="#7602" id="7602">7602</a>
+<a href="#7603" id="7603">7603</a>
+<a href="#7604" id="7604">7604</a>
+<a href="#7605" id="7605">7605</a>
+<a href="#7606" id="7606">7606</a>
+<a href="#7607" id="7607">7607</a>
+<a href="#7608" id="7608">7608</a>
+<a href="#7609" id="7609">7609</a>
+<a href="#7610" id="7610">7610</a>
+<a href="#7611" id="7611">7611</a>
+<a href="#7612" id="7612">7612</a>
+<a href="#7613" id="7613">7613</a>
+<a href="#7614" id="7614">7614</a>
+<a href="#7615" id="7615">7615</a>
+<a href="#7616" id="7616">7616</a>
+<a href="#7617" id="7617">7617</a>
+<a href="#7618" id="7618">7618</a>
+<a href="#7619" id="7619">7619</a>
+<a href="#7620" id="7620">7620</a>
+<a href="#7621" id="7621">7621</a>
+<a href="#7622" id="7622">7622</a>
+<a href="#7623" id="7623">7623</a>
+<a href="#7624" id="7624">7624</a>
+<a href="#7625" id="7625">7625</a>
+<a href="#7626" id="7626">7626</a>
+<a href="#7627" id="7627">7627</a>
+<a href="#7628" id="7628">7628</a>
+<a href="#7629" id="7629">7629</a>
+<a href="#7630" id="7630">7630</a>
+<a href="#7631" id="7631">7631</a>
+<a href="#7632" id="7632">7632</a>
+<a href="#7633" id="7633">7633</a>
+<a href="#7634" id="7634">7634</a>
+<a href="#7635" id="7635">7635</a>
+<a href="#7636" id="7636">7636</a>
+<a href="#7637" id="7637">7637</a>
+<a href="#7638" id="7638">7638</a>
+<a href="#7639" id="7639">7639</a>
+<a href="#7640" id="7640">7640</a>
+<a href="#7641" id="7641">7641</a>
+<a href="#7642" id="7642">7642</a>
+<a href="#7643" id="7643">7643</a>
+<a href="#7644" id="7644">7644</a>
+<a href="#7645" id="7645">7645</a>
+<a href="#7646" id="7646">7646</a>
+<a href="#7647" id="7647">7647</a>
+<a href="#7648" id="7648">7648</a>
+<a href="#7649" id="7649">7649</a>
+<a href="#7650" id="7650">7650</a>
+<a href="#7651" id="7651">7651</a>
+<a href="#7652" id="7652">7652</a>
+<a href="#7653" id="7653">7653</a>
+<a href="#7654" id="7654">7654</a>
+<a href="#7655" id="7655">7655</a>
+<a href="#7656" id="7656">7656</a>
+<a href="#7657" id="7657">7657</a>
+<a href="#7658" id="7658">7658</a>
+<a href="#7659" id="7659">7659</a>
+<a href="#7660" id="7660">7660</a>
+<a href="#7661" id="7661">7661</a>
+<a href="#7662" id="7662">7662</a>
+<a href="#7663" id="7663">7663</a>
+<a href="#7664" id="7664">7664</a>
+<a href="#7665" id="7665">7665</a>
+<a href="#7666" id="7666">7666</a>
+<a href="#7667" id="7667">7667</a>
+<a href="#7668" id="7668">7668</a>
+<a href="#7669" id="7669">7669</a>
+<a href="#7670" id="7670">7670</a>
+<a href="#7671" id="7671">7671</a>
+<a href="#7672" id="7672">7672</a>
+<a href="#7673" id="7673">7673</a>
+<a href="#7674" id="7674">7674</a>
+<a href="#7675" id="7675">7675</a>
+<a href="#7676" id="7676">7676</a>
+<a href="#7677" id="7677">7677</a>
+<a href="#7678" id="7678">7678</a>
+<a href="#7679" id="7679">7679</a>
+<a href="#7680" id="7680">7680</a>
+<a href="#7681" id="7681">7681</a>
+<a href="#7682" id="7682">7682</a>
+<a href="#7683" id="7683">7683</a>
+<a href="#7684" id="7684">7684</a>
+<a href="#7685" id="7685">7685</a>
+<a href="#7686" id="7686">7686</a>
+<a href="#7687" id="7687">7687</a>
+<a href="#7688" id="7688">7688</a>
+<a href="#7689" id="7689">7689</a>
+<a href="#7690" id="7690">7690</a>
+<a href="#7691" id="7691">7691</a>
+<a href="#7692" id="7692">7692</a>
+<a href="#7693" id="7693">7693</a>
+<a href="#7694" id="7694">7694</a>
+<a href="#7695" id="7695">7695</a>
+<a href="#7696" id="7696">7696</a>
+<a href="#7697" id="7697">7697</a>
+<a href="#7698" id="7698">7698</a>
+<a href="#7699" id="7699">7699</a>
+<a href="#7700" id="7700">7700</a>
+<a href="#7701" id="7701">7701</a>
+<a href="#7702" id="7702">7702</a>
+<a href="#7703" id="7703">7703</a>
+<a href="#7704" id="7704">7704</a>
+<a href="#7705" id="7705">7705</a>
+<a href="#7706" id="7706">7706</a>
+<a href="#7707" id="7707">7707</a>
+<a href="#7708" id="7708">7708</a>
+<a href="#7709" id="7709">7709</a>
+<a href="#7710" id="7710">7710</a>
+<a href="#7711" id="7711">7711</a>
+<a href="#7712" id="7712">7712</a>
+<a href="#7713" id="7713">7713</a>
+<a href="#7714" id="7714">7714</a>
+<a href="#7715" id="7715">7715</a>
+<a href="#7716" id="7716">7716</a>
+<a href="#7717" id="7717">7717</a>
+<a href="#7718" id="7718">7718</a>
+<a href="#7719" id="7719">7719</a>
+<a href="#7720" id="7720">7720</a>
+<a href="#7721" id="7721">7721</a>
+<a href="#7722" id="7722">7722</a>
+<a href="#7723" id="7723">7723</a>
+<a href="#7724" id="7724">7724</a>
+<a href="#7725" id="7725">7725</a>
+<a href="#7726" id="7726">7726</a>
+<a href="#7727" id="7727">7727</a>
+<a href="#7728" id="7728">7728</a>
+<a href="#7729" id="7729">7729</a>
+<a href="#7730" id="7730">7730</a>
+<a href="#7731" id="7731">7731</a>
+<a href="#7732" id="7732">7732</a>
+<a href="#7733" id="7733">7733</a>
+<a href="#7734" id="7734">7734</a>
+<a href="#7735" id="7735">7735</a>
+<a href="#7736" id="7736">7736</a>
+<a href="#7737" id="7737">7737</a>
+<a href="#7738" id="7738">7738</a>
+<a href="#7739" id="7739">7739</a>
+<a href="#7740" id="7740">7740</a>
+<a href="#7741" id="7741">7741</a>
+<a href="#7742" id="7742">7742</a>
+<a href="#7743" id="7743">7743</a>
+<a href="#7744" id="7744">7744</a>
+<a href="#7745" id="7745">7745</a>
+<a href="#7746" id="7746">7746</a>
+<a href="#7747" id="7747">7747</a>
+<a href="#7748" id="7748">7748</a>
+<a href="#7749" id="7749">7749</a>
+<a href="#7750" id="7750">7750</a>
+<a href="#7751" id="7751">7751</a>
+<a href="#7752" id="7752">7752</a>
+<a href="#7753" id="7753">7753</a>
+<a href="#7754" id="7754">7754</a>
+<a href="#7755" id="7755">7755</a>
+<a href="#7756" id="7756">7756</a>
+<a href="#7757" id="7757">7757</a>
+<a href="#7758" id="7758">7758</a>
+<a href="#7759" id="7759">7759</a>
+<a href="#7760" id="7760">7760</a>
+<a href="#7761" id="7761">7761</a>
+<a href="#7762" id="7762">7762</a>
+<a href="#7763" id="7763">7763</a>
+<a href="#7764" id="7764">7764</a>
+<a href="#7765" id="7765">7765</a>
+<a href="#7766" id="7766">7766</a>
+<a href="#7767" id="7767">7767</a>
+<a href="#7768" id="7768">7768</a>
+<a href="#7769" id="7769">7769</a>
+<a href="#7770" id="7770">7770</a>
+<a href="#7771" id="7771">7771</a>
+<a href="#7772" id="7772">7772</a>
+<a href="#7773" id="7773">7773</a>
+<a href="#7774" id="7774">7774</a>
+<a href="#7775" id="7775">7775</a>
+<a href="#7776" id="7776">7776</a>
+<a href="#7777" id="7777">7777</a>
+<a href="#7778" id="7778">7778</a>
+<a href="#7779" id="7779">7779</a>
+<a href="#7780" id="7780">7780</a>
+<a href="#7781" id="7781">7781</a>
+<a href="#7782" id="7782">7782</a>
+<a href="#7783" id="7783">7783</a>
+<a href="#7784" id="7784">7784</a>
+<a href="#7785" id="7785">7785</a>
+<a href="#7786" id="7786">7786</a>
+<a href="#7787" id="7787">7787</a>
+<a href="#7788" id="7788">7788</a>
+<a href="#7789" id="7789">7789</a>
+<a href="#7790" id="7790">7790</a>
+<a href="#7791" id="7791">7791</a>
+<a href="#7792" id="7792">7792</a>
+<a href="#7793" id="7793">7793</a>
+<a href="#7794" id="7794">7794</a>
+<a href="#7795" id="7795">7795</a>
+<a href="#7796" id="7796">7796</a>
+<a href="#7797" id="7797">7797</a>
+<a href="#7798" id="7798">7798</a>
+<a href="#7799" id="7799">7799</a>
+<a href="#7800" id="7800">7800</a>
+<a href="#7801" id="7801">7801</a>
+<a href="#7802" id="7802">7802</a>
+<a href="#7803" id="7803">7803</a>
+<a href="#7804" id="7804">7804</a>
+<a href="#7805" id="7805">7805</a>
+<a href="#7806" id="7806">7806</a>
+<a href="#7807" id="7807">7807</a>
+<a href="#7808" id="7808">7808</a>
+<a href="#7809" id="7809">7809</a>
+<a href="#7810" id="7810">7810</a>
+<a href="#7811" id="7811">7811</a>
+<a href="#7812" id="7812">7812</a>
+<a href="#7813" id="7813">7813</a>
+<a href="#7814" id="7814">7814</a>
+<a href="#7815" id="7815">7815</a>
+<a href="#7816" id="7816">7816</a>
+<a href="#7817" id="7817">7817</a>
+<a href="#7818" id="7818">7818</a>
+<a href="#7819" id="7819">7819</a>
+<a href="#7820" id="7820">7820</a>
+<a href="#7821" id="7821">7821</a>
+<a href="#7822" id="7822">7822</a>
+<a href="#7823" id="7823">7823</a>
+<a href="#7824" id="7824">7824</a>
+<a href="#7825" id="7825">7825</a>
+<a href="#7826" id="7826">7826</a>
+<a href="#7827" id="7827">7827</a>
+<a href="#7828" id="7828">7828</a>
+<a href="#7829" id="7829">7829</a>
+<a href="#7830" id="7830">7830</a>
+<a href="#7831" id="7831">7831</a>
+<a href="#7832" id="7832">7832</a>
+<a href="#7833" id="7833">7833</a>
+<a href="#7834" id="7834">7834</a>
+<a href="#7835" id="7835">7835</a>
+<a href="#7836" id="7836">7836</a>
+<a href="#7837" id="7837">7837</a>
+<a href="#7838" id="7838">7838</a>
+<a href="#7839" id="7839">7839</a>
+<a href="#7840" id="7840">7840</a>
+<a href="#7841" id="7841">7841</a>
+<a href="#7842" id="7842">7842</a>
+<a href="#7843" id="7843">7843</a>
+<a href="#7844" id="7844">7844</a>
+<a href="#7845" id="7845">7845</a>
+<a href="#7846" id="7846">7846</a>
+<a href="#7847" id="7847">7847</a>
+<a href="#7848" id="7848">7848</a>
+<a href="#7849" id="7849">7849</a>
+<a href="#7850" id="7850">7850</a>
+<a href="#7851" id="7851">7851</a>
+<a href="#7852" id="7852">7852</a>
+<a href="#7853" id="7853">7853</a>
+<a href="#7854" id="7854">7854</a>
+<a href="#7855" id="7855">7855</a>
+<a href="#7856" id="7856">7856</a>
+<a href="#7857" id="7857">7857</a>
+<a href="#7858" id="7858">7858</a>
+<a href="#7859" id="7859">7859</a>
+<a href="#7860" id="7860">7860</a>
+<a href="#7861" id="7861">7861</a>
+<a href="#7862" id="7862">7862</a>
+<a href="#7863" id="7863">7863</a>
+<a href="#7864" id="7864">7864</a>
+<a href="#7865" id="7865">7865</a>
+<a href="#7866" id="7866">7866</a>
+<a href="#7867" id="7867">7867</a>
+<a href="#7868" id="7868">7868</a>
+<a href="#7869" id="7869">7869</a>
+<a href="#7870" id="7870">7870</a>
+<a href="#7871" id="7871">7871</a>
+<a href="#7872" id="7872">7872</a>
+<a href="#7873" id="7873">7873</a>
+<a href="#7874" id="7874">7874</a>
+<a href="#7875" id="7875">7875</a>
+<a href="#7876" id="7876">7876</a>
+<a href="#7877" id="7877">7877</a>
+<a href="#7878" id="7878">7878</a>
+<a href="#7879" id="7879">7879</a>
+<a href="#7880" id="7880">7880</a>
+<a href="#7881" id="7881">7881</a>
+<a href="#7882" id="7882">7882</a>
+<a href="#7883" id="7883">7883</a>
+<a href="#7884" id="7884">7884</a>
+<a href="#7885" id="7885">7885</a>
+<a href="#7886" id="7886">7886</a>
+<a href="#7887" id="7887">7887</a>
+<a href="#7888" id="7888">7888</a>
+<a href="#7889" id="7889">7889</a>
+<a href="#7890" id="7890">7890</a>
+<a href="#7891" id="7891">7891</a>
+<a href="#7892" id="7892">7892</a>
+<a href="#7893" id="7893">7893</a>
+<a href="#7894" id="7894">7894</a>
+<a href="#7895" id="7895">7895</a>
+<a href="#7896" id="7896">7896</a>
+<a href="#7897" id="7897">7897</a>
+<a href="#7898" id="7898">7898</a>
+<a href="#7899" id="7899">7899</a>
+<a href="#7900" id="7900">7900</a>
+<a href="#7901" id="7901">7901</a>
+<a href="#7902" id="7902">7902</a>
+<a href="#7903" id="7903">7903</a>
+<a href="#7904" id="7904">7904</a>
+<a href="#7905" id="7905">7905</a>
+<a href="#7906" id="7906">7906</a>
+<a href="#7907" id="7907">7907</a>
+<a href="#7908" id="7908">7908</a>
+<a href="#7909" id="7909">7909</a>
+<a href="#7910" id="7910">7910</a>
+<a href="#7911" id="7911">7911</a>
+<a href="#7912" id="7912">7912</a>
+<a href="#7913" id="7913">7913</a>
+<a href="#7914" id="7914">7914</a>
+<a href="#7915" id="7915">7915</a>
+<a href="#7916" id="7916">7916</a>
+<a href="#7917" id="7917">7917</a>
+<a href="#7918" id="7918">7918</a>
+<a href="#7919" id="7919">7919</a>
+<a href="#7920" id="7920">7920</a>
+<a href="#7921" id="7921">7921</a>
+<a href="#7922" id="7922">7922</a>
+<a href="#7923" id="7923">7923</a>
+<a href="#7924" id="7924">7924</a>
+<a href="#7925" id="7925">7925</a>
+<a href="#7926" id="7926">7926</a>
+<a href="#7927" id="7927">7927</a>
+<a href="#7928" id="7928">7928</a>
+<a href="#7929" id="7929">7929</a>
+<a href="#7930" id="7930">7930</a>
+<a href="#7931" id="7931">7931</a>
+<a href="#7932" id="7932">7932</a>
+<a href="#7933" id="7933">7933</a>
+<a href="#7934" id="7934">7934</a>
+<a href="#7935" id="7935">7935</a>
+<a href="#7936" id="7936">7936</a>
+<a href="#7937" id="7937">7937</a>
+<a href="#7938" id="7938">7938</a>
+<a href="#7939" id="7939">7939</a>
+<a href="#7940" id="7940">7940</a>
+<a href="#7941" id="7941">7941</a>
+<a href="#7942" id="7942">7942</a>
+<a href="#7943" id="7943">7943</a>
+<a href="#7944" id="7944">7944</a>
+<a href="#7945" id="7945">7945</a>
+<a href="#7946" id="7946">7946</a>
+<a href="#7947" id="7947">7947</a>
+<a href="#7948" id="7948">7948</a>
+<a href="#7949" id="7949">7949</a>
+<a href="#7950" id="7950">7950</a>
+<a href="#7951" id="7951">7951</a>
+<a href="#7952" id="7952">7952</a>
+<a href="#7953" id="7953">7953</a>
+<a href="#7954" id="7954">7954</a>
+<a href="#7955" id="7955">7955</a>
+<a href="#7956" id="7956">7956</a>
+<a href="#7957" id="7957">7957</a>
+<a href="#7958" id="7958">7958</a>
+<a href="#7959" id="7959">7959</a>
+<a href="#7960" id="7960">7960</a>
+<a href="#7961" id="7961">7961</a>
+<a href="#7962" id="7962">7962</a>
+<a href="#7963" id="7963">7963</a>
+<a href="#7964" id="7964">7964</a>
+<a href="#7965" id="7965">7965</a>
+<a href="#7966" id="7966">7966</a>
+<a href="#7967" id="7967">7967</a>
+<a href="#7968" id="7968">7968</a>
+<a href="#7969" id="7969">7969</a>
+<a href="#7970" id="7970">7970</a>
+<a href="#7971" id="7971">7971</a>
+<a href="#7972" id="7972">7972</a>
+<a href="#7973" id="7973">7973</a>
+<a href="#7974" id="7974">7974</a>
+<a href="#7975" id="7975">7975</a>
+<a href="#7976" id="7976">7976</a>
+<a href="#7977" id="7977">7977</a>
+<a href="#7978" id="7978">7978</a>
+<a href="#7979" id="7979">7979</a>
+<a href="#7980" id="7980">7980</a>
+<a href="#7981" id="7981">7981</a>
+<a href="#7982" id="7982">7982</a>
+<a href="#7983" id="7983">7983</a>
+<a href="#7984" id="7984">7984</a>
+<a href="#7985" id="7985">7985</a>
+<a href="#7986" id="7986">7986</a>
+<a href="#7987" id="7987">7987</a>
+<a href="#7988" id="7988">7988</a>
+<a href="#7989" id="7989">7989</a>
+<a href="#7990" id="7990">7990</a>
+<a href="#7991" id="7991">7991</a>
+<a href="#7992" id="7992">7992</a>
+<a href="#7993" id="7993">7993</a>
+<a href="#7994" id="7994">7994</a>
+<a href="#7995" id="7995">7995</a>
+<a href="#7996" id="7996">7996</a>
+<a href="#7997" id="7997">7997</a>
+<a href="#7998" id="7998">7998</a>
+<a href="#7999" id="7999">7999</a>
+<a href="#8000" id="8000">8000</a>
+<a href="#8001" id="8001">8001</a>
+<a href="#8002" id="8002">8002</a>
+<a href="#8003" id="8003">8003</a>
+<a href="#8004" id="8004">8004</a>
+<a href="#8005" id="8005">8005</a>
+<a href="#8006" id="8006">8006</a>
+<a href="#8007" id="8007">8007</a>
+<a href="#8008" id="8008">8008</a>
+<a href="#8009" id="8009">8009</a>
+<a href="#8010" id="8010">8010</a>
+<a href="#8011" id="8011">8011</a>
+<a href="#8012" id="8012">8012</a>
+<a href="#8013" id="8013">8013</a>
+<a href="#8014" id="8014">8014</a>
+<a href="#8015" id="8015">8015</a>
+<a href="#8016" id="8016">8016</a>
+<a href="#8017" id="8017">8017</a>
+<a href="#8018" id="8018">8018</a>
+<a href="#8019" id="8019">8019</a>
+<a href="#8020" id="8020">8020</a>
+<a href="#8021" id="8021">8021</a>
+<a href="#8022" id="8022">8022</a>
+<a href="#8023" id="8023">8023</a>
+<a href="#8024" id="8024">8024</a>
+<a href="#8025" id="8025">8025</a>
+<a href="#8026" id="8026">8026</a>
+<a href="#8027" id="8027">8027</a>
+<a href="#8028" id="8028">8028</a>
+<a href="#8029" id="8029">8029</a>
+<a href="#8030" id="8030">8030</a>
+<a href="#8031" id="8031">8031</a>
+<a href="#8032" id="8032">8032</a>
+<a href="#8033" id="8033">8033</a>
+<a href="#8034" id="8034">8034</a>
+<a href="#8035" id="8035">8035</a>
+<a href="#8036" id="8036">8036</a>
+<a href="#8037" id="8037">8037</a>
+<a href="#8038" id="8038">8038</a>
+<a href="#8039" id="8039">8039</a>
+<a href="#8040" id="8040">8040</a>
+<a href="#8041" id="8041">8041</a>
+<a href="#8042" id="8042">8042</a>
+<a href="#8043" id="8043">8043</a>
+<a href="#8044" id="8044">8044</a>
+<a href="#8045" id="8045">8045</a>
+<a href="#8046" id="8046">8046</a>
+<a href="#8047" id="8047">8047</a>
+<a href="#8048" id="8048">8048</a>
+<a href="#8049" id="8049">8049</a>
+<a href="#8050" id="8050">8050</a>
+<a href="#8051" id="8051">8051</a>
+<a href="#8052" id="8052">8052</a>
+<a href="#8053" id="8053">8053</a>
+<a href="#8054" id="8054">8054</a>
+<a href="#8055" id="8055">8055</a>
+<a href="#8056" id="8056">8056</a>
+<a href="#8057" id="8057">8057</a>
+<a href="#8058" id="8058">8058</a>
+<a href="#8059" id="8059">8059</a>
+<a href="#8060" id="8060">8060</a>
+<a href="#8061" id="8061">8061</a>
+<a href="#8062" id="8062">8062</a>
+<a href="#8063" id="8063">8063</a>
+<a href="#8064" id="8064">8064</a>
+<a href="#8065" id="8065">8065</a>
+<a href="#8066" id="8066">8066</a>
+<a href="#8067" id="8067">8067</a>
+<a href="#8068" id="8068">8068</a>
+<a href="#8069" id="8069">8069</a>
+<a href="#8070" id="8070">8070</a>
+<a href="#8071" id="8071">8071</a>
+<a href="#8072" id="8072">8072</a>
+<a href="#8073" id="8073">8073</a>
+<a href="#8074" id="8074">8074</a>
+<a href="#8075" id="8075">8075</a>
+<a href="#8076" id="8076">8076</a>
+<a href="#8077" id="8077">8077</a>
+<a href="#8078" id="8078">8078</a>
+<a href="#8079" id="8079">8079</a>
+<a href="#8080" id="8080">8080</a>
+<a href="#8081" id="8081">8081</a>
+<a href="#8082" id="8082">8082</a>
+<a href="#8083" id="8083">8083</a>
+<a href="#8084" id="8084">8084</a>
+<a href="#8085" id="8085">8085</a>
+<a href="#8086" id="8086">8086</a>
+<a href="#8087" id="8087">8087</a>
+<a href="#8088" id="8088">8088</a>
+<a href="#8089" id="8089">8089</a>
+<a href="#8090" id="8090">8090</a>
+<a href="#8091" id="8091">8091</a>
+<a href="#8092" id="8092">8092</a>
+<a href="#8093" id="8093">8093</a>
+<a href="#8094" id="8094">8094</a>
+<a href="#8095" id="8095">8095</a>
+<a href="#8096" id="8096">8096</a>
+<a href="#8097" id="8097">8097</a>
+<a href="#8098" id="8098">8098</a>
+<a href="#8099" id="8099">8099</a>
+<a href="#8100" id="8100">8100</a>
+<a href="#8101" id="8101">8101</a>
+<a href="#8102" id="8102">8102</a>
+<a href="#8103" id="8103">8103</a>
+<a href="#8104" id="8104">8104</a>
+<a href="#8105" id="8105">8105</a>
+<a href="#8106" id="8106">8106</a>
+<a href="#8107" id="8107">8107</a>
+<a href="#8108" id="8108">8108</a>
+<a href="#8109" id="8109">8109</a>
+<a href="#8110" id="8110">8110</a>
+<a href="#8111" id="8111">8111</a>
+<a href="#8112" id="8112">8112</a>
+<a href="#8113" id="8113">8113</a>
+<a href="#8114" id="8114">8114</a>
+<a href="#8115" id="8115">8115</a>
+<a href="#8116" id="8116">8116</a>
+<a href="#8117" id="8117">8117</a>
+<a href="#8118" id="8118">8118</a>
+<a href="#8119" id="8119">8119</a>
+<a href="#8120" id="8120">8120</a>
+<a href="#8121" id="8121">8121</a>
+<a href="#8122" id="8122">8122</a>
+<a href="#8123" id="8123">8123</a>
+<a href="#8124" id="8124">8124</a>
+<a href="#8125" id="8125">8125</a>
+<a href="#8126" id="8126">8126</a>
+<a href="#8127" id="8127">8127</a>
+<a href="#8128" id="8128">8128</a>
+<a href="#8129" id="8129">8129</a>
+<a href="#8130" id="8130">8130</a>
+<a href="#8131" id="8131">8131</a>
+<a href="#8132" id="8132">8132</a>
+<a href="#8133" id="8133">8133</a>
+<a href="#8134" id="8134">8134</a>
+<a href="#8135" id="8135">8135</a>
+<a href="#8136" id="8136">8136</a>
+<a href="#8137" id="8137">8137</a>
+<a href="#8138" id="8138">8138</a>
+<a href="#8139" id="8139">8139</a>
+<a href="#8140" id="8140">8140</a>
+<a href="#8141" id="8141">8141</a>
+<a href="#8142" id="8142">8142</a>
+<a href="#8143" id="8143">8143</a>
+<a href="#8144" id="8144">8144</a>
+<a href="#8145" id="8145">8145</a>
+<a href="#8146" id="8146">8146</a>
+<a href="#8147" id="8147">8147</a>
+<a href="#8148" id="8148">8148</a>
+<a href="#8149" id="8149">8149</a>
+<a href="#8150" id="8150">8150</a>
+<a href="#8151" id="8151">8151</a>
+<a href="#8152" id="8152">8152</a>
+<a href="#8153" id="8153">8153</a>
+<a href="#8154" id="8154">8154</a>
+<a href="#8155" id="8155">8155</a>
+<a href="#8156" id="8156">8156</a>
+<a href="#8157" id="8157">8157</a>
+<a href="#8158" id="8158">8158</a>
+<a href="#8159" id="8159">8159</a>
+<a href="#8160" id="8160">8160</a>
+<a href="#8161" id="8161">8161</a>
+<a href="#8162" id="8162">8162</a>
+<a href="#8163" id="8163">8163</a>
+<a href="#8164" id="8164">8164</a>
+<a href="#8165" id="8165">8165</a>
+<a href="#8166" id="8166">8166</a>
+<a href="#8167" id="8167">8167</a>
+<a href="#8168" id="8168">8168</a>
+<a href="#8169" id="8169">8169</a>
+<a href="#8170" id="8170">8170</a>
+<a href="#8171" id="8171">8171</a>
+<a href="#8172" id="8172">8172</a>
+<a href="#8173" id="8173">8173</a>
+<a href="#8174" id="8174">8174</a>
+<a href="#8175" id="8175">8175</a>
+<a href="#8176" id="8176">8176</a>
+<a href="#8177" id="8177">8177</a>
+<a href="#8178" id="8178">8178</a>
+<a href="#8179" id="8179">8179</a>
+<a href="#8180" id="8180">8180</a>
+<a href="#8181" id="8181">8181</a>
+<a href="#8182" id="8182">8182</a>
+<a href="#8183" id="8183">8183</a>
+<a href="#8184" id="8184">8184</a>
+<a href="#8185" id="8185">8185</a>
+<a href="#8186" id="8186">8186</a>
+<a href="#8187" id="8187">8187</a>
+<a href="#8188" id="8188">8188</a>
+<a href="#8189" id="8189">8189</a>
+<a href="#8190" id="8190">8190</a>
+<a href="#8191" id="8191">8191</a>
+<a href="#8192" id="8192">8192</a>
+<a href="#8193" id="8193">8193</a>
+<a href="#8194" id="8194">8194</a>
+<a href="#8195" id="8195">8195</a>
+<a href="#8196" id="8196">8196</a>
+<a href="#8197" id="8197">8197</a>
+<a href="#8198" id="8198">8198</a>
+<a href="#8199" id="8199">8199</a>
+<a href="#8200" id="8200">8200</a>
+<a href="#8201" id="8201">8201</a>
+<a href="#8202" id="8202">8202</a>
+<a href="#8203" id="8203">8203</a>
+<a href="#8204" id="8204">8204</a>
+<a href="#8205" id="8205">8205</a>
+<a href="#8206" id="8206">8206</a>
+<a href="#8207" id="8207">8207</a>
+<a href="#8208" id="8208">8208</a>
+<a href="#8209" id="8209">8209</a>
+<a href="#8210" id="8210">8210</a>
+<a href="#8211" id="8211">8211</a>
+<a href="#8212" id="8212">8212</a>
+<a href="#8213" id="8213">8213</a>
+<a href="#8214" id="8214">8214</a>
+<a href="#8215" id="8215">8215</a>
+<a href="#8216" id="8216">8216</a>
+<a href="#8217" id="8217">8217</a>
+<a href="#8218" id="8218">8218</a>
+<a href="#8219" id="8219">8219</a>
+<a href="#8220" id="8220">8220</a>
+<a href="#8221" id="8221">8221</a>
+<a href="#8222" id="8222">8222</a>
+<a href="#8223" id="8223">8223</a>
+<a href="#8224" id="8224">8224</a>
+<a href="#8225" id="8225">8225</a>
+<a href="#8226" id="8226">8226</a>
+<a href="#8227" id="8227">8227</a>
+<a href="#8228" id="8228">8228</a>
+<a href="#8229" id="8229">8229</a>
+<a href="#8230" id="8230">8230</a>
+<a href="#8231" id="8231">8231</a>
+<a href="#8232" id="8232">8232</a>
+<a href="#8233" id="8233">8233</a>
+<a href="#8234" id="8234">8234</a>
+<a href="#8235" id="8235">8235</a>
+<a href="#8236" id="8236">8236</a>
+<a href="#8237" id="8237">8237</a>
+<a href="#8238" id="8238">8238</a>
+<a href="#8239" id="8239">8239</a>
+<a href="#8240" id="8240">8240</a>
+<a href="#8241" id="8241">8241</a>
+<a href="#8242" id="8242">8242</a>
+<a href="#8243" id="8243">8243</a>
+<a href="#8244" id="8244">8244</a>
+<a href="#8245" id="8245">8245</a>
+<a href="#8246" id="8246">8246</a>
+<a href="#8247" id="8247">8247</a>
+<a href="#8248" id="8248">8248</a>
+<a href="#8249" id="8249">8249</a>
+<a href="#8250" id="8250">8250</a>
+<a href="#8251" id="8251">8251</a>
+<a href="#8252" id="8252">8252</a>
+<a href="#8253" id="8253">8253</a>
+<a href="#8254" id="8254">8254</a>
+<a href="#8255" id="8255">8255</a>
+<a href="#8256" id="8256">8256</a>
+<a href="#8257" id="8257">8257</a>
+<a href="#8258" id="8258">8258</a>
+<a href="#8259" id="8259">8259</a>
+<a href="#8260" id="8260">8260</a>
+<a href="#8261" id="8261">8261</a>
+<a href="#8262" id="8262">8262</a>
+<a href="#8263" id="8263">8263</a>
+<a href="#8264" id="8264">8264</a>
+<a href="#8265" id="8265">8265</a>
+<a href="#8266" id="8266">8266</a>
+<a href="#8267" id="8267">8267</a>
+<a href="#8268" id="8268">8268</a>
+<a href="#8269" id="8269">8269</a>
+<a href="#8270" id="8270">8270</a>
+<a href="#8271" id="8271">8271</a>
+<a href="#8272" id="8272">8272</a>
+<a href="#8273" id="8273">8273</a>
+<a href="#8274" id="8274">8274</a>
+<a href="#8275" id="8275">8275</a>
+<a href="#8276" id="8276">8276</a>
+<a href="#8277" id="8277">8277</a>
+<a href="#8278" id="8278">8278</a>
+<a href="#8279" id="8279">8279</a>
+<a href="#8280" id="8280">8280</a>
+<a href="#8281" id="8281">8281</a>
+<a href="#8282" id="8282">8282</a>
+<a href="#8283" id="8283">8283</a>
+<a href="#8284" id="8284">8284</a>
+<a href="#8285" id="8285">8285</a>
+<a href="#8286" id="8286">8286</a>
+<a href="#8287" id="8287">8287</a>
+<a href="#8288" id="8288">8288</a>
+<a href="#8289" id="8289">8289</a>
+<a href="#8290" id="8290">8290</a>
+<a href="#8291" id="8291">8291</a>
+<a href="#8292" id="8292">8292</a>
+<a href="#8293" id="8293">8293</a>
+<a href="#8294" id="8294">8294</a>
+<a href="#8295" id="8295">8295</a>
+<a href="#8296" id="8296">8296</a>
+<a href="#8297" id="8297">8297</a>
+<a href="#8298" id="8298">8298</a>
+<a href="#8299" id="8299">8299</a>
+<a href="#8300" id="8300">8300</a>
+<a href="#8301" id="8301">8301</a>
+<a href="#8302" id="8302">8302</a>
+<a href="#8303" id="8303">8303</a>
+<a href="#8304" id="8304">8304</a>
+<a href="#8305" id="8305">8305</a>
+<a href="#8306" id="8306">8306</a>
+<a href="#8307" id="8307">8307</a>
+<a href="#8308" id="8308">8308</a>
+<a href="#8309" id="8309">8309</a>
+<a href="#8310" id="8310">8310</a>
+<a href="#8311" id="8311">8311</a>
+<a href="#8312" id="8312">8312</a>
+<a href="#8313" id="8313">8313</a>
+<a href="#8314" id="8314">8314</a>
+<a href="#8315" id="8315">8315</a>
+<a href="#8316" id="8316">8316</a>
+<a href="#8317" id="8317">8317</a>
+<a href="#8318" id="8318">8318</a>
+<a href="#8319" id="8319">8319</a>
+<a href="#8320" id="8320">8320</a>
+<a href="#8321" id="8321">8321</a>
+<a href="#8322" id="8322">8322</a>
+<a href="#8323" id="8323">8323</a>
+<a href="#8324" id="8324">8324</a>
+<a href="#8325" id="8325">8325</a>
+<a href="#8326" id="8326">8326</a>
+<a href="#8327" id="8327">8327</a>
+<a href="#8328" id="8328">8328</a>
+<a href="#8329" id="8329">8329</a>
+<a href="#8330" id="8330">8330</a>
+<a href="#8331" id="8331">8331</a>
+<a href="#8332" id="8332">8332</a>
+<a href="#8333" id="8333">8333</a>
+<a href="#8334" id="8334">8334</a>
+<a href="#8335" id="8335">8335</a>
+<a href="#8336" id="8336">8336</a>
+<a href="#8337" id="8337">8337</a>
+<a href="#8338" id="8338">8338</a>
+<a href="#8339" id="8339">8339</a>
+<a href="#8340" id="8340">8340</a>
+<a href="#8341" id="8341">8341</a>
+<a href="#8342" id="8342">8342</a>
+<a href="#8343" id="8343">8343</a>
+<a href="#8344" id="8344">8344</a>
+<a href="#8345" id="8345">8345</a>
+<a href="#8346" id="8346">8346</a>
+<a href="#8347" id="8347">8347</a>
+<a href="#8348" id="8348">8348</a>
+<a href="#8349" id="8349">8349</a>
+<a href="#8350" id="8350">8350</a>
+<a href="#8351" id="8351">8351</a>
+<a href="#8352" id="8352">8352</a>
+<a href="#8353" id="8353">8353</a>
+<a href="#8354" id="8354">8354</a>
+<a href="#8355" id="8355">8355</a>
+<a href="#8356" id="8356">8356</a>
+<a href="#8357" id="8357">8357</a>
+<a href="#8358" id="8358">8358</a>
+<a href="#8359" id="8359">8359</a>
+<a href="#8360" id="8360">8360</a>
+<a href="#8361" id="8361">8361</a>
+<a href="#8362" id="8362">8362</a>
+<a href="#8363" id="8363">8363</a>
+<a href="#8364" id="8364">8364</a>
+<a href="#8365" id="8365">8365</a>
+<a href="#8366" id="8366">8366</a>
+<a href="#8367" id="8367">8367</a>
+<a href="#8368" id="8368">8368</a>
+<a href="#8369" id="8369">8369</a>
+<a href="#8370" id="8370">8370</a>
+<a href="#8371" id="8371">8371</a>
+<a href="#8372" id="8372">8372</a>
+<a href="#8373" id="8373">8373</a>
+<a href="#8374" id="8374">8374</a>
+<a href="#8375" id="8375">8375</a>
+<a href="#8376" id="8376">8376</a>
+<a href="#8377" id="8377">8377</a>
+<a href="#8378" id="8378">8378</a>
+<a href="#8379" id="8379">8379</a>
+<a href="#8380" id="8380">8380</a>
+<a href="#8381" id="8381">8381</a>
+<a href="#8382" id="8382">8382</a>
+<a href="#8383" id="8383">8383</a>
+<a href="#8384" id="8384">8384</a>
+<a href="#8385" id="8385">8385</a>
+<a href="#8386" id="8386">8386</a>
+<a href="#8387" id="8387">8387</a>
+<a href="#8388" id="8388">8388</a>
+<a href="#8389" id="8389">8389</a>
+<a href="#8390" id="8390">8390</a>
+<a href="#8391" id="8391">8391</a>
+<a href="#8392" id="8392">8392</a>
+<a href="#8393" id="8393">8393</a>
+<a href="#8394" id="8394">8394</a>
+<a href="#8395" id="8395">8395</a>
+<a href="#8396" id="8396">8396</a>
+<a href="#8397" id="8397">8397</a>
+<a href="#8398" id="8398">8398</a>
+<a href="#8399" id="8399">8399</a>
+<a href="#8400" id="8400">8400</a>
+<a href="#8401" id="8401">8401</a>
+<a href="#8402" id="8402">8402</a>
+<a href="#8403" id="8403">8403</a>
+<a href="#8404" id="8404">8404</a>
+<a href="#8405" id="8405">8405</a>
+<a href="#8406" id="8406">8406</a>
+<a href="#8407" id="8407">8407</a>
+<a href="#8408" id="8408">8408</a>
+<a href="#8409" id="8409">8409</a>
+<a href="#8410" id="8410">8410</a>
+<a href="#8411" id="8411">8411</a>
+<a href="#8412" id="8412">8412</a>
+<a href="#8413" id="8413">8413</a>
+<a href="#8414" id="8414">8414</a>
+<a href="#8415" id="8415">8415</a>
+<a href="#8416" id="8416">8416</a>
+<a href="#8417" id="8417">8417</a>
+<a href="#8418" id="8418">8418</a>
+<a href="#8419" id="8419">8419</a>
+<a href="#8420" id="8420">8420</a>
+<a href="#8421" id="8421">8421</a>
+<a href="#8422" id="8422">8422</a>
+<a href="#8423" id="8423">8423</a>
+<a href="#8424" id="8424">8424</a>
+<a href="#8425" id="8425">8425</a>
+<a href="#8426" id="8426">8426</a>
+<a href="#8427" id="8427">8427</a>
+<a href="#8428" id="8428">8428</a>
+<a href="#8429" id="8429">8429</a>
+<a href="#8430" id="8430">8430</a>
+<a href="#8431" id="8431">8431</a>
+<a href="#8432" id="8432">8432</a>
+<a href="#8433" id="8433">8433</a>
+<a href="#8434" id="8434">8434</a>
+<a href="#8435" id="8435">8435</a>
+<a href="#8436" id="8436">8436</a>
+<a href="#8437" id="8437">8437</a>
+<a href="#8438" id="8438">8438</a>
+<a href="#8439" id="8439">8439</a>
+<a href="#8440" id="8440">8440</a>
+<a href="#8441" id="8441">8441</a>
+<a href="#8442" id="8442">8442</a>
+<a href="#8443" id="8443">8443</a>
+<a href="#8444" id="8444">8444</a>
+<a href="#8445" id="8445">8445</a>
+<a href="#8446" id="8446">8446</a>
+<a href="#8447" id="8447">8447</a>
+<a href="#8448" id="8448">8448</a>
+<a href="#8449" id="8449">8449</a>
+<a href="#8450" id="8450">8450</a>
+<a href="#8451" id="8451">8451</a>
+<a href="#8452" id="8452">8452</a>
+<a href="#8453" id="8453">8453</a>
+<a href="#8454" id="8454">8454</a>
+<a href="#8455" id="8455">8455</a>
+<a href="#8456" id="8456">8456</a>
+<a href="#8457" id="8457">8457</a>
+<a href="#8458" id="8458">8458</a>
+<a href="#8459" id="8459">8459</a>
+<a href="#8460" id="8460">8460</a>
+<a href="#8461" id="8461">8461</a>
+<a href="#8462" id="8462">8462</a>
+<a href="#8463" id="8463">8463</a>
+<a href="#8464" id="8464">8464</a>
+<a href="#8465" id="8465">8465</a>
+<a href="#8466" id="8466">8466</a>
+<a href="#8467" id="8467">8467</a>
+<a href="#8468" id="8468">8468</a>
+<a href="#8469" id="8469">8469</a>
+<a href="#8470" id="8470">8470</a>
+<a href="#8471" id="8471">8471</a>
+<a href="#8472" id="8472">8472</a>
+<a href="#8473" id="8473">8473</a>
+<a href="#8474" id="8474">8474</a>
+<a href="#8475" id="8475">8475</a>
+<a href="#8476" id="8476">8476</a>
+<a href="#8477" id="8477">8477</a>
+<a href="#8478" id="8478">8478</a>
+<a href="#8479" id="8479">8479</a>
+<a href="#8480" id="8480">8480</a>
+<a href="#8481" id="8481">8481</a>
+<a href="#8482" id="8482">8482</a>
+<a href="#8483" id="8483">8483</a>
+<a href="#8484" id="8484">8484</a>
+<a href="#8485" id="8485">8485</a>
+<a href="#8486" id="8486">8486</a>
+<a href="#8487" id="8487">8487</a>
+<a href="#8488" id="8488">8488</a>
+<a href="#8489" id="8489">8489</a>
+<a href="#8490" id="8490">8490</a>
+<a href="#8491" id="8491">8491</a>
+<a href="#8492" id="8492">8492</a>
+<a href="#8493" id="8493">8493</a>
+<a href="#8494" id="8494">8494</a>
+<a href="#8495" id="8495">8495</a>
+<a href="#8496" id="8496">8496</a>
+<a href="#8497" id="8497">8497</a>
+<a href="#8498" id="8498">8498</a>
+<a href="#8499" id="8499">8499</a>
+<a href="#8500" id="8500">8500</a>
+<a href="#8501" id="8501">8501</a>
+<a href="#8502" id="8502">8502</a>
+<a href="#8503" id="8503">8503</a>
+<a href="#8504" id="8504">8504</a>
+<a href="#8505" id="8505">8505</a>
+<a href="#8506" id="8506">8506</a>
+<a href="#8507" id="8507">8507</a>
+<a href="#8508" id="8508">8508</a>
+<a href="#8509" id="8509">8509</a>
+<a href="#8510" id="8510">8510</a>
+<a href="#8511" id="8511">8511</a>
+<a href="#8512" id="8512">8512</a>
+<a href="#8513" id="8513">8513</a>
+<a href="#8514" id="8514">8514</a>
+<a href="#8515" id="8515">8515</a>
+<a href="#8516" id="8516">8516</a>
+<a href="#8517" id="8517">8517</a>
+<a href="#8518" id="8518">8518</a>
+<a href="#8519" id="8519">8519</a>
+<a href="#8520" id="8520">8520</a>
+<a href="#8521" id="8521">8521</a>
+<a href="#8522" id="8522">8522</a>
+<a href="#8523" id="8523">8523</a>
+<a href="#8524" id="8524">8524</a>
+<a href="#8525" id="8525">8525</a>
+<a href="#8526" id="8526">8526</a>
+<a href="#8527" id="8527">8527</a>
+<a href="#8528" id="8528">8528</a>
+<a href="#8529" id="8529">8529</a>
+<a href="#8530" id="8530">8530</a>
+<a href="#8531" id="8531">8531</a>
+<a href="#8532" id="8532">8532</a>
+<a href="#8533" id="8533">8533</a>
+<a href="#8534" id="8534">8534</a>
+<a href="#8535" id="8535">8535</a>
+<a href="#8536" id="8536">8536</a>
+<a href="#8537" id="8537">8537</a>
+<a href="#8538" id="8538">8538</a>
+<a href="#8539" id="8539">8539</a>
+<a href="#8540" id="8540">8540</a>
+<a href="#8541" id="8541">8541</a>
+<a href="#8542" id="8542">8542</a>
+<a href="#8543" id="8543">8543</a>
+<a href="#8544" id="8544">8544</a>
+<a href="#8545" id="8545">8545</a>
+<a href="#8546" id="8546">8546</a>
+<a href="#8547" id="8547">8547</a>
+<a href="#8548" id="8548">8548</a>
+<a href="#8549" id="8549">8549</a>
+<a href="#8550" id="8550">8550</a>
+<a href="#8551" id="8551">8551</a>
+<a href="#8552" id="8552">8552</a>
+<a href="#8553" id="8553">8553</a>
+<a href="#8554" id="8554">8554</a>
+<a href="#8555" id="8555">8555</a>
+<a href="#8556" id="8556">8556</a>
+<a href="#8557" id="8557">8557</a>
+<a href="#8558" id="8558">8558</a>
+<a href="#8559" id="8559">8559</a>
+<a href="#8560" id="8560">8560</a>
+<a href="#8561" id="8561">8561</a>
+<a href="#8562" id="8562">8562</a>
+<a href="#8563" id="8563">8563</a>
+<a href="#8564" id="8564">8564</a>
+<a href="#8565" id="8565">8565</a>
+<a href="#8566" id="8566">8566</a>
+<a href="#8567" id="8567">8567</a>
+<a href="#8568" id="8568">8568</a>
+<a href="#8569" id="8569">8569</a>
+<a href="#8570" id="8570">8570</a>
+<a href="#8571" id="8571">8571</a>
+<a href="#8572" id="8572">8572</a>
+<a href="#8573" id="8573">8573</a>
+<a href="#8574" id="8574">8574</a>
+<a href="#8575" id="8575">8575</a>
+<a href="#8576" id="8576">8576</a>
+<a href="#8577" id="8577">8577</a>
+<a href="#8578" id="8578">8578</a>
+<a href="#8579" id="8579">8579</a>
+<a href="#8580" id="8580">8580</a>
+<a href="#8581" id="8581">8581</a>
+<a href="#8582" id="8582">8582</a>
+<a href="#8583" id="8583">8583</a>
+<a href="#8584" id="8584">8584</a>
+<a href="#8585" id="8585">8585</a>
+<a href="#8586" id="8586">8586</a>
+<a href="#8587" id="8587">8587</a>
+<a href="#8588" id="8588">8588</a>
+<a href="#8589" id="8589">8589</a>
+<a href="#8590" id="8590">8590</a>
+<a href="#8591" id="8591">8591</a>
+<a href="#8592" id="8592">8592</a>
+<a href="#8593" id="8593">8593</a>
+<a href="#8594" id="8594">8594</a>
+<a href="#8595" id="8595">8595</a>
+<a href="#8596" id="8596">8596</a>
+<a href="#8597" id="8597">8597</a>
+<a href="#8598" id="8598">8598</a>
+<a href="#8599" id="8599">8599</a>
+<a href="#8600" id="8600">8600</a>
+<a href="#8601" id="8601">8601</a>
+<a href="#8602" id="8602">8602</a>
+<a href="#8603" id="8603">8603</a>
+<a href="#8604" id="8604">8604</a>
+<a href="#8605" id="8605">8605</a>
+<a href="#8606" id="8606">8606</a>
+<a href="#8607" id="8607">8607</a>
+<a href="#8608" id="8608">8608</a>
+<a href="#8609" id="8609">8609</a>
+<a href="#8610" id="8610">8610</a>
+<a href="#8611" id="8611">8611</a>
+<a href="#8612" id="8612">8612</a>
+<a href="#8613" id="8613">8613</a>
+<a href="#8614" id="8614">8614</a>
+<a href="#8615" id="8615">8615</a>
+<a href="#8616" id="8616">8616</a>
+<a href="#8617" id="8617">8617</a>
+<a href="#8618" id="8618">8618</a>
+<a href="#8619" id="8619">8619</a>
+<a href="#8620" id="8620">8620</a>
+<a href="#8621" id="8621">8621</a>
+<a href="#8622" id="8622">8622</a>
+<a href="#8623" id="8623">8623</a>
+<a href="#8624" id="8624">8624</a>
+<a href="#8625" id="8625">8625</a>
+<a href="#8626" id="8626">8626</a>
+<a href="#8627" id="8627">8627</a>
+<a href="#8628" id="8628">8628</a>
+<a href="#8629" id="8629">8629</a>
+<a href="#8630" id="8630">8630</a>
+<a href="#8631" id="8631">8631</a>
+<a href="#8632" id="8632">8632</a>
+<a href="#8633" id="8633">8633</a>
+<a href="#8634" id="8634">8634</a>
+<a href="#8635" id="8635">8635</a>
+<a href="#8636" id="8636">8636</a>
+<a href="#8637" id="8637">8637</a>
+<a href="#8638" id="8638">8638</a>
+<a href="#8639" id="8639">8639</a>
+<a href="#8640" id="8640">8640</a>
+<a href="#8641" id="8641">8641</a>
+<a href="#8642" id="8642">8642</a>
+<a href="#8643" id="8643">8643</a>
+<a href="#8644" id="8644">8644</a>
+<a href="#8645" id="8645">8645</a>
+<a href="#8646" id="8646">8646</a>
+<a href="#8647" id="8647">8647</a>
+<a href="#8648" id="8648">8648</a>
+<a href="#8649" id="8649">8649</a>
+<a href="#8650" id="8650">8650</a>
+<a href="#8651" id="8651">8651</a>
+<a href="#8652" id="8652">8652</a>
+<a href="#8653" id="8653">8653</a>
+<a href="#8654" id="8654">8654</a>
+<a href="#8655" id="8655">8655</a>
+<a href="#8656" id="8656">8656</a>
+<a href="#8657" id="8657">8657</a>
+<a href="#8658" id="8658">8658</a>
+<a href="#8659" id="8659">8659</a>
+<a href="#8660" id="8660">8660</a>
+<a href="#8661" id="8661">8661</a>
+<a href="#8662" id="8662">8662</a>
+<a href="#8663" id="8663">8663</a>
+<a href="#8664" id="8664">8664</a>
+<a href="#8665" id="8665">8665</a>
+<a href="#8666" id="8666">8666</a>
+<a href="#8667" id="8667">8667</a>
+<a href="#8668" id="8668">8668</a>
+<a href="#8669" id="8669">8669</a>
+<a href="#8670" id="8670">8670</a>
+<a href="#8671" id="8671">8671</a>
+<a href="#8672" id="8672">8672</a>
+<a href="#8673" id="8673">8673</a>
+<a href="#8674" id="8674">8674</a>
+<a href="#8675" id="8675">8675</a>
+<a href="#8676" id="8676">8676</a>
+<a href="#8677" id="8677">8677</a>
+<a href="#8678" id="8678">8678</a>
+<a href="#8679" id="8679">8679</a>
+<a href="#8680" id="8680">8680</a>
+<a href="#8681" id="8681">8681</a>
+<a href="#8682" id="8682">8682</a>
+<a href="#8683" id="8683">8683</a>
+<a href="#8684" id="8684">8684</a>
+<a href="#8685" id="8685">8685</a>
+<a href="#8686" id="8686">8686</a>
+<a href="#8687" id="8687">8687</a>
+<a href="#8688" id="8688">8688</a>
+<a href="#8689" id="8689">8689</a>
+<a href="#8690" id="8690">8690</a>
+<a href="#8691" id="8691">8691</a>
+<a href="#8692" id="8692">8692</a>
+<a href="#8693" id="8693">8693</a>
+<a href="#8694" id="8694">8694</a>
+<a href="#8695" id="8695">8695</a>
+<a href="#8696" id="8696">8696</a>
+<a href="#8697" id="8697">8697</a>
+<a href="#8698" id="8698">8698</a>
+<a href="#8699" id="8699">8699</a>
+<a href="#8700" id="8700">8700</a>
+<a href="#8701" id="8701">8701</a>
+<a href="#8702" id="8702">8702</a>
+<a href="#8703" id="8703">8703</a>
+<a href="#8704" id="8704">8704</a>
+<a href="#8705" id="8705">8705</a>
+<a href="#8706" id="8706">8706</a>
+<a href="#8707" id="8707">8707</a>
+<a href="#8708" id="8708">8708</a>
+<a href="#8709" id="8709">8709</a>
+<a href="#8710" id="8710">8710</a>
+<a href="#8711" id="8711">8711</a>
+<a href="#8712" id="8712">8712</a>
+<a href="#8713" id="8713">8713</a>
+<a href="#8714" id="8714">8714</a>
+<a href="#8715" id="8715">8715</a>
+<a href="#8716" id="8716">8716</a>
+<a href="#8717" id="8717">8717</a>
+<a href="#8718" id="8718">8718</a>
+<a href="#8719" id="8719">8719</a>
+<a href="#8720" id="8720">8720</a>
+<a href="#8721" id="8721">8721</a>
+<a href="#8722" id="8722">8722</a>
+<a href="#8723" id="8723">8723</a>
+<a href="#8724" id="8724">8724</a>
+<a href="#8725" id="8725">8725</a>
+<a href="#8726" id="8726">8726</a>
+<a href="#8727" id="8727">8727</a>
+<a href="#8728" id="8728">8728</a>
+<a href="#8729" id="8729">8729</a>
+<a href="#8730" id="8730">8730</a>
+<a href="#8731" id="8731">8731</a>
+<a href="#8732" id="8732">8732</a>
+<a href="#8733" id="8733">8733</a>
+<a href="#8734" id="8734">8734</a>
+<a href="#8735" id="8735">8735</a>
+<a href="#8736" id="8736">8736</a>
+<a href="#8737" id="8737">8737</a>
+<a href="#8738" id="8738">8738</a>
+<a href="#8739" id="8739">8739</a>
+<a href="#8740" id="8740">8740</a>
+<a href="#8741" id="8741">8741</a>
+<a href="#8742" id="8742">8742</a>
+<a href="#8743" id="8743">8743</a>
+<a href="#8744" id="8744">8744</a>
+<a href="#8745" id="8745">8745</a>
+<a href="#8746" id="8746">8746</a>
+<a href="#8747" id="8747">8747</a>
+<a href="#8748" id="8748">8748</a>
+<a href="#8749" id="8749">8749</a>
+<a href="#8750" id="8750">8750</a>
+<a href="#8751" id="8751">8751</a>
+<a href="#8752" id="8752">8752</a>
+<a href="#8753" id="8753">8753</a>
+<a href="#8754" id="8754">8754</a>
+<a href="#8755" id="8755">8755</a>
+<a href="#8756" id="8756">8756</a>
+<a href="#8757" id="8757">8757</a>
+<a href="#8758" id="8758">8758</a>
+<a href="#8759" id="8759">8759</a>
+<a href="#8760" id="8760">8760</a>
+<a href="#8761" id="8761">8761</a>
+<a href="#8762" id="8762">8762</a>
+<a href="#8763" id="8763">8763</a>
+<a href="#8764" id="8764">8764</a>
+<a href="#8765" id="8765">8765</a>
+<a href="#8766" id="8766">8766</a>
+<a href="#8767" id="8767">8767</a>
+<a href="#8768" id="8768">8768</a>
+<a href="#8769" id="8769">8769</a>
+<a href="#8770" id="8770">8770</a>
+<a href="#8771" id="8771">8771</a>
+<a href="#8772" id="8772">8772</a>
+<a href="#8773" id="8773">8773</a>
+<a href="#8774" id="8774">8774</a>
+<a href="#8775" id="8775">8775</a>
+<a href="#8776" id="8776">8776</a>
+<a href="#8777" id="8777">8777</a>
+<a href="#8778" id="8778">8778</a>
+<a href="#8779" id="8779">8779</a>
+<a href="#8780" id="8780">8780</a>
+<a href="#8781" id="8781">8781</a>
+<a href="#8782" id="8782">8782</a>
+<a href="#8783" id="8783">8783</a>
+<a href="#8784" id="8784">8784</a>
+<a href="#8785" id="8785">8785</a>
+<a href="#8786" id="8786">8786</a>
+<a href="#8787" id="8787">8787</a>
+<a href="#8788" id="8788">8788</a>
+<a href="#8789" id="8789">8789</a>
+<a href="#8790" id="8790">8790</a>
+<a href="#8791" id="8791">8791</a>
+<a href="#8792" id="8792">8792</a>
+<a href="#8793" id="8793">8793</a>
+<a href="#8794" id="8794">8794</a>
+<a href="#8795" id="8795">8795</a>
+<a href="#8796" id="8796">8796</a>
+<a href="#8797" id="8797">8797</a>
+<a href="#8798" id="8798">8798</a>
+<a href="#8799" id="8799">8799</a>
+<a href="#8800" id="8800">8800</a>
+<a href="#8801" id="8801">8801</a>
+<a href="#8802" id="8802">8802</a>
+<a href="#8803" id="8803">8803</a>
+<a href="#8804" id="8804">8804</a>
+<a href="#8805" id="8805">8805</a>
+<a href="#8806" id="8806">8806</a>
+<a href="#8807" id="8807">8807</a>
+<a href="#8808" id="8808">8808</a>
+<a href="#8809" id="8809">8809</a>
+<a href="#8810" id="8810">8810</a>
+<a href="#8811" id="8811">8811</a>
+<a href="#8812" id="8812">8812</a>
+<a href="#8813" id="8813">8813</a>
+<a href="#8814" id="8814">8814</a>
+<a href="#8815" id="8815">8815</a>
+<a href="#8816" id="8816">8816</a>
+<a href="#8817" id="8817">8817</a>
+<a href="#8818" id="8818">8818</a>
+<a href="#8819" id="8819">8819</a>
+<a href="#8820" id="8820">8820</a>
+<a href="#8821" id="8821">8821</a>
+<a href="#8822" id="8822">8822</a>
+<a href="#8823" id="8823">8823</a>
+<a href="#8824" id="8824">8824</a>
+<a href="#8825" id="8825">8825</a>
+<a href="#8826" id="8826">8826</a>
+<a href="#8827" id="8827">8827</a>
+<a href="#8828" id="8828">8828</a>
+<a href="#8829" id="8829">8829</a>
+<a href="#8830" id="8830">8830</a>
+<a href="#8831" id="8831">8831</a>
+<a href="#8832" id="8832">8832</a>
+<a href="#8833" id="8833">8833</a>
+<a href="#8834" id="8834">8834</a>
+<a href="#8835" id="8835">8835</a>
+<a href="#8836" id="8836">8836</a>
+<a href="#8837" id="8837">8837</a>
+<a href="#8838" id="8838">8838</a>
+<a href="#8839" id="8839">8839</a>
+<a href="#8840" id="8840">8840</a>
+<a href="#8841" id="8841">8841</a>
+<a href="#8842" id="8842">8842</a>
+<a href="#8843" id="8843">8843</a>
+<a href="#8844" id="8844">8844</a>
+<a href="#8845" id="8845">8845</a>
+<a href="#8846" id="8846">8846</a>
+<a href="#8847" id="8847">8847</a>
+<a href="#8848" id="8848">8848</a>
+<a href="#8849" id="8849">8849</a>
+<a href="#8850" id="8850">8850</a>
+<a href="#8851" id="8851">8851</a>
+<a href="#8852" id="8852">8852</a>
+<a href="#8853" id="8853">8853</a>
+<a href="#8854" id="8854">8854</a>
+<a href="#8855" id="8855">8855</a>
+<a href="#8856" id="8856">8856</a>
+<a href="#8857" id="8857">8857</a>
+<a href="#8858" id="8858">8858</a>
+<a href="#8859" id="8859">8859</a>
+<a href="#8860" id="8860">8860</a>
+<a href="#8861" id="8861">8861</a>
+<a href="#8862" id="8862">8862</a>
+<a href="#8863" id="8863">8863</a>
+<a href="#8864" id="8864">8864</a>
+<a href="#8865" id="8865">8865</a>
+<a href="#8866" id="8866">8866</a>
+<a href="#8867" id="8867">8867</a>
+<a href="#8868" id="8868">8868</a>
+<a href="#8869" id="8869">8869</a>
+<a href="#8870" id="8870">8870</a>
+<a href="#8871" id="8871">8871</a>
+<a href="#8872" id="8872">8872</a>
+<a href="#8873" id="8873">8873</a>
+<a href="#8874" id="8874">8874</a>
+<a href="#8875" id="8875">8875</a>
+<a href="#8876" id="8876">8876</a>
+<a href="#8877" id="8877">8877</a>
+<a href="#8878" id="8878">8878</a>
+<a href="#8879" id="8879">8879</a>
+<a href="#8880" id="8880">8880</a>
+<a href="#8881" id="8881">8881</a>
+<a href="#8882" id="8882">8882</a>
+<a href="#8883" id="8883">8883</a>
+<a href="#8884" id="8884">8884</a>
+<a href="#8885" id="8885">8885</a>
+<a href="#8886" id="8886">8886</a>
+<a href="#8887" id="8887">8887</a>
+<a href="#8888" id="8888">8888</a>
+<a href="#8889" id="8889">8889</a>
+<a href="#8890" id="8890">8890</a>
+<a href="#8891" id="8891">8891</a>
+<a href="#8892" id="8892">8892</a>
+<a href="#8893" id="8893">8893</a>
+<a href="#8894" id="8894">8894</a>
+<a href="#8895" id="8895">8895</a>
+<a href="#8896" id="8896">8896</a>
+<a href="#8897" id="8897">8897</a>
+<a href="#8898" id="8898">8898</a>
+<a href="#8899" id="8899">8899</a>
+<a href="#8900" id="8900">8900</a>
+<a href="#8901" id="8901">8901</a>
+<a href="#8902" id="8902">8902</a>
+<a href="#8903" id="8903">8903</a>
+<a href="#8904" id="8904">8904</a>
+<a href="#8905" id="8905">8905</a>
+<a href="#8906" id="8906">8906</a>
+<a href="#8907" id="8907">8907</a>
+<a href="#8908" id="8908">8908</a>
+<a href="#8909" id="8909">8909</a>
+<a href="#8910" id="8910">8910</a>
+<a href="#8911" id="8911">8911</a>
+<a href="#8912" id="8912">8912</a>
+<a href="#8913" id="8913">8913</a>
+<a href="#8914" id="8914">8914</a>
+<a href="#8915" id="8915">8915</a>
+<a href="#8916" id="8916">8916</a>
+<a href="#8917" id="8917">8917</a>
+<a href="#8918" id="8918">8918</a>
+<a href="#8919" id="8919">8919</a>
+<a href="#8920" id="8920">8920</a>
+<a href="#8921" id="8921">8921</a>
+<a href="#8922" id="8922">8922</a>
+<a href="#8923" id="8923">8923</a>
+<a href="#8924" id="8924">8924</a>
+<a href="#8925" id="8925">8925</a>
+<a href="#8926" id="8926">8926</a>
+<a href="#8927" id="8927">8927</a>
+<a href="#8928" id="8928">8928</a>
+<a href="#8929" id="8929">8929</a>
+<a href="#8930" id="8930">8930</a>
+<a href="#8931" id="8931">8931</a>
+<a href="#8932" id="8932">8932</a>
+<a href="#8933" id="8933">8933</a>
+<a href="#8934" id="8934">8934</a>
+<a href="#8935" id="8935">8935</a>
+<a href="#8936" id="8936">8936</a>
+<a href="#8937" id="8937">8937</a>
+<a href="#8938" id="8938">8938</a>
+<a href="#8939" id="8939">8939</a>
+<a href="#8940" id="8940">8940</a>
+<a href="#8941" id="8941">8941</a>
+<a href="#8942" id="8942">8942</a>
+<a href="#8943" id="8943">8943</a>
+<a href="#8944" id="8944">8944</a>
+<a href="#8945" id="8945">8945</a>
+<a href="#8946" id="8946">8946</a>
+<a href="#8947" id="8947">8947</a>
+<a href="#8948" id="8948">8948</a>
+<a href="#8949" id="8949">8949</a>
+<a href="#8950" id="8950">8950</a>
+<a href="#8951" id="8951">8951</a>
+<a href="#8952" id="8952">8952</a>
+<a href="#8953" id="8953">8953</a>
+<a href="#8954" id="8954">8954</a>
+<a href="#8955" id="8955">8955</a>
+<a href="#8956" id="8956">8956</a>
+<a href="#8957" id="8957">8957</a>
+<a href="#8958" id="8958">8958</a>
+<a href="#8959" id="8959">8959</a>
+<a href="#8960" id="8960">8960</a>
+<a href="#8961" id="8961">8961</a>
+<a href="#8962" id="8962">8962</a>
+<a href="#8963" id="8963">8963</a>
+<a href="#8964" id="8964">8964</a>
+<a href="#8965" id="8965">8965</a>
+<a href="#8966" id="8966">8966</a>
+<a href="#8967" id="8967">8967</a>
+<a href="#8968" id="8968">8968</a>
+<a href="#8969" id="8969">8969</a>
+<a href="#8970" id="8970">8970</a>
+<a href="#8971" id="8971">8971</a>
+<a href="#8972" id="8972">8972</a>
+<a href="#8973" id="8973">8973</a>
+<a href="#8974" id="8974">8974</a>
+<a href="#8975" id="8975">8975</a>
+<a href="#8976" id="8976">8976</a>
+<a href="#8977" id="8977">8977</a>
+<a href="#8978" id="8978">8978</a>
+<a href="#8979" id="8979">8979</a>
+<a href="#8980" id="8980">8980</a>
+<a href="#8981" id="8981">8981</a>
+<a href="#8982" id="8982">8982</a>
+<a href="#8983" id="8983">8983</a>
+<a href="#8984" id="8984">8984</a>
+<a href="#8985" id="8985">8985</a>
+<a href="#8986" id="8986">8986</a>
+<a href="#8987" id="8987">8987</a>
+<a href="#8988" id="8988">8988</a>
+<a href="#8989" id="8989">8989</a>
+<a href="#8990" id="8990">8990</a>
+<a href="#8991" id="8991">8991</a>
+<a href="#8992" id="8992">8992</a>
+<a href="#8993" id="8993">8993</a>
+<a href="#8994" id="8994">8994</a>
+<a href="#8995" id="8995">8995</a>
+<a href="#8996" id="8996">8996</a>
+<a href="#8997" id="8997">8997</a>
+<a href="#8998" id="8998">8998</a>
+<a href="#8999" id="8999">8999</a>
+<a href="#9000" id="9000">9000</a>
+<a href="#9001" id="9001">9001</a>
+<a href="#9002" id="9002">9002</a>
+<a href="#9003" id="9003">9003</a>
+<a href="#9004" id="9004">9004</a>
+<a href="#9005" id="9005">9005</a>
+<a href="#9006" id="9006">9006</a>
+<a href="#9007" id="9007">9007</a>
+<a href="#9008" id="9008">9008</a>
+<a href="#9009" id="9009">9009</a>
+<a href="#9010" id="9010">9010</a>
+<a href="#9011" id="9011">9011</a>
+<a href="#9012" id="9012">9012</a>
+<a href="#9013" id="9013">9013</a>
+<a href="#9014" id="9014">9014</a>
+<a href="#9015" id="9015">9015</a>
+<a href="#9016" id="9016">9016</a>
+<a href="#9017" id="9017">9017</a>
+<a href="#9018" id="9018">9018</a>
+<a href="#9019" id="9019">9019</a>
+<a href="#9020" id="9020">9020</a>
+<a href="#9021" id="9021">9021</a>
+<a href="#9022" id="9022">9022</a>
+<a href="#9023" id="9023">9023</a>
+<a href="#9024" id="9024">9024</a>
+<a href="#9025" id="9025">9025</a>
+<a href="#9026" id="9026">9026</a>
+<a href="#9027" id="9027">9027</a>
+<a href="#9028" id="9028">9028</a>
+<a href="#9029" id="9029">9029</a>
+<a href="#9030" id="9030">9030</a>
+<a href="#9031" id="9031">9031</a>
+<a href="#9032" id="9032">9032</a>
+<a href="#9033" id="9033">9033</a>
+<a href="#9034" id="9034">9034</a>
+<a href="#9035" id="9035">9035</a>
+<a href="#9036" id="9036">9036</a>
+<a href="#9037" id="9037">9037</a>
+<a href="#9038" id="9038">9038</a>
+<a href="#9039" id="9039">9039</a>
+<a href="#9040" id="9040">9040</a>
+<a href="#9041" id="9041">9041</a>
+<a href="#9042" id="9042">9042</a>
+<a href="#9043" id="9043">9043</a>
+<a href="#9044" id="9044">9044</a>
+<a href="#9045" id="9045">9045</a>
+<a href="#9046" id="9046">9046</a>
+<a href="#9047" id="9047">9047</a>
+<a href="#9048" id="9048">9048</a>
+<a href="#9049" id="9049">9049</a>
+<a href="#9050" id="9050">9050</a>
+<a href="#9051" id="9051">9051</a>
+<a href="#9052" id="9052">9052</a>
+<a href="#9053" id="9053">9053</a>
+<a href="#9054" id="9054">9054</a>
+<a href="#9055" id="9055">9055</a>
+<a href="#9056" id="9056">9056</a>
+<a href="#9057" id="9057">9057</a>
+<a href="#9058" id="9058">9058</a>
+<a href="#9059" id="9059">9059</a>
+<a href="#9060" id="9060">9060</a>
+<a href="#9061" id="9061">9061</a>
+<a href="#9062" id="9062">9062</a>
+<a href="#9063" id="9063">9063</a>
+<a href="#9064" id="9064">9064</a>
+<a href="#9065" id="9065">9065</a>
+<a href="#9066" id="9066">9066</a>
+<a href="#9067" id="9067">9067</a>
+<a href="#9068" id="9068">9068</a>
+<a href="#9069" id="9069">9069</a>
+<a href="#9070" id="9070">9070</a>
+<a href="#9071" id="9071">9071</a>
+<a href="#9072" id="9072">9072</a>
+<a href="#9073" id="9073">9073</a>
+<a href="#9074" id="9074">9074</a>
+<a href="#9075" id="9075">9075</a>
+<a href="#9076" id="9076">9076</a>
+<a href="#9077" id="9077">9077</a>
+<a href="#9078" id="9078">9078</a>
+<a href="#9079" id="9079">9079</a>
+<a href="#9080" id="9080">9080</a>
+<a href="#9081" id="9081">9081</a>
+<a href="#9082" id="9082">9082</a>
+<a href="#9083" id="9083">9083</a>
+<a href="#9084" id="9084">9084</a>
+<a href="#9085" id="9085">9085</a>
+<a href="#9086" id="9086">9086</a>
+<a href="#9087" id="9087">9087</a>
+<a href="#9088" id="9088">9088</a>
+<a href="#9089" id="9089">9089</a>
+<a href="#9090" id="9090">9090</a>
+<a href="#9091" id="9091">9091</a>
+<a href="#9092" id="9092">9092</a>
+<a href="#9093" id="9093">9093</a>
+<a href="#9094" id="9094">9094</a>
+<a href="#9095" id="9095">9095</a>
+<a href="#9096" id="9096">9096</a>
+<a href="#9097" id="9097">9097</a>
+<a href="#9098" id="9098">9098</a>
+<a href="#9099" id="9099">9099</a>
+<a href="#9100" id="9100">9100</a>
+<a href="#9101" id="9101">9101</a>
+<a href="#9102" id="9102">9102</a>
+<a href="#9103" id="9103">9103</a>
+<a href="#9104" id="9104">9104</a>
+<a href="#9105" id="9105">9105</a>
+<a href="#9106" id="9106">9106</a>
+<a href="#9107" id="9107">9107</a>
+<a href="#9108" id="9108">9108</a>
+<a href="#9109" id="9109">9109</a>
+<a href="#9110" id="9110">9110</a>
+<a href="#9111" id="9111">9111</a>
+<a href="#9112" id="9112">9112</a>
+<a href="#9113" id="9113">9113</a>
+<a href="#9114" id="9114">9114</a>
+<a href="#9115" id="9115">9115</a>
+<a href="#9116" id="9116">9116</a>
+<a href="#9117" id="9117">9117</a>
+<a href="#9118" id="9118">9118</a>
+<a href="#9119" id="9119">9119</a>
+<a href="#9120" id="9120">9120</a>
+<a href="#9121" id="9121">9121</a>
+<a href="#9122" id="9122">9122</a>
+<a href="#9123" id="9123">9123</a>
+<a href="#9124" id="9124">9124</a>
+<a href="#9125" id="9125">9125</a>
+<a href="#9126" id="9126">9126</a>
+<a href="#9127" id="9127">9127</a>
+<a href="#9128" id="9128">9128</a>
+<a href="#9129" id="9129">9129</a>
+<a href="#9130" id="9130">9130</a>
+<a href="#9131" id="9131">9131</a>
+<a href="#9132" id="9132">9132</a>
+<a href="#9133" id="9133">9133</a>
+<a href="#9134" id="9134">9134</a>
+<a href="#9135" id="9135">9135</a>
+<a href="#9136" id="9136">9136</a>
+<a href="#9137" id="9137">9137</a>
+<a href="#9138" id="9138">9138</a>
+<a href="#9139" id="9139">9139</a>
+<a href="#9140" id="9140">9140</a>
+<a href="#9141" id="9141">9141</a>
+<a href="#9142" id="9142">9142</a>
+<a href="#9143" id="9143">9143</a>
+<a href="#9144" id="9144">9144</a>
+<a href="#9145" id="9145">9145</a>
+<a href="#9146" id="9146">9146</a>
+<a href="#9147" id="9147">9147</a>
+<a href="#9148" id="9148">9148</a>
+<a href="#9149" id="9149">9149</a>
+<a href="#9150" id="9150">9150</a>
+<a href="#9151" id="9151">9151</a>
+<a href="#9152" id="9152">9152</a>
+<a href="#9153" id="9153">9153</a>
+<a href="#9154" id="9154">9154</a>
+<a href="#9155" id="9155">9155</a>
+<a href="#9156" id="9156">9156</a>
+<a href="#9157" id="9157">9157</a>
+<a href="#9158" id="9158">9158</a>
+<a href="#9159" id="9159">9159</a>
+<a href="#9160" id="9160">9160</a>
+<a href="#9161" id="9161">9161</a>
+<a href="#9162" id="9162">9162</a>
+<a href="#9163" id="9163">9163</a>
+<a href="#9164" id="9164">9164</a>
+<a href="#9165" id="9165">9165</a>
+<a href="#9166" id="9166">9166</a>
+<a href="#9167" id="9167">9167</a>
+<a href="#9168" id="9168">9168</a>
+<a href="#9169" id="9169">9169</a>
+<a href="#9170" id="9170">9170</a>
+<a href="#9171" id="9171">9171</a>
+<a href="#9172" id="9172">9172</a>
+<a href="#9173" id="9173">9173</a>
+<a href="#9174" id="9174">9174</a>
+<a href="#9175" id="9175">9175</a>
+<a href="#9176" id="9176">9176</a>
+<a href="#9177" id="9177">9177</a>
+<a href="#9178" id="9178">9178</a>
+<a href="#9179" id="9179">9179</a>
+<a href="#9180" id="9180">9180</a>
+<a href="#9181" id="9181">9181</a>
+<a href="#9182" id="9182">9182</a>
+<a href="#9183" id="9183">9183</a>
+<a href="#9184" id="9184">9184</a>
+<a href="#9185" id="9185">9185</a>
+<a href="#9186" id="9186">9186</a>
+<a href="#9187" id="9187">9187</a>
+<a href="#9188" id="9188">9188</a>
+<a href="#9189" id="9189">9189</a>
+<a href="#9190" id="9190">9190</a>
+<a href="#9191" id="9191">9191</a>
+<a href="#9192" id="9192">9192</a>
+<a href="#9193" id="9193">9193</a>
+<a href="#9194" id="9194">9194</a>
+<a href="#9195" id="9195">9195</a>
+<a href="#9196" id="9196">9196</a>
+<a href="#9197" id="9197">9197</a>
+<a href="#9198" id="9198">9198</a>
+<a href="#9199" id="9199">9199</a>
+<a href="#9200" id="9200">9200</a>
+<a href="#9201" id="9201">9201</a>
+<a href="#9202" id="9202">9202</a>
+<a href="#9203" id="9203">9203</a>
+<a href="#9204" id="9204">9204</a>
+<a href="#9205" id="9205">9205</a>
+<a href="#9206" id="9206">9206</a>
+<a href="#9207" id="9207">9207</a>
+<a href="#9208" id="9208">9208</a>
+<a href="#9209" id="9209">9209</a>
+<a href="#9210" id="9210">9210</a>
+<a href="#9211" id="9211">9211</a>
+<a href="#9212" id="9212">9212</a>
+<a href="#9213" id="9213">9213</a>
+<a href="#9214" id="9214">9214</a>
+<a href="#9215" id="9215">9215</a>
+<a href="#9216" id="9216">9216</a>
+<a href="#9217" id="9217">9217</a>
+<a href="#9218" id="9218">9218</a>
+<a href="#9219" id="9219">9219</a>
+<a href="#9220" id="9220">9220</a>
+<a href="#9221" id="9221">9221</a>
+<a href="#9222" id="9222">9222</a>
+<a href="#9223" id="9223">9223</a>
+<a href="#9224" id="9224">9224</a>
+<a href="#9225" id="9225">9225</a>
+<a href="#9226" id="9226">9226</a>
+<a href="#9227" id="9227">9227</a>
+<a href="#9228" id="9228">9228</a>
+<a href="#9229" id="9229">9229</a>
+<a href="#9230" id="9230">9230</a>
+<a href="#9231" id="9231">9231</a>
+<a href="#9232" id="9232">9232</a>
+<a href="#9233" id="9233">9233</a>
+<a href="#9234" id="9234">9234</a>
+<a href="#9235" id="9235">9235</a>
+<a href="#9236" id="9236">9236</a>
+<a href="#9237" id="9237">9237</a>
+<a href="#9238" id="9238">9238</a>
+<a href="#9239" id="9239">9239</a>
+<a href="#9240" id="9240">9240</a>
+<a href="#9241" id="9241">9241</a>
+<a href="#9242" id="9242">9242</a>
+<a href="#9243" id="9243">9243</a>
+<a href="#9244" id="9244">9244</a>
+<a href="#9245" id="9245">9245</a>
+<a href="#9246" id="9246">9246</a>
+<a href="#9247" id="9247">9247</a>
+<a href="#9248" id="9248">9248</a>
+<a href="#9249" id="9249">9249</a>
+<a href="#9250" id="9250">9250</a>
+<a href="#9251" id="9251">9251</a>
+<a href="#9252" id="9252">9252</a>
+<a href="#9253" id="9253">9253</a>
+<a href="#9254" id="9254">9254</a>
+<a href="#9255" id="9255">9255</a>
+<a href="#9256" id="9256">9256</a>
+<a href="#9257" id="9257">9257</a>
+<a href="#9258" id="9258">9258</a>
+<a href="#9259" id="9259">9259</a>
+<a href="#9260" id="9260">9260</a>
+<a href="#9261" id="9261">9261</a>
+<a href="#9262" id="9262">9262</a>
+<a href="#9263" id="9263">9263</a>
+<a href="#9264" id="9264">9264</a>
+<a href="#9265" id="9265">9265</a>
+<a href="#9266" id="9266">9266</a>
+<a href="#9267" id="9267">9267</a>
+<a href="#9268" id="9268">9268</a>
+<a href="#9269" id="9269">9269</a>
+<a href="#9270" id="9270">9270</a>
+<a href="#9271" id="9271">9271</a>
+<a href="#9272" id="9272">9272</a>
+<a href="#9273" id="9273">9273</a>
+<a href="#9274" id="9274">9274</a>
+<a href="#9275" id="9275">9275</a>
+<a href="#9276" id="9276">9276</a>
+<a href="#9277" id="9277">9277</a>
+<a href="#9278" id="9278">9278</a>
+<a href="#9279" id="9279">9279</a>
+<a href="#9280" id="9280">9280</a>
+<a href="#9281" id="9281">9281</a>
+<a href="#9282" id="9282">9282</a>
+<a href="#9283" id="9283">9283</a>
+<a href="#9284" id="9284">9284</a>
+<a href="#9285" id="9285">9285</a>
+<a href="#9286" id="9286">9286</a>
+<a href="#9287" id="9287">9287</a>
+<a href="#9288" id="9288">9288</a>
+<a href="#9289" id="9289">9289</a>
+<a href="#9290" id="9290">9290</a>
+<a href="#9291" id="9291">9291</a>
+<a href="#9292" id="9292">9292</a>
+<a href="#9293" id="9293">9293</a>
+<a href="#9294" id="9294">9294</a>
+<a href="#9295" id="9295">9295</a>
+<a href="#9296" id="9296">9296</a>
+<a href="#9297" id="9297">9297</a>
+<a href="#9298" id="9298">9298</a>
+<a href="#9299" id="9299">9299</a>
+<a href="#9300" id="9300">9300</a>
+<a href="#9301" id="9301">9301</a>
+<a href="#9302" id="9302">9302</a>
+<a href="#9303" id="9303">9303</a>
+<a href="#9304" id="9304">9304</a>
+<a href="#9305" id="9305">9305</a>
+<a href="#9306" id="9306">9306</a>
+<a href="#9307" id="9307">9307</a>
+<a href="#9308" id="9308">9308</a>
+<a href="#9309" id="9309">9309</a>
+<a href="#9310" id="9310">9310</a>
+<a href="#9311" id="9311">9311</a>
+<a href="#9312" id="9312">9312</a>
+<a href="#9313" id="9313">9313</a>
+<a href="#9314" id="9314">9314</a>
+<a href="#9315" id="9315">9315</a>
+<a href="#9316" id="9316">9316</a>
+<a href="#9317" id="9317">9317</a>
+<a href="#9318" id="9318">9318</a>
+<a href="#9319" id="9319">9319</a>
+<a href="#9320" id="9320">9320</a>
+<a href="#9321" id="9321">9321</a>
+<a href="#9322" id="9322">9322</a>
+<a href="#9323" id="9323">9323</a>
+<a href="#9324" id="9324">9324</a>
+<a href="#9325" id="9325">9325</a>
+<a href="#9326" id="9326">9326</a>
+<a href="#9327" id="9327">9327</a>
+<a href="#9328" id="9328">9328</a>
+<a href="#9329" id="9329">9329</a>
+<a href="#9330" id="9330">9330</a>
+<a href="#9331" id="9331">9331</a>
+<a href="#9332" id="9332">9332</a>
+<a href="#9333" id="9333">9333</a>
+<a href="#9334" id="9334">9334</a>
+<a href="#9335" id="9335">9335</a>
+<a href="#9336" id="9336">9336</a>
+<a href="#9337" id="9337">9337</a>
+<a href="#9338" id="9338">9338</a>
+<a href="#9339" id="9339">9339</a>
+<a href="#9340" id="9340">9340</a>
+<a href="#9341" id="9341">9341</a>
+<a href="#9342" id="9342">9342</a>
+<a href="#9343" id="9343">9343</a>
+<a href="#9344" id="9344">9344</a>
+<a href="#9345" id="9345">9345</a>
+<a href="#9346" id="9346">9346</a>
+<a href="#9347" id="9347">9347</a>
+<a href="#9348" id="9348">9348</a>
+<a href="#9349" id="9349">9349</a>
+<a href="#9350" id="9350">9350</a>
+<a href="#9351" id="9351">9351</a>
+<a href="#9352" id="9352">9352</a>
+<a href="#9353" id="9353">9353</a>
+<a href="#9354" id="9354">9354</a>
+<a href="#9355" id="9355">9355</a>
+<a href="#9356" id="9356">9356</a>
+<a href="#9357" id="9357">9357</a>
+<a href="#9358" id="9358">9358</a>
+<a href="#9359" id="9359">9359</a>
+<a href="#9360" id="9360">9360</a>
+<a href="#9361" id="9361">9361</a>
+<a href="#9362" id="9362">9362</a>
+<a href="#9363" id="9363">9363</a>
+<a href="#9364" id="9364">9364</a>
+<a href="#9365" id="9365">9365</a>
+<a href="#9366" id="9366">9366</a>
+<a href="#9367" id="9367">9367</a>
+<a href="#9368" id="9368">9368</a>
+<a href="#9369" id="9369">9369</a>
+<a href="#9370" id="9370">9370</a>
+<a href="#9371" id="9371">9371</a>
+<a href="#9372" id="9372">9372</a>
+<a href="#9373" id="9373">9373</a>
+<a href="#9374" id="9374">9374</a>
+<a href="#9375" id="9375">9375</a>
+<a href="#9376" id="9376">9376</a>
+<a href="#9377" id="9377">9377</a>
+<a href="#9378" id="9378">9378</a>
+<a href="#9379" id="9379">9379</a>
+<a href="#9380" id="9380">9380</a>
+<a href="#9381" id="9381">9381</a>
+<a href="#9382" id="9382">9382</a>
+<a href="#9383" id="9383">9383</a>
+<a href="#9384" id="9384">9384</a>
+<a href="#9385" id="9385">9385</a>
+<a href="#9386" id="9386">9386</a>
+<a href="#9387" id="9387">9387</a>
+<a href="#9388" id="9388">9388</a>
+<a href="#9389" id="9389">9389</a>
+<a href="#9390" id="9390">9390</a>
+<a href="#9391" id="9391">9391</a>
+<a href="#9392" id="9392">9392</a>
+<a href="#9393" id="9393">9393</a>
+<a href="#9394" id="9394">9394</a>
+<a href="#9395" id="9395">9395</a>
+<a href="#9396" id="9396">9396</a>
+<a href="#9397" id="9397">9397</a>
+<a href="#9398" id="9398">9398</a>
+<a href="#9399" id="9399">9399</a>
+<a href="#9400" id="9400">9400</a>
+<a href="#9401" id="9401">9401</a>
+<a href="#9402" id="9402">9402</a>
+<a href="#9403" id="9403">9403</a>
+<a href="#9404" id="9404">9404</a>
+<a href="#9405" id="9405">9405</a>
+<a href="#9406" id="9406">9406</a>
+<a href="#9407" id="9407">9407</a>
+<a href="#9408" id="9408">9408</a>
+<a href="#9409" id="9409">9409</a>
+<a href="#9410" id="9410">9410</a>
+<a href="#9411" id="9411">9411</a>
+<a href="#9412" id="9412">9412</a>
+<a href="#9413" id="9413">9413</a>
+<a href="#9414" id="9414">9414</a>
+<a href="#9415" id="9415">9415</a>
+<a href="#9416" id="9416">9416</a>
+<a href="#9417" id="9417">9417</a>
+<a href="#9418" id="9418">9418</a>
+<a href="#9419" id="9419">9419</a>
+<a href="#9420" id="9420">9420</a>
+<a href="#9421" id="9421">9421</a>
+<a href="#9422" id="9422">9422</a>
+<a href="#9423" id="9423">9423</a>
+<a href="#9424" id="9424">9424</a>
+<a href="#9425" id="9425">9425</a>
+<a href="#9426" id="9426">9426</a>
+<a href="#9427" id="9427">9427</a>
+<a href="#9428" id="9428">9428</a>
+<a href="#9429" id="9429">9429</a>
+<a href="#9430" id="9430">9430</a>
+<a href="#9431" id="9431">9431</a>
+<a href="#9432" id="9432">9432</a>
+<a href="#9433" id="9433">9433</a>
+<a href="#9434" id="9434">9434</a>
+<a href="#9435" id="9435">9435</a>
+<a href="#9436" id="9436">9436</a>
+<a href="#9437" id="9437">9437</a>
+<a href="#9438" id="9438">9438</a>
+<a href="#9439" id="9439">9439</a>
+<a href="#9440" id="9440">9440</a>
+<a href="#9441" id="9441">9441</a>
+<a href="#9442" id="9442">9442</a>
+<a href="#9443" id="9443">9443</a>
+<a href="#9444" id="9444">9444</a>
+<a href="#9445" id="9445">9445</a>
+<a href="#9446" id="9446">9446</a>
+<a href="#9447" id="9447">9447</a>
+<a href="#9448" id="9448">9448</a>
+<a href="#9449" id="9449">9449</a>
+<a href="#9450" id="9450">9450</a>
+<a href="#9451" id="9451">9451</a>
+<a href="#9452" id="9452">9452</a>
+<a href="#9453" id="9453">9453</a>
+<a href="#9454" id="9454">9454</a>
+<a href="#9455" id="9455">9455</a>
+<a href="#9456" id="9456">9456</a>
+<a href="#9457" id="9457">9457</a>
+<a href="#9458" id="9458">9458</a>
+<a href="#9459" id="9459">9459</a>
+<a href="#9460" id="9460">9460</a>
+<a href="#9461" id="9461">9461</a>
+<a href="#9462" id="9462">9462</a>
+<a href="#9463" id="9463">9463</a>
+<a href="#9464" id="9464">9464</a>
+<a href="#9465" id="9465">9465</a>
+<a href="#9466" id="9466">9466</a>
+<a href="#9467" id="9467">9467</a>
+<a href="#9468" id="9468">9468</a>
+<a href="#9469" id="9469">9469</a>
+<a href="#9470" id="9470">9470</a>
+<a href="#9471" id="9471">9471</a>
+<a href="#9472" id="9472">9472</a>
+<a href="#9473" id="9473">9473</a>
+<a href="#9474" id="9474">9474</a>
+<a href="#9475" id="9475">9475</a>
+<a href="#9476" id="9476">9476</a>
+<a href="#9477" id="9477">9477</a>
+<a href="#9478" id="9478">9478</a>
+<a href="#9479" id="9479">9479</a>
+<a href="#9480" id="9480">9480</a>
+<a href="#9481" id="9481">9481</a>
+<a href="#9482" id="9482">9482</a>
+<a href="#9483" id="9483">9483</a>
+<a href="#9484" id="9484">9484</a>
+<a href="#9485" id="9485">9485</a>
+<a href="#9486" id="9486">9486</a>
+<a href="#9487" id="9487">9487</a>
+<a href="#9488" id="9488">9488</a>
+<a href="#9489" id="9489">9489</a>
+<a href="#9490" id="9490">9490</a>
+<a href="#9491" id="9491">9491</a>
+<a href="#9492" id="9492">9492</a>
+<a href="#9493" id="9493">9493</a>
+<a href="#9494" id="9494">9494</a>
+<a href="#9495" id="9495">9495</a>
+<a href="#9496" id="9496">9496</a>
+<a href="#9497" id="9497">9497</a>
+<a href="#9498" id="9498">9498</a>
+<a href="#9499" id="9499">9499</a>
+<a href="#9500" id="9500">9500</a>
+<a href="#9501" id="9501">9501</a>
+<a href="#9502" id="9502">9502</a>
+<a href="#9503" id="9503">9503</a>
+<a href="#9504" id="9504">9504</a>
+<a href="#9505" id="9505">9505</a>
+<a href="#9506" id="9506">9506</a>
+<a href="#9507" id="9507">9507</a>
+<a href="#9508" id="9508">9508</a>
+<a href="#9509" id="9509">9509</a>
+<a href="#9510" id="9510">9510</a>
+<a href="#9511" id="9511">9511</a>
+<a href="#9512" id="9512">9512</a>
+<a href="#9513" id="9513">9513</a>
+<a href="#9514" id="9514">9514</a>
+<a href="#9515" id="9515">9515</a>
+<a href="#9516" id="9516">9516</a>
+<a href="#9517" id="9517">9517</a>
+<a href="#9518" id="9518">9518</a>
+<a href="#9519" id="9519">9519</a>
+<a href="#9520" id="9520">9520</a>
+<a href="#9521" id="9521">9521</a>
+<a href="#9522" id="9522">9522</a>
+<a href="#9523" id="9523">9523</a>
+<a href="#9524" id="9524">9524</a>
+<a href="#9525" id="9525">9525</a>
+<a href="#9526" id="9526">9526</a>
+<a href="#9527" id="9527">9527</a>
+<a href="#9528" id="9528">9528</a>
+<a href="#9529" id="9529">9529</a>
+<a href="#9530" id="9530">9530</a>
+<a href="#9531" id="9531">9531</a>
+<a href="#9532" id="9532">9532</a>
+<a href="#9533" id="9533">9533</a>
+<a href="#9534" id="9534">9534</a>
+<a href="#9535" id="9535">9535</a>
+<a href="#9536" id="9536">9536</a>
+<a href="#9537" id="9537">9537</a>
+<a href="#9538" id="9538">9538</a>
+<a href="#9539" id="9539">9539</a>
+<a href="#9540" id="9540">9540</a>
+<a href="#9541" id="9541">9541</a>
+<a href="#9542" id="9542">9542</a>
+<a href="#9543" id="9543">9543</a>
+<a href="#9544" id="9544">9544</a>
+<a href="#9545" id="9545">9545</a>
+<a href="#9546" id="9546">9546</a>
+<a href="#9547" id="9547">9547</a>
+<a href="#9548" id="9548">9548</a>
+<a href="#9549" id="9549">9549</a>
+<a href="#9550" id="9550">9550</a>
+<a href="#9551" id="9551">9551</a>
+<a href="#9552" id="9552">9552</a>
+<a href="#9553" id="9553">9553</a>
+<a href="#9554" id="9554">9554</a>
+<a href="#9555" id="9555">9555</a>
+<a href="#9556" id="9556">9556</a>
+<a href="#9557" id="9557">9557</a>
+<a href="#9558" id="9558">9558</a>
+<a href="#9559" id="9559">9559</a>
+<a href="#9560" id="9560">9560</a>
+<a href="#9561" id="9561">9561</a>
+<a href="#9562" id="9562">9562</a>
+<a href="#9563" id="9563">9563</a>
+<a href="#9564" id="9564">9564</a>
+<a href="#9565" id="9565">9565</a>
+<a href="#9566" id="9566">9566</a>
+<a href="#9567" id="9567">9567</a>
+<a href="#9568" id="9568">9568</a>
+<a href="#9569" id="9569">9569</a>
+<a href="#9570" id="9570">9570</a>
+<a href="#9571" id="9571">9571</a>
+<a href="#9572" id="9572">9572</a>
+<a href="#9573" id="9573">9573</a>
+<a href="#9574" id="9574">9574</a>
+<a href="#9575" id="9575">9575</a>
+<a href="#9576" id="9576">9576</a>
+<a href="#9577" id="9577">9577</a>
+<a href="#9578" id="9578">9578</a>
+<a href="#9579" id="9579">9579</a>
+<a href="#9580" id="9580">9580</a>
+<a href="#9581" id="9581">9581</a>
+<a href="#9582" id="9582">9582</a>
+<a href="#9583" id="9583">9583</a>
+<a href="#9584" id="9584">9584</a>
+<a href="#9585" id="9585">9585</a>
+<a href="#9586" id="9586">9586</a>
+<a href="#9587" id="9587">9587</a>
+<a href="#9588" id="9588">9588</a>
+<a href="#9589" id="9589">9589</a>
+<a href="#9590" id="9590">9590</a>
+<a href="#9591" id="9591">9591</a>
+<a href="#9592" id="9592">9592</a>
+<a href="#9593" id="9593">9593</a>
+<a href="#9594" id="9594">9594</a>
+<a href="#9595" id="9595">9595</a>
+<a href="#9596" id="9596">9596</a>
+<a href="#9597" id="9597">9597</a>
+<a href="#9598" id="9598">9598</a>
+<a href="#9599" id="9599">9599</a>
+<a href="#9600" id="9600">9600</a>
+<a href="#9601" id="9601">9601</a>
+<a href="#9602" id="9602">9602</a>
+<a href="#9603" id="9603">9603</a>
+<a href="#9604" id="9604">9604</a>
+<a href="#9605" id="9605">9605</a>
+<a href="#9606" id="9606">9606</a>
+<a href="#9607" id="9607">9607</a>
+<a href="#9608" id="9608">9608</a>
+<a href="#9609" id="9609">9609</a>
+<a href="#9610" id="9610">9610</a>
+<a href="#9611" id="9611">9611</a>
+<a href="#9612" id="9612">9612</a>
+<a href="#9613" id="9613">9613</a>
+<a href="#9614" id="9614">9614</a>
+<a href="#9615" id="9615">9615</a>
+<a href="#9616" id="9616">9616</a>
+<a href="#9617" id="9617">9617</a>
+<a href="#9618" id="9618">9618</a>
+<a href="#9619" id="9619">9619</a>
+<a href="#9620" id="9620">9620</a>
+<a href="#9621" id="9621">9621</a>
+<a href="#9622" id="9622">9622</a>
+<a href="#9623" id="9623">9623</a>
+<a href="#9624" id="9624">9624</a>
+<a href="#9625" id="9625">9625</a>
+<a href="#9626" id="9626">9626</a>
+<a href="#9627" id="9627">9627</a>
+<a href="#9628" id="9628">9628</a>
+<a href="#9629" id="9629">9629</a>
+<a href="#9630" id="9630">9630</a>
+<a href="#9631" id="9631">9631</a>
+<a href="#9632" id="9632">9632</a>
+<a href="#9633" id="9633">9633</a>
+<a href="#9634" id="9634">9634</a>
+<a href="#9635" id="9635">9635</a>
+<a href="#9636" id="9636">9636</a>
+<a href="#9637" id="9637">9637</a>
+<a href="#9638" id="9638">9638</a>
+<a href="#9639" id="9639">9639</a>
+<a href="#9640" id="9640">9640</a>
+<a href="#9641" id="9641">9641</a>
+<a href="#9642" id="9642">9642</a>
+<a href="#9643" id="9643">9643</a>
+<a href="#9644" id="9644">9644</a>
+<a href="#9645" id="9645">9645</a>
+<a href="#9646" id="9646">9646</a>
+<a href="#9647" id="9647">9647</a>
+<a href="#9648" id="9648">9648</a>
+<a href="#9649" id="9649">9649</a>
+<a href="#9650" id="9650">9650</a>
+<a href="#9651" id="9651">9651</a>
+<a href="#9652" id="9652">9652</a>
+<a href="#9653" id="9653">9653</a>
+<a href="#9654" id="9654">9654</a>
+<a href="#9655" id="9655">9655</a>
+<a href="#9656" id="9656">9656</a>
+<a href="#9657" id="9657">9657</a>
+<a href="#9658" id="9658">9658</a>
+<a href="#9659" id="9659">9659</a>
+<a href="#9660" id="9660">9660</a>
+<a href="#9661" id="9661">9661</a>
+<a href="#9662" id="9662">9662</a>
+<a href="#9663" id="9663">9663</a>
+<a href="#9664" id="9664">9664</a>
+<a href="#9665" id="9665">9665</a>
+<a href="#9666" id="9666">9666</a>
+<a href="#9667" id="9667">9667</a>
+<a href="#9668" id="9668">9668</a>
+<a href="#9669" id="9669">9669</a>
+<a href="#9670" id="9670">9670</a>
+<a href="#9671" id="9671">9671</a>
+<a href="#9672" id="9672">9672</a>
+<a href="#9673" id="9673">9673</a>
+<a href="#9674" id="9674">9674</a>
+<a href="#9675" id="9675">9675</a>
+<a href="#9676" id="9676">9676</a>
+<a href="#9677" id="9677">9677</a>
+<a href="#9678" id="9678">9678</a>
+<a href="#9679" id="9679">9679</a>
+<a href="#9680" id="9680">9680</a>
+<a href="#9681" id="9681">9681</a>
+<a href="#9682" id="9682">9682</a>
+<a href="#9683" id="9683">9683</a>
+<a href="#9684" id="9684">9684</a>
+<a href="#9685" id="9685">9685</a>
+<a href="#9686" id="9686">9686</a>
+<a href="#9687" id="9687">9687</a>
+<a href="#9688" id="9688">9688</a>
+<a href="#9689" id="9689">9689</a>
+<a href="#9690" id="9690">9690</a>
+<a href="#9691" id="9691">9691</a>
+<a href="#9692" id="9692">9692</a>
+<a href="#9693" id="9693">9693</a>
+<a href="#9694" id="9694">9694</a>
+<a href="#9695" id="9695">9695</a>
+<a href="#9696" id="9696">9696</a>
+<a href="#9697" id="9697">9697</a>
+<a href="#9698" id="9698">9698</a>
+<a href="#9699" id="9699">9699</a>
+<a href="#9700" id="9700">9700</a>
+<a href="#9701" id="9701">9701</a>
+<a href="#9702" id="9702">9702</a>
+<a href="#9703" id="9703">9703</a>
+<a href="#9704" id="9704">9704</a>
+<a href="#9705" id="9705">9705</a>
+<a href="#9706" id="9706">9706</a>
+<a href="#9707" id="9707">9707</a>
+<a href="#9708" id="9708">9708</a>
+<a href="#9709" id="9709">9709</a>
+<a href="#9710" id="9710">9710</a>
+<a href="#9711" id="9711">9711</a>
+<a href="#9712" id="9712">9712</a>
+<a href="#9713" id="9713">9713</a>
+<a href="#9714" id="9714">9714</a>
+<a href="#9715" id="9715">9715</a>
+<a href="#9716" id="9716">9716</a>
+<a href="#9717" id="9717">9717</a>
+<a href="#9718" id="9718">9718</a>
+<a href="#9719" id="9719">9719</a>
+<a href="#9720" id="9720">9720</a>
+<a href="#9721" id="9721">9721</a>
+<a href="#9722" id="9722">9722</a>
+<a href="#9723" id="9723">9723</a>
+<a href="#9724" id="9724">9724</a>
+<a href="#9725" id="9725">9725</a>
+<a href="#9726" id="9726">9726</a>
+<a href="#9727" id="9727">9727</a>
+<a href="#9728" id="9728">9728</a>
+<a href="#9729" id="9729">9729</a>
+<a href="#9730" id="9730">9730</a>
+<a href="#9731" id="9731">9731</a>
+<a href="#9732" id="9732">9732</a>
+<a href="#9733" id="9733">9733</a>
+<a href="#9734" id="9734">9734</a>
+<a href="#9735" id="9735">9735</a>
+<a href="#9736" id="9736">9736</a>
+<a href="#9737" id="9737">9737</a>
+<a href="#9738" id="9738">9738</a>
+<a href="#9739" id="9739">9739</a>
+<a href="#9740" id="9740">9740</a>
+<a href="#9741" id="9741">9741</a>
+<a href="#9742" id="9742">9742</a>
+<a href="#9743" id="9743">9743</a>
+<a href="#9744" id="9744">9744</a>
+<a href="#9745" id="9745">9745</a>
+<a href="#9746" id="9746">9746</a>
+<a href="#9747" id="9747">9747</a>
+<a href="#9748" id="9748">9748</a>
+<a href="#9749" id="9749">9749</a>
+<a href="#9750" id="9750">9750</a>
+<a href="#9751" id="9751">9751</a>
+<a href="#9752" id="9752">9752</a>
+<a href="#9753" id="9753">9753</a>
+<a href="#9754" id="9754">9754</a>
+<a href="#9755" id="9755">9755</a>
+<a href="#9756" id="9756">9756</a>
+<a href="#9757" id="9757">9757</a>
+<a href="#9758" id="9758">9758</a>
+<a href="#9759" id="9759">9759</a>
+<a href="#9760" id="9760">9760</a>
+<a href="#9761" id="9761">9761</a>
+<a href="#9762" id="9762">9762</a>
+<a href="#9763" id="9763">9763</a>
+<a href="#9764" id="9764">9764</a>
+<a href="#9765" id="9765">9765</a>
+<a href="#9766" id="9766">9766</a>
+<a href="#9767" id="9767">9767</a>
+<a href="#9768" id="9768">9768</a>
+<a href="#9769" id="9769">9769</a>
+<a href="#9770" id="9770">9770</a>
+<a href="#9771" id="9771">9771</a>
+<a href="#9772" id="9772">9772</a>
+<a href="#9773" id="9773">9773</a>
+<a href="#9774" id="9774">9774</a>
+<a href="#9775" id="9775">9775</a>
+<a href="#9776" id="9776">9776</a>
+<a href="#9777" id="9777">9777</a>
+<a href="#9778" id="9778">9778</a>
+<a href="#9779" id="9779">9779</a>
+<a href="#9780" id="9780">9780</a>
+<a href="#9781" id="9781">9781</a>
+<a href="#9782" id="9782">9782</a>
+<a href="#9783" id="9783">9783</a>
+<a href="#9784" id="9784">9784</a>
+<a href="#9785" id="9785">9785</a>
+<a href="#9786" id="9786">9786</a>
+<a href="#9787" id="9787">9787</a>
+<a href="#9788" id="9788">9788</a>
+<a href="#9789" id="9789">9789</a>
+<a href="#9790" id="9790">9790</a>
+<a href="#9791" id="9791">9791</a>
+<a href="#9792" id="9792">9792</a>
+<a href="#9793" id="9793">9793</a>
+<a href="#9794" id="9794">9794</a>
+<a href="#9795" id="9795">9795</a>
+<a href="#9796" id="9796">9796</a>
+<a href="#9797" id="9797">9797</a>
+<a href="#9798" id="9798">9798</a>
+<a href="#9799" id="9799">9799</a>
+<a href="#9800" id="9800">9800</a>
+<a href="#9801" id="9801">9801</a>
+<a href="#9802" id="9802">9802</a>
+<a href="#9803" id="9803">9803</a>
+<a href="#9804" id="9804">9804</a>
+<a href="#9805" id="9805">9805</a>
+<a href="#9806" id="9806">9806</a>
+<a href="#9807" id="9807">9807</a>
+<a href="#9808" id="9808">9808</a>
+<a href="#9809" id="9809">9809</a>
+<a href="#9810" id="9810">9810</a>
+<a href="#9811" id="9811">9811</a>
+<a href="#9812" id="9812">9812</a>
+<a href="#9813" id="9813">9813</a>
+<a href="#9814" id="9814">9814</a>
+<a href="#9815" id="9815">9815</a>
+<a href="#9816" id="9816">9816</a>
+<a href="#9817" id="9817">9817</a>
+<a href="#9818" id="9818">9818</a>
+<a href="#9819" id="9819">9819</a>
+<a href="#9820" id="9820">9820</a>
+<a href="#9821" id="9821">9821</a>
+<a href="#9822" id="9822">9822</a>
+<a href="#9823" id="9823">9823</a>
+<a href="#9824" id="9824">9824</a>
+<a href="#9825" id="9825">9825</a>
+<a href="#9826" id="9826">9826</a>
+<a href="#9827" id="9827">9827</a>
+<a href="#9828" id="9828">9828</a>
+<a href="#9829" id="9829">9829</a>
+<a href="#9830" id="9830">9830</a>
+<a href="#9831" id="9831">9831</a>
+<a href="#9832" id="9832">9832</a>
+<a href="#9833" id="9833">9833</a>
+<a href="#9834" id="9834">9834</a>
+<a href="#9835" id="9835">9835</a>
+<a href="#9836" id="9836">9836</a>
+<a href="#9837" id="9837">9837</a>
+<a href="#9838" id="9838">9838</a>
+<a href="#9839" id="9839">9839</a>
+<a href="#9840" id="9840">9840</a>
+<a href="#9841" id="9841">9841</a>
+<a href="#9842" id="9842">9842</a>
+<a href="#9843" id="9843">9843</a>
+<a href="#9844" id="9844">9844</a>
+<a href="#9845" id="9845">9845</a>
+<a href="#9846" id="9846">9846</a>
+<a href="#9847" id="9847">9847</a>
+<a href="#9848" id="9848">9848</a>
+<a href="#9849" id="9849">9849</a>
+<a href="#9850" id="9850">9850</a>
+<a href="#9851" id="9851">9851</a>
+<a href="#9852" id="9852">9852</a>
+<a href="#9853" id="9853">9853</a>
+<a href="#9854" id="9854">9854</a>
+<a href="#9855" id="9855">9855</a>
+<a href="#9856" id="9856">9856</a>
+<a href="#9857" id="9857">9857</a>
+<a href="#9858" id="9858">9858</a>
+<a href="#9859" id="9859">9859</a>
+<a href="#9860" id="9860">9860</a>
+<a href="#9861" id="9861">9861</a>
+<a href="#9862" id="9862">9862</a>
+<a href="#9863" id="9863">9863</a>
+<a href="#9864" id="9864">9864</a>
+<a href="#9865" id="9865">9865</a>
+<a href="#9866" id="9866">9866</a>
+<a href="#9867" id="9867">9867</a>
+<a href="#9868" id="9868">9868</a>
+<a href="#9869" id="9869">9869</a>
+<a href="#9870" id="9870">9870</a>
+<a href="#9871" id="9871">9871</a>
+<a href="#9872" id="9872">9872</a>
+<a href="#9873" id="9873">9873</a>
+<a href="#9874" id="9874">9874</a>
+<a href="#9875" id="9875">9875</a>
+<a href="#9876" id="9876">9876</a>
+<a href="#9877" id="9877">9877</a>
+<a href="#9878" id="9878">9878</a>
+<a href="#9879" id="9879">9879</a>
+<a href="#9880" id="9880">9880</a>
+<a href="#9881" id="9881">9881</a>
+<a href="#9882" id="9882">9882</a>
+<a href="#9883" id="9883">9883</a>
+<a href="#9884" id="9884">9884</a>
+<a href="#9885" id="9885">9885</a>
+<a href="#9886" id="9886">9886</a>
+<a href="#9887" id="9887">9887</a>
+<a href="#9888" id="9888">9888</a>
+<a href="#9889" id="9889">9889</a>
+<a href="#9890" id="9890">9890</a>
+<a href="#9891" id="9891">9891</a>
+<a href="#9892" id="9892">9892</a>
+<a href="#9893" id="9893">9893</a>
+<a href="#9894" id="9894">9894</a>
+<a href="#9895" id="9895">9895</a>
+<a href="#9896" id="9896">9896</a>
+<a href="#9897" id="9897">9897</a>
+<a href="#9898" id="9898">9898</a>
+<a href="#9899" id="9899">9899</a>
+<a href="#9900" id="9900">9900</a>
+<a href="#9901" id="9901">9901</a>
+<a href="#9902" id="9902">9902</a>
+<a href="#9903" id="9903">9903</a>
+<a href="#9904" id="9904">9904</a>
+<a href="#9905" id="9905">9905</a>
+<a href="#9906" id="9906">9906</a>
+<a href="#9907" id="9907">9907</a>
+<a href="#9908" id="9908">9908</a>
+<a href="#9909" id="9909">9909</a>
+<a href="#9910" id="9910">9910</a>
+<a href="#9911" id="9911">9911</a>
+<a href="#9912" id="9912">9912</a>
+<a href="#9913" id="9913">9913</a>
+<a href="#9914" id="9914">9914</a>
+<a href="#9915" id="9915">9915</a>
+<a href="#9916" id="9916">9916</a>
+<a href="#9917" id="9917">9917</a>
+<a href="#9918" id="9918">9918</a>
+<a href="#9919" id="9919">9919</a>
+<a href="#9920" id="9920">9920</a>
+<a href="#9921" id="9921">9921</a>
+<a href="#9922" id="9922">9922</a>
+<a href="#9923" id="9923">9923</a>
+<a href="#9924" id="9924">9924</a>
+<a href="#9925" id="9925">9925</a>
+<a href="#9926" id="9926">9926</a>
+<a href="#9927" id="9927">9927</a>
+<a href="#9928" id="9928">9928</a>
+<a href="#9929" id="9929">9929</a>
+<a href="#9930" id="9930">9930</a>
+<a href="#9931" id="9931">9931</a>
+<a href="#9932" id="9932">9932</a>
+<a href="#9933" id="9933">9933</a>
+<a href="#9934" id="9934">9934</a>
+<a href="#9935" id="9935">9935</a>
+<a href="#9936" id="9936">9936</a>
+<a href="#9937" id="9937">9937</a>
+<a href="#9938" id="9938">9938</a>
+<a href="#9939" id="9939">9939</a>
+<a href="#9940" id="9940">9940</a>
+<a href="#9941" id="9941">9941</a>
+<a href="#9942" id="9942">9942</a>
+<a href="#9943" id="9943">9943</a>
+<a href="#9944" id="9944">9944</a>
+<a href="#9945" id="9945">9945</a>
+<a href="#9946" id="9946">9946</a>
+<a href="#9947" id="9947">9947</a>
+<a href="#9948" id="9948">9948</a>
+<a href="#9949" id="9949">9949</a>
+<a href="#9950" id="9950">9950</a>
+<a href="#9951" id="9951">9951</a>
+<a href="#9952" id="9952">9952</a>
+<a href="#9953" id="9953">9953</a>
+<a href="#9954" id="9954">9954</a>
+<a href="#9955" id="9955">9955</a>
+<a href="#9956" id="9956">9956</a>
+<a href="#9957" id="9957">9957</a>
+<a href="#9958" id="9958">9958</a>
+<a href="#9959" id="9959">9959</a>
+<a href="#9960" id="9960">9960</a>
+<a href="#9961" id="9961">9961</a>
+<a href="#9962" id="9962">9962</a>
+<a href="#9963" id="9963">9963</a>
+<a href="#9964" id="9964">9964</a>
+<a href="#9965" id="9965">9965</a>
+<a href="#9966" id="9966">9966</a>
+<a href="#9967" id="9967">9967</a>
+<a href="#9968" id="9968">9968</a>
+<a href="#9969" id="9969">9969</a>
+<a href="#9970" id="9970">9970</a>
+<a href="#9971" id="9971">9971</a>
+<a href="#9972" id="9972">9972</a>
+<a href="#9973" id="9973">9973</a>
+<a href="#9974" id="9974">9974</a>
+<a href="#9975" id="9975">9975</a>
+<a href="#9976" id="9976">9976</a>
+<a href="#9977" id="9977">9977</a>
+<a href="#9978" id="9978">9978</a>
+<a href="#9979" id="9979">9979</a>
+<a href="#9980" id="9980">9980</a>
+<a href="#9981" id="9981">9981</a>
+<a href="#9982" id="9982">9982</a>
+<a href="#9983" id="9983">9983</a>
+<a href="#9984" id="9984">9984</a>
+<a href="#9985" id="9985">9985</a>
+<a href="#9986" id="9986">9986</a>
+<a href="#9987" id="9987">9987</a>
+<a href="#9988" id="9988">9988</a>
+<a href="#9989" id="9989">9989</a>
+<a href="#9990" id="9990">9990</a>
+<a href="#9991" id="9991">9991</a>
+<a href="#9992" id="9992">9992</a>
+<a href="#9993" id="9993">9993</a>
+<a href="#9994" id="9994">9994</a>
+<a href="#9995" id="9995">9995</a>
+<a href="#9996" id="9996">9996</a>
+<a href="#9997" id="9997">9997</a>
+<a href="#9998" id="9998">9998</a>
+<a href="#9999" id="9999">9999</a>
+<a href="#10000" id="10000">10000</a>
+<a href="#10001" id="10001">10001</a>
+<a href="#10002" id="10002">10002</a>
+<a href="#10003" id="10003">10003</a>
+<a href="#10004" id="10004">10004</a>
+<a href="#10005" id="10005">10005</a>
+<a href="#10006" id="10006">10006</a>
+<a href="#10007" id="10007">10007</a>
+<a href="#10008" id="10008">10008</a>
+<a href="#10009" id="10009">10009</a>
+<a href="#10010" id="10010">10010</a>
+<a href="#10011" id="10011">10011</a>
+<a href="#10012" id="10012">10012</a>
+<a href="#10013" id="10013">10013</a>
+<a href="#10014" id="10014">10014</a>
+<a href="#10015" id="10015">10015</a>
+<a href="#10016" id="10016">10016</a>
+<a href="#10017" id="10017">10017</a>
+<a href="#10018" id="10018">10018</a>
+<a href="#10019" id="10019">10019</a>
+<a href="#10020" id="10020">10020</a>
+<a href="#10021" id="10021">10021</a>
+<a href="#10022" id="10022">10022</a>
+<a href="#10023" id="10023">10023</a>
+<a href="#10024" id="10024">10024</a>
+<a href="#10025" id="10025">10025</a>
+<a href="#10026" id="10026">10026</a>
+<a href="#10027" id="10027">10027</a>
+<a href="#10028" id="10028">10028</a>
+<a href="#10029" id="10029">10029</a>
+<a href="#10030" id="10030">10030</a>
+<a href="#10031" id="10031">10031</a>
+<a href="#10032" id="10032">10032</a>
+<a href="#10033" id="10033">10033</a>
+<a href="#10034" id="10034">10034</a>
+<a href="#10035" id="10035">10035</a>
+<a href="#10036" id="10036">10036</a>
+<a href="#10037" id="10037">10037</a>
+<a href="#10038" id="10038">10038</a>
+<a href="#10039" id="10039">10039</a>
+<a href="#10040" id="10040">10040</a>
+<a href="#10041" id="10041">10041</a>
+<a href="#10042" id="10042">10042</a>
+<a href="#10043" id="10043">10043</a>
+<a href="#10044" id="10044">10044</a>
+<a href="#10045" id="10045">10045</a>
+<a href="#10046" id="10046">10046</a>
+<a href="#10047" id="10047">10047</a>
+<a href="#10048" id="10048">10048</a>
+<a href="#10049" id="10049">10049</a>
+<a href="#10050" id="10050">10050</a>
+<a href="#10051" id="10051">10051</a>
+<a href="#10052" id="10052">10052</a>
+<a href="#10053" id="10053">10053</a>
+<a href="#10054" id="10054">10054</a>
+<a href="#10055" id="10055">10055</a>
+<a href="#10056" id="10056">10056</a>
+<a href="#10057" id="10057">10057</a>
+<a href="#10058" id="10058">10058</a>
+<a href="#10059" id="10059">10059</a>
+<a href="#10060" id="10060">10060</a>
+<a href="#10061" id="10061">10061</a>
+<a href="#10062" id="10062">10062</a>
+<a href="#10063" id="10063">10063</a>
+<a href="#10064" id="10064">10064</a>
+<a href="#10065" id="10065">10065</a>
+<a href="#10066" id="10066">10066</a>
+<a href="#10067" id="10067">10067</a>
+<a href="#10068" id="10068">10068</a>
+<a href="#10069" id="10069">10069</a>
+<a href="#10070" id="10070">10070</a>
+<a href="#10071" id="10071">10071</a>
+<a href="#10072" id="10072">10072</a>
+<a href="#10073" id="10073">10073</a>
+<a href="#10074" id="10074">10074</a>
+<a href="#10075" id="10075">10075</a>
+<a href="#10076" id="10076">10076</a>
+<a href="#10077" id="10077">10077</a>
+<a href="#10078" id="10078">10078</a>
+<a href="#10079" id="10079">10079</a>
+<a href="#10080" id="10080">10080</a>
+<a href="#10081" id="10081">10081</a>
+<a href="#10082" id="10082">10082</a>
+<a href="#10083" id="10083">10083</a>
+<a href="#10084" id="10084">10084</a>
+<a href="#10085" id="10085">10085</a>
+<a href="#10086" id="10086">10086</a>
+<a href="#10087" id="10087">10087</a>
+<a href="#10088" id="10088">10088</a>
+<a href="#10089" id="10089">10089</a>
+<a href="#10090" id="10090">10090</a>
+<a href="#10091" id="10091">10091</a>
+<a href="#10092" id="10092">10092</a>
+<a href="#10093" id="10093">10093</a>
+<a href="#10094" id="10094">10094</a>
+<a href="#10095" id="10095">10095</a>
+<a href="#10096" id="10096">10096</a>
+<a href="#10097" id="10097">10097</a>
+<a href="#10098" id="10098">10098</a>
+<a href="#10099" id="10099">10099</a>
+<a href="#10100" id="10100">10100</a>
+<a href="#10101" id="10101">10101</a>
+<a href="#10102" id="10102">10102</a>
+<a href="#10103" id="10103">10103</a>
+<a href="#10104" id="10104">10104</a>
+<a href="#10105" id="10105">10105</a>
+<a href="#10106" id="10106">10106</a>
+<a href="#10107" id="10107">10107</a>
+<a href="#10108" id="10108">10108</a>
+<a href="#10109" id="10109">10109</a>
+<a href="#10110" id="10110">10110</a>
+<a href="#10111" id="10111">10111</a>
+<a href="#10112" id="10112">10112</a>
+<a href="#10113" id="10113">10113</a>
+<a href="#10114" id="10114">10114</a>
+<a href="#10115" id="10115">10115</a>
+<a href="#10116" id="10116">10116</a>
+<a href="#10117" id="10117">10117</a>
+<a href="#10118" id="10118">10118</a>
+<a href="#10119" id="10119">10119</a>
+<a href="#10120" id="10120">10120</a>
+<a href="#10121" id="10121">10121</a>
+<a href="#10122" id="10122">10122</a>
+<a href="#10123" id="10123">10123</a>
+<a href="#10124" id="10124">10124</a>
+<a href="#10125" id="10125">10125</a>
+<a href="#10126" id="10126">10126</a>
+<a href="#10127" id="10127">10127</a>
+<a href="#10128" id="10128">10128</a>
+<a href="#10129" id="10129">10129</a>
+<a href="#10130" id="10130">10130</a>
+<a href="#10131" id="10131">10131</a>
+<a href="#10132" id="10132">10132</a>
+<a href="#10133" id="10133">10133</a>
+<a href="#10134" id="10134">10134</a>
+<a href="#10135" id="10135">10135</a>
+<a href="#10136" id="10136">10136</a>
+<a href="#10137" id="10137">10137</a>
+<a href="#10138" id="10138">10138</a>
+<a href="#10139" id="10139">10139</a>
+<a href="#10140" id="10140">10140</a>
+<a href="#10141" id="10141">10141</a>
+<a href="#10142" id="10142">10142</a>
+<a href="#10143" id="10143">10143</a>
+<a href="#10144" id="10144">10144</a>
+<a href="#10145" id="10145">10145</a>
+<a href="#10146" id="10146">10146</a>
+<a href="#10147" id="10147">10147</a>
+<a href="#10148" id="10148">10148</a>
+<a href="#10149" id="10149">10149</a>
+<a href="#10150" id="10150">10150</a>
+<a href="#10151" id="10151">10151</a>
+<a href="#10152" id="10152">10152</a>
+<a href="#10153" id="10153">10153</a>
+<a href="#10154" id="10154">10154</a>
+<a href="#10155" id="10155">10155</a>
+<a href="#10156" id="10156">10156</a>
+<a href="#10157" id="10157">10157</a>
+<a href="#10158" id="10158">10158</a>
+<a href="#10159" id="10159">10159</a>
+<a href="#10160" id="10160">10160</a>
+<a href="#10161" id="10161">10161</a>
+<a href="#10162" id="10162">10162</a>
+<a href="#10163" id="10163">10163</a>
+<a href="#10164" id="10164">10164</a>
+<a href="#10165" id="10165">10165</a>
+<a href="#10166" id="10166">10166</a>
+<a href="#10167" id="10167">10167</a>
+<a href="#10168" id="10168">10168</a>
+<a href="#10169" id="10169">10169</a>
+<a href="#10170" id="10170">10170</a>
+<a href="#10171" id="10171">10171</a>
+<a href="#10172" id="10172">10172</a>
+<a href="#10173" id="10173">10173</a>
+<a href="#10174" id="10174">10174</a>
+<a href="#10175" id="10175">10175</a>
+<a href="#10176" id="10176">10176</a>
+<a href="#10177" id="10177">10177</a>
+<a href="#10178" id="10178">10178</a>
+<a href="#10179" id="10179">10179</a>
+<a href="#10180" id="10180">10180</a>
+<a href="#10181" id="10181">10181</a>
+<a href="#10182" id="10182">10182</a>
+<a href="#10183" id="10183">10183</a>
+<a href="#10184" id="10184">10184</a>
+<a href="#10185" id="10185">10185</a>
+<a href="#10186" id="10186">10186</a>
+<a href="#10187" id="10187">10187</a>
+<a href="#10188" id="10188">10188</a>
+<a href="#10189" id="10189">10189</a>
+<a href="#10190" id="10190">10190</a>
+<a href="#10191" id="10191">10191</a>
+<a href="#10192" id="10192">10192</a>
+<a href="#10193" id="10193">10193</a>
+<a href="#10194" id="10194">10194</a>
+<a href="#10195" id="10195">10195</a>
+<a href="#10196" id="10196">10196</a>
+<a href="#10197" id="10197">10197</a>
+<a href="#10198" id="10198">10198</a>
+<a href="#10199" id="10199">10199</a>
+<a href="#10200" id="10200">10200</a>
+<a href="#10201" id="10201">10201</a>
+<a href="#10202" id="10202">10202</a>
+<a href="#10203" id="10203">10203</a>
+<a href="#10204" id="10204">10204</a>
+<a href="#10205" id="10205">10205</a>
+<a href="#10206" id="10206">10206</a>
+<a href="#10207" id="10207">10207</a>
+<a href="#10208" id="10208">10208</a>
+<a href="#10209" id="10209">10209</a>
+<a href="#10210" id="10210">10210</a>
+<a href="#10211" id="10211">10211</a>
+<a href="#10212" id="10212">10212</a>
+<a href="#10213" id="10213">10213</a>
+<a href="#10214" id="10214">10214</a>
+<a href="#10215" id="10215">10215</a>
+<a href="#10216" id="10216">10216</a>
+<a href="#10217" id="10217">10217</a>
+<a href="#10218" id="10218">10218</a>
+<a href="#10219" id="10219">10219</a>
+<a href="#10220" id="10220">10220</a>
+<a href="#10221" id="10221">10221</a>
+<a href="#10222" id="10222">10222</a>
+<a href="#10223" id="10223">10223</a>
+<a href="#10224" id="10224">10224</a>
+<a href="#10225" id="10225">10225</a>
+<a href="#10226" id="10226">10226</a>
+<a href="#10227" id="10227">10227</a>
+<a href="#10228" id="10228">10228</a>
+<a href="#10229" id="10229">10229</a>
+<a href="#10230" id="10230">10230</a>
+<a href="#10231" id="10231">10231</a>
+<a href="#10232" id="10232">10232</a>
+<a href="#10233" id="10233">10233</a>
+<a href="#10234" id="10234">10234</a>
+<a href="#10235" id="10235">10235</a>
+<a href="#10236" id="10236">10236</a>
+<a href="#10237" id="10237">10237</a>
+<a href="#10238" id="10238">10238</a>
+<a href="#10239" id="10239">10239</a>
+<a href="#10240" id="10240">10240</a>
+<a href="#10241" id="10241">10241</a>
+<a href="#10242" id="10242">10242</a>
+<a href="#10243" id="10243">10243</a>
+<a href="#10244" id="10244">10244</a>
+<a href="#10245" id="10245">10245</a>
+<a href="#10246" id="10246">10246</a>
+<a href="#10247" id="10247">10247</a>
+<a href="#10248" id="10248">10248</a>
+<a href="#10249" id="10249">10249</a>
+<a href="#10250" id="10250">10250</a>
+<a href="#10251" id="10251">10251</a>
+<a href="#10252" id="10252">10252</a>
+<a href="#10253" id="10253">10253</a>
+<a href="#10254" id="10254">10254</a>
+<a href="#10255" id="10255">10255</a>
+<a href="#10256" id="10256">10256</a>
+<a href="#10257" id="10257">10257</a>
+<a href="#10258" id="10258">10258</a>
+<a href="#10259" id="10259">10259</a>
+<a href="#10260" id="10260">10260</a>
+<a href="#10261" id="10261">10261</a>
+<a href="#10262" id="10262">10262</a>
+<a href="#10263" id="10263">10263</a>
+<a href="#10264" id="10264">10264</a>
+<a href="#10265" id="10265">10265</a>
+<a href="#10266" id="10266">10266</a>
+<a href="#10267" id="10267">10267</a>
+<a href="#10268" id="10268">10268</a>
+<a href="#10269" id="10269">10269</a>
+<a href="#10270" id="10270">10270</a>
+<a href="#10271" id="10271">10271</a>
+<a href="#10272" id="10272">10272</a>
+<a href="#10273" id="10273">10273</a>
+<a href="#10274" id="10274">10274</a>
+<a href="#10275" id="10275">10275</a>
+<a href="#10276" id="10276">10276</a>
+<a href="#10277" id="10277">10277</a>
+<a href="#10278" id="10278">10278</a>
+<a href="#10279" id="10279">10279</a>
+<a href="#10280" id="10280">10280</a>
+<a href="#10281" id="10281">10281</a>
+<a href="#10282" id="10282">10282</a>
+<a href="#10283" id="10283">10283</a>
+<a href="#10284" id="10284">10284</a>
+<a href="#10285" id="10285">10285</a>
+<a href="#10286" id="10286">10286</a>
+<a href="#10287" id="10287">10287</a>
+<a href="#10288" id="10288">10288</a>
+<a href="#10289" id="10289">10289</a>
+<a href="#10290" id="10290">10290</a>
+<a href="#10291" id="10291">10291</a>
+<a href="#10292" id="10292">10292</a>
+<a href="#10293" id="10293">10293</a>
+<a href="#10294" id="10294">10294</a>
+<a href="#10295" id="10295">10295</a>
+<a href="#10296" id="10296">10296</a>
+<a href="#10297" id="10297">10297</a>
+<a href="#10298" id="10298">10298</a>
+<a href="#10299" id="10299">10299</a>
+<a href="#10300" id="10300">10300</a>
+<a href="#10301" id="10301">10301</a>
+<a href="#10302" id="10302">10302</a>
+<a href="#10303" id="10303">10303</a>
+<a href="#10304" id="10304">10304</a>
+<a href="#10305" id="10305">10305</a>
+<a href="#10306" id="10306">10306</a>
+<a href="#10307" id="10307">10307</a>
+<a href="#10308" id="10308">10308</a>
+<a href="#10309" id="10309">10309</a>
+<a href="#10310" id="10310">10310</a>
+<a href="#10311" id="10311">10311</a>
+<a href="#10312" id="10312">10312</a>
+<a href="#10313" id="10313">10313</a>
+<a href="#10314" id="10314">10314</a>
+<a href="#10315" id="10315">10315</a>
+<a href="#10316" id="10316">10316</a>
+<a href="#10317" id="10317">10317</a>
+<a href="#10318" id="10318">10318</a>
+<a href="#10319" id="10319">10319</a>
+<a href="#10320" id="10320">10320</a>
+<a href="#10321" id="10321">10321</a>
+<a href="#10322" id="10322">10322</a>
+<a href="#10323" id="10323">10323</a>
+<a href="#10324" id="10324">10324</a>
+<a href="#10325" id="10325">10325</a>
+<a href="#10326" id="10326">10326</a>
+<a href="#10327" id="10327">10327</a>
+<a href="#10328" id="10328">10328</a>
+<a href="#10329" id="10329">10329</a>
+<a href="#10330" id="10330">10330</a>
+<a href="#10331" id="10331">10331</a>
+<a href="#10332" id="10332">10332</a>
+<a href="#10333" id="10333">10333</a>
+<a href="#10334" id="10334">10334</a>
+<a href="#10335" id="10335">10335</a>
+<a href="#10336" id="10336">10336</a>
+<a href="#10337" id="10337">10337</a>
+<a href="#10338" id="10338">10338</a>
+<a href="#10339" id="10339">10339</a>
+<a href="#10340" id="10340">10340</a>
+<a href="#10341" id="10341">10341</a>
+<a href="#10342" id="10342">10342</a>
+<a href="#10343" id="10343">10343</a>
+<a href="#10344" id="10344">10344</a>
+<a href="#10345" id="10345">10345</a>
+<a href="#10346" id="10346">10346</a>
+<a href="#10347" id="10347">10347</a>
+<a href="#10348" id="10348">10348</a>
+<a href="#10349" id="10349">10349</a>
+<a href="#10350" id="10350">10350</a>
+<a href="#10351" id="10351">10351</a>
+<a href="#10352" id="10352">10352</a>
+<a href="#10353" id="10353">10353</a>
+<a href="#10354" id="10354">10354</a>
+<a href="#10355" id="10355">10355</a>
+<a href="#10356" id="10356">10356</a>
+<a href="#10357" id="10357">10357</a>
+<a href="#10358" id="10358">10358</a>
+<a href="#10359" id="10359">10359</a>
+<a href="#10360" id="10360">10360</a>
+<a href="#10361" id="10361">10361</a>
+<a href="#10362" id="10362">10362</a>
+<a href="#10363" id="10363">10363</a>
+<a href="#10364" id="10364">10364</a>
+<a href="#10365" id="10365">10365</a>
+<a href="#10366" id="10366">10366</a>
+<a href="#10367" id="10367">10367</a>
+<a href="#10368" id="10368">10368</a>
+<a href="#10369" id="10369">10369</a>
+<a href="#10370" id="10370">10370</a>
+<a href="#10371" id="10371">10371</a>
+<a href="#10372" id="10372">10372</a>
+<a href="#10373" id="10373">10373</a>
+<a href="#10374" id="10374">10374</a>
+<a href="#10375" id="10375">10375</a>
+<a href="#10376" id="10376">10376</a>
+<a href="#10377" id="10377">10377</a>
+<a href="#10378" id="10378">10378</a>
+<a href="#10379" id="10379">10379</a>
+<a href="#10380" id="10380">10380</a>
+<a href="#10381" id="10381">10381</a>
+<a href="#10382" id="10382">10382</a>
+<a href="#10383" id="10383">10383</a>
+<a href="#10384" id="10384">10384</a>
+<a href="#10385" id="10385">10385</a>
+<a href="#10386" id="10386">10386</a>
+<a href="#10387" id="10387">10387</a>
+<a href="#10388" id="10388">10388</a>
+<a href="#10389" id="10389">10389</a>
+<a href="#10390" id="10390">10390</a>
+<a href="#10391" id="10391">10391</a>
+<a href="#10392" id="10392">10392</a>
+<a href="#10393" id="10393">10393</a>
+<a href="#10394" id="10394">10394</a>
+<a href="#10395" id="10395">10395</a>
+<a href="#10396" id="10396">10396</a>
+<a href="#10397" id="10397">10397</a>
+<a href="#10398" id="10398">10398</a>
+<a href="#10399" id="10399">10399</a>
+<a href="#10400" id="10400">10400</a>
+<a href="#10401" id="10401">10401</a>
+<a href="#10402" id="10402">10402</a>
+<a href="#10403" id="10403">10403</a>
+<a href="#10404" id="10404">10404</a>
+<a href="#10405" id="10405">10405</a>
+<a href="#10406" id="10406">10406</a>
+<a href="#10407" id="10407">10407</a>
+<a href="#10408" id="10408">10408</a>
+<a href="#10409" id="10409">10409</a>
+<a href="#10410" id="10410">10410</a>
+<a href="#10411" id="10411">10411</a>
+<a href="#10412" id="10412">10412</a>
+<a href="#10413" id="10413">10413</a>
+<a href="#10414" id="10414">10414</a>
+<a href="#10415" id="10415">10415</a>
+<a href="#10416" id="10416">10416</a>
+<a href="#10417" id="10417">10417</a>
+<a href="#10418" id="10418">10418</a>
+<a href="#10419" id="10419">10419</a>
+<a href="#10420" id="10420">10420</a>
+<a href="#10421" id="10421">10421</a>
+<a href="#10422" id="10422">10422</a>
+<a href="#10423" id="10423">10423</a>
+<a href="#10424" id="10424">10424</a>
+<a href="#10425" id="10425">10425</a>
+<a href="#10426" id="10426">10426</a>
+<a href="#10427" id="10427">10427</a>
+<a href="#10428" id="10428">10428</a>
+<a href="#10429" id="10429">10429</a>
+<a href="#10430" id="10430">10430</a>
+<a href="#10431" id="10431">10431</a>
+<a href="#10432" id="10432">10432</a>
+<a href="#10433" id="10433">10433</a>
+<a href="#10434" id="10434">10434</a>
+<a href="#10435" id="10435">10435</a>
+<a href="#10436" id="10436">10436</a>
+<a href="#10437" id="10437">10437</a>
+<a href="#10438" id="10438">10438</a>
+<a href="#10439" id="10439">10439</a>
+<a href="#10440" id="10440">10440</a>
+<a href="#10441" id="10441">10441</a>
+<a href="#10442" id="10442">10442</a>
+<a href="#10443" id="10443">10443</a>
+<a href="#10444" id="10444">10444</a>
+<a href="#10445" id="10445">10445</a>
+<a href="#10446" id="10446">10446</a>
+<a href="#10447" id="10447">10447</a>
+<a href="#10448" id="10448">10448</a>
+<a href="#10449" id="10449">10449</a>
+<a href="#10450" id="10450">10450</a>
+<a href="#10451" id="10451">10451</a>
+<a href="#10452" id="10452">10452</a>
+<a href="#10453" id="10453">10453</a>
+<a href="#10454" id="10454">10454</a>
+<a href="#10455" id="10455">10455</a>
+<a href="#10456" id="10456">10456</a>
+<a href="#10457" id="10457">10457</a>
+<a href="#10458" id="10458">10458</a>
+<a href="#10459" id="10459">10459</a>
+<a href="#10460" id="10460">10460</a>
+<a href="#10461" id="10461">10461</a>
+<a href="#10462" id="10462">10462</a>
+<a href="#10463" id="10463">10463</a>
+<a href="#10464" id="10464">10464</a>
+<a href="#10465" id="10465">10465</a>
+<a href="#10466" id="10466">10466</a>
+<a href="#10467" id="10467">10467</a>
+<a href="#10468" id="10468">10468</a>
+<a href="#10469" id="10469">10469</a>
+<a href="#10470" id="10470">10470</a>
+<a href="#10471" id="10471">10471</a>
+<a href="#10472" id="10472">10472</a>
+<a href="#10473" id="10473">10473</a>
+<a href="#10474" id="10474">10474</a>
+<a href="#10475" id="10475">10475</a>
+<a href="#10476" id="10476">10476</a>
+<a href="#10477" id="10477">10477</a>
+<a href="#10478" id="10478">10478</a>
+<a href="#10479" id="10479">10479</a>
+<a href="#10480" id="10480">10480</a>
+<a href="#10481" id="10481">10481</a>
+<a href="#10482" id="10482">10482</a>
+<a href="#10483" id="10483">10483</a>
+<a href="#10484" id="10484">10484</a>
+<a href="#10485" id="10485">10485</a>
+<a href="#10486" id="10486">10486</a>
+<a href="#10487" id="10487">10487</a>
+<a href="#10488" id="10488">10488</a>
+<a href="#10489" id="10489">10489</a>
+<a href="#10490" id="10490">10490</a>
+<a href="#10491" id="10491">10491</a>
+<a href="#10492" id="10492">10492</a>
+<a href="#10493" id="10493">10493</a>
+<a href="#10494" id="10494">10494</a>
+<a href="#10495" id="10495">10495</a>
+<a href="#10496" id="10496">10496</a>
+<a href="#10497" id="10497">10497</a>
+<a href="#10498" id="10498">10498</a>
+<a href="#10499" id="10499">10499</a>
+<a href="#10500" id="10500">10500</a>
+<a href="#10501" id="10501">10501</a>
+<a href="#10502" id="10502">10502</a>
+<a href="#10503" id="10503">10503</a>
+<a href="#10504" id="10504">10504</a>
+<a href="#10505" id="10505">10505</a>
+<a href="#10506" id="10506">10506</a>
+<a href="#10507" id="10507">10507</a>
+<a href="#10508" id="10508">10508</a>
+<a href="#10509" id="10509">10509</a>
+<a href="#10510" id="10510">10510</a>
+<a href="#10511" id="10511">10511</a>
+<a href="#10512" id="10512">10512</a>
+<a href="#10513" id="10513">10513</a>
+<a href="#10514" id="10514">10514</a>
+<a href="#10515" id="10515">10515</a>
+<a href="#10516" id="10516">10516</a>
+<a href="#10517" id="10517">10517</a>
+<a href="#10518" id="10518">10518</a>
+<a href="#10519" id="10519">10519</a>
+<a href="#10520" id="10520">10520</a>
+<a href="#10521" id="10521">10521</a>
+<a href="#10522" id="10522">10522</a>
+<a href="#10523" id="10523">10523</a>
+<a href="#10524" id="10524">10524</a>
+<a href="#10525" id="10525">10525</a>
+<a href="#10526" id="10526">10526</a>
+<a href="#10527" id="10527">10527</a>
+<a href="#10528" id="10528">10528</a>
+<a href="#10529" id="10529">10529</a>
+<a href="#10530" id="10530">10530</a>
+<a href="#10531" id="10531">10531</a>
+<a href="#10532" id="10532">10532</a>
+<a href="#10533" id="10533">10533</a>
+<a href="#10534" id="10534">10534</a>
+<a href="#10535" id="10535">10535</a>
+<a href="#10536" id="10536">10536</a>
+<a href="#10537" id="10537">10537</a>
+<a href="#10538" id="10538">10538</a>
+<a href="#10539" id="10539">10539</a>
+<a href="#10540" id="10540">10540</a>
+<a href="#10541" id="10541">10541</a>
+<a href="#10542" id="10542">10542</a>
+<a href="#10543" id="10543">10543</a>
+<a href="#10544" id="10544">10544</a>
+<a href="#10545" id="10545">10545</a>
+<a href="#10546" id="10546">10546</a>
+<a href="#10547" id="10547">10547</a>
+<a href="#10548" id="10548">10548</a>
+<a href="#10549" id="10549">10549</a>
+<a href="#10550" id="10550">10550</a>
+<a href="#10551" id="10551">10551</a>
+<a href="#10552" id="10552">10552</a>
+<a href="#10553" id="10553">10553</a>
+<a href="#10554" id="10554">10554</a>
+<a href="#10555" id="10555">10555</a>
+<a href="#10556" id="10556">10556</a>
+<a href="#10557" id="10557">10557</a>
+<a href="#10558" id="10558">10558</a>
+<a href="#10559" id="10559">10559</a>
+<a href="#10560" id="10560">10560</a>
+<a href="#10561" id="10561">10561</a>
+<a href="#10562" id="10562">10562</a>
+<a href="#10563" id="10563">10563</a>
+<a href="#10564" id="10564">10564</a>
+<a href="#10565" id="10565">10565</a>
+<a href="#10566" id="10566">10566</a>
+<a href="#10567" id="10567">10567</a>
+<a href="#10568" id="10568">10568</a>
+<a href="#10569" id="10569">10569</a>
+<a href="#10570" id="10570">10570</a>
+<a href="#10571" id="10571">10571</a>
+<a href="#10572" id="10572">10572</a>
+<a href="#10573" id="10573">10573</a>
+<a href="#10574" id="10574">10574</a>
+<a href="#10575" id="10575">10575</a>
+<a href="#10576" id="10576">10576</a>
+<a href="#10577" id="10577">10577</a>
+<a href="#10578" id="10578">10578</a>
+<a href="#10579" id="10579">10579</a>
+<a href="#10580" id="10580">10580</a>
+<a href="#10581" id="10581">10581</a>
+<a href="#10582" id="10582">10582</a>
+<a href="#10583" id="10583">10583</a>
+<a href="#10584" id="10584">10584</a>
+<a href="#10585" id="10585">10585</a>
+<a href="#10586" id="10586">10586</a>
+<a href="#10587" id="10587">10587</a>
+<a href="#10588" id="10588">10588</a>
+<a href="#10589" id="10589">10589</a>
+<a href="#10590" id="10590">10590</a>
+<a href="#10591" id="10591">10591</a>
+<a href="#10592" id="10592">10592</a>
+<a href="#10593" id="10593">10593</a>
+<a href="#10594" id="10594">10594</a>
+<a href="#10595" id="10595">10595</a>
+<a href="#10596" id="10596">10596</a>
+<a href="#10597" id="10597">10597</a>
+<a href="#10598" id="10598">10598</a>
+<a href="#10599" id="10599">10599</a>
+<a href="#10600" id="10600">10600</a>
+<a href="#10601" id="10601">10601</a>
+<a href="#10602" id="10602">10602</a>
+<a href="#10603" id="10603">10603</a>
+<a href="#10604" id="10604">10604</a>
+<a href="#10605" id="10605">10605</a>
+<a href="#10606" id="10606">10606</a>
+<a href="#10607" id="10607">10607</a>
+<a href="#10608" id="10608">10608</a>
+<a href="#10609" id="10609">10609</a>
+<a href="#10610" id="10610">10610</a>
+<a href="#10611" id="10611">10611</a>
+<a href="#10612" id="10612">10612</a>
+<a href="#10613" id="10613">10613</a>
+<a href="#10614" id="10614">10614</a>
+<a href="#10615" id="10615">10615</a>
+<a href="#10616" id="10616">10616</a>
+<a href="#10617" id="10617">10617</a>
+<a href="#10618" id="10618">10618</a>
+<a href="#10619" id="10619">10619</a>
+<a href="#10620" id="10620">10620</a>
+<a href="#10621" id="10621">10621</a>
+<a href="#10622" id="10622">10622</a>
+<a href="#10623" id="10623">10623</a>
+<a href="#10624" id="10624">10624</a>
+<a href="#10625" id="10625">10625</a>
+<a href="#10626" id="10626">10626</a>
+<a href="#10627" id="10627">10627</a>
+<a href="#10628" id="10628">10628</a>
+<a href="#10629" id="10629">10629</a>
+<a href="#10630" id="10630">10630</a>
+<a href="#10631" id="10631">10631</a>
+<a href="#10632" id="10632">10632</a>
+<a href="#10633" id="10633">10633</a>
+<a href="#10634" id="10634">10634</a>
+<a href="#10635" id="10635">10635</a>
+<a href="#10636" id="10636">10636</a>
+<a href="#10637" id="10637">10637</a>
+<a href="#10638" id="10638">10638</a>
+<a href="#10639" id="10639">10639</a>
+<a href="#10640" id="10640">10640</a>
+<a href="#10641" id="10641">10641</a>
+<a href="#10642" id="10642">10642</a>
+<a href="#10643" id="10643">10643</a>
+<a href="#10644" id="10644">10644</a>
+<a href="#10645" id="10645">10645</a>
+<a href="#10646" id="10646">10646</a>
+<a href="#10647" id="10647">10647</a>
+<a href="#10648" id="10648">10648</a>
+<a href="#10649" id="10649">10649</a>
+<a href="#10650" id="10650">10650</a>
+<a href="#10651" id="10651">10651</a>
+<a href="#10652" id="10652">10652</a>
+<a href="#10653" id="10653">10653</a>
+<a href="#10654" id="10654">10654</a>
+<a href="#10655" id="10655">10655</a>
+<a href="#10656" id="10656">10656</a>
+<a href="#10657" id="10657">10657</a>
+<a href="#10658" id="10658">10658</a>
+<a href="#10659" id="10659">10659</a>
+<a href="#10660" id="10660">10660</a>
+<a href="#10661" id="10661">10661</a>
+<a href="#10662" id="10662">10662</a>
+<a href="#10663" id="10663">10663</a>
+<a href="#10664" id="10664">10664</a>
+<a href="#10665" id="10665">10665</a>
+<a href="#10666" id="10666">10666</a>
+<a href="#10667" id="10667">10667</a>
+<a href="#10668" id="10668">10668</a>
+<a href="#10669" id="10669">10669</a>
+<a href="#10670" id="10670">10670</a>
+<a href="#10671" id="10671">10671</a>
+<a href="#10672" id="10672">10672</a>
+<a href="#10673" id="10673">10673</a>
+<a href="#10674" id="10674">10674</a>
+<a href="#10675" id="10675">10675</a>
+<a href="#10676" id="10676">10676</a>
+<a href="#10677" id="10677">10677</a>
+<a href="#10678" id="10678">10678</a>
+<a href="#10679" id="10679">10679</a>
+<a href="#10680" id="10680">10680</a>
+<a href="#10681" id="10681">10681</a>
+<a href="#10682" id="10682">10682</a>
+<a href="#10683" id="10683">10683</a>
+<a href="#10684" id="10684">10684</a>
+<a href="#10685" id="10685">10685</a>
+<a href="#10686" id="10686">10686</a>
+<a href="#10687" id="10687">10687</a>
+<a href="#10688" id="10688">10688</a>
+<a href="#10689" id="10689">10689</a>
+<a href="#10690" id="10690">10690</a>
+<a href="#10691" id="10691">10691</a>
+<a href="#10692" id="10692">10692</a>
+<a href="#10693" id="10693">10693</a>
+<a href="#10694" id="10694">10694</a>
+<a href="#10695" id="10695">10695</a>
+<a href="#10696" id="10696">10696</a>
+<a href="#10697" id="10697">10697</a>
+<a href="#10698" id="10698">10698</a>
+<a href="#10699" id="10699">10699</a>
+<a href="#10700" id="10700">10700</a>
+<a href="#10701" id="10701">10701</a>
+<a href="#10702" id="10702">10702</a>
+<a href="#10703" id="10703">10703</a>
+<a href="#10704" id="10704">10704</a>
+<a href="#10705" id="10705">10705</a>
+<a href="#10706" id="10706">10706</a>
+<a href="#10707" id="10707">10707</a>
+<a href="#10708" id="10708">10708</a>
+<a href="#10709" id="10709">10709</a>
+<a href="#10710" id="10710">10710</a>
+<a href="#10711" id="10711">10711</a>
+<a href="#10712" id="10712">10712</a>
+<a href="#10713" id="10713">10713</a>
+<a href="#10714" id="10714">10714</a>
+<a href="#10715" id="10715">10715</a>
+<a href="#10716" id="10716">10716</a>
+<a href="#10717" id="10717">10717</a>
+<a href="#10718" id="10718">10718</a>
+<a href="#10719" id="10719">10719</a>
+<a href="#10720" id="10720">10720</a>
+<a href="#10721" id="10721">10721</a>
+<a href="#10722" id="10722">10722</a>
+<a href="#10723" id="10723">10723</a>
+<a href="#10724" id="10724">10724</a>
+<a href="#10725" id="10725">10725</a>
+<a href="#10726" id="10726">10726</a>
+<a href="#10727" id="10727">10727</a>
+<a href="#10728" id="10728">10728</a>
+<a href="#10729" id="10729">10729</a>
+<a href="#10730" id="10730">10730</a>
+<a href="#10731" id="10731">10731</a>
+<a href="#10732" id="10732">10732</a>
+<a href="#10733" id="10733">10733</a>
+<a href="#10734" id="10734">10734</a>
+<a href="#10735" id="10735">10735</a>
+<a href="#10736" id="10736">10736</a>
+<a href="#10737" id="10737">10737</a>
+<a href="#10738" id="10738">10738</a>
+<a href="#10739" id="10739">10739</a>
+<a href="#10740" id="10740">10740</a>
+<a href="#10741" id="10741">10741</a>
+<a href="#10742" id="10742">10742</a>
+<a href="#10743" id="10743">10743</a>
+<a href="#10744" id="10744">10744</a>
+<a href="#10745" id="10745">10745</a>
+<a href="#10746" id="10746">10746</a>
+<a href="#10747" id="10747">10747</a>
+<a href="#10748" id="10748">10748</a>
+<a href="#10749" id="10749">10749</a>
+<a href="#10750" id="10750">10750</a>
+<a href="#10751" id="10751">10751</a>
+<a href="#10752" id="10752">10752</a>
+<a href="#10753" id="10753">10753</a>
+<a href="#10754" id="10754">10754</a>
+<a href="#10755" id="10755">10755</a>
+<a href="#10756" id="10756">10756</a>
+<a href="#10757" id="10757">10757</a>
+<a href="#10758" id="10758">10758</a>
+<a href="#10759" id="10759">10759</a>
+<a href="#10760" id="10760">10760</a>
+<a href="#10761" id="10761">10761</a>
+<a href="#10762" id="10762">10762</a>
+<a href="#10763" id="10763">10763</a>
+<a href="#10764" id="10764">10764</a>
+<a href="#10765" id="10765">10765</a>
+<a href="#10766" id="10766">10766</a>
+<a href="#10767" id="10767">10767</a>
+<a href="#10768" id="10768">10768</a>
+<a href="#10769" id="10769">10769</a>
+<a href="#10770" id="10770">10770</a>
+<a href="#10771" id="10771">10771</a>
+<a href="#10772" id="10772">10772</a>
+<a href="#10773" id="10773">10773</a>
+<a href="#10774" id="10774">10774</a>
+<a href="#10775" id="10775">10775</a>
+<a href="#10776" id="10776">10776</a>
+<a href="#10777" id="10777">10777</a>
+<a href="#10778" id="10778">10778</a>
+<a href="#10779" id="10779">10779</a>
+<a href="#10780" id="10780">10780</a>
+<a href="#10781" id="10781">10781</a>
+<a href="#10782" id="10782">10782</a>
+<a href="#10783" id="10783">10783</a>
+<a href="#10784" id="10784">10784</a>
+<a href="#10785" id="10785">10785</a>
+<a href="#10786" id="10786">10786</a>
+<a href="#10787" id="10787">10787</a>
+<a href="#10788" id="10788">10788</a>
+<a href="#10789" id="10789">10789</a>
+<a href="#10790" id="10790">10790</a>
+<a href="#10791" id="10791">10791</a>
+<a href="#10792" id="10792">10792</a>
+<a href="#10793" id="10793">10793</a>
+<a href="#10794" id="10794">10794</a>
+<a href="#10795" id="10795">10795</a>
+<a href="#10796" id="10796">10796</a>
+<a href="#10797" id="10797">10797</a>
+<a href="#10798" id="10798">10798</a>
+<a href="#10799" id="10799">10799</a>
+<a href="#10800" id="10800">10800</a>
+<a href="#10801" id="10801">10801</a>
+<a href="#10802" id="10802">10802</a>
+<a href="#10803" id="10803">10803</a>
+<a href="#10804" id="10804">10804</a>
+<a href="#10805" id="10805">10805</a>
+<a href="#10806" id="10806">10806</a>
+<a href="#10807" id="10807">10807</a>
+<a href="#10808" id="10808">10808</a>
+<a href="#10809" id="10809">10809</a>
+<a href="#10810" id="10810">10810</a>
+<a href="#10811" id="10811">10811</a>
+<a href="#10812" id="10812">10812</a>
+<a href="#10813" id="10813">10813</a>
+<a href="#10814" id="10814">10814</a>
+<a href="#10815" id="10815">10815</a>
+<a href="#10816" id="10816">10816</a>
+<a href="#10817" id="10817">10817</a>
+<a href="#10818" id="10818">10818</a>
+<a href="#10819" id="10819">10819</a>
+<a href="#10820" id="10820">10820</a>
+<a href="#10821" id="10821">10821</a>
+<a href="#10822" id="10822">10822</a>
+<a href="#10823" id="10823">10823</a>
+<a href="#10824" id="10824">10824</a>
+<a href="#10825" id="10825">10825</a>
+<a href="#10826" id="10826">10826</a>
+<a href="#10827" id="10827">10827</a>
+<a href="#10828" id="10828">10828</a>
+<a href="#10829" id="10829">10829</a>
+<a href="#10830" id="10830">10830</a>
+<a href="#10831" id="10831">10831</a>
+<a href="#10832" id="10832">10832</a>
+<a href="#10833" id="10833">10833</a>
+<a href="#10834" id="10834">10834</a>
+<a href="#10835" id="10835">10835</a>
+<a href="#10836" id="10836">10836</a>
+<a href="#10837" id="10837">10837</a>
+<a href="#10838" id="10838">10838</a>
+<a href="#10839" id="10839">10839</a>
+<a href="#10840" id="10840">10840</a>
+<a href="#10841" id="10841">10841</a>
+<a href="#10842" id="10842">10842</a>
+<a href="#10843" id="10843">10843</a>
+<a href="#10844" id="10844">10844</a>
+<a href="#10845" id="10845">10845</a>
+<a href="#10846" id="10846">10846</a>
+<a href="#10847" id="10847">10847</a>
+<a href="#10848" id="10848">10848</a>
+<a href="#10849" id="10849">10849</a>
+<a href="#10850" id="10850">10850</a>
+<a href="#10851" id="10851">10851</a>
+<a href="#10852" id="10852">10852</a>
+<a href="#10853" id="10853">10853</a>
+<a href="#10854" id="10854">10854</a>
+<a href="#10855" id="10855">10855</a>
+<a href="#10856" id="10856">10856</a>
+<a href="#10857" id="10857">10857</a>
+<a href="#10858" id="10858">10858</a>
+<a href="#10859" id="10859">10859</a>
+<a href="#10860" id="10860">10860</a>
+<a href="#10861" id="10861">10861</a>
+<a href="#10862" id="10862">10862</a>
+<a href="#10863" id="10863">10863</a>
+<a href="#10864" id="10864">10864</a>
+<a href="#10865" id="10865">10865</a>
+<a href="#10866" id="10866">10866</a>
+<a href="#10867" id="10867">10867</a>
+<a href="#10868" id="10868">10868</a>
+<a href="#10869" id="10869">10869</a>
+<a href="#10870" id="10870">10870</a>
+<a href="#10871" id="10871">10871</a>
+<a href="#10872" id="10872">10872</a>
+<a href="#10873" id="10873">10873</a>
+<a href="#10874" id="10874">10874</a>
+<a href="#10875" id="10875">10875</a>
+<a href="#10876" id="10876">10876</a>
+<a href="#10877" id="10877">10877</a>
+<a href="#10878" id="10878">10878</a>
+<a href="#10879" id="10879">10879</a>
+<a href="#10880" id="10880">10880</a>
+<a href="#10881" id="10881">10881</a>
+<a href="#10882" id="10882">10882</a>
+<a href="#10883" id="10883">10883</a>
+<a href="#10884" id="10884">10884</a>
+<a href="#10885" id="10885">10885</a>
+<a href="#10886" id="10886">10886</a>
+<a href="#10887" id="10887">10887</a>
+<a href="#10888" id="10888">10888</a>
+<a href="#10889" id="10889">10889</a>
+<a href="#10890" id="10890">10890</a>
+<a href="#10891" id="10891">10891</a>
+<a href="#10892" id="10892">10892</a>
+<a href="#10893" id="10893">10893</a>
+<a href="#10894" id="10894">10894</a>
+<a href="#10895" id="10895">10895</a>
+<a href="#10896" id="10896">10896</a>
+<a href="#10897" id="10897">10897</a>
+<a href="#10898" id="10898">10898</a>
+<a href="#10899" id="10899">10899</a>
+<a href="#10900" id="10900">10900</a>
+<a href="#10901" id="10901">10901</a>
+<a href="#10902" id="10902">10902</a>
+<a href="#10903" id="10903">10903</a>
+<a href="#10904" id="10904">10904</a>
+<a href="#10905" id="10905">10905</a>
+<a href="#10906" id="10906">10906</a>
+<a href="#10907" id="10907">10907</a>
+<a href="#10908" id="10908">10908</a>
+<a href="#10909" id="10909">10909</a>
+<a href="#10910" id="10910">10910</a>
+<a href="#10911" id="10911">10911</a>
+<a href="#10912" id="10912">10912</a>
+<a href="#10913" id="10913">10913</a>
+<a href="#10914" id="10914">10914</a>
+<a href="#10915" id="10915">10915</a>
+<a href="#10916" id="10916">10916</a>
+<a href="#10917" id="10917">10917</a>
+<a href="#10918" id="10918">10918</a>
+<a href="#10919" id="10919">10919</a>
+<a href="#10920" id="10920">10920</a>
+<a href="#10921" id="10921">10921</a>
+<a href="#10922" id="10922">10922</a>
+<a href="#10923" id="10923">10923</a>
+<a href="#10924" id="10924">10924</a>
+<a href="#10925" id="10925">10925</a>
+<a href="#10926" id="10926">10926</a>
+<a href="#10927" id="10927">10927</a>
+<a href="#10928" id="10928">10928</a>
+<a href="#10929" id="10929">10929</a>
+<a href="#10930" id="10930">10930</a>
+<a href="#10931" id="10931">10931</a>
+<a href="#10932" id="10932">10932</a>
+<a href="#10933" id="10933">10933</a>
+<a href="#10934" id="10934">10934</a>
+<a href="#10935" id="10935">10935</a>
+<a href="#10936" id="10936">10936</a>
+<a href="#10937" id="10937">10937</a>
+<a href="#10938" id="10938">10938</a>
+<a href="#10939" id="10939">10939</a>
+<a href="#10940" id="10940">10940</a>
+<a href="#10941" id="10941">10941</a>
+<a href="#10942" id="10942">10942</a>
+<a href="#10943" id="10943">10943</a>
+<a href="#10944" id="10944">10944</a>
+<a href="#10945" id="10945">10945</a>
+<a href="#10946" id="10946">10946</a>
+<a href="#10947" id="10947">10947</a>
+<a href="#10948" id="10948">10948</a>
+<a href="#10949" id="10949">10949</a>
+<a href="#10950" id="10950">10950</a>
+<a href="#10951" id="10951">10951</a>
+<a href="#10952" id="10952">10952</a>
+<a href="#10953" id="10953">10953</a>
+<a href="#10954" id="10954">10954</a>
+<a href="#10955" id="10955">10955</a>
+<a href="#10956" id="10956">10956</a>
+<a href="#10957" id="10957">10957</a>
+<a href="#10958" id="10958">10958</a>
+<a href="#10959" id="10959">10959</a>
+<a href="#10960" id="10960">10960</a>
+<a href="#10961" id="10961">10961</a>
+<a href="#10962" id="10962">10962</a>
+<a href="#10963" id="10963">10963</a>
+<a href="#10964" id="10964">10964</a>
+<a href="#10965" id="10965">10965</a>
+<a href="#10966" id="10966">10966</a>
+<a href="#10967" id="10967">10967</a>
+<a href="#10968" id="10968">10968</a>
+<a href="#10969" id="10969">10969</a>
+<a href="#10970" id="10970">10970</a>
+<a href="#10971" id="10971">10971</a>
+<a href="#10972" id="10972">10972</a>
+<a href="#10973" id="10973">10973</a>
+<a href="#10974" id="10974">10974</a>
+<a href="#10975" id="10975">10975</a>
+<a href="#10976" id="10976">10976</a>
+<a href="#10977" id="10977">10977</a>
+<a href="#10978" id="10978">10978</a>
+<a href="#10979" id="10979">10979</a>
+<a href="#10980" id="10980">10980</a>
+<a href="#10981" id="10981">10981</a>
+<a href="#10982" id="10982">10982</a>
+<a href="#10983" id="10983">10983</a>
+<a href="#10984" id="10984">10984</a>
+<a href="#10985" id="10985">10985</a>
+<a href="#10986" id="10986">10986</a>
+<a href="#10987" id="10987">10987</a>
+<a href="#10988" id="10988">10988</a>
+<a href="#10989" id="10989">10989</a>
+<a href="#10990" id="10990">10990</a>
+<a href="#10991" id="10991">10991</a>
+<a href="#10992" id="10992">10992</a>
+<a href="#10993" id="10993">10993</a>
+<a href="#10994" id="10994">10994</a>
+<a href="#10995" id="10995">10995</a>
+<a href="#10996" id="10996">10996</a>
+<a href="#10997" id="10997">10997</a>
+<a href="#10998" id="10998">10998</a>
+<a href="#10999" id="10999">10999</a>
+<a href="#11000" id="11000">11000</a>
+<a href="#11001" id="11001">11001</a>
+<a href="#11002" id="11002">11002</a>
+<a href="#11003" id="11003">11003</a>
+<a href="#11004" id="11004">11004</a>
+<a href="#11005" id="11005">11005</a>
+<a href="#11006" id="11006">11006</a>
+<a href="#11007" id="11007">11007</a>
+<a href="#11008" id="11008">11008</a>
+<a href="#11009" id="11009">11009</a>
+<a href="#11010" id="11010">11010</a>
+<a href="#11011" id="11011">11011</a>
+<a href="#11012" id="11012">11012</a>
+<a href="#11013" id="11013">11013</a>
+<a href="#11014" id="11014">11014</a>
+<a href="#11015" id="11015">11015</a>
+<a href="#11016" id="11016">11016</a>
+<a href="#11017" id="11017">11017</a>
+<a href="#11018" id="11018">11018</a>
+<a href="#11019" id="11019">11019</a>
+<a href="#11020" id="11020">11020</a>
+<a href="#11021" id="11021">11021</a>
+<a href="#11022" id="11022">11022</a>
+<a href="#11023" id="11023">11023</a>
+<a href="#11024" id="11024">11024</a>
+<a href="#11025" id="11025">11025</a>
+<a href="#11026" id="11026">11026</a>
+<a href="#11027" id="11027">11027</a>
+<a href="#11028" id="11028">11028</a>
+<a href="#11029" id="11029">11029</a>
+<a href="#11030" id="11030">11030</a>
+<a href="#11031" id="11031">11031</a>
+<a href="#11032" id="11032">11032</a>
+<a href="#11033" id="11033">11033</a>
+<a href="#11034" id="11034">11034</a>
+<a href="#11035" id="11035">11035</a>
+<a href="#11036" id="11036">11036</a>
+<a href="#11037" id="11037">11037</a>
+<a href="#11038" id="11038">11038</a>
+<a href="#11039" id="11039">11039</a>
+<a href="#11040" id="11040">11040</a>
+<a href="#11041" id="11041">11041</a>
+<a href="#11042" id="11042">11042</a>
+<a href="#11043" id="11043">11043</a>
+<a href="#11044" id="11044">11044</a>
+<a href="#11045" id="11045">11045</a>
+<a href="#11046" id="11046">11046</a>
+<a href="#11047" id="11047">11047</a>
+<a href="#11048" id="11048">11048</a>
+<a href="#11049" id="11049">11049</a>
+<a href="#11050" id="11050">11050</a>
+<a href="#11051" id="11051">11051</a>
+<a href="#11052" id="11052">11052</a>
+<a href="#11053" id="11053">11053</a>
+<a href="#11054" id="11054">11054</a>
+<a href="#11055" id="11055">11055</a>
+<a href="#11056" id="11056">11056</a>
+<a href="#11057" id="11057">11057</a>
+<a href="#11058" id="11058">11058</a>
+<a href="#11059" id="11059">11059</a>
+<a href="#11060" id="11060">11060</a>
+<a href="#11061" id="11061">11061</a>
+<a href="#11062" id="11062">11062</a>
+<a href="#11063" id="11063">11063</a>
+<a href="#11064" id="11064">11064</a>
+<a href="#11065" id="11065">11065</a>
+<a href="#11066" id="11066">11066</a>
+<a href="#11067" id="11067">11067</a>
+<a href="#11068" id="11068">11068</a>
+<a href="#11069" id="11069">11069</a>
+<a href="#11070" id="11070">11070</a>
+<a href="#11071" id="11071">11071</a>
+<a href="#11072" id="11072">11072</a>
+<a href="#11073" id="11073">11073</a>
+<a href="#11074" id="11074">11074</a>
+<a href="#11075" id="11075">11075</a>
+<a href="#11076" id="11076">11076</a>
+<a href="#11077" id="11077">11077</a>
+<a href="#11078" id="11078">11078</a>
+<a href="#11079" id="11079">11079</a>
+<a href="#11080" id="11080">11080</a>
+<a href="#11081" id="11081">11081</a>
+<a href="#11082" id="11082">11082</a>
+<a href="#11083" id="11083">11083</a>
+<a href="#11084" id="11084">11084</a>
+<a href="#11085" id="11085">11085</a>
+<a href="#11086" id="11086">11086</a>
+<a href="#11087" id="11087">11087</a>
+<a href="#11088" id="11088">11088</a>
+<a href="#11089" id="11089">11089</a>
+<a href="#11090" id="11090">11090</a>
+<a href="#11091" id="11091">11091</a>
+<a href="#11092" id="11092">11092</a>
+<a href="#11093" id="11093">11093</a>
+<a href="#11094" id="11094">11094</a>
+<a href="#11095" id="11095">11095</a>
+<a href="#11096" id="11096">11096</a>
+<a href="#11097" id="11097">11097</a>
+<a href="#11098" id="11098">11098</a>
+<a href="#11099" id="11099">11099</a>
+<a href="#11100" id="11100">11100</a>
+<a href="#11101" id="11101">11101</a>
+<a href="#11102" id="11102">11102</a>
+<a href="#11103" id="11103">11103</a>
+<a href="#11104" id="11104">11104</a>
+<a href="#11105" id="11105">11105</a>
+<a href="#11106" id="11106">11106</a>
+<a href="#11107" id="11107">11107</a>
+<a href="#11108" id="11108">11108</a>
+<a href="#11109" id="11109">11109</a>
+<a href="#11110" id="11110">11110</a>
+<a href="#11111" id="11111">11111</a>
+<a href="#11112" id="11112">11112</a>
+<a href="#11113" id="11113">11113</a>
+<a href="#11114" id="11114">11114</a>
+<a href="#11115" id="11115">11115</a>
+<a href="#11116" id="11116">11116</a>
+<a href="#11117" id="11117">11117</a>
+<a href="#11118" id="11118">11118</a>
+<a href="#11119" id="11119">11119</a>
+<a href="#11120" id="11120">11120</a>
+<a href="#11121" id="11121">11121</a>
+<a href="#11122" id="11122">11122</a>
+<a href="#11123" id="11123">11123</a>
+<a href="#11124" id="11124">11124</a>
+<a href="#11125" id="11125">11125</a>
+<a href="#11126" id="11126">11126</a>
+<a href="#11127" id="11127">11127</a>
+<a href="#11128" id="11128">11128</a>
+<a href="#11129" id="11129">11129</a>
+<a href="#11130" id="11130">11130</a>
+<a href="#11131" id="11131">11131</a>
+<a href="#11132" id="11132">11132</a>
+<a href="#11133" id="11133">11133</a>
+<a href="#11134" id="11134">11134</a>
+<a href="#11135" id="11135">11135</a>
+<a href="#11136" id="11136">11136</a>
+<a href="#11137" id="11137">11137</a>
+<a href="#11138" id="11138">11138</a>
+<a href="#11139" id="11139">11139</a>
+<a href="#11140" id="11140">11140</a>
+<a href="#11141" id="11141">11141</a>
+<a href="#11142" id="11142">11142</a>
+<a href="#11143" id="11143">11143</a>
+<a href="#11144" id="11144">11144</a>
+<a href="#11145" id="11145">11145</a>
+<a href="#11146" id="11146">11146</a>
+<a href="#11147" id="11147">11147</a>
+<a href="#11148" id="11148">11148</a>
+<a href="#11149" id="11149">11149</a>
+<a href="#11150" id="11150">11150</a>
+<a href="#11151" id="11151">11151</a>
+<a href="#11152" id="11152">11152</a>
+<a href="#11153" id="11153">11153</a>
+<a href="#11154" id="11154">11154</a>
+<a href="#11155" id="11155">11155</a>
+<a href="#11156" id="11156">11156</a>
+<a href="#11157" id="11157">11157</a>
+<a href="#11158" id="11158">11158</a>
+<a href="#11159" id="11159">11159</a>
+<a href="#11160" id="11160">11160</a>
+<a href="#11161" id="11161">11161</a>
+<a href="#11162" id="11162">11162</a>
+<a href="#11163" id="11163">11163</a>
+<a href="#11164" id="11164">11164</a>
+<a href="#11165" id="11165">11165</a>
+<a href="#11166" id="11166">11166</a>
+<a href="#11167" id="11167">11167</a>
+<a href="#11168" id="11168">11168</a>
+<a href="#11169" id="11169">11169</a>
+<a href="#11170" id="11170">11170</a>
+<a href="#11171" id="11171">11171</a>
+<a href="#11172" id="11172">11172</a>
+<a href="#11173" id="11173">11173</a>
+<a href="#11174" id="11174">11174</a>
+<a href="#11175" id="11175">11175</a>
+<a href="#11176" id="11176">11176</a>
+<a href="#11177" id="11177">11177</a>
+<a href="#11178" id="11178">11178</a>
+<a href="#11179" id="11179">11179</a>
+<a href="#11180" id="11180">11180</a>
+<a href="#11181" id="11181">11181</a>
+<a href="#11182" id="11182">11182</a>
+<a href="#11183" id="11183">11183</a>
+<a href="#11184" id="11184">11184</a>
+<a href="#11185" id="11185">11185</a>
+<a href="#11186" id="11186">11186</a>
+<a href="#11187" id="11187">11187</a>
+<a href="#11188" id="11188">11188</a>
+<a href="#11189" id="11189">11189</a>
+<a href="#11190" id="11190">11190</a>
+<a href="#11191" id="11191">11191</a>
+<a href="#11192" id="11192">11192</a>
+<a href="#11193" id="11193">11193</a>
+<a href="#11194" id="11194">11194</a>
+<a href="#11195" id="11195">11195</a>
+<a href="#11196" id="11196">11196</a>
+<a href="#11197" id="11197">11197</a>
+<a href="#11198" id="11198">11198</a>
+<a href="#11199" id="11199">11199</a>
+<a href="#11200" id="11200">11200</a>
+<a href="#11201" id="11201">11201</a>
+<a href="#11202" id="11202">11202</a>
+<a href="#11203" id="11203">11203</a>
+<a href="#11204" id="11204">11204</a>
+<a href="#11205" id="11205">11205</a>
+<a href="#11206" id="11206">11206</a>
+<a href="#11207" id="11207">11207</a>
+<a href="#11208" id="11208">11208</a>
+<a href="#11209" id="11209">11209</a>
+<a href="#11210" id="11210">11210</a>
+<a href="#11211" id="11211">11211</a>
+<a href="#11212" id="11212">11212</a>
+<a href="#11213" id="11213">11213</a>
+<a href="#11214" id="11214">11214</a>
+<a href="#11215" id="11215">11215</a>
+<a href="#11216" id="11216">11216</a>
+<a href="#11217" id="11217">11217</a>
+<a href="#11218" id="11218">11218</a>
+<a href="#11219" id="11219">11219</a>
+<a href="#11220" id="11220">11220</a>
+<a href="#11221" id="11221">11221</a>
+<a href="#11222" id="11222">11222</a>
+<a href="#11223" id="11223">11223</a>
+<a href="#11224" id="11224">11224</a>
+<a href="#11225" id="11225">11225</a>
+<a href="#11226" id="11226">11226</a>
+<a href="#11227" id="11227">11227</a>
+<a href="#11228" id="11228">11228</a>
+<a href="#11229" id="11229">11229</a>
+<a href="#11230" id="11230">11230</a>
+<a href="#11231" id="11231">11231</a>
+<a href="#11232" id="11232">11232</a>
+<a href="#11233" id="11233">11233</a>
+<a href="#11234" id="11234">11234</a>
+<a href="#11235" id="11235">11235</a>
+<a href="#11236" id="11236">11236</a>
+<a href="#11237" id="11237">11237</a>
+<a href="#11238" id="11238">11238</a>
+<a href="#11239" id="11239">11239</a>
+<a href="#11240" id="11240">11240</a>
+<a href="#11241" id="11241">11241</a>
+<a href="#11242" id="11242">11242</a>
+<a href="#11243" id="11243">11243</a>
+<a href="#11244" id="11244">11244</a>
+<a href="#11245" id="11245">11245</a>
+<a href="#11246" id="11246">11246</a>
+<a href="#11247" id="11247">11247</a>
+<a href="#11248" id="11248">11248</a>
+<a href="#11249" id="11249">11249</a>
+<a href="#11250" id="11250">11250</a>
+<a href="#11251" id="11251">11251</a>
+<a href="#11252" id="11252">11252</a>
+<a href="#11253" id="11253">11253</a>
+<a href="#11254" id="11254">11254</a>
+<a href="#11255" id="11255">11255</a>
+<a href="#11256" id="11256">11256</a>
+<a href="#11257" id="11257">11257</a>
+<a href="#11258" id="11258">11258</a>
+<a href="#11259" id="11259">11259</a>
+<a href="#11260" id="11260">11260</a>
+<a href="#11261" id="11261">11261</a>
+<a href="#11262" id="11262">11262</a>
+<a href="#11263" id="11263">11263</a>
+<a href="#11264" id="11264">11264</a>
+<a href="#11265" id="11265">11265</a>
+<a href="#11266" id="11266">11266</a>
+<a href="#11267" id="11267">11267</a>
+<a href="#11268" id="11268">11268</a>
+<a href="#11269" id="11269">11269</a>
+<a href="#11270" id="11270">11270</a>
+<a href="#11271" id="11271">11271</a>
+<a href="#11272" id="11272">11272</a>
+<a href="#11273" id="11273">11273</a>
+<a href="#11274" id="11274">11274</a>
+<a href="#11275" id="11275">11275</a>
+<a href="#11276" id="11276">11276</a>
+<a href="#11277" id="11277">11277</a>
+<a href="#11278" id="11278">11278</a>
+<a href="#11279" id="11279">11279</a>
+<a href="#11280" id="11280">11280</a>
+<a href="#11281" id="11281">11281</a>
+<a href="#11282" id="11282">11282</a>
+<a href="#11283" id="11283">11283</a>
+<a href="#11284" id="11284">11284</a>
+<a href="#11285" id="11285">11285</a>
+<a href="#11286" id="11286">11286</a>
+<a href="#11287" id="11287">11287</a>
+<a href="#11288" id="11288">11288</a>
+<a href="#11289" id="11289">11289</a>
+<a href="#11290" id="11290">11290</a>
+<a href="#11291" id="11291">11291</a>
+<a href="#11292" id="11292">11292</a>
+<a href="#11293" id="11293">11293</a>
+<a href="#11294" id="11294">11294</a>
+<a href="#11295" id="11295">11295</a>
+<a href="#11296" id="11296">11296</a>
+<a href="#11297" id="11297">11297</a>
+<a href="#11298" id="11298">11298</a>
+<a href="#11299" id="11299">11299</a>
+<a href="#11300" id="11300">11300</a>
+<a href="#11301" id="11301">11301</a>
+<a href="#11302" id="11302">11302</a>
+<a href="#11303" id="11303">11303</a>
+<a href="#11304" id="11304">11304</a>
+<a href="#11305" id="11305">11305</a>
+<a href="#11306" id="11306">11306</a>
+<a href="#11307" id="11307">11307</a>
+<a href="#11308" id="11308">11308</a>
+<a href="#11309" id="11309">11309</a>
+<a href="#11310" id="11310">11310</a>
+<a href="#11311" id="11311">11311</a>
+<a href="#11312" id="11312">11312</a>
+<a href="#11313" id="11313">11313</a>
+<a href="#11314" id="11314">11314</a>
+<a href="#11315" id="11315">11315</a>
+<a href="#11316" id="11316">11316</a>
+<a href="#11317" id="11317">11317</a>
+<a href="#11318" id="11318">11318</a>
+<a href="#11319" id="11319">11319</a>
+<a href="#11320" id="11320">11320</a>
+<a href="#11321" id="11321">11321</a>
+<a href="#11322" id="11322">11322</a>
+<a href="#11323" id="11323">11323</a>
+<a href="#11324" id="11324">11324</a>
+<a href="#11325" id="11325">11325</a>
+<a href="#11326" id="11326">11326</a>
+<a href="#11327" id="11327">11327</a>
+<a href="#11328" id="11328">11328</a>
+<a href="#11329" id="11329">11329</a>
+<a href="#11330" id="11330">11330</a>
+<a href="#11331" id="11331">11331</a>
+<a href="#11332" id="11332">11332</a>
+<a href="#11333" id="11333">11333</a>
+<a href="#11334" id="11334">11334</a>
+<a href="#11335" id="11335">11335</a>
+<a href="#11336" id="11336">11336</a>
+<a href="#11337" id="11337">11337</a>
+<a href="#11338" id="11338">11338</a>
+<a href="#11339" id="11339">11339</a>
+<a href="#11340" id="11340">11340</a>
+<a href="#11341" id="11341">11341</a>
+<a href="#11342" id="11342">11342</a>
+<a href="#11343" id="11343">11343</a>
+<a href="#11344" id="11344">11344</a>
+<a href="#11345" id="11345">11345</a>
+<a href="#11346" id="11346">11346</a>
+<a href="#11347" id="11347">11347</a>
+<a href="#11348" id="11348">11348</a>
+<a href="#11349" id="11349">11349</a>
+<a href="#11350" id="11350">11350</a>
+<a href="#11351" id="11351">11351</a>
+<a href="#11352" id="11352">11352</a>
+<a href="#11353" id="11353">11353</a>
+<a href="#11354" id="11354">11354</a>
+<a href="#11355" id="11355">11355</a>
+<a href="#11356" id="11356">11356</a>
+<a href="#11357" id="11357">11357</a>
+<a href="#11358" id="11358">11358</a>
+<a href="#11359" id="11359">11359</a>
+<a href="#11360" id="11360">11360</a>
+<a href="#11361" id="11361">11361</a>
+<a href="#11362" id="11362">11362</a>
+<a href="#11363" id="11363">11363</a>
+<a href="#11364" id="11364">11364</a>
+<a href="#11365" id="11365">11365</a>
+<a href="#11366" id="11366">11366</a>
+<a href="#11367" id="11367">11367</a>
+<a href="#11368" id="11368">11368</a>
+<a href="#11369" id="11369">11369</a>
+<a href="#11370" id="11370">11370</a>
+<a href="#11371" id="11371">11371</a>
+<a href="#11372" id="11372">11372</a>
+<a href="#11373" id="11373">11373</a>
+<a href="#11374" id="11374">11374</a>
+<a href="#11375" id="11375">11375</a>
+<a href="#11376" id="11376">11376</a>
+<a href="#11377" id="11377">11377</a>
+<a href="#11378" id="11378">11378</a>
+<a href="#11379" id="11379">11379</a>
+<a href="#11380" id="11380">11380</a>
+<a href="#11381" id="11381">11381</a>
+<a href="#11382" id="11382">11382</a>
+<a href="#11383" id="11383">11383</a>
+<a href="#11384" id="11384">11384</a>
+<a href="#11385" id="11385">11385</a>
+<a href="#11386" id="11386">11386</a>
+<a href="#11387" id="11387">11387</a>
+<a href="#11388" id="11388">11388</a>
+<a href="#11389" id="11389">11389</a>
+<a href="#11390" id="11390">11390</a>
+<a href="#11391" id="11391">11391</a>
+<a href="#11392" id="11392">11392</a>
+<a href="#11393" id="11393">11393</a>
+<a href="#11394" id="11394">11394</a>
+<a href="#11395" id="11395">11395</a>
+<a href="#11396" id="11396">11396</a>
+<a href="#11397" id="11397">11397</a>
+<a href="#11398" id="11398">11398</a>
+<a href="#11399" id="11399">11399</a>
+<a href="#11400" id="11400">11400</a>
+<a href="#11401" id="11401">11401</a>
+<a href="#11402" id="11402">11402</a>
+<a href="#11403" id="11403">11403</a>
+<a href="#11404" id="11404">11404</a>
+<a href="#11405" id="11405">11405</a>
+<a href="#11406" id="11406">11406</a>
+<a href="#11407" id="11407">11407</a>
+<a href="#11408" id="11408">11408</a>
+<a href="#11409" id="11409">11409</a>
+<a href="#11410" id="11410">11410</a>
+<a href="#11411" id="11411">11411</a>
+<a href="#11412" id="11412">11412</a>
+<a href="#11413" id="11413">11413</a>
+<a href="#11414" id="11414">11414</a>
+<a href="#11415" id="11415">11415</a>
+<a href="#11416" id="11416">11416</a>
+<a href="#11417" id="11417">11417</a>
+<a href="#11418" id="11418">11418</a>
+<a href="#11419" id="11419">11419</a>
+<a href="#11420" id="11420">11420</a>
+<a href="#11421" id="11421">11421</a>
+<a href="#11422" id="11422">11422</a>
+<a href="#11423" id="11423">11423</a>
+<a href="#11424" id="11424">11424</a>
+<a href="#11425" id="11425">11425</a>
+<a href="#11426" id="11426">11426</a>
+<a href="#11427" id="11427">11427</a>
+<a href="#11428" id="11428">11428</a>
+<a href="#11429" id="11429">11429</a>
+<a href="#11430" id="11430">11430</a>
+<a href="#11431" id="11431">11431</a>
+<a href="#11432" id="11432">11432</a>
+<a href="#11433" id="11433">11433</a>
+<a href="#11434" id="11434">11434</a>
+<a href="#11435" id="11435">11435</a>
+<a href="#11436" id="11436">11436</a>
+<a href="#11437" id="11437">11437</a>
+<a href="#11438" id="11438">11438</a>
+<a href="#11439" id="11439">11439</a>
+<a href="#11440" id="11440">11440</a>
+<a href="#11441" id="11441">11441</a>
+<a href="#11442" id="11442">11442</a>
+<a href="#11443" id="11443">11443</a>
+<a href="#11444" id="11444">11444</a>
+<a href="#11445" id="11445">11445</a>
+<a href="#11446" id="11446">11446</a>
+<a href="#11447" id="11447">11447</a>
+<a href="#11448" id="11448">11448</a>
+<a href="#11449" id="11449">11449</a>
+<a href="#11450" id="11450">11450</a>
+<a href="#11451" id="11451">11451</a>
+<a href="#11452" id="11452">11452</a>
+<a href="#11453" id="11453">11453</a>
+<a href="#11454" id="11454">11454</a>
+<a href="#11455" id="11455">11455</a>
+<a href="#11456" id="11456">11456</a>
+<a href="#11457" id="11457">11457</a>
+<a href="#11458" id="11458">11458</a>
+<a href="#11459" id="11459">11459</a>
+<a href="#11460" id="11460">11460</a>
+<a href="#11461" id="11461">11461</a>
+<a href="#11462" id="11462">11462</a>
+<a href="#11463" id="11463">11463</a>
+<a href="#11464" id="11464">11464</a>
+<a href="#11465" id="11465">11465</a>
+<a href="#11466" id="11466">11466</a>
+<a href="#11467" id="11467">11467</a>
+<a href="#11468" id="11468">11468</a>
+<a href="#11469" id="11469">11469</a>
+<a href="#11470" id="11470">11470</a>
+<a href="#11471" id="11471">11471</a>
+<a href="#11472" id="11472">11472</a>
+<a href="#11473" id="11473">11473</a>
+<a href="#11474" id="11474">11474</a>
+<a href="#11475" id="11475">11475</a>
+<a href="#11476" id="11476">11476</a>
+<a href="#11477" id="11477">11477</a>
+<a href="#11478" id="11478">11478</a>
+<a href="#11479" id="11479">11479</a>
+<a href="#11480" id="11480">11480</a>
+<a href="#11481" id="11481">11481</a>
+<a href="#11482" id="11482">11482</a>
+<a href="#11483" id="11483">11483</a>
+<a href="#11484" id="11484">11484</a>
+<a href="#11485" id="11485">11485</a>
+<a href="#11486" id="11486">11486</a>
+<a href="#11487" id="11487">11487</a>
+<a href="#11488" id="11488">11488</a>
+<a href="#11489" id="11489">11489</a>
+<a href="#11490" id="11490">11490</a>
+<a href="#11491" id="11491">11491</a>
+<a href="#11492" id="11492">11492</a>
+<a href="#11493" id="11493">11493</a>
+<a href="#11494" id="11494">11494</a>
+<a href="#11495" id="11495">11495</a>
+<a href="#11496" id="11496">11496</a>
+<a href="#11497" id="11497">11497</a>
+<a href="#11498" id="11498">11498</a>
+<a href="#11499" id="11499">11499</a>
+<a href="#11500" id="11500">11500</a>
+<a href="#11501" id="11501">11501</a>
+<a href="#11502" id="11502">11502</a>
+<a href="#11503" id="11503">11503</a>
+<a href="#11504" id="11504">11504</a>
+<a href="#11505" id="11505">11505</a>
+<a href="#11506" id="11506">11506</a>
+<a href="#11507" id="11507">11507</a>
+<a href="#11508" id="11508">11508</a>
+<a href="#11509" id="11509">11509</a>
+<a href="#11510" id="11510">11510</a>
+<a href="#11511" id="11511">11511</a>
+<a href="#11512" id="11512">11512</a>
+<a href="#11513" id="11513">11513</a>
+<a href="#11514" id="11514">11514</a>
+<a href="#11515" id="11515">11515</a>
+<a href="#11516" id="11516">11516</a>
+<a href="#11517" id="11517">11517</a>
+<a href="#11518" id="11518">11518</a>
+<a href="#11519" id="11519">11519</a>
+<a href="#11520" id="11520">11520</a>
+<a href="#11521" id="11521">11521</a>
+<a href="#11522" id="11522">11522</a>
+<a href="#11523" id="11523">11523</a>
+<a href="#11524" id="11524">11524</a>
+<a href="#11525" id="11525">11525</a>
+<a href="#11526" id="11526">11526</a>
+<a href="#11527" id="11527">11527</a>
+<a href="#11528" id="11528">11528</a>
+<a href="#11529" id="11529">11529</a>
+<a href="#11530" id="11530">11530</a>
+<a href="#11531" id="11531">11531</a>
+<a href="#11532" id="11532">11532</a>
+<a href="#11533" id="11533">11533</a>
+<a href="#11534" id="11534">11534</a>
+<a href="#11535" id="11535">11535</a>
+<a href="#11536" id="11536">11536</a>
+<a href="#11537" id="11537">11537</a>
+<a href="#11538" id="11538">11538</a>
+<a href="#11539" id="11539">11539</a>
+<a href="#11540" id="11540">11540</a>
+<a href="#11541" id="11541">11541</a>
+<a href="#11542" id="11542">11542</a>
+<a href="#11543" id="11543">11543</a>
+<a href="#11544" id="11544">11544</a>
+<a href="#11545" id="11545">11545</a>
+<a href="#11546" id="11546">11546</a>
+<a href="#11547" id="11547">11547</a>
+<a href="#11548" id="11548">11548</a>
+<a href="#11549" id="11549">11549</a>
+<a href="#11550" id="11550">11550</a>
+<a href="#11551" id="11551">11551</a>
+<a href="#11552" id="11552">11552</a>
+<a href="#11553" id="11553">11553</a>
+<a href="#11554" id="11554">11554</a>
+<a href="#11555" id="11555">11555</a>
+<a href="#11556" id="11556">11556</a>
+<a href="#11557" id="11557">11557</a>
+<a href="#11558" id="11558">11558</a>
+<a href="#11559" id="11559">11559</a>
+<a href="#11560" id="11560">11560</a>
+<a href="#11561" id="11561">11561</a>
+<a href="#11562" id="11562">11562</a>
+<a href="#11563" id="11563">11563</a>
+<a href="#11564" id="11564">11564</a>
+<a href="#11565" id="11565">11565</a>
+<a href="#11566" id="11566">11566</a>
+<a href="#11567" id="11567">11567</a>
+<a href="#11568" id="11568">11568</a>
+<a href="#11569" id="11569">11569</a>
+<a href="#11570" id="11570">11570</a>
+<a href="#11571" id="11571">11571</a>
+<a href="#11572" id="11572">11572</a>
+<a href="#11573" id="11573">11573</a>
+<a href="#11574" id="11574">11574</a>
+<a href="#11575" id="11575">11575</a>
+<a href="#11576" id="11576">11576</a>
+<a href="#11577" id="11577">11577</a>
+<a href="#11578" id="11578">11578</a>
+<a href="#11579" id="11579">11579</a>
+<a href="#11580" id="11580">11580</a>
+<a href="#11581" id="11581">11581</a>
+<a href="#11582" id="11582">11582</a>
+<a href="#11583" id="11583">11583</a>
+<a href="#11584" id="11584">11584</a>
+<a href="#11585" id="11585">11585</a>
+<a href="#11586" id="11586">11586</a>
+<a href="#11587" id="11587">11587</a>
+<a href="#11588" id="11588">11588</a>
+<a href="#11589" id="11589">11589</a>
+<a href="#11590" id="11590">11590</a>
+<a href="#11591" id="11591">11591</a>
+<a href="#11592" id="11592">11592</a>
+<a href="#11593" id="11593">11593</a>
+<a href="#11594" id="11594">11594</a>
+<a href="#11595" id="11595">11595</a>
+<a href="#11596" id="11596">11596</a>
+<a href="#11597" id="11597">11597</a>
+<a href="#11598" id="11598">11598</a>
+<a href="#11599" id="11599">11599</a>
+<a href="#11600" id="11600">11600</a>
+<a href="#11601" id="11601">11601</a>
+<a href="#11602" id="11602">11602</a>
+<a href="#11603" id="11603">11603</a>
+<a href="#11604" id="11604">11604</a>
+<a href="#11605" id="11605">11605</a>
+<a href="#11606" id="11606">11606</a>
+<a href="#11607" id="11607">11607</a>
+<a href="#11608" id="11608">11608</a>
+<a href="#11609" id="11609">11609</a>
+<a href="#11610" id="11610">11610</a>
+<a href="#11611" id="11611">11611</a>
+<a href="#11612" id="11612">11612</a>
+<a href="#11613" id="11613">11613</a>
+<a href="#11614" id="11614">11614</a>
+<a href="#11615" id="11615">11615</a>
+<a href="#11616" id="11616">11616</a>
+<a href="#11617" id="11617">11617</a>
+<a href="#11618" id="11618">11618</a>
+<a href="#11619" id="11619">11619</a>
+<a href="#11620" id="11620">11620</a>
+<a href="#11621" id="11621">11621</a>
+<a href="#11622" id="11622">11622</a>
+<a href="#11623" id="11623">11623</a>
+<a href="#11624" id="11624">11624</a>
+<a href="#11625" id="11625">11625</a>
+<a href="#11626" id="11626">11626</a>
+<a href="#11627" id="11627">11627</a>
+<a href="#11628" id="11628">11628</a>
+<a href="#11629" id="11629">11629</a>
+<a href="#11630" id="11630">11630</a>
+<a href="#11631" id="11631">11631</a>
+<a href="#11632" id="11632">11632</a>
+<a href="#11633" id="11633">11633</a>
+<a href="#11634" id="11634">11634</a>
+<a href="#11635" id="11635">11635</a>
+<a href="#11636" id="11636">11636</a>
+<a href="#11637" id="11637">11637</a>
+<a href="#11638" id="11638">11638</a>
+<a href="#11639" id="11639">11639</a>
+<a href="#11640" id="11640">11640</a>
+<a href="#11641" id="11641">11641</a>
+<a href="#11642" id="11642">11642</a>
+<a href="#11643" id="11643">11643</a>
+<a href="#11644" id="11644">11644</a>
+<a href="#11645" id="11645">11645</a>
+<a href="#11646" id="11646">11646</a>
+<a href="#11647" id="11647">11647</a>
+<a href="#11648" id="11648">11648</a>
+<a href="#11649" id="11649">11649</a>
+<a href="#11650" id="11650">11650</a>
+<a href="#11651" id="11651">11651</a>
+<a href="#11652" id="11652">11652</a>
+<a href="#11653" id="11653">11653</a>
+<a href="#11654" id="11654">11654</a>
+<a href="#11655" id="11655">11655</a>
+<a href="#11656" id="11656">11656</a>
+<a href="#11657" id="11657">11657</a>
+<a href="#11658" id="11658">11658</a>
+<a href="#11659" id="11659">11659</a>
+<a href="#11660" id="11660">11660</a>
+<a href="#11661" id="11661">11661</a>
+<a href="#11662" id="11662">11662</a>
+<a href="#11663" id="11663">11663</a>
+<a href="#11664" id="11664">11664</a>
+<a href="#11665" id="11665">11665</a>
+<a href="#11666" id="11666">11666</a>
+<a href="#11667" id="11667">11667</a>
+<a href="#11668" id="11668">11668</a>
+<a href="#11669" id="11669">11669</a>
+<a href="#11670" id="11670">11670</a>
+<a href="#11671" id="11671">11671</a>
+<a href="#11672" id="11672">11672</a>
+<a href="#11673" id="11673">11673</a>
+<a href="#11674" id="11674">11674</a>
+<a href="#11675" id="11675">11675</a>
+<a href="#11676" id="11676">11676</a>
+<a href="#11677" id="11677">11677</a>
+<a href="#11678" id="11678">11678</a>
+<a href="#11679" id="11679">11679</a>
+<a href="#11680" id="11680">11680</a>
+<a href="#11681" id="11681">11681</a>
+<a href="#11682" id="11682">11682</a>
+<a href="#11683" id="11683">11683</a>
+<a href="#11684" id="11684">11684</a>
+<a href="#11685" id="11685">11685</a>
+<a href="#11686" id="11686">11686</a>
+<a href="#11687" id="11687">11687</a>
+<a href="#11688" id="11688">11688</a>
+<a href="#11689" id="11689">11689</a>
+<a href="#11690" id="11690">11690</a>
+<a href="#11691" id="11691">11691</a>
+<a href="#11692" id="11692">11692</a>
+<a href="#11693" id="11693">11693</a>
+<a href="#11694" id="11694">11694</a>
+<a href="#11695" id="11695">11695</a>
+<a href="#11696" id="11696">11696</a>
+<a href="#11697" id="11697">11697</a>
+<a href="#11698" id="11698">11698</a>
+<a href="#11699" id="11699">11699</a>
+<a href="#11700" id="11700">11700</a>
+<a href="#11701" id="11701">11701</a>
+<a href="#11702" id="11702">11702</a>
+<a href="#11703" id="11703">11703</a>
+<a href="#11704" id="11704">11704</a>
+<a href="#11705" id="11705">11705</a>
+<a href="#11706" id="11706">11706</a>
+<a href="#11707" id="11707">11707</a>
+<a href="#11708" id="11708">11708</a>
+<a href="#11709" id="11709">11709</a>
+<a href="#11710" id="11710">11710</a>
+<a href="#11711" id="11711">11711</a>
+<a href="#11712" id="11712">11712</a>
+<a href="#11713" id="11713">11713</a>
+<a href="#11714" id="11714">11714</a>
+<a href="#11715" id="11715">11715</a>
+<a href="#11716" id="11716">11716</a>
+<a href="#11717" id="11717">11717</a>
+<a href="#11718" id="11718">11718</a>
+<a href="#11719" id="11719">11719</a>
+<a href="#11720" id="11720">11720</a>
+<a href="#11721" id="11721">11721</a>
+<a href="#11722" id="11722">11722</a>
+<a href="#11723" id="11723">11723</a>
+<a href="#11724" id="11724">11724</a>
+<a href="#11725" id="11725">11725</a>
+<a href="#11726" id="11726">11726</a>
+<a href="#11727" id="11727">11727</a>
+<a href="#11728" id="11728">11728</a>
+<a href="#11729" id="11729">11729</a>
+<a href="#11730" id="11730">11730</a>
+<a href="#11731" id="11731">11731</a>
+<a href="#11732" id="11732">11732</a>
+<a href="#11733" id="11733">11733</a>
+<a href="#11734" id="11734">11734</a>
+<a href="#11735" id="11735">11735</a>
+<a href="#11736" id="11736">11736</a>
+<a href="#11737" id="11737">11737</a>
+<a href="#11738" id="11738">11738</a>
+<a href="#11739" id="11739">11739</a>
+<a href="#11740" id="11740">11740</a>
+<a href="#11741" id="11741">11741</a>
+<a href="#11742" id="11742">11742</a>
+<a href="#11743" id="11743">11743</a>
+<a href="#11744" id="11744">11744</a>
+<a href="#11745" id="11745">11745</a>
+<a href="#11746" id="11746">11746</a>
+<a href="#11747" id="11747">11747</a>
+<a href="#11748" id="11748">11748</a>
+<a href="#11749" id="11749">11749</a>
+<a href="#11750" id="11750">11750</a>
+<a href="#11751" id="11751">11751</a>
+<a href="#11752" id="11752">11752</a>
+<a href="#11753" id="11753">11753</a>
+<a href="#11754" id="11754">11754</a>
+<a href="#11755" id="11755">11755</a>
+<a href="#11756" id="11756">11756</a>
+<a href="#11757" id="11757">11757</a>
+<a href="#11758" id="11758">11758</a>
+<a href="#11759" id="11759">11759</a>
+<a href="#11760" id="11760">11760</a>
+<a href="#11761" id="11761">11761</a>
+<a href="#11762" id="11762">11762</a>
+<a href="#11763" id="11763">11763</a>
+<a href="#11764" id="11764">11764</a>
+<a href="#11765" id="11765">11765</a>
+<a href="#11766" id="11766">11766</a>
+<a href="#11767" id="11767">11767</a>
+<a href="#11768" id="11768">11768</a>
+<a href="#11769" id="11769">11769</a>
+<a href="#11770" id="11770">11770</a>
+<a href="#11771" id="11771">11771</a>
+<a href="#11772" id="11772">11772</a>
+<a href="#11773" id="11773">11773</a>
+<a href="#11774" id="11774">11774</a>
+<a href="#11775" id="11775">11775</a>
+<a href="#11776" id="11776">11776</a>
+<a href="#11777" id="11777">11777</a>
+<a href="#11778" id="11778">11778</a>
+<a href="#11779" id="11779">11779</a>
+<a href="#11780" id="11780">11780</a>
+<a href="#11781" id="11781">11781</a>
+<a href="#11782" id="11782">11782</a>
+<a href="#11783" id="11783">11783</a>
+<a href="#11784" id="11784">11784</a>
+<a href="#11785" id="11785">11785</a>
+<a href="#11786" id="11786">11786</a>
+<a href="#11787" id="11787">11787</a>
+<a href="#11788" id="11788">11788</a>
+<a href="#11789" id="11789">11789</a>
+<a href="#11790" id="11790">11790</a>
+<a href="#11791" id="11791">11791</a>
+<a href="#11792" id="11792">11792</a>
+<a href="#11793" id="11793">11793</a>
+<a href="#11794" id="11794">11794</a>
+<a href="#11795" id="11795">11795</a>
+<a href="#11796" id="11796">11796</a>
+<a href="#11797" id="11797">11797</a>
+<a href="#11798" id="11798">11798</a>
+<a href="#11799" id="11799">11799</a>
+<a href="#11800" id="11800">11800</a>
+<a href="#11801" id="11801">11801</a>
+<a href="#11802" id="11802">11802</a>
+<a href="#11803" id="11803">11803</a>
+<a href="#11804" id="11804">11804</a>
+<a href="#11805" id="11805">11805</a>
+<a href="#11806" id="11806">11806</a>
+<a href="#11807" id="11807">11807</a>
+<a href="#11808" id="11808">11808</a>
+<a href="#11809" id="11809">11809</a>
+<a href="#11810" id="11810">11810</a>
+<a href="#11811" id="11811">11811</a>
+<a href="#11812" id="11812">11812</a>
+<a href="#11813" id="11813">11813</a>
+<a href="#11814" id="11814">11814</a>
+<a href="#11815" id="11815">11815</a>
+<a href="#11816" id="11816">11816</a>
+<a href="#11817" id="11817">11817</a>
+<a href="#11818" id="11818">11818</a>
+<a href="#11819" id="11819">11819</a>
+<a href="#11820" id="11820">11820</a>
+<a href="#11821" id="11821">11821</a>
+<a href="#11822" id="11822">11822</a>
+<a href="#11823" id="11823">11823</a>
+<a href="#11824" id="11824">11824</a>
+<a href="#11825" id="11825">11825</a>
+<a href="#11826" id="11826">11826</a>
+<a href="#11827" id="11827">11827</a>
+<a href="#11828" id="11828">11828</a>
+<a href="#11829" id="11829">11829</a>
+<a href="#11830" id="11830">11830</a>
+<a href="#11831" id="11831">11831</a>
+<a href="#11832" id="11832">11832</a>
+<a href="#11833" id="11833">11833</a>
+<a href="#11834" id="11834">11834</a>
+<a href="#11835" id="11835">11835</a>
+<a href="#11836" id="11836">11836</a>
+<a href="#11837" id="11837">11837</a>
+<a href="#11838" id="11838">11838</a>
+<a href="#11839" id="11839">11839</a>
+<a href="#11840" id="11840">11840</a>
+<a href="#11841" id="11841">11841</a>
+<a href="#11842" id="11842">11842</a>
+<a href="#11843" id="11843">11843</a>
+<a href="#11844" id="11844">11844</a>
+<a href="#11845" id="11845">11845</a>
+<a href="#11846" id="11846">11846</a>
+<a href="#11847" id="11847">11847</a>
+<a href="#11848" id="11848">11848</a>
+<a href="#11849" id="11849">11849</a>
+<a href="#11850" id="11850">11850</a>
+<a href="#11851" id="11851">11851</a>
+<a href="#11852" id="11852">11852</a>
+<a href="#11853" id="11853">11853</a>
+<a href="#11854" id="11854">11854</a>
+<a href="#11855" id="11855">11855</a>
+<a href="#11856" id="11856">11856</a>
+<a href="#11857" id="11857">11857</a>
+<a href="#11858" id="11858">11858</a>
+<a href="#11859" id="11859">11859</a>
+<a href="#11860" id="11860">11860</a>
+<a href="#11861" id="11861">11861</a>
+<a href="#11862" id="11862">11862</a>
+<a href="#11863" id="11863">11863</a>
+<a href="#11864" id="11864">11864</a>
+<a href="#11865" id="11865">11865</a>
+<a href="#11866" id="11866">11866</a>
+<a href="#11867" id="11867">11867</a>
+<a href="#11868" id="11868">11868</a>
+<a href="#11869" id="11869">11869</a>
+<a href="#11870" id="11870">11870</a>
+<a href="#11871" id="11871">11871</a>
+<a href="#11872" id="11872">11872</a>
+<a href="#11873" id="11873">11873</a>
+<a href="#11874" id="11874">11874</a>
+<a href="#11875" id="11875">11875</a>
+<a href="#11876" id="11876">11876</a>
+<a href="#11877" id="11877">11877</a>
+<a href="#11878" id="11878">11878</a>
+<a href="#11879" id="11879">11879</a>
+<a href="#11880" id="11880">11880</a>
+<a href="#11881" id="11881">11881</a>
+<a href="#11882" id="11882">11882</a>
+<a href="#11883" id="11883">11883</a>
+<a href="#11884" id="11884">11884</a>
+<a href="#11885" id="11885">11885</a>
+<a href="#11886" id="11886">11886</a>
+<a href="#11887" id="11887">11887</a>
+<a href="#11888" id="11888">11888</a>
+<a href="#11889" id="11889">11889</a>
+<a href="#11890" id="11890">11890</a>
+<a href="#11891" id="11891">11891</a>
+<a href="#11892" id="11892">11892</a>
+<a href="#11893" id="11893">11893</a>
+<a href="#11894" id="11894">11894</a>
+<a href="#11895" id="11895">11895</a>
+<a href="#11896" id="11896">11896</a>
+<a href="#11897" id="11897">11897</a>
+<a href="#11898" id="11898">11898</a>
+<a href="#11899" id="11899">11899</a>
+<a href="#11900" id="11900">11900</a>
+<a href="#11901" id="11901">11901</a>
+<a href="#11902" id="11902">11902</a>
+<a href="#11903" id="11903">11903</a>
+<a href="#11904" id="11904">11904</a>
+<a href="#11905" id="11905">11905</a>
+<a href="#11906" id="11906">11906</a>
+<a href="#11907" id="11907">11907</a>
+<a href="#11908" id="11908">11908</a>
+<a href="#11909" id="11909">11909</a>
+<a href="#11910" id="11910">11910</a>
+<a href="#11911" id="11911">11911</a>
+<a href="#11912" id="11912">11912</a>
+<a href="#11913" id="11913">11913</a>
+<a href="#11914" id="11914">11914</a>
+<a href="#11915" id="11915">11915</a>
+<a href="#11916" id="11916">11916</a>
+<a href="#11917" id="11917">11917</a>
+<a href="#11918" id="11918">11918</a>
+<a href="#11919" id="11919">11919</a>
+<a href="#11920" id="11920">11920</a>
+<a href="#11921" id="11921">11921</a>
+<a href="#11922" id="11922">11922</a>
+<a href="#11923" id="11923">11923</a>
+<a href="#11924" id="11924">11924</a>
+<a href="#11925" id="11925">11925</a>
+<a href="#11926" id="11926">11926</a>
+<a href="#11927" id="11927">11927</a>
+<a href="#11928" id="11928">11928</a>
+<a href="#11929" id="11929">11929</a>
+<a href="#11930" id="11930">11930</a>
+<a href="#11931" id="11931">11931</a>
+<a href="#11932" id="11932">11932</a>
+<a href="#11933" id="11933">11933</a>
+<a href="#11934" id="11934">11934</a>
+<a href="#11935" id="11935">11935</a>
+<a href="#11936" id="11936">11936</a>
+<a href="#11937" id="11937">11937</a>
+<a href="#11938" id="11938">11938</a>
+<a href="#11939" id="11939">11939</a>
+<a href="#11940" id="11940">11940</a>
+<a href="#11941" id="11941">11941</a>
+<a href="#11942" id="11942">11942</a>
+<a href="#11943" id="11943">11943</a>
+<a href="#11944" id="11944">11944</a>
+<a href="#11945" id="11945">11945</a>
+<a href="#11946" id="11946">11946</a>
+<a href="#11947" id="11947">11947</a>
+<a href="#11948" id="11948">11948</a>
+<a href="#11949" id="11949">11949</a>
+<a href="#11950" id="11950">11950</a>
+<a href="#11951" id="11951">11951</a>
+<a href="#11952" id="11952">11952</a>
+<a href="#11953" id="11953">11953</a>
+<a href="#11954" id="11954">11954</a>
+<a href="#11955" id="11955">11955</a>
+<a href="#11956" id="11956">11956</a>
+<a href="#11957" id="11957">11957</a>
+<a href="#11958" id="11958">11958</a>
+<a href="#11959" id="11959">11959</a>
+<a href="#11960" id="11960">11960</a>
+<a href="#11961" id="11961">11961</a>
+<a href="#11962" id="11962">11962</a>
+<a href="#11963" id="11963">11963</a>
+<a href="#11964" id="11964">11964</a>
+<a href="#11965" id="11965">11965</a>
+<a href="#11966" id="11966">11966</a>
+<a href="#11967" id="11967">11967</a>
+<a href="#11968" id="11968">11968</a>
+<a href="#11969" id="11969">11969</a>
+<a href="#11970" id="11970">11970</a>
+<a href="#11971" id="11971">11971</a>
+<a href="#11972" id="11972">11972</a>
+<a href="#11973" id="11973">11973</a>
+<a href="#11974" id="11974">11974</a>
+<a href="#11975" id="11975">11975</a>
+<a href="#11976" id="11976">11976</a>
+<a href="#11977" id="11977">11977</a>
+<a href="#11978" id="11978">11978</a>
+<a href="#11979" id="11979">11979</a>
+<a href="#11980" id="11980">11980</a>
+<a href="#11981" id="11981">11981</a>
+<a href="#11982" id="11982">11982</a>
+<a href="#11983" id="11983">11983</a>
+<a href="#11984" id="11984">11984</a>
+<a href="#11985" id="11985">11985</a>
+<a href="#11986" id="11986">11986</a>
+<a href="#11987" id="11987">11987</a>
+<a href="#11988" id="11988">11988</a>
+<a href="#11989" id="11989">11989</a>
+<a href="#11990" id="11990">11990</a>
+<a href="#11991" id="11991">11991</a>
+<a href="#11992" id="11992">11992</a>
+<a href="#11993" id="11993">11993</a>
+<a href="#11994" id="11994">11994</a>
+<a href="#11995" id="11995">11995</a>
+<a href="#11996" id="11996">11996</a>
+<a href="#11997" id="11997">11997</a>
+<a href="#11998" id="11998">11998</a>
+<a href="#11999" id="11999">11999</a>
+<a href="#12000" id="12000">12000</a>
+<a href="#12001" id="12001">12001</a>
+<a href="#12002" id="12002">12002</a>
+<a href="#12003" id="12003">12003</a>
+<a href="#12004" id="12004">12004</a>
+<a href="#12005" id="12005">12005</a>
+<a href="#12006" id="12006">12006</a>
+<a href="#12007" id="12007">12007</a>
+<a href="#12008" id="12008">12008</a>
+<a href="#12009" id="12009">12009</a>
+<a href="#12010" id="12010">12010</a>
+<a href="#12011" id="12011">12011</a>
+<a href="#12012" id="12012">12012</a>
+<a href="#12013" id="12013">12013</a>
+<a href="#12014" id="12014">12014</a>
+<a href="#12015" id="12015">12015</a>
+<a href="#12016" id="12016">12016</a>
+<a href="#12017" id="12017">12017</a>
+<a href="#12018" id="12018">12018</a>
+<a href="#12019" id="12019">12019</a>
+<a href="#12020" id="12020">12020</a>
+<a href="#12021" id="12021">12021</a>
+<a href="#12022" id="12022">12022</a>
+<a href="#12023" id="12023">12023</a>
+<a href="#12024" id="12024">12024</a>
+<a href="#12025" id="12025">12025</a>
+<a href="#12026" id="12026">12026</a>
+<a href="#12027" id="12027">12027</a>
+<a href="#12028" id="12028">12028</a>
+<a href="#12029" id="12029">12029</a>
+<a href="#12030" id="12030">12030</a>
+<a href="#12031" id="12031">12031</a>
+<a href="#12032" id="12032">12032</a>
+<a href="#12033" id="12033">12033</a>
+<a href="#12034" id="12034">12034</a>
+<a href="#12035" id="12035">12035</a>
+<a href="#12036" id="12036">12036</a>
+<a href="#12037" id="12037">12037</a>
+<a href="#12038" id="12038">12038</a>
+<a href="#12039" id="12039">12039</a>
+<a href="#12040" id="12040">12040</a>
+<a href="#12041" id="12041">12041</a>
+<a href="#12042" id="12042">12042</a>
+<a href="#12043" id="12043">12043</a>
+<a href="#12044" id="12044">12044</a>
+<a href="#12045" id="12045">12045</a>
+<a href="#12046" id="12046">12046</a>
+<a href="#12047" id="12047">12047</a>
+<a href="#12048" id="12048">12048</a>
+<a href="#12049" id="12049">12049</a>
+<a href="#12050" id="12050">12050</a>
+<a href="#12051" id="12051">12051</a>
+<a href="#12052" id="12052">12052</a>
+<a href="#12053" id="12053">12053</a>
+<a href="#12054" id="12054">12054</a>
+<a href="#12055" id="12055">12055</a>
+<a href="#12056" id="12056">12056</a>
+<a href="#12057" id="12057">12057</a>
+<a href="#12058" id="12058">12058</a>
+<a href="#12059" id="12059">12059</a>
+<a href="#12060" id="12060">12060</a>
+<a href="#12061" id="12061">12061</a>
+<a href="#12062" id="12062">12062</a>
+<a href="#12063" id="12063">12063</a>
+<a href="#12064" id="12064">12064</a>
+<a href="#12065" id="12065">12065</a>
+<a href="#12066" id="12066">12066</a>
+<a href="#12067" id="12067">12067</a>
+<a href="#12068" id="12068">12068</a>
+<a href="#12069" id="12069">12069</a>
+<a href="#12070" id="12070">12070</a>
+<a href="#12071" id="12071">12071</a>
+<a href="#12072" id="12072">12072</a>
+<a href="#12073" id="12073">12073</a>
+<a href="#12074" id="12074">12074</a>
+<a href="#12075" id="12075">12075</a>
+<a href="#12076" id="12076">12076</a>
+<a href="#12077" id="12077">12077</a>
+<a href="#12078" id="12078">12078</a>
+<a href="#12079" id="12079">12079</a>
+<a href="#12080" id="12080">12080</a>
+<a href="#12081" id="12081">12081</a>
+<a href="#12082" id="12082">12082</a>
+<a href="#12083" id="12083">12083</a>
+<a href="#12084" id="12084">12084</a>
+<a href="#12085" id="12085">12085</a>
+<a href="#12086" id="12086">12086</a>
+<a href="#12087" id="12087">12087</a>
+<a href="#12088" id="12088">12088</a>
+<a href="#12089" id="12089">12089</a>
+<a href="#12090" id="12090">12090</a>
+<a href="#12091" id="12091">12091</a>
+<a href="#12092" id="12092">12092</a>
+<a href="#12093" id="12093">12093</a>
+<a href="#12094" id="12094">12094</a>
+<a href="#12095" id="12095">12095</a>
+<a href="#12096" id="12096">12096</a>
+<a href="#12097" id="12097">12097</a>
+<a href="#12098" id="12098">12098</a>
+<a href="#12099" id="12099">12099</a>
+<a href="#12100" id="12100">12100</a>
+<a href="#12101" id="12101">12101</a>
+<a href="#12102" id="12102">12102</a>
+<a href="#12103" id="12103">12103</a>
+<a href="#12104" id="12104">12104</a>
+<a href="#12105" id="12105">12105</a>
+<a href="#12106" id="12106">12106</a>
+<a href="#12107" id="12107">12107</a>
+<a href="#12108" id="12108">12108</a>
+<a href="#12109" id="12109">12109</a>
+<a href="#12110" id="12110">12110</a>
+<a href="#12111" id="12111">12111</a>
+<a href="#12112" id="12112">12112</a>
+<a href="#12113" id="12113">12113</a>
+<a href="#12114" id="12114">12114</a>
+<a href="#12115" id="12115">12115</a>
+<a href="#12116" id="12116">12116</a>
+<a href="#12117" id="12117">12117</a>
+<a href="#12118" id="12118">12118</a>
+<a href="#12119" id="12119">12119</a>
+<a href="#12120" id="12120">12120</a>
+<a href="#12121" id="12121">12121</a>
+<a href="#12122" id="12122">12122</a>
+<a href="#12123" id="12123">12123</a>
+<a href="#12124" id="12124">12124</a>
+<a href="#12125" id="12125">12125</a>
+<a href="#12126" id="12126">12126</a>
+<a href="#12127" id="12127">12127</a>
+<a href="#12128" id="12128">12128</a>
+<a href="#12129" id="12129">12129</a>
+<a href="#12130" id="12130">12130</a>
+<a href="#12131" id="12131">12131</a>
+<a href="#12132" id="12132">12132</a>
+<a href="#12133" id="12133">12133</a>
+<a href="#12134" id="12134">12134</a>
+<a href="#12135" id="12135">12135</a>
+<a href="#12136" id="12136">12136</a>
+<a href="#12137" id="12137">12137</a>
+<a href="#12138" id="12138">12138</a>
+<a href="#12139" id="12139">12139</a>
+<a href="#12140" id="12140">12140</a>
+<a href="#12141" id="12141">12141</a>
+<a href="#12142" id="12142">12142</a>
+<a href="#12143" id="12143">12143</a>
+<a href="#12144" id="12144">12144</a>
+<a href="#12145" id="12145">12145</a>
+<a href="#12146" id="12146">12146</a>
+<a href="#12147" id="12147">12147</a>
+<a href="#12148" id="12148">12148</a>
+<a href="#12149" id="12149">12149</a>
+<a href="#12150" id="12150">12150</a>
+<a href="#12151" id="12151">12151</a>
+<a href="#12152" id="12152">12152</a>
+<a href="#12153" id="12153">12153</a>
+<a href="#12154" id="12154">12154</a>
+<a href="#12155" id="12155">12155</a>
+<a href="#12156" id="12156">12156</a>
+<a href="#12157" id="12157">12157</a>
+<a href="#12158" id="12158">12158</a>
+<a href="#12159" id="12159">12159</a>
+<a href="#12160" id="12160">12160</a>
+<a href="#12161" id="12161">12161</a>
+<a href="#12162" id="12162">12162</a>
+<a href="#12163" id="12163">12163</a>
+<a href="#12164" id="12164">12164</a>
+<a href="#12165" id="12165">12165</a>
+<a href="#12166" id="12166">12166</a>
+<a href="#12167" id="12167">12167</a>
+<a href="#12168" id="12168">12168</a>
+<a href="#12169" id="12169">12169</a>
+<a href="#12170" id="12170">12170</a>
+<a href="#12171" id="12171">12171</a>
+<a href="#12172" id="12172">12172</a>
+<a href="#12173" id="12173">12173</a>
+<a href="#12174" id="12174">12174</a>
+<a href="#12175" id="12175">12175</a>
+<a href="#12176" id="12176">12176</a>
+<a href="#12177" id="12177">12177</a>
+<a href="#12178" id="12178">12178</a>
+<a href="#12179" id="12179">12179</a>
+<a href="#12180" id="12180">12180</a>
+<a href="#12181" id="12181">12181</a>
+<a href="#12182" id="12182">12182</a>
+<a href="#12183" id="12183">12183</a>
+<a href="#12184" id="12184">12184</a>
+<a href="#12185" id="12185">12185</a>
+<a href="#12186" id="12186">12186</a>
+<a href="#12187" id="12187">12187</a>
+<a href="#12188" id="12188">12188</a>
+<a href="#12189" id="12189">12189</a>
+<a href="#12190" id="12190">12190</a>
+<a href="#12191" id="12191">12191</a>
+<a href="#12192" id="12192">12192</a>
+<a href="#12193" id="12193">12193</a>
+<a href="#12194" id="12194">12194</a>
+<a href="#12195" id="12195">12195</a>
+<a href="#12196" id="12196">12196</a>
+<a href="#12197" id="12197">12197</a>
+<a href="#12198" id="12198">12198</a>
+<a href="#12199" id="12199">12199</a>
+<a href="#12200" id="12200">12200</a>
+<a href="#12201" id="12201">12201</a>
+<a href="#12202" id="12202">12202</a>
+<a href="#12203" id="12203">12203</a>
+<a href="#12204" id="12204">12204</a>
+<a href="#12205" id="12205">12205</a>
+<a href="#12206" id="12206">12206</a>
+<a href="#12207" id="12207">12207</a>
+<a href="#12208" id="12208">12208</a>
+<a href="#12209" id="12209">12209</a>
+<a href="#12210" id="12210">12210</a>
+<a href="#12211" id="12211">12211</a>
+<a href="#12212" id="12212">12212</a>
+<a href="#12213" id="12213">12213</a>
+<a href="#12214" id="12214">12214</a>
+<a href="#12215" id="12215">12215</a>
+<a href="#12216" id="12216">12216</a>
+<a href="#12217" id="12217">12217</a>
+<a href="#12218" id="12218">12218</a>
+<a href="#12219" id="12219">12219</a>
+<a href="#12220" id="12220">12220</a>
+<a href="#12221" id="12221">12221</a>
+<a href="#12222" id="12222">12222</a>
+<a href="#12223" id="12223">12223</a>
+<a href="#12224" id="12224">12224</a>
+<a href="#12225" id="12225">12225</a>
+<a href="#12226" id="12226">12226</a>
+<a href="#12227" id="12227">12227</a>
+<a href="#12228" id="12228">12228</a>
+<a href="#12229" id="12229">12229</a>
+<a href="#12230" id="12230">12230</a>
+<a href="#12231" id="12231">12231</a>
+<a href="#12232" id="12232">12232</a>
+<a href="#12233" id="12233">12233</a>
+<a href="#12234" id="12234">12234</a>
+<a href="#12235" id="12235">12235</a>
+<a href="#12236" id="12236">12236</a>
+<a href="#12237" id="12237">12237</a>
+<a href="#12238" id="12238">12238</a>
+<a href="#12239" id="12239">12239</a>
+<a href="#12240" id="12240">12240</a>
+<a href="#12241" id="12241">12241</a>
+<a href="#12242" id="12242">12242</a>
+<a href="#12243" id="12243">12243</a>
+<a href="#12244" id="12244">12244</a>
+<a href="#12245" id="12245">12245</a>
+<a href="#12246" id="12246">12246</a>
+<a href="#12247" id="12247">12247</a>
+<a href="#12248" id="12248">12248</a>
+<a href="#12249" id="12249">12249</a>
+<a href="#12250" id="12250">12250</a>
+<a href="#12251" id="12251">12251</a>
+<a href="#12252" id="12252">12252</a>
+<a href="#12253" id="12253">12253</a>
+<a href="#12254" id="12254">12254</a>
+<a href="#12255" id="12255">12255</a>
+<a href="#12256" id="12256">12256</a>
+<a href="#12257" id="12257">12257</a>
+<a href="#12258" id="12258">12258</a>
+<a href="#12259" id="12259">12259</a>
+<a href="#12260" id="12260">12260</a>
+<a href="#12261" id="12261">12261</a>
+<a href="#12262" id="12262">12262</a>
+<a href="#12263" id="12263">12263</a>
+<a href="#12264" id="12264">12264</a>
+<a href="#12265" id="12265">12265</a>
+<a href="#12266" id="12266">12266</a>
+<a href="#12267" id="12267">12267</a>
+<a href="#12268" id="12268">12268</a>
+<a href="#12269" id="12269">12269</a>
+<a href="#12270" id="12270">12270</a>
+<a href="#12271" id="12271">12271</a>
+<a href="#12272" id="12272">12272</a>
+<a href="#12273" id="12273">12273</a>
+<a href="#12274" id="12274">12274</a>
+<a href="#12275" id="12275">12275</a>
+<a href="#12276" id="12276">12276</a>
+<a href="#12277" id="12277">12277</a>
+<a href="#12278" id="12278">12278</a>
+<a href="#12279" id="12279">12279</a>
+<a href="#12280" id="12280">12280</a>
+<a href="#12281" id="12281">12281</a>
+<a href="#12282" id="12282">12282</a>
+<a href="#12283" id="12283">12283</a>
+<a href="#12284" id="12284">12284</a>
+<a href="#12285" id="12285">12285</a>
+<a href="#12286" id="12286">12286</a>
+<a href="#12287" id="12287">12287</a>
+<a href="#12288" id="12288">12288</a>
+<a href="#12289" id="12289">12289</a>
+<a href="#12290" id="12290">12290</a>
+<a href="#12291" id="12291">12291</a>
+<a href="#12292" id="12292">12292</a>
+<a href="#12293" id="12293">12293</a>
+<a href="#12294" id="12294">12294</a>
+<a href="#12295" id="12295">12295</a>
+<a href="#12296" id="12296">12296</a>
+<a href="#12297" id="12297">12297</a>
+<a href="#12298" id="12298">12298</a>
+<a href="#12299" id="12299">12299</a>
+<a href="#12300" id="12300">12300</a>
+<a href="#12301" id="12301">12301</a>
+<a href="#12302" id="12302">12302</a>
+<a href="#12303" id="12303">12303</a>
+<a href="#12304" id="12304">12304</a>
+<a href="#12305" id="12305">12305</a>
+<a href="#12306" id="12306">12306</a>
+<a href="#12307" id="12307">12307</a>
+<a href="#12308" id="12308">12308</a>
+<a href="#12309" id="12309">12309</a>
+<a href="#12310" id="12310">12310</a>
+<a href="#12311" id="12311">12311</a>
+<a href="#12312" id="12312">12312</a>
+<a href="#12313" id="12313">12313</a>
+<a href="#12314" id="12314">12314</a>
+<a href="#12315" id="12315">12315</a>
+<a href="#12316" id="12316">12316</a>
+<a href="#12317" id="12317">12317</a>
+<a href="#12318" id="12318">12318</a>
+<a href="#12319" id="12319">12319</a>
+<a href="#12320" id="12320">12320</a>
+<a href="#12321" id="12321">12321</a>
+<a href="#12322" id="12322">12322</a>
+<a href="#12323" id="12323">12323</a>
+<a href="#12324" id="12324">12324</a>
+<a href="#12325" id="12325">12325</a>
+<a href="#12326" id="12326">12326</a>
+<a href="#12327" id="12327">12327</a>
+<a href="#12328" id="12328">12328</a>
+<a href="#12329" id="12329">12329</a>
+<a href="#12330" id="12330">12330</a>
+<a href="#12331" id="12331">12331</a>
+<a href="#12332" id="12332">12332</a>
+<a href="#12333" id="12333">12333</a>
+<a href="#12334" id="12334">12334</a>
+<a href="#12335" id="12335">12335</a>
+<a href="#12336" id="12336">12336</a>
+<a href="#12337" id="12337">12337</a>
+<a href="#12338" id="12338">12338</a>
+<a href="#12339" id="12339">12339</a>
+<a href="#12340" id="12340">12340</a>
+<a href="#12341" id="12341">12341</a>
+<a href="#12342" id="12342">12342</a>
+<a href="#12343" id="12343">12343</a>
+<a href="#12344" id="12344">12344</a>
+<a href="#12345" id="12345">12345</a>
+<a href="#12346" id="12346">12346</a>
+<a href="#12347" id="12347">12347</a>
+<a href="#12348" id="12348">12348</a>
+<a href="#12349" id="12349">12349</a>
+<a href="#12350" id="12350">12350</a>
+<a href="#12351" id="12351">12351</a>
+<a href="#12352" id="12352">12352</a>
+<a href="#12353" id="12353">12353</a>
+<a href="#12354" id="12354">12354</a>
+<a href="#12355" id="12355">12355</a>
+<a href="#12356" id="12356">12356</a>
+<a href="#12357" id="12357">12357</a>
+<a href="#12358" id="12358">12358</a>
+<a href="#12359" id="12359">12359</a>
+<a href="#12360" id="12360">12360</a>
+<a href="#12361" id="12361">12361</a>
+<a href="#12362" id="12362">12362</a>
+<a href="#12363" id="12363">12363</a>
+<a href="#12364" id="12364">12364</a>
+<a href="#12365" id="12365">12365</a>
+<a href="#12366" id="12366">12366</a>
+<a href="#12367" id="12367">12367</a>
+<a href="#12368" id="12368">12368</a>
+<a href="#12369" id="12369">12369</a>
+<a href="#12370" id="12370">12370</a>
+<a href="#12371" id="12371">12371</a>
+<a href="#12372" id="12372">12372</a>
+<a href="#12373" id="12373">12373</a>
+<a href="#12374" id="12374">12374</a>
+<a href="#12375" id="12375">12375</a>
+<a href="#12376" id="12376">12376</a>
+<a href="#12377" id="12377">12377</a>
+<a href="#12378" id="12378">12378</a>
+<a href="#12379" id="12379">12379</a>
+<a href="#12380" id="12380">12380</a>
+<a href="#12381" id="12381">12381</a>
+<a href="#12382" id="12382">12382</a>
+<a href="#12383" id="12383">12383</a>
+<a href="#12384" id="12384">12384</a>
+<a href="#12385" id="12385">12385</a>
+<a href="#12386" id="12386">12386</a>
+<a href="#12387" id="12387">12387</a>
+<a href="#12388" id="12388">12388</a>
+<a href="#12389" id="12389">12389</a>
+<a href="#12390" id="12390">12390</a>
+<a href="#12391" id="12391">12391</a>
+<a href="#12392" id="12392">12392</a>
+<a href="#12393" id="12393">12393</a>
+<a href="#12394" id="12394">12394</a>
+<a href="#12395" id="12395">12395</a>
+<a href="#12396" id="12396">12396</a>
+<a href="#12397" id="12397">12397</a>
+<a href="#12398" id="12398">12398</a>
+<a href="#12399" id="12399">12399</a>
+<a href="#12400" id="12400">12400</a>
+<a href="#12401" id="12401">12401</a>
+<a href="#12402" id="12402">12402</a>
+<a href="#12403" id="12403">12403</a>
+<a href="#12404" id="12404">12404</a>
+<a href="#12405" id="12405">12405</a>
+<a href="#12406" id="12406">12406</a>
+<a href="#12407" id="12407">12407</a>
+<a href="#12408" id="12408">12408</a>
+<a href="#12409" id="12409">12409</a>
+<a href="#12410" id="12410">12410</a>
+<a href="#12411" id="12411">12411</a>
+<a href="#12412" id="12412">12412</a>
+<a href="#12413" id="12413">12413</a>
+<a href="#12414" id="12414">12414</a>
+<a href="#12415" id="12415">12415</a>
+<a href="#12416" id="12416">12416</a>
+<a href="#12417" id="12417">12417</a>
+<a href="#12418" id="12418">12418</a>
+<a href="#12419" id="12419">12419</a>
+<a href="#12420" id="12420">12420</a>
+<a href="#12421" id="12421">12421</a>
+<a href="#12422" id="12422">12422</a>
+<a href="#12423" id="12423">12423</a>
+<a href="#12424" id="12424">12424</a>
+<a href="#12425" id="12425">12425</a>
+<a href="#12426" id="12426">12426</a>
+<a href="#12427" id="12427">12427</a>
+<a href="#12428" id="12428">12428</a>
+<a href="#12429" id="12429">12429</a>
+<a href="#12430" id="12430">12430</a>
+<a href="#12431" id="12431">12431</a>
+<a href="#12432" id="12432">12432</a>
+<a href="#12433" id="12433">12433</a>
+<a href="#12434" id="12434">12434</a>
+<a href="#12435" id="12435">12435</a>
+<a href="#12436" id="12436">12436</a>
+<a href="#12437" id="12437">12437</a>
+<a href="#12438" id="12438">12438</a>
+<a href="#12439" id="12439">12439</a>
+<a href="#12440" id="12440">12440</a>
+<a href="#12441" id="12441">12441</a>
+<a href="#12442" id="12442">12442</a>
+<a href="#12443" id="12443">12443</a>
+<a href="#12444" id="12444">12444</a>
+<a href="#12445" id="12445">12445</a>
+<a href="#12446" id="12446">12446</a>
+<a href="#12447" id="12447">12447</a>
+<a href="#12448" id="12448">12448</a>
+<a href="#12449" id="12449">12449</a>
+<a href="#12450" id="12450">12450</a>
+<a href="#12451" id="12451">12451</a>
+<a href="#12452" id="12452">12452</a>
+<a href="#12453" id="12453">12453</a>
+<a href="#12454" id="12454">12454</a>
+<a href="#12455" id="12455">12455</a>
+<a href="#12456" id="12456">12456</a>
+<a href="#12457" id="12457">12457</a>
+<a href="#12458" id="12458">12458</a>
+<a href="#12459" id="12459">12459</a>
+<a href="#12460" id="12460">12460</a>
+<a href="#12461" id="12461">12461</a>
+<a href="#12462" id="12462">12462</a>
+<a href="#12463" id="12463">12463</a>
+<a href="#12464" id="12464">12464</a>
+<a href="#12465" id="12465">12465</a>
+<a href="#12466" id="12466">12466</a>
+<a href="#12467" id="12467">12467</a>
+<a href="#12468" id="12468">12468</a>
+<a href="#12469" id="12469">12469</a>
+<a href="#12470" id="12470">12470</a>
+<a href="#12471" id="12471">12471</a>
+<a href="#12472" id="12472">12472</a>
+<a href="#12473" id="12473">12473</a>
+<a href="#12474" id="12474">12474</a>
+<a href="#12475" id="12475">12475</a>
+<a href="#12476" id="12476">12476</a>
+<a href="#12477" id="12477">12477</a>
+<a href="#12478" id="12478">12478</a>
+<a href="#12479" id="12479">12479</a>
+<a href="#12480" id="12480">12480</a>
+<a href="#12481" id="12481">12481</a>
+<a href="#12482" id="12482">12482</a>
+<a href="#12483" id="12483">12483</a>
+<a href="#12484" id="12484">12484</a>
+<a href="#12485" id="12485">12485</a>
+<a href="#12486" id="12486">12486</a>
+<a href="#12487" id="12487">12487</a>
+<a href="#12488" id="12488">12488</a>
+<a href="#12489" id="12489">12489</a>
+<a href="#12490" id="12490">12490</a>
+<a href="#12491" id="12491">12491</a>
+<a href="#12492" id="12492">12492</a>
+<a href="#12493" id="12493">12493</a>
+<a href="#12494" id="12494">12494</a>
+<a href="#12495" id="12495">12495</a>
+<a href="#12496" id="12496">12496</a>
+<a href="#12497" id="12497">12497</a>
+<a href="#12498" id="12498">12498</a>
+<a href="#12499" id="12499">12499</a>
+<a href="#12500" id="12500">12500</a>
+<a href="#12501" id="12501">12501</a>
+<a href="#12502" id="12502">12502</a>
+<a href="#12503" id="12503">12503</a>
+<a href="#12504" id="12504">12504</a>
+<a href="#12505" id="12505">12505</a>
+<a href="#12506" id="12506">12506</a>
+<a href="#12507" id="12507">12507</a>
+<a href="#12508" id="12508">12508</a>
+<a href="#12509" id="12509">12509</a>
+<a href="#12510" id="12510">12510</a>
+<a href="#12511" id="12511">12511</a>
+<a href="#12512" id="12512">12512</a>
+<a href="#12513" id="12513">12513</a>
+<a href="#12514" id="12514">12514</a>
+<a href="#12515" id="12515">12515</a>
+<a href="#12516" id="12516">12516</a>
+<a href="#12517" id="12517">12517</a>
+<a href="#12518" id="12518">12518</a>
+<a href="#12519" id="12519">12519</a>
+<a href="#12520" id="12520">12520</a>
+<a href="#12521" id="12521">12521</a>
+<a href="#12522" id="12522">12522</a>
+<a href="#12523" id="12523">12523</a>
+<a href="#12524" id="12524">12524</a>
+<a href="#12525" id="12525">12525</a>
+<a href="#12526" id="12526">12526</a>
+<a href="#12527" id="12527">12527</a>
+<a href="#12528" id="12528">12528</a>
+<a href="#12529" id="12529">12529</a>
+<a href="#12530" id="12530">12530</a>
+<a href="#12531" id="12531">12531</a>
+<a href="#12532" id="12532">12532</a>
+<a href="#12533" id="12533">12533</a>
+<a href="#12534" id="12534">12534</a>
+<a href="#12535" id="12535">12535</a>
+<a href="#12536" id="12536">12536</a>
+<a href="#12537" id="12537">12537</a>
+<a href="#12538" id="12538">12538</a>
+<a href="#12539" id="12539">12539</a>
+<a href="#12540" id="12540">12540</a>
+<a href="#12541" id="12541">12541</a>
+<a href="#12542" id="12542">12542</a>
+<a href="#12543" id="12543">12543</a>
+<a href="#12544" id="12544">12544</a>
+<a href="#12545" id="12545">12545</a>
+<a href="#12546" id="12546">12546</a>
+<a href="#12547" id="12547">12547</a>
+<a href="#12548" id="12548">12548</a>
+<a href="#12549" id="12549">12549</a>
+<a href="#12550" id="12550">12550</a>
+<a href="#12551" id="12551">12551</a>
+<a href="#12552" id="12552">12552</a>
+<a href="#12553" id="12553">12553</a>
+<a href="#12554" id="12554">12554</a>
+<a href="#12555" id="12555">12555</a>
+<a href="#12556" id="12556">12556</a>
+<a href="#12557" id="12557">12557</a>
+<a href="#12558" id="12558">12558</a>
+<a href="#12559" id="12559">12559</a>
+<a href="#12560" id="12560">12560</a>
+<a href="#12561" id="12561">12561</a>
+<a href="#12562" id="12562">12562</a>
+<a href="#12563" id="12563">12563</a>
+<a href="#12564" id="12564">12564</a>
+<a href="#12565" id="12565">12565</a>
+<a href="#12566" id="12566">12566</a>
+<a href="#12567" id="12567">12567</a>
+<a href="#12568" id="12568">12568</a>
+<a href="#12569" id="12569">12569</a>
+<a href="#12570" id="12570">12570</a>
+<a href="#12571" id="12571">12571</a>
+<a href="#12572" id="12572">12572</a>
+<a href="#12573" id="12573">12573</a>
+<a href="#12574" id="12574">12574</a>
+<a href="#12575" id="12575">12575</a>
+<a href="#12576" id="12576">12576</a>
+<a href="#12577" id="12577">12577</a>
+<a href="#12578" id="12578">12578</a>
+<a href="#12579" id="12579">12579</a>
+<a href="#12580" id="12580">12580</a>
+<a href="#12581" id="12581">12581</a>
+<a href="#12582" id="12582">12582</a>
+<a href="#12583" id="12583">12583</a>
+<a href="#12584" id="12584">12584</a>
+<a href="#12585" id="12585">12585</a>
+<a href="#12586" id="12586">12586</a>
+<a href="#12587" id="12587">12587</a>
+<a href="#12588" id="12588">12588</a>
+<a href="#12589" id="12589">12589</a>
+<a href="#12590" id="12590">12590</a>
+<a href="#12591" id="12591">12591</a>
+<a href="#12592" id="12592">12592</a>
+<a href="#12593" id="12593">12593</a>
+<a href="#12594" id="12594">12594</a>
+<a href="#12595" id="12595">12595</a>
+<a href="#12596" id="12596">12596</a>
+<a href="#12597" id="12597">12597</a>
+<a href="#12598" id="12598">12598</a>
+<a href="#12599" id="12599">12599</a>
+<a href="#12600" id="12600">12600</a>
+<a href="#12601" id="12601">12601</a>
+<a href="#12602" id="12602">12602</a>
+<a href="#12603" id="12603">12603</a>
+<a href="#12604" id="12604">12604</a>
+<a href="#12605" id="12605">12605</a>
+<a href="#12606" id="12606">12606</a>
+<a href="#12607" id="12607">12607</a>
+<a href="#12608" id="12608">12608</a>
+<a href="#12609" id="12609">12609</a>
+<a href="#12610" id="12610">12610</a>
+<a href="#12611" id="12611">12611</a>
+<a href="#12612" id="12612">12612</a>
+<a href="#12613" id="12613">12613</a>
+<a href="#12614" id="12614">12614</a>
+<a href="#12615" id="12615">12615</a>
+<a href="#12616" id="12616">12616</a>
+<a href="#12617" id="12617">12617</a>
+<a href="#12618" id="12618">12618</a>
+<a href="#12619" id="12619">12619</a>
+<a href="#12620" id="12620">12620</a>
+<a href="#12621" id="12621">12621</a>
+<a href="#12622" id="12622">12622</a>
+<a href="#12623" id="12623">12623</a>
+<a href="#12624" id="12624">12624</a>
+<a href="#12625" id="12625">12625</a>
+<a href="#12626" id="12626">12626</a>
+<a href="#12627" id="12627">12627</a>
+<a href="#12628" id="12628">12628</a>
+<a href="#12629" id="12629">12629</a>
+<a href="#12630" id="12630">12630</a>
+<a href="#12631" id="12631">12631</a>
+<a href="#12632" id="12632">12632</a>
+<a href="#12633" id="12633">12633</a>
+<a href="#12634" id="12634">12634</a>
+<a href="#12635" id="12635">12635</a>
+<a href="#12636" id="12636">12636</a>
+<a href="#12637" id="12637">12637</a>
+<a href="#12638" id="12638">12638</a>
+<a href="#12639" id="12639">12639</a>
+<a href="#12640" id="12640">12640</a>
+<a href="#12641" id="12641">12641</a>
+<a href="#12642" id="12642">12642</a>
+<a href="#12643" id="12643">12643</a>
+<a href="#12644" id="12644">12644</a>
+<a href="#12645" id="12645">12645</a>
+<a href="#12646" id="12646">12646</a>
+<a href="#12647" id="12647">12647</a>
+<a href="#12648" id="12648">12648</a>
+<a href="#12649" id="12649">12649</a>
+<a href="#12650" id="12650">12650</a>
+<a href="#12651" id="12651">12651</a>
+<a href="#12652" id="12652">12652</a>
+<a href="#12653" id="12653">12653</a>
+<a href="#12654" id="12654">12654</a>
+<a href="#12655" id="12655">12655</a>
+<a href="#12656" id="12656">12656</a>
+<a href="#12657" id="12657">12657</a>
+<a href="#12658" id="12658">12658</a>
+<a href="#12659" id="12659">12659</a>
+<a href="#12660" id="12660">12660</a>
+<a href="#12661" id="12661">12661</a>
+<a href="#12662" id="12662">12662</a>
+<a href="#12663" id="12663">12663</a>
+<a href="#12664" id="12664">12664</a>
+<a href="#12665" id="12665">12665</a>
+<a href="#12666" id="12666">12666</a>
+<a href="#12667" id="12667">12667</a>
+<a href="#12668" id="12668">12668</a>
+<a href="#12669" id="12669">12669</a>
+<a href="#12670" id="12670">12670</a>
+<a href="#12671" id="12671">12671</a>
+<a href="#12672" id="12672">12672</a>
+<a href="#12673" id="12673">12673</a>
+<a href="#12674" id="12674">12674</a>
+<a href="#12675" id="12675">12675</a>
+<a href="#12676" id="12676">12676</a>
+<a href="#12677" id="12677">12677</a>
+<a href="#12678" id="12678">12678</a>
+<a href="#12679" id="12679">12679</a>
+<a href="#12680" id="12680">12680</a>
+<a href="#12681" id="12681">12681</a>
+<a href="#12682" id="12682">12682</a>
+<a href="#12683" id="12683">12683</a>
+<a href="#12684" id="12684">12684</a>
+<a href="#12685" id="12685">12685</a>
+<a href="#12686" id="12686">12686</a>
+<a href="#12687" id="12687">12687</a>
+<a href="#12688" id="12688">12688</a>
+<a href="#12689" id="12689">12689</a>
+<a href="#12690" id="12690">12690</a>
+<a href="#12691" id="12691">12691</a>
+<a href="#12692" id="12692">12692</a>
+<a href="#12693" id="12693">12693</a>
+<a href="#12694" id="12694">12694</a>
+<a href="#12695" id="12695">12695</a>
+<a href="#12696" id="12696">12696</a>
+<a href="#12697" id="12697">12697</a>
+<a href="#12698" id="12698">12698</a>
+<a href="#12699" id="12699">12699</a>
+<a href="#12700" id="12700">12700</a>
+<a href="#12701" id="12701">12701</a>
+<a href="#12702" id="12702">12702</a>
+<a href="#12703" id="12703">12703</a>
+<a href="#12704" id="12704">12704</a>
+<a href="#12705" id="12705">12705</a>
+<a href="#12706" id="12706">12706</a>
+<a href="#12707" id="12707">12707</a>
+<a href="#12708" id="12708">12708</a>
+<a href="#12709" id="12709">12709</a>
+<a href="#12710" id="12710">12710</a>
+<a href="#12711" id="12711">12711</a>
+<a href="#12712" id="12712">12712</a>
+<a href="#12713" id="12713">12713</a>
+<a href="#12714" id="12714">12714</a>
+<a href="#12715" id="12715">12715</a>
+<a href="#12716" id="12716">12716</a>
+<a href="#12717" id="12717">12717</a>
+<a href="#12718" id="12718">12718</a>
+<a href="#12719" id="12719">12719</a>
+<a href="#12720" id="12720">12720</a>
+<a href="#12721" id="12721">12721</a>
+<a href="#12722" id="12722">12722</a>
+<a href="#12723" id="12723">12723</a>
+<a href="#12724" id="12724">12724</a>
+<a href="#12725" id="12725">12725</a>
+<a href="#12726" id="12726">12726</a>
+<a href="#12727" id="12727">12727</a>
+<a href="#12728" id="12728">12728</a>
+<a href="#12729" id="12729">12729</a>
+<a href="#12730" id="12730">12730</a>
+<a href="#12731" id="12731">12731</a>
+<a href="#12732" id="12732">12732</a>
+<a href="#12733" id="12733">12733</a>
+<a href="#12734" id="12734">12734</a>
+<a href="#12735" id="12735">12735</a>
+<a href="#12736" id="12736">12736</a>
+<a href="#12737" id="12737">12737</a>
+<a href="#12738" id="12738">12738</a>
+<a href="#12739" id="12739">12739</a>
+<a href="#12740" id="12740">12740</a>
+<a href="#12741" id="12741">12741</a>
+<a href="#12742" id="12742">12742</a>
+<a href="#12743" id="12743">12743</a>
+<a href="#12744" id="12744">12744</a>
+<a href="#12745" id="12745">12745</a>
+<a href="#12746" id="12746">12746</a>
+<a href="#12747" id="12747">12747</a>
+<a href="#12748" id="12748">12748</a>
+<a href="#12749" id="12749">12749</a>
+<a href="#12750" id="12750">12750</a>
+<a href="#12751" id="12751">12751</a>
+<a href="#12752" id="12752">12752</a>
+<a href="#12753" id="12753">12753</a>
+<a href="#12754" id="12754">12754</a>
+<a href="#12755" id="12755">12755</a>
+<a href="#12756" id="12756">12756</a>
+<a href="#12757" id="12757">12757</a>
+<a href="#12758" id="12758">12758</a>
+<a href="#12759" id="12759">12759</a>
+<a href="#12760" id="12760">12760</a>
+<a href="#12761" id="12761">12761</a>
+<a href="#12762" id="12762">12762</a>
+<a href="#12763" id="12763">12763</a>
+<a href="#12764" id="12764">12764</a>
+<a href="#12765" id="12765">12765</a>
+<a href="#12766" id="12766">12766</a>
+<a href="#12767" id="12767">12767</a>
+<a href="#12768" id="12768">12768</a>
+<a href="#12769" id="12769">12769</a>
+<a href="#12770" id="12770">12770</a>
+<a href="#12771" id="12771">12771</a>
+<a href="#12772" id="12772">12772</a>
+<a href="#12773" id="12773">12773</a>
+<a href="#12774" id="12774">12774</a>
+<a href="#12775" id="12775">12775</a>
+<a href="#12776" id="12776">12776</a>
+<a href="#12777" id="12777">12777</a>
+<a href="#12778" id="12778">12778</a>
+<a href="#12779" id="12779">12779</a>
+<a href="#12780" id="12780">12780</a>
+<a href="#12781" id="12781">12781</a>
+<a href="#12782" id="12782">12782</a>
+<a href="#12783" id="12783">12783</a>
+<a href="#12784" id="12784">12784</a>
+<a href="#12785" id="12785">12785</a>
+<a href="#12786" id="12786">12786</a>
+<a href="#12787" id="12787">12787</a>
+<a href="#12788" id="12788">12788</a>
+<a href="#12789" id="12789">12789</a>
+<a href="#12790" id="12790">12790</a>
+<a href="#12791" id="12791">12791</a>
+<a href="#12792" id="12792">12792</a>
+<a href="#12793" id="12793">12793</a>
+<a href="#12794" id="12794">12794</a>
+<a href="#12795" id="12795">12795</a>
+<a href="#12796" id="12796">12796</a>
+<a href="#12797" id="12797">12797</a>
+<a href="#12798" id="12798">12798</a>
+<a href="#12799" id="12799">12799</a>
+<a href="#12800" id="12800">12800</a>
+<a href="#12801" id="12801">12801</a>
+<a href="#12802" id="12802">12802</a>
+<a href="#12803" id="12803">12803</a>
+<a href="#12804" id="12804">12804</a>
+<a href="#12805" id="12805">12805</a>
+<a href="#12806" id="12806">12806</a>
+<a href="#12807" id="12807">12807</a>
+<a href="#12808" id="12808">12808</a>
+<a href="#12809" id="12809">12809</a>
+<a href="#12810" id="12810">12810</a>
+<a href="#12811" id="12811">12811</a>
+<a href="#12812" id="12812">12812</a>
+<a href="#12813" id="12813">12813</a>
+<a href="#12814" id="12814">12814</a>
+<a href="#12815" id="12815">12815</a>
+<a href="#12816" id="12816">12816</a>
+<a href="#12817" id="12817">12817</a>
+<a href="#12818" id="12818">12818</a>
+<a href="#12819" id="12819">12819</a>
+<a href="#12820" id="12820">12820</a>
+<a href="#12821" id="12821">12821</a>
+<a href="#12822" id="12822">12822</a>
+<a href="#12823" id="12823">12823</a>
+<a href="#12824" id="12824">12824</a>
+<a href="#12825" id="12825">12825</a>
+<a href="#12826" id="12826">12826</a>
+<a href="#12827" id="12827">12827</a>
+<a href="#12828" id="12828">12828</a>
+<a href="#12829" id="12829">12829</a>
+<a href="#12830" id="12830">12830</a>
+<a href="#12831" id="12831">12831</a>
+<a href="#12832" id="12832">12832</a>
+<a href="#12833" id="12833">12833</a>
+<a href="#12834" id="12834">12834</a>
+<a href="#12835" id="12835">12835</a>
+<a href="#12836" id="12836">12836</a>
+<a href="#12837" id="12837">12837</a>
+<a href="#12838" id="12838">12838</a>
+<a href="#12839" id="12839">12839</a>
+<a href="#12840" id="12840">12840</a>
+<a href="#12841" id="12841">12841</a>
+<a href="#12842" id="12842">12842</a>
+<a href="#12843" id="12843">12843</a>
+<a href="#12844" id="12844">12844</a>
+<a href="#12845" id="12845">12845</a>
+<a href="#12846" id="12846">12846</a>
+<a href="#12847" id="12847">12847</a>
+<a href="#12848" id="12848">12848</a>
+<a href="#12849" id="12849">12849</a>
+<a href="#12850" id="12850">12850</a>
+<a href="#12851" id="12851">12851</a>
+<a href="#12852" id="12852">12852</a>
+<a href="#12853" id="12853">12853</a>
+<a href="#12854" id="12854">12854</a>
+<a href="#12855" id="12855">12855</a>
+<a href="#12856" id="12856">12856</a>
+<a href="#12857" id="12857">12857</a>
+<a href="#12858" id="12858">12858</a>
+<a href="#12859" id="12859">12859</a>
+<a href="#12860" id="12860">12860</a>
+<a href="#12861" id="12861">12861</a>
+<a href="#12862" id="12862">12862</a>
+<a href="#12863" id="12863">12863</a>
+<a href="#12864" id="12864">12864</a>
+<a href="#12865" id="12865">12865</a>
+<a href="#12866" id="12866">12866</a>
+<a href="#12867" id="12867">12867</a>
+<a href="#12868" id="12868">12868</a>
+<a href="#12869" id="12869">12869</a>
+<a href="#12870" id="12870">12870</a>
+<a href="#12871" id="12871">12871</a>
+<a href="#12872" id="12872">12872</a>
+<a href="#12873" id="12873">12873</a>
+<a href="#12874" id="12874">12874</a>
+<a href="#12875" id="12875">12875</a>
+<a href="#12876" id="12876">12876</a>
+<a href="#12877" id="12877">12877</a>
+<a href="#12878" id="12878">12878</a>
+<a href="#12879" id="12879">12879</a>
+<a href="#12880" id="12880">12880</a>
+<a href="#12881" id="12881">12881</a>
+<a href="#12882" id="12882">12882</a>
+<a href="#12883" id="12883">12883</a>
+<a href="#12884" id="12884">12884</a>
+<a href="#12885" id="12885">12885</a>
+<a href="#12886" id="12886">12886</a>
+<a href="#12887" id="12887">12887</a>
+<a href="#12888" id="12888">12888</a>
+<a href="#12889" id="12889">12889</a>
+<a href="#12890" id="12890">12890</a>
+<a href="#12891" id="12891">12891</a>
+<a href="#12892" id="12892">12892</a>
+<a href="#12893" id="12893">12893</a>
+<a href="#12894" id="12894">12894</a>
+<a href="#12895" id="12895">12895</a>
+<a href="#12896" id="12896">12896</a>
+<a href="#12897" id="12897">12897</a>
+<a href="#12898" id="12898">12898</a>
+<a href="#12899" id="12899">12899</a>
+<a href="#12900" id="12900">12900</a>
+<a href="#12901" id="12901">12901</a>
+<a href="#12902" id="12902">12902</a>
+<a href="#12903" id="12903">12903</a>
+<a href="#12904" id="12904">12904</a>
+<a href="#12905" id="12905">12905</a>
+<a href="#12906" id="12906">12906</a>
+<a href="#12907" id="12907">12907</a>
+<a href="#12908" id="12908">12908</a>
+<a href="#12909" id="12909">12909</a>
+<a href="#12910" id="12910">12910</a>
+<a href="#12911" id="12911">12911</a>
+<a href="#12912" id="12912">12912</a>
+<a href="#12913" id="12913">12913</a>
+<a href="#12914" id="12914">12914</a>
+<a href="#12915" id="12915">12915</a>
+<a href="#12916" id="12916">12916</a>
+<a href="#12917" id="12917">12917</a>
+<a href="#12918" id="12918">12918</a>
+<a href="#12919" id="12919">12919</a>
+<a href="#12920" id="12920">12920</a>
+<a href="#12921" id="12921">12921</a>
+<a href="#12922" id="12922">12922</a>
+<a href="#12923" id="12923">12923</a>
+<a href="#12924" id="12924">12924</a>
+<a href="#12925" id="12925">12925</a>
+<a href="#12926" id="12926">12926</a>
+<a href="#12927" id="12927">12927</a>
+<a href="#12928" id="12928">12928</a>
+<a href="#12929" id="12929">12929</a>
+<a href="#12930" id="12930">12930</a>
+<a href="#12931" id="12931">12931</a>
+<a href="#12932" id="12932">12932</a>
+<a href="#12933" id="12933">12933</a>
+<a href="#12934" id="12934">12934</a>
+<a href="#12935" id="12935">12935</a>
+<a href="#12936" id="12936">12936</a>
+<a href="#12937" id="12937">12937</a>
+<a href="#12938" id="12938">12938</a>
+<a href="#12939" id="12939">12939</a>
+<a href="#12940" id="12940">12940</a>
+<a href="#12941" id="12941">12941</a>
+<a href="#12942" id="12942">12942</a>
+<a href="#12943" id="12943">12943</a>
+<a href="#12944" id="12944">12944</a>
+<a href="#12945" id="12945">12945</a>
+<a href="#12946" id="12946">12946</a>
+<a href="#12947" id="12947">12947</a>
+<a href="#12948" id="12948">12948</a>
+<a href="#12949" id="12949">12949</a>
+<a href="#12950" id="12950">12950</a>
+<a href="#12951" id="12951">12951</a>
+<a href="#12952" id="12952">12952</a>
+<a href="#12953" id="12953">12953</a>
+<a href="#12954" id="12954">12954</a>
+<a href="#12955" id="12955">12955</a>
+<a href="#12956" id="12956">12956</a>
+<a href="#12957" id="12957">12957</a>
+<a href="#12958" id="12958">12958</a>
+<a href="#12959" id="12959">12959</a>
+<a href="#12960" id="12960">12960</a>
+<a href="#12961" id="12961">12961</a>
+<a href="#12962" id="12962">12962</a>
+<a href="#12963" id="12963">12963</a>
+<a href="#12964" id="12964">12964</a>
+<a href="#12965" id="12965">12965</a>
+<a href="#12966" id="12966">12966</a>
+<a href="#12967" id="12967">12967</a>
+<a href="#12968" id="12968">12968</a>
+<a href="#12969" id="12969">12969</a>
+<a href="#12970" id="12970">12970</a>
+<a href="#12971" id="12971">12971</a>
+<a href="#12972" id="12972">12972</a>
+<a href="#12973" id="12973">12973</a>
+<a href="#12974" id="12974">12974</a>
+<a href="#12975" id="12975">12975</a>
+<a href="#12976" id="12976">12976</a>
+<a href="#12977" id="12977">12977</a>
+<a href="#12978" id="12978">12978</a>
+<a href="#12979" id="12979">12979</a>
+<a href="#12980" id="12980">12980</a>
+<a href="#12981" id="12981">12981</a>
+<a href="#12982" id="12982">12982</a>
+<a href="#12983" id="12983">12983</a>
+<a href="#12984" id="12984">12984</a>
+<a href="#12985" id="12985">12985</a>
+<a href="#12986" id="12986">12986</a>
+<a href="#12987" id="12987">12987</a>
+<a href="#12988" id="12988">12988</a>
+<a href="#12989" id="12989">12989</a>
+<a href="#12990" id="12990">12990</a>
+<a href="#12991" id="12991">12991</a>
+<a href="#12992" id="12992">12992</a>
+<a href="#12993" id="12993">12993</a>
+<a href="#12994" id="12994">12994</a>
+<a href="#12995" id="12995">12995</a>
+<a href="#12996" id="12996">12996</a>
+<a href="#12997" id="12997">12997</a>
+<a href="#12998" id="12998">12998</a>
+<a href="#12999" id="12999">12999</a>
+<a href="#13000" id="13000">13000</a>
+<a href="#13001" id="13001">13001</a>
+<a href="#13002" id="13002">13002</a>
+<a href="#13003" id="13003">13003</a>
+<a href="#13004" id="13004">13004</a>
+<a href="#13005" id="13005">13005</a>
+<a href="#13006" id="13006">13006</a>
+<a href="#13007" id="13007">13007</a>
+<a href="#13008" id="13008">13008</a>
+<a href="#13009" id="13009">13009</a>
+<a href="#13010" id="13010">13010</a>
+<a href="#13011" id="13011">13011</a>
+<a href="#13012" id="13012">13012</a>
+<a href="#13013" id="13013">13013</a>
+<a href="#13014" id="13014">13014</a>
+<a href="#13015" id="13015">13015</a>
+<a href="#13016" id="13016">13016</a>
+<a href="#13017" id="13017">13017</a>
+<a href="#13018" id="13018">13018</a>
+<a href="#13019" id="13019">13019</a>
+<a href="#13020" id="13020">13020</a>
+<a href="#13021" id="13021">13021</a>
+<a href="#13022" id="13022">13022</a>
+<a href="#13023" id="13023">13023</a>
+<a href="#13024" id="13024">13024</a>
+<a href="#13025" id="13025">13025</a>
+<a href="#13026" id="13026">13026</a>
+<a href="#13027" id="13027">13027</a>
+<a href="#13028" id="13028">13028</a>
+<a href="#13029" id="13029">13029</a>
+<a href="#13030" id="13030">13030</a>
+<a href="#13031" id="13031">13031</a>
+<a href="#13032" id="13032">13032</a>
+<a href="#13033" id="13033">13033</a>
+<a href="#13034" id="13034">13034</a>
+<a href="#13035" id="13035">13035</a>
+<a href="#13036" id="13036">13036</a>
+<a href="#13037" id="13037">13037</a>
+<a href="#13038" id="13038">13038</a>
+<a href="#13039" id="13039">13039</a>
+<a href="#13040" id="13040">13040</a>
+<a href="#13041" id="13041">13041</a>
+<a href="#13042" id="13042">13042</a>
+<a href="#13043" id="13043">13043</a>
+<a href="#13044" id="13044">13044</a>
+<a href="#13045" id="13045">13045</a>
+<a href="#13046" id="13046">13046</a>
+<a href="#13047" id="13047">13047</a>
+<a href="#13048" id="13048">13048</a>
+<a href="#13049" id="13049">13049</a>
+<a href="#13050" id="13050">13050</a>
+<a href="#13051" id="13051">13051</a>
+<a href="#13052" id="13052">13052</a>
+<a href="#13053" id="13053">13053</a>
+<a href="#13054" id="13054">13054</a>
+<a href="#13055" id="13055">13055</a>
+<a href="#13056" id="13056">13056</a>
+<a href="#13057" id="13057">13057</a>
+<a href="#13058" id="13058">13058</a>
+<a href="#13059" id="13059">13059</a>
+<a href="#13060" id="13060">13060</a>
+<a href="#13061" id="13061">13061</a>
+<a href="#13062" id="13062">13062</a>
+<a href="#13063" id="13063">13063</a>
+<a href="#13064" id="13064">13064</a>
+<a href="#13065" id="13065">13065</a>
+<a href="#13066" id="13066">13066</a>
+<a href="#13067" id="13067">13067</a>
+<a href="#13068" id="13068">13068</a>
+<a href="#13069" id="13069">13069</a>
+<a href="#13070" id="13070">13070</a>
+<a href="#13071" id="13071">13071</a>
+<a href="#13072" id="13072">13072</a>
+<a href="#13073" id="13073">13073</a>
+<a href="#13074" id="13074">13074</a>
+<a href="#13075" id="13075">13075</a>
+<a href="#13076" id="13076">13076</a>
+<a href="#13077" id="13077">13077</a>
+<a href="#13078" id="13078">13078</a>
+<a href="#13079" id="13079">13079</a>
+<a href="#13080" id="13080">13080</a>
+<a href="#13081" id="13081">13081</a>
+<a href="#13082" id="13082">13082</a>
+<a href="#13083" id="13083">13083</a>
+<a href="#13084" id="13084">13084</a>
+<a href="#13085" id="13085">13085</a>
+<a href="#13086" id="13086">13086</a>
+<a href="#13087" id="13087">13087</a>
+<a href="#13088" id="13088">13088</a>
+<a href="#13089" id="13089">13089</a>
+<a href="#13090" id="13090">13090</a>
+<a href="#13091" id="13091">13091</a>
+<a href="#13092" id="13092">13092</a>
+<a href="#13093" id="13093">13093</a>
+<a href="#13094" id="13094">13094</a>
+<a href="#13095" id="13095">13095</a>
+<a href="#13096" id="13096">13096</a>
+<a href="#13097" id="13097">13097</a>
+<a href="#13098" id="13098">13098</a>
+<a href="#13099" id="13099">13099</a>
+<a href="#13100" id="13100">13100</a>
+<a href="#13101" id="13101">13101</a>
+<a href="#13102" id="13102">13102</a>
+<a href="#13103" id="13103">13103</a>
+<a href="#13104" id="13104">13104</a>
+<a href="#13105" id="13105">13105</a>
+<a href="#13106" id="13106">13106</a>
+<a href="#13107" id="13107">13107</a>
+<a href="#13108" id="13108">13108</a>
+<a href="#13109" id="13109">13109</a>
+<a href="#13110" id="13110">13110</a>
+<a href="#13111" id="13111">13111</a>
+<a href="#13112" id="13112">13112</a>
+<a href="#13113" id="13113">13113</a>
+<a href="#13114" id="13114">13114</a>
+<a href="#13115" id="13115">13115</a>
+<a href="#13116" id="13116">13116</a>
+<a href="#13117" id="13117">13117</a>
+<a href="#13118" id="13118">13118</a>
+<a href="#13119" id="13119">13119</a>
+<a href="#13120" id="13120">13120</a>
+<a href="#13121" id="13121">13121</a>
+<a href="#13122" id="13122">13122</a>
+<a href="#13123" id="13123">13123</a>
+<a href="#13124" id="13124">13124</a>
+<a href="#13125" id="13125">13125</a>
+<a href="#13126" id="13126">13126</a>
+<a href="#13127" id="13127">13127</a>
+<a href="#13128" id="13128">13128</a>
+<a href="#13129" id="13129">13129</a>
+<a href="#13130" id="13130">13130</a>
+<a href="#13131" id="13131">13131</a>
+<a href="#13132" id="13132">13132</a>
+<a href="#13133" id="13133">13133</a>
+<a href="#13134" id="13134">13134</a>
+<a href="#13135" id="13135">13135</a>
+<a href="#13136" id="13136">13136</a>
+<a href="#13137" id="13137">13137</a>
+<a href="#13138" id="13138">13138</a>
+<a href="#13139" id="13139">13139</a>
+<a href="#13140" id="13140">13140</a>
+<a href="#13141" id="13141">13141</a>
+<a href="#13142" id="13142">13142</a>
+<a href="#13143" id="13143">13143</a>
+<a href="#13144" id="13144">13144</a>
+<a href="#13145" id="13145">13145</a>
+<a href="#13146" id="13146">13146</a>
+<a href="#13147" id="13147">13147</a>
+<a href="#13148" id="13148">13148</a>
+<a href="#13149" id="13149">13149</a>
+<a href="#13150" id="13150">13150</a>
+<a href="#13151" id="13151">13151</a>
+<a href="#13152" id="13152">13152</a>
+<a href="#13153" id="13153">13153</a>
+<a href="#13154" id="13154">13154</a>
+<a href="#13155" id="13155">13155</a>
+<a href="#13156" id="13156">13156</a>
+<a href="#13157" id="13157">13157</a>
+<a href="#13158" id="13158">13158</a>
+<a href="#13159" id="13159">13159</a>
+<a href="#13160" id="13160">13160</a>
+<a href="#13161" id="13161">13161</a>
+<a href="#13162" id="13162">13162</a>
+<a href="#13163" id="13163">13163</a>
+<a href="#13164" id="13164">13164</a>
+<a href="#13165" id="13165">13165</a>
+<a href="#13166" id="13166">13166</a>
+<a href="#13167" id="13167">13167</a>
+<a href="#13168" id="13168">13168</a>
+<a href="#13169" id="13169">13169</a>
+<a href="#13170" id="13170">13170</a>
+<a href="#13171" id="13171">13171</a>
+<a href="#13172" id="13172">13172</a>
+<a href="#13173" id="13173">13173</a>
+<a href="#13174" id="13174">13174</a>
+<a href="#13175" id="13175">13175</a>
+<a href="#13176" id="13176">13176</a>
+<a href="#13177" id="13177">13177</a>
+<a href="#13178" id="13178">13178</a>
+<a href="#13179" id="13179">13179</a>
+<a href="#13180" id="13180">13180</a>
+<a href="#13181" id="13181">13181</a>
+<a href="#13182" id="13182">13182</a>
+<a href="#13183" id="13183">13183</a>
+<a href="#13184" id="13184">13184</a>
+<a href="#13185" id="13185">13185</a>
+<a href="#13186" id="13186">13186</a>
+<a href="#13187" id="13187">13187</a>
+<a href="#13188" id="13188">13188</a>
+<a href="#13189" id="13189">13189</a>
+<a href="#13190" id="13190">13190</a>
+<a href="#13191" id="13191">13191</a>
+<a href="#13192" id="13192">13192</a>
+<a href="#13193" id="13193">13193</a>
+<a href="#13194" id="13194">13194</a>
+<a href="#13195" id="13195">13195</a>
+<a href="#13196" id="13196">13196</a>
+<a href="#13197" id="13197">13197</a>
+<a href="#13198" id="13198">13198</a>
+<a href="#13199" id="13199">13199</a>
+<a href="#13200" id="13200">13200</a>
+<a href="#13201" id="13201">13201</a>
+<a href="#13202" id="13202">13202</a>
+<a href="#13203" id="13203">13203</a>
+<a href="#13204" id="13204">13204</a>
+<a href="#13205" id="13205">13205</a>
+<a href="#13206" id="13206">13206</a>
+<a href="#13207" id="13207">13207</a>
+<a href="#13208" id="13208">13208</a>
+<a href="#13209" id="13209">13209</a>
+<a href="#13210" id="13210">13210</a>
+<a href="#13211" id="13211">13211</a>
+<a href="#13212" id="13212">13212</a>
+<a href="#13213" id="13213">13213</a>
+<a href="#13214" id="13214">13214</a>
+<a href="#13215" id="13215">13215</a>
+<a href="#13216" id="13216">13216</a>
+<a href="#13217" id="13217">13217</a>
+<a href="#13218" id="13218">13218</a>
+<a href="#13219" id="13219">13219</a>
+<a href="#13220" id="13220">13220</a>
+<a href="#13221" id="13221">13221</a>
+<a href="#13222" id="13222">13222</a>
+<a href="#13223" id="13223">13223</a>
+<a href="#13224" id="13224">13224</a>
+<a href="#13225" id="13225">13225</a>
+<a href="#13226" id="13226">13226</a>
+<a href="#13227" id="13227">13227</a>
+<a href="#13228" id="13228">13228</a>
+<a href="#13229" id="13229">13229</a>
+<a href="#13230" id="13230">13230</a>
+<a href="#13231" id="13231">13231</a>
+<a href="#13232" id="13232">13232</a>
+<a href="#13233" id="13233">13233</a>
+<a href="#13234" id="13234">13234</a>
+<a href="#13235" id="13235">13235</a>
+<a href="#13236" id="13236">13236</a>
+<a href="#13237" id="13237">13237</a>
+<a href="#13238" id="13238">13238</a>
+<a href="#13239" id="13239">13239</a>
+<a href="#13240" id="13240">13240</a>
+<a href="#13241" id="13241">13241</a>
+<a href="#13242" id="13242">13242</a>
+<a href="#13243" id="13243">13243</a>
+<a href="#13244" id="13244">13244</a>
+<a href="#13245" id="13245">13245</a>
+<a href="#13246" id="13246">13246</a>
+<a href="#13247" id="13247">13247</a>
+<a href="#13248" id="13248">13248</a>
+<a href="#13249" id="13249">13249</a>
+<a href="#13250" id="13250">13250</a>
+<a href="#13251" id="13251">13251</a>
+<a href="#13252" id="13252">13252</a>
+<a href="#13253" id="13253">13253</a>
+<a href="#13254" id="13254">13254</a>
+<a href="#13255" id="13255">13255</a>
+<a href="#13256" id="13256">13256</a>
+<a href="#13257" id="13257">13257</a>
+<a href="#13258" id="13258">13258</a>
+<a href="#13259" id="13259">13259</a>
+<a href="#13260" id="13260">13260</a>
+<a href="#13261" id="13261">13261</a>
+<a href="#13262" id="13262">13262</a>
+<a href="#13263" id="13263">13263</a>
+<a href="#13264" id="13264">13264</a>
+<a href="#13265" id="13265">13265</a>
+<a href="#13266" id="13266">13266</a>
+<a href="#13267" id="13267">13267</a>
+<a href="#13268" id="13268">13268</a>
+<a href="#13269" id="13269">13269</a>
+<a href="#13270" id="13270">13270</a>
+<a href="#13271" id="13271">13271</a>
+<a href="#13272" id="13272">13272</a>
+<a href="#13273" id="13273">13273</a>
+<a href="#13274" id="13274">13274</a>
+<a href="#13275" id="13275">13275</a>
+<a href="#13276" id="13276">13276</a>
+<a href="#13277" id="13277">13277</a>
+<a href="#13278" id="13278">13278</a>
+<a href="#13279" id="13279">13279</a>
+<a href="#13280" id="13280">13280</a>
+<a href="#13281" id="13281">13281</a>
+<a href="#13282" id="13282">13282</a>
+<a href="#13283" id="13283">13283</a>
+<a href="#13284" id="13284">13284</a>
+<a href="#13285" id="13285">13285</a>
+<a href="#13286" id="13286">13286</a>
+<a href="#13287" id="13287">13287</a>
+<a href="#13288" id="13288">13288</a>
+<a href="#13289" id="13289">13289</a>
+<a href="#13290" id="13290">13290</a>
+<a href="#13291" id="13291">13291</a>
+<a href="#13292" id="13292">13292</a>
+<a href="#13293" id="13293">13293</a>
+<a href="#13294" id="13294">13294</a>
+<a href="#13295" id="13295">13295</a>
+<a href="#13296" id="13296">13296</a>
+<a href="#13297" id="13297">13297</a>
+<a href="#13298" id="13298">13298</a>
+<a href="#13299" id="13299">13299</a>
+<a href="#13300" id="13300">13300</a>
+<a href="#13301" id="13301">13301</a>
+<a href="#13302" id="13302">13302</a>
+<a href="#13303" id="13303">13303</a>
+<a href="#13304" id="13304">13304</a>
+<a href="#13305" id="13305">13305</a>
+<a href="#13306" id="13306">13306</a>
+<a href="#13307" id="13307">13307</a>
+<a href="#13308" id="13308">13308</a>
+<a href="#13309" id="13309">13309</a>
+<a href="#13310" id="13310">13310</a>
+<a href="#13311" id="13311">13311</a>
+<a href="#13312" id="13312">13312</a>
+<a href="#13313" id="13313">13313</a>
+<a href="#13314" id="13314">13314</a>
+<a href="#13315" id="13315">13315</a>
+<a href="#13316" id="13316">13316</a>
+<a href="#13317" id="13317">13317</a>
+<a href="#13318" id="13318">13318</a>
+<a href="#13319" id="13319">13319</a>
+<a href="#13320" id="13320">13320</a>
+<a href="#13321" id="13321">13321</a>
+<a href="#13322" id="13322">13322</a>
+<a href="#13323" id="13323">13323</a>
+<a href="#13324" id="13324">13324</a>
+<a href="#13325" id="13325">13325</a>
+<a href="#13326" id="13326">13326</a>
+<a href="#13327" id="13327">13327</a>
+<a href="#13328" id="13328">13328</a>
+<a href="#13329" id="13329">13329</a>
+<a href="#13330" id="13330">13330</a>
+<a href="#13331" id="13331">13331</a>
+<a href="#13332" id="13332">13332</a>
+<a href="#13333" id="13333">13333</a>
+<a href="#13334" id="13334">13334</a>
+<a href="#13335" id="13335">13335</a>
+<a href="#13336" id="13336">13336</a>
+<a href="#13337" id="13337">13337</a>
+<a href="#13338" id="13338">13338</a>
+<a href="#13339" id="13339">13339</a>
+<a href="#13340" id="13340">13340</a>
+<a href="#13341" id="13341">13341</a>
+<a href="#13342" id="13342">13342</a>
+<a href="#13343" id="13343">13343</a>
+<a href="#13344" id="13344">13344</a>
+<a href="#13345" id="13345">13345</a>
+<a href="#13346" id="13346">13346</a>
+<a href="#13347" id="13347">13347</a>
+<a href="#13348" id="13348">13348</a>
+<a href="#13349" id="13349">13349</a>
+<a href="#13350" id="13350">13350</a>
+<a href="#13351" id="13351">13351</a>
+<a href="#13352" id="13352">13352</a>
+<a href="#13353" id="13353">13353</a>
+<a href="#13354" id="13354">13354</a>
+<a href="#13355" id="13355">13355</a>
+<a href="#13356" id="13356">13356</a>
+<a href="#13357" id="13357">13357</a>
+<a href="#13358" id="13358">13358</a>
+<a href="#13359" id="13359">13359</a>
+<a href="#13360" id="13360">13360</a>
+<a href="#13361" id="13361">13361</a>
+<a href="#13362" id="13362">13362</a>
+<a href="#13363" id="13363">13363</a>
+<a href="#13364" id="13364">13364</a>
+<a href="#13365" id="13365">13365</a>
+<a href="#13366" id="13366">13366</a>
+<a href="#13367" id="13367">13367</a>
+<a href="#13368" id="13368">13368</a>
+<a href="#13369" id="13369">13369</a>
+<a href="#13370" id="13370">13370</a>
+<a href="#13371" id="13371">13371</a>
+<a href="#13372" id="13372">13372</a>
+<a href="#13373" id="13373">13373</a>
+<a href="#13374" id="13374">13374</a>
+<a href="#13375" id="13375">13375</a>
+<a href="#13376" id="13376">13376</a>
+<a href="#13377" id="13377">13377</a>
+<a href="#13378" id="13378">13378</a>
+<a href="#13379" id="13379">13379</a>
+<a href="#13380" id="13380">13380</a>
+<a href="#13381" id="13381">13381</a>
+<a href="#13382" id="13382">13382</a>
+<a href="#13383" id="13383">13383</a>
+<a href="#13384" id="13384">13384</a>
+<a href="#13385" id="13385">13385</a>
+<a href="#13386" id="13386">13386</a>
+<a href="#13387" id="13387">13387</a>
+<a href="#13388" id="13388">13388</a>
+<a href="#13389" id="13389">13389</a>
+<a href="#13390" id="13390">13390</a>
+<a href="#13391" id="13391">13391</a>
+<a href="#13392" id="13392">13392</a>
+<a href="#13393" id="13393">13393</a>
+<a href="#13394" id="13394">13394</a>
+<a href="#13395" id="13395">13395</a>
+<a href="#13396" id="13396">13396</a>
+<a href="#13397" id="13397">13397</a>
+<a href="#13398" id="13398">13398</a>
+<a href="#13399" id="13399">13399</a>
+<a href="#13400" id="13400">13400</a>
+<a href="#13401" id="13401">13401</a>
+<a href="#13402" id="13402">13402</a>
+<a href="#13403" id="13403">13403</a>
+<a href="#13404" id="13404">13404</a>
+<a href="#13405" id="13405">13405</a>
+<a href="#13406" id="13406">13406</a>
+<a href="#13407" id="13407">13407</a>
+<a href="#13408" id="13408">13408</a>
+<a href="#13409" id="13409">13409</a>
+<a href="#13410" id="13410">13410</a>
+<a href="#13411" id="13411">13411</a>
+<a href="#13412" id="13412">13412</a>
+<a href="#13413" id="13413">13413</a>
+<a href="#13414" id="13414">13414</a>
+<a href="#13415" id="13415">13415</a>
+<a href="#13416" id="13416">13416</a>
+<a href="#13417" id="13417">13417</a>
+<a href="#13418" id="13418">13418</a>
+<a href="#13419" id="13419">13419</a>
+<a href="#13420" id="13420">13420</a>
+<a href="#13421" id="13421">13421</a>
+<a href="#13422" id="13422">13422</a>
+<a href="#13423" id="13423">13423</a>
+<a href="#13424" id="13424">13424</a>
+<a href="#13425" id="13425">13425</a>
+<a href="#13426" id="13426">13426</a>
+<a href="#13427" id="13427">13427</a>
+<a href="#13428" id="13428">13428</a>
+<a href="#13429" id="13429">13429</a>
+<a href="#13430" id="13430">13430</a>
+<a href="#13431" id="13431">13431</a>
+<a href="#13432" id="13432">13432</a>
+<a href="#13433" id="13433">13433</a>
+<a href="#13434" id="13434">13434</a>
+<a href="#13435" id="13435">13435</a>
+<a href="#13436" id="13436">13436</a>
+<a href="#13437" id="13437">13437</a>
+<a href="#13438" id="13438">13438</a>
+<a href="#13439" id="13439">13439</a>
+<a href="#13440" id="13440">13440</a>
+<a href="#13441" id="13441">13441</a>
+<a href="#13442" id="13442">13442</a>
+<a href="#13443" id="13443">13443</a>
+<a href="#13444" id="13444">13444</a>
+<a href="#13445" id="13445">13445</a>
+<a href="#13446" id="13446">13446</a>
+<a href="#13447" id="13447">13447</a>
+<a href="#13448" id="13448">13448</a>
+<a href="#13449" id="13449">13449</a>
+<a href="#13450" id="13450">13450</a>
+<a href="#13451" id="13451">13451</a>
+<a href="#13452" id="13452">13452</a>
+<a href="#13453" id="13453">13453</a>
+<a href="#13454" id="13454">13454</a>
+<a href="#13455" id="13455">13455</a>
+<a href="#13456" id="13456">13456</a>
+<a href="#13457" id="13457">13457</a>
+<a href="#13458" id="13458">13458</a>
+<a href="#13459" id="13459">13459</a>
+<a href="#13460" id="13460">13460</a>
+<a href="#13461" id="13461">13461</a>
+<a href="#13462" id="13462">13462</a>
+<a href="#13463" id="13463">13463</a>
+<a href="#13464" id="13464">13464</a>
+<a href="#13465" id="13465">13465</a>
+<a href="#13466" id="13466">13466</a>
+<a href="#13467" id="13467">13467</a>
+<a href="#13468" id="13468">13468</a>
+<a href="#13469" id="13469">13469</a>
+<a href="#13470" id="13470">13470</a>
+<a href="#13471" id="13471">13471</a>
+<a href="#13472" id="13472">13472</a>
+<a href="#13473" id="13473">13473</a>
+<a href="#13474" id="13474">13474</a>
+<a href="#13475" id="13475">13475</a>
+<a href="#13476" id="13476">13476</a>
+<a href="#13477" id="13477">13477</a>
+<a href="#13478" id="13478">13478</a>
+<a href="#13479" id="13479">13479</a>
+<a href="#13480" id="13480">13480</a>
+<a href="#13481" id="13481">13481</a>
+<a href="#13482" id="13482">13482</a>
+<a href="#13483" id="13483">13483</a>
+<a href="#13484" id="13484">13484</a>
+<a href="#13485" id="13485">13485</a>
+<a href="#13486" id="13486">13486</a>
+<a href="#13487" id="13487">13487</a>
+<a href="#13488" id="13488">13488</a>
+<a href="#13489" id="13489">13489</a>
+<a href="#13490" id="13490">13490</a>
+<a href="#13491" id="13491">13491</a>
+<a href="#13492" id="13492">13492</a>
+<a href="#13493" id="13493">13493</a>
+<a href="#13494" id="13494">13494</a>
+<a href="#13495" id="13495">13495</a>
+<a href="#13496" id="13496">13496</a>
+<a href="#13497" id="13497">13497</a>
+<a href="#13498" id="13498">13498</a>
+<a href="#13499" id="13499">13499</a>
+<a href="#13500" id="13500">13500</a>
+<a href="#13501" id="13501">13501</a>
+<a href="#13502" id="13502">13502</a>
+<a href="#13503" id="13503">13503</a>
+<a href="#13504" id="13504">13504</a>
+<a href="#13505" id="13505">13505</a>
+<a href="#13506" id="13506">13506</a>
+<a href="#13507" id="13507">13507</a>
+<a href="#13508" id="13508">13508</a>
+<a href="#13509" id="13509">13509</a>
+<a href="#13510" id="13510">13510</a>
+<a href="#13511" id="13511">13511</a>
+<a href="#13512" id="13512">13512</a>
+<a href="#13513" id="13513">13513</a>
+<a href="#13514" id="13514">13514</a>
+<a href="#13515" id="13515">13515</a>
+<a href="#13516" id="13516">13516</a>
+<a href="#13517" id="13517">13517</a>
+<a href="#13518" id="13518">13518</a>
+<a href="#13519" id="13519">13519</a>
+<a href="#13520" id="13520">13520</a>
+<a href="#13521" id="13521">13521</a>
+<a href="#13522" id="13522">13522</a>
+<a href="#13523" id="13523">13523</a>
+<a href="#13524" id="13524">13524</a>
+<a href="#13525" id="13525">13525</a>
+<a href="#13526" id="13526">13526</a>
+<a href="#13527" id="13527">13527</a>
+<a href="#13528" id="13528">13528</a>
+<a href="#13529" id="13529">13529</a>
+<a href="#13530" id="13530">13530</a>
+<a href="#13531" id="13531">13531</a>
+<a href="#13532" id="13532">13532</a>
+<a href="#13533" id="13533">13533</a>
+<a href="#13534" id="13534">13534</a>
+<a href="#13535" id="13535">13535</a>
+<a href="#13536" id="13536">13536</a>
+<a href="#13537" id="13537">13537</a>
+<a href="#13538" id="13538">13538</a>
+<a href="#13539" id="13539">13539</a>
+<a href="#13540" id="13540">13540</a>
+<a href="#13541" id="13541">13541</a>
+<a href="#13542" id="13542">13542</a>
+<a href="#13543" id="13543">13543</a>
+<a href="#13544" id="13544">13544</a>
+<a href="#13545" id="13545">13545</a>
+<a href="#13546" id="13546">13546</a>
+<a href="#13547" id="13547">13547</a>
+<a href="#13548" id="13548">13548</a>
+<a href="#13549" id="13549">13549</a>
+<a href="#13550" id="13550">13550</a>
+<a href="#13551" id="13551">13551</a>
+<a href="#13552" id="13552">13552</a>
+<a href="#13553" id="13553">13553</a>
+<a href="#13554" id="13554">13554</a>
+<a href="#13555" id="13555">13555</a>
+<a href="#13556" id="13556">13556</a>
+<a href="#13557" id="13557">13557</a>
+<a href="#13558" id="13558">13558</a>
+<a href="#13559" id="13559">13559</a>
+<a href="#13560" id="13560">13560</a>
+<a href="#13561" id="13561">13561</a>
+<a href="#13562" id="13562">13562</a>
+<a href="#13563" id="13563">13563</a>
+<a href="#13564" id="13564">13564</a>
+<a href="#13565" id="13565">13565</a>
+<a href="#13566" id="13566">13566</a>
+<a href="#13567" id="13567">13567</a>
+<a href="#13568" id="13568">13568</a>
+<a href="#13569" id="13569">13569</a>
+<a href="#13570" id="13570">13570</a>
+<a href="#13571" id="13571">13571</a>
+<a href="#13572" id="13572">13572</a>
+<a href="#13573" id="13573">13573</a>
+<a href="#13574" id="13574">13574</a>
+<a href="#13575" id="13575">13575</a>
+<a href="#13576" id="13576">13576</a>
+<a href="#13577" id="13577">13577</a>
+<a href="#13578" id="13578">13578</a>
+<a href="#13579" id="13579">13579</a>
+<a href="#13580" id="13580">13580</a>
+<a href="#13581" id="13581">13581</a>
+<a href="#13582" id="13582">13582</a>
+<a href="#13583" id="13583">13583</a>
+<a href="#13584" id="13584">13584</a>
+<a href="#13585" id="13585">13585</a>
+<a href="#13586" id="13586">13586</a>
+<a href="#13587" id="13587">13587</a>
+<a href="#13588" id="13588">13588</a>
+<a href="#13589" id="13589">13589</a>
+<a href="#13590" id="13590">13590</a>
+<a href="#13591" id="13591">13591</a>
+<a href="#13592" id="13592">13592</a>
+<a href="#13593" id="13593">13593</a>
+<a href="#13594" id="13594">13594</a>
+<a href="#13595" id="13595">13595</a>
+<a href="#13596" id="13596">13596</a>
+<a href="#13597" id="13597">13597</a>
+<a href="#13598" id="13598">13598</a>
+<a href="#13599" id="13599">13599</a>
+<a href="#13600" id="13600">13600</a>
+<a href="#13601" id="13601">13601</a>
+<a href="#13602" id="13602">13602</a>
+<a href="#13603" id="13603">13603</a>
+<a href="#13604" id="13604">13604</a>
+<a href="#13605" id="13605">13605</a>
+<a href="#13606" id="13606">13606</a>
+<a href="#13607" id="13607">13607</a>
+<a href="#13608" id="13608">13608</a>
+<a href="#13609" id="13609">13609</a>
+<a href="#13610" id="13610">13610</a>
+<a href="#13611" id="13611">13611</a>
+<a href="#13612" id="13612">13612</a>
+<a href="#13613" id="13613">13613</a>
+<a href="#13614" id="13614">13614</a>
+<a href="#13615" id="13615">13615</a>
+<a href="#13616" id="13616">13616</a>
+<a href="#13617" id="13617">13617</a>
+<a href="#13618" id="13618">13618</a>
+<a href="#13619" id="13619">13619</a>
+<a href="#13620" id="13620">13620</a>
+<a href="#13621" id="13621">13621</a>
+<a href="#13622" id="13622">13622</a>
+<a href="#13623" id="13623">13623</a>
+<a href="#13624" id="13624">13624</a>
+<a href="#13625" id="13625">13625</a>
+<a href="#13626" id="13626">13626</a>
+<a href="#13627" id="13627">13627</a>
+<a href="#13628" id="13628">13628</a>
+<a href="#13629" id="13629">13629</a>
+<a href="#13630" id="13630">13630</a>
+<a href="#13631" id="13631">13631</a>
+<a href="#13632" id="13632">13632</a>
+<a href="#13633" id="13633">13633</a>
+<a href="#13634" id="13634">13634</a>
+<a href="#13635" id="13635">13635</a>
+<a href="#13636" id="13636">13636</a>
+<a href="#13637" id="13637">13637</a>
+<a href="#13638" id="13638">13638</a>
+<a href="#13639" id="13639">13639</a>
+<a href="#13640" id="13640">13640</a>
+<a href="#13641" id="13641">13641</a>
+<a href="#13642" id="13642">13642</a>
+<a href="#13643" id="13643">13643</a>
+<a href="#13644" id="13644">13644</a>
+<a href="#13645" id="13645">13645</a>
+<a href="#13646" id="13646">13646</a>
+<a href="#13647" id="13647">13647</a>
+<a href="#13648" id="13648">13648</a>
+<a href="#13649" id="13649">13649</a>
+<a href="#13650" id="13650">13650</a>
+<a href="#13651" id="13651">13651</a>
+<a href="#13652" id="13652">13652</a>
+<a href="#13653" id="13653">13653</a>
+<a href="#13654" id="13654">13654</a>
+<a href="#13655" id="13655">13655</a>
+<a href="#13656" id="13656">13656</a>
+<a href="#13657" id="13657">13657</a>
+<a href="#13658" id="13658">13658</a>
+<a href="#13659" id="13659">13659</a>
+<a href="#13660" id="13660">13660</a>
+<a href="#13661" id="13661">13661</a>
+<a href="#13662" id="13662">13662</a>
+<a href="#13663" id="13663">13663</a>
+<a href="#13664" id="13664">13664</a>
+<a href="#13665" id="13665">13665</a>
+<a href="#13666" id="13666">13666</a>
+<a href="#13667" id="13667">13667</a>
+<a href="#13668" id="13668">13668</a>
+<a href="#13669" id="13669">13669</a>
+<a href="#13670" id="13670">13670</a>
+<a href="#13671" id="13671">13671</a>
+<a href="#13672" id="13672">13672</a>
+<a href="#13673" id="13673">13673</a>
+<a href="#13674" id="13674">13674</a>
+<a href="#13675" id="13675">13675</a>
+<a href="#13676" id="13676">13676</a>
+<a href="#13677" id="13677">13677</a>
+<a href="#13678" id="13678">13678</a>
+<a href="#13679" id="13679">13679</a>
+<a href="#13680" id="13680">13680</a>
+<a href="#13681" id="13681">13681</a>
+<a href="#13682" id="13682">13682</a>
+<a href="#13683" id="13683">13683</a>
+<a href="#13684" id="13684">13684</a>
+<a href="#13685" id="13685">13685</a>
+<a href="#13686" id="13686">13686</a>
+<a href="#13687" id="13687">13687</a>
+<a href="#13688" id="13688">13688</a>
+<a href="#13689" id="13689">13689</a>
+<a href="#13690" id="13690">13690</a>
+<a href="#13691" id="13691">13691</a>
+<a href="#13692" id="13692">13692</a>
+<a href="#13693" id="13693">13693</a>
+<a href="#13694" id="13694">13694</a>
+<a href="#13695" id="13695">13695</a>
+<a href="#13696" id="13696">13696</a>
+<a href="#13697" id="13697">13697</a>
+<a href="#13698" id="13698">13698</a>
+<a href="#13699" id="13699">13699</a>
+<a href="#13700" id="13700">13700</a>
+<a href="#13701" id="13701">13701</a>
+<a href="#13702" id="13702">13702</a>
+<a href="#13703" id="13703">13703</a>
+<a href="#13704" id="13704">13704</a>
+<a href="#13705" id="13705">13705</a>
+<a href="#13706" id="13706">13706</a>
+<a href="#13707" id="13707">13707</a>
+<a href="#13708" id="13708">13708</a>
+<a href="#13709" id="13709">13709</a>
+<a href="#13710" id="13710">13710</a>
+<a href="#13711" id="13711">13711</a>
+<a href="#13712" id="13712">13712</a>
+<a href="#13713" id="13713">13713</a>
+<a href="#13714" id="13714">13714</a>
+<a href="#13715" id="13715">13715</a>
+<a href="#13716" id="13716">13716</a>
+<a href="#13717" id="13717">13717</a>
+<a href="#13718" id="13718">13718</a>
+<a href="#13719" id="13719">13719</a>
+<a href="#13720" id="13720">13720</a>
+<a href="#13721" id="13721">13721</a>
+<a href="#13722" id="13722">13722</a>
+<a href="#13723" id="13723">13723</a>
+<a href="#13724" id="13724">13724</a>
+<a href="#13725" id="13725">13725</a>
+<a href="#13726" id="13726">13726</a>
+<a href="#13727" id="13727">13727</a>
+<a href="#13728" id="13728">13728</a>
+<a href="#13729" id="13729">13729</a>
+<a href="#13730" id="13730">13730</a>
+<a href="#13731" id="13731">13731</a>
+<a href="#13732" id="13732">13732</a>
+<a href="#13733" id="13733">13733</a>
+<a href="#13734" id="13734">13734</a>
+<a href="#13735" id="13735">13735</a>
+<a href="#13736" id="13736">13736</a>
+<a href="#13737" id="13737">13737</a>
+<a href="#13738" id="13738">13738</a>
+<a href="#13739" id="13739">13739</a>
+<a href="#13740" id="13740">13740</a>
+<a href="#13741" id="13741">13741</a>
+<a href="#13742" id="13742">13742</a>
+<a href="#13743" id="13743">13743</a>
+<a href="#13744" id="13744">13744</a>
+<a href="#13745" id="13745">13745</a>
+<a href="#13746" id="13746">13746</a>
+<a href="#13747" id="13747">13747</a>
+<a href="#13748" id="13748">13748</a>
+<a href="#13749" id="13749">13749</a>
+<a href="#13750" id="13750">13750</a>
+<a href="#13751" id="13751">13751</a>
+<a href="#13752" id="13752">13752</a>
+<a href="#13753" id="13753">13753</a>
+<a href="#13754" id="13754">13754</a>
+<a href="#13755" id="13755">13755</a>
+<a href="#13756" id="13756">13756</a>
+<a href="#13757" id="13757">13757</a>
+<a href="#13758" id="13758">13758</a>
+<a href="#13759" id="13759">13759</a>
+<a href="#13760" id="13760">13760</a>
+<a href="#13761" id="13761">13761</a>
+<a href="#13762" id="13762">13762</a>
+<a href="#13763" id="13763">13763</a>
+<a href="#13764" id="13764">13764</a>
+<a href="#13765" id="13765">13765</a>
+<a href="#13766" id="13766">13766</a>
+<a href="#13767" id="13767">13767</a>
+<a href="#13768" id="13768">13768</a>
+<a href="#13769" id="13769">13769</a>
+<a href="#13770" id="13770">13770</a>
+<a href="#13771" id="13771">13771</a>
+<a href="#13772" id="13772">13772</a>
+<a href="#13773" id="13773">13773</a>
+<a href="#13774" id="13774">13774</a>
+<a href="#13775" id="13775">13775</a>
+<a href="#13776" id="13776">13776</a>
+<a href="#13777" id="13777">13777</a>
+<a href="#13778" id="13778">13778</a>
+<a href="#13779" id="13779">13779</a>
+<a href="#13780" id="13780">13780</a>
+<a href="#13781" id="13781">13781</a>
+<a href="#13782" id="13782">13782</a>
+<a href="#13783" id="13783">13783</a>
+<a href="#13784" id="13784">13784</a>
+<a href="#13785" id="13785">13785</a>
+<a href="#13786" id="13786">13786</a>
+<a href="#13787" id="13787">13787</a>
+<a href="#13788" id="13788">13788</a>
+<a href="#13789" id="13789">13789</a>
+<a href="#13790" id="13790">13790</a>
+<a href="#13791" id="13791">13791</a>
+<a href="#13792" id="13792">13792</a>
+<a href="#13793" id="13793">13793</a>
+<a href="#13794" id="13794">13794</a>
+<a href="#13795" id="13795">13795</a>
+<a href="#13796" id="13796">13796</a>
+<a href="#13797" id="13797">13797</a>
+<a href="#13798" id="13798">13798</a>
+<a href="#13799" id="13799">13799</a>
+<a href="#13800" id="13800">13800</a>
+<a href="#13801" id="13801">13801</a>
+<a href="#13802" id="13802">13802</a>
+<a href="#13803" id="13803">13803</a>
+<a href="#13804" id="13804">13804</a>
+<a href="#13805" id="13805">13805</a>
+<a href="#13806" id="13806">13806</a>
+<a href="#13807" id="13807">13807</a>
+<a href="#13808" id="13808">13808</a>
+<a href="#13809" id="13809">13809</a>
+<a href="#13810" id="13810">13810</a>
+<a href="#13811" id="13811">13811</a>
+<a href="#13812" id="13812">13812</a>
+<a href="#13813" id="13813">13813</a>
+<a href="#13814" id="13814">13814</a>
+<a href="#13815" id="13815">13815</a>
+<a href="#13816" id="13816">13816</a>
+<a href="#13817" id="13817">13817</a>
+<a href="#13818" id="13818">13818</a>
+<a href="#13819" id="13819">13819</a>
+<a href="#13820" id="13820">13820</a>
+<a href="#13821" id="13821">13821</a>
+<a href="#13822" id="13822">13822</a>
+<a href="#13823" id="13823">13823</a>
+<a href="#13824" id="13824">13824</a>
+<a href="#13825" id="13825">13825</a>
+<a href="#13826" id="13826">13826</a>
+<a href="#13827" id="13827">13827</a>
+<a href="#13828" id="13828">13828</a>
+<a href="#13829" id="13829">13829</a>
+<a href="#13830" id="13830">13830</a>
+<a href="#13831" id="13831">13831</a>
+<a href="#13832" id="13832">13832</a>
+<a href="#13833" id="13833">13833</a>
+<a href="#13834" id="13834">13834</a>
+<a href="#13835" id="13835">13835</a>
+<a href="#13836" id="13836">13836</a>
+<a href="#13837" id="13837">13837</a>
+<a href="#13838" id="13838">13838</a>
+<a href="#13839" id="13839">13839</a>
+<a href="#13840" id="13840">13840</a>
+<a href="#13841" id="13841">13841</a>
+<a href="#13842" id="13842">13842</a>
+<a href="#13843" id="13843">13843</a>
+<a href="#13844" id="13844">13844</a>
+<a href="#13845" id="13845">13845</a>
+<a href="#13846" id="13846">13846</a>
+<a href="#13847" id="13847">13847</a>
+<a href="#13848" id="13848">13848</a>
+<a href="#13849" id="13849">13849</a>
+<a href="#13850" id="13850">13850</a>
+<a href="#13851" id="13851">13851</a>
+<a href="#13852" id="13852">13852</a>
+<a href="#13853" id="13853">13853</a>
+<a href="#13854" id="13854">13854</a>
+<a href="#13855" id="13855">13855</a>
+<a href="#13856" id="13856">13856</a>
+<a href="#13857" id="13857">13857</a>
+<a href="#13858" id="13858">13858</a>
+<a href="#13859" id="13859">13859</a>
+<a href="#13860" id="13860">13860</a>
+<a href="#13861" id="13861">13861</a>
+<a href="#13862" id="13862">13862</a>
+<a href="#13863" id="13863">13863</a>
+<a href="#13864" id="13864">13864</a>
+<a href="#13865" id="13865">13865</a>
+<a href="#13866" id="13866">13866</a>
+<a href="#13867" id="13867">13867</a>
+<a href="#13868" id="13868">13868</a>
+<a href="#13869" id="13869">13869</a>
+<a href="#13870" id="13870">13870</a>
+<a href="#13871" id="13871">13871</a>
+<a href="#13872" id="13872">13872</a>
+<a href="#13873" id="13873">13873</a>
+<a href="#13874" id="13874">13874</a>
+<a href="#13875" id="13875">13875</a>
+<a href="#13876" id="13876">13876</a>
+<a href="#13877" id="13877">13877</a>
+<a href="#13878" id="13878">13878</a>
+<a href="#13879" id="13879">13879</a>
+<a href="#13880" id="13880">13880</a>
+<a href="#13881" id="13881">13881</a>
+<a href="#13882" id="13882">13882</a>
+<a href="#13883" id="13883">13883</a>
+<a href="#13884" id="13884">13884</a>
+<a href="#13885" id="13885">13885</a>
+<a href="#13886" id="13886">13886</a>
+<a href="#13887" id="13887">13887</a>
+<a href="#13888" id="13888">13888</a>
+<a href="#13889" id="13889">13889</a>
+<a href="#13890" id="13890">13890</a>
+<a href="#13891" id="13891">13891</a>
+<a href="#13892" id="13892">13892</a>
+<a href="#13893" id="13893">13893</a>
+<a href="#13894" id="13894">13894</a>
+<a href="#13895" id="13895">13895</a>
+<a href="#13896" id="13896">13896</a>
+<a href="#13897" id="13897">13897</a>
+<a href="#13898" id="13898">13898</a>
+<a href="#13899" id="13899">13899</a>
+<a href="#13900" id="13900">13900</a>
+<a href="#13901" id="13901">13901</a>
+<a href="#13902" id="13902">13902</a>
+<a href="#13903" id="13903">13903</a>
+<a href="#13904" id="13904">13904</a>
+<a href="#13905" id="13905">13905</a>
+<a href="#13906" id="13906">13906</a>
+<a href="#13907" id="13907">13907</a>
+<a href="#13908" id="13908">13908</a>
+<a href="#13909" id="13909">13909</a>
+<a href="#13910" id="13910">13910</a>
+<a href="#13911" id="13911">13911</a>
+<a href="#13912" id="13912">13912</a>
+<a href="#13913" id="13913">13913</a>
+<a href="#13914" id="13914">13914</a>
+<a href="#13915" id="13915">13915</a>
+<a href="#13916" id="13916">13916</a>
+<a href="#13917" id="13917">13917</a>
+<a href="#13918" id="13918">13918</a>
+<a href="#13919" id="13919">13919</a>
+<a href="#13920" id="13920">13920</a>
+<a href="#13921" id="13921">13921</a>
+<a href="#13922" id="13922">13922</a>
+<a href="#13923" id="13923">13923</a>
+<a href="#13924" id="13924">13924</a>
+<a href="#13925" id="13925">13925</a>
+<a href="#13926" id="13926">13926</a>
+<a href="#13927" id="13927">13927</a>
+<a href="#13928" id="13928">13928</a>
+<a href="#13929" id="13929">13929</a>
+<a href="#13930" id="13930">13930</a>
+<a href="#13931" id="13931">13931</a>
+<a href="#13932" id="13932">13932</a>
+<a href="#13933" id="13933">13933</a>
+<a href="#13934" id="13934">13934</a>
+<a href="#13935" id="13935">13935</a>
+<a href="#13936" id="13936">13936</a>
+<a href="#13937" id="13937">13937</a>
+<a href="#13938" id="13938">13938</a>
+<a href="#13939" id="13939">13939</a>
+<a href="#13940" id="13940">13940</a>
+<a href="#13941" id="13941">13941</a>
+<a href="#13942" id="13942">13942</a>
+<a href="#13943" id="13943">13943</a>
+<a href="#13944" id="13944">13944</a>
+<a href="#13945" id="13945">13945</a>
+<a href="#13946" id="13946">13946</a>
+<a href="#13947" id="13947">13947</a>
+<a href="#13948" id="13948">13948</a>
+<a href="#13949" id="13949">13949</a>
+<a href="#13950" id="13950">13950</a>
+<a href="#13951" id="13951">13951</a>
+<a href="#13952" id="13952">13952</a>
+<a href="#13953" id="13953">13953</a>
+<a href="#13954" id="13954">13954</a>
+<a href="#13955" id="13955">13955</a>
+<a href="#13956" id="13956">13956</a>
+<a href="#13957" id="13957">13957</a>
+<a href="#13958" id="13958">13958</a>
+<a href="#13959" id="13959">13959</a>
+<a href="#13960" id="13960">13960</a>
+<a href="#13961" id="13961">13961</a>
+<a href="#13962" id="13962">13962</a>
+<a href="#13963" id="13963">13963</a>
+<a href="#13964" id="13964">13964</a>
+<a href="#13965" id="13965">13965</a>
+<a href="#13966" id="13966">13966</a>
+<a href="#13967" id="13967">13967</a>
+<a href="#13968" id="13968">13968</a>
+<a href="#13969" id="13969">13969</a>
+<a href="#13970" id="13970">13970</a>
+<a href="#13971" id="13971">13971</a>
+<a href="#13972" id="13972">13972</a>
+<a href="#13973" id="13973">13973</a>
+<a href="#13974" id="13974">13974</a>
+<a href="#13975" id="13975">13975</a>
+<a href="#13976" id="13976">13976</a>
+<a href="#13977" id="13977">13977</a>
+<a href="#13978" id="13978">13978</a>
+<a href="#13979" id="13979">13979</a>
+<a href="#13980" id="13980">13980</a>
+<a href="#13981" id="13981">13981</a>
+<a href="#13982" id="13982">13982</a>
+<a href="#13983" id="13983">13983</a>
+<a href="#13984" id="13984">13984</a>
+<a href="#13985" id="13985">13985</a>
+<a href="#13986" id="13986">13986</a>
+<a href="#13987" id="13987">13987</a>
+<a href="#13988" id="13988">13988</a>
+<a href="#13989" id="13989">13989</a>
+<a href="#13990" id="13990">13990</a>
+<a href="#13991" id="13991">13991</a>
+<a href="#13992" id="13992">13992</a>
+<a href="#13993" id="13993">13993</a>
+<a href="#13994" id="13994">13994</a>
+<a href="#13995" id="13995">13995</a>
+<a href="#13996" id="13996">13996</a>
+<a href="#13997" id="13997">13997</a>
+<a href="#13998" id="13998">13998</a>
+<a href="#13999" id="13999">13999</a>
+<a href="#14000" id="14000">14000</a>
+<a href="#14001" id="14001">14001</a>
+<a href="#14002" id="14002">14002</a>
+<a href="#14003" id="14003">14003</a>
+<a href="#14004" id="14004">14004</a>
+<a href="#14005" id="14005">14005</a>
+<a href="#14006" id="14006">14006</a>
+<a href="#14007" id="14007">14007</a>
+<a href="#14008" id="14008">14008</a>
+<a href="#14009" id="14009">14009</a>
+<a href="#14010" id="14010">14010</a>
+<a href="#14011" id="14011">14011</a>
+<a href="#14012" id="14012">14012</a>
+<a href="#14013" id="14013">14013</a>
+<a href="#14014" id="14014">14014</a>
+<a href="#14015" id="14015">14015</a>
+<a href="#14016" id="14016">14016</a>
+<a href="#14017" id="14017">14017</a>
+<a href="#14018" id="14018">14018</a>
+<a href="#14019" id="14019">14019</a>
+<a href="#14020" id="14020">14020</a>
+<a href="#14021" id="14021">14021</a>
+<a href="#14022" id="14022">14022</a>
+<a href="#14023" id="14023">14023</a>
+<a href="#14024" id="14024">14024</a>
+<a href="#14025" id="14025">14025</a>
+<a href="#14026" id="14026">14026</a>
+<a href="#14027" id="14027">14027</a>
+<a href="#14028" id="14028">14028</a>
+<a href="#14029" id="14029">14029</a>
+<a href="#14030" id="14030">14030</a>
+<a href="#14031" id="14031">14031</a>
+<a href="#14032" id="14032">14032</a>
+<a href="#14033" id="14033">14033</a>
+<a href="#14034" id="14034">14034</a>
+<a href="#14035" id="14035">14035</a>
+<a href="#14036" id="14036">14036</a>
+<a href="#14037" id="14037">14037</a>
+<a href="#14038" id="14038">14038</a>
+<a href="#14039" id="14039">14039</a>
+<a href="#14040" id="14040">14040</a>
+<a href="#14041" id="14041">14041</a>
+<a href="#14042" id="14042">14042</a>
+<a href="#14043" id="14043">14043</a>
+<a href="#14044" id="14044">14044</a>
+<a href="#14045" id="14045">14045</a>
+<a href="#14046" id="14046">14046</a>
+<a href="#14047" id="14047">14047</a>
+<a href="#14048" id="14048">14048</a>
+<a href="#14049" id="14049">14049</a>
+<a href="#14050" id="14050">14050</a>
+<a href="#14051" id="14051">14051</a>
+<a href="#14052" id="14052">14052</a>
+<a href="#14053" id="14053">14053</a>
+<a href="#14054" id="14054">14054</a>
+<a href="#14055" id="14055">14055</a>
+<a href="#14056" id="14056">14056</a>
+<a href="#14057" id="14057">14057</a>
+<a href="#14058" id="14058">14058</a>
+<a href="#14059" id="14059">14059</a>
+<a href="#14060" id="14060">14060</a>
+<a href="#14061" id="14061">14061</a>
+<a href="#14062" id="14062">14062</a>
+<a href="#14063" id="14063">14063</a>
+<a href="#14064" id="14064">14064</a>
+<a href="#14065" id="14065">14065</a>
+<a href="#14066" id="14066">14066</a>
+<a href="#14067" id="14067">14067</a>
+<a href="#14068" id="14068">14068</a>
+<a href="#14069" id="14069">14069</a>
+<a href="#14070" id="14070">14070</a>
+<a href="#14071" id="14071">14071</a>
+<a href="#14072" id="14072">14072</a>
+<a href="#14073" id="14073">14073</a>
+<a href="#14074" id="14074">14074</a>
+<a href="#14075" id="14075">14075</a>
+<a href="#14076" id="14076">14076</a>
+<a href="#14077" id="14077">14077</a>
+<a href="#14078" id="14078">14078</a>
+<a href="#14079" id="14079">14079</a>
+<a href="#14080" id="14080">14080</a>
+<a href="#14081" id="14081">14081</a>
+<a href="#14082" id="14082">14082</a>
+<a href="#14083" id="14083">14083</a>
+<a href="#14084" id="14084">14084</a>
+<a href="#14085" id="14085">14085</a>
+<a href="#14086" id="14086">14086</a>
+<a href="#14087" id="14087">14087</a>
+<a href="#14088" id="14088">14088</a>
+<a href="#14089" id="14089">14089</a>
+<a href="#14090" id="14090">14090</a>
+<a href="#14091" id="14091">14091</a>
+<a href="#14092" id="14092">14092</a>
+<a href="#14093" id="14093">14093</a>
+<a href="#14094" id="14094">14094</a>
+<a href="#14095" id="14095">14095</a>
+<a href="#14096" id="14096">14096</a>
+<a href="#14097" id="14097">14097</a>
+<a href="#14098" id="14098">14098</a>
+<a href="#14099" id="14099">14099</a>
+<a href="#14100" id="14100">14100</a>
+<a href="#14101" id="14101">14101</a>
+<a href="#14102" id="14102">14102</a>
+<a href="#14103" id="14103">14103</a>
+<a href="#14104" id="14104">14104</a>
+<a href="#14105" id="14105">14105</a>
+<a href="#14106" id="14106">14106</a>
+<a href="#14107" id="14107">14107</a>
+<a href="#14108" id="14108">14108</a>
+<a href="#14109" id="14109">14109</a>
+<a href="#14110" id="14110">14110</a>
+<a href="#14111" id="14111">14111</a>
+<a href="#14112" id="14112">14112</a>
+<a href="#14113" id="14113">14113</a>
+<a href="#14114" id="14114">14114</a>
+<a href="#14115" id="14115">14115</a>
+<a href="#14116" id="14116">14116</a>
+<a href="#14117" id="14117">14117</a>
+<a href="#14118" id="14118">14118</a>
+<a href="#14119" id="14119">14119</a>
+<a href="#14120" id="14120">14120</a>
+<a href="#14121" id="14121">14121</a>
+<a href="#14122" id="14122">14122</a>
+<a href="#14123" id="14123">14123</a>
+<a href="#14124" id="14124">14124</a>
+<a href="#14125" id="14125">14125</a>
+<a href="#14126" id="14126">14126</a>
+<a href="#14127" id="14127">14127</a>
+<a href="#14128" id="14128">14128</a>
+<a href="#14129" id="14129">14129</a>
+<a href="#14130" id="14130">14130</a>
+<a href="#14131" id="14131">14131</a>
+<a href="#14132" id="14132">14132</a>
+<a href="#14133" id="14133">14133</a>
+<a href="#14134" id="14134">14134</a>
+<a href="#14135" id="14135">14135</a>
+<a href="#14136" id="14136">14136</a>
+<a href="#14137" id="14137">14137</a>
+<a href="#14138" id="14138">14138</a>
+<a href="#14139" id="14139">14139</a>
+<a href="#14140" id="14140">14140</a>
+<a href="#14141" id="14141">14141</a>
+<a href="#14142" id="14142">14142</a>
+<a href="#14143" id="14143">14143</a>
+<a href="#14144" id="14144">14144</a>
+<a href="#14145" id="14145">14145</a>
+<a href="#14146" id="14146">14146</a>
+<a href="#14147" id="14147">14147</a>
+<a href="#14148" id="14148">14148</a>
+<a href="#14149" id="14149">14149</a>
+<a href="#14150" id="14150">14150</a>
+<a href="#14151" id="14151">14151</a>
+<a href="#14152" id="14152">14152</a>
+<a href="#14153" id="14153">14153</a>
+<a href="#14154" id="14154">14154</a>
+<a href="#14155" id="14155">14155</a>
+<a href="#14156" id="14156">14156</a>
+<a href="#14157" id="14157">14157</a>
+<a href="#14158" id="14158">14158</a>
+<a href="#14159" id="14159">14159</a>
+<a href="#14160" id="14160">14160</a>
+<a href="#14161" id="14161">14161</a>
+<a href="#14162" id="14162">14162</a>
+<a href="#14163" id="14163">14163</a>
+<a href="#14164" id="14164">14164</a>
+<a href="#14165" id="14165">14165</a>
+<a href="#14166" id="14166">14166</a>
+<a href="#14167" id="14167">14167</a>
+<a href="#14168" id="14168">14168</a>
+<a href="#14169" id="14169">14169</a>
+<a href="#14170" id="14170">14170</a>
+<a href="#14171" id="14171">14171</a>
+<a href="#14172" id="14172">14172</a>
+<a href="#14173" id="14173">14173</a>
+<a href="#14174" id="14174">14174</a>
+<a href="#14175" id="14175">14175</a>
+<a href="#14176" id="14176">14176</a>
+<a href="#14177" id="14177">14177</a>
+<a href="#14178" id="14178">14178</a>
+<a href="#14179" id="14179">14179</a>
+<a href="#14180" id="14180">14180</a>
+<a href="#14181" id="14181">14181</a>
+<a href="#14182" id="14182">14182</a>
+<a href="#14183" id="14183">14183</a>
+<a href="#14184" id="14184">14184</a>
+<a href="#14185" id="14185">14185</a>
+<a href="#14186" id="14186">14186</a>
+<a href="#14187" id="14187">14187</a>
+<a href="#14188" id="14188">14188</a>
+<a href="#14189" id="14189">14189</a>
+<a href="#14190" id="14190">14190</a>
+<a href="#14191" id="14191">14191</a>
+<a href="#14192" id="14192">14192</a>
+<a href="#14193" id="14193">14193</a>
+<a href="#14194" id="14194">14194</a>
+<a href="#14195" id="14195">14195</a>
+<a href="#14196" id="14196">14196</a>
+<a href="#14197" id="14197">14197</a>
+<a href="#14198" id="14198">14198</a>
+<a href="#14199" id="14199">14199</a>
+<a href="#14200" id="14200">14200</a>
+<a href="#14201" id="14201">14201</a>
+<a href="#14202" id="14202">14202</a>
+<a href="#14203" id="14203">14203</a>
+<a href="#14204" id="14204">14204</a>
+<a href="#14205" id="14205">14205</a>
+<a href="#14206" id="14206">14206</a>
+<a href="#14207" id="14207">14207</a>
+<a href="#14208" id="14208">14208</a>
+<a href="#14209" id="14209">14209</a>
+<a href="#14210" id="14210">14210</a>
+<a href="#14211" id="14211">14211</a>
+<a href="#14212" id="14212">14212</a>
+<a href="#14213" id="14213">14213</a>
+<a href="#14214" id="14214">14214</a>
+<a href="#14215" id="14215">14215</a>
+<a href="#14216" id="14216">14216</a>
+<a href="#14217" id="14217">14217</a>
+<a href="#14218" id="14218">14218</a>
+<a href="#14219" id="14219">14219</a>
+<a href="#14220" id="14220">14220</a>
+<a href="#14221" id="14221">14221</a>
+<a href="#14222" id="14222">14222</a>
+<a href="#14223" id="14223">14223</a>
+<a href="#14224" id="14224">14224</a>
+<a href="#14225" id="14225">14225</a>
+<a href="#14226" id="14226">14226</a>
+<a href="#14227" id="14227">14227</a>
+<a href="#14228" id="14228">14228</a>
+<a href="#14229" id="14229">14229</a>
+<a href="#14230" id="14230">14230</a>
+<a href="#14231" id="14231">14231</a>
+<a href="#14232" id="14232">14232</a>
+<a href="#14233" id="14233">14233</a>
+<a href="#14234" id="14234">14234</a>
+<a href="#14235" id="14235">14235</a>
+<a href="#14236" id="14236">14236</a>
+<a href="#14237" id="14237">14237</a>
+<a href="#14238" id="14238">14238</a>
+<a href="#14239" id="14239">14239</a>
+<a href="#14240" id="14240">14240</a>
+<a href="#14241" id="14241">14241</a>
+<a href="#14242" id="14242">14242</a>
+<a href="#14243" id="14243">14243</a>
+<a href="#14244" id="14244">14244</a>
+<a href="#14245" id="14245">14245</a>
+<a href="#14246" id="14246">14246</a>
+<a href="#14247" id="14247">14247</a>
+<a href="#14248" id="14248">14248</a>
+<a href="#14249" id="14249">14249</a>
+<a href="#14250" id="14250">14250</a>
+<a href="#14251" id="14251">14251</a>
+<a href="#14252" id="14252">14252</a>
+<a href="#14253" id="14253">14253</a>
+<a href="#14254" id="14254">14254</a>
+<a href="#14255" id="14255">14255</a>
+<a href="#14256" id="14256">14256</a>
+<a href="#14257" id="14257">14257</a>
+<a href="#14258" id="14258">14258</a>
+<a href="#14259" id="14259">14259</a>
+<a href="#14260" id="14260">14260</a>
+<a href="#14261" id="14261">14261</a>
+<a href="#14262" id="14262">14262</a>
+<a href="#14263" id="14263">14263</a>
+<a href="#14264" id="14264">14264</a>
+<a href="#14265" id="14265">14265</a>
+<a href="#14266" id="14266">14266</a>
+<a href="#14267" id="14267">14267</a>
+<a href="#14268" id="14268">14268</a>
+<a href="#14269" id="14269">14269</a>
+<a href="#14270" id="14270">14270</a>
+<a href="#14271" id="14271">14271</a>
+<a href="#14272" id="14272">14272</a>
+<a href="#14273" id="14273">14273</a>
+<a href="#14274" id="14274">14274</a>
+<a href="#14275" id="14275">14275</a>
+<a href="#14276" id="14276">14276</a>
+<a href="#14277" id="14277">14277</a>
+<a href="#14278" id="14278">14278</a>
+<a href="#14279" id="14279">14279</a>
+<a href="#14280" id="14280">14280</a>
+<a href="#14281" id="14281">14281</a>
+<a href="#14282" id="14282">14282</a>
+<a href="#14283" id="14283">14283</a>
+<a href="#14284" id="14284">14284</a>
+<a href="#14285" id="14285">14285</a>
+<a href="#14286" id="14286">14286</a>
+<a href="#14287" id="14287">14287</a>
+<a href="#14288" id="14288">14288</a>
+<a href="#14289" id="14289">14289</a>
+<a href="#14290" id="14290">14290</a>
+<a href="#14291" id="14291">14291</a>
+<a href="#14292" id="14292">14292</a>
+<a href="#14293" id="14293">14293</a>
+<a href="#14294" id="14294">14294</a>
+<a href="#14295" id="14295">14295</a>
+<a href="#14296" id="14296">14296</a>
+<a href="#14297" id="14297">14297</a>
+<a href="#14298" id="14298">14298</a>
+<a href="#14299" id="14299">14299</a>
+<a href="#14300" id="14300">14300</a>
+<a href="#14301" id="14301">14301</a>
+<a href="#14302" id="14302">14302</a>
+<a href="#14303" id="14303">14303</a>
+<a href="#14304" id="14304">14304</a>
+<a href="#14305" id="14305">14305</a>
+<a href="#14306" id="14306">14306</a>
+<a href="#14307" id="14307">14307</a>
+<a href="#14308" id="14308">14308</a>
+<a href="#14309" id="14309">14309</a>
+<a href="#14310" id="14310">14310</a>
+<a href="#14311" id="14311">14311</a>
+<a href="#14312" id="14312">14312</a>
+<a href="#14313" id="14313">14313</a>
+<a href="#14314" id="14314">14314</a>
+<a href="#14315" id="14315">14315</a>
+<a href="#14316" id="14316">14316</a>
+<a href="#14317" id="14317">14317</a>
+<a href="#14318" id="14318">14318</a>
+<a href="#14319" id="14319">14319</a>
+<a href="#14320" id="14320">14320</a>
+<a href="#14321" id="14321">14321</a>
+<a href="#14322" id="14322">14322</a>
+<a href="#14323" id="14323">14323</a>
+<a href="#14324" id="14324">14324</a>
+<a href="#14325" id="14325">14325</a>
+<a href="#14326" id="14326">14326</a>
+<a href="#14327" id="14327">14327</a>
+<a href="#14328" id="14328">14328</a>
+<a href="#14329" id="14329">14329</a>
+<a href="#14330" id="14330">14330</a>
+<a href="#14331" id="14331">14331</a>
+<a href="#14332" id="14332">14332</a>
+<a href="#14333" id="14333">14333</a>
+<a href="#14334" id="14334">14334</a>
+<a href="#14335" id="14335">14335</a>
+<a href="#14336" id="14336">14336</a>
+<a href="#14337" id="14337">14337</a>
+<a href="#14338" id="14338">14338</a>
+<a href="#14339" id="14339">14339</a>
+<a href="#14340" id="14340">14340</a>
+<a href="#14341" id="14341">14341</a>
+<a href="#14342" id="14342">14342</a>
+<a href="#14343" id="14343">14343</a>
+<a href="#14344" id="14344">14344</a>
+<a href="#14345" id="14345">14345</a>
+<a href="#14346" id="14346">14346</a>
+<a href="#14347" id="14347">14347</a>
+<a href="#14348" id="14348">14348</a>
+<a href="#14349" id="14349">14349</a>
+<a href="#14350" id="14350">14350</a>
+<a href="#14351" id="14351">14351</a>
+<a href="#14352" id="14352">14352</a>
+<a href="#14353" id="14353">14353</a>
+<a href="#14354" id="14354">14354</a>
+<a href="#14355" id="14355">14355</a>
+<a href="#14356" id="14356">14356</a>
+<a href="#14357" id="14357">14357</a>
+<a href="#14358" id="14358">14358</a>
+<a href="#14359" id="14359">14359</a>
+<a href="#14360" id="14360">14360</a>
+<a href="#14361" id="14361">14361</a>
+<a href="#14362" id="14362">14362</a>
+<a href="#14363" id="14363">14363</a>
+<a href="#14364" id="14364">14364</a>
+<a href="#14365" id="14365">14365</a>
+<a href="#14366" id="14366">14366</a>
+<a href="#14367" id="14367">14367</a>
+<a href="#14368" id="14368">14368</a>
+<a href="#14369" id="14369">14369</a>
+<a href="#14370" id="14370">14370</a>
+<a href="#14371" id="14371">14371</a>
+<a href="#14372" id="14372">14372</a>
+<a href="#14373" id="14373">14373</a>
+<a href="#14374" id="14374">14374</a>
+<a href="#14375" id="14375">14375</a>
+<a href="#14376" id="14376">14376</a>
+<a href="#14377" id="14377">14377</a>
+<a href="#14378" id="14378">14378</a>
+<a href="#14379" id="14379">14379</a>
+<a href="#14380" id="14380">14380</a>
+<a href="#14381" id="14381">14381</a>
+<a href="#14382" id="14382">14382</a>
+<a href="#14383" id="14383">14383</a>
+<a href="#14384" id="14384">14384</a>
+<a href="#14385" id="14385">14385</a>
+<a href="#14386" id="14386">14386</a>
+<a href="#14387" id="14387">14387</a>
+<a href="#14388" id="14388">14388</a>
+<a href="#14389" id="14389">14389</a>
+<a href="#14390" id="14390">14390</a>
+<a href="#14391" id="14391">14391</a>
+<a href="#14392" id="14392">14392</a>
+<a href="#14393" id="14393">14393</a>
+<a href="#14394" id="14394">14394</a>
+<a href="#14395" id="14395">14395</a>
+<a href="#14396" id="14396">14396</a>
+<a href="#14397" id="14397">14397</a>
+<a href="#14398" id="14398">14398</a>
+<a href="#14399" id="14399">14399</a>
+<a href="#14400" id="14400">14400</a>
+<a href="#14401" id="14401">14401</a>
+<a href="#14402" id="14402">14402</a>
+<a href="#14403" id="14403">14403</a>
+<a href="#14404" id="14404">14404</a>
+<a href="#14405" id="14405">14405</a>
+<a href="#14406" id="14406">14406</a>
+<a href="#14407" id="14407">14407</a>
+<a href="#14408" id="14408">14408</a>
+<a href="#14409" id="14409">14409</a>
+<a href="#14410" id="14410">14410</a>
+<a href="#14411" id="14411">14411</a>
+<a href="#14412" id="14412">14412</a>
+<a href="#14413" id="14413">14413</a>
+<a href="#14414" id="14414">14414</a>
+<a href="#14415" id="14415">14415</a>
+<a href="#14416" id="14416">14416</a>
+<a href="#14417" id="14417">14417</a>
+<a href="#14418" id="14418">14418</a>
+<a href="#14419" id="14419">14419</a>
+<a href="#14420" id="14420">14420</a>
+<a href="#14421" id="14421">14421</a>
+<a href="#14422" id="14422">14422</a>
+<a href="#14423" id="14423">14423</a>
+<a href="#14424" id="14424">14424</a>
+<a href="#14425" id="14425">14425</a>
+<a href="#14426" id="14426">14426</a>
+<a href="#14427" id="14427">14427</a>
+<a href="#14428" id="14428">14428</a>
+<a href="#14429" id="14429">14429</a>
+<a href="#14430" id="14430">14430</a>
+<a href="#14431" id="14431">14431</a>
+<a href="#14432" id="14432">14432</a>
+<a href="#14433" id="14433">14433</a>
+<a href="#14434" id="14434">14434</a>
+<a href="#14435" id="14435">14435</a>
+<a href="#14436" id="14436">14436</a>
+<a href="#14437" id="14437">14437</a>
+<a href="#14438" id="14438">14438</a>
+<a href="#14439" id="14439">14439</a>
+<a href="#14440" id="14440">14440</a>
+<a href="#14441" id="14441">14441</a>
+<a href="#14442" id="14442">14442</a>
+<a href="#14443" id="14443">14443</a>
+<a href="#14444" id="14444">14444</a>
+<a href="#14445" id="14445">14445</a>
+<a href="#14446" id="14446">14446</a>
+<a href="#14447" id="14447">14447</a>
+<a href="#14448" id="14448">14448</a>
+<a href="#14449" id="14449">14449</a>
+<a href="#14450" id="14450">14450</a>
+<a href="#14451" id="14451">14451</a>
+<a href="#14452" id="14452">14452</a>
+<a href="#14453" id="14453">14453</a>
+<a href="#14454" id="14454">14454</a>
+<a href="#14455" id="14455">14455</a>
+<a href="#14456" id="14456">14456</a>
+<a href="#14457" id="14457">14457</a>
+<a href="#14458" id="14458">14458</a>
+<a href="#14459" id="14459">14459</a>
+<a href="#14460" id="14460">14460</a>
+<a href="#14461" id="14461">14461</a>
+<a href="#14462" id="14462">14462</a>
+<a href="#14463" id="14463">14463</a>
+<a href="#14464" id="14464">14464</a>
+<a href="#14465" id="14465">14465</a>
+<a href="#14466" id="14466">14466</a>
+<a href="#14467" id="14467">14467</a>
+<a href="#14468" id="14468">14468</a>
+<a href="#14469" id="14469">14469</a>
+<a href="#14470" id="14470">14470</a>
+<a href="#14471" id="14471">14471</a>
+<a href="#14472" id="14472">14472</a>
+<a href="#14473" id="14473">14473</a>
+<a href="#14474" id="14474">14474</a>
+<a href="#14475" id="14475">14475</a>
+<a href="#14476" id="14476">14476</a>
+<a href="#14477" id="14477">14477</a>
+<a href="#14478" id="14478">14478</a>
+<a href="#14479" id="14479">14479</a>
+<a href="#14480" id="14480">14480</a>
+<a href="#14481" id="14481">14481</a>
+<a href="#14482" id="14482">14482</a>
+<a href="#14483" id="14483">14483</a>
+<a href="#14484" id="14484">14484</a>
+<a href="#14485" id="14485">14485</a>
+<a href="#14486" id="14486">14486</a>
+<a href="#14487" id="14487">14487</a>
+<a href="#14488" id="14488">14488</a>
+<a href="#14489" id="14489">14489</a>
+<a href="#14490" id="14490">14490</a>
+<a href="#14491" id="14491">14491</a>
+<a href="#14492" id="14492">14492</a>
+<a href="#14493" id="14493">14493</a>
+<a href="#14494" id="14494">14494</a>
+<a href="#14495" id="14495">14495</a>
+<a href="#14496" id="14496">14496</a>
+<a href="#14497" id="14497">14497</a>
+<a href="#14498" id="14498">14498</a>
+<a href="#14499" id="14499">14499</a>
+<a href="#14500" id="14500">14500</a>
+<a href="#14501" id="14501">14501</a>
+<a href="#14502" id="14502">14502</a>
+<a href="#14503" id="14503">14503</a>
+<a href="#14504" id="14504">14504</a>
+<a href="#14505" id="14505">14505</a>
+<a href="#14506" id="14506">14506</a>
+<a href="#14507" id="14507">14507</a>
+<a href="#14508" id="14508">14508</a>
+<a href="#14509" id="14509">14509</a>
+<a href="#14510" id="14510">14510</a>
+<a href="#14511" id="14511">14511</a>
+<a href="#14512" id="14512">14512</a>
+<a href="#14513" id="14513">14513</a>
+<a href="#14514" id="14514">14514</a>
+<a href="#14515" id="14515">14515</a>
+<a href="#14516" id="14516">14516</a>
+<a href="#14517" id="14517">14517</a>
+<a href="#14518" id="14518">14518</a>
+<a href="#14519" id="14519">14519</a>
+<a href="#14520" id="14520">14520</a>
+<a href="#14521" id="14521">14521</a>
+<a href="#14522" id="14522">14522</a>
+<a href="#14523" id="14523">14523</a>
+<a href="#14524" id="14524">14524</a>
+<a href="#14525" id="14525">14525</a>
+<a href="#14526" id="14526">14526</a>
+<a href="#14527" id="14527">14527</a>
+<a href="#14528" id="14528">14528</a>
+<a href="#14529" id="14529">14529</a>
+<a href="#14530" id="14530">14530</a>
+<a href="#14531" id="14531">14531</a>
+<a href="#14532" id="14532">14532</a>
+<a href="#14533" id="14533">14533</a>
+<a href="#14534" id="14534">14534</a>
+<a href="#14535" id="14535">14535</a>
+<a href="#14536" id="14536">14536</a>
+<a href="#14537" id="14537">14537</a>
+<a href="#14538" id="14538">14538</a>
+<a href="#14539" id="14539">14539</a>
+<a href="#14540" id="14540">14540</a>
+<a href="#14541" id="14541">14541</a>
+<a href="#14542" id="14542">14542</a>
+<a href="#14543" id="14543">14543</a>
+<a href="#14544" id="14544">14544</a>
+<a href="#14545" id="14545">14545</a>
+<a href="#14546" id="14546">14546</a>
+<a href="#14547" id="14547">14547</a>
+<a href="#14548" id="14548">14548</a>
+<a href="#14549" id="14549">14549</a>
+<a href="#14550" id="14550">14550</a>
+<a href="#14551" id="14551">14551</a>
+<a href="#14552" id="14552">14552</a>
+<a href="#14553" id="14553">14553</a>
+<a href="#14554" id="14554">14554</a>
+<a href="#14555" id="14555">14555</a>
+<a href="#14556" id="14556">14556</a>
+<a href="#14557" id="14557">14557</a>
+<a href="#14558" id="14558">14558</a>
+<a href="#14559" id="14559">14559</a>
+<a href="#14560" id="14560">14560</a>
+<a href="#14561" id="14561">14561</a>
+<a href="#14562" id="14562">14562</a>
+<a href="#14563" id="14563">14563</a>
+<a href="#14564" id="14564">14564</a>
+<a href="#14565" id="14565">14565</a>
+<a href="#14566" id="14566">14566</a>
+<a href="#14567" id="14567">14567</a>
+<a href="#14568" id="14568">14568</a>
+<a href="#14569" id="14569">14569</a>
+<a href="#14570" id="14570">14570</a>
+<a href="#14571" id="14571">14571</a>
+<a href="#14572" id="14572">14572</a>
+<a href="#14573" id="14573">14573</a>
+<a href="#14574" id="14574">14574</a>
+<a href="#14575" id="14575">14575</a>
+<a href="#14576" id="14576">14576</a>
+<a href="#14577" id="14577">14577</a>
+<a href="#14578" id="14578">14578</a>
+<a href="#14579" id="14579">14579</a>
+<a href="#14580" id="14580">14580</a>
+<a href="#14581" id="14581">14581</a>
+<a href="#14582" id="14582">14582</a>
+<a href="#14583" id="14583">14583</a>
+<a href="#14584" id="14584">14584</a>
+<a href="#14585" id="14585">14585</a>
+<a href="#14586" id="14586">14586</a>
+<a href="#14587" id="14587">14587</a>
+<a href="#14588" id="14588">14588</a>
+<a href="#14589" id="14589">14589</a>
+<a href="#14590" id="14590">14590</a>
+<a href="#14591" id="14591">14591</a>
+<a href="#14592" id="14592">14592</a>
+<a href="#14593" id="14593">14593</a>
+<a href="#14594" id="14594">14594</a>
+<a href="#14595" id="14595">14595</a>
+<a href="#14596" id="14596">14596</a>
+<a href="#14597" id="14597">14597</a>
+<a href="#14598" id="14598">14598</a>
+<a href="#14599" id="14599">14599</a>
+<a href="#14600" id="14600">14600</a>
+<a href="#14601" id="14601">14601</a>
+<a href="#14602" id="14602">14602</a>
+<a href="#14603" id="14603">14603</a>
+<a href="#14604" id="14604">14604</a>
+<a href="#14605" id="14605">14605</a>
+<a href="#14606" id="14606">14606</a>
+<a href="#14607" id="14607">14607</a>
+<a href="#14608" id="14608">14608</a>
+<a href="#14609" id="14609">14609</a>
+<a href="#14610" id="14610">14610</a>
+<a href="#14611" id="14611">14611</a>
+<a href="#14612" id="14612">14612</a>
+<a href="#14613" id="14613">14613</a>
+<a href="#14614" id="14614">14614</a>
+<a href="#14615" id="14615">14615</a>
+<a href="#14616" id="14616">14616</a>
+<a href="#14617" id="14617">14617</a>
+<a href="#14618" id="14618">14618</a>
+<a href="#14619" id="14619">14619</a>
+<a href="#14620" id="14620">14620</a>
+<a href="#14621" id="14621">14621</a>
+<a href="#14622" id="14622">14622</a>
+<a href="#14623" id="14623">14623</a>
+<a href="#14624" id="14624">14624</a>
+<a href="#14625" id="14625">14625</a>
+<a href="#14626" id="14626">14626</a>
+<a href="#14627" id="14627">14627</a>
+<a href="#14628" id="14628">14628</a>
+<a href="#14629" id="14629">14629</a>
+<a href="#14630" id="14630">14630</a>
+<a href="#14631" id="14631">14631</a>
+<a href="#14632" id="14632">14632</a>
+<a href="#14633" id="14633">14633</a>
+<a href="#14634" id="14634">14634</a>
+<a href="#14635" id="14635">14635</a>
+<a href="#14636" id="14636">14636</a>
+<a href="#14637" id="14637">14637</a>
+<a href="#14638" id="14638">14638</a>
+<a href="#14639" id="14639">14639</a>
+<a href="#14640" id="14640">14640</a>
+<a href="#14641" id="14641">14641</a>
+<a href="#14642" id="14642">14642</a>
+<a href="#14643" id="14643">14643</a>
+<a href="#14644" id="14644">14644</a>
+<a href="#14645" id="14645">14645</a>
+<a href="#14646" id="14646">14646</a>
+<a href="#14647" id="14647">14647</a>
+<a href="#14648" id="14648">14648</a>
+<a href="#14649" id="14649">14649</a>
+<a href="#14650" id="14650">14650</a>
+<a href="#14651" id="14651">14651</a>
+<a href="#14652" id="14652">14652</a>
+<a href="#14653" id="14653">14653</a>
+<a href="#14654" id="14654">14654</a>
+<a href="#14655" id="14655">14655</a>
+<a href="#14656" id="14656">14656</a>
+<a href="#14657" id="14657">14657</a>
+<a href="#14658" id="14658">14658</a>
+<a href="#14659" id="14659">14659</a>
+<a href="#14660" id="14660">14660</a>
+<a href="#14661" id="14661">14661</a>
+<a href="#14662" id="14662">14662</a>
+<a href="#14663" id="14663">14663</a>
+<a href="#14664" id="14664">14664</a>
+<a href="#14665" id="14665">14665</a>
+<a href="#14666" id="14666">14666</a>
+<a href="#14667" id="14667">14667</a>
+<a href="#14668" id="14668">14668</a>
+<a href="#14669" id="14669">14669</a>
+<a href="#14670" id="14670">14670</a>
+<a href="#14671" id="14671">14671</a>
+<a href="#14672" id="14672">14672</a>
+<a href="#14673" id="14673">14673</a>
+<a href="#14674" id="14674">14674</a>
+<a href="#14675" id="14675">14675</a>
+<a href="#14676" id="14676">14676</a>
+<a href="#14677" id="14677">14677</a>
+<a href="#14678" id="14678">14678</a>
+<a href="#14679" id="14679">14679</a>
+<a href="#14680" id="14680">14680</a>
+<a href="#14681" id="14681">14681</a>
+<a href="#14682" id="14682">14682</a>
+<a href="#14683" id="14683">14683</a>
+<a href="#14684" id="14684">14684</a>
+<a href="#14685" id="14685">14685</a>
+<a href="#14686" id="14686">14686</a>
+<a href="#14687" id="14687">14687</a>
+<a href="#14688" id="14688">14688</a>
+<a href="#14689" id="14689">14689</a>
+<a href="#14690" id="14690">14690</a>
+<a href="#14691" id="14691">14691</a>
+<a href="#14692" id="14692">14692</a>
+<a href="#14693" id="14693">14693</a>
+<a href="#14694" id="14694">14694</a>
+<a href="#14695" id="14695">14695</a>
+<a href="#14696" id="14696">14696</a>
+<a href="#14697" id="14697">14697</a>
+<a href="#14698" id="14698">14698</a>
+<a href="#14699" id="14699">14699</a>
+<a href="#14700" id="14700">14700</a>
+<a href="#14701" id="14701">14701</a>
+<a href="#14702" id="14702">14702</a>
+<a href="#14703" id="14703">14703</a>
+<a href="#14704" id="14704">14704</a>
+<a href="#14705" id="14705">14705</a>
+<a href="#14706" id="14706">14706</a>
+<a href="#14707" id="14707">14707</a>
+<a href="#14708" id="14708">14708</a>
+<a href="#14709" id="14709">14709</a>
+<a href="#14710" id="14710">14710</a>
+<a href="#14711" id="14711">14711</a>
+<a href="#14712" id="14712">14712</a>
+<a href="#14713" id="14713">14713</a>
+<a href="#14714" id="14714">14714</a>
+<a href="#14715" id="14715">14715</a>
+<a href="#14716" id="14716">14716</a>
+<a href="#14717" id="14717">14717</a>
+<a href="#14718" id="14718">14718</a>
+<a href="#14719" id="14719">14719</a>
+<a href="#14720" id="14720">14720</a>
+<a href="#14721" id="14721">14721</a>
+<a href="#14722" id="14722">14722</a>
+<a href="#14723" id="14723">14723</a>
+<a href="#14724" id="14724">14724</a>
+<a href="#14725" id="14725">14725</a>
+<a href="#14726" id="14726">14726</a>
+<a href="#14727" id="14727">14727</a>
+<a href="#14728" id="14728">14728</a>
+<a href="#14729" id="14729">14729</a>
+<a href="#14730" id="14730">14730</a>
+<a href="#14731" id="14731">14731</a>
+<a href="#14732" id="14732">14732</a>
+<a href="#14733" id="14733">14733</a>
+<a href="#14734" id="14734">14734</a>
+<a href="#14735" id="14735">14735</a>
+<a href="#14736" id="14736">14736</a>
+<a href="#14737" id="14737">14737</a>
+<a href="#14738" id="14738">14738</a>
+<a href="#14739" id="14739">14739</a>
+<a href="#14740" id="14740">14740</a>
+<a href="#14741" id="14741">14741</a>
+<a href="#14742" id="14742">14742</a>
+<a href="#14743" id="14743">14743</a>
+<a href="#14744" id="14744">14744</a>
+<a href="#14745" id="14745">14745</a>
+<a href="#14746" id="14746">14746</a>
+<a href="#14747" id="14747">14747</a>
+<a href="#14748" id="14748">14748</a>
+<a href="#14749" id="14749">14749</a>
+<a href="#14750" id="14750">14750</a>
+<a href="#14751" id="14751">14751</a>
+<a href="#14752" id="14752">14752</a>
+<a href="#14753" id="14753">14753</a>
+<a href="#14754" id="14754">14754</a>
+<a href="#14755" id="14755">14755</a>
+<a href="#14756" id="14756">14756</a>
+<a href="#14757" id="14757">14757</a>
+<a href="#14758" id="14758">14758</a>
+<a href="#14759" id="14759">14759</a>
+<a href="#14760" id="14760">14760</a>
+<a href="#14761" id="14761">14761</a>
+<a href="#14762" id="14762">14762</a>
+<a href="#14763" id="14763">14763</a>
+<a href="#14764" id="14764">14764</a>
+<a href="#14765" id="14765">14765</a>
+<a href="#14766" id="14766">14766</a>
+<a href="#14767" id="14767">14767</a>
+<a href="#14768" id="14768">14768</a>
+<a href="#14769" id="14769">14769</a>
+<a href="#14770" id="14770">14770</a>
+<a href="#14771" id="14771">14771</a>
+<a href="#14772" id="14772">14772</a>
+<a href="#14773" id="14773">14773</a>
+<a href="#14774" id="14774">14774</a>
+<a href="#14775" id="14775">14775</a>
+<a href="#14776" id="14776">14776</a>
+<a href="#14777" id="14777">14777</a>
+<a href="#14778" id="14778">14778</a>
+<a href="#14779" id="14779">14779</a>
+<a href="#14780" id="14780">14780</a>
+<a href="#14781" id="14781">14781</a>
+<a href="#14782" id="14782">14782</a>
+<a href="#14783" id="14783">14783</a>
+<a href="#14784" id="14784">14784</a>
+<a href="#14785" id="14785">14785</a>
+<a href="#14786" id="14786">14786</a>
+<a href="#14787" id="14787">14787</a>
+<a href="#14788" id="14788">14788</a>
+<a href="#14789" id="14789">14789</a>
+<a href="#14790" id="14790">14790</a>
+<a href="#14791" id="14791">14791</a>
+<a href="#14792" id="14792">14792</a>
+<a href="#14793" id="14793">14793</a>
+<a href="#14794" id="14794">14794</a>
+<a href="#14795" id="14795">14795</a>
+<a href="#14796" id="14796">14796</a>
+<a href="#14797" id="14797">14797</a>
+<a href="#14798" id="14798">14798</a>
+<a href="#14799" id="14799">14799</a>
+<a href="#14800" id="14800">14800</a>
+<a href="#14801" id="14801">14801</a>
+<a href="#14802" id="14802">14802</a>
+<a href="#14803" id="14803">14803</a>
+<a href="#14804" id="14804">14804</a>
+<a href="#14805" id="14805">14805</a>
+<a href="#14806" id="14806">14806</a>
+<a href="#14807" id="14807">14807</a>
+<a href="#14808" id="14808">14808</a>
+<a href="#14809" id="14809">14809</a>
+<a href="#14810" id="14810">14810</a>
+<a href="#14811" id="14811">14811</a>
+<a href="#14812" id="14812">14812</a>
+<a href="#14813" id="14813">14813</a>
+<a href="#14814" id="14814">14814</a>
+<a href="#14815" id="14815">14815</a>
+<a href="#14816" id="14816">14816</a>
+<a href="#14817" id="14817">14817</a>
+<a href="#14818" id="14818">14818</a>
+<a href="#14819" id="14819">14819</a>
+<a href="#14820" id="14820">14820</a>
+<a href="#14821" id="14821">14821</a>
+<a href="#14822" id="14822">14822</a>
+<a href="#14823" id="14823">14823</a>
+<a href="#14824" id="14824">14824</a>
+<a href="#14825" id="14825">14825</a>
+<a href="#14826" id="14826">14826</a>
+<a href="#14827" id="14827">14827</a>
+<a href="#14828" id="14828">14828</a>
+<a href="#14829" id="14829">14829</a>
+<a href="#14830" id="14830">14830</a>
+<a href="#14831" id="14831">14831</a>
+<a href="#14832" id="14832">14832</a>
+<a href="#14833" id="14833">14833</a>
+<a href="#14834" id="14834">14834</a>
+<a href="#14835" id="14835">14835</a>
+<a href="#14836" id="14836">14836</a>
+<a href="#14837" id="14837">14837</a>
+<a href="#14838" id="14838">14838</a>
+<a href="#14839" id="14839">14839</a>
+<a href="#14840" id="14840">14840</a>
+<a href="#14841" id="14841">14841</a>
+<a href="#14842" id="14842">14842</a>
+<a href="#14843" id="14843">14843</a>
+<a href="#14844" id="14844">14844</a>
+<a href="#14845" id="14845">14845</a>
+<a href="#14846" id="14846">14846</a>
+<a href="#14847" id="14847">14847</a>
+<a href="#14848" id="14848">14848</a>
+<a href="#14849" id="14849">14849</a>
+<a href="#14850" id="14850">14850</a>
+<a href="#14851" id="14851">14851</a>
+<a href="#14852" id="14852">14852</a>
+<a href="#14853" id="14853">14853</a>
+<a href="#14854" id="14854">14854</a>
+<a href="#14855" id="14855">14855</a>
+<a href="#14856" id="14856">14856</a>
+<a href="#14857" id="14857">14857</a>
+<a href="#14858" id="14858">14858</a>
+<a href="#14859" id="14859">14859</a>
+<a href="#14860" id="14860">14860</a>
+<a href="#14861" id="14861">14861</a>
+<a href="#14862" id="14862">14862</a>
+<a href="#14863" id="14863">14863</a>
+<a href="#14864" id="14864">14864</a>
+<a href="#14865" id="14865">14865</a>
+<a href="#14866" id="14866">14866</a>
+<a href="#14867" id="14867">14867</a>
+<a href="#14868" id="14868">14868</a>
+<a href="#14869" id="14869">14869</a>
+<a href="#14870" id="14870">14870</a>
+<a href="#14871" id="14871">14871</a>
+<a href="#14872" id="14872">14872</a>
+<a href="#14873" id="14873">14873</a>
+<a href="#14874" id="14874">14874</a>
+<a href="#14875" id="14875">14875</a>
+<a href="#14876" id="14876">14876</a>
+<a href="#14877" id="14877">14877</a>
+<a href="#14878" id="14878">14878</a>
+<a href="#14879" id="14879">14879</a>
+<a href="#14880" id="14880">14880</a>
+<a href="#14881" id="14881">14881</a>
+<a href="#14882" id="14882">14882</a>
+<a href="#14883" id="14883">14883</a>
+<a href="#14884" id="14884">14884</a>
+<a href="#14885" id="14885">14885</a>
+<a href="#14886" id="14886">14886</a>
+<a href="#14887" id="14887">14887</a>
+<a href="#14888" id="14888">14888</a>
+<a href="#14889" id="14889">14889</a>
+<a href="#14890" id="14890">14890</a>
+<a href="#14891" id="14891">14891</a>
+<a href="#14892" id="14892">14892</a>
+<a href="#14893" id="14893">14893</a>
+<a href="#14894" id="14894">14894</a>
+<a href="#14895" id="14895">14895</a>
+<a href="#14896" id="14896">14896</a>
+<a href="#14897" id="14897">14897</a>
+<a href="#14898" id="14898">14898</a>
+<a href="#14899" id="14899">14899</a>
+<a href="#14900" id="14900">14900</a>
+<a href="#14901" id="14901">14901</a>
+<a href="#14902" id="14902">14902</a>
+<a href="#14903" id="14903">14903</a>
+<a href="#14904" id="14904">14904</a>
+<a href="#14905" id="14905">14905</a>
+<a href="#14906" id="14906">14906</a>
+<a href="#14907" id="14907">14907</a>
+<a href="#14908" id="14908">14908</a>
+<a href="#14909" id="14909">14909</a>
+<a href="#14910" id="14910">14910</a>
+<a href="#14911" id="14911">14911</a>
+<a href="#14912" id="14912">14912</a>
+<a href="#14913" id="14913">14913</a>
+<a href="#14914" id="14914">14914</a>
+<a href="#14915" id="14915">14915</a>
+<a href="#14916" id="14916">14916</a>
+<a href="#14917" id="14917">14917</a>
+<a href="#14918" id="14918">14918</a>
+<a href="#14919" id="14919">14919</a>
+<a href="#14920" id="14920">14920</a>
+<a href="#14921" id="14921">14921</a>
+<a href="#14922" id="14922">14922</a>
+<a href="#14923" id="14923">14923</a>
+<a href="#14924" id="14924">14924</a>
+<a href="#14925" id="14925">14925</a>
+<a href="#14926" id="14926">14926</a>
+<a href="#14927" id="14927">14927</a>
+<a href="#14928" id="14928">14928</a>
+<a href="#14929" id="14929">14929</a>
+<a href="#14930" id="14930">14930</a>
+<a href="#14931" id="14931">14931</a>
+<a href="#14932" id="14932">14932</a>
+<a href="#14933" id="14933">14933</a>
+<a href="#14934" id="14934">14934</a>
+<a href="#14935" id="14935">14935</a>
+<a href="#14936" id="14936">14936</a>
+<a href="#14937" id="14937">14937</a>
+<a href="#14938" id="14938">14938</a>
+<a href="#14939" id="14939">14939</a>
+<a href="#14940" id="14940">14940</a>
+<a href="#14941" id="14941">14941</a>
+<a href="#14942" id="14942">14942</a>
+<a href="#14943" id="14943">14943</a>
+<a href="#14944" id="14944">14944</a>
+<a href="#14945" id="14945">14945</a>
+<a href="#14946" id="14946">14946</a>
+<a href="#14947" id="14947">14947</a>
+<a href="#14948" id="14948">14948</a>
+<a href="#14949" id="14949">14949</a>
+<a href="#14950" id="14950">14950</a>
+<a href="#14951" id="14951">14951</a>
+<a href="#14952" id="14952">14952</a>
+<a href="#14953" id="14953">14953</a>
+<a href="#14954" id="14954">14954</a>
+<a href="#14955" id="14955">14955</a>
+<a href="#14956" id="14956">14956</a>
+<a href="#14957" id="14957">14957</a>
+<a href="#14958" id="14958">14958</a>
+<a href="#14959" id="14959">14959</a>
+<a href="#14960" id="14960">14960</a>
+<a href="#14961" id="14961">14961</a>
+<a href="#14962" id="14962">14962</a>
+<a href="#14963" id="14963">14963</a>
+<a href="#14964" id="14964">14964</a>
+<a href="#14965" id="14965">14965</a>
+<a href="#14966" id="14966">14966</a>
+<a href="#14967" id="14967">14967</a>
+<a href="#14968" id="14968">14968</a>
+<a href="#14969" id="14969">14969</a>
+<a href="#14970" id="14970">14970</a>
+<a href="#14971" id="14971">14971</a>
+<a href="#14972" id="14972">14972</a>
+<a href="#14973" id="14973">14973</a>
+<a href="#14974" id="14974">14974</a>
+<a href="#14975" id="14975">14975</a>
+<a href="#14976" id="14976">14976</a>
+<a href="#14977" id="14977">14977</a>
+<a href="#14978" id="14978">14978</a>
+<a href="#14979" id="14979">14979</a>
+<a href="#14980" id="14980">14980</a>
+<a href="#14981" id="14981">14981</a>
+<a href="#14982" id="14982">14982</a>
+<a href="#14983" id="14983">14983</a>
+<a href="#14984" id="14984">14984</a>
+<a href="#14985" id="14985">14985</a>
+<a href="#14986" id="14986">14986</a>
+<a href="#14987" id="14987">14987</a>
+<a href="#14988" id="14988">14988</a>
+<a href="#14989" id="14989">14989</a>
+<a href="#14990" id="14990">14990</a>
+<a href="#14991" id="14991">14991</a>
+<a href="#14992" id="14992">14992</a>
+<a href="#14993" id="14993">14993</a>
+<a href="#14994" id="14994">14994</a>
+<a href="#14995" id="14995">14995</a>
+<a href="#14996" id="14996">14996</a>
+<a href="#14997" id="14997">14997</a>
+<a href="#14998" id="14998">14998</a>
+<a href="#14999" id="14999">14999</a>
+<a href="#15000" id="15000">15000</a>
+<a href="#15001" id="15001">15001</a>
+<a href="#15002" id="15002">15002</a>
+<a href="#15003" id="15003">15003</a>
+<a href="#15004" id="15004">15004</a>
+<a href="#15005" id="15005">15005</a>
+<a href="#15006" id="15006">15006</a>
+<a href="#15007" id="15007">15007</a>
+<a href="#15008" id="15008">15008</a>
+<a href="#15009" id="15009">15009</a>
+<a href="#15010" id="15010">15010</a>
+<a href="#15011" id="15011">15011</a>
+<a href="#15012" id="15012">15012</a>
+<a href="#15013" id="15013">15013</a>
+<a href="#15014" id="15014">15014</a>
+<a href="#15015" id="15015">15015</a>
+<a href="#15016" id="15016">15016</a>
+<a href="#15017" id="15017">15017</a>
+<a href="#15018" id="15018">15018</a>
+<a href="#15019" id="15019">15019</a>
+<a href="#15020" id="15020">15020</a>
+<a href="#15021" id="15021">15021</a>
+<a href="#15022" id="15022">15022</a>
+<a href="#15023" id="15023">15023</a>
+<a href="#15024" id="15024">15024</a>
+<a href="#15025" id="15025">15025</a>
+<a href="#15026" id="15026">15026</a>
+<a href="#15027" id="15027">15027</a>
+<a href="#15028" id="15028">15028</a>
+<a href="#15029" id="15029">15029</a>
+<a href="#15030" id="15030">15030</a>
+<a href="#15031" id="15031">15031</a>
+<a href="#15032" id="15032">15032</a>
+<a href="#15033" id="15033">15033</a>
+<a href="#15034" id="15034">15034</a>
+<a href="#15035" id="15035">15035</a>
+<a href="#15036" id="15036">15036</a>
+<a href="#15037" id="15037">15037</a>
+<a href="#15038" id="15038">15038</a>
+<a href="#15039" id="15039">15039</a>
+<a href="#15040" id="15040">15040</a>
+<a href="#15041" id="15041">15041</a>
+<a href="#15042" id="15042">15042</a>
+<a href="#15043" id="15043">15043</a>
+<a href="#15044" id="15044">15044</a>
+<a href="#15045" id="15045">15045</a>
+<a href="#15046" id="15046">15046</a>
+<a href="#15047" id="15047">15047</a>
+<a href="#15048" id="15048">15048</a>
+<a href="#15049" id="15049">15049</a>
+<a href="#15050" id="15050">15050</a>
+<a href="#15051" id="15051">15051</a>
+<a href="#15052" id="15052">15052</a>
+<a href="#15053" id="15053">15053</a>
+<a href="#15054" id="15054">15054</a>
+<a href="#15055" id="15055">15055</a>
+<a href="#15056" id="15056">15056</a>
+<a href="#15057" id="15057">15057</a>
+<a href="#15058" id="15058">15058</a>
+<a href="#15059" id="15059">15059</a>
+<a href="#15060" id="15060">15060</a>
+<a href="#15061" id="15061">15061</a>
+<a href="#15062" id="15062">15062</a>
+<a href="#15063" id="15063">15063</a>
+<a href="#15064" id="15064">15064</a>
+<a href="#15065" id="15065">15065</a>
+<a href="#15066" id="15066">15066</a>
+<a href="#15067" id="15067">15067</a>
+<a href="#15068" id="15068">15068</a>
+<a href="#15069" id="15069">15069</a>
+<a href="#15070" id="15070">15070</a>
+<a href="#15071" id="15071">15071</a>
+<a href="#15072" id="15072">15072</a>
+<a href="#15073" id="15073">15073</a>
+<a href="#15074" id="15074">15074</a>
+<a href="#15075" id="15075">15075</a>
+<a href="#15076" id="15076">15076</a>
+<a href="#15077" id="15077">15077</a>
+<a href="#15078" id="15078">15078</a>
+<a href="#15079" id="15079">15079</a>
+<a href="#15080" id="15080">15080</a>
+<a href="#15081" id="15081">15081</a>
+<a href="#15082" id="15082">15082</a>
+<a href="#15083" id="15083">15083</a>
+<a href="#15084" id="15084">15084</a>
+<a href="#15085" id="15085">15085</a>
+<a href="#15086" id="15086">15086</a>
+<a href="#15087" id="15087">15087</a>
+<a href="#15088" id="15088">15088</a>
+<a href="#15089" id="15089">15089</a>
+<a href="#15090" id="15090">15090</a>
+<a href="#15091" id="15091">15091</a>
+<a href="#15092" id="15092">15092</a>
+<a href="#15093" id="15093">15093</a>
+<a href="#15094" id="15094">15094</a>
+<a href="#15095" id="15095">15095</a>
+<a href="#15096" id="15096">15096</a>
+<a href="#15097" id="15097">15097</a>
+<a href="#15098" id="15098">15098</a>
+<a href="#15099" id="15099">15099</a>
+<a href="#15100" id="15100">15100</a>
+<a href="#15101" id="15101">15101</a>
+<a href="#15102" id="15102">15102</a>
+<a href="#15103" id="15103">15103</a>
+<a href="#15104" id="15104">15104</a>
+<a href="#15105" id="15105">15105</a>
+<a href="#15106" id="15106">15106</a>
+<a href="#15107" id="15107">15107</a>
+<a href="#15108" id="15108">15108</a>
+<a href="#15109" id="15109">15109</a>
+<a href="#15110" id="15110">15110</a>
+<a href="#15111" id="15111">15111</a>
+<a href="#15112" id="15112">15112</a>
+<a href="#15113" id="15113">15113</a>
+<a href="#15114" id="15114">15114</a>
+<a href="#15115" id="15115">15115</a>
+<a href="#15116" id="15116">15116</a>
+<a href="#15117" id="15117">15117</a>
+<a href="#15118" id="15118">15118</a>
+<a href="#15119" id="15119">15119</a>
+<a href="#15120" id="15120">15120</a>
+<a href="#15121" id="15121">15121</a>
+<a href="#15122" id="15122">15122</a>
+<a href="#15123" id="15123">15123</a>
+<a href="#15124" id="15124">15124</a>
+<a href="#15125" id="15125">15125</a>
+<a href="#15126" id="15126">15126</a>
+<a href="#15127" id="15127">15127</a>
+<a href="#15128" id="15128">15128</a>
+<a href="#15129" id="15129">15129</a>
+<a href="#15130" id="15130">15130</a>
+<a href="#15131" id="15131">15131</a>
+<a href="#15132" id="15132">15132</a>
+<a href="#15133" id="15133">15133</a>
+<a href="#15134" id="15134">15134</a>
+<a href="#15135" id="15135">15135</a>
+<a href="#15136" id="15136">15136</a>
+<a href="#15137" id="15137">15137</a>
+<a href="#15138" id="15138">15138</a>
+<a href="#15139" id="15139">15139</a>
+<a href="#15140" id="15140">15140</a>
+<a href="#15141" id="15141">15141</a>
+<a href="#15142" id="15142">15142</a>
+<a href="#15143" id="15143">15143</a>
+<a href="#15144" id="15144">15144</a>
+<a href="#15145" id="15145">15145</a>
+<a href="#15146" id="15146">15146</a>
+<a href="#15147" id="15147">15147</a>
+<a href="#15148" id="15148">15148</a>
+<a href="#15149" id="15149">15149</a>
+<a href="#15150" id="15150">15150</a>
+<a href="#15151" id="15151">15151</a>
+<a href="#15152" id="15152">15152</a>
+<a href="#15153" id="15153">15153</a>
+<a href="#15154" id="15154">15154</a>
+<a href="#15155" id="15155">15155</a>
+<a href="#15156" id="15156">15156</a>
+<a href="#15157" id="15157">15157</a>
+<a href="#15158" id="15158">15158</a>
+<a href="#15159" id="15159">15159</a>
+<a href="#15160" id="15160">15160</a>
+<a href="#15161" id="15161">15161</a>
+<a href="#15162" id="15162">15162</a>
+<a href="#15163" id="15163">15163</a>
+<a href="#15164" id="15164">15164</a>
+<a href="#15165" id="15165">15165</a>
+<a href="#15166" id="15166">15166</a>
+<a href="#15167" id="15167">15167</a>
+<a href="#15168" id="15168">15168</a>
+<a href="#15169" id="15169">15169</a>
+<a href="#15170" id="15170">15170</a>
+<a href="#15171" id="15171">15171</a>
+<a href="#15172" id="15172">15172</a>
+<a href="#15173" id="15173">15173</a>
+<a href="#15174" id="15174">15174</a>
+<a href="#15175" id="15175">15175</a>
+<a href="#15176" id="15176">15176</a>
+<a href="#15177" id="15177">15177</a>
+<a href="#15178" id="15178">15178</a>
+<a href="#15179" id="15179">15179</a>
+<a href="#15180" id="15180">15180</a>
+<a href="#15181" id="15181">15181</a>
+<a href="#15182" id="15182">15182</a>
+<a href="#15183" id="15183">15183</a>
+<a href="#15184" id="15184">15184</a>
+<a href="#15185" id="15185">15185</a>
+<a href="#15186" id="15186">15186</a>
+<a href="#15187" id="15187">15187</a>
+<a href="#15188" id="15188">15188</a>
+<a href="#15189" id="15189">15189</a>
+<a href="#15190" id="15190">15190</a>
+<a href="#15191" id="15191">15191</a>
+<a href="#15192" id="15192">15192</a>
+<a href="#15193" id="15193">15193</a>
+<a href="#15194" id="15194">15194</a>
+<a href="#15195" id="15195">15195</a>
+<a href="#15196" id="15196">15196</a>
+<a href="#15197" id="15197">15197</a>
+<a href="#15198" id="15198">15198</a>
+<a href="#15199" id="15199">15199</a>
+<a href="#15200" id="15200">15200</a>
+<a href="#15201" id="15201">15201</a>
+<a href="#15202" id="15202">15202</a>
+<a href="#15203" id="15203">15203</a>
+<a href="#15204" id="15204">15204</a>
+<a href="#15205" id="15205">15205</a>
+<a href="#15206" id="15206">15206</a>
+<a href="#15207" id="15207">15207</a>
+<a href="#15208" id="15208">15208</a>
+<a href="#15209" id="15209">15209</a>
+<a href="#15210" id="15210">15210</a>
+<a href="#15211" id="15211">15211</a>
+<a href="#15212" id="15212">15212</a>
+<a href="#15213" id="15213">15213</a>
+<a href="#15214" id="15214">15214</a>
+<a href="#15215" id="15215">15215</a>
+<a href="#15216" id="15216">15216</a>
+<a href="#15217" id="15217">15217</a>
+<a href="#15218" id="15218">15218</a>
+<a href="#15219" id="15219">15219</a>
+<a href="#15220" id="15220">15220</a>
+<a href="#15221" id="15221">15221</a>
+<a href="#15222" id="15222">15222</a>
+<a href="#15223" id="15223">15223</a>
+<a href="#15224" id="15224">15224</a>
+<a href="#15225" id="15225">15225</a>
+<a href="#15226" id="15226">15226</a>
+<a href="#15227" id="15227">15227</a>
+<a href="#15228" id="15228">15228</a>
+<a href="#15229" id="15229">15229</a>
+<a href="#15230" id="15230">15230</a>
+<a href="#15231" id="15231">15231</a>
+<a href="#15232" id="15232">15232</a>
+<a href="#15233" id="15233">15233</a>
+<a href="#15234" id="15234">15234</a>
+<a href="#15235" id="15235">15235</a>
+<a href="#15236" id="15236">15236</a>
+<a href="#15237" id="15237">15237</a>
+<a href="#15238" id="15238">15238</a>
+<a href="#15239" id="15239">15239</a>
+<a href="#15240" id="15240">15240</a>
+<a href="#15241" id="15241">15241</a>
+<a href="#15242" id="15242">15242</a>
+<a href="#15243" id="15243">15243</a>
+<a href="#15244" id="15244">15244</a>
+<a href="#15245" id="15245">15245</a>
+<a href="#15246" id="15246">15246</a>
+<a href="#15247" id="15247">15247</a>
+<a href="#15248" id="15248">15248</a>
+<a href="#15249" id="15249">15249</a>
+<a href="#15250" id="15250">15250</a>
+<a href="#15251" id="15251">15251</a>
+<a href="#15252" id="15252">15252</a>
+<a href="#15253" id="15253">15253</a>
+<a href="#15254" id="15254">15254</a>
+<a href="#15255" id="15255">15255</a>
+<a href="#15256" id="15256">15256</a>
+<a href="#15257" id="15257">15257</a>
+<a href="#15258" id="15258">15258</a>
+<a href="#15259" id="15259">15259</a>
+<a href="#15260" id="15260">15260</a>
+<a href="#15261" id="15261">15261</a>
+<a href="#15262" id="15262">15262</a>
+<a href="#15263" id="15263">15263</a>
+<a href="#15264" id="15264">15264</a>
+<a href="#15265" id="15265">15265</a>
+<a href="#15266" id="15266">15266</a>
+<a href="#15267" id="15267">15267</a>
+<a href="#15268" id="15268">15268</a>
+<a href="#15269" id="15269">15269</a>
+<a href="#15270" id="15270">15270</a>
+<a href="#15271" id="15271">15271</a>
+<a href="#15272" id="15272">15272</a>
+<a href="#15273" id="15273">15273</a>
+<a href="#15274" id="15274">15274</a>
+<a href="#15275" id="15275">15275</a>
+<a href="#15276" id="15276">15276</a>
+<a href="#15277" id="15277">15277</a>
+<a href="#15278" id="15278">15278</a>
+<a href="#15279" id="15279">15279</a>
+<a href="#15280" id="15280">15280</a>
+<a href="#15281" id="15281">15281</a>
+<a href="#15282" id="15282">15282</a>
+<a href="#15283" id="15283">15283</a>
+<a href="#15284" id="15284">15284</a>
+<a href="#15285" id="15285">15285</a>
+<a href="#15286" id="15286">15286</a>
+<a href="#15287" id="15287">15287</a>
+<a href="#15288" id="15288">15288</a>
+<a href="#15289" id="15289">15289</a>
+<a href="#15290" id="15290">15290</a>
+<a href="#15291" id="15291">15291</a>
+<a href="#15292" id="15292">15292</a>
+<a href="#15293" id="15293">15293</a>
+<a href="#15294" id="15294">15294</a>
+<a href="#15295" id="15295">15295</a>
+<a href="#15296" id="15296">15296</a>
+<a href="#15297" id="15297">15297</a>
+<a href="#15298" id="15298">15298</a>
+<a href="#15299" id="15299">15299</a>
+<a href="#15300" id="15300">15300</a>
+<a href="#15301" id="15301">15301</a>
+<a href="#15302" id="15302">15302</a>
+<a href="#15303" id="15303">15303</a>
+<a href="#15304" id="15304">15304</a>
+<a href="#15305" id="15305">15305</a>
+<a href="#15306" id="15306">15306</a>
+<a href="#15307" id="15307">15307</a>
+<a href="#15308" id="15308">15308</a>
+<a href="#15309" id="15309">15309</a>
+<a href="#15310" id="15310">15310</a>
+<a href="#15311" id="15311">15311</a>
+<a href="#15312" id="15312">15312</a>
+<a href="#15313" id="15313">15313</a>
+<a href="#15314" id="15314">15314</a>
+<a href="#15315" id="15315">15315</a>
+<a href="#15316" id="15316">15316</a>
+<a href="#15317" id="15317">15317</a>
+<a href="#15318" id="15318">15318</a>
+<a href="#15319" id="15319">15319</a>
+<a href="#15320" id="15320">15320</a>
+<a href="#15321" id="15321">15321</a>
+<a href="#15322" id="15322">15322</a>
+<a href="#15323" id="15323">15323</a>
+<a href="#15324" id="15324">15324</a>
+<a href="#15325" id="15325">15325</a>
+<a href="#15326" id="15326">15326</a>
+<a href="#15327" id="15327">15327</a>
+<a href="#15328" id="15328">15328</a>
+<a href="#15329" id="15329">15329</a>
+<a href="#15330" id="15330">15330</a>
+<a href="#15331" id="15331">15331</a>
+<a href="#15332" id="15332">15332</a>
+<a href="#15333" id="15333">15333</a>
+<a href="#15334" id="15334">15334</a>
+<a href="#15335" id="15335">15335</a>
+<a href="#15336" id="15336">15336</a>
+<a href="#15337" id="15337">15337</a>
+<a href="#15338" id="15338">15338</a>
+<a href="#15339" id="15339">15339</a>
+<a href="#15340" id="15340">15340</a>
+<a href="#15341" id="15341">15341</a>
+<a href="#15342" id="15342">15342</a>
+<a href="#15343" id="15343">15343</a>
+<a href="#15344" id="15344">15344</a>
+<a href="#15345" id="15345">15345</a>
+<a href="#15346" id="15346">15346</a>
+<a href="#15347" id="15347">15347</a>
+<a href="#15348" id="15348">15348</a>
+<a href="#15349" id="15349">15349</a>
+<a href="#15350" id="15350">15350</a>
+<a href="#15351" id="15351">15351</a>
+<a href="#15352" id="15352">15352</a>
+<a href="#15353" id="15353">15353</a>
+<a href="#15354" id="15354">15354</a>
+<a href="#15355" id="15355">15355</a>
+<a href="#15356" id="15356">15356</a>
+<a href="#15357" id="15357">15357</a>
+<a href="#15358" id="15358">15358</a>
+<a href="#15359" id="15359">15359</a>
+<a href="#15360" id="15360">15360</a>
+<a href="#15361" id="15361">15361</a>
+<a href="#15362" id="15362">15362</a>
+<a href="#15363" id="15363">15363</a>
+<a href="#15364" id="15364">15364</a>
+<a href="#15365" id="15365">15365</a>
+<a href="#15366" id="15366">15366</a>
+<a href="#15367" id="15367">15367</a>
+<a href="#15368" id="15368">15368</a>
+<a href="#15369" id="15369">15369</a>
+<a href="#15370" id="15370">15370</a>
+<a href="#15371" id="15371">15371</a>
+<a href="#15372" id="15372">15372</a>
+<a href="#15373" id="15373">15373</a>
+<a href="#15374" id="15374">15374</a>
+<a href="#15375" id="15375">15375</a>
+<a href="#15376" id="15376">15376</a>
+<a href="#15377" id="15377">15377</a>
+<a href="#15378" id="15378">15378</a>
+<a href="#15379" id="15379">15379</a>
+<a href="#15380" id="15380">15380</a>
+<a href="#15381" id="15381">15381</a>
+<a href="#15382" id="15382">15382</a>
+<a href="#15383" id="15383">15383</a>
+<a href="#15384" id="15384">15384</a>
+<a href="#15385" id="15385">15385</a>
+<a href="#15386" id="15386">15386</a>
+<a href="#15387" id="15387">15387</a>
+<a href="#15388" id="15388">15388</a>
+<a href="#15389" id="15389">15389</a>
+<a href="#15390" id="15390">15390</a>
+<a href="#15391" id="15391">15391</a>
+<a href="#15392" id="15392">15392</a>
+<a href="#15393" id="15393">15393</a>
+<a href="#15394" id="15394">15394</a>
+<a href="#15395" id="15395">15395</a>
+<a href="#15396" id="15396">15396</a>
+<a href="#15397" id="15397">15397</a>
+<a href="#15398" id="15398">15398</a>
+<a href="#15399" id="15399">15399</a>
+<a href="#15400" id="15400">15400</a>
+<a href="#15401" id="15401">15401</a>
+<a href="#15402" id="15402">15402</a>
+<a href="#15403" id="15403">15403</a>
+<a href="#15404" id="15404">15404</a>
+<a href="#15405" id="15405">15405</a>
+<a href="#15406" id="15406">15406</a>
+<a href="#15407" id="15407">15407</a>
+<a href="#15408" id="15408">15408</a>
+<a href="#15409" id="15409">15409</a>
+<a href="#15410" id="15410">15410</a>
+<a href="#15411" id="15411">15411</a>
+<a href="#15412" id="15412">15412</a>
+<a href="#15413" id="15413">15413</a>
+<a href="#15414" id="15414">15414</a>
+<a href="#15415" id="15415">15415</a>
+<a href="#15416" id="15416">15416</a>
+<a href="#15417" id="15417">15417</a>
+<a href="#15418" id="15418">15418</a>
+<a href="#15419" id="15419">15419</a>
+<a href="#15420" id="15420">15420</a>
+<a href="#15421" id="15421">15421</a>
+<a href="#15422" id="15422">15422</a>
+<a href="#15423" id="15423">15423</a>
+<a href="#15424" id="15424">15424</a>
+<a href="#15425" id="15425">15425</a>
+<a href="#15426" id="15426">15426</a>
+<a href="#15427" id="15427">15427</a>
+<a href="#15428" id="15428">15428</a>
+<a href="#15429" id="15429">15429</a>
+<a href="#15430" id="15430">15430</a>
+<a href="#15431" id="15431">15431</a>
+<a href="#15432" id="15432">15432</a>
+<a href="#15433" id="15433">15433</a>
+<a href="#15434" id="15434">15434</a>
+<a href="#15435" id="15435">15435</a>
+<a href="#15436" id="15436">15436</a>
+<a href="#15437" id="15437">15437</a>
+<a href="#15438" id="15438">15438</a>
+<a href="#15439" id="15439">15439</a>
+<a href="#15440" id="15440">15440</a>
+<a href="#15441" id="15441">15441</a>
+<a href="#15442" id="15442">15442</a>
+<a href="#15443" id="15443">15443</a>
+<a href="#15444" id="15444">15444</a>
+<a href="#15445" id="15445">15445</a>
+<a href="#15446" id="15446">15446</a>
+<a href="#15447" id="15447">15447</a>
+<a href="#15448" id="15448">15448</a>
+<a href="#15449" id="15449">15449</a>
+<a href="#15450" id="15450">15450</a>
+<a href="#15451" id="15451">15451</a>
+<a href="#15452" id="15452">15452</a>
+<a href="#15453" id="15453">15453</a>
+<a href="#15454" id="15454">15454</a>
+<a href="#15455" id="15455">15455</a>
+<a href="#15456" id="15456">15456</a>
+<a href="#15457" id="15457">15457</a>
+<a href="#15458" id="15458">15458</a>
+<a href="#15459" id="15459">15459</a>
+<a href="#15460" id="15460">15460</a>
+<a href="#15461" id="15461">15461</a>
+<a href="#15462" id="15462">15462</a>
+<a href="#15463" id="15463">15463</a>
+<a href="#15464" id="15464">15464</a>
+<a href="#15465" id="15465">15465</a>
+<a href="#15466" id="15466">15466</a>
+<a href="#15467" id="15467">15467</a>
+<a href="#15468" id="15468">15468</a>
+<a href="#15469" id="15469">15469</a>
+<a href="#15470" id="15470">15470</a>
+<a href="#15471" id="15471">15471</a>
+<a href="#15472" id="15472">15472</a>
+<a href="#15473" id="15473">15473</a>
+<a href="#15474" id="15474">15474</a>
+<a href="#15475" id="15475">15475</a>
+<a href="#15476" id="15476">15476</a>
+<a href="#15477" id="15477">15477</a>
+<a href="#15478" id="15478">15478</a>
+<a href="#15479" id="15479">15479</a>
+<a href="#15480" id="15480">15480</a>
+<a href="#15481" id="15481">15481</a>
+<a href="#15482" id="15482">15482</a>
+<a href="#15483" id="15483">15483</a>
+<a href="#15484" id="15484">15484</a>
+<a href="#15485" id="15485">15485</a>
+<a href="#15486" id="15486">15486</a>
+<a href="#15487" id="15487">15487</a>
+<a href="#15488" id="15488">15488</a>
+<a href="#15489" id="15489">15489</a>
+<a href="#15490" id="15490">15490</a>
+<a href="#15491" id="15491">15491</a>
+<a href="#15492" id="15492">15492</a>
+<a href="#15493" id="15493">15493</a>
+<a href="#15494" id="15494">15494</a>
+<a href="#15495" id="15495">15495</a>
+<a href="#15496" id="15496">15496</a>
+<a href="#15497" id="15497">15497</a>
+<a href="#15498" id="15498">15498</a>
+<a href="#15499" id="15499">15499</a>
+<a href="#15500" id="15500">15500</a>
+<a href="#15501" id="15501">15501</a>
+<a href="#15502" id="15502">15502</a>
+<a href="#15503" id="15503">15503</a>
+<a href="#15504" id="15504">15504</a>
+<a href="#15505" id="15505">15505</a>
+<a href="#15506" id="15506">15506</a>
+<a href="#15507" id="15507">15507</a>
+<a href="#15508" id="15508">15508</a>
+<a href="#15509" id="15509">15509</a>
+<a href="#15510" id="15510">15510</a>
+<a href="#15511" id="15511">15511</a>
+<a href="#15512" id="15512">15512</a>
+<a href="#15513" id="15513">15513</a>
+<a href="#15514" id="15514">15514</a>
+<a href="#15515" id="15515">15515</a>
+<a href="#15516" id="15516">15516</a>
+<a href="#15517" id="15517">15517</a>
+<a href="#15518" id="15518">15518</a>
+<a href="#15519" id="15519">15519</a>
+<a href="#15520" id="15520">15520</a>
+<a href="#15521" id="15521">15521</a>
+<a href="#15522" id="15522">15522</a>
+<a href="#15523" id="15523">15523</a>
+<a href="#15524" id="15524">15524</a>
+<a href="#15525" id="15525">15525</a>
+<a href="#15526" id="15526">15526</a>
+<a href="#15527" id="15527">15527</a>
+<a href="#15528" id="15528">15528</a>
+<a href="#15529" id="15529">15529</a>
+<a href="#15530" id="15530">15530</a>
+<a href="#15531" id="15531">15531</a>
+<a href="#15532" id="15532">15532</a>
+<a href="#15533" id="15533">15533</a>
+<a href="#15534" id="15534">15534</a>
+<a href="#15535" id="15535">15535</a>
+<a href="#15536" id="15536">15536</a>
+<a href="#15537" id="15537">15537</a>
+<a href="#15538" id="15538">15538</a>
+<a href="#15539" id="15539">15539</a>
+<a href="#15540" id="15540">15540</a>
+<a href="#15541" id="15541">15541</a>
+<a href="#15542" id="15542">15542</a>
+<a href="#15543" id="15543">15543</a>
+<a href="#15544" id="15544">15544</a>
+<a href="#15545" id="15545">15545</a>
+<a href="#15546" id="15546">15546</a>
+<a href="#15547" id="15547">15547</a>
+<a href="#15548" id="15548">15548</a>
+<a href="#15549" id="15549">15549</a>
+<a href="#15550" id="15550">15550</a>
+<a href="#15551" id="15551">15551</a>
+<a href="#15552" id="15552">15552</a>
+<a href="#15553" id="15553">15553</a>
+<a href="#15554" id="15554">15554</a>
+<a href="#15555" id="15555">15555</a>
+<a href="#15556" id="15556">15556</a>
+<a href="#15557" id="15557">15557</a>
+<a href="#15558" id="15558">15558</a>
+<a href="#15559" id="15559">15559</a>
+<a href="#15560" id="15560">15560</a>
+<a href="#15561" id="15561">15561</a>
+<a href="#15562" id="15562">15562</a>
+<a href="#15563" id="15563">15563</a>
+<a href="#15564" id="15564">15564</a>
+<a href="#15565" id="15565">15565</a>
+<a href="#15566" id="15566">15566</a>
+<a href="#15567" id="15567">15567</a>
+<a href="#15568" id="15568">15568</a>
+<a href="#15569" id="15569">15569</a>
+<a href="#15570" id="15570">15570</a>
+<a href="#15571" id="15571">15571</a>
+<a href="#15572" id="15572">15572</a>
+<a href="#15573" id="15573">15573</a>
+<a href="#15574" id="15574">15574</a>
+<a href="#15575" id="15575">15575</a>
+<a href="#15576" id="15576">15576</a>
+<a href="#15577" id="15577">15577</a>
+<a href="#15578" id="15578">15578</a>
+<a href="#15579" id="15579">15579</a>
+<a href="#15580" id="15580">15580</a>
+<a href="#15581" id="15581">15581</a>
+<a href="#15582" id="15582">15582</a>
+<a href="#15583" id="15583">15583</a>
+<a href="#15584" id="15584">15584</a>
+<a href="#15585" id="15585">15585</a>
+<a href="#15586" id="15586">15586</a>
+<a href="#15587" id="15587">15587</a>
+<a href="#15588" id="15588">15588</a>
+<a href="#15589" id="15589">15589</a>
+<a href="#15590" id="15590">15590</a>
+<a href="#15591" id="15591">15591</a>
+<a href="#15592" id="15592">15592</a>
+<a href="#15593" id="15593">15593</a>
+<a href="#15594" id="15594">15594</a>
+<a href="#15595" id="15595">15595</a>
+<a href="#15596" id="15596">15596</a>
+<a href="#15597" id="15597">15597</a>
+<a href="#15598" id="15598">15598</a>
+<a href="#15599" id="15599">15599</a>
+<a href="#15600" id="15600">15600</a>
+<a href="#15601" id="15601">15601</a>
+<a href="#15602" id="15602">15602</a>
+<a href="#15603" id="15603">15603</a>
+<a href="#15604" id="15604">15604</a>
+<a href="#15605" id="15605">15605</a>
+<a href="#15606" id="15606">15606</a>
+<a href="#15607" id="15607">15607</a>
+<a href="#15608" id="15608">15608</a>
+<a href="#15609" id="15609">15609</a>
+<a href="#15610" id="15610">15610</a>
+<a href="#15611" id="15611">15611</a>
+<a href="#15612" id="15612">15612</a>
+<a href="#15613" id="15613">15613</a>
+<a href="#15614" id="15614">15614</a>
+<a href="#15615" id="15615">15615</a>
+<a href="#15616" id="15616">15616</a>
+<a href="#15617" id="15617">15617</a>
+<a href="#15618" id="15618">15618</a>
+<a href="#15619" id="15619">15619</a>
+<a href="#15620" id="15620">15620</a>
+<a href="#15621" id="15621">15621</a>
+<a href="#15622" id="15622">15622</a>
+<a href="#15623" id="15623">15623</a>
+<a href="#15624" id="15624">15624</a>
+<a href="#15625" id="15625">15625</a>
+<a href="#15626" id="15626">15626</a>
+<a href="#15627" id="15627">15627</a>
+<a href="#15628" id="15628">15628</a>
+<a href="#15629" id="15629">15629</a>
+<a href="#15630" id="15630">15630</a>
+<a href="#15631" id="15631">15631</a>
+<a href="#15632" id="15632">15632</a>
+<a href="#15633" id="15633">15633</a>
+<a href="#15634" id="15634">15634</a>
+<a href="#15635" id="15635">15635</a>
+<a href="#15636" id="15636">15636</a>
+<a href="#15637" id="15637">15637</a>
+<a href="#15638" id="15638">15638</a>
+<a href="#15639" id="15639">15639</a>
+<a href="#15640" id="15640">15640</a>
+<a href="#15641" id="15641">15641</a>
+<a href="#15642" id="15642">15642</a>
+<a href="#15643" id="15643">15643</a>
+<a href="#15644" id="15644">15644</a>
+<a href="#15645" id="15645">15645</a>
+<a href="#15646" id="15646">15646</a>
+<a href="#15647" id="15647">15647</a>
+<a href="#15648" id="15648">15648</a>
+<a href="#15649" id="15649">15649</a>
+<a href="#15650" id="15650">15650</a>
+<a href="#15651" id="15651">15651</a>
+<a href="#15652" id="15652">15652</a>
+<a href="#15653" id="15653">15653</a>
+<a href="#15654" id="15654">15654</a>
+<a href="#15655" id="15655">15655</a>
+<a href="#15656" id="15656">15656</a>
+<a href="#15657" id="15657">15657</a>
+<a href="#15658" id="15658">15658</a>
+<a href="#15659" id="15659">15659</a>
+<a href="#15660" id="15660">15660</a>
+<a href="#15661" id="15661">15661</a>
+<a href="#15662" id="15662">15662</a>
+<a href="#15663" id="15663">15663</a>
+<a href="#15664" id="15664">15664</a>
+<a href="#15665" id="15665">15665</a>
+<a href="#15666" id="15666">15666</a>
+<a href="#15667" id="15667">15667</a>
+<a href="#15668" id="15668">15668</a>
+<a href="#15669" id="15669">15669</a>
+<a href="#15670" id="15670">15670</a>
+<a href="#15671" id="15671">15671</a>
+<a href="#15672" id="15672">15672</a>
+<a href="#15673" id="15673">15673</a>
+<a href="#15674" id="15674">15674</a>
+<a href="#15675" id="15675">15675</a>
+<a href="#15676" id="15676">15676</a>
+<a href="#15677" id="15677">15677</a>
+<a href="#15678" id="15678">15678</a>
+<a href="#15679" id="15679">15679</a>
+<a href="#15680" id="15680">15680</a>
+<a href="#15681" id="15681">15681</a>
+<a href="#15682" id="15682">15682</a>
+<a href="#15683" id="15683">15683</a>
+<a href="#15684" id="15684">15684</a>
+<a href="#15685" id="15685">15685</a>
+<a href="#15686" id="15686">15686</a>
+<a href="#15687" id="15687">15687</a>
+<a href="#15688" id="15688">15688</a>
+<a href="#15689" id="15689">15689</a>
+<a href="#15690" id="15690">15690</a>
+<a href="#15691" id="15691">15691</a>
+<a href="#15692" id="15692">15692</a>
+<a href="#15693" id="15693">15693</a>
+<a href="#15694" id="15694">15694</a>
+<a href="#15695" id="15695">15695</a>
+<a href="#15696" id="15696">15696</a>
+<a href="#15697" id="15697">15697</a>
+<a href="#15698" id="15698">15698</a>
+<a href="#15699" id="15699">15699</a>
+<a href="#15700" id="15700">15700</a>
+<a href="#15701" id="15701">15701</a>
+<a href="#15702" id="15702">15702</a>
+<a href="#15703" id="15703">15703</a>
+<a href="#15704" id="15704">15704</a>
+<a href="#15705" id="15705">15705</a>
+<a href="#15706" id="15706">15706</a>
+<a href="#15707" id="15707">15707</a>
+<a href="#15708" id="15708">15708</a>
+<a href="#15709" id="15709">15709</a>
+<a href="#15710" id="15710">15710</a>
+<a href="#15711" id="15711">15711</a>
+<a href="#15712" id="15712">15712</a>
+<a href="#15713" id="15713">15713</a>
+<a href="#15714" id="15714">15714</a>
+<a href="#15715" id="15715">15715</a>
+<a href="#15716" id="15716">15716</a>
+<a href="#15717" id="15717">15717</a>
+<a href="#15718" id="15718">15718</a>
+<a href="#15719" id="15719">15719</a>
+<a href="#15720" id="15720">15720</a>
+<a href="#15721" id="15721">15721</a>
+<a href="#15722" id="15722">15722</a>
+<a href="#15723" id="15723">15723</a>
+<a href="#15724" id="15724">15724</a>
+<a href="#15725" id="15725">15725</a>
+<a href="#15726" id="15726">15726</a>
+<a href="#15727" id="15727">15727</a>
+<a href="#15728" id="15728">15728</a>
+<a href="#15729" id="15729">15729</a>
+<a href="#15730" id="15730">15730</a>
+<a href="#15731" id="15731">15731</a>
+<a href="#15732" id="15732">15732</a>
+<a href="#15733" id="15733">15733</a>
+<a href="#15734" id="15734">15734</a>
+<a href="#15735" id="15735">15735</a>
+<a href="#15736" id="15736">15736</a>
+<a href="#15737" id="15737">15737</a>
+<a href="#15738" id="15738">15738</a>
+<a href="#15739" id="15739">15739</a>
+<a href="#15740" id="15740">15740</a>
+<a href="#15741" id="15741">15741</a>
+<a href="#15742" id="15742">15742</a>
+<a href="#15743" id="15743">15743</a>
+<a href="#15744" id="15744">15744</a>
+<a href="#15745" id="15745">15745</a>
+<a href="#15746" id="15746">15746</a>
+<a href="#15747" id="15747">15747</a>
+<a href="#15748" id="15748">15748</a>
+<a href="#15749" id="15749">15749</a>
+<a href="#15750" id="15750">15750</a>
+<a href="#15751" id="15751">15751</a>
+<a href="#15752" id="15752">15752</a>
+<a href="#15753" id="15753">15753</a>
+<a href="#15754" id="15754">15754</a>
+<a href="#15755" id="15755">15755</a>
+<a href="#15756" id="15756">15756</a>
+<a href="#15757" id="15757">15757</a>
+<a href="#15758" id="15758">15758</a>
+<a href="#15759" id="15759">15759</a>
+<a href="#15760" id="15760">15760</a>
+<a href="#15761" id="15761">15761</a>
+<a href="#15762" id="15762">15762</a>
+<a href="#15763" id="15763">15763</a>
+<a href="#15764" id="15764">15764</a>
+<a href="#15765" id="15765">15765</a>
+<a href="#15766" id="15766">15766</a>
+<a href="#15767" id="15767">15767</a>
+<a href="#15768" id="15768">15768</a>
+<a href="#15769" id="15769">15769</a>
+<a href="#15770" id="15770">15770</a>
+<a href="#15771" id="15771">15771</a>
+<a href="#15772" id="15772">15772</a>
+<a href="#15773" id="15773">15773</a>
+<a href="#15774" id="15774">15774</a>
+<a href="#15775" id="15775">15775</a>
+<a href="#15776" id="15776">15776</a>
+<a href="#15777" id="15777">15777</a>
+<a href="#15778" id="15778">15778</a>
+<a href="#15779" id="15779">15779</a>
+<a href="#15780" id="15780">15780</a>
+<a href="#15781" id="15781">15781</a>
+<a href="#15782" id="15782">15782</a>
+<a href="#15783" id="15783">15783</a>
+<a href="#15784" id="15784">15784</a>
+<a href="#15785" id="15785">15785</a>
+<a href="#15786" id="15786">15786</a>
+<a href="#15787" id="15787">15787</a>
+<a href="#15788" id="15788">15788</a>
+<a href="#15789" id="15789">15789</a>
+<a href="#15790" id="15790">15790</a>
+<a href="#15791" id="15791">15791</a>
+<a href="#15792" id="15792">15792</a>
+<a href="#15793" id="15793">15793</a>
+<a href="#15794" id="15794">15794</a>
+<a href="#15795" id="15795">15795</a>
+<a href="#15796" id="15796">15796</a>
+<a href="#15797" id="15797">15797</a>
+<a href="#15798" id="15798">15798</a>
+<a href="#15799" id="15799">15799</a>
+<a href="#15800" id="15800">15800</a>
+<a href="#15801" id="15801">15801</a>
+<a href="#15802" id="15802">15802</a>
+<a href="#15803" id="15803">15803</a>
+<a href="#15804" id="15804">15804</a>
+<a href="#15805" id="15805">15805</a>
+<a href="#15806" id="15806">15806</a>
+<a href="#15807" id="15807">15807</a>
+<a href="#15808" id="15808">15808</a>
+<a href="#15809" id="15809">15809</a>
+<a href="#15810" id="15810">15810</a>
+<a href="#15811" id="15811">15811</a>
+<a href="#15812" id="15812">15812</a>
+<a href="#15813" id="15813">15813</a>
+<a href="#15814" id="15814">15814</a>
+<a href="#15815" id="15815">15815</a>
+<a href="#15816" id="15816">15816</a>
+<a href="#15817" id="15817">15817</a>
+<a href="#15818" id="15818">15818</a>
+<a href="#15819" id="15819">15819</a>
+<a href="#15820" id="15820">15820</a>
+<a href="#15821" id="15821">15821</a>
+<a href="#15822" id="15822">15822</a>
+<a href="#15823" id="15823">15823</a>
+<a href="#15824" id="15824">15824</a>
+<a href="#15825" id="15825">15825</a>
+<a href="#15826" id="15826">15826</a>
+<a href="#15827" id="15827">15827</a>
+<a href="#15828" id="15828">15828</a>
+<a href="#15829" id="15829">15829</a>
+<a href="#15830" id="15830">15830</a>
+<a href="#15831" id="15831">15831</a>
+<a href="#15832" id="15832">15832</a>
+<a href="#15833" id="15833">15833</a>
+<a href="#15834" id="15834">15834</a>
+<a href="#15835" id="15835">15835</a>
+<a href="#15836" id="15836">15836</a>
+<a href="#15837" id="15837">15837</a>
+<a href="#15838" id="15838">15838</a>
+<a href="#15839" id="15839">15839</a>
+<a href="#15840" id="15840">15840</a>
+<a href="#15841" id="15841">15841</a>
+<a href="#15842" id="15842">15842</a>
+<a href="#15843" id="15843">15843</a>
+<a href="#15844" id="15844">15844</a>
+<a href="#15845" id="15845">15845</a>
+<a href="#15846" id="15846">15846</a>
+<a href="#15847" id="15847">15847</a>
+<a href="#15848" id="15848">15848</a>
+<a href="#15849" id="15849">15849</a>
+<a href="#15850" id="15850">15850</a>
+<a href="#15851" id="15851">15851</a>
+<a href="#15852" id="15852">15852</a>
+<a href="#15853" id="15853">15853</a>
+<a href="#15854" id="15854">15854</a>
+<a href="#15855" id="15855">15855</a>
+<a href="#15856" id="15856">15856</a>
+<a href="#15857" id="15857">15857</a>
+<a href="#15858" id="15858">15858</a>
+<a href="#15859" id="15859">15859</a>
+<a href="#15860" id="15860">15860</a>
+<a href="#15861" id="15861">15861</a>
+<a href="#15862" id="15862">15862</a>
+<a href="#15863" id="15863">15863</a>
+<a href="#15864" id="15864">15864</a>
+<a href="#15865" id="15865">15865</a>
+<a href="#15866" id="15866">15866</a>
+<a href="#15867" id="15867">15867</a>
+<a href="#15868" id="15868">15868</a>
+<a href="#15869" id="15869">15869</a>
+<a href="#15870" id="15870">15870</a>
+<a href="#15871" id="15871">15871</a>
+<a href="#15872" id="15872">15872</a>
+<a href="#15873" id="15873">15873</a>
+<a href="#15874" id="15874">15874</a>
+<a href="#15875" id="15875">15875</a>
+<a href="#15876" id="15876">15876</a>
+<a href="#15877" id="15877">15877</a>
+<a href="#15878" id="15878">15878</a>
+<a href="#15879" id="15879">15879</a>
+<a href="#15880" id="15880">15880</a>
+<a href="#15881" id="15881">15881</a>
+<a href="#15882" id="15882">15882</a>
+<a href="#15883" id="15883">15883</a>
+<a href="#15884" id="15884">15884</a>
+<a href="#15885" id="15885">15885</a>
+<a href="#15886" id="15886">15886</a>
+<a href="#15887" id="15887">15887</a>
+<a href="#15888" id="15888">15888</a>
+<a href="#15889" id="15889">15889</a>
+<a href="#15890" id="15890">15890</a>
+<a href="#15891" id="15891">15891</a>
+<a href="#15892" id="15892">15892</a>
+<a href="#15893" id="15893">15893</a>
+<a href="#15894" id="15894">15894</a>
+<a href="#15895" id="15895">15895</a>
+<a href="#15896" id="15896">15896</a>
+<a href="#15897" id="15897">15897</a>
+<a href="#15898" id="15898">15898</a>
+<a href="#15899" id="15899">15899</a>
+<a href="#15900" id="15900">15900</a>
+<a href="#15901" id="15901">15901</a>
+<a href="#15902" id="15902">15902</a>
+<a href="#15903" id="15903">15903</a>
+<a href="#15904" id="15904">15904</a>
+<a href="#15905" id="15905">15905</a>
+<a href="#15906" id="15906">15906</a>
+<a href="#15907" id="15907">15907</a>
+<a href="#15908" id="15908">15908</a>
+<a href="#15909" id="15909">15909</a>
+<a href="#15910" id="15910">15910</a>
+<a href="#15911" id="15911">15911</a>
+<a href="#15912" id="15912">15912</a>
+<a href="#15913" id="15913">15913</a>
+<a href="#15914" id="15914">15914</a>
+<a href="#15915" id="15915">15915</a>
+<a href="#15916" id="15916">15916</a>
+<a href="#15917" id="15917">15917</a>
+<a href="#15918" id="15918">15918</a>
+<a href="#15919" id="15919">15919</a>
+<a href="#15920" id="15920">15920</a>
+<a href="#15921" id="15921">15921</a>
+<a href="#15922" id="15922">15922</a>
+<a href="#15923" id="15923">15923</a>
+<a href="#15924" id="15924">15924</a>
+<a href="#15925" id="15925">15925</a>
+<a href="#15926" id="15926">15926</a>
+<a href="#15927" id="15927">15927</a>
+<a href="#15928" id="15928">15928</a>
+<a href="#15929" id="15929">15929</a>
+<a href="#15930" id="15930">15930</a>
+<a href="#15931" id="15931">15931</a>
+<a href="#15932" id="15932">15932</a>
+<a href="#15933" id="15933">15933</a>
+<a href="#15934" id="15934">15934</a>
+<a href="#15935" id="15935">15935</a>
+<a href="#15936" id="15936">15936</a>
+<a href="#15937" id="15937">15937</a>
+<a href="#15938" id="15938">15938</a>
+<a href="#15939" id="15939">15939</a>
+<a href="#15940" id="15940">15940</a>
+<a href="#15941" id="15941">15941</a>
+<a href="#15942" id="15942">15942</a>
+<a href="#15943" id="15943">15943</a>
+<a href="#15944" id="15944">15944</a>
+<a href="#15945" id="15945">15945</a>
+<a href="#15946" id="15946">15946</a>
+<a href="#15947" id="15947">15947</a>
+<a href="#15948" id="15948">15948</a>
+<a href="#15949" id="15949">15949</a>
+<a href="#15950" id="15950">15950</a>
+<a href="#15951" id="15951">15951</a>
+<a href="#15952" id="15952">15952</a>
+<a href="#15953" id="15953">15953</a>
+<a href="#15954" id="15954">15954</a>
+<a href="#15955" id="15955">15955</a>
+<a href="#15956" id="15956">15956</a>
+<a href="#15957" id="15957">15957</a>
+<a href="#15958" id="15958">15958</a>
+<a href="#15959" id="15959">15959</a>
+<a href="#15960" id="15960">15960</a>
+<a href="#15961" id="15961">15961</a>
+<a href="#15962" id="15962">15962</a>
+<a href="#15963" id="15963">15963</a>
+<a href="#15964" id="15964">15964</a>
+<a href="#15965" id="15965">15965</a>
+<a href="#15966" id="15966">15966</a>
+<a href="#15967" id="15967">15967</a>
+<a href="#15968" id="15968">15968</a>
+<a href="#15969" id="15969">15969</a>
+<a href="#15970" id="15970">15970</a>
+<a href="#15971" id="15971">15971</a>
+<a href="#15972" id="15972">15972</a>
+<a href="#15973" id="15973">15973</a>
+<a href="#15974" id="15974">15974</a>
+<a href="#15975" id="15975">15975</a>
+<a href="#15976" id="15976">15976</a>
+<a href="#15977" id="15977">15977</a>
+<a href="#15978" id="15978">15978</a>
+<a href="#15979" id="15979">15979</a>
+<a href="#15980" id="15980">15980</a>
+<a href="#15981" id="15981">15981</a>
+<a href="#15982" id="15982">15982</a>
+<a href="#15983" id="15983">15983</a>
+<a href="#15984" id="15984">15984</a>
+<a href="#15985" id="15985">15985</a>
+<a href="#15986" id="15986">15986</a>
+<a href="#15987" id="15987">15987</a>
+<a href="#15988" id="15988">15988</a>
+<a href="#15989" id="15989">15989</a>
+<a href="#15990" id="15990">15990</a>
+<a href="#15991" id="15991">15991</a>
+<a href="#15992" id="15992">15992</a>
+<a href="#15993" id="15993">15993</a>
+<a href="#15994" id="15994">15994</a>
+<a href="#15995" id="15995">15995</a>
+<a href="#15996" id="15996">15996</a>
+<a href="#15997" id="15997">15997</a>
+<a href="#15998" id="15998">15998</a>
+<a href="#15999" id="15999">15999</a>
+<a href="#16000" id="16000">16000</a>
+<a href="#16001" id="16001">16001</a>
+<a href="#16002" id="16002">16002</a>
+<a href="#16003" id="16003">16003</a>
+<a href="#16004" id="16004">16004</a>
+<a href="#16005" id="16005">16005</a>
+<a href="#16006" id="16006">16006</a>
+<a href="#16007" id="16007">16007</a>
+<a href="#16008" id="16008">16008</a>
+<a href="#16009" id="16009">16009</a>
+<a href="#16010" id="16010">16010</a>
+<a href="#16011" id="16011">16011</a>
+<a href="#16012" id="16012">16012</a>
+<a href="#16013" id="16013">16013</a>
+<a href="#16014" id="16014">16014</a>
+<a href="#16015" id="16015">16015</a>
+<a href="#16016" id="16016">16016</a>
+<a href="#16017" id="16017">16017</a>
+<a href="#16018" id="16018">16018</a>
+<a href="#16019" id="16019">16019</a>
+<a href="#16020" id="16020">16020</a>
+<a href="#16021" id="16021">16021</a>
+<a href="#16022" id="16022">16022</a>
+<a href="#16023" id="16023">16023</a>
+<a href="#16024" id="16024">16024</a>
+<a href="#16025" id="16025">16025</a>
+<a href="#16026" id="16026">16026</a>
+<a href="#16027" id="16027">16027</a>
+<a href="#16028" id="16028">16028</a>
+<a href="#16029" id="16029">16029</a>
+<a href="#16030" id="16030">16030</a>
+<a href="#16031" id="16031">16031</a>
+<a href="#16032" id="16032">16032</a>
+<a href="#16033" id="16033">16033</a>
+<a href="#16034" id="16034">16034</a>
+<a href="#16035" id="16035">16035</a>
+<a href="#16036" id="16036">16036</a>
+<a href="#16037" id="16037">16037</a>
+<a href="#16038" id="16038">16038</a>
+<a href="#16039" id="16039">16039</a>
+<a href="#16040" id="16040">16040</a>
+<a href="#16041" id="16041">16041</a>
+<a href="#16042" id="16042">16042</a>
+<a href="#16043" id="16043">16043</a>
+<a href="#16044" id="16044">16044</a>
+<a href="#16045" id="16045">16045</a>
+<a href="#16046" id="16046">16046</a>
+<a href="#16047" id="16047">16047</a>
+<a href="#16048" id="16048">16048</a>
+<a href="#16049" id="16049">16049</a>
+<a href="#16050" id="16050">16050</a>
+<a href="#16051" id="16051">16051</a>
+<a href="#16052" id="16052">16052</a>
+<a href="#16053" id="16053">16053</a>
+<a href="#16054" id="16054">16054</a>
+<a href="#16055" id="16055">16055</a>
+<a href="#16056" id="16056">16056</a>
+<a href="#16057" id="16057">16057</a>
+<a href="#16058" id="16058">16058</a>
+<a href="#16059" id="16059">16059</a>
+<a href="#16060" id="16060">16060</a>
+<a href="#16061" id="16061">16061</a>
+<a href="#16062" id="16062">16062</a>
+<a href="#16063" id="16063">16063</a>
+<a href="#16064" id="16064">16064</a>
+<a href="#16065" id="16065">16065</a>
+<a href="#16066" id="16066">16066</a>
+<a href="#16067" id="16067">16067</a>
+<a href="#16068" id="16068">16068</a>
+<a href="#16069" id="16069">16069</a>
+<a href="#16070" id="16070">16070</a>
+<a href="#16071" id="16071">16071</a>
+<a href="#16072" id="16072">16072</a>
+<a href="#16073" id="16073">16073</a>
+<a href="#16074" id="16074">16074</a>
+<a href="#16075" id="16075">16075</a>
+<a href="#16076" id="16076">16076</a>
+<a href="#16077" id="16077">16077</a>
+<a href="#16078" id="16078">16078</a>
+<a href="#16079" id="16079">16079</a>
+<a href="#16080" id="16080">16080</a>
+<a href="#16081" id="16081">16081</a>
+<a href="#16082" id="16082">16082</a>
+<a href="#16083" id="16083">16083</a>
+<a href="#16084" id="16084">16084</a>
+<a href="#16085" id="16085">16085</a>
+<a href="#16086" id="16086">16086</a>
+<a href="#16087" id="16087">16087</a>
+<a href="#16088" id="16088">16088</a>
+<a href="#16089" id="16089">16089</a>
+<a href="#16090" id="16090">16090</a>
+<a href="#16091" id="16091">16091</a>
+<a href="#16092" id="16092">16092</a>
+<a href="#16093" id="16093">16093</a>
+<a href="#16094" id="16094">16094</a>
+<a href="#16095" id="16095">16095</a>
+<a href="#16096" id="16096">16096</a>
+<a href="#16097" id="16097">16097</a>
+<a href="#16098" id="16098">16098</a>
+<a href="#16099" id="16099">16099</a>
+<a href="#16100" id="16100">16100</a>
+<a href="#16101" id="16101">16101</a>
+<a href="#16102" id="16102">16102</a>
+<a href="#16103" id="16103">16103</a>
+<a href="#16104" id="16104">16104</a>
+<a href="#16105" id="16105">16105</a>
+<a href="#16106" id="16106">16106</a>
+<a href="#16107" id="16107">16107</a>
+<a href="#16108" id="16108">16108</a>
+<a href="#16109" id="16109">16109</a>
+<a href="#16110" id="16110">16110</a>
+<a href="#16111" id="16111">16111</a>
+<a href="#16112" id="16112">16112</a>
+<a href="#16113" id="16113">16113</a>
+<a href="#16114" id="16114">16114</a>
+<a href="#16115" id="16115">16115</a>
+<a href="#16116" id="16116">16116</a>
+<a href="#16117" id="16117">16117</a>
+<a href="#16118" id="16118">16118</a>
+<a href="#16119" id="16119">16119</a>
+<a href="#16120" id="16120">16120</a>
+<a href="#16121" id="16121">16121</a>
+<a href="#16122" id="16122">16122</a>
+<a href="#16123" id="16123">16123</a>
+<a href="#16124" id="16124">16124</a>
+<a href="#16125" id="16125">16125</a>
+<a href="#16126" id="16126">16126</a>
+<a href="#16127" id="16127">16127</a>
+<a href="#16128" id="16128">16128</a>
+<a href="#16129" id="16129">16129</a>
+<a href="#16130" id="16130">16130</a>
+<a href="#16131" id="16131">16131</a>
+<a href="#16132" id="16132">16132</a>
+<a href="#16133" id="16133">16133</a>
+<a href="#16134" id="16134">16134</a>
+<a href="#16135" id="16135">16135</a>
+<a href="#16136" id="16136">16136</a>
+<a href="#16137" id="16137">16137</a>
+<a href="#16138" id="16138">16138</a>
+<a href="#16139" id="16139">16139</a>
+<a href="#16140" id="16140">16140</a>
+<a href="#16141" id="16141">16141</a>
+<a href="#16142" id="16142">16142</a>
+<a href="#16143" id="16143">16143</a>
+<a href="#16144" id="16144">16144</a>
+<a href="#16145" id="16145">16145</a>
+<a href="#16146" id="16146">16146</a>
+<a href="#16147" id="16147">16147</a>
+<a href="#16148" id="16148">16148</a>
+<a href="#16149" id="16149">16149</a>
+<a href="#16150" id="16150">16150</a>
+<a href="#16151" id="16151">16151</a>
+<a href="#16152" id="16152">16152</a>
+<a href="#16153" id="16153">16153</a>
+<a href="#16154" id="16154">16154</a>
+<a href="#16155" id="16155">16155</a>
+<a href="#16156" id="16156">16156</a>
+<a href="#16157" id="16157">16157</a>
+<a href="#16158" id="16158">16158</a>
+<a href="#16159" id="16159">16159</a>
+<a href="#16160" id="16160">16160</a>
+<a href="#16161" id="16161">16161</a>
+<a href="#16162" id="16162">16162</a>
+<a href="#16163" id="16163">16163</a>
+<a href="#16164" id="16164">16164</a>
+<a href="#16165" id="16165">16165</a>
+<a href="#16166" id="16166">16166</a>
+<a href="#16167" id="16167">16167</a>
+<a href="#16168" id="16168">16168</a>
+<a href="#16169" id="16169">16169</a>
+<a href="#16170" id="16170">16170</a>
+<a href="#16171" id="16171">16171</a>
+<a href="#16172" id="16172">16172</a>
+<a href="#16173" id="16173">16173</a>
+<a href="#16174" id="16174">16174</a>
+<a href="#16175" id="16175">16175</a>
+<a href="#16176" id="16176">16176</a>
+<a href="#16177" id="16177">16177</a>
+<a href="#16178" id="16178">16178</a>
+<a href="#16179" id="16179">16179</a>
+<a href="#16180" id="16180">16180</a>
+<a href="#16181" id="16181">16181</a>
+<a href="#16182" id="16182">16182</a>
+<a href="#16183" id="16183">16183</a>
+<a href="#16184" id="16184">16184</a>
+<a href="#16185" id="16185">16185</a>
+<a href="#16186" id="16186">16186</a>
+<a href="#16187" id="16187">16187</a>
+<a href="#16188" id="16188">16188</a>
+<a href="#16189" id="16189">16189</a>
+<a href="#16190" id="16190">16190</a>
+<a href="#16191" id="16191">16191</a>
+<a href="#16192" id="16192">16192</a>
+<a href="#16193" id="16193">16193</a>
+<a href="#16194" id="16194">16194</a>
+<a href="#16195" id="16195">16195</a>
+<a href="#16196" id="16196">16196</a>
+<a href="#16197" id="16197">16197</a>
+<a href="#16198" id="16198">16198</a>
+<a href="#16199" id="16199">16199</a>
+<a href="#16200" id="16200">16200</a>
+<a href="#16201" id="16201">16201</a>
+<a href="#16202" id="16202">16202</a>
+<a href="#16203" id="16203">16203</a>
+<a href="#16204" id="16204">16204</a>
+<a href="#16205" id="16205">16205</a>
+<a href="#16206" id="16206">16206</a>
+<a href="#16207" id="16207">16207</a>
+<a href="#16208" id="16208">16208</a>
+<a href="#16209" id="16209">16209</a>
+<a href="#16210" id="16210">16210</a>
+<a href="#16211" id="16211">16211</a>
+<a href="#16212" id="16212">16212</a>
+<a href="#16213" id="16213">16213</a>
+<a href="#16214" id="16214">16214</a>
+<a href="#16215" id="16215">16215</a>
+<a href="#16216" id="16216">16216</a>
+<a href="#16217" id="16217">16217</a>
+<a href="#16218" id="16218">16218</a>
+<a href="#16219" id="16219">16219</a>
+<a href="#16220" id="16220">16220</a>
+<a href="#16221" id="16221">16221</a>
+<a href="#16222" id="16222">16222</a>
+<a href="#16223" id="16223">16223</a>
+<a href="#16224" id="16224">16224</a>
+<a href="#16225" id="16225">16225</a>
+<a href="#16226" id="16226">16226</a>
+<a href="#16227" id="16227">16227</a>
+<a href="#16228" id="16228">16228</a>
+<a href="#16229" id="16229">16229</a>
+<a href="#16230" id="16230">16230</a>
+<a href="#16231" id="16231">16231</a>
+<a href="#16232" id="16232">16232</a>
+<a href="#16233" id="16233">16233</a>
+<a href="#16234" id="16234">16234</a>
+<a href="#16235" id="16235">16235</a>
+<a href="#16236" id="16236">16236</a>
+<a href="#16237" id="16237">16237</a>
+<a href="#16238" id="16238">16238</a>
+<a href="#16239" id="16239">16239</a>
+<a href="#16240" id="16240">16240</a>
+<a href="#16241" id="16241">16241</a>
+<a href="#16242" id="16242">16242</a>
+<a href="#16243" id="16243">16243</a>
+<a href="#16244" id="16244">16244</a>
+<a href="#16245" id="16245">16245</a>
+<a href="#16246" id="16246">16246</a>
+<a href="#16247" id="16247">16247</a>
+<a href="#16248" id="16248">16248</a>
+<a href="#16249" id="16249">16249</a>
+<a href="#16250" id="16250">16250</a>
+<a href="#16251" id="16251">16251</a>
+<a href="#16252" id="16252">16252</a>
+<a href="#16253" id="16253">16253</a>
+<a href="#16254" id="16254">16254</a>
+<a href="#16255" id="16255">16255</a>
+<a href="#16256" id="16256">16256</a>
+<a href="#16257" id="16257">16257</a>
+<a href="#16258" id="16258">16258</a>
+<a href="#16259" id="16259">16259</a>
+<a href="#16260" id="16260">16260</a>
+<a href="#16261" id="16261">16261</a>
+<a href="#16262" id="16262">16262</a>
+<a href="#16263" id="16263">16263</a>
+<a href="#16264" id="16264">16264</a>
+<a href="#16265" id="16265">16265</a>
+<a href="#16266" id="16266">16266</a>
+<a href="#16267" id="16267">16267</a>
+<a href="#16268" id="16268">16268</a>
+<a href="#16269" id="16269">16269</a>
+<a href="#16270" id="16270">16270</a>
+<a href="#16271" id="16271">16271</a>
+<a href="#16272" id="16272">16272</a>
+<a href="#16273" id="16273">16273</a>
+<a href="#16274" id="16274">16274</a>
+<a href="#16275" id="16275">16275</a>
+<a href="#16276" id="16276">16276</a>
+<a href="#16277" id="16277">16277</a>
+<a href="#16278" id="16278">16278</a>
+<a href="#16279" id="16279">16279</a>
+<a href="#16280" id="16280">16280</a>
+<a href="#16281" id="16281">16281</a>
+<a href="#16282" id="16282">16282</a>
+<a href="#16283" id="16283">16283</a>
+<a href="#16284" id="16284">16284</a>
+<a href="#16285" id="16285">16285</a>
+<a href="#16286" id="16286">16286</a>
+<a href="#16287" id="16287">16287</a>
+<a href="#16288" id="16288">16288</a>
+<a href="#16289" id="16289">16289</a>
+<a href="#16290" id="16290">16290</a>
+<a href="#16291" id="16291">16291</a>
+<a href="#16292" id="16292">16292</a>
+<a href="#16293" id="16293">16293</a>
+<a href="#16294" id="16294">16294</a>
+<a href="#16295" id="16295">16295</a>
+<a href="#16296" id="16296">16296</a>
+<a href="#16297" id="16297">16297</a>
+<a href="#16298" id="16298">16298</a>
+<a href="#16299" id="16299">16299</a>
+<a href="#16300" id="16300">16300</a>
+<a href="#16301" id="16301">16301</a>
+<a href="#16302" id="16302">16302</a>
+<a href="#16303" id="16303">16303</a>
+<a href="#16304" id="16304">16304</a>
+<a href="#16305" id="16305">16305</a>
+<a href="#16306" id="16306">16306</a>
+<a href="#16307" id="16307">16307</a>
+<a href="#16308" id="16308">16308</a>
+<a href="#16309" id="16309">16309</a>
+<a href="#16310" id="16310">16310</a>
+<a href="#16311" id="16311">16311</a>
+<a href="#16312" id="16312">16312</a>
+<a href="#16313" id="16313">16313</a>
+<a href="#16314" id="16314">16314</a>
+<a href="#16315" id="16315">16315</a>
+<a href="#16316" id="16316">16316</a>
+<a href="#16317" id="16317">16317</a>
+<a href="#16318" id="16318">16318</a>
+<a href="#16319" id="16319">16319</a>
+<a href="#16320" id="16320">16320</a>
+<a href="#16321" id="16321">16321</a>
+<a href="#16322" id="16322">16322</a>
+<a href="#16323" id="16323">16323</a>
+<a href="#16324" id="16324">16324</a>
+<a href="#16325" id="16325">16325</a>
+<a href="#16326" id="16326">16326</a>
+<a href="#16327" id="16327">16327</a>
+<a href="#16328" id="16328">16328</a>
+<a href="#16329" id="16329">16329</a>
+<a href="#16330" id="16330">16330</a>
+<a href="#16331" id="16331">16331</a>
+<a href="#16332" id="16332">16332</a>
+<a href="#16333" id="16333">16333</a>
+<a href="#16334" id="16334">16334</a>
+<a href="#16335" id="16335">16335</a>
+<a href="#16336" id="16336">16336</a>
+<a href="#16337" id="16337">16337</a>
+<a href="#16338" id="16338">16338</a>
+<a href="#16339" id="16339">16339</a>
+<a href="#16340" id="16340">16340</a>
+<a href="#16341" id="16341">16341</a>
+<a href="#16342" id="16342">16342</a>
+<a href="#16343" id="16343">16343</a>
+<a href="#16344" id="16344">16344</a>
+<a href="#16345" id="16345">16345</a>
+<a href="#16346" id="16346">16346</a>
+<a href="#16347" id="16347">16347</a>
+<a href="#16348" id="16348">16348</a>
+<a href="#16349" id="16349">16349</a>
+<a href="#16350" id="16350">16350</a>
+<a href="#16351" id="16351">16351</a>
+<a href="#16352" id="16352">16352</a>
+<a href="#16353" id="16353">16353</a>
+<a href="#16354" id="16354">16354</a>
+<a href="#16355" id="16355">16355</a>
+<a href="#16356" id="16356">16356</a>
+<a href="#16357" id="16357">16357</a>
+<a href="#16358" id="16358">16358</a>
+<a href="#16359" id="16359">16359</a>
+<a href="#16360" id="16360">16360</a>
+<a href="#16361" id="16361">16361</a>
+<a href="#16362" id="16362">16362</a>
+<a href="#16363" id="16363">16363</a>
+<a href="#16364" id="16364">16364</a>
+<a href="#16365" id="16365">16365</a>
+<a href="#16366" id="16366">16366</a>
+<a href="#16367" id="16367">16367</a>
+<a href="#16368" id="16368">16368</a>
+<a href="#16369" id="16369">16369</a>
+<a href="#16370" id="16370">16370</a>
+<a href="#16371" id="16371">16371</a>
+<a href="#16372" id="16372">16372</a>
+<a href="#16373" id="16373">16373</a>
+<a href="#16374" id="16374">16374</a>
+<a href="#16375" id="16375">16375</a>
+<a href="#16376" id="16376">16376</a>
+<a href="#16377" id="16377">16377</a>
+<a href="#16378" id="16378">16378</a>
+<a href="#16379" id="16379">16379</a>
+<a href="#16380" id="16380">16380</a>
+<a href="#16381" id="16381">16381</a>
+<a href="#16382" id="16382">16382</a>
+<a href="#16383" id="16383">16383</a>
+<a href="#16384" id="16384">16384</a>
+<a href="#16385" id="16385">16385</a>
+<a href="#16386" id="16386">16386</a>
+<a href="#16387" id="16387">16387</a>
+<a href="#16388" id="16388">16388</a>
+<a href="#16389" id="16389">16389</a>
+<a href="#16390" id="16390">16390</a>
+<a href="#16391" id="16391">16391</a>
+<a href="#16392" id="16392">16392</a>
+<a href="#16393" id="16393">16393</a>
+<a href="#16394" id="16394">16394</a>
+<a href="#16395" id="16395">16395</a>
+<a href="#16396" id="16396">16396</a>
+<a href="#16397" id="16397">16397</a>
+<a href="#16398" id="16398">16398</a>
+<a href="#16399" id="16399">16399</a>
+<a href="#16400" id="16400">16400</a>
+<a href="#16401" id="16401">16401</a>
+<a href="#16402" id="16402">16402</a>
+<a href="#16403" id="16403">16403</a>
+<a href="#16404" id="16404">16404</a>
+<a href="#16405" id="16405">16405</a>
+<a href="#16406" id="16406">16406</a>
+<a href="#16407" id="16407">16407</a>
+<a href="#16408" id="16408">16408</a>
+<a href="#16409" id="16409">16409</a>
+<a href="#16410" id="16410">16410</a>
+<a href="#16411" id="16411">16411</a>
+<a href="#16412" id="16412">16412</a>
+<a href="#16413" id="16413">16413</a>
+<a href="#16414" id="16414">16414</a>
+<a href="#16415" id="16415">16415</a>
+<a href="#16416" id="16416">16416</a>
+<a href="#16417" id="16417">16417</a>
+<a href="#16418" id="16418">16418</a>
+<a href="#16419" id="16419">16419</a>
+<a href="#16420" id="16420">16420</a>
+<a href="#16421" id="16421">16421</a>
+<a href="#16422" id="16422">16422</a>
+<a href="#16423" id="16423">16423</a>
+<a href="#16424" id="16424">16424</a>
+<a href="#16425" id="16425">16425</a>
+<a href="#16426" id="16426">16426</a>
+<a href="#16427" id="16427">16427</a>
+<a href="#16428" id="16428">16428</a>
+<a href="#16429" id="16429">16429</a>
+<a href="#16430" id="16430">16430</a>
+<a href="#16431" id="16431">16431</a>
+<a href="#16432" id="16432">16432</a>
+<a href="#16433" id="16433">16433</a>
+<a href="#16434" id="16434">16434</a>
+<a href="#16435" id="16435">16435</a>
+<a href="#16436" id="16436">16436</a>
+<a href="#16437" id="16437">16437</a>
+<a href="#16438" id="16438">16438</a>
+<a href="#16439" id="16439">16439</a>
+<a href="#16440" id="16440">16440</a>
+<a href="#16441" id="16441">16441</a>
+<a href="#16442" id="16442">16442</a>
+<a href="#16443" id="16443">16443</a>
+<a href="#16444" id="16444">16444</a>
+<a href="#16445" id="16445">16445</a>
+<a href="#16446" id="16446">16446</a>
+<a href="#16447" id="16447">16447</a>
+<a href="#16448" id="16448">16448</a>
+<a href="#16449" id="16449">16449</a>
+<a href="#16450" id="16450">16450</a>
+<a href="#16451" id="16451">16451</a>
+<a href="#16452" id="16452">16452</a>
+<a href="#16453" id="16453">16453</a>
+<a href="#16454" id="16454">16454</a>
+<a href="#16455" id="16455">16455</a>
+<a href="#16456" id="16456">16456</a>
+<a href="#16457" id="16457">16457</a>
+<a href="#16458" id="16458">16458</a>
+<a href="#16459" id="16459">16459</a>
+<a href="#16460" id="16460">16460</a>
+<a href="#16461" id="16461">16461</a>
+<a href="#16462" id="16462">16462</a>
+<a href="#16463" id="16463">16463</a>
+<a href="#16464" id="16464">16464</a>
+<a href="#16465" id="16465">16465</a>
+<a href="#16466" id="16466">16466</a>
+<a href="#16467" id="16467">16467</a>
+<a href="#16468" id="16468">16468</a>
+<a href="#16469" id="16469">16469</a>
+<a href="#16470" id="16470">16470</a>
+<a href="#16471" id="16471">16471</a>
+<a href="#16472" id="16472">16472</a>
+<a href="#16473" id="16473">16473</a>
+<a href="#16474" id="16474">16474</a>
+<a href="#16475" id="16475">16475</a>
+<a href="#16476" id="16476">16476</a>
+<a href="#16477" id="16477">16477</a>
+<a href="#16478" id="16478">16478</a>
+<a href="#16479" id="16479">16479</a>
+<a href="#16480" id="16480">16480</a>
+<a href="#16481" id="16481">16481</a>
+<a href="#16482" id="16482">16482</a>
+<a href="#16483" id="16483">16483</a>
+<a href="#16484" id="16484">16484</a>
+<a href="#16485" id="16485">16485</a>
+<a href="#16486" id="16486">16486</a>
+<a href="#16487" id="16487">16487</a>
+<a href="#16488" id="16488">16488</a>
+<a href="#16489" id="16489">16489</a>
+<a href="#16490" id="16490">16490</a>
+<a href="#16491" id="16491">16491</a>
+<a href="#16492" id="16492">16492</a>
+<a href="#16493" id="16493">16493</a>
+<a href="#16494" id="16494">16494</a>
+<a href="#16495" id="16495">16495</a>
+<a href="#16496" id="16496">16496</a>
+<a href="#16497" id="16497">16497</a>
+<a href="#16498" id="16498">16498</a>
+<a href="#16499" id="16499">16499</a>
+<a href="#16500" id="16500">16500</a>
+<a href="#16501" id="16501">16501</a>
+<a href="#16502" id="16502">16502</a>
+<a href="#16503" id="16503">16503</a>
+<a href="#16504" id="16504">16504</a>
+<a href="#16505" id="16505">16505</a>
+<a href="#16506" id="16506">16506</a>
+<a href="#16507" id="16507">16507</a>
+<a href="#16508" id="16508">16508</a>
+<a href="#16509" id="16509">16509</a>
+<a href="#16510" id="16510">16510</a>
+<a href="#16511" id="16511">16511</a>
+<a href="#16512" id="16512">16512</a>
+<a href="#16513" id="16513">16513</a>
+<a href="#16514" id="16514">16514</a>
+<a href="#16515" id="16515">16515</a>
+<a href="#16516" id="16516">16516</a>
+<a href="#16517" id="16517">16517</a>
+<a href="#16518" id="16518">16518</a>
+<a href="#16519" id="16519">16519</a>
+<a href="#16520" id="16520">16520</a>
+<a href="#16521" id="16521">16521</a>
+<a href="#16522" id="16522">16522</a>
+<a href="#16523" id="16523">16523</a>
+<a href="#16524" id="16524">16524</a>
+<a href="#16525" id="16525">16525</a>
+<a href="#16526" id="16526">16526</a>
+<a href="#16527" id="16527">16527</a>
+<a href="#16528" id="16528">16528</a>
+<a href="#16529" id="16529">16529</a>
+<a href="#16530" id="16530">16530</a>
+<a href="#16531" id="16531">16531</a>
+<a href="#16532" id="16532">16532</a>
+<a href="#16533" id="16533">16533</a>
+<a href="#16534" id="16534">16534</a>
+<a href="#16535" id="16535">16535</a>
+<a href="#16536" id="16536">16536</a>
+<a href="#16537" id="16537">16537</a>
+<a href="#16538" id="16538">16538</a>
+<a href="#16539" id="16539">16539</a>
+<a href="#16540" id="16540">16540</a>
+<a href="#16541" id="16541">16541</a>
+<a href="#16542" id="16542">16542</a>
+<a href="#16543" id="16543">16543</a>
+<a href="#16544" id="16544">16544</a>
+<a href="#16545" id="16545">16545</a>
+<a href="#16546" id="16546">16546</a>
+<a href="#16547" id="16547">16547</a>
+<a href="#16548" id="16548">16548</a>
+<a href="#16549" id="16549">16549</a>
+<a href="#16550" id="16550">16550</a>
+<a href="#16551" id="16551">16551</a>
+<a href="#16552" id="16552">16552</a>
+<a href="#16553" id="16553">16553</a>
+<a href="#16554" id="16554">16554</a>
+<a href="#16555" id="16555">16555</a>
+<a href="#16556" id="16556">16556</a>
+<a href="#16557" id="16557">16557</a>
+<a href="#16558" id="16558">16558</a>
+<a href="#16559" id="16559">16559</a>
+<a href="#16560" id="16560">16560</a>
+<a href="#16561" id="16561">16561</a>
+<a href="#16562" id="16562">16562</a>
+<a href="#16563" id="16563">16563</a>
+<a href="#16564" id="16564">16564</a>
+<a href="#16565" id="16565">16565</a>
+<a href="#16566" id="16566">16566</a>
+<a href="#16567" id="16567">16567</a>
+<a href="#16568" id="16568">16568</a>
+<a href="#16569" id="16569">16569</a>
+<a href="#16570" id="16570">16570</a>
+<a href="#16571" id="16571">16571</a>
+<a href="#16572" id="16572">16572</a>
+<a href="#16573" id="16573">16573</a>
+<a href="#16574" id="16574">16574</a>
+<a href="#16575" id="16575">16575</a>
+<a href="#16576" id="16576">16576</a>
+<a href="#16577" id="16577">16577</a>
+<a href="#16578" id="16578">16578</a>
+<a href="#16579" id="16579">16579</a>
+<a href="#16580" id="16580">16580</a>
+<a href="#16581" id="16581">16581</a>
+<a href="#16582" id="16582">16582</a>
+<a href="#16583" id="16583">16583</a>
+<a href="#16584" id="16584">16584</a>
+<a href="#16585" id="16585">16585</a>
+<a href="#16586" id="16586">16586</a>
+<a href="#16587" id="16587">16587</a>
+<a href="#16588" id="16588">16588</a>
+<a href="#16589" id="16589">16589</a>
+<a href="#16590" id="16590">16590</a>
+<a href="#16591" id="16591">16591</a>
+<a href="#16592" id="16592">16592</a>
+<a href="#16593" id="16593">16593</a>
+<a href="#16594" id="16594">16594</a>
+<a href="#16595" id="16595">16595</a>
+<a href="#16596" id="16596">16596</a>
+<a href="#16597" id="16597">16597</a>
+<a href="#16598" id="16598">16598</a>
+<a href="#16599" id="16599">16599</a>
+<a href="#16600" id="16600">16600</a>
+<a href="#16601" id="16601">16601</a>
+<a href="#16602" id="16602">16602</a>
+<a href="#16603" id="16603">16603</a>
+<a href="#16604" id="16604">16604</a>
+<a href="#16605" id="16605">16605</a>
+<a href="#16606" id="16606">16606</a>
+<a href="#16607" id="16607">16607</a>
+<a href="#16608" id="16608">16608</a>
+<a href="#16609" id="16609">16609</a>
+<a href="#16610" id="16610">16610</a>
+<a href="#16611" id="16611">16611</a>
+<a href="#16612" id="16612">16612</a>
+<a href="#16613" id="16613">16613</a>
+<a href="#16614" id="16614">16614</a>
+<a href="#16615" id="16615">16615</a>
+<a href="#16616" id="16616">16616</a>
+<a href="#16617" id="16617">16617</a>
+<a href="#16618" id="16618">16618</a>
+<a href="#16619" id="16619">16619</a>
+<a href="#16620" id="16620">16620</a>
+<a href="#16621" id="16621">16621</a>
+<a href="#16622" id="16622">16622</a>
+<a href="#16623" id="16623">16623</a>
+<a href="#16624" id="16624">16624</a>
+<a href="#16625" id="16625">16625</a>
+<a href="#16626" id="16626">16626</a>
+<a href="#16627" id="16627">16627</a>
+<a href="#16628" id="16628">16628</a>
+<a href="#16629" id="16629">16629</a>
+<a href="#16630" id="16630">16630</a>
+<a href="#16631" id="16631">16631</a>
+<a href="#16632" id="16632">16632</a>
+<a href="#16633" id="16633">16633</a>
+<a href="#16634" id="16634">16634</a>
+<a href="#16635" id="16635">16635</a>
+<a href="#16636" id="16636">16636</a>
+<a href="#16637" id="16637">16637</a>
+<a href="#16638" id="16638">16638</a>
+<a href="#16639" id="16639">16639</a>
+<a href="#16640" id="16640">16640</a>
+<a href="#16641" id="16641">16641</a>
+<a href="#16642" id="16642">16642</a>
+<a href="#16643" id="16643">16643</a>
+<a href="#16644" id="16644">16644</a>
+<a href="#16645" id="16645">16645</a>
+<a href="#16646" id="16646">16646</a>
+<a href="#16647" id="16647">16647</a>
+<a href="#16648" id="16648">16648</a>
+<a href="#16649" id="16649">16649</a>
+<a href="#16650" id="16650">16650</a>
+<a href="#16651" id="16651">16651</a>
+<a href="#16652" id="16652">16652</a>
+<a href="#16653" id="16653">16653</a>
+<a href="#16654" id="16654">16654</a>
+<a href="#16655" id="16655">16655</a>
+<a href="#16656" id="16656">16656</a>
+<a href="#16657" id="16657">16657</a>
+<a href="#16658" id="16658">16658</a>
+<a href="#16659" id="16659">16659</a>
+<a href="#16660" id="16660">16660</a>
+<a href="#16661" id="16661">16661</a>
+<a href="#16662" id="16662">16662</a>
+<a href="#16663" id="16663">16663</a>
+<a href="#16664" id="16664">16664</a>
+<a href="#16665" id="16665">16665</a>
+<a href="#16666" id="16666">16666</a>
+<a href="#16667" id="16667">16667</a>
+<a href="#16668" id="16668">16668</a>
+<a href="#16669" id="16669">16669</a>
+<a href="#16670" id="16670">16670</a>
+<a href="#16671" id="16671">16671</a>
+<a href="#16672" id="16672">16672</a>
+<a href="#16673" id="16673">16673</a>
+<a href="#16674" id="16674">16674</a>
+<a href="#16675" id="16675">16675</a>
+<a href="#16676" id="16676">16676</a>
+<a href="#16677" id="16677">16677</a>
+<a href="#16678" id="16678">16678</a>
+<a href="#16679" id="16679">16679</a>
+<a href="#16680" id="16680">16680</a>
+<a href="#16681" id="16681">16681</a>
+<a href="#16682" id="16682">16682</a>
+<a href="#16683" id="16683">16683</a>
+<a href="#16684" id="16684">16684</a>
+<a href="#16685" id="16685">16685</a>
+<a href="#16686" id="16686">16686</a>
+<a href="#16687" id="16687">16687</a>
+<a href="#16688" id="16688">16688</a>
+<a href="#16689" id="16689">16689</a>
+<a href="#16690" id="16690">16690</a>
+<a href="#16691" id="16691">16691</a>
+<a href="#16692" id="16692">16692</a>
+<a href="#16693" id="16693">16693</a>
+<a href="#16694" id="16694">16694</a>
+<a href="#16695" id="16695">16695</a>
+<a href="#16696" id="16696">16696</a>
+<a href="#16697" id="16697">16697</a>
+<a href="#16698" id="16698">16698</a>
+<a href="#16699" id="16699">16699</a>
+<a href="#16700" id="16700">16700</a>
+<a href="#16701" id="16701">16701</a>
+<a href="#16702" id="16702">16702</a>
+<a href="#16703" id="16703">16703</a>
+<a href="#16704" id="16704">16704</a>
+<a href="#16705" id="16705">16705</a>
+<a href="#16706" id="16706">16706</a>
+<a href="#16707" id="16707">16707</a>
+<a href="#16708" id="16708">16708</a>
+<a href="#16709" id="16709">16709</a>
+<a href="#16710" id="16710">16710</a>
+<a href="#16711" id="16711">16711</a>
+<a href="#16712" id="16712">16712</a>
+<a href="#16713" id="16713">16713</a>
+<a href="#16714" id="16714">16714</a>
+<a href="#16715" id="16715">16715</a>
+<a href="#16716" id="16716">16716</a>
+<a href="#16717" id="16717">16717</a>
+<a href="#16718" id="16718">16718</a>
+<a href="#16719" id="16719">16719</a>
+<a href="#16720" id="16720">16720</a>
+<a href="#16721" id="16721">16721</a>
+<a href="#16722" id="16722">16722</a>
+<a href="#16723" id="16723">16723</a>
+<a href="#16724" id="16724">16724</a>
+<a href="#16725" id="16725">16725</a>
+<a href="#16726" id="16726">16726</a>
+<a href="#16727" id="16727">16727</a>
+<a href="#16728" id="16728">16728</a>
+<a href="#16729" id="16729">16729</a>
+<a href="#16730" id="16730">16730</a>
+<a href="#16731" id="16731">16731</a>
+<a href="#16732" id="16732">16732</a>
+<a href="#16733" id="16733">16733</a>
+<a href="#16734" id="16734">16734</a>
+<a href="#16735" id="16735">16735</a>
+<a href="#16736" id="16736">16736</a>
+<a href="#16737" id="16737">16737</a>
+<a href="#16738" id="16738">16738</a>
+<a href="#16739" id="16739">16739</a>
+<a href="#16740" id="16740">16740</a>
+<a href="#16741" id="16741">16741</a>
+<a href="#16742" id="16742">16742</a>
+<a href="#16743" id="16743">16743</a>
+<a href="#16744" id="16744">16744</a>
+<a href="#16745" id="16745">16745</a>
+<a href="#16746" id="16746">16746</a>
+<a href="#16747" id="16747">16747</a>
+<a href="#16748" id="16748">16748</a>
+<a href="#16749" id="16749">16749</a>
+<a href="#16750" id="16750">16750</a>
+<a href="#16751" id="16751">16751</a>
+<a href="#16752" id="16752">16752</a>
+<a href="#16753" id="16753">16753</a>
+<a href="#16754" id="16754">16754</a>
+<a href="#16755" id="16755">16755</a>
+<a href="#16756" id="16756">16756</a>
+<a href="#16757" id="16757">16757</a>
+<a href="#16758" id="16758">16758</a>
+<a href="#16759" id="16759">16759</a>
+<a href="#16760" id="16760">16760</a>
+<a href="#16761" id="16761">16761</a>
+<a href="#16762" id="16762">16762</a>
+<a href="#16763" id="16763">16763</a>
+<a href="#16764" id="16764">16764</a>
+<a href="#16765" id="16765">16765</a>
+<a href="#16766" id="16766">16766</a>
+<a href="#16767" id="16767">16767</a>
+<a href="#16768" id="16768">16768</a>
+<a href="#16769" id="16769">16769</a>
+<a href="#16770" id="16770">16770</a>
+<a href="#16771" id="16771">16771</a>
+<a href="#16772" id="16772">16772</a>
+<a href="#16773" id="16773">16773</a>
+<a href="#16774" id="16774">16774</a>
+<a href="#16775" id="16775">16775</a>
+<a href="#16776" id="16776">16776</a>
+<a href="#16777" id="16777">16777</a>
+<a href="#16778" id="16778">16778</a>
+<a href="#16779" id="16779">16779</a>
+<a href="#16780" id="16780">16780</a>
+<a href="#16781" id="16781">16781</a>
+<a href="#16782" id="16782">16782</a>
+<a href="#16783" id="16783">16783</a>
+<a href="#16784" id="16784">16784</a>
+<a href="#16785" id="16785">16785</a>
+<a href="#16786" id="16786">16786</a>
+<a href="#16787" id="16787">16787</a>
+<a href="#16788" id="16788">16788</a>
+<a href="#16789" id="16789">16789</a>
+<a href="#16790" id="16790">16790</a>
+<a href="#16791" id="16791">16791</a>
+<a href="#16792" id="16792">16792</a>
+<a href="#16793" id="16793">16793</a>
+<a href="#16794" id="16794">16794</a>
+<a href="#16795" id="16795">16795</a>
+<a href="#16796" id="16796">16796</a>
+<a href="#16797" id="16797">16797</a>
+<a href="#16798" id="16798">16798</a>
+<a href="#16799" id="16799">16799</a>
+<a href="#16800" id="16800">16800</a>
+<a href="#16801" id="16801">16801</a>
+<a href="#16802" id="16802">16802</a>
+<a href="#16803" id="16803">16803</a>
+<a href="#16804" id="16804">16804</a>
+<a href="#16805" id="16805">16805</a>
+<a href="#16806" id="16806">16806</a>
+<a href="#16807" id="16807">16807</a>
+<a href="#16808" id="16808">16808</a>
+<a href="#16809" id="16809">16809</a>
+<a href="#16810" id="16810">16810</a>
+<a href="#16811" id="16811">16811</a>
+<a href="#16812" id="16812">16812</a>
+<a href="#16813" id="16813">16813</a>
+<a href="#16814" id="16814">16814</a>
+<a href="#16815" id="16815">16815</a>
+<a href="#16816" id="16816">16816</a>
+<a href="#16817" id="16817">16817</a>
+<a href="#16818" id="16818">16818</a>
+<a href="#16819" id="16819">16819</a>
+<a href="#16820" id="16820">16820</a>
+<a href="#16821" id="16821">16821</a>
+<a href="#16822" id="16822">16822</a>
+<a href="#16823" id="16823">16823</a>
+<a href="#16824" id="16824">16824</a>
+<a href="#16825" id="16825">16825</a>
+<a href="#16826" id="16826">16826</a>
+<a href="#16827" id="16827">16827</a>
+<a href="#16828" id="16828">16828</a>
+<a href="#16829" id="16829">16829</a>
+<a href="#16830" id="16830">16830</a>
+<a href="#16831" id="16831">16831</a>
+<a href="#16832" id="16832">16832</a>
+<a href="#16833" id="16833">16833</a>
+<a href="#16834" id="16834">16834</a>
+<a href="#16835" id="16835">16835</a>
+<a href="#16836" id="16836">16836</a>
+<a href="#16837" id="16837">16837</a>
+<a href="#16838" id="16838">16838</a>
+<a href="#16839" id="16839">16839</a>
+<a href="#16840" id="16840">16840</a>
+<a href="#16841" id="16841">16841</a>
+<a href="#16842" id="16842">16842</a>
+<a href="#16843" id="16843">16843</a>
+<a href="#16844" id="16844">16844</a>
+<a href="#16845" id="16845">16845</a>
+<a href="#16846" id="16846">16846</a>
+<a href="#16847" id="16847">16847</a>
+<a href="#16848" id="16848">16848</a>
+<a href="#16849" id="16849">16849</a>
+<a href="#16850" id="16850">16850</a>
+<a href="#16851" id="16851">16851</a>
+<a href="#16852" id="16852">16852</a>
+<a href="#16853" id="16853">16853</a>
+<a href="#16854" id="16854">16854</a>
+<a href="#16855" id="16855">16855</a>
+<a href="#16856" id="16856">16856</a>
+<a href="#16857" id="16857">16857</a>
+<a href="#16858" id="16858">16858</a>
+<a href="#16859" id="16859">16859</a>
+<a href="#16860" id="16860">16860</a>
+<a href="#16861" id="16861">16861</a>
+<a href="#16862" id="16862">16862</a>
+<a href="#16863" id="16863">16863</a>
+<a href="#16864" id="16864">16864</a>
+<a href="#16865" id="16865">16865</a>
+<a href="#16866" id="16866">16866</a>
+<a href="#16867" id="16867">16867</a>
+<a href="#16868" id="16868">16868</a>
+<a href="#16869" id="16869">16869</a>
+<a href="#16870" id="16870">16870</a>
+<a href="#16871" id="16871">16871</a>
+<a href="#16872" id="16872">16872</a>
+<a href="#16873" id="16873">16873</a>
+<a href="#16874" id="16874">16874</a>
+<a href="#16875" id="16875">16875</a>
+<a href="#16876" id="16876">16876</a>
+<a href="#16877" id="16877">16877</a>
+<a href="#16878" id="16878">16878</a>
+<a href="#16879" id="16879">16879</a>
+<a href="#16880" id="16880">16880</a>
+<a href="#16881" id="16881">16881</a>
+<a href="#16882" id="16882">16882</a>
+<a href="#16883" id="16883">16883</a>
+<a href="#16884" id="16884">16884</a>
+<a href="#16885" id="16885">16885</a>
+<a href="#16886" id="16886">16886</a>
+<a href="#16887" id="16887">16887</a>
+<a href="#16888" id="16888">16888</a>
+<a href="#16889" id="16889">16889</a>
+<a href="#16890" id="16890">16890</a>
+<a href="#16891" id="16891">16891</a>
+<a href="#16892" id="16892">16892</a>
+<a href="#16893" id="16893">16893</a>
+<a href="#16894" id="16894">16894</a>
+<a href="#16895" id="16895">16895</a>
+<a href="#16896" id="16896">16896</a>
+<a href="#16897" id="16897">16897</a>
+<a href="#16898" id="16898">16898</a>
+<a href="#16899" id="16899">16899</a>
+<a href="#16900" id="16900">16900</a>
+<a href="#16901" id="16901">16901</a>
+<a href="#16902" id="16902">16902</a>
+<a href="#16903" id="16903">16903</a>
+<a href="#16904" id="16904">16904</a>
+<a href="#16905" id="16905">16905</a>
+<a href="#16906" id="16906">16906</a>
+<a href="#16907" id="16907">16907</a>
+<a href="#16908" id="16908">16908</a>
+<a href="#16909" id="16909">16909</a>
+<a href="#16910" id="16910">16910</a>
+<a href="#16911" id="16911">16911</a>
+<a href="#16912" id="16912">16912</a>
+<a href="#16913" id="16913">16913</a>
+<a href="#16914" id="16914">16914</a>
+<a href="#16915" id="16915">16915</a>
+<a href="#16916" id="16916">16916</a>
+<a href="#16917" id="16917">16917</a>
+<a href="#16918" id="16918">16918</a>
+<a href="#16919" id="16919">16919</a>
+<a href="#16920" id="16920">16920</a>
+<a href="#16921" id="16921">16921</a>
+<a href="#16922" id="16922">16922</a>
+<a href="#16923" id="16923">16923</a>
+<a href="#16924" id="16924">16924</a>
+<a href="#16925" id="16925">16925</a>
+<a href="#16926" id="16926">16926</a>
+<a href="#16927" id="16927">16927</a>
+<a href="#16928" id="16928">16928</a>
+<a href="#16929" id="16929">16929</a>
+<a href="#16930" id="16930">16930</a>
+<a href="#16931" id="16931">16931</a>
+<a href="#16932" id="16932">16932</a>
+<a href="#16933" id="16933">16933</a>
+<a href="#16934" id="16934">16934</a>
+<a href="#16935" id="16935">16935</a>
+<a href="#16936" id="16936">16936</a>
+<a href="#16937" id="16937">16937</a>
+<a href="#16938" id="16938">16938</a>
+<a href="#16939" id="16939">16939</a>
+<a href="#16940" id="16940">16940</a>
+<a href="#16941" id="16941">16941</a>
+<a href="#16942" id="16942">16942</a>
+<a href="#16943" id="16943">16943</a>
+<a href="#16944" id="16944">16944</a>
+<a href="#16945" id="16945">16945</a>
+<a href="#16946" id="16946">16946</a>
+<a href="#16947" id="16947">16947</a>
+<a href="#16948" id="16948">16948</a>
+<a href="#16949" id="16949">16949</a>
+<a href="#16950" id="16950">16950</a>
+<a href="#16951" id="16951">16951</a>
+<a href="#16952" id="16952">16952</a>
+<a href="#16953" id="16953">16953</a>
+<a href="#16954" id="16954">16954</a>
+<a href="#16955" id="16955">16955</a>
+<a href="#16956" id="16956">16956</a>
+<a href="#16957" id="16957">16957</a>
+<a href="#16958" id="16958">16958</a>
+<a href="#16959" id="16959">16959</a>
+<a href="#16960" id="16960">16960</a>
+<a href="#16961" id="16961">16961</a>
+<a href="#16962" id="16962">16962</a>
+<a href="#16963" id="16963">16963</a>
+<a href="#16964" id="16964">16964</a>
+<a href="#16965" id="16965">16965</a>
+<a href="#16966" id="16966">16966</a>
+<a href="#16967" id="16967">16967</a>
+<a href="#16968" id="16968">16968</a>
+<a href="#16969" id="16969">16969</a>
+<a href="#16970" id="16970">16970</a>
+<a href="#16971" id="16971">16971</a>
+<a href="#16972" id="16972">16972</a>
+<a href="#16973" id="16973">16973</a>
+<a href="#16974" id="16974">16974</a>
+<a href="#16975" id="16975">16975</a>
+<a href="#16976" id="16976">16976</a>
+<a href="#16977" id="16977">16977</a>
+<a href="#16978" id="16978">16978</a>
+<a href="#16979" id="16979">16979</a>
+<a href="#16980" id="16980">16980</a>
+<a href="#16981" id="16981">16981</a>
+<a href="#16982" id="16982">16982</a>
+<a href="#16983" id="16983">16983</a>
+<a href="#16984" id="16984">16984</a>
+<a href="#16985" id="16985">16985</a>
+<a href="#16986" id="16986">16986</a>
+<a href="#16987" id="16987">16987</a>
+<a href="#16988" id="16988">16988</a>
+<a href="#16989" id="16989">16989</a>
+<a href="#16990" id="16990">16990</a>
+<a href="#16991" id="16991">16991</a>
+<a href="#16992" id="16992">16992</a>
+<a href="#16993" id="16993">16993</a>
+<a href="#16994" id="16994">16994</a>
+<a href="#16995" id="16995">16995</a>
+<a href="#16996" id="16996">16996</a>
+<a href="#16997" id="16997">16997</a>
+<a href="#16998" id="16998">16998</a>
+<a href="#16999" id="16999">16999</a>
+<a href="#17000" id="17000">17000</a>
+<a href="#17001" id="17001">17001</a>
+<a href="#17002" id="17002">17002</a>
+<a href="#17003" id="17003">17003</a>
+<a href="#17004" id="17004">17004</a>
+<a href="#17005" id="17005">17005</a>
+<a href="#17006" id="17006">17006</a>
+<a href="#17007" id="17007">17007</a>
+<a href="#17008" id="17008">17008</a>
+<a href="#17009" id="17009">17009</a>
+<a href="#17010" id="17010">17010</a>
+<a href="#17011" id="17011">17011</a>
+<a href="#17012" id="17012">17012</a>
+<a href="#17013" id="17013">17013</a>
+<a href="#17014" id="17014">17014</a>
+<a href="#17015" id="17015">17015</a>
+<a href="#17016" id="17016">17016</a>
+<a href="#17017" id="17017">17017</a>
+<a href="#17018" id="17018">17018</a>
+<a href="#17019" id="17019">17019</a>
+<a href="#17020" id="17020">17020</a>
+<a href="#17021" id="17021">17021</a>
+<a href="#17022" id="17022">17022</a>
+<a href="#17023" id="17023">17023</a>
+<a href="#17024" id="17024">17024</a>
+<a href="#17025" id="17025">17025</a>
+<a href="#17026" id="17026">17026</a>
+<a href="#17027" id="17027">17027</a>
+<a href="#17028" id="17028">17028</a>
+<a href="#17029" id="17029">17029</a>
+<a href="#17030" id="17030">17030</a>
+<a href="#17031" id="17031">17031</a>
+<a href="#17032" id="17032">17032</a>
+<a href="#17033" id="17033">17033</a>
+<a href="#17034" id="17034">17034</a>
+<a href="#17035" id="17035">17035</a>
+<a href="#17036" id="17036">17036</a>
+<a href="#17037" id="17037">17037</a>
+<a href="#17038" id="17038">17038</a>
+<a href="#17039" id="17039">17039</a>
+<a href="#17040" id="17040">17040</a>
+<a href="#17041" id="17041">17041</a>
+<a href="#17042" id="17042">17042</a>
+<a href="#17043" id="17043">17043</a>
+<a href="#17044" id="17044">17044</a>
+<a href="#17045" id="17045">17045</a>
+<a href="#17046" id="17046">17046</a>
+<a href="#17047" id="17047">17047</a>
+<a href="#17048" id="17048">17048</a>
+<a href="#17049" id="17049">17049</a>
+<a href="#17050" id="17050">17050</a>
+<a href="#17051" id="17051">17051</a>
+<a href="#17052" id="17052">17052</a>
+<a href="#17053" id="17053">17053</a>
+<a href="#17054" id="17054">17054</a>
+<a href="#17055" id="17055">17055</a>
+<a href="#17056" id="17056">17056</a>
+<a href="#17057" id="17057">17057</a>
+<a href="#17058" id="17058">17058</a>
+<a href="#17059" id="17059">17059</a>
+<a href="#17060" id="17060">17060</a>
+<a href="#17061" id="17061">17061</a>
+<a href="#17062" id="17062">17062</a>
+<a href="#17063" id="17063">17063</a>
+<a href="#17064" id="17064">17064</a>
+<a href="#17065" id="17065">17065</a>
+<a href="#17066" id="17066">17066</a>
+<a href="#17067" id="17067">17067</a>
+<a href="#17068" id="17068">17068</a>
+<a href="#17069" id="17069">17069</a>
+<a href="#17070" id="17070">17070</a>
+<a href="#17071" id="17071">17071</a>
+<a href="#17072" id="17072">17072</a>
+<a href="#17073" id="17073">17073</a>
+<a href="#17074" id="17074">17074</a>
+<a href="#17075" id="17075">17075</a>
+<a href="#17076" id="17076">17076</a>
+<a href="#17077" id="17077">17077</a>
+<a href="#17078" id="17078">17078</a>
+<a href="#17079" id="17079">17079</a>
+<a href="#17080" id="17080">17080</a>
+<a href="#17081" id="17081">17081</a>
+<a href="#17082" id="17082">17082</a>
+<a href="#17083" id="17083">17083</a>
+<a href="#17084" id="17084">17084</a>
+<a href="#17085" id="17085">17085</a>
+<a href="#17086" id="17086">17086</a>
+<a href="#17087" id="17087">17087</a>
+<a href="#17088" id="17088">17088</a>
+<a href="#17089" id="17089">17089</a>
+<a href="#17090" id="17090">17090</a>
+<a href="#17091" id="17091">17091</a>
+<a href="#17092" id="17092">17092</a>
+<a href="#17093" id="17093">17093</a>
+<a href="#17094" id="17094">17094</a>
+<a href="#17095" id="17095">17095</a>
+<a href="#17096" id="17096">17096</a>
+<a href="#17097" id="17097">17097</a>
+<a href="#17098" id="17098">17098</a>
+<a href="#17099" id="17099">17099</a>
+<a href="#17100" id="17100">17100</a>
+<a href="#17101" id="17101">17101</a>
+<a href="#17102" id="17102">17102</a>
+<a href="#17103" id="17103">17103</a>
+<a href="#17104" id="17104">17104</a>
+<a href="#17105" id="17105">17105</a>
+<a href="#17106" id="17106">17106</a>
+<a href="#17107" id="17107">17107</a>
+<a href="#17108" id="17108">17108</a>
+<a href="#17109" id="17109">17109</a>
+<a href="#17110" id="17110">17110</a>
+<a href="#17111" id="17111">17111</a>
+<a href="#17112" id="17112">17112</a>
+<a href="#17113" id="17113">17113</a>
+<a href="#17114" id="17114">17114</a>
+<a href="#17115" id="17115">17115</a>
+<a href="#17116" id="17116">17116</a>
+<a href="#17117" id="17117">17117</a>
+<a href="#17118" id="17118">17118</a>
+<a href="#17119" id="17119">17119</a>
+<a href="#17120" id="17120">17120</a>
+<a href="#17121" id="17121">17121</a>
+<a href="#17122" id="17122">17122</a>
+<a href="#17123" id="17123">17123</a>
+<a href="#17124" id="17124">17124</a>
+<a href="#17125" id="17125">17125</a>
+<a href="#17126" id="17126">17126</a>
+<a href="#17127" id="17127">17127</a>
+<a href="#17128" id="17128">17128</a>
+<a href="#17129" id="17129">17129</a>
+<a href="#17130" id="17130">17130</a>
+<a href="#17131" id="17131">17131</a>
+<a href="#17132" id="17132">17132</a>
+<a href="#17133" id="17133">17133</a>
+<a href="#17134" id="17134">17134</a>
+<a href="#17135" id="17135">17135</a>
+<a href="#17136" id="17136">17136</a>
+<a href="#17137" id="17137">17137</a>
+<a href="#17138" id="17138">17138</a>
+<a href="#17139" id="17139">17139</a>
+<a href="#17140" id="17140">17140</a>
+<a href="#17141" id="17141">17141</a>
+<a href="#17142" id="17142">17142</a>
+<a href="#17143" id="17143">17143</a>
+<a href="#17144" id="17144">17144</a>
+<a href="#17145" id="17145">17145</a>
+<a href="#17146" id="17146">17146</a>
+<a href="#17147" id="17147">17147</a>
+<a href="#17148" id="17148">17148</a>
+<a href="#17149" id="17149">17149</a>
+<a href="#17150" id="17150">17150</a>
+<a href="#17151" id="17151">17151</a>
+<a href="#17152" id="17152">17152</a>
+<a href="#17153" id="17153">17153</a>
+<a href="#17154" id="17154">17154</a>
+<a href="#17155" id="17155">17155</a>
+<a href="#17156" id="17156">17156</a>
+<a href="#17157" id="17157">17157</a>
+<a href="#17158" id="17158">17158</a>
+<a href="#17159" id="17159">17159</a>
+<a href="#17160" id="17160">17160</a>
+<a href="#17161" id="17161">17161</a>
+<a href="#17162" id="17162">17162</a>
+<a href="#17163" id="17163">17163</a>
+<a href="#17164" id="17164">17164</a>
+<a href="#17165" id="17165">17165</a>
+<a href="#17166" id="17166">17166</a>
+<a href="#17167" id="17167">17167</a>
+<a href="#17168" id="17168">17168</a>
+<a href="#17169" id="17169">17169</a>
+<a href="#17170" id="17170">17170</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2018-2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="doccomment">//! 🥧 Savoury implementation of the QUIC transport protocol and HTTP/3.
+//!
+//! [quiche] is an implementation of the QUIC transport protocol and HTTP/3 as
+//! specified by the [IETF]. It provides a low level API for processing QUIC
+//! packets and handling connection state. The application is responsible for
+//! providing I/O (e.g. sockets handling) as well as an event loop with support
+//! for timers.
+//!
+//! [quiche]: https://github.com/cloudflare/quiche/
+//! [ietf]: https://quicwg.org/
+//!
+//! ## Configuring connections
+//!
+//! The first step in establishing a QUIC connection using quiche is creating a
+//! [`Config`] object:
+//!
+//! ```
+//! let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+//! config.set_application_protos(&amp;[b"example-proto"]);
+//!
+//! // Additional configuration specific to application and use case...
+//! # Ok::&lt;(), quiche::Error&gt;(())
+//! ```
+//!
+//! The [`Config`] object controls important aspects of the QUIC connection such
+//! as QUIC version, ALPN IDs, flow control, congestion control, idle timeout
+//! and other properties or features.
+//!
+//! QUIC is a general-purpose transport protocol and there are several
+//! configuration properties where there is no reasonable default value. For
+//! example, the permitted number of concurrent streams of any particular type
+//! is dependent on the application running over QUIC, and other use-case
+//! specific concerns.
+//!
+//! quiche defaults several properties to zero, applications most likely need
+//! to set these to something else to satisfy their needs using the following:
+//!
+//! - [`set_initial_max_streams_bidi()`]
+//! - [`set_initial_max_streams_uni()`]
+//! - [`set_initial_max_data()`]
+//! - [`set_initial_max_stream_data_bidi_local()`]
+//! - [`set_initial_max_stream_data_bidi_remote()`]
+//! - [`set_initial_max_stream_data_uni()`]
+//!
+//! [`Config`] also holds TLS configuration. This can be changed by mutators on
+//! the an existing object, or by constructing a TLS context manually and
+//! creating a configuration using [`with_boring_ssl_ctx_builder()`].
+//!
+//! A configuration object can be shared among multiple connections.
+//!
+//! ### Connection setup
+//!
+//! On the client-side the [`connect()`] utility function can be used to create
+//! a new connection, while [`accept()`] is for servers:
+//!
+//! ```
+//! # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+//! # let server_name = "quic.tech";
+//! # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+//! # let peer = "127.0.0.1:1234".parse().unwrap();
+//! # let local = "127.0.0.1:4321".parse().unwrap();
+//! // Client connection.
+//! let conn =
+//!     quiche::connect(Some(&amp;server_name), &amp;scid, local, peer, &amp;mut config)?;
+//!
+//! // Server connection.
+//! # let peer = "127.0.0.1:1234".parse().unwrap();
+//! # let local = "127.0.0.1:4321".parse().unwrap();
+//! let conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+//! # Ok::&lt;(), quiche::Error&gt;(())
+//! ```
+//!
+//! In both cases, the application is responsible for generating a new source
+//! connection ID that will be used to identify the new connection.
+//!
+//! The application also need to pass the address of the remote peer of the
+//! connection: in the case of a client that would be the address of the server
+//! it is trying to connect to, and for a server that is the address of the
+//! client that initiated the connection.
+//!
+//! ## Handling incoming packets
+//!
+//! Using the connection's [`recv()`] method the application can process
+//! incoming packets that belong to that connection from the network:
+//!
+//! ```no_run
+//! # let mut buf = [0; 512];
+//! # let socket = std::net::UdpSocket::bind("127.0.0.1:0").unwrap();
+//! # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+//! # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+//! # let peer = "127.0.0.1:1234".parse().unwrap();
+//! # let local = "127.0.0.1:4321".parse().unwrap();
+//! # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+//! let to = socket.local_addr().unwrap();
+//!
+//! loop {
+//!     let (read, from) = socket.recv_from(&amp;mut buf).unwrap();
+//!
+//!     let recv_info = quiche::RecvInfo { from, to };
+//!
+//!     let read = match conn.recv(&amp;mut buf[..read], recv_info) {
+//!         Ok(v) =&gt; v,
+//!
+//!         Err(quiche::Error::Done) =&gt; {
+//!             // Done reading.
+//!             break;
+//!         },
+//!
+//!         Err(e) =&gt; {
+//!             // An error occurred, handle it.
+//!             break;
+//!         },
+//!     };
+//! }
+//! # Ok::&lt;(), quiche::Error&gt;(())
+//! ```
+//!
+//! The application has to pass a [`RecvInfo`] structure in order to provide
+//! additional information about the received packet (such as the address it
+//! was received from).
+//!
+//! ## Generating outgoing packets
+//!
+//! Outgoing packet are generated using the connection's [`send()`] method
+//! instead:
+//!
+//! ```no_run
+//! # let mut out = [0; 512];
+//! # let socket = std::net::UdpSocket::bind("127.0.0.1:0").unwrap();
+//! # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+//! # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+//! # let peer = "127.0.0.1:1234".parse().unwrap();
+//! # let local = "127.0.0.1:4321".parse().unwrap();
+//! # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+//! loop {
+//!     let (write, send_info) = match conn.send(&amp;mut out) {
+//!         Ok(v) =&gt; v,
+//!
+//!         Err(quiche::Error::Done) =&gt; {
+//!             // Done writing.
+//!             break;
+//!         },
+//!
+//!         Err(e) =&gt; {
+//!             // An error occurred, handle it.
+//!             break;
+//!         },
+//!     };
+//!
+//!     socket.send_to(&amp;out[..write], &amp;send_info.to).unwrap();
+//! }
+//! # Ok::&lt;(), quiche::Error&gt;(())
+//! ```
+//!
+//! The application will be provided with a [`SendInfo`] structure providing
+//! additional information about the newly created packet (such as the address
+//! the packet should be sent to).
+//!
+//! When packets are sent, the application is responsible for maintaining a
+//! timer to react to time-based connection events. The timer expiration can be
+//! obtained using the connection's [`timeout()`] method.
+//!
+//! ```
+//! # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+//! # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+//! # let peer = "127.0.0.1:1234".parse().unwrap();
+//! # let local = "127.0.0.1:4321".parse().unwrap();
+//! # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+//! let timeout = conn.timeout();
+//! # Ok::&lt;(), quiche::Error&gt;(())
+//! ```
+//!
+//! The application is responsible for providing a timer implementation, which
+//! can be specific to the operating system or networking framework used. When
+//! a timer expires, the connection's [`on_timeout()`] method should be called,
+//! after which additional packets might need to be sent on the network:
+//!
+//! ```no_run
+//! # let mut out = [0; 512];
+//! # let socket = std::net::UdpSocket::bind("127.0.0.1:0").unwrap();
+//! # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+//! # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+//! # let peer = "127.0.0.1:1234".parse().unwrap();
+//! # let local = "127.0.0.1:4321".parse().unwrap();
+//! # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+//! // Timeout expired, handle it.
+//! conn.on_timeout();
+//!
+//! // Send more packets as needed after timeout.
+//! loop {
+//!     let (write, send_info) = match conn.send(&amp;mut out) {
+//!         Ok(v) =&gt; v,
+//!
+//!         Err(quiche::Error::Done) =&gt; {
+//!             // Done writing.
+//!             break;
+//!         },
+//!
+//!         Err(e) =&gt; {
+//!             // An error occurred, handle it.
+//!             break;
+//!         },
+//!     };
+//!
+//!     socket.send_to(&amp;out[..write], &amp;send_info.to).unwrap();
+//! }
+//! # Ok::&lt;(), quiche::Error&gt;(())
+//! ```
+//!
+//! ### Pacing
+//!
+//! It is recommended that applications [pace] sending of outgoing packets to
+//! avoid creating packet bursts that could cause short-term congestion and
+//! losses in the network.
+//!
+//! quiche exposes pacing hints for outgoing packets through the [`at`] field
+//! of the [`SendInfo`] structure that is returned by the [`send()`] method.
+//! This field represents the time when a specific packet should be sent into
+//! the network.
+//!
+//! Applications can use these hints by artificially delaying the sending of
+//! packets through platform-specific mechanisms (such as the [`SO_TXTIME`]
+//! socket option on Linux), or custom methods (for example by using user-space
+//! timers).
+//!
+//! [pace]: https://datatracker.ietf.org/doc/html/rfc9002#section-7.7
+//! [`SO_TXTIME`]: https://man7.org/linux/man-pages/man8/tc-etf.8.html
+//!
+//! ## Sending and receiving stream data
+//!
+//! After some back and forth, the connection will complete its handshake and
+//! will be ready for sending or receiving application data.
+//!
+//! Data can be sent on a stream by using the [`stream_send()`] method:
+//!
+//! ```no_run
+//! # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+//! # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+//! # let peer = "127.0.0.1:1234".parse().unwrap();
+//! # let local = "127.0.0.1:4321".parse().unwrap();
+//! # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+//! if conn.is_established() {
+//!     // Handshake completed, send some data on stream 0.
+//!     conn.stream_send(0, b"hello", true)?;
+//! }
+//! # Ok::&lt;(), quiche::Error&gt;(())
+//! ```
+//!
+//! The application can check whether there are any readable streams by using
+//! the connection's [`readable()`] method, which returns an iterator over all
+//! the streams that have outstanding data to read.
+//!
+//! The [`stream_recv()`] method can then be used to retrieve the application
+//! data from the readable stream:
+//!
+//! ```no_run
+//! # let mut buf = [0; 512];
+//! # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+//! # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+//! # let peer = "127.0.0.1:1234".parse().unwrap();
+//! # let local = "127.0.0.1:4321".parse().unwrap();
+//! # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+//! if conn.is_established() {
+//!     // Iterate over readable streams.
+//!     for stream_id in conn.readable() {
+//!         // Stream is readable, read until there's no more data.
+//!         while let Ok((read, fin)) = conn.stream_recv(stream_id, &amp;mut buf) {
+//!             println!("Got {} bytes on stream {}", read, stream_id);
+//!         }
+//!     }
+//! }
+//! # Ok::&lt;(), quiche::Error&gt;(())
+//! ```
+//!
+//! ## HTTP/3
+//!
+//! The quiche [HTTP/3 module] provides a high level API for sending and
+//! receiving HTTP requests and responses on top of the QUIC transport protocol.
+//!
+//! [`Config`]: https://docs.quic.tech/quiche/struct.Config.html
+//! [`set_initial_max_streams_bidi()`]: https://docs.rs/quiche/latest/quiche/struct.Config.html#method.set_initial_max_streams_bidi
+//! [`set_initial_max_streams_uni()`]: https://docs.rs/quiche/latest/quiche/struct.Config.html#method.set_initial_max_streams_uni
+//! [`set_initial_max_data()`]: https://docs.rs/quiche/latest/quiche/struct.Config.html#method.set_initial_max_data
+//! [`set_initial_max_stream_data_bidi_local()`]: https://docs.rs/quiche/latest/quiche/struct.Config.html#method.set_initial_max_stream_data_bidi_local
+//! [`set_initial_max_stream_data_bidi_remote()`]: https://docs.rs/quiche/latest/quiche/struct.Config.html#method.set_initial_max_stream_data_bidi_remote
+//! [`set_initial_max_stream_data_uni()`]: https://docs.rs/quiche/latest/quiche/struct.Config.html#method.set_initial_max_stream_data_uni
+//! [`with_boring_ssl_ctx_builder()`]: https://docs.quic.tech/quiche/struct.Config.html#method.with_boring_ssl_ctx_builder
+//! [`connect()`]: fn.connect.html
+//! [`accept()`]: fn.accept.html
+//! [`recv()`]: struct.Connection.html#method.recv
+//! [`RecvInfo`]: struct.RecvInfo.html
+//! [`send()`]: struct.Connection.html#method.send
+//! [`SendInfo`]: struct.SendInfo.html
+//! [`at`]: struct.SendInfo.html#structfield.at
+//! [`timeout()`]: struct.Connection.html#method.timeout
+//! [`on_timeout()`]: struct.Connection.html#method.on_timeout
+//! [`stream_send()`]: struct.Connection.html#method.stream_send
+//! [`readable()`]: struct.Connection.html#method.readable
+//! [`stream_recv()`]: struct.Connection.html#method.stream_recv
+//! [HTTP/3 module]: h3/index.html
+//!
+//! ## Congestion Control
+//!
+//! The quiche library provides a high-level API for configuring which
+//! congestion control algorithm to use throughout the QUIC connection.
+//!
+//! When a QUIC connection is created, the application can optionally choose
+//! which CC algorithm to use. See [`CongestionControlAlgorithm`] for currently
+//! available congestion control algorithms.
+//!
+//! For example:
+//!
+//! ```
+//! let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION).unwrap();
+//! config.set_cc_algorithm(quiche::CongestionControlAlgorithm::Reno);
+//! ```
+//!
+//! Alternatively, you can configure the congestion control algorithm to use
+//! by its name.
+//!
+//! ```
+//! let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION).unwrap();
+//! config.set_cc_algorithm_name("reno").unwrap();
+//! ```
+//!
+//! Note that the CC algorithm should be configured before calling [`connect()`]
+//! or [`accept()`]. Otherwise the connection will use a default CC algorithm.
+//!
+//! [`CongestionControlAlgorithm`]: enum.CongestionControlAlgorithm.html
+//!
+//! ## Feature flags
+//!
+//! quiche defines a number of [feature flags] to reduce the amount of compiled
+//! code and dependencies:
+//!
+//! * `boringssl-vendored` (default): Build the vendored BoringSSL library.
+//!
+//! * `boringssl-boring-crate`: Use the BoringSSL library provided by the
+//!   [boring] crate. It takes precedence over `boringssl-vendored` if both
+//!   features are enabled.
+//!
+//! * `pkg-config-meta`: Generate pkg-config metadata file for libquiche.
+//!
+//! * `ffi`: Build and expose the FFI API.
+//!
+//! * `qlog`: Enable support for the [qlog] logging format.
+//!
+//! [feature flags]: https://doc.rust-lang.org/cargo/reference/manifest.html#the-features-section
+//! [boring]: https://crates.io/crates/boring
+//! [qlog]: https://datatracker.ietf.org/doc/html/draft-ietf-quic-qlog-main-schema
+
+</span><span class="attr">#![allow(clippy::upper_case_acronyms)]
+#![warn(missing_docs)]
+#![cfg_attr(docsrs, feature(doc_cfg))]
+
+#[macro_use]
+</span><span class="kw">extern crate </span>log;
+
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::connectivity::ConnectivityEventType;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::connectivity::TransportOwner;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::quic::RecoveryEventType;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::quic::TransportEventType;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::DataRecipient;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::Event;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::EventData;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::EventImportance;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::EventType;
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::RawInfo;
+<span class="kw">use </span>stream::StreamPriorityKey;
+
+<span class="kw">use </span>std::cmp;
+<span class="kw">use </span>std::convert::TryInto;
+<span class="kw">use </span>std::time;
+
+<span class="kw">use </span>std::sync::Arc;
+
+<span class="kw">use </span>std::net::SocketAddr;
+
+<span class="kw">use </span>std::str::FromStr;
+
+<span class="kw">use </span>std::collections::HashSet;
+<span class="kw">use </span>std::collections::VecDeque;
+
+<span class="kw">use </span>smallvec::SmallVec;
+
+<span class="doccomment">/// The current QUIC wire version.
+</span><span class="kw">pub const </span>PROTOCOL_VERSION: u32 = PROTOCOL_VERSION_V1;
+
+<span class="doccomment">/// Supported QUIC versions.
+</span><span class="kw">const </span>PROTOCOL_VERSION_V1: u32 = <span class="number">0x0000_0001</span>;
+
+<span class="doccomment">/// The maximum length of a connection ID.
+</span><span class="kw">pub const </span>MAX_CONN_ID_LEN: usize = <span class="kw">crate</span>::packet::MAX_CID_LEN <span class="kw">as </span>usize;
+
+<span class="doccomment">/// The minimum length of Initial packets sent by a client.
+</span><span class="kw">pub const </span>MIN_CLIENT_INITIAL_LEN: usize = <span class="number">1200</span>;
+
+<span class="attr">#[cfg(not(feature = <span class="string">"fuzzing"</span>))]
+</span><span class="kw">const </span>PAYLOAD_MIN_LEN: usize = <span class="number">4</span>;
+
+<span class="attr">#[cfg(feature = <span class="string">"fuzzing"</span>)]
+</span><span class="comment">// Due to the fact that in fuzzing mode we use a zero-length AEAD tag (which
+// would normally be 16 bytes), we need to adjust the minimum payload size to
+// account for that.
+</span><span class="kw">const </span>PAYLOAD_MIN_LEN: usize = <span class="number">20</span>;
+
+<span class="comment">// PATH_CHALLENGE (9 bytes) + AEAD tag (16 bytes).
+</span><span class="kw">const </span>MIN_PROBING_SIZE: usize = <span class="number">25</span>;
+
+<span class="kw">const </span>MAX_AMPLIFICATION_FACTOR: usize = <span class="number">3</span>;
+
+<span class="comment">// The maximum number of tracked packet number ranges that need to be acked.
+//
+// This represents more or less how many ack blocks can fit in a typical packet.
+</span><span class="kw">const </span>MAX_ACK_RANGES: usize = <span class="number">68</span>;
+
+<span class="comment">// The highest possible stream ID allowed.
+</span><span class="kw">const </span>MAX_STREAM_ID: u64 = <span class="number">1 </span>&lt;&lt; <span class="number">60</span>;
+
+<span class="comment">// The default max_datagram_size used in congestion control.
+</span><span class="kw">const </span>MAX_SEND_UDP_PAYLOAD_SIZE: usize = <span class="number">1200</span>;
+
+<span class="comment">// The default length of DATAGRAM queues.
+</span><span class="kw">const </span>DEFAULT_MAX_DGRAM_QUEUE_LEN: usize = <span class="number">0</span>;
+
+<span class="comment">// The default length of PATH_CHALLENGE receive queue.
+</span><span class="kw">const </span>DEFAULT_MAX_PATH_CHALLENGE_RX_QUEUE_LEN: usize = <span class="number">3</span>;
+
+<span class="comment">// The DATAGRAM standard recommends either none or 65536 as maximum DATAGRAM
+// frames size. We enforce the recommendation for forward compatibility.
+</span><span class="kw">const </span>MAX_DGRAM_FRAME_SIZE: u64 = <span class="number">65536</span>;
+
+<span class="comment">// The length of the payload length field.
+</span><span class="kw">const </span>PAYLOAD_LENGTH_LEN: usize = <span class="number">2</span>;
+
+<span class="comment">// The number of undecryptable that can be buffered.
+</span><span class="kw">const </span>MAX_UNDECRYPTABLE_PACKETS: usize = <span class="number">10</span>;
+
+<span class="kw">const </span>RESERVED_VERSION_MASK: u32 = <span class="number">0xfafafafa</span>;
+
+<span class="comment">// The default size of the receiver connection flow control window.
+</span><span class="kw">const </span>DEFAULT_CONNECTION_WINDOW: u64 = <span class="number">48 </span>* <span class="number">1024</span>;
+
+<span class="comment">// The maximum size of the receiver connection flow control window.
+</span><span class="kw">const </span>MAX_CONNECTION_WINDOW: u64 = <span class="number">24 </span>* <span class="number">1024 </span>* <span class="number">1024</span>;
+
+<span class="comment">// How much larger the connection flow control window need to be larger than
+// the stream flow control window.
+</span><span class="kw">const </span>CONNECTION_WINDOW_FACTOR: f64 = <span class="number">1.5</span>;
+
+<span class="comment">// How many probing packet timeouts do we tolerate before considering the path
+// validation as failed.
+</span><span class="kw">const </span>MAX_PROBING_TIMEOUTS: usize = <span class="number">3</span>;
+
+<span class="comment">// The default initial congestion window size in terms of packet count.
+</span><span class="kw">const </span>DEFAULT_INITIAL_CONGESTION_WINDOW_PACKETS: usize = <span class="number">10</span>;
+
+<span class="comment">// The maximum data offset that can be stored in a crypto stream.
+</span><span class="kw">const </span>MAX_CRYPTO_STREAM_OFFSET: u64 = <span class="number">1 </span>&lt;&lt; <span class="number">16</span>;
+
+<span class="doccomment">/// A specialized [`Result`] type for quiche operations.
+///
+/// This type is used throughout quiche's public API for any operation that
+/// can produce an error.
+///
+/// [`Result`]: https://doc.rust-lang.org/std/result/enum.Result.html
+</span><span class="kw">pub type </span><span class="prelude-ty">Result</span>&lt;T&gt; = std::result::Result&lt;T, Error&gt;;
+
+<span class="doccomment">/// A QUIC error.
+</span><span class="attr">#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+</span><span class="kw">pub enum </span>Error {
+    <span class="doccomment">/// There is no more work to do.
+    </span>Done,
+
+    <span class="doccomment">/// The provided buffer is too short.
+    </span>BufferTooShort,
+
+    <span class="doccomment">/// The provided packet cannot be parsed because its version is unknown.
+    </span>UnknownVersion,
+
+    <span class="doccomment">/// The provided packet cannot be parsed because it contains an invalid
+    /// frame.
+    </span>InvalidFrame,
+
+    <span class="doccomment">/// The provided packet cannot be parsed.
+    </span>InvalidPacket,
+
+    <span class="doccomment">/// The operation cannot be completed because the connection is in an
+    /// invalid state.
+    </span>InvalidState,
+
+    <span class="doccomment">/// The operation cannot be completed because the stream is in an
+    /// invalid state.
+    ///
+    /// The stream ID is provided as associated data.
+    </span>InvalidStreamState(u64),
+
+    <span class="doccomment">/// The peer's transport params cannot be parsed.
+    </span>InvalidTransportParam,
+
+    <span class="doccomment">/// A cryptographic operation failed.
+    </span>CryptoFail,
+
+    <span class="doccomment">/// The TLS handshake failed.
+    </span>TlsFail,
+
+    <span class="doccomment">/// The peer violated the local flow control limits.
+    </span>FlowControl,
+
+    <span class="doccomment">/// The peer violated the local stream limits.
+    </span>StreamLimit,
+
+    <span class="doccomment">/// The specified stream was stopped by the peer.
+    ///
+    /// The error code sent as part of the `STOP_SENDING` frame is provided as
+    /// associated data.
+    </span>StreamStopped(u64),
+
+    <span class="doccomment">/// The specified stream was reset by the peer.
+    ///
+    /// The error code sent as part of the `RESET_STREAM` frame is provided as
+    /// associated data.
+    </span>StreamReset(u64),
+
+    <span class="doccomment">/// The received data exceeds the stream's final size.
+    </span>FinalSize,
+
+    <span class="doccomment">/// Error in congestion control.
+    </span>CongestionControl,
+
+    <span class="doccomment">/// Too many identifiers were provided.
+    </span>IdLimit,
+
+    <span class="doccomment">/// Not enough available identifiers.
+    </span>OutOfIdentifiers,
+
+    <span class="doccomment">/// Error in key update.
+    </span>KeyUpdate,
+
+    <span class="doccomment">/// The peer sent more data in CRYPTO frames than we can buffer.
+    </span>CryptoBufferExceeded,
+}
+
+<span class="doccomment">/// QUIC error codes sent on the wire.
+///
+/// As defined in [RFC9000](https://www.rfc-editor.org/rfc/rfc9000.html#name-error-codes).
+</span><span class="kw">pub enum </span>WireErrorCode {
+    <span class="doccomment">/// An endpoint uses this with CONNECTION_CLOSE to signal that the
+    /// connection is being closed abruptly in the absence of any error.
+    </span>NoError              = <span class="number">0x0</span>,
+    <span class="doccomment">/// The endpoint encountered an internal error and cannot continue with the
+    /// connection.
+    </span>InternalError        = <span class="number">0x1</span>,
+    <span class="doccomment">/// The server refused to accept a new connection.
+    </span>ConnectionRefused    = <span class="number">0x2</span>,
+    <span class="doccomment">/// An endpoint received more data than it permitted in its advertised data
+    /// limits; see Section 4.
+    </span>FlowControlError     = <span class="number">0x3</span>,
+    <span class="doccomment">/// An endpoint received a frame for a stream identifier that exceeded its
+    /// advertised stream limit for the corresponding stream type.
+    </span>StreamLimitError     = <span class="number">0x4</span>,
+    <span class="doccomment">/// An endpoint received a frame for a stream that was not in a state that
+    /// permitted that frame.
+    </span>StreamStateError     = <span class="number">0x5</span>,
+    <span class="doccomment">/// (1) An endpoint received a STREAM frame containing data that exceeded
+    /// the previously established final size, (2) an endpoint received a
+    /// STREAM frame or a RESET_STREAM frame containing a final size that
+    /// was lower than the size of stream data that was already received, or
+    /// (3) an endpoint received a STREAM frame or a RESET_STREAM frame
+    /// containing a different final size to the one already established.
+    </span>FinalSizeError       = <span class="number">0x6</span>,
+    <span class="doccomment">/// An endpoint received a frame that was badly formatted -- for instance, a
+    /// frame of an unknown type or an ACK frame that has more
+    /// acknowledgment ranges than the remainder of the packet could carry.
+    </span>FrameEncodingError   = <span class="number">0x7</span>,
+    <span class="doccomment">/// An endpoint received transport parameters that were badly formatted,
+    /// included an invalid value, omitted a mandatory transport parameter,
+    /// included a forbidden transport parameter, or were otherwise in
+    /// error.
+    </span>TransportParameterError = <span class="number">0x8</span>,
+    <span class="doccomment">/// An endpoint received transport parameters that were badly formatted,
+    /// included an invalid value, omitted a mandatory transport parameter,
+    /// included a forbidden transport parameter, or were otherwise in
+    /// error.
+    </span>ConnectionIdLimitError = <span class="number">0x9</span>,
+    <span class="doccomment">/// An endpoint detected an error with protocol compliance that was not
+    /// covered by more specific error codes.
+    </span>ProtocolViolation    = <span class="number">0xa</span>,
+    <span class="doccomment">/// A server received a client Initial that contained an invalid Token
+    /// field.
+    </span>InvalidToken         = <span class="number">0xb</span>,
+    <span class="doccomment">/// The application or application protocol caused the connection to be
+    /// closed.
+    </span>ApplicationError     = <span class="number">0xc</span>,
+    <span class="doccomment">/// An endpoint has received more data in CRYPTO frames than it can buffer.
+    </span>CryptoBufferExceeded = <span class="number">0xd</span>,
+    <span class="doccomment">/// An endpoint detected errors in performing key updates.
+    </span>KeyUpdateError       = <span class="number">0xe</span>,
+    <span class="doccomment">/// An endpoint has reached the confidentiality or integrity limit for the
+    /// AEAD algorithm used by the given connection.
+    </span>AeadLimitReached     = <span class="number">0xf</span>,
+    <span class="doccomment">/// An endpoint has determined that the network path is incapable of
+    /// supporting QUIC. An endpoint is unlikely to receive a
+    /// CONNECTION_CLOSE frame carrying this code except when the path does
+    /// not support a large enough MTU.
+    </span>NoViablePath         = <span class="number">0x10</span>,
+}
+
+<span class="kw">impl </span>Error {
+    <span class="kw">fn </span>to_wire(<span class="self">self</span>) -&gt; u64 {
+        <span class="kw">match </span><span class="self">self </span>{
+            Error::Done =&gt; WireErrorCode::NoError <span class="kw">as </span>u64,
+            Error::InvalidFrame =&gt; WireErrorCode::FrameEncodingError <span class="kw">as </span>u64,
+            Error::InvalidStreamState(..) =&gt;
+                WireErrorCode::StreamStateError <span class="kw">as </span>u64,
+            Error::InvalidTransportParam =&gt;
+                WireErrorCode::TransportParameterError <span class="kw">as </span>u64,
+            Error::FlowControl =&gt; WireErrorCode::FlowControlError <span class="kw">as </span>u64,
+            Error::StreamLimit =&gt; WireErrorCode::StreamLimitError <span class="kw">as </span>u64,
+            Error::IdLimit =&gt; WireErrorCode::ConnectionIdLimitError <span class="kw">as </span>u64,
+            Error::FinalSize =&gt; WireErrorCode::FinalSizeError <span class="kw">as </span>u64,
+            Error::CryptoBufferExceeded =&gt;
+                WireErrorCode::CryptoBufferExceeded <span class="kw">as </span>u64,
+            Error::KeyUpdate =&gt; WireErrorCode::KeyUpdateError <span class="kw">as </span>u64,
+            <span class="kw">_ </span>=&gt; WireErrorCode::ProtocolViolation <span class="kw">as </span>u64,
+        }
+    }
+
+    <span class="attr">#[cfg(feature = <span class="string">"ffi"</span>)]
+    </span><span class="kw">fn </span>to_c(<span class="self">self</span>) -&gt; libc::ssize_t {
+        <span class="kw">match </span><span class="self">self </span>{
+            Error::Done =&gt; -<span class="number">1</span>,
+            Error::BufferTooShort =&gt; -<span class="number">2</span>,
+            Error::UnknownVersion =&gt; -<span class="number">3</span>,
+            Error::InvalidFrame =&gt; -<span class="number">4</span>,
+            Error::InvalidPacket =&gt; -<span class="number">5</span>,
+            Error::InvalidState =&gt; -<span class="number">6</span>,
+            Error::InvalidStreamState(<span class="kw">_</span>) =&gt; -<span class="number">7</span>,
+            Error::InvalidTransportParam =&gt; -<span class="number">8</span>,
+            Error::CryptoFail =&gt; -<span class="number">9</span>,
+            Error::TlsFail =&gt; -<span class="number">10</span>,
+            Error::FlowControl =&gt; -<span class="number">11</span>,
+            Error::StreamLimit =&gt; -<span class="number">12</span>,
+            Error::FinalSize =&gt; -<span class="number">13</span>,
+            Error::CongestionControl =&gt; -<span class="number">14</span>,
+            Error::StreamStopped { .. } =&gt; -<span class="number">15</span>,
+            Error::StreamReset { .. } =&gt; -<span class="number">16</span>,
+            Error::IdLimit =&gt; -<span class="number">17</span>,
+            Error::OutOfIdentifiers =&gt; -<span class="number">18</span>,
+            Error::KeyUpdate =&gt; -<span class="number">19</span>,
+            Error::CryptoBufferExceeded =&gt; -<span class="number">20</span>,
+        }
+    }
+}
+
+<span class="kw">impl </span>std::fmt::Display <span class="kw">for </span>Error {
+    <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+        <span class="macro">write!</span>(f, <span class="string">"{self:?}"</span>)
+    }
+}
+
+<span class="kw">impl </span>std::error::Error <span class="kw">for </span>Error {
+    <span class="kw">fn </span>source(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>(<span class="kw">dyn </span>std::error::Error + <span class="lifetime">'static</span>)&gt; {
+        <span class="prelude-val">None
+    </span>}
+}
+
+<span class="kw">impl </span>std::convert::From&lt;octets::BufferTooShortError&gt; <span class="kw">for </span>Error {
+    <span class="kw">fn </span>from(_err: octets::BufferTooShortError) -&gt; <span class="self">Self </span>{
+        Error::BufferTooShort
+    }
+}
+
+<span class="doccomment">/// Ancillary information about incoming packets.
+</span><span class="attr">#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+</span><span class="kw">pub struct </span>RecvInfo {
+    <span class="doccomment">/// The remote address the packet was received from.
+    </span><span class="kw">pub </span>from: SocketAddr,
+
+    <span class="doccomment">/// The local address the packet was received on.
+    </span><span class="kw">pub </span>to: SocketAddr,
+}
+
+<span class="doccomment">/// Ancillary information about outgoing packets.
+</span><span class="attr">#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+</span><span class="kw">pub struct </span>SendInfo {
+    <span class="doccomment">/// The local address the packet should be sent from.
+    </span><span class="kw">pub </span>from: SocketAddr,
+
+    <span class="doccomment">/// The remote address the packet should be sent to.
+    </span><span class="kw">pub </span>to: SocketAddr,
+
+    <span class="doccomment">/// The time to send the packet out.
+    ///
+    /// See [Pacing] for more details.
+    ///
+    /// [Pacing]: index.html#pacing
+    </span><span class="kw">pub </span>at: time::Instant,
+}
+
+<span class="doccomment">/// Represents information carried by `CONNECTION_CLOSE` frames.
+</span><span class="attr">#[derive(Clone, Debug, PartialEq, Eq)]
+</span><span class="kw">pub struct </span>ConnectionError {
+    <span class="doccomment">/// Whether the error came from the application or the transport layer.
+    </span><span class="kw">pub </span>is_app: bool,
+
+    <span class="doccomment">/// The error code carried by the `CONNECTION_CLOSE` frame.
+    </span><span class="kw">pub </span>error_code: u64,
+
+    <span class="doccomment">/// The reason carried by the `CONNECTION_CLOSE` frame.
+    </span><span class="kw">pub </span>reason: Vec&lt;u8&gt;,
+}
+
+<span class="doccomment">/// The side of the stream to be shut down.
+///
+/// This should be used when calling [`stream_shutdown()`].
+///
+/// [`stream_shutdown()`]: struct.Connection.html#method.stream_shutdown
+</span><span class="attr">#[repr(C)]
+#[derive(PartialEq, Eq)]
+</span><span class="kw">pub enum </span>Shutdown {
+    <span class="doccomment">/// Stop receiving stream data.
+    </span>Read  = <span class="number">0</span>,
+
+    <span class="doccomment">/// Stop sending stream data.
+    </span>Write = <span class="number">1</span>,
+}
+
+<span class="doccomment">/// Qlog logging level.
+</span><span class="attr">#[repr(C)]
+#[cfg(feature = <span class="string">"qlog"</span>)]
+#[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"qlog"</span>)))]
+</span><span class="kw">pub enum </span>QlogLevel {
+    <span class="doccomment">/// Logs any events of Core importance.
+    </span>Core  = <span class="number">0</span>,
+
+    <span class="doccomment">/// Logs any events of Core and Base importance.
+    </span>Base  = <span class="number">1</span>,
+
+    <span class="doccomment">/// Logs any events of Core, Base and Extra importance
+    </span>Extra = <span class="number">2</span>,
+}
+
+<span class="doccomment">/// Stores configuration shared between multiple connections.
+</span><span class="kw">pub struct </span>Config {
+    local_transport_params: TransportParams,
+
+    version: u32,
+
+    tls_ctx: tls::Context,
+
+    application_protos: Vec&lt;Vec&lt;u8&gt;&gt;,
+
+    grease: bool,
+
+    cc_algorithm: CongestionControlAlgorithm,
+    initial_congestion_window_packets: usize,
+
+    pmtud: bool,
+
+    hystart: bool,
+
+    pacing: bool,
+    max_pacing_rate: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    dgram_recv_max_queue_len: usize,
+    dgram_send_max_queue_len: usize,
+
+    path_challenge_recv_max_queue_len: usize,
+
+    max_send_udp_payload_size: usize,
+
+    max_connection_window: u64,
+    max_stream_window: u64,
+
+    disable_dcid_reuse: bool,
+}
+
+<span class="comment">// See https://quicwg.org/base-drafts/rfc9000.html#section-15
+</span><span class="kw">fn </span>is_reserved_version(version: u32) -&gt; bool {
+    version &amp; RESERVED_VERSION_MASK == version
+}
+
+<span class="kw">impl </span>Config {
+    <span class="doccomment">/// Creates a config object with the given version.
+    ///
+    /// ## Examples:
+    ///
+    /// ```
+    /// let config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="kw">pub fn </span>new(version: u32) -&gt; <span class="prelude-ty">Result</span>&lt;Config&gt; {
+        <span class="self">Self</span>::with_tls_ctx(version, tls::Context::new()<span class="question-mark">?</span>)
+    }
+
+    <span class="doccomment">/// Creates a config object with the given version and
+    /// [`SslContextBuilder`].
+    ///
+    /// This is useful for applications that wish to manually configure
+    /// [`SslContextBuilder`].
+    ///
+    /// [`SslContextBuilder`]: https://docs.rs/boring/latest/boring/ssl/struct.SslContextBuilder.html
+    </span><span class="attr">#[cfg(feature = <span class="string">"boringssl-boring-crate"</span>)]
+    #[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"boringssl-boring-crate"</span>)))]
+    </span><span class="kw">pub fn </span>with_boring_ssl_ctx_builder(
+        version: u32, tls_ctx_builder: boring::ssl::SslContextBuilder,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;Config&gt; {
+        <span class="self">Self</span>::with_tls_ctx(version, tls::Context::from_boring(tls_ctx_builder))
+    }
+
+    <span class="kw">fn </span>with_tls_ctx(version: u32, tls_ctx: tls::Context) -&gt; <span class="prelude-ty">Result</span>&lt;Config&gt; {
+        <span class="kw">if </span>!is_reserved_version(version) &amp;&amp; !version_is_supported(version) {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::UnknownVersion);
+        }
+
+        <span class="prelude-val">Ok</span>(Config {
+            local_transport_params: TransportParams::default(),
+            version,
+            tls_ctx,
+            application_protos: Vec::new(),
+            grease: <span class="bool-val">true</span>,
+            cc_algorithm: CongestionControlAlgorithm::CUBIC,
+            initial_congestion_window_packets:
+                DEFAULT_INITIAL_CONGESTION_WINDOW_PACKETS,
+            pmtud: <span class="bool-val">false</span>,
+            hystart: <span class="bool-val">true</span>,
+            pacing: <span class="bool-val">true</span>,
+            max_pacing_rate: <span class="prelude-val">None</span>,
+
+            dgram_recv_max_queue_len: DEFAULT_MAX_DGRAM_QUEUE_LEN,
+            dgram_send_max_queue_len: DEFAULT_MAX_DGRAM_QUEUE_LEN,
+
+            path_challenge_recv_max_queue_len:
+                DEFAULT_MAX_PATH_CHALLENGE_RX_QUEUE_LEN,
+
+            max_send_udp_payload_size: MAX_SEND_UDP_PAYLOAD_SIZE,
+
+            max_connection_window: MAX_CONNECTION_WINDOW,
+            max_stream_window: stream::MAX_STREAM_WINDOW,
+
+            disable_dcid_reuse: <span class="bool-val">false</span>,
+        })
+    }
+
+    <span class="doccomment">/// Configures the given certificate chain.
+    ///
+    /// The content of `file` is parsed as a PEM-encoded leaf certificate,
+    /// followed by optional intermediate certificates.
+    ///
+    /// ## Examples:
+    ///
+    /// ```no_run
+    /// # let mut config = quiche::Config::new(0xbabababa)?;
+    /// config.load_cert_chain_from_pem_file("/path/to/cert.pem")?;
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="kw">pub fn </span>load_cert_chain_from_pem_file(<span class="kw-2">&amp;mut </span><span class="self">self</span>, file: <span class="kw-2">&amp;</span>str) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="self">self</span>.tls_ctx.use_certificate_chain_file(file)
+    }
+
+    <span class="doccomment">/// Configures the given private key.
+    ///
+    /// The content of `file` is parsed as a PEM-encoded private key.
+    ///
+    /// ## Examples:
+    ///
+    /// ```no_run
+    /// # let mut config = quiche::Config::new(0xbabababa)?;
+    /// config.load_priv_key_from_pem_file("/path/to/key.pem")?;
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="kw">pub fn </span>load_priv_key_from_pem_file(<span class="kw-2">&amp;mut </span><span class="self">self</span>, file: <span class="kw-2">&amp;</span>str) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="self">self</span>.tls_ctx.use_privkey_file(file)
+    }
+
+    <span class="doccomment">/// Specifies a file where trusted CA certificates are stored for the
+    /// purposes of certificate verification.
+    ///
+    /// The content of `file` is parsed as a PEM-encoded certificate chain.
+    ///
+    /// ## Examples:
+    ///
+    /// ```no_run
+    /// # let mut config = quiche::Config::new(0xbabababa)?;
+    /// config.load_verify_locations_from_file("/path/to/cert.pem")?;
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="kw">pub fn </span>load_verify_locations_from_file(<span class="kw-2">&amp;mut </span><span class="self">self</span>, file: <span class="kw-2">&amp;</span>str) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="self">self</span>.tls_ctx.load_verify_locations_from_file(file)
+    }
+
+    <span class="doccomment">/// Specifies a directory where trusted CA certificates are stored for the
+    /// purposes of certificate verification.
+    ///
+    /// The content of `dir` a set of PEM-encoded certificate chains.
+    ///
+    /// ## Examples:
+    ///
+    /// ```no_run
+    /// # let mut config = quiche::Config::new(0xbabababa)?;
+    /// config.load_verify_locations_from_directory("/path/to/certs")?;
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="kw">pub fn </span>load_verify_locations_from_directory(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, dir: <span class="kw-2">&amp;</span>str,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="self">self</span>.tls_ctx.load_verify_locations_from_directory(dir)
+    }
+
+    <span class="doccomment">/// Configures whether to verify the peer's certificate.
+    ///
+    /// The default value is `true` for client connections, and `false` for
+    /// server ones.
+    ///
+    /// Note that on the server-side, enabling verification of the peer will
+    /// trigger a certificate request and make authentication errors fatal, but
+    /// will still allow anonymous clients (i.e. clients that don't present a
+    /// certificate at all). Servers can check whether a client presented a
+    /// certificate by calling [`peer_cert()`] if they need to.
+    ///
+    /// [`peer_cert()`]: struct.Connection.html#method.peer_cert
+    </span><span class="kw">pub fn </span>verify_peer(<span class="kw-2">&amp;mut </span><span class="self">self</span>, verify: bool) {
+        <span class="self">self</span>.tls_ctx.set_verify(verify);
+    }
+
+    <span class="doccomment">/// Configures whether to do path MTU discovery.
+    ///
+    /// The default value is `false`.
+    </span><span class="kw">pub fn </span>discover_pmtu(<span class="kw-2">&amp;mut </span><span class="self">self</span>, discover: bool) {
+        <span class="self">self</span>.pmtud = discover;
+    }
+
+    <span class="doccomment">/// Configures whether to send GREASE values.
+    ///
+    /// The default value is `true`.
+    </span><span class="kw">pub fn </span>grease(<span class="kw-2">&amp;mut </span><span class="self">self</span>, grease: bool) {
+        <span class="self">self</span>.grease = grease;
+    }
+
+    <span class="doccomment">/// Enables logging of secrets.
+    ///
+    /// When logging is enabled, the [`set_keylog()`] method must be called on
+    /// the connection for its cryptographic secrets to be logged in the
+    /// [keylog] format to the specified writer.
+    ///
+    /// [`set_keylog()`]: struct.Connection.html#method.set_keylog
+    /// [keylog]: https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Key_Log_Format
+    </span><span class="kw">pub fn </span>log_keys(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="self">self</span>.tls_ctx.enable_keylog();
+    }
+
+    <span class="doccomment">/// Configures the session ticket key material.
+    ///
+    /// On the server this key will be used to encrypt and decrypt session
+    /// tickets, used to perform session resumption without server-side state.
+    ///
+    /// By default a key is generated internally, and rotated regularly, so
+    /// applications don't need to call this unless they need to use a
+    /// specific key (e.g. in order to support resumption across multiple
+    /// servers), in which case the application is also responsible for
+    /// rotating the key to provide forward secrecy.
+    </span><span class="kw">pub fn </span>set_ticket_key(<span class="kw-2">&amp;mut </span><span class="self">self</span>, key: <span class="kw-2">&amp;</span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="self">self</span>.tls_ctx.set_ticket_key(key)
+    }
+
+    <span class="doccomment">/// Enables sending or receiving early data.
+    </span><span class="kw">pub fn </span>enable_early_data(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="self">self</span>.tls_ctx.set_early_data_enabled(<span class="bool-val">true</span>);
+    }
+
+    <span class="doccomment">/// Configures the list of supported application protocols.
+    ///
+    /// On the client this configures the list of protocols to send to the
+    /// server as part of the ALPN extension.
+    ///
+    /// On the server this configures the list of supported protocols to match
+    /// against the client-supplied list.
+    ///
+    /// Applications must set a value, but no default is provided.
+    ///
+    /// ## Examples:
+    ///
+    /// ```
+    /// # let mut config = quiche::Config::new(0xbabababa)?;
+    /// config.set_application_protos(&amp;[b"http/1.1", b"http/0.9"]);
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="kw">pub fn </span>set_application_protos(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, protos_list: <span class="kw-2">&amp;</span>[<span class="kw-2">&amp;</span>[u8]],
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="self">self</span>.application_protos =
+            protos_list.iter().map(|s| s.to_vec()).collect();
+
+        <span class="self">self</span>.tls_ctx.set_alpn(protos_list)
+    }
+
+    <span class="doccomment">/// Configures the list of supported application protocols using wire
+    /// format.
+    ///
+    /// The list of protocols `protos` must be a series of non-empty, 8-bit
+    /// length-prefixed strings.
+    ///
+    /// See [`set_application_protos`](Self::set_application_protos) for more
+    /// background about application protocols.
+    ///
+    /// ## Examples:
+    ///
+    /// ```
+    /// # let mut config = quiche::Config::new(0xbabababa)?;
+    /// config.set_application_protos_wire_format(b"\x08http/1.1\x08http/0.9")?;
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="kw">pub fn </span>set_application_protos_wire_format(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, protos: <span class="kw-2">&amp;</span>[u8],
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(protos);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>protos_list = Vec::new();
+
+        <span class="kw">while let </span><span class="prelude-val">Ok</span>(proto) = b.get_bytes_with_u8_length() {
+            protos_list.push(proto.buf());
+        }
+
+        <span class="self">self</span>.set_application_protos(<span class="kw-2">&amp;</span>protos_list)
+    }
+
+    <span class="doccomment">/// Sets the `max_idle_timeout` transport parameter, in milliseconds.
+    ///
+    /// The default value is infinite, that is, no timeout is used.
+    </span><span class="kw">pub fn </span>set_max_idle_timeout(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) {
+        <span class="self">self</span>.local_transport_params.max_idle_timeout = v;
+    }
+
+    <span class="doccomment">/// Sets the `max_udp_payload_size transport` parameter.
+    ///
+    /// The default value is `65527`.
+    </span><span class="kw">pub fn </span>set_max_recv_udp_payload_size(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: usize) {
+        <span class="self">self</span>.local_transport_params.max_udp_payload_size = v <span class="kw">as </span>u64;
+    }
+
+    <span class="doccomment">/// Sets the maximum outgoing UDP payload size.
+    ///
+    /// The default and minimum value is `1200`.
+    </span><span class="kw">pub fn </span>set_max_send_udp_payload_size(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: usize) {
+        <span class="self">self</span>.max_send_udp_payload_size = cmp::max(v, MAX_SEND_UDP_PAYLOAD_SIZE);
+    }
+
+    <span class="doccomment">/// Sets the `initial_max_data` transport parameter.
+    ///
+    /// When set to a non-zero value quiche will only allow at most `v` bytes of
+    /// incoming stream data to be buffered for the whole connection (that is,
+    /// data that is not yet read by the application) and will allow more data
+    /// to be received as the buffer is consumed by the application.
+    ///
+    /// When set to zero, either explicitly or via the default, quiche will not
+    /// give any flow control to the peer, preventing it from sending any stream
+    /// data.
+    ///
+    /// The default value is `0`.
+    </span><span class="kw">pub fn </span>set_initial_max_data(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) {
+        <span class="self">self</span>.local_transport_params.initial_max_data = v;
+    }
+
+    <span class="doccomment">/// Sets the `initial_max_stream_data_bidi_local` transport parameter.
+    ///
+    /// When set to a non-zero value quiche will only allow at most `v` bytes
+    /// of incoming stream data to be buffered for each locally-initiated
+    /// bidirectional stream (that is, data that is not yet read by the
+    /// application) and will allow more data to be received as the buffer is
+    /// consumed by the application.
+    ///
+    /// When set to zero, either explicitly or via the default, quiche will not
+    /// give any flow control to the peer, preventing it from sending any stream
+    /// data.
+    ///
+    /// The default value is `0`.
+    </span><span class="kw">pub fn </span>set_initial_max_stream_data_bidi_local(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) {
+        <span class="self">self</span>.local_transport_params
+            .initial_max_stream_data_bidi_local = v;
+    }
+
+    <span class="doccomment">/// Sets the `initial_max_stream_data_bidi_remote` transport parameter.
+    ///
+    /// When set to a non-zero value quiche will only allow at most `v` bytes
+    /// of incoming stream data to be buffered for each remotely-initiated
+    /// bidirectional stream (that is, data that is not yet read by the
+    /// application) and will allow more data to be received as the buffer is
+    /// consumed by the application.
+    ///
+    /// When set to zero, either explicitly or via the default, quiche will not
+    /// give any flow control to the peer, preventing it from sending any stream
+    /// data.
+    ///
+    /// The default value is `0`.
+    </span><span class="kw">pub fn </span>set_initial_max_stream_data_bidi_remote(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) {
+        <span class="self">self</span>.local_transport_params
+            .initial_max_stream_data_bidi_remote = v;
+    }
+
+    <span class="doccomment">/// Sets the `initial_max_stream_data_uni` transport parameter.
+    ///
+    /// When set to a non-zero value quiche will only allow at most `v` bytes
+    /// of incoming stream data to be buffered for each unidirectional stream
+    /// (that is, data that is not yet read by the application) and will allow
+    /// more data to be received as the buffer is consumed by the application.
+    ///
+    /// When set to zero, either explicitly or via the default, quiche will not
+    /// give any flow control to the peer, preventing it from sending any stream
+    /// data.
+    ///
+    /// The default value is `0`.
+    </span><span class="kw">pub fn </span>set_initial_max_stream_data_uni(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) {
+        <span class="self">self</span>.local_transport_params.initial_max_stream_data_uni = v;
+    }
+
+    <span class="doccomment">/// Sets the `initial_max_streams_bidi` transport parameter.
+    ///
+    /// When set to a non-zero value quiche will only allow `v` number of
+    /// concurrent remotely-initiated bidirectional streams to be open at any
+    /// given time and will increase the limit automatically as streams are
+    /// completed.
+    ///
+    /// When set to zero, either explicitly or via the default, quiche will not
+    /// not allow the peer to open any bidirectional streams.
+    ///
+    /// A bidirectional stream is considered completed when all incoming data
+    /// has been read by the application (up to the `fin` offset) or the
+    /// stream's read direction has been shutdown, and all outgoing data has
+    /// been acked by the peer (up to the `fin` offset) or the stream's write
+    /// direction has been shutdown.
+    ///
+    /// The default value is `0`.
+    </span><span class="kw">pub fn </span>set_initial_max_streams_bidi(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) {
+        <span class="self">self</span>.local_transport_params.initial_max_streams_bidi = v;
+    }
+
+    <span class="doccomment">/// Sets the `initial_max_streams_uni` transport parameter.
+    ///
+    /// When set to a non-zero value quiche will only allow `v` number of
+    /// concurrent remotely-initiated unidirectional streams to be open at any
+    /// given time and will increase the limit automatically as streams are
+    /// completed.
+    ///
+    /// When set to zero, either explicitly or via the default, quiche will not
+    /// not allow the peer to open any unidirectional streams.
+    ///
+    /// A unidirectional stream is considered completed when all incoming data
+    /// has been read by the application (up to the `fin` offset) or the
+    /// stream's read direction has been shutdown.
+    ///
+    /// The default value is `0`.
+    </span><span class="kw">pub fn </span>set_initial_max_streams_uni(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) {
+        <span class="self">self</span>.local_transport_params.initial_max_streams_uni = v;
+    }
+
+    <span class="doccomment">/// Sets the `ack_delay_exponent` transport parameter.
+    ///
+    /// The default value is `3`.
+    </span><span class="kw">pub fn </span>set_ack_delay_exponent(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) {
+        <span class="self">self</span>.local_transport_params.ack_delay_exponent = v;
+    }
+
+    <span class="doccomment">/// Sets the `max_ack_delay` transport parameter.
+    ///
+    /// The default value is `25`.
+    </span><span class="kw">pub fn </span>set_max_ack_delay(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) {
+        <span class="self">self</span>.local_transport_params.max_ack_delay = v;
+    }
+
+    <span class="doccomment">/// Sets the `active_connection_id_limit` transport parameter.
+    ///
+    /// The default value is `2`. Lower values will be ignored.
+    </span><span class="kw">pub fn </span>set_active_connection_id_limit(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) {
+        <span class="kw">if </span>v &gt;= <span class="number">2 </span>{
+            <span class="self">self</span>.local_transport_params.active_conn_id_limit = v;
+        }
+    }
+
+    <span class="doccomment">/// Sets the `disable_active_migration` transport parameter.
+    ///
+    /// The default value is `false`.
+    </span><span class="kw">pub fn </span>set_disable_active_migration(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: bool) {
+        <span class="self">self</span>.local_transport_params.disable_active_migration = v;
+    }
+
+    <span class="doccomment">/// Sets the congestion control algorithm used by string.
+    ///
+    /// The default value is `cubic`. On error `Error::CongestionControl`
+    /// will be returned.
+    ///
+    /// ## Examples:
+    ///
+    /// ```
+    /// # let mut config = quiche::Config::new(0xbabababa)?;
+    /// config.set_cc_algorithm_name("reno");
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="kw">pub fn </span>set_cc_algorithm_name(<span class="kw-2">&amp;mut </span><span class="self">self</span>, name: <span class="kw-2">&amp;</span>str) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="self">self</span>.cc_algorithm = CongestionControlAlgorithm::from_str(name)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Sets initial congestion window size in terms of packet count.
+    ///
+    /// The default value is 10.
+    </span><span class="kw">pub fn </span>set_initial_congestion_window_packets(<span class="kw-2">&amp;mut </span><span class="self">self</span>, packets: usize) {
+        <span class="self">self</span>.initial_congestion_window_packets = packets;
+    }
+
+    <span class="doccomment">/// Sets the congestion control algorithm used.
+    ///
+    /// The default value is `CongestionControlAlgorithm::CUBIC`.
+    </span><span class="kw">pub fn </span>set_cc_algorithm(<span class="kw-2">&amp;mut </span><span class="self">self</span>, algo: CongestionControlAlgorithm) {
+        <span class="self">self</span>.cc_algorithm = algo;
+    }
+
+    <span class="doccomment">/// Configures whether to enable HyStart++.
+    ///
+    /// The default value is `true`.
+    </span><span class="kw">pub fn </span>enable_hystart(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: bool) {
+        <span class="self">self</span>.hystart = v;
+    }
+
+    <span class="doccomment">/// Configures whether to enable pacing.
+    ///
+    /// The default value is `true`.
+    </span><span class="kw">pub fn </span>enable_pacing(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: bool) {
+        <span class="self">self</span>.pacing = v;
+    }
+
+    <span class="doccomment">/// Sets the max value for pacing rate.
+    ///
+    /// By default pacing rate is not limited.
+    </span><span class="kw">pub fn </span>set_max_pacing_rate(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) {
+        <span class="self">self</span>.max_pacing_rate = <span class="prelude-val">Some</span>(v);
+    }
+
+    <span class="doccomment">/// Configures whether to enable receiving DATAGRAM frames.
+    ///
+    /// When enabled, the `max_datagram_frame_size` transport parameter is set
+    /// to 65536 as recommended by draft-ietf-quic-datagram-01.
+    ///
+    /// The default is `false`.
+    </span><span class="kw">pub fn </span>enable_dgram(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, enabled: bool, recv_queue_len: usize, send_queue_len: usize,
+    ) {
+        <span class="self">self</span>.local_transport_params.max_datagram_frame_size = <span class="kw">if </span>enabled {
+            <span class="prelude-val">Some</span>(MAX_DGRAM_FRAME_SIZE)
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+        <span class="self">self</span>.dgram_recv_max_queue_len = recv_queue_len;
+        <span class="self">self</span>.dgram_send_max_queue_len = send_queue_len;
+    }
+
+    <span class="doccomment">/// Configures the max number of queued received PATH_CHALLENGE frames.
+    ///
+    /// When an endpoint receives a PATH_CHALLENGE frame and the queue is full,
+    /// the frame is discarded.
+    ///
+    /// The default is 3.
+    </span><span class="kw">pub fn </span>set_path_challenge_recv_max_queue_len(<span class="kw-2">&amp;mut </span><span class="self">self</span>, queue_len: usize) {
+        <span class="self">self</span>.path_challenge_recv_max_queue_len = queue_len;
+    }
+
+    <span class="doccomment">/// Sets the maximum size of the connection window.
+    ///
+    /// The default value is MAX_CONNECTION_WINDOW (24MBytes).
+    </span><span class="kw">pub fn </span>set_max_connection_window(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) {
+        <span class="self">self</span>.max_connection_window = v;
+    }
+
+    <span class="doccomment">/// Sets the maximum size of the stream window.
+    ///
+    /// The default value is MAX_STREAM_WINDOW (16MBytes).
+    </span><span class="kw">pub fn </span>set_max_stream_window(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) {
+        <span class="self">self</span>.max_stream_window = v;
+    }
+
+    <span class="doccomment">/// Sets the initial stateless reset token.
+    ///
+    /// This value is only advertised by servers. Setting a stateless retry
+    /// token as a client has no effect on the connection.
+    ///
+    /// The default value is `None`.
+    </span><span class="kw">pub fn </span>set_stateless_reset_token(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: <span class="prelude-ty">Option</span>&lt;u128&gt;) {
+        <span class="self">self</span>.local_transport_params.stateless_reset_token = v;
+    }
+
+    <span class="doccomment">/// Sets whether the QUIC connection should avoid reusing DCIDs over
+    /// different paths.
+    ///
+    /// When set to `true`, it ensures that a destination Connection ID is never
+    /// reused on different paths. Such behaviour may lead to connection stall
+    /// if the peer performs a non-voluntary migration (e.g., NAT rebinding) and
+    /// does not provide additional destination Connection IDs to handle such
+    /// event.
+    ///
+    /// The default value is `false`.
+    </span><span class="kw">pub fn </span>set_disable_dcid_reuse(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: bool) {
+        <span class="self">self</span>.disable_dcid_reuse = v;
+    }
+}
+
+<span class="doccomment">/// A QUIC connection.
+</span><span class="kw">pub struct </span>Connection {
+    <span class="doccomment">/// QUIC wire version used for the connection.
+    </span>version: u32,
+
+    <span class="doccomment">/// Connection Identifiers.
+    </span>ids: cid::ConnectionIdentifiers,
+
+    <span class="doccomment">/// Unique opaque ID for the connection that can be used for logging.
+    </span>trace_id: String,
+
+    <span class="doccomment">/// Packet number spaces.
+    </span>pkt_num_spaces: [packet::PktNumSpace; packet::Epoch::count()],
+
+    <span class="doccomment">/// Peer's transport parameters.
+    </span>peer_transport_params: TransportParams,
+
+    <span class="doccomment">/// Local transport parameters.
+    </span>local_transport_params: TransportParams,
+
+    <span class="doccomment">/// TLS handshake state.
+    </span>handshake: tls::Handshake,
+
+    <span class="doccomment">/// Serialized TLS session buffer.
+    ///
+    /// This field is populated when a new session ticket is processed on the
+    /// client. On the server this is empty.
+    </span>session: <span class="prelude-ty">Option</span>&lt;Vec&lt;u8&gt;&gt;,
+
+    <span class="doccomment">/// The configuration for recovery.
+    </span>recovery_config: recovery::RecoveryConfig,
+
+    <span class="doccomment">/// The path manager.
+    </span>paths: path::PathMap,
+
+    <span class="doccomment">/// PATH_CHALLENGE receive queue max length.
+    </span>path_challenge_recv_max_queue_len: usize,
+
+    <span class="doccomment">/// Total number of received PATH_CHALLENGE frames.
+    </span>path_challenge_rx_count: u64,
+
+    <span class="doccomment">/// List of supported application protocols.
+    </span>application_protos: Vec&lt;Vec&lt;u8&gt;&gt;,
+
+    <span class="doccomment">/// Total number of received packets.
+    </span>recv_count: usize,
+
+    <span class="doccomment">/// Total number of sent packets.
+    </span>sent_count: usize,
+
+    <span class="doccomment">/// Total number of lost packets.
+    </span>lost_count: usize,
+
+    <span class="doccomment">/// Total number of packets sent with data retransmitted.
+    </span>retrans_count: usize,
+
+    <span class="doccomment">/// Total number of bytes received from the peer.
+    </span>rx_data: u64,
+
+    <span class="doccomment">/// Receiver flow controller.
+    </span>flow_control: flowcontrol::FlowControl,
+
+    <span class="doccomment">/// Whether we send MAX_DATA frame.
+    </span>almost_full: bool,
+
+    <span class="doccomment">/// Number of stream data bytes that can be buffered.
+    </span>tx_cap: usize,
+
+    <span class="comment">// Number of bytes buffered in the send buffer.
+    </span>tx_buffered: usize,
+
+    <span class="doccomment">/// Total number of bytes sent to the peer.
+    </span>tx_data: u64,
+
+    <span class="doccomment">/// Peer's flow control limit for the connection.
+    </span>max_tx_data: u64,
+
+    <span class="doccomment">/// Last tx_data before running a full send() loop.
+    </span>last_tx_data: u64,
+
+    <span class="doccomment">/// Total number of bytes retransmitted over the connection.
+    /// This counts only STREAM and CRYPTO data.
+    </span>stream_retrans_bytes: u64,
+
+    <span class="doccomment">/// Total number of bytes sent over the connection.
+    </span>sent_bytes: u64,
+
+    <span class="doccomment">/// Total number of bytes received over the connection.
+    </span>recv_bytes: u64,
+
+    <span class="doccomment">/// Total number of bytes sent lost over the connection.
+    </span>lost_bytes: u64,
+
+    <span class="doccomment">/// Streams map, indexed by stream ID.
+    </span>streams: stream::StreamMap,
+
+    <span class="doccomment">/// Peer's original destination connection ID. Used by the client to
+    /// validate the server's transport parameter.
+    </span>odcid: <span class="prelude-ty">Option</span>&lt;ConnectionId&lt;<span class="lifetime">'static</span>&gt;&gt;,
+
+    <span class="doccomment">/// Peer's retry source connection ID. Used by the client during stateless
+    /// retry to validate the server's transport parameter.
+    </span>rscid: <span class="prelude-ty">Option</span>&lt;ConnectionId&lt;<span class="lifetime">'static</span>&gt;&gt;,
+
+    <span class="doccomment">/// Received address verification token.
+    </span>token: <span class="prelude-ty">Option</span>&lt;Vec&lt;u8&gt;&gt;,
+
+    <span class="doccomment">/// Error code and reason to be sent to the peer in a CONNECTION_CLOSE
+    /// frame.
+    </span>local_error: <span class="prelude-ty">Option</span>&lt;ConnectionError&gt;,
+
+    <span class="doccomment">/// Error code and reason received from the peer in a CONNECTION_CLOSE
+    /// frame.
+    </span>peer_error: <span class="prelude-ty">Option</span>&lt;ConnectionError&gt;,
+
+    <span class="doccomment">/// The connection-level limit at which send blocking occurred.
+    </span>blocked_limit: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    <span class="doccomment">/// Idle timeout expiration time.
+    </span>idle_timer: <span class="prelude-ty">Option</span>&lt;time::Instant&gt;,
+
+    <span class="doccomment">/// Draining timeout expiration time.
+    </span>draining_timer: <span class="prelude-ty">Option</span>&lt;time::Instant&gt;,
+
+    <span class="doccomment">/// List of raw packets that were received before they could be decrypted.
+    </span>undecryptable_pkts: VecDeque&lt;(Vec&lt;u8&gt;, RecvInfo)&gt;,
+
+    <span class="doccomment">/// The negotiated ALPN protocol.
+    </span>alpn: Vec&lt;u8&gt;,
+
+    <span class="doccomment">/// Whether this is a server-side connection.
+    </span>is_server: bool,
+
+    <span class="doccomment">/// Whether the initial secrets have been derived.
+    </span>derived_initial_secrets: bool,
+
+    <span class="doccomment">/// Whether a version negotiation packet has already been received. Only
+    /// relevant for client connections.
+    </span>did_version_negotiation: bool,
+
+    <span class="doccomment">/// Whether stateless retry has been performed.
+    </span>did_retry: bool,
+
+    <span class="doccomment">/// Whether the peer already updated its connection ID.
+    </span>got_peer_conn_id: bool,
+
+    <span class="doccomment">/// Whether the peer verified our initial address.
+    </span>peer_verified_initial_address: bool,
+
+    <span class="doccomment">/// Whether the peer's transport parameters were parsed.
+    </span>parsed_peer_transport_params: bool,
+
+    <span class="doccomment">/// Whether the connection handshake has been completed.
+    </span>handshake_completed: bool,
+
+    <span class="doccomment">/// Whether the HANDSHAKE_DONE frame has been sent.
+    </span>handshake_done_sent: bool,
+
+    <span class="doccomment">/// Whether the HANDSHAKE_DONE frame has been acked.
+    </span>handshake_done_acked: bool,
+
+    <span class="doccomment">/// Whether the connection handshake has been confirmed.
+    </span>handshake_confirmed: bool,
+
+    <span class="doccomment">/// Key phase bit used for outgoing protected packets.
+    </span>key_phase: bool,
+
+    <span class="doccomment">/// Whether an ack-eliciting packet has been sent since last receiving a
+    /// packet.
+    </span>ack_eliciting_sent: bool,
+
+    <span class="doccomment">/// Whether the connection is closed.
+    </span>closed: bool,
+
+    <span class="comment">// Whether the connection was timed out
+    </span>timed_out: bool,
+
+    <span class="doccomment">/// Whether to send GREASE.
+    </span>grease: bool,
+
+    <span class="doccomment">/// TLS keylog writer.
+    </span>keylog: <span class="prelude-ty">Option</span>&lt;Box&lt;<span class="kw">dyn </span>std::io::Write + Send + Sync&gt;&gt;,
+
+    <span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+    </span>qlog: QlogInfo,
+
+    <span class="doccomment">/// DATAGRAM queues.
+    </span>dgram_recv_queue: dgram::DatagramQueue,
+    dgram_send_queue: dgram::DatagramQueue,
+
+    <span class="doccomment">/// Whether to emit DATAGRAM frames in the next packet.
+    </span>emit_dgram: bool,
+
+    <span class="doccomment">/// Whether the connection should prevent from reusing destination
+    /// Connection IDs when the peer migrates.
+    </span>disable_dcid_reuse: bool,
+
+    <span class="doccomment">/// A resusable buffer used by Recovery
+    </span>newly_acked: Vec&lt;recovery::Acked&gt;,
+
+    <span class="doccomment">/// The number of streams reset by local.
+    </span>reset_stream_local_count: u64,
+
+    <span class="doccomment">/// The number of streams stopped by local.
+    </span>stopped_stream_local_count: u64,
+
+    <span class="doccomment">/// The number of streams reset by remote.
+    </span>reset_stream_remote_count: u64,
+
+    <span class="doccomment">/// The number of streams stopped by remote.
+    </span>stopped_stream_remote_count: u64,
+}
+
+<span class="doccomment">/// Creates a new server-side connection.
+///
+/// The `scid` parameter represents the server's source connection ID, while
+/// the optional `odcid` parameter represents the original destination ID the
+/// client sent before a stateless retry (this is only required when using
+/// the [`retry()`] function).
+///
+/// [`retry()`]: fn.retry.html
+///
+/// ## Examples:
+///
+/// ```no_run
+/// # let mut config = quiche::Config::new(0xbabababa)?;
+/// # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+/// # let local = "127.0.0.1:0".parse().unwrap();
+/// # let peer = "127.0.0.1:1234".parse().unwrap();
+/// let conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+/// # Ok::&lt;(), quiche::Error&gt;(())
+/// ```
+</span><span class="attr">#[inline]
+</span><span class="kw">pub fn </span>accept(
+    scid: <span class="kw-2">&amp;</span>ConnectionId, odcid: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>ConnectionId&gt;, local: SocketAddr,
+    peer: SocketAddr, config: <span class="kw-2">&amp;mut </span>Config,
+) -&gt; <span class="prelude-ty">Result</span>&lt;Connection&gt; {
+    <span class="kw">let </span>conn = Connection::new(scid, odcid, local, peer, config, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
+
+    <span class="prelude-val">Ok</span>(conn)
+}
+
+<span class="doccomment">/// Creates a new client-side connection.
+///
+/// The `scid` parameter is used as the connection's source connection ID,
+/// while the optional `server_name` parameter is used to verify the peer's
+/// certificate.
+///
+/// ## Examples:
+///
+/// ```no_run
+/// # let mut config = quiche::Config::new(0xbabababa)?;
+/// # let server_name = "quic.tech";
+/// # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+/// # let local = "127.0.0.1:4321".parse().unwrap();
+/// # let peer = "127.0.0.1:1234".parse().unwrap();
+/// let conn =
+///     quiche::connect(Some(&amp;server_name), &amp;scid, local, peer, &amp;mut config)?;
+/// # Ok::&lt;(), quiche::Error&gt;(())
+/// ```
+</span><span class="attr">#[inline]
+</span><span class="kw">pub fn </span>connect(
+    server_name: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>str&gt;, scid: <span class="kw-2">&amp;</span>ConnectionId, local: SocketAddr,
+    peer: SocketAddr, config: <span class="kw-2">&amp;mut </span>Config,
+) -&gt; <span class="prelude-ty">Result</span>&lt;Connection&gt; {
+    <span class="kw">let </span><span class="kw-2">mut </span>conn = Connection::new(scid, <span class="prelude-val">None</span>, local, peer, config, <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(server_name) = server_name {
+        conn.handshake.set_host_name(server_name)<span class="question-mark">?</span>;
+    }
+
+    <span class="prelude-val">Ok</span>(conn)
+}
+
+<span class="doccomment">/// Writes a version negotiation packet.
+///
+/// The `scid` and `dcid` parameters are the source connection ID and the
+/// destination connection ID extracted from the received client's Initial
+/// packet that advertises an unsupported version.
+///
+/// ## Examples:
+///
+/// ```no_run
+/// # let mut buf = [0; 512];
+/// # let mut out = [0; 512];
+/// # let socket = std::net::UdpSocket::bind("127.0.0.1:0").unwrap();
+/// let (len, src) = socket.recv_from(&amp;mut buf).unwrap();
+///
+/// let hdr =
+///     quiche::Header::from_slice(&amp;mut buf[..len], quiche::MAX_CONN_ID_LEN)?;
+///
+/// if hdr.version != quiche::PROTOCOL_VERSION {
+///     let len = quiche::negotiate_version(&amp;hdr.scid, &amp;hdr.dcid, &amp;mut out)?;
+///     socket.send_to(&amp;out[..len], &amp;src).unwrap();
+/// }
+/// # Ok::&lt;(), quiche::Error&gt;(())
+/// ```
+</span><span class="attr">#[inline]
+</span><span class="kw">pub fn </span>negotiate_version(
+    scid: <span class="kw-2">&amp;</span>ConnectionId, dcid: <span class="kw-2">&amp;</span>ConnectionId, out: <span class="kw-2">&amp;mut </span>[u8],
+) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+    packet::negotiate_version(scid, dcid, out)
+}
+
+<span class="doccomment">/// Writes a stateless retry packet.
+///
+/// The `scid` and `dcid` parameters are the source connection ID and the
+/// destination connection ID extracted from the received client's Initial
+/// packet, while `new_scid` is the server's new source connection ID and
+/// `token` is the address validation token the client needs to echo back.
+///
+/// The application is responsible for generating the address validation
+/// token to be sent to the client, and verifying tokens sent back by the
+/// client. The generated token should include the `dcid` parameter, such
+/// that it can be later extracted from the token and passed to the
+/// [`accept()`] function as its `odcid` parameter.
+///
+/// [`accept()`]: fn.accept.html
+///
+/// ## Examples:
+///
+/// ```no_run
+/// # let mut config = quiche::Config::new(0xbabababa)?;
+/// # let mut buf = [0; 512];
+/// # let mut out = [0; 512];
+/// # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+/// # let socket = std::net::UdpSocket::bind("127.0.0.1:0").unwrap();
+/// # let local = socket.local_addr().unwrap();
+/// # fn mint_token(hdr: &amp;quiche::Header, src: &amp;std::net::SocketAddr) -&gt; Vec&lt;u8&gt; {
+/// #     vec![]
+/// # }
+/// # fn validate_token&lt;'a&gt;(src: &amp;std::net::SocketAddr, token: &amp;'a [u8]) -&gt; Option&lt;quiche::ConnectionId&lt;'a&gt;&gt; {
+/// #     None
+/// # }
+/// let (len, peer) = socket.recv_from(&amp;mut buf).unwrap();
+///
+/// let hdr = quiche::Header::from_slice(&amp;mut buf[..len], quiche::MAX_CONN_ID_LEN)?;
+///
+/// let token = hdr.token.as_ref().unwrap();
+///
+/// // No token sent by client, create a new one.
+/// if token.is_empty() {
+///     let new_token = mint_token(&amp;hdr, &amp;peer);
+///
+///     let len = quiche::retry(
+///         &amp;hdr.scid, &amp;hdr.dcid, &amp;scid, &amp;new_token, hdr.version, &amp;mut out,
+///     )?;
+///
+///     socket.send_to(&amp;out[..len], &amp;peer).unwrap();
+///     return Ok(());
+/// }
+///
+/// // Client sent token, validate it.
+/// let odcid = validate_token(&amp;peer, token);
+///
+/// if odcid.is_none() {
+///     // Invalid address validation token.
+///     return Ok(());
+/// }
+///
+/// let conn = quiche::accept(&amp;scid, odcid.as_ref(), local, peer, &amp;mut config)?;
+/// # Ok::&lt;(), quiche::Error&gt;(())
+/// ```
+</span><span class="attr">#[inline]
+</span><span class="kw">pub fn </span>retry(
+    scid: <span class="kw-2">&amp;</span>ConnectionId, dcid: <span class="kw-2">&amp;</span>ConnectionId, new_scid: <span class="kw-2">&amp;</span>ConnectionId,
+    token: <span class="kw-2">&amp;</span>[u8], version: u32, out: <span class="kw-2">&amp;mut </span>[u8],
+) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+    packet::retry(scid, dcid, new_scid, token, version, out)
+}
+
+<span class="doccomment">/// Returns true if the given protocol version is supported.
+</span><span class="attr">#[inline]
+</span><span class="kw">pub fn </span>version_is_supported(version: u32) -&gt; bool {
+    <span class="macro">matches!</span>(version, PROTOCOL_VERSION_V1)
+}
+
+<span class="doccomment">/// Pushes a frame to the output packet if there is enough space.
+///
+/// Returns `true` on success, `false` otherwise. In case of failure it means
+/// there is no room to add the frame in the packet. You may retry to add the
+/// frame later.
+</span><span class="macro">macro_rules!</span> push_frame_to_pkt {
+    (<span class="macro-nonterminal">$out</span>:expr, <span class="macro-nonterminal">$frames</span>:expr, <span class="macro-nonterminal">$frame</span>:expr, <span class="macro-nonterminal">$left</span>:expr) =&gt; {{
+        <span class="kw">if </span><span class="macro-nonterminal">$frame</span>.wire_len() &lt;= <span class="macro-nonterminal">$left </span>{
+            <span class="macro-nonterminal">$left </span>-= <span class="macro-nonterminal">$frame</span>.wire_len();
+
+            <span class="macro-nonterminal">$frame</span>.to_bytes(<span class="kw-2">&amp;mut </span><span class="macro-nonterminal">$out</span>)<span class="question-mark">?</span>;
+
+            <span class="macro-nonterminal">$frames</span>.push(<span class="macro-nonterminal">$frame</span>);
+
+            <span class="bool-val">true
+        </span>} <span class="kw">else </span>{
+            <span class="bool-val">false
+        </span>}
+    }};
+}
+
+<span class="doccomment">/// Executes the provided body if the qlog feature is enabled, quiche has been
+/// configured with a log writer, the event's importance is within the
+/// configured level.
+</span><span class="macro">macro_rules!</span> qlog_with_type {
+    (<span class="macro-nonterminal">$ty</span>:expr, <span class="macro-nonterminal">$qlog</span>:expr, <span class="macro-nonterminal">$qlog_streamer_ref</span>:ident, <span class="macro-nonterminal">$body</span>:block) =&gt; {{
+        <span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+        </span>{
+            <span class="kw">if </span>EventImportance::from(<span class="macro-nonterminal">$ty</span>).is_contained_in(<span class="kw-2">&amp;</span><span class="macro-nonterminal">$qlog</span>.level) {
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(<span class="macro-nonterminal">$qlog_streamer_ref</span>) = <span class="kw-2">&amp;mut </span><span class="macro-nonterminal">$qlog</span>.streamer {
+                    <span class="macro-nonterminal">$body
+                </span>}
+            }
+        }
+    }};
+}
+
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">const </span>QLOG_PARAMS_SET: EventType =
+    EventType::TransportEventType(TransportEventType::ParametersSet);
+
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">const </span>QLOG_PACKET_RX: EventType =
+    EventType::TransportEventType(TransportEventType::PacketReceived);
+
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">const </span>QLOG_PACKET_TX: EventType =
+    EventType::TransportEventType(TransportEventType::PacketSent);
+
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">const </span>QLOG_DATA_MV: EventType =
+    EventType::TransportEventType(TransportEventType::DataMoved);
+
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">const </span>QLOG_METRICS: EventType =
+    EventType::RecoveryEventType(RecoveryEventType::MetricsUpdated);
+
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">const </span>QLOG_CONNECTION_CLOSED: EventType =
+    EventType::ConnectivityEventType(ConnectivityEventType::ConnectionClosed);
+
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">struct </span>QlogInfo {
+    streamer: <span class="prelude-ty">Option</span>&lt;qlog::streamer::QlogStreamer&gt;,
+    logged_peer_params: bool,
+    level: EventImportance,
+}
+
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">impl </span>Default <span class="kw">for </span>QlogInfo {
+    <span class="kw">fn </span>default() -&gt; <span class="self">Self </span>{
+        QlogInfo {
+            streamer: <span class="prelude-val">None</span>,
+            logged_peer_params: <span class="bool-val">false</span>,
+            level: EventImportance::Base,
+        }
+    }
+}
+
+<span class="kw">impl </span>Connection {
+    <span class="kw">fn </span>new(
+        scid: <span class="kw-2">&amp;</span>ConnectionId, odcid: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>ConnectionId&gt;, local: SocketAddr,
+        peer: SocketAddr, config: <span class="kw-2">&amp;mut </span>Config, is_server: bool,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;Connection&gt; {
+        <span class="kw">let </span>tls = config.tls_ctx.new_handshake()<span class="question-mark">?</span>;
+        Connection::with_tls(scid, odcid, local, peer, config, tls, is_server)
+    }
+
+    <span class="kw">fn </span>with_tls(
+        scid: <span class="kw-2">&amp;</span>ConnectionId, odcid: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>ConnectionId&gt;, local: SocketAddr,
+        peer: SocketAddr, config: <span class="kw-2">&amp;</span>Config, tls: tls::Handshake, is_server: bool,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;Connection&gt; {
+        <span class="kw">let </span>max_rx_data = config.local_transport_params.initial_max_data;
+
+        <span class="kw">let </span>scid_as_hex: Vec&lt;String&gt; =
+            scid.iter().map(|b| <span class="macro">format!</span>(<span class="string">"{b:02x}"</span>)).collect();
+
+        <span class="kw">let </span>reset_token = <span class="kw">if </span>is_server {
+            config.local_transport_params.stateless_reset_token
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="kw">let </span>recovery_config = recovery::RecoveryConfig::from_config(config);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>path = path::Path::new(
+            local,
+            peer,
+            <span class="kw-2">&amp;</span>recovery_config,
+            config.path_challenge_recv_max_queue_len,
+            MIN_CLIENT_INITIAL_LEN,
+            <span class="bool-val">true</span>,
+        );
+
+        <span class="comment">// If we did stateless retry assume the peer's address is verified.
+        </span>path.verified_peer_address = odcid.is_some();
+        <span class="comment">// Assume clients validate the server's address implicitly.
+        </span>path.peer_verified_local_address = is_server;
+
+        <span class="comment">// Do not allocate more than the number of active CIDs.
+        </span><span class="kw">let </span>paths = path::PathMap::new(
+            path,
+            config.local_transport_params.active_conn_id_limit <span class="kw">as </span>usize,
+            is_server,
+            config.pmtud,
+            config.max_send_udp_payload_size,
+        );
+
+        <span class="kw">let </span>active_path_id = paths.get_active_path_id()<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>ids = cid::ConnectionIdentifiers::new(
+            config.local_transport_params.active_conn_id_limit <span class="kw">as </span>usize,
+            scid,
+            active_path_id,
+            reset_token,
+        );
+
+        <span class="kw">let </span><span class="kw-2">mut </span>conn = Connection {
+            version: config.version,
+
+            ids,
+
+            trace_id: scid_as_hex.join(<span class="string">""</span>),
+
+            pkt_num_spaces: [
+                packet::PktNumSpace::new(),
+                packet::PktNumSpace::new(),
+                packet::PktNumSpace::new(),
+            ],
+
+            peer_transport_params: TransportParams::default(),
+
+            local_transport_params: config.local_transport_params.clone(),
+
+            handshake: tls,
+
+            session: <span class="prelude-val">None</span>,
+
+            recovery_config,
+
+            paths,
+            path_challenge_recv_max_queue_len: config
+                .path_challenge_recv_max_queue_len,
+            path_challenge_rx_count: <span class="number">0</span>,
+
+            application_protos: config.application_protos.clone(),
+
+            recv_count: <span class="number">0</span>,
+            sent_count: <span class="number">0</span>,
+            lost_count: <span class="number">0</span>,
+            retrans_count: <span class="number">0</span>,
+            sent_bytes: <span class="number">0</span>,
+            recv_bytes: <span class="number">0</span>,
+            lost_bytes: <span class="number">0</span>,
+
+            rx_data: <span class="number">0</span>,
+            flow_control: flowcontrol::FlowControl::new(
+                max_rx_data,
+                cmp::min(max_rx_data / <span class="number">2 </span>* <span class="number">3</span>, DEFAULT_CONNECTION_WINDOW),
+                config.max_connection_window,
+            ),
+            almost_full: <span class="bool-val">false</span>,
+
+            tx_cap: <span class="number">0</span>,
+
+            tx_buffered: <span class="number">0</span>,
+
+            tx_data: <span class="number">0</span>,
+            max_tx_data: <span class="number">0</span>,
+            last_tx_data: <span class="number">0</span>,
+
+            stream_retrans_bytes: <span class="number">0</span>,
+
+            streams: stream::StreamMap::new(
+                config.local_transport_params.initial_max_streams_bidi,
+                config.local_transport_params.initial_max_streams_uni,
+                config.max_stream_window,
+            ),
+
+            odcid: <span class="prelude-val">None</span>,
+
+            rscid: <span class="prelude-val">None</span>,
+
+            token: <span class="prelude-val">None</span>,
+
+            local_error: <span class="prelude-val">None</span>,
+
+            peer_error: <span class="prelude-val">None</span>,
+
+            blocked_limit: <span class="prelude-val">None</span>,
+
+            idle_timer: <span class="prelude-val">None</span>,
+
+            draining_timer: <span class="prelude-val">None</span>,
+
+            undecryptable_pkts: VecDeque::new(),
+
+            alpn: Vec::new(),
+
+            is_server,
+
+            derived_initial_secrets: <span class="bool-val">false</span>,
+
+            did_version_negotiation: <span class="bool-val">false</span>,
+
+            did_retry: <span class="bool-val">false</span>,
+
+            got_peer_conn_id: <span class="bool-val">false</span>,
+
+            <span class="comment">// Assume clients validate the server's address implicitly.
+            </span>peer_verified_initial_address: is_server,
+
+            parsed_peer_transport_params: <span class="bool-val">false</span>,
+
+            handshake_completed: <span class="bool-val">false</span>,
+
+            handshake_done_sent: <span class="bool-val">false</span>,
+            handshake_done_acked: <span class="bool-val">false</span>,
+
+            handshake_confirmed: <span class="bool-val">false</span>,
+
+            key_phase: <span class="bool-val">false</span>,
+
+            ack_eliciting_sent: <span class="bool-val">false</span>,
+
+            closed: <span class="bool-val">false</span>,
+
+            timed_out: <span class="bool-val">false</span>,
+
+            grease: config.grease,
+
+            keylog: <span class="prelude-val">None</span>,
+
+            <span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+            </span>qlog: Default::default(),
+
+            dgram_recv_queue: dgram::DatagramQueue::new(
+                config.dgram_recv_max_queue_len,
+            ),
+
+            dgram_send_queue: dgram::DatagramQueue::new(
+                config.dgram_send_max_queue_len,
+            ),
+
+            emit_dgram: <span class="bool-val">true</span>,
+
+            disable_dcid_reuse: config.disable_dcid_reuse,
+
+            newly_acked: Vec::new(),
+
+            reset_stream_local_count: <span class="number">0</span>,
+            stopped_stream_local_count: <span class="number">0</span>,
+            reset_stream_remote_count: <span class="number">0</span>,
+            stopped_stream_remote_count: <span class="number">0</span>,
+        };
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(odcid) = odcid {
+            conn.local_transport_params
+                .original_destination_connection_id = <span class="prelude-val">Some</span>(odcid.to_vec().into());
+
+            conn.local_transport_params.retry_source_connection_id =
+                <span class="prelude-val">Some</span>(conn.ids.get_scid(<span class="number">0</span>)<span class="question-mark">?</span>.cid.to_vec().into());
+
+            conn.did_retry = <span class="bool-val">true</span>;
+        }
+
+        conn.local_transport_params.initial_source_connection_id =
+            <span class="prelude-val">Some</span>(conn.ids.get_scid(<span class="number">0</span>)<span class="question-mark">?</span>.cid.to_vec().into());
+
+        conn.handshake.init(is_server)<span class="question-mark">?</span>;
+
+        conn.handshake
+            .use_legacy_codepoint(config.version != PROTOCOL_VERSION_V1);
+
+        conn.encode_transport_params()<span class="question-mark">?</span>;
+
+        <span class="comment">// Derive initial secrets for the client. We can do this here because
+        // we already generated the random destination connection ID.
+        </span><span class="kw">if </span>!is_server {
+            <span class="kw">let </span><span class="kw-2">mut </span>dcid = [<span class="number">0</span>; <span class="number">16</span>];
+            rand::rand_bytes(<span class="kw-2">&amp;mut </span>dcid[..]);
+
+            <span class="kw">let </span>(aead_open, aead_seal) = crypto::derive_initial_key_material(
+                <span class="kw-2">&amp;</span>dcid,
+                conn.version,
+                conn.is_server,
+            )<span class="question-mark">?</span>;
+
+            <span class="kw">let </span>reset_token = conn.peer_transport_params.stateless_reset_token;
+            conn.set_initial_dcid(
+                dcid.to_vec().into(),
+                reset_token,
+                active_path_id,
+            )<span class="question-mark">?</span>;
+
+            conn.pkt_num_spaces[packet::Epoch::Initial].crypto_open =
+                <span class="prelude-val">Some</span>(aead_open);
+            conn.pkt_num_spaces[packet::Epoch::Initial].crypto_seal =
+                <span class="prelude-val">Some</span>(aead_seal);
+
+            conn.derived_initial_secrets = <span class="bool-val">true</span>;
+        }
+
+        conn.paths.get_mut(active_path_id)<span class="question-mark">?</span>.recovery.on_init();
+
+        <span class="prelude-val">Ok</span>(conn)
+    }
+
+    <span class="doccomment">/// Sets keylog output to the designated [`Writer`].
+    ///
+    /// This needs to be called as soon as the connection is created, to avoid
+    /// missing some early logs.
+    ///
+    /// [`Writer`]: https://doc.rust-lang.org/std/io/trait.Write.html
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>set_keylog(<span class="kw-2">&amp;mut </span><span class="self">self</span>, writer: Box&lt;<span class="kw">dyn </span>std::io::Write + Send + Sync&gt;) {
+        <span class="self">self</span>.keylog = <span class="prelude-val">Some</span>(writer);
+    }
+
+    <span class="doccomment">/// Sets qlog output to the designated [`Writer`].
+    ///
+    /// Only events included in `QlogLevel::Base` are written. The serialization
+    /// format is JSON-SEQ.
+    ///
+    /// This needs to be called as soon as the connection is created, to avoid
+    /// missing some early logs.
+    ///
+    /// [`Writer`]: https://doc.rust-lang.org/std/io/trait.Write.html
+    </span><span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+    #[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"qlog"</span>)))]
+    </span><span class="kw">pub fn </span>set_qlog(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, writer: Box&lt;<span class="kw">dyn </span>std::io::Write + Send + Sync&gt;, title: String,
+        description: String,
+    ) {
+        <span class="self">self</span>.set_qlog_with_level(writer, title, description, QlogLevel::Base)
+    }
+
+    <span class="doccomment">/// Sets qlog output to the designated [`Writer`].
+    ///
+    /// Only qlog events included in the specified `QlogLevel` are written. The
+    /// serialization format is JSON-SEQ.
+    ///
+    /// This needs to be called as soon as the connection is created, to avoid
+    /// missing some early logs.
+    ///
+    /// [`Writer`]: https://doc.rust-lang.org/std/io/trait.Write.html
+    </span><span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+    #[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"qlog"</span>)))]
+    </span><span class="kw">pub fn </span>set_qlog_with_level(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, writer: Box&lt;<span class="kw">dyn </span>std::io::Write + Send + Sync&gt;, title: String,
+        description: String, qlog_level: QlogLevel,
+    ) {
+        <span class="kw">let </span>vp = <span class="kw">if </span><span class="self">self</span>.is_server {
+            qlog::VantagePointType::Server
+        } <span class="kw">else </span>{
+            qlog::VantagePointType::Client
+        };
+
+        <span class="kw">let </span>level = <span class="kw">match </span>qlog_level {
+            QlogLevel::Core =&gt; EventImportance::Core,
+
+            QlogLevel::Base =&gt; EventImportance::Base,
+
+            QlogLevel::Extra =&gt; EventImportance::Extra,
+        };
+
+        <span class="self">self</span>.qlog.level = level;
+
+        <span class="kw">let </span>trace = qlog::TraceSeq::new(
+            qlog::VantagePoint {
+                name: <span class="prelude-val">None</span>,
+                ty: vp,
+                flow: <span class="prelude-val">None</span>,
+            },
+            <span class="prelude-val">Some</span>(title.to_string()),
+            <span class="prelude-val">Some</span>(description.to_string()),
+            <span class="prelude-val">Some</span>(qlog::Configuration {
+                time_offset: <span class="prelude-val">Some</span>(<span class="number">0.0</span>),
+                original_uris: <span class="prelude-val">None</span>,
+            }),
+            <span class="prelude-val">None</span>,
+        );
+
+        <span class="kw">let </span><span class="kw-2">mut </span>streamer = qlog::streamer::QlogStreamer::new(
+            qlog::QLOG_VERSION.to_string(),
+            <span class="prelude-val">Some</span>(title),
+            <span class="prelude-val">Some</span>(description),
+            <span class="prelude-val">None</span>,
+            time::Instant::now(),
+            trace,
+            <span class="self">self</span>.qlog.level,
+            writer,
+        );
+
+        streamer.start_log().ok();
+
+        <span class="kw">let </span>ev_data = <span class="self">self
+            </span>.local_transport_params
+            .to_qlog(TransportOwner::Local, <span class="self">self</span>.handshake.cipher());
+
+        <span class="comment">// This event occurs very early, so just mark the relative time as 0.0.
+        </span>streamer.add_event(Event::with_time(<span class="number">0.0</span>, ev_data)).ok();
+
+        <span class="self">self</span>.qlog.streamer = <span class="prelude-val">Some</span>(streamer);
+    }
+
+    <span class="doccomment">/// Returns a mutable reference to the QlogStreamer, if it exists.
+    </span><span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+    #[cfg_attr(docsrs, doc(cfg(feature = <span class="string">"qlog"</span>)))]
+    </span><span class="kw">pub fn </span>qlog_streamer(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;mut </span>qlog::streamer::QlogStreamer&gt; {
+        <span class="self">self</span>.qlog.streamer.as_mut()
+    }
+
+    <span class="doccomment">/// Configures the given session for resumption.
+    ///
+    /// On the client, this can be used to offer the given serialized session,
+    /// as returned by [`session()`], for resumption.
+    ///
+    /// This must only be called immediately after creating a connection, that
+    /// is, before any packet is sent or received.
+    ///
+    /// [`session()`]: struct.Connection.html#method.session
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>set_session(<span class="kw-2">&amp;mut </span><span class="self">self</span>, session: <span class="kw-2">&amp;</span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(session);
+
+        <span class="kw">let </span>session_len = b.get_u64()<span class="question-mark">? </span><span class="kw">as </span>usize;
+        <span class="kw">let </span>session_bytes = b.get_bytes(session_len)<span class="question-mark">?</span>;
+
+        <span class="self">self</span>.handshake.set_session(session_bytes.as_ref())<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>raw_params_len = b.get_u64()<span class="question-mark">? </span><span class="kw">as </span>usize;
+        <span class="kw">let </span>raw_params_bytes = b.get_bytes(raw_params_len)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>peer_params =
+            TransportParams::decode(raw_params_bytes.as_ref(), <span class="self">self</span>.is_server)<span class="question-mark">?</span>;
+
+        <span class="self">self</span>.process_peer_transport_params(peer_params)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Processes QUIC packets received from the peer.
+    ///
+    /// On success the number of bytes processed from the input buffer is
+    /// returned. On error the connection will be closed by calling [`close()`]
+    /// with the appropriate error code.
+    ///
+    /// Coalesced packets will be processed as necessary.
+    ///
+    /// Note that the contents of the input buffer `buf` might be modified by
+    /// this function due to, for example, in-place decryption.
+    ///
+    /// [`close()`]: struct.Connection.html#method.close
+    ///
+    /// ## Examples:
+    ///
+    /// ```no_run
+    /// # let mut buf = [0; 512];
+    /// # let socket = std::net::UdpSocket::bind("127.0.0.1:0").unwrap();
+    /// # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+    /// # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+    /// # let peer = "127.0.0.1:1234".parse().unwrap();
+    /// # let local = socket.local_addr().unwrap();
+    /// # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+    /// loop {
+    ///     let (read, from) = socket.recv_from(&amp;mut buf).unwrap();
+    ///
+    ///     let recv_info = quiche::RecvInfo {
+    ///         from,
+    ///         to: local,
+    ///     };
+    ///
+    ///     let read = match conn.recv(&amp;mut buf[..read], recv_info) {
+    ///         Ok(v) =&gt; v,
+    ///
+    ///         Err(e) =&gt; {
+    ///             // An error occurred, handle it.
+    ///             break;
+    ///         },
+    ///     };
+    /// }
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="kw">pub fn </span>recv(<span class="kw-2">&amp;mut </span><span class="self">self</span>, buf: <span class="kw-2">&amp;mut </span>[u8], info: RecvInfo) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="kw">let </span>len = buf.len();
+
+        <span class="kw">if </span>len == <span class="number">0 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::BufferTooShort);
+        }
+
+        <span class="kw">let </span>recv_pid = <span class="self">self</span>.paths.path_id_from_addrs(<span class="kw-2">&amp;</span>(info.to, info.from));
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(recv_pid) = recv_pid {
+            <span class="kw">let </span>recv_path = <span class="self">self</span>.paths.get_mut(recv_pid)<span class="question-mark">?</span>;
+
+            <span class="comment">// Keep track of how many bytes we received from the client, so we
+            // can limit bytes sent back before address validation, to a
+            // multiple of this. The limit needs to be increased early on, so
+            // that if there is an error there is enough credit to send a
+            // CONNECTION_CLOSE.
+            //
+            // It doesn't matter if the packets received were valid or not, we
+            // only need to track the total amount of bytes received.
+            //
+            // Note that we also need to limit the number of bytes we sent on a
+            // path if we are not the host that initiated its usage.
+            </span><span class="kw">if </span><span class="self">self</span>.is_server &amp;&amp; !recv_path.verified_peer_address {
+                recv_path.max_send_bytes += len * MAX_AMPLIFICATION_FACTOR;
+            }
+        } <span class="kw">else if </span>!<span class="self">self</span>.is_server {
+            <span class="comment">// If a client receives packets from an unknown server address,
+            // the client MUST discard these packets.
+            </span><span class="macro">trace!</span>(
+                <span class="string">"{} client received packet from unknown address {:?}, dropping"</span>,
+                <span class="self">self</span>.trace_id,
+                info,
+            );
+
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(len);
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>done = <span class="number">0</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>left = len;
+
+        <span class="comment">// Process coalesced packets.
+        </span><span class="kw">while </span>left &gt; <span class="number">0 </span>{
+            <span class="kw">let </span>read = <span class="kw">match </span><span class="self">self</span>.recv_single(
+                <span class="kw-2">&amp;mut </span>buf[len - left..len],
+                <span class="kw-2">&amp;</span>info,
+                recv_pid,
+            ) {
+                <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                <span class="prelude-val">Err</span>(Error::Done) =&gt; {
+                    <span class="comment">// If the packet can't be processed or decrypted, check if
+                    // it's a stateless reset.
+                    </span><span class="kw">if </span><span class="self">self</span>.is_stateless_reset(<span class="kw-2">&amp;</span>buf[len - left..len]) {
+                        <span class="macro">trace!</span>(<span class="string">"{} packet is a stateless reset"</span>, <span class="self">self</span>.trace_id);
+
+                        <span class="self">self</span>.mark_closed();
+                    }
+
+                    left
+                },
+
+                <span class="prelude-val">Err</span>(e) =&gt; {
+                    <span class="comment">// In case of error processing the incoming packet, close
+                    // the connection.
+                    </span><span class="self">self</span>.close(<span class="bool-val">false</span>, e.to_wire(), <span class="string">b""</span>).ok();
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(e);
+                },
+            };
+
+            done += read;
+            left -= read;
+        }
+
+        <span class="comment">// Even though the packet was previously "accepted", it
+        // should be safe to forward the error, as it also comes
+        // from the `recv()` method.
+        </span><span class="self">self</span>.process_undecrypted_0rtt_packets()<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(done)
+    }
+
+    <span class="kw">fn </span>process_undecrypted_0rtt_packets(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="comment">// Process previously undecryptable 0-RTT packets if the decryption key
+        // is now available.
+        </span><span class="kw">if </span><span class="self">self</span>.pkt_num_spaces[packet::Epoch::Application]
+            .crypto_0rtt_open
+            .is_some()
+        {
+            <span class="kw">while let </span><span class="prelude-val">Some</span>((<span class="kw-2">mut </span>pkt, info)) = <span class="self">self</span>.undecryptable_pkts.pop_front()
+            {
+                <span class="kw">if let </span><span class="prelude-val">Err</span>(e) = <span class="self">self</span>.recv(<span class="kw-2">&amp;mut </span>pkt, info) {
+                    <span class="self">self</span>.undecryptable_pkts.clear();
+
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(e);
+                }
+            }
+        }
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Returns true if a QUIC packet is a stateless reset.
+    </span><span class="kw">fn </span>is_stateless_reset(<span class="kw-2">&amp;</span><span class="self">self</span>, buf: <span class="kw-2">&amp;</span>[u8]) -&gt; bool {
+        <span class="comment">// If the packet is too small, then we just throw it away.
+        </span><span class="kw">let </span>buf_len = buf.len();
+        <span class="kw">if </span>buf_len &lt; <span class="number">21 </span>{
+            <span class="kw">return </span><span class="bool-val">false</span>;
+        }
+
+        <span class="comment">// TODO: we should iterate over all active destination connection IDs
+        // and check against their reset token.
+        </span><span class="kw">match </span><span class="self">self</span>.peer_transport_params.stateless_reset_token {
+            <span class="prelude-val">Some</span>(token) =&gt; {
+                <span class="kw">let </span>token_len = <span class="number">16</span>;
+                ring::constant_time::verify_slices_are_equal(
+                    <span class="kw-2">&amp;</span>token.to_be_bytes(),
+                    <span class="kw-2">&amp;</span>buf[buf_len - token_len..buf_len],
+                )
+                .is_ok()
+            },
+
+            <span class="prelude-val">None </span>=&gt; <span class="bool-val">false</span>,
+        }
+    }
+
+    <span class="doccomment">/// Processes a single QUIC packet received from the peer.
+    ///
+    /// On success the number of bytes processed from the input buffer is
+    /// returned. When the [`Done`] error is returned, processing of the
+    /// remainder of the incoming UDP datagram should be interrupted.
+    ///
+    /// Note that a server might observe a new 4-tuple, preventing to
+    /// know in advance to which path the incoming packet belongs to (`recv_pid`
+    /// is `None`). As a client, packets from unknown 4-tuple are dropped
+    /// beforehand (see `recv()`).
+    ///
+    /// On error, an error other than [`Done`] is returned.
+    ///
+    /// [`Done`]: enum.Error.html#variant.Done
+    </span><span class="kw">fn </span>recv_single(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, buf: <span class="kw-2">&amp;mut </span>[u8], info: <span class="kw-2">&amp;</span>RecvInfo, recv_pid: <span class="prelude-ty">Option</span>&lt;usize&gt;,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="kw">let </span>now = time::Instant::now();
+
+        <span class="kw">if </span>buf.is_empty() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="kw">if </span><span class="self">self</span>.is_closed() || <span class="self">self</span>.is_draining() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="kw">let </span>is_closing = <span class="self">self</span>.local_error.is_some();
+
+        <span class="kw">if </span>is_closing {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="kw">let </span>buf_len = buf.len();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(buf);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>hdr = Header::from_bytes(<span class="kw-2">&amp;mut </span>b, <span class="self">self</span>.source_id().len())
+            .map_err(|e| {
+                drop_pkt_on_err(
+                    e,
+                    <span class="self">self</span>.recv_count,
+                    <span class="self">self</span>.is_server,
+                    <span class="kw-2">&amp;</span><span class="self">self</span>.trace_id,
+                )
+            })<span class="question-mark">?</span>;
+
+        <span class="kw">if </span>hdr.ty == packet::Type::VersionNegotiation {
+            <span class="comment">// Version negotiation packets can only be sent by the server.
+            </span><span class="kw">if </span><span class="self">self</span>.is_server {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+            }
+
+            <span class="comment">// Ignore duplicate version negotiation.
+            </span><span class="kw">if </span><span class="self">self</span>.did_version_negotiation {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+            }
+
+            <span class="comment">// Ignore version negotiation if any other packet has already been
+            // successfully processed.
+            </span><span class="kw">if </span><span class="self">self</span>.recv_count &gt; <span class="number">0 </span>{
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+            }
+
+            <span class="kw">if </span>hdr.dcid != <span class="self">self</span>.source_id() {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+            }
+
+            <span class="kw">if </span>hdr.scid != <span class="self">self</span>.destination_id() {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+            }
+
+            <span class="macro">trace!</span>(<span class="string">"{} rx pkt {:?}"</span>, <span class="self">self</span>.trace_id, hdr);
+
+            <span class="kw">let </span>versions = hdr.versions.ok_or(Error::Done)<span class="question-mark">?</span>;
+
+            <span class="comment">// Ignore version negotiation if the version already selected is
+            // listed.
+            </span><span class="kw">if </span>versions.iter().any(|<span class="kw-2">&amp;</span>v| v == <span class="self">self</span>.version) {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+            }
+
+            <span class="kw">let </span>supported_versions =
+                versions.iter().filter(|&amp;&amp;v| version_is_supported(v));
+
+            <span class="kw">let </span><span class="kw-2">mut </span>found_version = <span class="bool-val">false</span>;
+
+            <span class="kw">for </span><span class="kw-2">&amp;</span>v <span class="kw">in </span>supported_versions {
+                found_version = <span class="bool-val">true</span>;
+
+                <span class="comment">// The final version takes precedence over draft ones.
+                </span><span class="kw">if </span>v == PROTOCOL_VERSION_V1 {
+                    <span class="self">self</span>.version = v;
+                    <span class="kw">break</span>;
+                }
+
+                <span class="self">self</span>.version = cmp::max(<span class="self">self</span>.version, v);
+            }
+
+            <span class="kw">if </span>!found_version {
+                <span class="comment">// We don't support any of the versions offered.
+                //
+                // While a man-in-the-middle attacker might be able to
+                // inject a version negotiation packet that triggers this
+                // failure, the window of opportunity is very small and
+                // this error is quite useful for debugging, so don't just
+                // ignore the packet.
+                </span><span class="kw">return </span><span class="prelude-val">Err</span>(Error::UnknownVersion);
+            }
+
+            <span class="self">self</span>.did_version_negotiation = <span class="bool-val">true</span>;
+
+            <span class="comment">// Derive Initial secrets based on the new version.
+            </span><span class="kw">let </span>(aead_open, aead_seal) = crypto::derive_initial_key_material(
+                <span class="kw-2">&amp;</span><span class="self">self</span>.destination_id(),
+                <span class="self">self</span>.version,
+                <span class="self">self</span>.is_server,
+            )<span class="question-mark">?</span>;
+
+            <span class="comment">// Reset connection state to force sending another Initial packet.
+            </span><span class="self">self</span>.drop_epoch_state(packet::Epoch::Initial, now);
+            <span class="self">self</span>.got_peer_conn_id = <span class="bool-val">false</span>;
+            <span class="self">self</span>.handshake.clear()<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.pkt_num_spaces[packet::Epoch::Initial].crypto_open =
+                <span class="prelude-val">Some</span>(aead_open);
+            <span class="self">self</span>.pkt_num_spaces[packet::Epoch::Initial].crypto_seal =
+                <span class="prelude-val">Some</span>(aead_seal);
+
+            <span class="self">self</span>.handshake
+                .use_legacy_codepoint(<span class="self">self</span>.version != PROTOCOL_VERSION_V1);
+
+            <span class="comment">// Encode transport parameters again, as the new version might be
+            // using a different format.
+            </span><span class="self">self</span>.encode_transport_params()<span class="question-mark">?</span>;
+
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="kw">if </span>hdr.ty == packet::Type::Retry {
+            <span class="comment">// Retry packets can only be sent by the server.
+            </span><span class="kw">if </span><span class="self">self</span>.is_server {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+            }
+
+            <span class="comment">// Ignore duplicate retry.
+            </span><span class="kw">if </span><span class="self">self</span>.did_retry {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+            }
+
+            <span class="comment">// Check if Retry packet is valid.
+            </span><span class="kw">if </span>packet::verify_retry_integrity(
+                <span class="kw-2">&amp;</span>b,
+                <span class="kw-2">&amp;</span><span class="self">self</span>.destination_id(),
+                <span class="self">self</span>.version,
+            )
+            .is_err()
+            {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+            }
+
+            <span class="macro">trace!</span>(<span class="string">"{} rx pkt {:?}"</span>, <span class="self">self</span>.trace_id, hdr);
+
+            <span class="self">self</span>.token = hdr.token;
+            <span class="self">self</span>.did_retry = <span class="bool-val">true</span>;
+
+            <span class="comment">// Remember peer's new connection ID.
+            </span><span class="self">self</span>.odcid = <span class="prelude-val">Some</span>(<span class="self">self</span>.destination_id().into_owned());
+
+            <span class="self">self</span>.set_initial_dcid(
+                hdr.scid.clone(),
+                <span class="prelude-val">None</span>,
+                <span class="self">self</span>.paths.get_active_path_id()<span class="question-mark">?</span>,
+            )<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.rscid = <span class="prelude-val">Some</span>(<span class="self">self</span>.destination_id().into_owned());
+
+            <span class="comment">// Derive Initial secrets using the new connection ID.
+            </span><span class="kw">let </span>(aead_open, aead_seal) = crypto::derive_initial_key_material(
+                <span class="kw-2">&amp;</span>hdr.scid,
+                <span class="self">self</span>.version,
+                <span class="self">self</span>.is_server,
+            )<span class="question-mark">?</span>;
+
+            <span class="comment">// Reset connection state to force sending another Initial packet.
+            </span><span class="self">self</span>.drop_epoch_state(packet::Epoch::Initial, now);
+            <span class="self">self</span>.got_peer_conn_id = <span class="bool-val">false</span>;
+            <span class="self">self</span>.handshake.clear()<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.pkt_num_spaces[packet::Epoch::Initial].crypto_open =
+                <span class="prelude-val">Some</span>(aead_open);
+            <span class="self">self</span>.pkt_num_spaces[packet::Epoch::Initial].crypto_seal =
+                <span class="prelude-val">Some</span>(aead_seal);
+
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="kw">if </span><span class="self">self</span>.is_server &amp;&amp; !<span class="self">self</span>.did_version_negotiation {
+            <span class="kw">if </span>!version_is_supported(hdr.version) {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::UnknownVersion);
+            }
+
+            <span class="self">self</span>.version = hdr.version;
+            <span class="self">self</span>.did_version_negotiation = <span class="bool-val">true</span>;
+
+            <span class="self">self</span>.handshake
+                .use_legacy_codepoint(<span class="self">self</span>.version != PROTOCOL_VERSION_V1);
+
+            <span class="comment">// Encode transport parameters again, as the new version might be
+            // using a different format.
+            </span><span class="self">self</span>.encode_transport_params()<span class="question-mark">?</span>;
+        }
+
+        <span class="kw">if </span>hdr.ty != packet::Type::Short &amp;&amp; hdr.version != <span class="self">self</span>.version {
+            <span class="comment">// At this point version negotiation was already performed, so
+            // ignore packets that don't match the connection's version.
+            </span><span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="comment">// Long header packets have an explicit payload length, but short
+        // packets don't so just use the remaining capacity in the buffer.
+        </span><span class="kw">let </span>payload_len = <span class="kw">if </span>hdr.ty == packet::Type::Short {
+            b.cap()
+        } <span class="kw">else </span>{
+            b.get_varint().map_err(|e| {
+                drop_pkt_on_err(
+                    e.into(),
+                    <span class="self">self</span>.recv_count,
+                    <span class="self">self</span>.is_server,
+                    <span class="kw-2">&amp;</span><span class="self">self</span>.trace_id,
+                )
+            })<span class="question-mark">? </span><span class="kw">as </span>usize
+        };
+
+        <span class="comment">// Make sure the buffer is same or larger than an explicit
+        // payload length.
+        </span><span class="kw">if </span>payload_len &gt; b.cap() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(drop_pkt_on_err(
+                Error::InvalidPacket,
+                <span class="self">self</span>.recv_count,
+                <span class="self">self</span>.is_server,
+                <span class="kw-2">&amp;</span><span class="self">self</span>.trace_id,
+            ));
+        }
+
+        <span class="comment">// Derive initial secrets on the server.
+        </span><span class="kw">if </span>!<span class="self">self</span>.derived_initial_secrets {
+            <span class="kw">let </span>(aead_open, aead_seal) = crypto::derive_initial_key_material(
+                <span class="kw-2">&amp;</span>hdr.dcid,
+                <span class="self">self</span>.version,
+                <span class="self">self</span>.is_server,
+            )<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.pkt_num_spaces[packet::Epoch::Initial].crypto_open =
+                <span class="prelude-val">Some</span>(aead_open);
+            <span class="self">self</span>.pkt_num_spaces[packet::Epoch::Initial].crypto_seal =
+                <span class="prelude-val">Some</span>(aead_seal);
+
+            <span class="self">self</span>.derived_initial_secrets = <span class="bool-val">true</span>;
+        }
+
+        <span class="comment">// Select packet number space epoch based on the received packet's type.
+        </span><span class="kw">let </span>epoch = hdr.ty.to_epoch()<span class="question-mark">?</span>;
+
+        <span class="comment">// Select AEAD context used to open incoming packet.
+        </span><span class="kw">let </span>aead = <span class="kw">if </span>hdr.ty == packet::Type::ZeroRTT {
+            <span class="comment">// Only use 0-RTT key if incoming packet is 0-RTT.
+            </span><span class="self">self</span>.pkt_num_spaces[epoch].crypto_0rtt_open.as_ref()
+        } <span class="kw">else </span>{
+            <span class="comment">// Otherwise use the packet number space's main key.
+            </span><span class="self">self</span>.pkt_num_spaces[epoch].crypto_open.as_ref()
+        };
+
+        <span class="comment">// Finally, discard packet if no usable key is available.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>aead = <span class="kw">match </span>aead {
+            <span class="prelude-val">Some</span>(v) =&gt; v,
+
+            <span class="prelude-val">None </span>=&gt; {
+                <span class="kw">if </span>hdr.ty == packet::Type::ZeroRTT &amp;&amp;
+                    <span class="self">self</span>.undecryptable_pkts.len() &lt; MAX_UNDECRYPTABLE_PACKETS &amp;&amp;
+                    !<span class="self">self</span>.is_established()
+                {
+                    <span class="comment">// Buffer 0-RTT packets when the required read key is not
+                    // available yet, and process them later.
+                    //
+                    // TODO: in the future we might want to buffer other types
+                    // of undecryptable packets as well.
+                    </span><span class="kw">let </span>pkt_len = b.off() + payload_len;
+                    <span class="kw">let </span>pkt = (b.buf()[..pkt_len]).to_vec();
+
+                    <span class="self">self</span>.undecryptable_pkts.push_back((pkt, <span class="kw-2">*</span>info));
+                    <span class="kw">return </span><span class="prelude-val">Ok</span>(pkt_len);
+                }
+
+                <span class="kw">let </span>e = drop_pkt_on_err(
+                    Error::CryptoFail,
+                    <span class="self">self</span>.recv_count,
+                    <span class="self">self</span>.is_server,
+                    <span class="kw-2">&amp;</span><span class="self">self</span>.trace_id,
+                );
+
+                <span class="kw">return </span><span class="prelude-val">Err</span>(e);
+            },
+        };
+
+        <span class="kw">let </span>aead_tag_len = aead.alg().tag_len();
+
+        packet::decrypt_hdr(<span class="kw-2">&amp;mut </span>b, <span class="kw-2">&amp;mut </span>hdr, aead).map_err(|e| {
+            drop_pkt_on_err(e, <span class="self">self</span>.recv_count, <span class="self">self</span>.is_server, <span class="kw-2">&amp;</span><span class="self">self</span>.trace_id)
+        })<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>pn = packet::decode_pkt_num(
+            <span class="self">self</span>.pkt_num_spaces[epoch].largest_rx_pkt_num,
+            hdr.pkt_num,
+            hdr.pkt_num_len,
+        );
+
+        <span class="kw">let </span>pn_len = hdr.pkt_num_len;
+
+        <span class="macro">trace!</span>(
+            <span class="string">"{} rx pkt {:?} len={} pn={} {}"</span>,
+            <span class="self">self</span>.trace_id,
+            hdr,
+            payload_len,
+            pn,
+            AddrTupleFmt(info.from, info.to)
+        );
+
+        <span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+        </span><span class="kw">let </span><span class="kw-2">mut </span>qlog_frames = <span class="macro">vec!</span>[];
+
+        <span class="comment">// Check for key update.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>aead_next = <span class="prelude-val">None</span>;
+
+        <span class="kw">if </span><span class="self">self</span>.handshake_confirmed &amp;&amp;
+            hdr.ty != Type::ZeroRTT &amp;&amp;
+            hdr.key_phase != <span class="self">self</span>.key_phase
+        {
+            <span class="comment">// Check if this packet arrived before key update.
+            </span><span class="kw">if let </span><span class="prelude-val">Some</span>(key_update) = <span class="self">self</span>.pkt_num_spaces[epoch]
+                .key_update
+                .as_ref()
+                .and_then(|key_update| {
+                    (pn &lt; key_update.pn_on_update).then_some(key_update)
+                })
+            {
+                aead = <span class="kw-2">&amp;</span>key_update.crypto_open;
+            } <span class="kw">else </span>{
+                <span class="macro">trace!</span>(<span class="string">"{} peer-initiated key update"</span>, <span class="self">self</span>.trace_id);
+
+                aead_next = <span class="prelude-val">Some</span>((
+                    <span class="self">self</span>.pkt_num_spaces[epoch]
+                        .crypto_open
+                        .as_ref()
+                        .unwrap()
+                        .derive_next_packet_key()<span class="question-mark">?</span>,
+                    <span class="self">self</span>.pkt_num_spaces[epoch]
+                        .crypto_seal
+                        .as_ref()
+                        .unwrap()
+                        .derive_next_packet_key()<span class="question-mark">?</span>,
+                ));
+
+                <span class="comment">// `aead_next` is always `Some()` at this point, so the `unwrap()`
+                // will never fail.
+                </span>aead = <span class="kw-2">&amp;</span>aead_next.as_ref().unwrap().<span class="number">0</span>;
+            }
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>payload = packet::decrypt_pkt(
+            <span class="kw-2">&amp;mut </span>b,
+            pn,
+            pn_len,
+            payload_len,
+            aead,
+        )
+        .map_err(|e| {
+            drop_pkt_on_err(e, <span class="self">self</span>.recv_count, <span class="self">self</span>.is_server, <span class="kw-2">&amp;</span><span class="self">self</span>.trace_id)
+        })<span class="question-mark">?</span>;
+
+        <span class="kw">if </span><span class="self">self</span>.pkt_num_spaces[epoch].recv_pkt_num.contains(pn) {
+            <span class="macro">trace!</span>(<span class="string">"{} ignored duplicate packet {}"</span>, <span class="self">self</span>.trace_id, pn);
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="comment">// Packets with no frames are invalid.
+        </span><span class="kw">if </span>payload.cap() == <span class="number">0 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidPacket);
+        }
+
+        <span class="comment">// Now that we decrypted the packet, let's see if we can map it to an
+        // existing path.
+        </span><span class="kw">let </span>recv_pid = <span class="kw">if </span>hdr.ty == packet::Type::Short &amp;&amp; <span class="self">self</span>.got_peer_conn_id {
+            <span class="kw">let </span>pkt_dcid = ConnectionId::from_ref(<span class="kw-2">&amp;</span>hdr.dcid);
+            <span class="self">self</span>.get_or_create_recv_path_id(recv_pid, <span class="kw-2">&amp;</span>pkt_dcid, buf_len, info)<span class="question-mark">?
+        </span>} <span class="kw">else </span>{
+            <span class="comment">// During handshake, we are on the initial path.
+            </span><span class="self">self</span>.paths.get_active_path_id()<span class="question-mark">?
+        </span>};
+
+        <span class="comment">// The key update is verified once a packet is successfully decrypted
+        // using the new keys.
+        </span><span class="kw">if let </span><span class="prelude-val">Some</span>((open_next, seal_next)) = aead_next {
+            <span class="kw">if </span>!<span class="self">self</span>.pkt_num_spaces[epoch]
+                .key_update
+                .as_ref()
+                .map_or(<span class="bool-val">true</span>, |prev| prev.update_acked)
+            {
+                <span class="comment">// Peer has updated keys twice without awaiting confirmation.
+                </span><span class="kw">return </span><span class="prelude-val">Err</span>(Error::KeyUpdate);
+            }
+
+            <span class="macro">trace!</span>(<span class="string">"{} key update verified"</span>, <span class="self">self</span>.trace_id);
+
+            <span class="kw">let _ </span>= <span class="self">self</span>.pkt_num_spaces[epoch].crypto_seal.replace(seal_next);
+
+            <span class="kw">let </span>open_prev = <span class="self">self</span>.pkt_num_spaces[epoch]
+                .crypto_open
+                .replace(open_next)
+                .unwrap();
+
+            <span class="kw">let </span>recv_path = <span class="self">self</span>.paths.get_mut(recv_pid)<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.pkt_num_spaces[epoch].key_update = <span class="prelude-val">Some</span>(packet::KeyUpdate {
+                crypto_open: open_prev,
+                pn_on_update: pn,
+                update_acked: <span class="bool-val">false</span>,
+                timer: now + (recv_path.recovery.pto() * <span class="number">3</span>),
+            });
+
+            <span class="self">self</span>.key_phase = !<span class="self">self</span>.key_phase;
+
+            <span class="macro">qlog_with_type!</span>(QLOG_PACKET_RX, <span class="self">self</span>.qlog, q, {
+                <span class="kw">let </span>trigger = <span class="prelude-val">Some</span>(
+                    qlog::events::security::KeyUpdateOrRetiredTrigger::RemoteUpdate,
+                );
+
+                <span class="kw">let </span>ev_data_client =
+                    EventData::KeyUpdated(qlog::events::security::KeyUpdated {
+                        key_type:
+                            qlog::events::security::KeyType::Client1RttSecret,
+                        old: <span class="prelude-val">None</span>,
+                        new: String::new(),
+                        generation: <span class="prelude-val">None</span>,
+                        trigger: trigger.clone(),
+                    });
+
+                q.add_event_data_with_instant(ev_data_client, now).ok();
+
+                <span class="kw">let </span>ev_data_server =
+                    EventData::KeyUpdated(qlog::events::security::KeyUpdated {
+                        key_type:
+                            qlog::events::security::KeyType::Server1RttSecret,
+                        old: <span class="prelude-val">None</span>,
+                        new: String::new(),
+                        generation: <span class="prelude-val">None</span>,
+                        trigger,
+                    });
+
+                q.add_event_data_with_instant(ev_data_server, now).ok();
+            });
+        }
+
+        <span class="kw">if </span>!<span class="self">self</span>.is_server &amp;&amp; !<span class="self">self</span>.got_peer_conn_id {
+            <span class="kw">if </span><span class="self">self</span>.odcid.is_none() {
+                <span class="self">self</span>.odcid = <span class="prelude-val">Some</span>(<span class="self">self</span>.destination_id().into_owned());
+            }
+
+            <span class="comment">// Replace the randomly generated destination connection ID with
+            // the one supplied by the server.
+            </span><span class="self">self</span>.set_initial_dcid(
+                hdr.scid.clone(),
+                <span class="self">self</span>.peer_transport_params.stateless_reset_token,
+                recv_pid,
+            )<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.got_peer_conn_id = <span class="bool-val">true</span>;
+        }
+
+        <span class="kw">if </span><span class="self">self</span>.is_server &amp;&amp; !<span class="self">self</span>.got_peer_conn_id {
+            <span class="self">self</span>.set_initial_dcid(hdr.scid.clone(), <span class="prelude-val">None</span>, recv_pid)<span class="question-mark">?</span>;
+
+            <span class="kw">if </span>!<span class="self">self</span>.did_retry {
+                <span class="self">self</span>.local_transport_params
+                    .original_destination_connection_id =
+                    <span class="prelude-val">Some</span>(hdr.dcid.to_vec().into());
+
+                <span class="self">self</span>.encode_transport_params()<span class="question-mark">?</span>;
+            }
+
+            <span class="self">self</span>.got_peer_conn_id = <span class="bool-val">true</span>;
+        }
+
+        <span class="comment">// To avoid sending an ACK in response to an ACK-only packet, we need
+        // to keep track of whether this packet contains any frame other than
+        // ACK and PADDING.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>ack_elicited = <span class="bool-val">false</span>;
+
+        <span class="comment">// Process packet payload. If a frame cannot be processed, store the
+        // error and stop further packet processing.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>frame_processing_err = <span class="prelude-val">None</span>;
+
+        <span class="comment">// To know if the peer migrated the connection, we need to keep track
+        // whether this is a non-probing packet.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>probing = <span class="bool-val">true</span>;
+
+        <span class="comment">// Process packet payload.
+        </span><span class="kw">while </span>payload.cap() &gt; <span class="number">0 </span>{
+            <span class="kw">let </span>frame = frame::Frame::from_bytes(<span class="kw-2">&amp;mut </span>payload, hdr.ty)<span class="question-mark">?</span>;
+
+            <span class="macro">qlog_with_type!</span>(QLOG_PACKET_RX, <span class="self">self</span>.qlog, _q, {
+                qlog_frames.push(frame.to_qlog());
+            });
+
+            <span class="kw">if </span>frame.ack_eliciting() {
+                ack_elicited = <span class="bool-val">true</span>;
+            }
+
+            <span class="kw">if </span>!frame.probing() {
+                probing = <span class="bool-val">false</span>;
+            }
+
+            <span class="kw">if let </span><span class="prelude-val">Err</span>(e) = <span class="self">self</span>.process_frame(frame, <span class="kw-2">&amp;</span>hdr, recv_pid, epoch, now)
+            {
+                frame_processing_err = <span class="prelude-val">Some</span>(e);
+                <span class="kw">break</span>;
+            }
+        }
+
+        <span class="macro">qlog_with_type!</span>(QLOG_PACKET_RX, <span class="self">self</span>.qlog, q, {
+            <span class="kw">let </span>packet_size = b.len();
+
+            <span class="kw">let </span>qlog_pkt_hdr = qlog::events::quic::PacketHeader::with_type(
+                hdr.ty.to_qlog(),
+                <span class="prelude-val">Some</span>(pn),
+                <span class="prelude-val">Some</span>(hdr.version),
+                <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>hdr.scid),
+                <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>hdr.dcid),
+            );
+
+            <span class="kw">let </span>qlog_raw_info = RawInfo {
+                length: <span class="prelude-val">Some</span>(packet_size <span class="kw">as </span>u64),
+                payload_length: <span class="prelude-val">Some</span>(payload_len <span class="kw">as </span>u64),
+                data: <span class="prelude-val">None</span>,
+            };
+
+            <span class="kw">let </span>ev_data =
+                EventData::PacketReceived(qlog::events::quic::PacketReceived {
+                    header: qlog_pkt_hdr,
+                    frames: <span class="prelude-val">Some</span>(qlog_frames),
+                    is_coalesced: <span class="prelude-val">None</span>,
+                    retry_token: <span class="prelude-val">None</span>,
+                    stateless_reset_token: <span class="prelude-val">None</span>,
+                    supported_versions: <span class="prelude-val">None</span>,
+                    raw: <span class="prelude-val">Some</span>(qlog_raw_info),
+                    datagram_id: <span class="prelude-val">None</span>,
+                    trigger: <span class="prelude-val">None</span>,
+                });
+
+            q.add_event_data_with_instant(ev_data, now).ok();
+        });
+
+        <span class="macro">qlog_with_type!</span>(QLOG_PACKET_RX, <span class="self">self</span>.qlog, q, {
+            <span class="kw">let </span>recv_path = <span class="self">self</span>.paths.get_mut(recv_pid)<span class="question-mark">?</span>;
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(ev_data) = recv_path.recovery.maybe_qlog() {
+                q.add_event_data_with_instant(ev_data, now).ok();
+            }
+        });
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(e) = frame_processing_err {
+            <span class="comment">// Any frame error is terminal, so now just return.
+            </span><span class="kw">return </span><span class="prelude-val">Err</span>(e);
+        }
+
+        <span class="comment">// Only log the remote transport parameters once the connection is
+        // established (i.e. after frames have been fully parsed) and only
+        // once per connection.
+        </span><span class="kw">if </span><span class="self">self</span>.is_established() {
+            <span class="macro">qlog_with_type!</span>(QLOG_PARAMS_SET, <span class="self">self</span>.qlog, q, {
+                <span class="kw">if </span>!<span class="self">self</span>.qlog.logged_peer_params {
+                    <span class="kw">let </span>ev_data = <span class="self">self
+                        </span>.peer_transport_params
+                        .to_qlog(TransportOwner::Remote, <span class="self">self</span>.handshake.cipher());
+
+                    q.add_event_data_with_instant(ev_data, now).ok();
+
+                    <span class="self">self</span>.qlog.logged_peer_params = <span class="bool-val">true</span>;
+                }
+            });
+        }
+
+        <span class="comment">// Following flag used to upgrade datagram size, if probe is successful.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>pmtud_probe = <span class="bool-val">false</span>;
+
+        <span class="comment">// Process acked frames. Note that several packets from several paths
+        // might have been acked by the received packet.
+        </span><span class="kw">for </span>(<span class="kw">_</span>, p) <span class="kw">in </span><span class="self">self</span>.paths.iter_mut() {
+            <span class="kw">for </span>acked <span class="kw">in </span>p.recovery.acked[epoch].drain(..) {
+                <span class="kw">match </span>acked {
+                    frame::Frame::Ping {
+                        mtu_probe: <span class="prelude-val">Some</span>(mtu_probe),
+                    } =&gt; {
+                        <span class="kw">let </span>pmtud_next = p.pmtud.get_current();
+                        p.pmtud.set_current(cmp::max(pmtud_next, mtu_probe));
+
+                        <span class="comment">// Stop sending path MTU probes after successful probe.
+                        </span>p.pmtud.should_probe(<span class="bool-val">false</span>);
+                        pmtud_probe = <span class="bool-val">true</span>;
+
+                        <span class="macro">trace!</span>(
+                            <span class="string">"{} pmtud acked; pmtu size {:?}"</span>,
+                            <span class="self">self</span>.trace_id,
+                            p.pmtud.get_current()
+                        );
+                    },
+
+                    frame::Frame::ACK { ranges, .. } =&gt; {
+                        <span class="comment">// Stop acknowledging packets less than or equal to the
+                        // largest acknowledged in the sent ACK frame that, in
+                        // turn, got acked.
+                        </span><span class="kw">if let </span><span class="prelude-val">Some</span>(largest_acked) = ranges.last() {
+                            <span class="self">self</span>.pkt_num_spaces[epoch]
+                                .recv_pkt_need_ack
+                                .remove_until(largest_acked);
+                        }
+                    },
+
+                    frame::Frame::CryptoHeader { offset, length } =&gt; {
+                        <span class="self">self</span>.pkt_num_spaces[epoch]
+                            .crypto_stream
+                            .send
+                            .ack_and_drop(offset, length);
+                    },
+
+                    frame::Frame::StreamHeader {
+                        stream_id,
+                        offset,
+                        length,
+                        ..
+                    } =&gt; {
+                        <span class="kw">let </span>stream = <span class="kw">match </span><span class="self">self</span>.streams.get_mut(stream_id) {
+                            <span class="prelude-val">Some</span>(v) =&gt; v,
+
+                            <span class="prelude-val">None </span>=&gt; <span class="kw">continue</span>,
+                        };
+
+                        stream.send.ack_and_drop(offset, length);
+
+                        <span class="self">self</span>.tx_buffered =
+                            <span class="self">self</span>.tx_buffered.saturating_sub(length);
+
+                        <span class="macro">qlog_with_type!</span>(QLOG_DATA_MV, <span class="self">self</span>.qlog, q, {
+                            <span class="kw">let </span>ev_data = EventData::DataMoved(
+                                qlog::events::quic::DataMoved {
+                                    stream_id: <span class="prelude-val">Some</span>(stream_id),
+                                    offset: <span class="prelude-val">Some</span>(offset),
+                                    length: <span class="prelude-val">Some</span>(length <span class="kw">as </span>u64),
+                                    from: <span class="prelude-val">Some</span>(DataRecipient::Transport),
+                                    to: <span class="prelude-val">Some</span>(DataRecipient::Dropped),
+                                    raw: <span class="prelude-val">None</span>,
+                                },
+                            );
+
+                            q.add_event_data_with_instant(ev_data, now).ok();
+                        });
+
+                        <span class="comment">// Only collect the stream if it is complete and not
+                        // readable. If it is readable, it will get collected when
+                        // stream_recv() is used.
+                        </span><span class="kw">if </span>stream.is_complete() &amp;&amp; !stream.is_readable() {
+                            <span class="kw">let </span>local = stream.local;
+                            <span class="self">self</span>.streams.collect(stream_id, local);
+                        }
+                    },
+
+                    frame::Frame::HandshakeDone =&gt; {
+                        <span class="comment">// Explicitly set this to true, so that if the frame was
+                        // already scheduled for retransmission, it is aborted.
+                        </span><span class="self">self</span>.handshake_done_sent = <span class="bool-val">true</span>;
+
+                        <span class="self">self</span>.handshake_done_acked = <span class="bool-val">true</span>;
+                    },
+
+                    frame::Frame::ResetStream { stream_id, .. } =&gt; {
+                        <span class="kw">let </span>stream = <span class="kw">match </span><span class="self">self</span>.streams.get_mut(stream_id) {
+                            <span class="prelude-val">Some</span>(v) =&gt; v,
+
+                            <span class="prelude-val">None </span>=&gt; <span class="kw">continue</span>,
+                        };
+
+                        <span class="comment">// Only collect the stream if it is complete and not
+                        // readable. If it is readable, it will get collected when
+                        // stream_recv() is used.
+                        </span><span class="kw">if </span>stream.is_complete() &amp;&amp; !stream.is_readable() {
+                            <span class="kw">let </span>local = stream.local;
+                            <span class="self">self</span>.streams.collect(stream_id, local);
+                        }
+                    },
+
+                    <span class="kw">_ </span>=&gt; (),
+                }
+            }
+
+            <span class="comment">// Update max datagram send size with newly acked probe size.
+            </span><span class="kw">if </span>pmtud_probe {
+                <span class="macro">trace!</span>(
+                    <span class="string">"{} updating pmtu {:?}"</span>,
+                    p.pmtud.get_current(),
+                    <span class="self">self</span>.trace_id
+                );
+
+                <span class="macro">qlog_with_type!</span>(
+                    EventType::ConnectivityEventType(
+                        ConnectivityEventType::MtuUpdated
+                    ),
+                    <span class="self">self</span>.qlog,
+                    q,
+                    {
+                        <span class="kw">let </span>pmtu_data = EventData::MtuUpdated(
+                            qlog::events::connectivity::MtuUpdated {
+                                old: <span class="prelude-val">Some</span>(p.recovery.max_datagram_size() <span class="kw">as </span>u16),
+                                new: p.pmtud.get_current() <span class="kw">as </span>u16,
+                                done: <span class="prelude-val">Some</span>(pmtud_probe),
+                            },
+                        );
+
+                        q.add_event_data_with_instant(pmtu_data, now).ok();
+                    }
+                );
+
+                p.recovery
+                    .pmtud_update_max_datagram_size(p.pmtud.get_current());
+            }
+        }
+
+        <span class="comment">// Now that we processed all the frames, if there is a path that has no
+        // Destination CID, try to allocate one.
+        </span><span class="kw">let </span>no_dcid = <span class="self">self
+            </span>.paths
+            .iter_mut()
+            .filter(|(<span class="kw">_</span>, p)| p.active_dcid_seq.is_none());
+
+        <span class="kw">for </span>(pid, p) <span class="kw">in </span>no_dcid {
+            <span class="kw">if </span><span class="self">self</span>.ids.zero_length_dcid() {
+                p.active_dcid_seq = <span class="prelude-val">Some</span>(<span class="number">0</span>);
+                <span class="kw">continue</span>;
+            }
+
+            <span class="kw">let </span>dcid_seq = <span class="kw">match </span><span class="self">self</span>.ids.lowest_available_dcid_seq() {
+                <span class="prelude-val">Some</span>(seq) =&gt; seq,
+                <span class="prelude-val">None </span>=&gt; <span class="kw">break</span>,
+            };
+
+            <span class="self">self</span>.ids.link_dcid_to_path_id(dcid_seq, pid)<span class="question-mark">?</span>;
+
+            p.active_dcid_seq = <span class="prelude-val">Some</span>(dcid_seq);
+        }
+
+        <span class="comment">// We only record the time of arrival of the largest packet number
+        // that still needs to be acked, to be used for ACK delay calculation.
+        </span><span class="kw">if </span><span class="self">self</span>.pkt_num_spaces[epoch].recv_pkt_need_ack.last() &lt; <span class="prelude-val">Some</span>(pn) {
+            <span class="self">self</span>.pkt_num_spaces[epoch].largest_rx_pkt_time = now;
+        }
+
+        <span class="self">self</span>.pkt_num_spaces[epoch].recv_pkt_num.insert(pn);
+
+        <span class="self">self</span>.pkt_num_spaces[epoch].recv_pkt_need_ack.push_item(pn);
+
+        <span class="self">self</span>.pkt_num_spaces[epoch].ack_elicited =
+            cmp::max(<span class="self">self</span>.pkt_num_spaces[epoch].ack_elicited, ack_elicited);
+
+        <span class="self">self</span>.pkt_num_spaces[epoch].largest_rx_pkt_num =
+            cmp::max(<span class="self">self</span>.pkt_num_spaces[epoch].largest_rx_pkt_num, pn);
+
+        <span class="kw">if </span>!probing {
+            <span class="self">self</span>.pkt_num_spaces[epoch].largest_rx_non_probing_pkt_num = cmp::max(
+                <span class="self">self</span>.pkt_num_spaces[epoch].largest_rx_non_probing_pkt_num,
+                pn,
+            );
+
+            <span class="comment">// Did the peer migrated to another path?
+            </span><span class="kw">let </span>active_path_id = <span class="self">self</span>.paths.get_active_path_id()<span class="question-mark">?</span>;
+
+            <span class="kw">if </span><span class="self">self</span>.is_server &amp;&amp;
+                recv_pid != active_path_id &amp;&amp;
+                <span class="self">self</span>.pkt_num_spaces[epoch].largest_rx_non_probing_pkt_num == pn
+            {
+                <span class="self">self</span>.on_peer_migrated(recv_pid, <span class="self">self</span>.disable_dcid_reuse, now)<span class="question-mark">?</span>;
+            }
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(idle_timeout) = <span class="self">self</span>.idle_timeout() {
+            <span class="self">self</span>.idle_timer = <span class="prelude-val">Some</span>(now + idle_timeout);
+        }
+
+        <span class="comment">// Update send capacity.
+        </span><span class="self">self</span>.update_tx_cap();
+
+        <span class="self">self</span>.recv_count += <span class="number">1</span>;
+        <span class="self">self</span>.paths.get_mut(recv_pid)<span class="question-mark">?</span>.recv_count += <span class="number">1</span>;
+
+        <span class="kw">let </span>read = b.off() + aead_tag_len;
+
+        <span class="self">self</span>.recv_bytes += read <span class="kw">as </span>u64;
+        <span class="self">self</span>.paths.get_mut(recv_pid)<span class="question-mark">?</span>.recv_bytes += read <span class="kw">as </span>u64;
+
+        <span class="comment">// An Handshake packet has been received from the client and has been
+        // successfully processed, so we can drop the initial state and consider
+        // the client's address to be verified.
+        </span><span class="kw">if </span><span class="self">self</span>.is_server &amp;&amp; hdr.ty == packet::Type::Handshake {
+            <span class="self">self</span>.drop_epoch_state(packet::Epoch::Initial, now);
+
+            <span class="self">self</span>.paths.get_mut(recv_pid)<span class="question-mark">?</span>.verified_peer_address = <span class="bool-val">true</span>;
+        }
+
+        <span class="self">self</span>.ack_eliciting_sent = <span class="bool-val">false</span>;
+
+        <span class="prelude-val">Ok</span>(read)
+    }
+
+    <span class="doccomment">/// Writes a single QUIC packet to be sent to the peer.
+    ///
+    /// On success the number of bytes written to the output buffer is
+    /// returned, or [`Done`] if there was nothing to write.
+    ///
+    /// The application should call `send()` multiple times until [`Done`] is
+    /// returned, indicating that there are no more packets to send. It is
+    /// recommended that `send()` be called in the following cases:
+    ///
+    ///  * When the application receives QUIC packets from the peer (that is,
+    ///    any time [`recv()`] is also called).
+    ///
+    ///  * When the connection timer expires (that is, any time [`on_timeout()`]
+    ///    is also called).
+    ///
+    ///  * When the application sends data to the peer (for example, any time
+    ///    [`stream_send()`] or [`stream_shutdown()`] are called).
+    ///
+    ///  * When the application receives data from the peer (for example any
+    ///    time [`stream_recv()`] is called).
+    ///
+    /// Once [`is_draining()`] returns `true`, it is no longer necessary to call
+    /// `send()` and all calls will return [`Done`].
+    ///
+    /// [`Done`]: enum.Error.html#variant.Done
+    /// [`recv()`]: struct.Connection.html#method.recv
+    /// [`on_timeout()`]: struct.Connection.html#method.on_timeout
+    /// [`stream_send()`]: struct.Connection.html#method.stream_send
+    /// [`stream_shutdown()`]: struct.Connection.html#method.stream_shutdown
+    /// [`stream_recv()`]: struct.Connection.html#method.stream_recv
+    /// [`is_draining()`]: struct.Connection.html#method.is_draining
+    ///
+    /// ## Examples:
+    ///
+    /// ```no_run
+    /// # let mut out = [0; 512];
+    /// # let socket = std::net::UdpSocket::bind("127.0.0.1:0").unwrap();
+    /// # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+    /// # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+    /// # let peer = "127.0.0.1:1234".parse().unwrap();
+    /// # let local = socket.local_addr().unwrap();
+    /// # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+    /// loop {
+    ///     let (write, send_info) = match conn.send(&amp;mut out) {
+    ///         Ok(v) =&gt; v,
+    ///
+    ///         Err(quiche::Error::Done) =&gt; {
+    ///             // Done writing.
+    ///             break;
+    ///         },
+    ///
+    ///         Err(e) =&gt; {
+    ///             // An error occurred, handle it.
+    ///             break;
+    ///         },
+    ///     };
+    ///
+    ///     socket.send_to(&amp;out[..write], &amp;send_info.to).unwrap();
+    /// }
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="kw">pub fn </span>send(<span class="kw-2">&amp;mut </span><span class="self">self</span>, out: <span class="kw-2">&amp;mut </span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;(usize, SendInfo)&gt; {
+        <span class="self">self</span>.send_on_path(out, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>)
+    }
+
+    <span class="doccomment">/// Writes a single QUIC packet to be sent to the peer from the specified
+    /// local address `from` to the destination address `to`.
+    ///
+    /// The behavior of this method differs depending on the value of the `from`
+    /// and `to` parameters:
+    ///
+    ///  * If both are `Some`, then the method only consider the 4-tuple
+    ///    (`from`, `to`). Application can monitor the 4-tuple availability,
+    ///    either by monitoring [`path_event_next()`] events or by relying on
+    ///    the [`paths_iter()`] method. If the provided 4-tuple does not exist
+    ///    on the connection (anymore), it returns an [`InvalidState`].
+    ///
+    ///  * If `from` is `Some` and `to` is `None`, then the method only
+    ///    considers sending packets on paths having `from` as local address.
+    ///
+    ///  * If `to` is `Some` and `from` is `None`, then the method only
+    ///    considers sending packets on paths having `to` as peer address.
+    ///
+    ///  * If both are `None`, all available paths are considered.
+    ///
+    /// On success the number of bytes written to the output buffer is
+    /// returned, or [`Done`] if there was nothing to write.
+    ///
+    /// The application should call `send_on_path()` multiple times until
+    /// [`Done`] is returned, indicating that there are no more packets to
+    /// send. It is recommended that `send_on_path()` be called in the
+    /// following cases:
+    ///
+    ///  * When the application receives QUIC packets from the peer (that is,
+    ///    any time [`recv()`] is also called).
+    ///
+    ///  * When the connection timer expires (that is, any time [`on_timeout()`]
+    ///    is also called).
+    ///
+    ///  * When the application sends data to the peer (for examples, any time
+    ///    [`stream_send()`] or [`stream_shutdown()`] are called).
+    ///
+    ///  * When the application receives data from the peer (for example any
+    ///    time [`stream_recv()`] is called).
+    ///
+    /// Once [`is_draining()`] returns `true`, it is no longer necessary to call
+    /// `send_on_path()` and all calls will return [`Done`].
+    ///
+    /// [`Done`]: enum.Error.html#variant.Done
+    /// [`InvalidState`]: enum.Error.html#InvalidState
+    /// [`recv()`]: struct.Connection.html#method.recv
+    /// [`on_timeout()`]: struct.Connection.html#method.on_timeout
+    /// [`stream_send()`]: struct.Connection.html#method.stream_send
+    /// [`stream_shutdown()`]: struct.Connection.html#method.stream_shutdown
+    /// [`stream_recv()`]: struct.Connection.html#method.stream_recv
+    /// [`path_event_next()`]: struct.Connection.html#method.path_event_next
+    /// [`paths_iter()`]: struct.Connection.html#method.paths_iter
+    /// [`is_draining()`]: struct.Connection.html#method.is_draining
+    ///
+    /// ## Examples:
+    ///
+    /// ```no_run
+    /// # let mut out = [0; 512];
+    /// # let socket = std::net::UdpSocket::bind("127.0.0.1:0").unwrap();
+    /// # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+    /// # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+    /// # let peer = "127.0.0.1:1234".parse().unwrap();
+    /// # let local = socket.local_addr().unwrap();
+    /// # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+    /// loop {
+    ///     let (write, send_info) = match conn.send_on_path(&amp;mut out, Some(local), Some(peer)) {
+    ///         Ok(v) =&gt; v,
+    ///
+    ///         Err(quiche::Error::Done) =&gt; {
+    ///             // Done writing.
+    ///             break;
+    ///         },
+    ///
+    ///         Err(e) =&gt; {
+    ///             // An error occurred, handle it.
+    ///             break;
+    ///         },
+    ///     };
+    ///
+    ///     socket.send_to(&amp;out[..write], &amp;send_info.to).unwrap();
+    /// }
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="kw">pub fn </span>send_on_path(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, out: <span class="kw-2">&amp;mut </span>[u8], from: <span class="prelude-ty">Option</span>&lt;SocketAddr&gt;,
+        to: <span class="prelude-ty">Option</span>&lt;SocketAddr&gt;,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;(usize, SendInfo)&gt; {
+        <span class="kw">if </span>out.is_empty() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::BufferTooShort);
+        }
+
+        <span class="kw">if </span><span class="self">self</span>.is_closed() || <span class="self">self</span>.is_draining() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="kw">let </span>now = time::Instant::now();
+
+        <span class="kw">if </span><span class="self">self</span>.local_error.is_none() {
+            <span class="self">self</span>.do_handshake(now)<span class="question-mark">?</span>;
+        }
+
+        <span class="comment">// Forwarding the error value here could confuse
+        // applications, as they may not expect getting a `recv()`
+        // error when calling `send()`.
+        //
+        // We simply fall-through to sending packets, which should
+        // take care of terminating the connection as needed.
+        </span><span class="kw">let _ </span>= <span class="self">self</span>.process_undecrypted_0rtt_packets();
+
+        <span class="comment">// There's no point in trying to send a packet if the Initial secrets
+        // have not been derived yet, so return early.
+        </span><span class="kw">if </span>!<span class="self">self</span>.derived_initial_secrets {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>has_initial = <span class="bool-val">false</span>;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>done = <span class="number">0</span>;
+
+        <span class="comment">// Limit output packet size to respect the sender and receiver's
+        // maximum UDP payload size limit.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>left = cmp::min(out.len(), <span class="self">self</span>.max_send_udp_payload_size());
+
+        <span class="kw">let </span>send_pid = <span class="kw">match </span>(from, to) {
+            (<span class="prelude-val">Some</span>(f), <span class="prelude-val">Some</span>(t)) =&gt; <span class="self">self
+                </span>.paths
+                .path_id_from_addrs(<span class="kw-2">&amp;</span>(f, t))
+                .ok_or(Error::InvalidState)<span class="question-mark">?</span>,
+
+            <span class="kw">_ </span>=&gt; <span class="self">self</span>.get_send_path_id(from, to)<span class="question-mark">?</span>,
+        };
+
+        <span class="kw">let </span>send_path = <span class="self">self</span>.paths.get_mut(send_pid)<span class="question-mark">?</span>;
+
+        <span class="comment">// Update max datagram size to allow path MTU discovery probe to be sent.
+        </span><span class="kw">if </span>send_path.pmtud.get_probe_status() {
+            <span class="kw">let </span>size = <span class="kw">if </span><span class="self">self</span>.handshake_confirmed || <span class="self">self</span>.handshake_done_sent {
+                send_path.pmtud.get_probe_size()
+            } <span class="kw">else </span>{
+                send_path.pmtud.get_current()
+            };
+
+            send_path.recovery.pmtud_update_max_datagram_size(size);
+
+            left = cmp::min(out.len(), send_path.recovery.max_datagram_size());
+        }
+
+        <span class="comment">// Limit data sent by the server based on the amount of data received
+        // from the client before its address is validated.
+        </span><span class="kw">if </span>!send_path.verified_peer_address &amp;&amp; <span class="self">self</span>.is_server {
+            left = cmp::min(left, send_path.max_send_bytes);
+        }
+
+        <span class="comment">// Generate coalesced packets.
+        </span><span class="kw">while </span>left &gt; <span class="number">0 </span>{
+            <span class="kw">let </span>(ty, written) = <span class="kw">match </span><span class="self">self</span>.send_single(
+                <span class="kw-2">&amp;mut </span>out[done..done + left],
+                send_pid,
+                has_initial,
+                now,
+            ) {
+                <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                <span class="prelude-val">Err</span>(Error::BufferTooShort) | <span class="prelude-val">Err</span>(Error::Done) =&gt; <span class="kw">break</span>,
+
+                <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+            };
+
+            done += written;
+            left -= written;
+
+            <span class="kw">match </span>ty {
+                packet::Type::Initial =&gt; has_initial = <span class="bool-val">true</span>,
+
+                <span class="comment">// No more packets can be coalesced after a 1-RTT.
+                </span>packet::Type::Short =&gt; <span class="kw">break</span>,
+
+                <span class="kw">_ </span>=&gt; (),
+            };
+
+            <span class="comment">// When sending multiple PTO probes, don't coalesce them together,
+            // so they are sent on separate UDP datagrams.
+            </span><span class="kw">if let </span><span class="prelude-val">Ok</span>(epoch) = ty.to_epoch() {
+                <span class="kw">if </span><span class="self">self</span>.paths.get_mut(send_pid)<span class="question-mark">?</span>.recovery.loss_probes[epoch] &gt; <span class="number">0 </span>{
+                    <span class="kw">break</span>;
+                }
+            }
+
+            <span class="comment">// Don't coalesce packets that must go on different paths.
+            </span><span class="kw">if </span>!(from.is_some() &amp;&amp; to.is_some()) &amp;&amp;
+                <span class="self">self</span>.get_send_path_id(from, to)<span class="question-mark">? </span>!= send_pid
+            {
+                <span class="kw">break</span>;
+            }
+        }
+
+        <span class="kw">if </span>done == <span class="number">0 </span>{
+            <span class="self">self</span>.last_tx_data = <span class="self">self</span>.tx_data;
+
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="comment">// Pad UDP datagram if it contains a QUIC Initial packet.
+        </span><span class="attr">#[cfg(not(feature = <span class="string">"fuzzing"</span>))]
+        </span><span class="kw">if </span>has_initial &amp;&amp; left &gt; <span class="number">0 </span>&amp;&amp; done &lt; MIN_CLIENT_INITIAL_LEN {
+            <span class="kw">let </span>pad_len = cmp::min(left, MIN_CLIENT_INITIAL_LEN - done);
+
+            <span class="comment">// Fill padding area with null bytes, to avoid leaking information
+            // in case the application reuses the packet buffer.
+            </span>out[done..done + pad_len].fill(<span class="number">0</span>);
+
+            done += pad_len;
+        }
+
+        <span class="kw">let </span>send_path = <span class="self">self</span>.paths.get(send_pid)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>info = SendInfo {
+            from: send_path.local_addr(),
+            to: send_path.peer_addr(),
+
+            at: send_path.recovery.get_packet_send_time(),
+        };
+
+        <span class="prelude-val">Ok</span>((done, info))
+    }
+
+    <span class="kw">fn </span>send_single(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, out: <span class="kw-2">&amp;mut </span>[u8], send_pid: usize, has_initial: bool,
+        now: time::Instant,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;(packet::Type, usize)&gt; {
+        <span class="kw">if </span>out.is_empty() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::BufferTooShort);
+        }
+
+        <span class="kw">if </span><span class="self">self</span>.is_draining() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="kw">let </span>is_closing = <span class="self">self</span>.local_error.is_some();
+
+        <span class="kw">let </span>out_len = out.len();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(out);
+
+        <span class="kw">let </span>pkt_type = <span class="self">self</span>.write_pkt_type(send_pid)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>max_dgram_len = <span class="kw">if </span>!<span class="self">self</span>.dgram_send_queue.is_empty() {
+            <span class="self">self</span>.dgram_max_writable_len()
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="kw">let </span>epoch = pkt_type.to_epoch()<span class="question-mark">?</span>;
+        <span class="kw">let </span>pkt_space = <span class="kw-2">&amp;mut </span><span class="self">self</span>.pkt_num_spaces[epoch];
+
+        <span class="comment">// Process lost frames. There might be several paths having lost frames.
+        </span><span class="kw">for </span>(<span class="kw">_</span>, p) <span class="kw">in </span><span class="self">self</span>.paths.iter_mut() {
+            <span class="kw">for </span>lost <span class="kw">in </span>p.recovery.lost[epoch].drain(..) {
+                <span class="kw">match </span>lost {
+                    frame::Frame::CryptoHeader { offset, length } =&gt; {
+                        pkt_space.crypto_stream.send.retransmit(offset, length);
+
+                        <span class="self">self</span>.stream_retrans_bytes += length <span class="kw">as </span>u64;
+                        p.stream_retrans_bytes += length <span class="kw">as </span>u64;
+
+                        <span class="self">self</span>.retrans_count += <span class="number">1</span>;
+                        p.retrans_count += <span class="number">1</span>;
+                    },
+
+                    frame::Frame::StreamHeader {
+                        stream_id,
+                        offset,
+                        length,
+                        fin,
+                    } =&gt; {
+                        <span class="kw">let </span>stream = <span class="kw">match </span><span class="self">self</span>.streams.get_mut(stream_id) {
+                            <span class="prelude-val">Some</span>(v) =&gt; v,
+
+                            <span class="prelude-val">None </span>=&gt; <span class="kw">continue</span>,
+                        };
+
+                        <span class="kw">let </span>was_flushable = stream.is_flushable();
+
+                        <span class="kw">let </span>empty_fin = length == <span class="number">0 </span>&amp;&amp; fin;
+
+                        stream.send.retransmit(offset, length);
+
+                        <span class="comment">// If the stream is now flushable push it to the
+                        // flushable queue, but only if it wasn't already
+                        // queued.
+                        //
+                        // Consider the stream flushable also when we are
+                        // sending a zero-length frame that has the fin flag
+                        // set.
+                        </span><span class="kw">if </span>(stream.is_flushable() || empty_fin) &amp;&amp; !was_flushable
+                        {
+                            <span class="kw">let </span>priority_key = Arc::clone(<span class="kw-2">&amp;</span>stream.priority_key);
+                            <span class="self">self</span>.streams.insert_flushable(<span class="kw-2">&amp;</span>priority_key);
+                        }
+
+                        <span class="self">self</span>.stream_retrans_bytes += length <span class="kw">as </span>u64;
+                        p.stream_retrans_bytes += length <span class="kw">as </span>u64;
+
+                        <span class="self">self</span>.retrans_count += <span class="number">1</span>;
+                        p.retrans_count += <span class="number">1</span>;
+                    },
+
+                    frame::Frame::ACK { .. } =&gt; {
+                        pkt_space.ack_elicited = <span class="bool-val">true</span>;
+                    },
+
+                    frame::Frame::ResetStream {
+                        stream_id,
+                        error_code,
+                        final_size,
+                    } =&gt;
+                        <span class="kw">if </span><span class="self">self</span>.streams.get(stream_id).is_some() {
+                            <span class="self">self</span>.streams
+                                .insert_reset(stream_id, error_code, final_size);
+                        },
+
+                    <span class="comment">// Retransmit HANDSHAKE_DONE only if it hasn't been acked at
+                    // least once already.
+                    </span>frame::Frame::HandshakeDone <span class="kw">if </span>!<span class="self">self</span>.handshake_done_acked =&gt; {
+                        <span class="self">self</span>.handshake_done_sent = <span class="bool-val">false</span>;
+                    },
+
+                    frame::Frame::MaxStreamData { stream_id, .. } =&gt; {
+                        <span class="kw">if </span><span class="self">self</span>.streams.get(stream_id).is_some() {
+                            <span class="self">self</span>.streams.insert_almost_full(stream_id);
+                        }
+                    },
+
+                    frame::Frame::MaxData { .. } =&gt; {
+                        <span class="self">self</span>.almost_full = <span class="bool-val">true</span>;
+                    },
+
+                    frame::Frame::NewConnectionId { seq_num, .. } =&gt; {
+                        <span class="self">self</span>.ids.mark_advertise_new_scid_seq(seq_num, <span class="bool-val">true</span>);
+                    },
+
+                    frame::Frame::RetireConnectionId { seq_num } =&gt; {
+                        <span class="self">self</span>.ids.mark_retire_dcid_seq(seq_num, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
+                    },
+
+                    frame::Frame::Ping { mtu_probe } <span class="kw">if </span>mtu_probe.is_some() =&gt; {
+                        p.pmtud.pmtu_probe_lost();
+                    },
+
+                    <span class="kw">_ </span>=&gt; (),
+                }
+            }
+        }
+
+        <span class="kw">let </span>is_app_limited = <span class="self">self</span>.delivery_rate_check_if_app_limited();
+        <span class="kw">let </span>n_paths = <span class="self">self</span>.paths.len();
+        <span class="kw">let </span>path = <span class="self">self</span>.paths.get_mut(send_pid)<span class="question-mark">?</span>;
+        <span class="kw">let </span>flow_control = <span class="kw-2">&amp;mut </span><span class="self">self</span>.flow_control;
+        <span class="kw">let </span>pkt_space = <span class="kw-2">&amp;mut </span><span class="self">self</span>.pkt_num_spaces[epoch];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>left = <span class="kw">if </span>path.pmtud.is_enabled() {
+            <span class="comment">// Limit output buffer size by estimated path MTU.
+            </span>cmp::min(path.pmtud.get_current(), b.cap())
+        } <span class="kw">else </span>{
+            b.cap()
+        };
+
+        <span class="kw">let </span>pn = pkt_space.next_pkt_num;
+        <span class="kw">let </span>pn_len = packet::pkt_num_len(pn)<span class="question-mark">?</span>;
+
+        <span class="comment">// The AEAD overhead at the current encryption level.
+        </span><span class="kw">let </span>crypto_overhead = pkt_space.crypto_overhead().ok_or(Error::Done)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>dcid_seq = path.active_dcid_seq.ok_or(Error::OutOfIdentifiers)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>dcid =
+            ConnectionId::from_ref(<span class="self">self</span>.ids.get_dcid(dcid_seq)<span class="question-mark">?</span>.cid.as_ref());
+
+        <span class="kw">let </span>scid = <span class="kw">if let </span><span class="prelude-val">Some</span>(scid_seq) = path.active_scid_seq {
+            ConnectionId::from_ref(<span class="self">self</span>.ids.get_scid(scid_seq)<span class="question-mark">?</span>.cid.as_ref())
+        } <span class="kw">else if </span>pkt_type == packet::Type::Short {
+            ConnectionId::default()
+        } <span class="kw">else </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState);
+        };
+
+        <span class="kw">let </span>hdr = Header {
+            ty: pkt_type,
+
+            version: <span class="self">self</span>.version,
+
+            dcid,
+            scid,
+
+            pkt_num: <span class="number">0</span>,
+            pkt_num_len: pn_len,
+
+            <span class="comment">// Only clone token for Initial packets, as other packets don't have
+            // this field (Retry doesn't count, as it's not encoded as part of
+            // this code path).
+            </span>token: <span class="kw">if </span>pkt_type == packet::Type::Initial {
+                <span class="self">self</span>.token.clone()
+            } <span class="kw">else </span>{
+                <span class="prelude-val">None
+            </span>},
+
+            versions: <span class="prelude-val">None</span>,
+            key_phase: <span class="self">self</span>.key_phase,
+        };
+
+        hdr.to_bytes(<span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>hdr_trace = <span class="kw">if </span>log::max_level() == log::LevelFilter::Trace {
+            <span class="prelude-val">Some</span>(<span class="macro">format!</span>(<span class="string">"{hdr:?}"</span>))
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="kw">let </span>hdr_ty = hdr.ty;
+
+        <span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+        </span><span class="kw">let </span>qlog_pkt_hdr = <span class="self">self</span>.qlog.streamer.as_ref().map(|_q| {
+            qlog::events::quic::PacketHeader::with_type(
+                hdr.ty.to_qlog(),
+                <span class="prelude-val">Some</span>(pn),
+                <span class="prelude-val">Some</span>(hdr.version),
+                <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>hdr.scid),
+                <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>hdr.dcid),
+            )
+        });
+
+        <span class="comment">// Calculate the space required for the packet, including the header
+        // the payload length, the packet number and the AEAD overhead.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>overhead = b.off() + pn_len + crypto_overhead;
+
+        <span class="comment">// We assume that the payload length, which is only present in long
+        // header packets, can always be encoded with a 2-byte varint.
+        </span><span class="kw">if </span>pkt_type != packet::Type::Short {
+            overhead += PAYLOAD_LENGTH_LEN;
+        }
+
+        <span class="comment">// Make sure we have enough space left for the packet overhead.
+        </span><span class="kw">match </span>left.checked_sub(overhead) {
+            <span class="prelude-val">Some</span>(v) =&gt; left = v,
+
+            <span class="prelude-val">None </span>=&gt; {
+                <span class="comment">// We can't send more because there isn't enough space available
+                // in the output buffer.
+                //
+                // This usually happens when we try to send a new packet but
+                // failed because cwnd is almost full. In such case app_limited
+                // is set to false here to make cwnd grow when ACK is received.
+                </span>path.recovery.update_app_limited(<span class="bool-val">false</span>);
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+            },
+        }
+
+        <span class="comment">// Make sure there is enough space for the minimum payload length.
+        </span><span class="kw">if </span>left &lt; PAYLOAD_MIN_LEN {
+            path.recovery.update_app_limited(<span class="bool-val">false</span>);
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>frames: SmallVec&lt;[frame::Frame; <span class="number">1</span>]&gt; = SmallVec::new();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>ack_eliciting = <span class="bool-val">false</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>in_flight = <span class="bool-val">false</span>;
+        <span class="comment">// Foll. flag used to upgrade datagram size, if probe successful
+        </span><span class="kw">let </span><span class="kw-2">mut </span>pmtud_probe = <span class="bool-val">false</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>has_data = <span class="bool-val">false</span>;
+
+        <span class="comment">// Whether or not we should explicitly elicit an ACK via PING frame if we
+        // implicitly elicit one otherwise.
+        </span><span class="kw">let </span>ack_elicit_required = path.recovery.should_elicit_ack(epoch);
+
+        <span class="kw">let </span>header_offset = b.off();
+
+        <span class="comment">// Reserve space for payload length in advance. Since we don't yet know
+        // what the final length will be, we reserve 2 bytes in all cases.
+        //
+        // Only long header packets have an explicit length field.
+        </span><span class="kw">if </span>pkt_type != packet::Type::Short {
+            b.skip(PAYLOAD_LENGTH_LEN)<span class="question-mark">?</span>;
+        }
+
+        packet::encode_pkt_num(pn, <span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>payload_offset = b.off();
+
+        <span class="kw">let </span>cwnd_available =
+            path.recovery.cwnd_available().saturating_sub(overhead);
+
+        <span class="kw">let </span>left_before_packing_ack_frame = left;
+
+        <span class="comment">// Create ACK frame.
+        //
+        // When we need to explicitly elicit an ACK via PING later, go ahead and
+        // generate an ACK (if there's anything to ACK) since we're going to
+        // send a packet with PING anyways, even if we haven't received anything
+        // ACK eliciting.
+        </span><span class="kw">if </span>pkt_space.recv_pkt_need_ack.len() &gt; <span class="number">0 </span>&amp;&amp;
+            (pkt_space.ack_elicited || ack_elicit_required) &amp;&amp;
+            (!is_closing ||
+                (pkt_type == Type::Handshake &amp;&amp;
+                    <span class="self">self</span>.local_error
+                        .as_ref()
+                        .map_or(<span class="bool-val">false</span>, |le| le.is_app))) &amp;&amp;
+            path.active()
+        {
+            <span class="kw">let </span>ack_delay = pkt_space.largest_rx_pkt_time.elapsed();
+
+            <span class="kw">let </span>ack_delay = ack_delay.as_micros() <span class="kw">as </span>u64 /
+                <span class="number">2_u64
+                    </span>.pow(<span class="self">self</span>.local_transport_params.ack_delay_exponent <span class="kw">as </span>u32);
+
+            <span class="kw">let </span>frame = frame::Frame::ACK {
+                ack_delay,
+                ranges: pkt_space.recv_pkt_need_ack.clone(),
+                ecn_counts: <span class="prelude-val">None</span>, <span class="comment">// sending ECN is not supported at this time
+            </span>};
+
+            <span class="comment">// When a PING frame needs to be sent, avoid sending the ACK if
+            // there is not enough cwnd available for both (note that PING
+            // frames are always 1 byte, so we just need to check that the
+            // ACK's length is lower than cwnd).
+            </span><span class="kw">if </span>pkt_space.ack_elicited || frame.wire_len() &lt; cwnd_available {
+                <span class="comment">// ACK-only packets are not congestion controlled so ACKs must
+                // be bundled considering the buffer capacity only, and not the
+                // available cwnd.
+                </span><span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                    pkt_space.ack_elicited = <span class="bool-val">false</span>;
+                }
+            }
+        }
+
+        <span class="comment">// Limit output packet size by congestion window size.
+        </span>left = cmp::min(
+            left,
+            <span class="comment">// Bytes consumed by ACK frames.
+            </span>cwnd_available.saturating_sub(left_before_packing_ack_frame - left),
+        );
+
+        <span class="kw">let </span><span class="kw-2">mut </span>challenge_data = <span class="prelude-val">None</span>;
+
+        <span class="kw">let </span>active_path = <span class="self">self</span>.paths.get_active_mut()<span class="question-mark">?</span>;
+
+        <span class="kw">if </span>pkt_type == packet::Type::Short {
+            <span class="comment">// Create PMTUD probe.
+            //
+            // In order to send a PMTUD probe the current `left` value, which was
+            // already limited by the current PMTU measure, needs to be ignored,
+            // but the outgoing packet still needs to be limited by
+            // the output buffer size, as well as the congestion
+            // window.
+            //
+            // In addition, the PMTUD probe is only generated when the handshake
+            // is confirmed, to avoid interfering with the handshake
+            // (e.g. due to the anti-amplification limits).
+
+            </span><span class="kw">let </span>pmtu_probe = active_path.should_send_pmtu_probe(
+                <span class="self">self</span>.handshake_confirmed,
+                <span class="self">self</span>.handshake_done_sent,
+                out_len,
+                is_closing,
+                frames.is_empty(),
+            );
+
+            <span class="macro">trace!</span>(<span class="string">"{} pmtud probe status {} hs_con={} hs_sent={} cwnd_avail={} out_len={} left={}"</span>, <span class="self">self</span>.trace_id, pmtu_probe, <span class="self">self</span>.handshake_confirmed, <span class="self">self</span>.handshake_done_sent,
+                    active_path.recovery.cwnd_available(), out_len, left);
+
+            <span class="kw">if </span>pmtu_probe {
+                <span class="macro">trace!</span>(
+                    <span class="string">"{} sending pmtud probe pmtu_probe={} next_size={} pmtu={}"</span>,
+                    <span class="self">self</span>.trace_id,
+                    active_path.pmtud.get_probe_size(),
+                    active_path.pmtud.get_probe_status(),
+                    active_path.pmtud.get_current(),
+                );
+
+                left = active_path.pmtud.get_probe_size();
+
+                <span class="kw">match </span>left.checked_sub(overhead) {
+                    <span class="prelude-val">Some</span>(v) =&gt; left = v,
+
+                    <span class="prelude-val">None </span>=&gt; {
+                        <span class="comment">// We can't send more because there isn't enough space
+                        // available in the output buffer.
+                        //
+                        // This usually happens when we try to send a new packet
+                        // but failed because cwnd is almost full.
+                        //
+                        // In such case app_limited is set to false here to make
+                        // cwnd grow when ACK is received.
+                        </span>active_path.recovery.update_app_limited(<span class="bool-val">false</span>);
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+                    },
+                }
+
+                <span class="kw">let </span>frame = frame::Frame::Padding {
+                    len: active_path.pmtud.get_probe_size() - overhead - <span class="number">1</span>,
+                };
+
+                <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                    <span class="kw">let </span>frame = frame::Frame::Ping {
+                        mtu_probe: <span class="prelude-val">Some</span>(active_path.pmtud.get_probe_size()),
+                    };
+
+                    <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                        ack_eliciting = <span class="bool-val">true</span>;
+                        in_flight = <span class="bool-val">true</span>;
+                    }
+                }
+
+                pmtud_probe = <span class="bool-val">true</span>;
+            }
+
+            <span class="kw">let </span>path = <span class="self">self</span>.paths.get_mut(send_pid)<span class="question-mark">?</span>;
+            <span class="comment">// Create PATH_RESPONSE frame if needed.
+            // We do not try to ensure that these are really sent.
+            </span><span class="kw">while let </span><span class="prelude-val">Some</span>(challenge) = path.pop_received_challenge() {
+                <span class="kw">let </span>frame = frame::Frame::PathResponse { data: challenge };
+
+                <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                    ack_eliciting = <span class="bool-val">true</span>;
+                    in_flight = <span class="bool-val">true</span>;
+                } <span class="kw">else </span>{
+                    <span class="comment">// If there are other pending PATH_RESPONSE, don't lose them
+                    // now.
+                    </span><span class="kw">break</span>;
+                }
+            }
+
+            <span class="comment">// Create PATH_CHALLENGE frame if needed.
+            </span><span class="kw">if </span>path.validation_requested() {
+                <span class="comment">// TODO: ensure that data is unique over paths.
+                </span><span class="kw">let </span>data = rand::rand_u64().to_be_bytes();
+
+                <span class="kw">let </span>frame = frame::Frame::PathChallenge { data };
+
+                <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                    <span class="comment">// Let's notify the path once we know the packet size.
+                    </span>challenge_data = <span class="prelude-val">Some</span>(data);
+
+                    ack_eliciting = <span class="bool-val">true</span>;
+                    in_flight = <span class="bool-val">true</span>;
+                }
+            }
+
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(key_update) = pkt_space.key_update.as_mut() {
+                key_update.update_acked = <span class="bool-val">true</span>;
+            }
+        }
+
+        <span class="kw">let </span>path = <span class="self">self</span>.paths.get_mut(send_pid)<span class="question-mark">?</span>;
+
+        <span class="kw">if </span>pkt_type == packet::Type::Short &amp;&amp; !is_closing {
+            <span class="comment">// Create NEW_CONNECTION_ID frames as needed.
+            </span><span class="kw">while let </span><span class="prelude-val">Some</span>(seq_num) = <span class="self">self</span>.ids.next_advertise_new_scid_seq() {
+                <span class="kw">let </span>frame = <span class="self">self</span>.ids.get_new_connection_id_frame_for(seq_num)<span class="question-mark">?</span>;
+
+                <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                    <span class="self">self</span>.ids.mark_advertise_new_scid_seq(seq_num, <span class="bool-val">false</span>);
+
+                    ack_eliciting = <span class="bool-val">true</span>;
+                    in_flight = <span class="bool-val">true</span>;
+                } <span class="kw">else </span>{
+                    <span class="kw">break</span>;
+                }
+            }
+        }
+
+        <span class="kw">if </span>pkt_type == packet::Type::Short &amp;&amp; !is_closing &amp;&amp; path.active() {
+            <span class="comment">// Create HANDSHAKE_DONE frame.
+            // self.should_send_handshake_done() but without the need to borrow
+            </span><span class="kw">if </span><span class="self">self</span>.handshake_completed &amp;&amp;
+                !<span class="self">self</span>.handshake_done_sent &amp;&amp;
+                <span class="self">self</span>.is_server
+            {
+                <span class="kw">let </span>frame = frame::Frame::HandshakeDone;
+
+                <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                    <span class="self">self</span>.handshake_done_sent = <span class="bool-val">true</span>;
+
+                    ack_eliciting = <span class="bool-val">true</span>;
+                    in_flight = <span class="bool-val">true</span>;
+                }
+            }
+
+            <span class="comment">// Create MAX_STREAMS_BIDI frame.
+            </span><span class="kw">if </span><span class="self">self</span>.streams.should_update_max_streams_bidi() {
+                <span class="kw">let </span>frame = frame::Frame::MaxStreamsBidi {
+                    max: <span class="self">self</span>.streams.max_streams_bidi_next(),
+                };
+
+                <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                    <span class="self">self</span>.streams.update_max_streams_bidi();
+
+                    ack_eliciting = <span class="bool-val">true</span>;
+                    in_flight = <span class="bool-val">true</span>;
+                }
+            }
+
+            <span class="comment">// Create MAX_STREAMS_UNI frame.
+            </span><span class="kw">if </span><span class="self">self</span>.streams.should_update_max_streams_uni() {
+                <span class="kw">let </span>frame = frame::Frame::MaxStreamsUni {
+                    max: <span class="self">self</span>.streams.max_streams_uni_next(),
+                };
+
+                <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                    <span class="self">self</span>.streams.update_max_streams_uni();
+
+                    ack_eliciting = <span class="bool-val">true</span>;
+                    in_flight = <span class="bool-val">true</span>;
+                }
+            }
+
+            <span class="comment">// Create DATA_BLOCKED frame.
+            </span><span class="kw">if let </span><span class="prelude-val">Some</span>(limit) = <span class="self">self</span>.blocked_limit {
+                <span class="kw">let </span>frame = frame::Frame::DataBlocked { limit };
+
+                <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                    <span class="self">self</span>.blocked_limit = <span class="prelude-val">None</span>;
+
+                    ack_eliciting = <span class="bool-val">true</span>;
+                    in_flight = <span class="bool-val">true</span>;
+                }
+            }
+
+            <span class="comment">// Create MAX_STREAM_DATA frames as needed.
+            </span><span class="kw">for </span>stream_id <span class="kw">in </span><span class="self">self</span>.streams.almost_full() {
+                <span class="kw">let </span>stream = <span class="kw">match </span><span class="self">self</span>.streams.get_mut(stream_id) {
+                    <span class="prelude-val">Some</span>(v) =&gt; v,
+
+                    <span class="prelude-val">None </span>=&gt; {
+                        <span class="comment">// The stream doesn't exist anymore, so remove it from
+                        // the almost full set.
+                        </span><span class="self">self</span>.streams.remove_almost_full(stream_id);
+                        <span class="kw">continue</span>;
+                    },
+                };
+
+                <span class="comment">// Autotune the stream window size.
+                </span>stream.recv.autotune_window(now, path.recovery.rtt());
+
+                <span class="kw">let </span>frame = frame::Frame::MaxStreamData {
+                    stream_id,
+                    max: stream.recv.max_data_next(),
+                };
+
+                <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                    <span class="kw">let </span>recv_win = stream.recv.window();
+
+                    stream.recv.update_max_data(now);
+
+                    <span class="self">self</span>.streams.remove_almost_full(stream_id);
+
+                    ack_eliciting = <span class="bool-val">true</span>;
+                    in_flight = <span class="bool-val">true</span>;
+
+                    <span class="comment">// Make sure the connection window always has some
+                    // room compared to the stream window.
+                    </span>flow_control.ensure_window_lower_bound(
+                        (recv_win <span class="kw">as </span>f64 * CONNECTION_WINDOW_FACTOR) <span class="kw">as </span>u64,
+                    );
+
+                    <span class="comment">// Also send MAX_DATA when MAX_STREAM_DATA is sent, to avoid a
+                    // potential race condition.
+                    </span><span class="self">self</span>.almost_full = <span class="bool-val">true</span>;
+                }
+            }
+
+            <span class="comment">// Create MAX_DATA frame as needed.
+            </span><span class="kw">if </span><span class="self">self</span>.almost_full &amp;&amp;
+                flow_control.max_data() &lt; flow_control.max_data_next()
+            {
+                <span class="comment">// Autotune the connection window size.
+                </span>flow_control.autotune_window(now, path.recovery.rtt());
+
+                <span class="kw">let </span>frame = frame::Frame::MaxData {
+                    max: flow_control.max_data_next(),
+                };
+
+                <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                    <span class="self">self</span>.almost_full = <span class="bool-val">false</span>;
+
+                    <span class="comment">// Commits the new max_rx_data limit.
+                    </span>flow_control.update_max_data(now);
+
+                    ack_eliciting = <span class="bool-val">true</span>;
+                    in_flight = <span class="bool-val">true</span>;
+                }
+            }
+
+            <span class="comment">// Create STOP_SENDING frames as needed.
+            </span><span class="kw">for </span>(stream_id, error_code) <span class="kw">in </span><span class="self">self
+                </span>.streams
+                .stopped()
+                .map(|(<span class="kw-2">&amp;</span>k, <span class="kw-2">&amp;</span>v)| (k, v))
+                .collect::&lt;Vec&lt;(u64, u64)&gt;&gt;()
+            {
+                <span class="kw">let </span>frame = frame::Frame::StopSending {
+                    stream_id,
+                    error_code,
+                };
+
+                <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                    <span class="self">self</span>.streams.remove_stopped(stream_id);
+
+                    ack_eliciting = <span class="bool-val">true</span>;
+                    in_flight = <span class="bool-val">true</span>;
+                }
+            }
+
+            <span class="comment">// Create RESET_STREAM frames as needed.
+            </span><span class="kw">for </span>(stream_id, (error_code, final_size)) <span class="kw">in </span><span class="self">self
+                </span>.streams
+                .reset()
+                .map(|(<span class="kw-2">&amp;</span>k, <span class="kw-2">&amp;</span>v)| (k, v))
+                .collect::&lt;Vec&lt;(u64, (u64, u64))&gt;&gt;()
+            {
+                <span class="kw">let </span>frame = frame::Frame::ResetStream {
+                    stream_id,
+                    error_code,
+                    final_size,
+                };
+
+                <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                    <span class="self">self</span>.streams.remove_reset(stream_id);
+
+                    ack_eliciting = <span class="bool-val">true</span>;
+                    in_flight = <span class="bool-val">true</span>;
+                }
+            }
+
+            <span class="comment">// Create STREAM_DATA_BLOCKED frames as needed.
+            </span><span class="kw">for </span>(stream_id, limit) <span class="kw">in </span><span class="self">self
+                </span>.streams
+                .blocked()
+                .map(|(<span class="kw-2">&amp;</span>k, <span class="kw-2">&amp;</span>v)| (k, v))
+                .collect::&lt;Vec&lt;(u64, u64)&gt;&gt;()
+            {
+                <span class="kw">let </span>frame = frame::Frame::StreamDataBlocked { stream_id, limit };
+
+                <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                    <span class="self">self</span>.streams.remove_blocked(stream_id);
+
+                    ack_eliciting = <span class="bool-val">true</span>;
+                    in_flight = <span class="bool-val">true</span>;
+                }
+            }
+
+            <span class="comment">// Create RETIRE_CONNECTION_ID frames as needed.
+            </span><span class="kw">while let </span><span class="prelude-val">Some</span>(seq_num) = <span class="self">self</span>.ids.next_retire_dcid_seq() {
+                <span class="comment">// The sequence number specified in a RETIRE_CONNECTION_ID frame
+                // MUST NOT refer to the Destination Connection ID field of the
+                // packet in which the frame is contained.
+                </span><span class="kw">let </span>dcid_seq = path.active_dcid_seq.ok_or(Error::InvalidState)<span class="question-mark">?</span>;
+
+                <span class="kw">if </span>seq_num == dcid_seq {
+                    <span class="kw">continue</span>;
+                }
+
+                <span class="kw">let </span>frame = frame::Frame::RetireConnectionId { seq_num };
+
+                <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                    <span class="self">self</span>.ids.mark_retire_dcid_seq(seq_num, <span class="bool-val">false</span>)<span class="question-mark">?</span>;
+
+                    ack_eliciting = <span class="bool-val">true</span>;
+                    in_flight = <span class="bool-val">true</span>;
+                } <span class="kw">else </span>{
+                    <span class="kw">break</span>;
+                }
+            }
+        }
+
+        <span class="comment">// Create CONNECTION_CLOSE frame. Try to send this only on the active
+        // path, unless it is the last one available.
+        </span><span class="kw">if </span>path.active() || n_paths == <span class="number">1 </span>{
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(conn_err) = <span class="self">self</span>.local_error.as_ref() {
+                <span class="kw">if </span>conn_err.is_app {
+                    <span class="comment">// Create ApplicationClose frame.
+                    </span><span class="kw">if </span>pkt_type == packet::Type::Short {
+                        <span class="kw">let </span>frame = frame::Frame::ApplicationClose {
+                            error_code: conn_err.error_code,
+                            reason: conn_err.reason.clone(),
+                        };
+
+                        <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                            <span class="kw">let </span>pto = path.recovery.pto();
+                            <span class="self">self</span>.draining_timer = <span class="prelude-val">Some</span>(now + (pto * <span class="number">3</span>));
+
+                            ack_eliciting = <span class="bool-val">true</span>;
+                            in_flight = <span class="bool-val">true</span>;
+                        }
+                    }
+                } <span class="kw">else </span>{
+                    <span class="comment">// Create ConnectionClose frame.
+                    </span><span class="kw">let </span>frame = frame::Frame::ConnectionClose {
+                        error_code: conn_err.error_code,
+                        frame_type: <span class="number">0</span>,
+                        reason: conn_err.reason.clone(),
+                    };
+
+                    <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                        <span class="kw">let </span>pto = path.recovery.pto();
+                        <span class="self">self</span>.draining_timer = <span class="prelude-val">Some</span>(now + (pto * <span class="number">3</span>));
+
+                        ack_eliciting = <span class="bool-val">true</span>;
+                        in_flight = <span class="bool-val">true</span>;
+                    }
+                }
+            }
+        }
+
+        <span class="comment">// Create CRYPTO frame.
+        </span><span class="kw">if </span>pkt_space.crypto_stream.is_flushable() &amp;&amp;
+            left &gt; frame::MAX_CRYPTO_OVERHEAD &amp;&amp;
+            !is_closing &amp;&amp;
+            path.active()
+        {
+            <span class="kw">let </span>crypto_off = pkt_space.crypto_stream.send.off_front();
+
+            <span class="comment">// Encode the frame.
+            //
+            // Instead of creating a `frame::Frame` object, encode the frame
+            // directly into the packet buffer.
+            //
+            // First we reserve some space in the output buffer for writing the
+            // frame header (we assume the length field is always a 2-byte
+            // varint as we don't know the value yet).
+            //
+            // Then we emit the data from the crypto stream's send buffer.
+            //
+            // Finally we go back and encode the frame header with the now
+            // available information.
+            </span><span class="kw">let </span>hdr_off = b.off();
+            <span class="kw">let </span>hdr_len = <span class="number">1 </span>+ <span class="comment">// frame type
+                </span>octets::varint_len(crypto_off) + <span class="comment">// offset
+                </span><span class="number">2</span>; <span class="comment">// length, always encode as 2-byte varint
+
+            </span><span class="kw">if let </span><span class="prelude-val">Some</span>(max_len) = left.checked_sub(hdr_len) {
+                <span class="kw">let </span>(<span class="kw-2">mut </span>crypto_hdr, <span class="kw-2">mut </span>crypto_payload) =
+                    b.split_at(hdr_off + hdr_len)<span class="question-mark">?</span>;
+
+                <span class="comment">// Write stream data into the packet buffer.
+                </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pkt_space
+                    .crypto_stream
+                    .send
+                    .emit(<span class="kw-2">&amp;mut </span>crypto_payload.as_mut()[..max_len])<span class="question-mark">?</span>;
+
+                <span class="comment">// Encode the frame's header.
+                //
+                // Due to how `OctetsMut::split_at()` works, `crypto_hdr` starts
+                // from the initial offset of `b` (rather than the current
+                // offset), so it needs to be advanced to the
+                // initial frame offset.
+                </span>crypto_hdr.skip(hdr_off)<span class="question-mark">?</span>;
+
+                frame::encode_crypto_header(
+                    crypto_off,
+                    len <span class="kw">as </span>u64,
+                    <span class="kw-2">&amp;mut </span>crypto_hdr,
+                )<span class="question-mark">?</span>;
+
+                <span class="comment">// Advance the packet buffer's offset.
+                </span>b.skip(hdr_len + len)<span class="question-mark">?</span>;
+
+                <span class="kw">let </span>frame = frame::Frame::CryptoHeader {
+                    offset: crypto_off,
+                    length: len,
+                };
+
+                <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                    ack_eliciting = <span class="bool-val">true</span>;
+                    in_flight = <span class="bool-val">true</span>;
+                    has_data = <span class="bool-val">true</span>;
+                }
+            }
+        }
+
+        <span class="comment">// The preference of data-bearing frame to include in a packet
+        // is managed by `self.emit_dgram`. However, whether any frames
+        // can be sent depends on the state of their buffers. In the case
+        // where one type is preferred but its buffer is empty, fall back
+        // to the other type in order not to waste this function call.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>dgram_emitted = <span class="bool-val">false</span>;
+        <span class="kw">let </span>dgrams_to_emit = max_dgram_len.is_some();
+        <span class="kw">let </span>stream_to_emit = <span class="self">self</span>.streams.has_flushable();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>do_dgram = <span class="self">self</span>.emit_dgram &amp;&amp; dgrams_to_emit;
+        <span class="kw">let </span>do_stream = !<span class="self">self</span>.emit_dgram &amp;&amp; stream_to_emit;
+
+        <span class="kw">if </span>!do_stream &amp;&amp; dgrams_to_emit {
+            do_dgram = <span class="bool-val">true</span>;
+        }
+
+        <span class="comment">// Create DATAGRAM frame.
+        </span><span class="kw">if </span>(pkt_type == packet::Type::Short || pkt_type == packet::Type::ZeroRTT) &amp;&amp;
+            left &gt; frame::MAX_DGRAM_OVERHEAD &amp;&amp;
+            !is_closing &amp;&amp;
+            path.active() &amp;&amp;
+            do_dgram
+        {
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(max_dgram_payload) = max_dgram_len {
+                <span class="kw">while let </span><span class="prelude-val">Some</span>(len) = <span class="self">self</span>.dgram_send_queue.peek_front_len() {
+                    <span class="kw">let </span>hdr_off = b.off();
+                    <span class="kw">let </span>hdr_len = <span class="number">1 </span>+ <span class="comment">// frame type
+                        </span><span class="number">2</span>; <span class="comment">// length, always encode as 2-byte varint
+
+                    </span><span class="kw">if </span>(hdr_len + len) &lt;= left {
+                        <span class="comment">// Front of the queue fits this packet, send it.
+                        </span><span class="kw">match </span><span class="self">self</span>.dgram_send_queue.pop() {
+                            <span class="prelude-val">Some</span>(data) =&gt; {
+                                <span class="comment">// Encode the frame.
+                                //
+                                // Instead of creating a `frame::Frame` object,
+                                // encode the frame directly into the packet
+                                // buffer.
+                                //
+                                // First we reserve some space in the output
+                                // buffer for writing the frame header (we
+                                // assume the length field is always a 2-byte
+                                // varint as we don't know the value yet).
+                                //
+                                // Then we emit the data from the DATAGRAM's
+                                // buffer.
+                                //
+                                // Finally we go back and encode the frame
+                                // header with the now available information.
+                                </span><span class="kw">let </span>(<span class="kw-2">mut </span>dgram_hdr, <span class="kw-2">mut </span>dgram_payload) =
+                                    b.split_at(hdr_off + hdr_len)<span class="question-mark">?</span>;
+
+                                dgram_payload.as_mut()[..len]
+                                    .copy_from_slice(<span class="kw-2">&amp;</span>data);
+
+                                <span class="comment">// Encode the frame's header.
+                                //
+                                // Due to how `OctetsMut::split_at()` works,
+                                // `dgram_hdr` starts from the initial offset
+                                // of `b` (rather than the current offset), so
+                                // it needs to be advanced to the initial frame
+                                // offset.
+                                </span>dgram_hdr.skip(hdr_off)<span class="question-mark">?</span>;
+
+                                frame::encode_dgram_header(
+                                    len <span class="kw">as </span>u64,
+                                    <span class="kw-2">&amp;mut </span>dgram_hdr,
+                                )<span class="question-mark">?</span>;
+
+                                <span class="comment">// Advance the packet buffer's offset.
+                                </span>b.skip(hdr_len + len)<span class="question-mark">?</span>;
+
+                                <span class="kw">let </span>frame =
+                                    frame::Frame::DatagramHeader { length: len };
+
+                                <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                                    ack_eliciting = <span class="bool-val">true</span>;
+                                    in_flight = <span class="bool-val">true</span>;
+                                    dgram_emitted = <span class="bool-val">true</span>;
+                                }
+                            },
+
+                            <span class="prelude-val">None </span>=&gt; <span class="kw">continue</span>,
+                        };
+                    } <span class="kw">else if </span>len &gt; max_dgram_payload {
+                        <span class="comment">// This dgram frame will never fit. Let's purge it.
+                        </span><span class="self">self</span>.dgram_send_queue.pop();
+                    } <span class="kw">else </span>{
+                        <span class="kw">break</span>;
+                    }
+                }
+            }
+        }
+
+        <span class="comment">// Create a single STREAM frame for the first stream that is flushable.
+        </span><span class="kw">if </span>(pkt_type == packet::Type::Short || pkt_type == packet::Type::ZeroRTT) &amp;&amp;
+            left &gt; frame::MAX_STREAM_OVERHEAD &amp;&amp;
+            !is_closing &amp;&amp;
+            path.active() &amp;&amp;
+            !dgram_emitted
+        {
+            <span class="kw">while let </span><span class="prelude-val">Some</span>(priority_key) = <span class="self">self</span>.streams.peek_flushable() {
+                <span class="kw">let </span>stream_id = priority_key.id;
+                <span class="kw">let </span>stream = <span class="kw">match </span><span class="self">self</span>.streams.get_mut(stream_id) {
+                    <span class="comment">// Avoid sending frames for streams that were already stopped.
+                    //
+                    // This might happen if stream data was buffered but not yet
+                    // flushed on the wire when a STOP_SENDING frame is received.
+                    </span><span class="prelude-val">Some</span>(v) <span class="kw">if </span>!v.send.is_stopped() =&gt; v,
+                    <span class="kw">_ </span>=&gt; {
+                        <span class="self">self</span>.streams.remove_flushable(<span class="kw-2">&amp;</span>priority_key);
+                        <span class="kw">continue</span>;
+                    },
+                };
+
+                <span class="kw">let </span>stream_off = stream.send.off_front();
+
+                <span class="comment">// Encode the frame.
+                //
+                // Instead of creating a `frame::Frame` object, encode the frame
+                // directly into the packet buffer.
+                //
+                // First we reserve some space in the output buffer for writing
+                // the frame header (we assume the length field is always a
+                // 2-byte varint as we don't know the value yet).
+                //
+                // Then we emit the data from the stream's send buffer.
+                //
+                // Finally we go back and encode the frame header with the now
+                // available information.
+                </span><span class="kw">let </span>hdr_off = b.off();
+                <span class="kw">let </span>hdr_len = <span class="number">1 </span>+ <span class="comment">// frame type
+                    </span>octets::varint_len(stream_id) + <span class="comment">// stream_id
+                    </span>octets::varint_len(stream_off) + <span class="comment">// offset
+                    </span><span class="number">2</span>; <span class="comment">// length, always encode as 2-byte varint
+
+                </span><span class="kw">let </span>max_len = <span class="kw">match </span>left.checked_sub(hdr_len) {
+                    <span class="prelude-val">Some</span>(v) =&gt; v,
+                    <span class="prelude-val">None </span>=&gt; {
+                        <span class="kw">let </span>priority_key = Arc::clone(<span class="kw-2">&amp;</span>stream.priority_key);
+                        <span class="self">self</span>.streams.remove_flushable(<span class="kw-2">&amp;</span>priority_key);
+
+                        <span class="kw">continue</span>;
+                    },
+                };
+
+                <span class="kw">let </span>(<span class="kw-2">mut </span>stream_hdr, <span class="kw-2">mut </span>stream_payload) =
+                    b.split_at(hdr_off + hdr_len)<span class="question-mark">?</span>;
+
+                <span class="comment">// Write stream data into the packet buffer.
+                </span><span class="kw">let </span>(len, fin) =
+                    stream.send.emit(<span class="kw-2">&amp;mut </span>stream_payload.as_mut()[..max_len])<span class="question-mark">?</span>;
+
+                <span class="comment">// Encode the frame's header.
+                //
+                // Due to how `OctetsMut::split_at()` works, `stream_hdr` starts
+                // from the initial offset of `b` (rather than the current
+                // offset), so it needs to be advanced to the initial frame
+                // offset.
+                </span>stream_hdr.skip(hdr_off)<span class="question-mark">?</span>;
+
+                frame::encode_stream_header(
+                    stream_id,
+                    stream_off,
+                    len <span class="kw">as </span>u64,
+                    fin,
+                    <span class="kw-2">&amp;mut </span>stream_hdr,
+                )<span class="question-mark">?</span>;
+
+                <span class="comment">// Advance the packet buffer's offset.
+                </span>b.skip(hdr_len + len)<span class="question-mark">?</span>;
+
+                <span class="kw">let </span>frame = frame::Frame::StreamHeader {
+                    stream_id,
+                    offset: stream_off,
+                    length: len,
+                    fin,
+                };
+
+                <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                    ack_eliciting = <span class="bool-val">true</span>;
+                    in_flight = <span class="bool-val">true</span>;
+                    has_data = <span class="bool-val">true</span>;
+                }
+
+                <span class="kw">let </span>priority_key = Arc::clone(<span class="kw-2">&amp;</span>stream.priority_key);
+                <span class="comment">// If the stream is no longer flushable, remove it from the queue
+                </span><span class="kw">if </span>!stream.is_flushable() {
+                    <span class="self">self</span>.streams.remove_flushable(<span class="kw-2">&amp;</span>priority_key);
+                } <span class="kw">else if </span>stream.incremental {
+                    <span class="comment">// Shuffle the incremental stream to the back of the
+                    // queue.
+                    </span><span class="self">self</span>.streams.remove_flushable(<span class="kw-2">&amp;</span>priority_key);
+                    <span class="self">self</span>.streams.insert_flushable(<span class="kw-2">&amp;</span>priority_key);
+                }
+
+                <span class="attr">#[cfg(feature = <span class="string">"fuzzing"</span>)]
+                </span><span class="comment">// Coalesce STREAM frames when fuzzing.
+                </span><span class="kw">if </span>left &gt; frame::MAX_STREAM_OVERHEAD {
+                    <span class="kw">continue</span>;
+                }
+
+                <span class="kw">break</span>;
+            }
+        }
+
+        <span class="comment">// Alternate trying to send DATAGRAMs next time.
+        </span><span class="self">self</span>.emit_dgram = !dgram_emitted;
+
+        <span class="comment">// If no other ack-eliciting frame is sent, include a PING frame
+        // - if PTO probe needed; OR
+        // - if we've sent too many non ack-eliciting packets without having
+        // sent an ACK eliciting one; OR
+        // - the application requested an ack-eliciting frame be sent.
+        </span><span class="kw">if </span>(ack_elicit_required || path.needs_ack_eliciting) &amp;&amp;
+            !ack_eliciting &amp;&amp;
+            left &gt;= <span class="number">1 </span>&amp;&amp;
+            !is_closing
+        {
+            <span class="kw">let </span>frame = frame::Frame::Ping { mtu_probe: <span class="prelude-val">None </span>};
+
+            <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                ack_eliciting = <span class="bool-val">true</span>;
+                in_flight = <span class="bool-val">true</span>;
+            }
+        }
+
+        <span class="kw">if </span>ack_eliciting &amp;&amp; !pmtud_probe {
+            path.needs_ack_eliciting = <span class="bool-val">false</span>;
+            path.recovery.loss_probes[epoch] =
+                path.recovery.loss_probes[epoch].saturating_sub(<span class="number">1</span>);
+        }
+
+        <span class="kw">if </span>frames.is_empty() {
+            <span class="comment">// When we reach this point we are not able to write more, so set
+            // app_limited to false.
+            </span>path.recovery.update_app_limited(<span class="bool-val">false</span>);
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="comment">// When coalescing a 1-RTT packet, we can't add padding in the UDP
+        // datagram, so use PADDING frames instead.
+        //
+        // This is only needed if
+        // 1) an Initial packet has already been written to the UDP datagram,
+        // as Initial always requires padding.
+        //
+        // 2) this is a probing packet towards an unvalidated peer address.
+        </span><span class="kw">if </span>(has_initial || !path.validated()) &amp;&amp;
+            pkt_type == packet::Type::Short &amp;&amp;
+            left &gt;= <span class="number">1
+        </span>{
+            <span class="kw">let </span>frame = frame::Frame::Padding { len: left };
+
+            <span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                in_flight = <span class="bool-val">true</span>;
+            }
+        }
+
+        <span class="comment">// Pad payload so that it's always at least 4 bytes.
+        </span><span class="kw">if </span>b.off() - payload_offset &lt; PAYLOAD_MIN_LEN {
+            <span class="kw">let </span>payload_len = b.off() - payload_offset;
+
+            <span class="kw">let </span>frame = frame::Frame::Padding {
+                len: PAYLOAD_MIN_LEN - payload_len,
+            };
+
+            <span class="attr">#[allow(unused_assignments)]
+            </span><span class="kw">if </span><span class="macro">push_frame_to_pkt!</span>(b, frames, frame, left) {
+                in_flight = <span class="bool-val">true</span>;
+            }
+        }
+
+        <span class="kw">let </span>payload_len = b.off() - payload_offset;
+
+        <span class="comment">// Fill in payload length.
+        </span><span class="kw">if </span>pkt_type != packet::Type::Short {
+            <span class="kw">let </span>len = pn_len + payload_len + crypto_overhead;
+
+            <span class="kw">let </span>(<span class="kw">_</span>, <span class="kw-2">mut </span>payload_with_len) = b.split_at(header_offset)<span class="question-mark">?</span>;
+            payload_with_len
+                .put_varint_with_len(len <span class="kw">as </span>u64, PAYLOAD_LENGTH_LEN)<span class="question-mark">?</span>;
+        }
+
+        <span class="macro">trace!</span>(
+            <span class="string">"{} tx pkt {} len={} pn={} {}"</span>,
+            <span class="self">self</span>.trace_id,
+            hdr_trace.unwrap_or_default(),
+            payload_len,
+            pn,
+            AddrTupleFmt(path.local_addr(), path.peer_addr())
+        );
+
+        <span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+        </span><span class="kw">let </span><span class="kw-2">mut </span>qlog_frames: SmallVec&lt;
+            [qlog::events::quic::QuicFrame; <span class="number">1</span>],
+        &gt; = SmallVec::with_capacity(frames.len());
+
+        <span class="kw">for </span>frame <span class="kw">in </span><span class="kw-2">&amp;mut </span>frames {
+            <span class="macro">trace!</span>(<span class="string">"{} tx frm {:?}"</span>, <span class="self">self</span>.trace_id, frame);
+
+            <span class="macro">qlog_with_type!</span>(QLOG_PACKET_TX, <span class="self">self</span>.qlog, _q, {
+                qlog_frames.push(frame.to_qlog());
+            });
+        }
+
+        <span class="macro">qlog_with_type!</span>(QLOG_PACKET_TX, <span class="self">self</span>.qlog, q, {
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(header) = qlog_pkt_hdr {
+                <span class="comment">// Qlog packet raw info described at
+                // https://datatracker.ietf.org/doc/html/draft-ietf-quic-qlog-main-schema-00#section-5.1
+                //
+                // `length` includes packet headers and trailers (AEAD tag).
+                </span><span class="kw">let </span>length = payload_len + payload_offset + crypto_overhead;
+                <span class="kw">let </span>qlog_raw_info = RawInfo {
+                    length: <span class="prelude-val">Some</span>(length <span class="kw">as </span>u64),
+                    payload_length: <span class="prelude-val">Some</span>(payload_len <span class="kw">as </span>u64),
+                    data: <span class="prelude-val">None</span>,
+                };
+
+                <span class="kw">let </span>send_at_time =
+                    now.duration_since(q.start_time()).as_secs_f32() * <span class="number">1000.0</span>;
+
+                <span class="kw">let </span>ev_data =
+                    EventData::PacketSent(qlog::events::quic::PacketSent {
+                        header,
+                        frames: <span class="prelude-val">Some</span>(qlog_frames),
+                        is_coalesced: <span class="prelude-val">None</span>,
+                        retry_token: <span class="prelude-val">None</span>,
+                        stateless_reset_token: <span class="prelude-val">None</span>,
+                        supported_versions: <span class="prelude-val">None</span>,
+                        raw: <span class="prelude-val">Some</span>(qlog_raw_info),
+                        datagram_id: <span class="prelude-val">None</span>,
+                        send_at_time: <span class="prelude-val">Some</span>(send_at_time),
+                        trigger: <span class="prelude-val">None</span>,
+                    });
+
+                q.add_event_data_with_instant(ev_data, now).ok();
+            }
+        });
+
+        <span class="kw">let </span>aead = <span class="kw">match </span>pkt_space.crypto_seal {
+            <span class="prelude-val">Some</span>(<span class="kw-2">ref </span>v) =&gt; v,
+            <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState),
+        };
+
+        <span class="kw">let </span>written = packet::encrypt_pkt(
+            <span class="kw-2">&amp;mut </span>b,
+            pn,
+            pn_len,
+            payload_len,
+            payload_offset,
+            <span class="prelude-val">None</span>,
+            aead,
+        )<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>sent_pkt = recovery::Sent {
+            pkt_num: pn,
+            frames,
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="kw">if </span>ack_eliciting { written } <span class="kw">else </span>{ <span class="number">0 </span>},
+            ack_eliciting,
+            in_flight,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data,
+            pmtud: pmtud_probe,
+        };
+
+        <span class="kw">if </span>in_flight &amp;&amp; is_app_limited {
+            path.recovery.delivery_rate_update_app_limited(<span class="bool-val">true</span>);
+        }
+
+        pkt_space.next_pkt_num += <span class="number">1</span>;
+
+        <span class="kw">let </span>handshake_status = recovery::HandshakeStatus {
+            has_handshake_keys: <span class="self">self</span>.pkt_num_spaces[packet::Epoch::Handshake]
+                .has_keys(),
+            peer_verified_address: <span class="self">self</span>.peer_verified_initial_address,
+            completed: <span class="self">self</span>.handshake_completed,
+        };
+
+        path.recovery.on_packet_sent(
+            sent_pkt,
+            epoch,
+            handshake_status,
+            now,
+            <span class="kw-2">&amp;</span><span class="self">self</span>.trace_id,
+        );
+
+        <span class="macro">qlog_with_type!</span>(QLOG_METRICS, <span class="self">self</span>.qlog, q, {
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(ev_data) = path.recovery.maybe_qlog() {
+                q.add_event_data_with_instant(ev_data, now).ok();
+            }
+        });
+
+        <span class="comment">// Record sent packet size if we probe the path.
+        </span><span class="kw">if let </span><span class="prelude-val">Some</span>(data) = challenge_data {
+            path.add_challenge_sent(data, written, now);
+        }
+
+        <span class="self">self</span>.sent_count += <span class="number">1</span>;
+        <span class="self">self</span>.sent_bytes += written <span class="kw">as </span>u64;
+        path.sent_count += <span class="number">1</span>;
+        path.sent_bytes += written <span class="kw">as </span>u64;
+
+        <span class="kw">if </span><span class="self">self</span>.dgram_send_queue.byte_size() &gt; path.recovery.cwnd_available() {
+            path.recovery.update_app_limited(<span class="bool-val">false</span>);
+        }
+
+        path.max_send_bytes = path.max_send_bytes.saturating_sub(written);
+
+        <span class="comment">// On the client, drop initial state after sending an Handshake packet.
+        </span><span class="kw">if </span>!<span class="self">self</span>.is_server &amp;&amp; hdr_ty == packet::Type::Handshake {
+            <span class="self">self</span>.drop_epoch_state(packet::Epoch::Initial, now);
+        }
+
+        <span class="comment">// (Re)start the idle timer if we are sending the first ack-eliciting
+        // packet since last receiving a packet.
+        </span><span class="kw">if </span>ack_eliciting &amp;&amp; !<span class="self">self</span>.ack_eliciting_sent {
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(idle_timeout) = <span class="self">self</span>.idle_timeout() {
+                <span class="self">self</span>.idle_timer = <span class="prelude-val">Some</span>(now + idle_timeout);
+            }
+        }
+
+        <span class="kw">if </span>ack_eliciting {
+            <span class="self">self</span>.ack_eliciting_sent = <span class="bool-val">true</span>;
+        }
+
+        <span class="kw">let </span>active_path = <span class="self">self</span>.paths.get_active_mut()<span class="question-mark">?</span>;
+        <span class="kw">if </span>active_path.pmtud.is_enabled() {
+            active_path
+                .recovery
+                .pmtud_update_max_datagram_size(active_path.pmtud.get_current());
+        }
+
+        <span class="prelude-val">Ok</span>((pkt_type, written))
+    }
+
+    <span class="doccomment">/// Returns the size of the send quantum, in bytes.
+    ///
+    /// This represents the maximum size of a packet burst as determined by the
+    /// congestion control algorithm in use.
+    ///
+    /// Applications can, for example, use it in conjunction with segmentation
+    /// offloading mechanisms as the maximum limit for outgoing aggregates of
+    /// multiple packets.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>send_quantum(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="kw">match </span><span class="self">self</span>.paths.get_active() {
+            <span class="prelude-val">Ok</span>(p) =&gt; p.recovery.send_quantum(),
+            <span class="kw">_ </span>=&gt; <span class="number">0</span>,
+        }
+    }
+
+    <span class="doccomment">/// Returns the size of the send quantum over the given 4-tuple, in bytes.
+    ///
+    /// This represents the maximum size of a packet burst as determined by the
+    /// congestion control algorithm in use.
+    ///
+    /// Applications can, for example, use it in conjunction with segmentation
+    /// offloading mechanisms as the maximum limit for outgoing aggregates of
+    /// multiple packets.
+    ///
+    /// If the (`local_addr`, peer_addr`) 4-tuple relates to a non-existing
+    /// path, this method returns 0.
+    </span><span class="kw">pub fn </span>send_quantum_on_path(
+        <span class="kw-2">&amp;</span><span class="self">self</span>, local_addr: SocketAddr, peer_addr: SocketAddr,
+    ) -&gt; usize {
+        <span class="self">self</span>.paths
+            .path_id_from_addrs(<span class="kw-2">&amp;</span>(local_addr, peer_addr))
+            .and_then(|pid| <span class="self">self</span>.paths.get(pid).ok())
+            .map(|path| path.recovery.send_quantum())
+            .unwrap_or(<span class="number">0</span>)
+    }
+
+    <span class="doccomment">/// Reads contiguous data from a stream into the provided slice.
+    ///
+    /// The slice must be sized by the caller and will be populated up to its
+    /// capacity.
+    ///
+    /// On success the amount of bytes read and a flag indicating the fin state
+    /// is returned as a tuple, or [`Done`] if there is no data to read.
+    ///
+    /// Reading data from a stream may trigger queueing of control messages
+    /// (e.g. MAX_STREAM_DATA). [`send()`] should be called after reading.
+    ///
+    /// [`Done`]: enum.Error.html#variant.Done
+    /// [`send()`]: struct.Connection.html#method.send
+    ///
+    /// ## Examples:
+    ///
+    /// ```no_run
+    /// # let mut buf = [0; 512];
+    /// # let socket = std::net::UdpSocket::bind("127.0.0.1:0").unwrap();
+    /// # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+    /// # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+    /// # let peer = "127.0.0.1:1234".parse().unwrap();
+    /// # let local = socket.local_addr().unwrap();
+    /// # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+    /// # let stream_id = 0;
+    /// while let Ok((read, fin)) = conn.stream_recv(stream_id, &amp;mut buf) {
+    ///     println!("Got {} bytes on stream {}", read, stream_id);
+    /// }
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="kw">pub fn </span>stream_recv(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, stream_id: u64, out: <span class="kw-2">&amp;mut </span>[u8],
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;(usize, bool)&gt; {
+        <span class="comment">// We can't read on our own unidirectional streams.
+        </span><span class="kw">if </span>!stream::is_bidi(stream_id) &amp;&amp;
+            stream::is_local(stream_id, <span class="self">self</span>.is_server)
+        {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidStreamState(stream_id));
+        }
+
+        <span class="kw">let </span>stream = <span class="self">self
+            </span>.streams
+            .get_mut(stream_id)
+            .ok_or(Error::InvalidStreamState(stream_id))<span class="question-mark">?</span>;
+
+        <span class="kw">if </span>!stream.is_readable() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="kw">let </span>local = stream.local;
+        <span class="kw">let </span>priority_key = Arc::clone(<span class="kw-2">&amp;</span>stream.priority_key);
+
+        <span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+        </span><span class="kw">let </span>offset = stream.recv.off_front();
+
+        <span class="kw">let </span>(read, fin) = <span class="kw">match </span>stream.recv.emit(out) {
+            <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+            <span class="prelude-val">Err</span>(e) =&gt; {
+                <span class="comment">// Collect the stream if it is now complete. This can happen if
+                // we got a `StreamReset` error which will now be propagated to
+                // the application, so we don't need to keep the stream's state
+                // anymore.
+                </span><span class="kw">if </span>stream.is_complete() {
+                    <span class="self">self</span>.streams.collect(stream_id, local);
+                }
+
+                <span class="self">self</span>.streams.remove_readable(<span class="kw-2">&amp;</span>priority_key);
+                <span class="kw">return </span><span class="prelude-val">Err</span>(e);
+            },
+        };
+
+        <span class="self">self</span>.flow_control.add_consumed(read <span class="kw">as </span>u64);
+
+        <span class="kw">let </span>readable = stream.is_readable();
+
+        <span class="kw">let </span>complete = stream.is_complete();
+
+        <span class="kw">if </span>stream.recv.almost_full() {
+            <span class="self">self</span>.streams.insert_almost_full(stream_id);
+        }
+
+        <span class="kw">if </span>!readable {
+            <span class="self">self</span>.streams.remove_readable(<span class="kw-2">&amp;</span>priority_key);
+        }
+
+        <span class="kw">if </span>complete {
+            <span class="self">self</span>.streams.collect(stream_id, local);
+        }
+
+        <span class="macro">qlog_with_type!</span>(QLOG_DATA_MV, <span class="self">self</span>.qlog, q, {
+            <span class="kw">let </span>ev_data = EventData::DataMoved(qlog::events::quic::DataMoved {
+                stream_id: <span class="prelude-val">Some</span>(stream_id),
+                offset: <span class="prelude-val">Some</span>(offset),
+                length: <span class="prelude-val">Some</span>(read <span class="kw">as </span>u64),
+                from: <span class="prelude-val">Some</span>(DataRecipient::Transport),
+                to: <span class="prelude-val">Some</span>(DataRecipient::Application),
+                raw: <span class="prelude-val">None</span>,
+            });
+
+            <span class="kw">let </span>now = time::Instant::now();
+            q.add_event_data_with_instant(ev_data, now).ok();
+        });
+
+        <span class="kw">if </span><span class="self">self</span>.should_update_max_data() {
+            <span class="self">self</span>.almost_full = <span class="bool-val">true</span>;
+        }
+
+        <span class="kw">if </span>priority_key.incremental &amp;&amp; readable {
+            <span class="comment">// Shuffle the incremental stream to the back of the queue.
+            </span><span class="self">self</span>.streams.remove_readable(<span class="kw-2">&amp;</span>priority_key);
+            <span class="self">self</span>.streams.insert_readable(<span class="kw-2">&amp;</span>priority_key);
+        }
+
+        <span class="prelude-val">Ok</span>((read, fin))
+    }
+
+    <span class="doccomment">/// Writes data to a stream.
+    ///
+    /// On success the number of bytes written is returned, or [`Done`] if no
+    /// data was written (e.g. because the stream has no capacity).
+    ///
+    /// Applications can provide a 0-length buffer with the fin flag set to
+    /// true. This will lead to a 0-length FIN STREAM frame being sent at the
+    /// latest offset. The `Ok(0)` value is only returned when the application
+    /// provided a 0-length buffer.
+    ///
+    /// In addition, if the peer has signalled that it doesn't want to receive
+    /// any more data from this stream by sending the `STOP_SENDING` frame, the
+    /// [`StreamStopped`] error will be returned instead of any data.
+    ///
+    /// Note that in order to avoid buffering an infinite amount of data in the
+    /// stream's send buffer, streams are only allowed to buffer outgoing data
+    /// up to the amount that the peer allows it to send (that is, up to the
+    /// stream's outgoing flow control capacity).
+    ///
+    /// This means that the number of written bytes returned can be lower than
+    /// the length of the input buffer when the stream doesn't have enough
+    /// capacity for the operation to complete. The application should retry the
+    /// operation once the stream is reported as writable again.
+    ///
+    /// Applications should call this method only after the handshake is
+    /// completed (whenever [`is_established()`] returns `true`) or during
+    /// early data if enabled (whenever [`is_in_early_data()`] returns `true`).
+    ///
+    /// [`Done`]: enum.Error.html#variant.Done
+    /// [`StreamStopped`]: enum.Error.html#variant.StreamStopped
+    /// [`is_established()`]: struct.Connection.html#method.is_established
+    /// [`is_in_early_data()`]: struct.Connection.html#method.is_in_early_data
+    ///
+    /// ## Examples:
+    ///
+    /// ```no_run
+    /// # let mut buf = [0; 512];
+    /// # let socket = std::net::UdpSocket::bind("127.0.0.1:0").unwrap();
+    /// # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+    /// # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+    /// # let peer = "127.0.0.1:1234".parse().unwrap();
+    /// # let local = "127.0.0.1:4321".parse().unwrap();
+    /// # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+    /// # let stream_id = 0;
+    /// conn.stream_send(stream_id, b"hello", true)?;
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="kw">pub fn </span>stream_send(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, stream_id: u64, buf: <span class="kw-2">&amp;</span>[u8], fin: bool,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="comment">// We can't write on the peer's unidirectional streams.
+        </span><span class="kw">if </span>!stream::is_bidi(stream_id) &amp;&amp;
+            !stream::is_local(stream_id, <span class="self">self</span>.is_server)
+        {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidStreamState(stream_id));
+        }
+
+        <span class="comment">// Mark the connection as blocked if the connection-level flow control
+        // limit doesn't let us buffer all the data.
+        //
+        // Note that this is separate from "send capacity" as that also takes
+        // congestion control into consideration.
+        </span><span class="kw">if </span><span class="self">self</span>.max_tx_data - <span class="self">self</span>.tx_data &lt; buf.len() <span class="kw">as </span>u64 {
+            <span class="self">self</span>.blocked_limit = <span class="prelude-val">Some</span>(<span class="self">self</span>.max_tx_data);
+        }
+
+        <span class="kw">let </span>cap = <span class="self">self</span>.tx_cap;
+
+        <span class="comment">// Get existing stream or create a new one.
+        </span><span class="kw">let </span>stream = <span class="self">self</span>.get_or_create_stream(stream_id, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
+
+        <span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+        </span><span class="kw">let </span>offset = stream.send.off_back();
+
+        <span class="kw">let </span>was_writable = stream.is_writable();
+
+        <span class="kw">let </span>was_flushable = stream.is_flushable();
+
+        <span class="kw">let </span>priority_key = Arc::clone(<span class="kw-2">&amp;</span>stream.priority_key);
+
+        <span class="comment">// Truncate the input buffer based on the connection's send capacity if
+        // necessary.
+        //
+        // When the cap is zero, the method returns Ok(0) *only* when the passed
+        // buffer is empty. We return Error::Done otherwise.
+        </span><span class="kw">if </span>cap == <span class="number">0 </span>&amp;&amp; !buf.is_empty() {
+            <span class="kw">if </span>was_writable {
+                <span class="comment">// When `stream_writable_next()` returns a stream, the writable
+                // mark is removed, but because the stream is blocked by the
+                // connection-level send capacity it won't be marked as writable
+                // again once the capacity increases.
+                //
+                // Since the stream is writable already, mark it here instead.
+                </span><span class="self">self</span>.streams.insert_writable(<span class="kw-2">&amp;</span>priority_key);
+            }
+
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="kw">let </span>(buf, fin, blocked_by_cap) = <span class="kw">if </span>cap &lt; buf.len() {
+            (<span class="kw-2">&amp;</span>buf[..cap], <span class="bool-val">false</span>, <span class="bool-val">true</span>)
+        } <span class="kw">else </span>{
+            (buf, fin, <span class="bool-val">false</span>)
+        };
+
+        <span class="kw">let </span>sent = <span class="kw">match </span>stream.send.write(buf, fin) {
+            <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+            <span class="prelude-val">Err</span>(e) =&gt; {
+                <span class="self">self</span>.streams.remove_writable(<span class="kw-2">&amp;</span>priority_key);
+                <span class="kw">return </span><span class="prelude-val">Err</span>(e);
+            },
+        };
+
+        <span class="kw">let </span>incremental = stream.incremental;
+        <span class="kw">let </span>priority_key = Arc::clone(<span class="kw-2">&amp;</span>stream.priority_key);
+
+        <span class="kw">let </span>flushable = stream.is_flushable();
+
+        <span class="kw">let </span>writable = stream.is_writable();
+
+        <span class="kw">let </span>empty_fin = buf.is_empty() &amp;&amp; fin;
+
+        <span class="kw">if </span>sent &lt; buf.len() {
+            <span class="kw">let </span>max_off = stream.send.max_off();
+
+            <span class="kw">if </span>stream.send.blocked_at() != <span class="prelude-val">Some</span>(max_off) {
+                stream.send.update_blocked_at(<span class="prelude-val">Some</span>(max_off));
+                <span class="self">self</span>.streams.insert_blocked(stream_id, max_off);
+            }
+        } <span class="kw">else </span>{
+            stream.send.update_blocked_at(<span class="prelude-val">None</span>);
+            <span class="self">self</span>.streams.remove_blocked(stream_id);
+        }
+
+        <span class="comment">// If the stream is now flushable push it to the flushable queue, but
+        // only if it wasn't already queued.
+        //
+        // Consider the stream flushable also when we are sending a zero-length
+        // frame that has the fin flag set.
+        </span><span class="kw">if </span>(flushable || empty_fin) &amp;&amp; !was_flushable {
+            <span class="self">self</span>.streams.insert_flushable(<span class="kw-2">&amp;</span>priority_key);
+        }
+
+        <span class="kw">if </span>!writable {
+            <span class="self">self</span>.streams.remove_writable(<span class="kw-2">&amp;</span>priority_key);
+        } <span class="kw">else if </span>was_writable &amp;&amp; blocked_by_cap {
+            <span class="comment">// When `stream_writable_next()` returns a stream, the writable
+            // mark is removed, but because the stream is blocked by the
+            // connection-level send capacity it won't be marked as writable
+            // again once the capacity increases.
+            //
+            // Since the stream is writable already, mark it here instead.
+            </span><span class="self">self</span>.streams.insert_writable(<span class="kw-2">&amp;</span>priority_key);
+        }
+
+        <span class="self">self</span>.tx_cap -= sent;
+
+        <span class="self">self</span>.tx_data += sent <span class="kw">as </span>u64;
+
+        <span class="self">self</span>.tx_buffered += sent;
+
+        <span class="macro">qlog_with_type!</span>(QLOG_DATA_MV, <span class="self">self</span>.qlog, q, {
+            <span class="kw">let </span>ev_data = EventData::DataMoved(qlog::events::quic::DataMoved {
+                stream_id: <span class="prelude-val">Some</span>(stream_id),
+                offset: <span class="prelude-val">Some</span>(offset),
+                length: <span class="prelude-val">Some</span>(sent <span class="kw">as </span>u64),
+                from: <span class="prelude-val">Some</span>(DataRecipient::Application),
+                to: <span class="prelude-val">Some</span>(DataRecipient::Transport),
+                raw: <span class="prelude-val">None</span>,
+            });
+
+            <span class="kw">let </span>now = time::Instant::now();
+            q.add_event_data_with_instant(ev_data, now).ok();
+        });
+
+        <span class="kw">if </span>sent == <span class="number">0 </span>&amp;&amp; !buf.is_empty() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="kw">if </span>incremental &amp;&amp; writable {
+            <span class="comment">// Shuffle the incremental stream to the back of the queue.
+            </span><span class="self">self</span>.streams.remove_writable(<span class="kw-2">&amp;</span>priority_key);
+            <span class="self">self</span>.streams.insert_writable(<span class="kw-2">&amp;</span>priority_key);
+        }
+
+        <span class="prelude-val">Ok</span>(sent)
+    }
+
+    <span class="doccomment">/// Sets the priority for a stream.
+    ///
+    /// A stream's priority determines the order in which stream data is sent
+    /// on the wire (streams with lower priority are sent first). Streams are
+    /// created with a default priority of `127`.
+    ///
+    /// The target stream is created if it did not exist before calling this
+    /// method.
+    </span><span class="kw">pub fn </span>stream_priority(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, stream_id: u64, urgency: u8, incremental: bool,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="comment">// Get existing stream or create a new one, but if the stream
+        // has already been closed and collected, ignore the prioritization.
+        </span><span class="kw">let </span>stream = <span class="kw">match </span><span class="self">self</span>.get_or_create_stream(stream_id, <span class="bool-val">true</span>) {
+            <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+            <span class="prelude-val">Err</span>(Error::Done) =&gt; <span class="kw">return </span><span class="prelude-val">Ok</span>(()),
+
+            <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+        };
+
+        <span class="kw">if </span>stream.urgency == urgency &amp;&amp; stream.incremental == incremental {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+        }
+
+        stream.urgency = urgency;
+        stream.incremental = incremental;
+
+        <span class="kw">let </span>new_priority_key = Arc::new(StreamPriorityKey {
+            urgency: stream.urgency,
+            incremental: stream.incremental,
+            id: stream_id,
+            ..Default::default()
+        });
+
+        <span class="kw">let </span>old_priority_key =
+            std::mem::replace(<span class="kw-2">&amp;mut </span>stream.priority_key, new_priority_key.clone());
+
+        <span class="self">self</span>.streams
+            .update_priority(<span class="kw-2">&amp;</span>old_priority_key, <span class="kw-2">&amp;</span>new_priority_key);
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Shuts down reading or writing from/to the specified stream.
+    ///
+    /// When the `direction` argument is set to [`Shutdown::Read`], outstanding
+    /// data in the stream's receive buffer is dropped, and no additional data
+    /// is added to it. Data received after calling this method is still
+    /// validated and acked but not stored, and [`stream_recv()`] will not
+    /// return it to the application. In addition, a `STOP_SENDING` frame will
+    /// be sent to the peer to signal it to stop sending data.
+    ///
+    /// When the `direction` argument is set to [`Shutdown::Write`], outstanding
+    /// data in the stream's send buffer is dropped, and no additional data is
+    /// added to it. Data passed to [`stream_send()`] after calling this method
+    /// will be ignored. In addition, a `RESET_STREAM` frame will be sent to the
+    /// peer to signal the reset.
+    ///
+    /// Locally-initiated unidirectional streams can only be closed in the
+    /// [`Shutdown::Write`] direction. Remotely-initiated unidirectional streams
+    /// can only be closed in the [`Shutdown::Read`] direction. Using an
+    /// incorrect direction will return [`InvalidStreamState`].
+    ///
+    /// [`Shutdown::Read`]: enum.Shutdown.html#variant.Read
+    /// [`Shutdown::Write`]: enum.Shutdown.html#variant.Write
+    /// [`stream_recv()`]: struct.Connection.html#method.stream_recv
+    /// [`stream_send()`]: struct.Connection.html#method.stream_send
+    /// [`InvalidStreamState`]: enum.Error.html#variant.InvalidStreamState
+    </span><span class="kw">pub fn </span>stream_shutdown(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, stream_id: u64, direction: Shutdown, err: u64,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="comment">// Don't try to stop a local unidirectional stream.
+        </span><span class="kw">if </span>direction == Shutdown::Read &amp;&amp;
+            stream::is_local(stream_id, <span class="self">self</span>.is_server) &amp;&amp;
+            !stream::is_bidi(stream_id)
+        {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidStreamState(stream_id));
+        }
+
+        <span class="comment">// Dont' try to reset a remote unidirectional stream.
+        </span><span class="kw">if </span>direction == Shutdown::Write &amp;&amp;
+            !stream::is_local(stream_id, <span class="self">self</span>.is_server) &amp;&amp;
+            !stream::is_bidi(stream_id)
+        {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidStreamState(stream_id));
+        }
+
+        <span class="comment">// Get existing stream.
+        </span><span class="kw">let </span>stream = <span class="self">self</span>.streams.get_mut(stream_id).ok_or(Error::Done)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>priority_key = Arc::clone(<span class="kw-2">&amp;</span>stream.priority_key);
+
+        <span class="kw">match </span>direction {
+            Shutdown::Read =&gt; {
+                stream.recv.shutdown()<span class="question-mark">?</span>;
+
+                <span class="kw">if </span>!stream.recv.is_fin() {
+                    <span class="self">self</span>.streams.insert_stopped(stream_id, err);
+                }
+
+                <span class="comment">// Once shutdown, the stream is guaranteed to be non-readable.
+                </span><span class="self">self</span>.streams.remove_readable(<span class="kw-2">&amp;</span>priority_key);
+
+                <span class="self">self</span>.stopped_stream_local_count =
+                    <span class="self">self</span>.stopped_stream_local_count.saturating_add(<span class="number">1</span>);
+            },
+
+            Shutdown::Write =&gt; {
+                <span class="kw">let </span>(final_size, unsent) = stream.send.shutdown()<span class="question-mark">?</span>;
+
+                <span class="comment">// Claw back some flow control allowance from data that was
+                // buffered but not actually sent before the stream was reset.
+                </span><span class="self">self</span>.tx_data = <span class="self">self</span>.tx_data.saturating_sub(unsent);
+
+                <span class="self">self</span>.tx_buffered =
+                    <span class="self">self</span>.tx_buffered.saturating_sub(unsent <span class="kw">as </span>usize);
+
+                <span class="comment">// Update send capacity.
+                </span><span class="self">self</span>.update_tx_cap();
+
+                <span class="self">self</span>.streams.insert_reset(stream_id, err, final_size);
+
+                <span class="comment">// Once shutdown, the stream is guaranteed to be non-writable.
+                </span><span class="self">self</span>.streams.remove_writable(<span class="kw-2">&amp;</span>priority_key);
+
+                <span class="self">self</span>.reset_stream_local_count =
+                    <span class="self">self</span>.reset_stream_local_count.saturating_add(<span class="number">1</span>);
+            },
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Returns the stream's send capacity in bytes.
+    ///
+    /// If the specified stream doesn't exist (including when it has already
+    /// been completed and closed), the [`InvalidStreamState`] error will be
+    /// returned.
+    ///
+    /// In addition, if the peer has signalled that it doesn't want to receive
+    /// any more data from this stream by sending the `STOP_SENDING` frame, the
+    /// [`StreamStopped`] error will be returned.
+    ///
+    /// [`InvalidStreamState`]: enum.Error.html#variant.InvalidStreamState
+    /// [`StreamStopped`]: enum.Error.html#variant.StreamStopped
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>stream_capacity(<span class="kw-2">&amp;</span><span class="self">self</span>, stream_id: u64) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(stream) = <span class="self">self</span>.streams.get(stream_id) {
+            <span class="kw">let </span>cap = cmp::min(<span class="self">self</span>.tx_cap, stream.send.cap()<span class="question-mark">?</span>);
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(cap);
+        };
+
+        <span class="prelude-val">Err</span>(Error::InvalidStreamState(stream_id))
+    }
+
+    <span class="doccomment">/// Returns the next stream that has data to read.
+    ///
+    /// Note that once returned by this method, a stream ID will not be returned
+    /// again until it is "re-armed".
+    ///
+    /// The application will need to read all of the pending data on the stream,
+    /// and new data has to be received before the stream is reported again.
+    ///
+    /// This is unlike the [`readable()`] method, that returns the same list of
+    /// readable streams when called multiple times in succession.
+    ///
+    /// [`readable()`]: struct.Connection.html#method.readable
+    </span><span class="kw">pub fn </span>stream_readable_next(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;u64&gt; {
+        <span class="kw">let </span>priority_key = <span class="self">self</span>.streams.readable.front().clone_pointer()<span class="question-mark">?</span>;
+
+        <span class="self">self</span>.streams.remove_readable(<span class="kw-2">&amp;</span>priority_key);
+
+        <span class="prelude-val">Some</span>(priority_key.id)
+    }
+
+    <span class="doccomment">/// Returns true if the stream has data that can be read.
+    </span><span class="kw">pub fn </span>stream_readable(<span class="kw-2">&amp;</span><span class="self">self</span>, stream_id: u64) -&gt; bool {
+        <span class="kw">let </span>stream = <span class="kw">match </span><span class="self">self</span>.streams.get(stream_id) {
+            <span class="prelude-val">Some</span>(v) =&gt; v,
+
+            <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="bool-val">false</span>,
+        };
+
+        stream.is_readable()
+    }
+
+    <span class="doccomment">/// Returns the next stream that can be written to.
+    ///
+    /// Note that once returned by this method, a stream ID will not be returned
+    /// again until it is "re-armed".
+    ///
+    /// This is unlike the [`writable()`] method, that returns the same list of
+    /// writable streams when called multiple times in succession. It is not
+    /// advised to use both `stream_writable_next()` and [`writable()`] on the
+    /// same connection, as it may lead to unexpected results.
+    ///
+    /// The [`stream_writable()`] method can also be used to fine-tune when a
+    /// stream is reported as writable again.
+    ///
+    /// [`stream_writable()`]: struct.Connection.html#method.stream_writable
+    /// [`writable()`]: struct.Connection.html#method.writable
+    </span><span class="kw">pub fn </span>stream_writable_next(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;u64&gt; {
+        <span class="comment">// If there is not enough connection-level send capacity, none of the
+        // streams are writable.
+        </span><span class="kw">if </span><span class="self">self</span>.tx_cap == <span class="number">0 </span>{
+            <span class="kw">return </span><span class="prelude-val">None</span>;
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>cursor = <span class="self">self</span>.streams.writable.front();
+
+        <span class="kw">while let </span><span class="prelude-val">Some</span>(priority_key) = cursor.clone_pointer() {
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(stream) = <span class="self">self</span>.streams.get(priority_key.id) {
+                <span class="kw">let </span>cap = <span class="kw">match </span>stream.send.cap() {
+                    <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                    <span class="comment">// Return the stream to the application immediately if it's
+                    // stopped.
+                    </span><span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt;
+                        <span class="kw">return </span>{
+                            <span class="self">self</span>.streams.remove_writable(<span class="kw-2">&amp;</span>priority_key);
+
+                            <span class="prelude-val">Some</span>(priority_key.id)
+                        },
+                };
+
+                <span class="kw">if </span>cmp::min(<span class="self">self</span>.tx_cap, cap) &gt;= stream.send_lowat {
+                    <span class="self">self</span>.streams.remove_writable(<span class="kw-2">&amp;</span>priority_key);
+                    <span class="kw">return </span><span class="prelude-val">Some</span>(priority_key.id);
+                }
+            }
+
+            cursor.move_next();
+        }
+
+        <span class="prelude-val">None
+    </span>}
+
+    <span class="doccomment">/// Returns true if the stream has enough send capacity.
+    ///
+    /// When `len` more bytes can be buffered into the given stream's send
+    /// buffer, `true` will be returned, `false` otherwise.
+    ///
+    /// In the latter case, if the additional data can't be buffered due to
+    /// flow control limits, the peer will also be notified, and a "low send
+    /// watermark" will be set for the stream, such that it is not going to be
+    /// reported as writable again by [`stream_writable_next()`] until its send
+    /// capacity reaches `len`.
+    ///
+    /// If the specified stream doesn't exist (including when it has already
+    /// been completed and closed), the [`InvalidStreamState`] error will be
+    /// returned.
+    ///
+    /// In addition, if the peer has signalled that it doesn't want to receive
+    /// any more data from this stream by sending the `STOP_SENDING` frame, the
+    /// [`StreamStopped`] error will be returned.
+    ///
+    /// [`stream_writable_next()`]: struct.Connection.html#method.stream_writable_next
+    /// [`InvalidStreamState`]: enum.Error.html#variant.InvalidStreamState
+    /// [`StreamStopped`]: enum.Error.html#variant.StreamStopped
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>stream_writable(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, stream_id: u64, len: usize,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;bool&gt; {
+        <span class="kw">if </span><span class="self">self</span>.stream_capacity(stream_id)<span class="question-mark">? </span>&gt;= len {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(<span class="bool-val">true</span>);
+        }
+
+        <span class="kw">let </span>stream = <span class="kw">match </span><span class="self">self</span>.streams.get_mut(stream_id) {
+            <span class="prelude-val">Some</span>(v) =&gt; v,
+
+            <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidStreamState(stream_id)),
+        };
+
+        stream.send_lowat = cmp::max(<span class="number">1</span>, len);
+
+        <span class="kw">let </span>is_writable = stream.is_writable();
+
+        <span class="kw">let </span>priority_key = Arc::clone(<span class="kw-2">&amp;</span>stream.priority_key);
+
+        <span class="kw">if </span><span class="self">self</span>.max_tx_data - <span class="self">self</span>.tx_data &lt; len <span class="kw">as </span>u64 {
+            <span class="self">self</span>.blocked_limit = <span class="prelude-val">Some</span>(<span class="self">self</span>.max_tx_data);
+        }
+
+        <span class="kw">if </span>stream.send.cap()<span class="question-mark">? </span>&lt; len {
+            <span class="kw">let </span>max_off = stream.send.max_off();
+            <span class="kw">if </span>stream.send.blocked_at() != <span class="prelude-val">Some</span>(max_off) {
+                stream.send.update_blocked_at(<span class="prelude-val">Some</span>(max_off));
+                <span class="self">self</span>.streams.insert_blocked(stream_id, max_off);
+            }
+        } <span class="kw">else if </span>is_writable {
+            <span class="comment">// When `stream_writable_next()` returns a stream, the writable
+            // mark is removed, but because the stream is blocked by the
+            // connection-level send capacity it won't be marked as writable
+            // again once the capacity increases.
+            //
+            // Since the stream is writable already, mark it here instead.
+            </span><span class="self">self</span>.streams.insert_writable(<span class="kw-2">&amp;</span>priority_key);
+        }
+
+        <span class="prelude-val">Ok</span>(<span class="bool-val">false</span>)
+    }
+
+    <span class="doccomment">/// Returns true if all the data has been read from the specified stream.
+    ///
+    /// This instructs the application that all the data received from the
+    /// peer on the stream has been read, and there won't be anymore in the
+    /// future.
+    ///
+    /// Basically this returns true when the peer either set the `fin` flag
+    /// for the stream, or sent `RESET_STREAM`.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>stream_finished(<span class="kw-2">&amp;</span><span class="self">self</span>, stream_id: u64) -&gt; bool {
+        <span class="kw">let </span>stream = <span class="kw">match </span><span class="self">self</span>.streams.get(stream_id) {
+            <span class="prelude-val">Some</span>(v) =&gt; v,
+
+            <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="bool-val">true</span>,
+        };
+
+        stream.recv.is_fin()
+    }
+
+    <span class="doccomment">/// Returns the number of bidirectional streams that can be created
+    /// before the peer's stream count limit is reached.
+    ///
+    /// This can be useful to know if it's possible to create a bidirectional
+    /// stream without trying it first.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>peer_streams_left_bidi(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.streams.peer_streams_left_bidi()
+    }
+
+    <span class="doccomment">/// Returns the number of unidirectional streams that can be created
+    /// before the peer's stream count limit is reached.
+    ///
+    /// This can be useful to know if it's possible to create a unidirectional
+    /// stream without trying it first.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>peer_streams_left_uni(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.streams.peer_streams_left_uni()
+    }
+
+    <span class="doccomment">/// Returns an iterator over streams that have outstanding data to read.
+    ///
+    /// Note that the iterator will only include streams that were readable at
+    /// the time the iterator itself was created (i.e. when `readable()` was
+    /// called). To account for newly readable streams, the iterator needs to
+    /// be created again.
+    ///
+    /// ## Examples:
+    ///
+    /// ```no_run
+    /// # let mut buf = [0; 512];
+    /// # let socket = std::net::UdpSocket::bind("127.0.0.1:0").unwrap();
+    /// # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+    /// # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+    /// # let peer = "127.0.0.1:1234".parse().unwrap();
+    /// # let local = socket.local_addr().unwrap();
+    /// # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+    /// // Iterate over readable streams.
+    /// for stream_id in conn.readable() {
+    ///     // Stream is readable, read until there's no more data.
+    ///     while let Ok((read, fin)) = conn.stream_recv(stream_id, &amp;mut buf) {
+    ///         println!("Got {} bytes on stream {}", read, stream_id);
+    ///     }
+    /// }
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>readable(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; StreamIter {
+        <span class="self">self</span>.streams.readable()
+    }
+
+    <span class="doccomment">/// Returns an iterator over streams that can be written in priority order.
+    ///
+    /// The priority order is based on RFC 9218 scheduling recommendations.
+    /// Stream priority can be controlled using [`stream_priority()`]. In order
+    /// to support fairness requirements, each time this method is called,
+    /// internal state is updated. Therefore the iterator ordering can change
+    /// between calls, even if no streams were added or removed.
+    ///
+    /// A "writable" stream is a stream that has enough flow control capacity to
+    /// send data to the peer. To avoid buffering an infinite amount of data,
+    /// streams are only allowed to buffer outgoing data up to the amount that
+    /// the peer allows to send.
+    ///
+    /// Note that the iterator will only include streams that were writable at
+    /// the time the iterator itself was created (i.e. when `writable()` was
+    /// called). To account for newly writable streams, the iterator needs to be
+    /// created again.
+    ///
+    /// ## Examples:
+    ///
+    /// ```no_run
+    /// # let mut buf = [0; 512];
+    /// # let socket = std::net::UdpSocket::bind("127.0.0.1:0").unwrap();
+    /// # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+    /// # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+    /// # let local = socket.local_addr().unwrap();
+    /// # let peer = "127.0.0.1:1234".parse().unwrap();
+    /// # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+    /// // Iterate over writable streams.
+    /// for stream_id in conn.writable() {
+    ///     // Stream is writable, write some data.
+    ///     if let Ok(written) = conn.stream_send(stream_id, &amp;buf, false) {
+    ///         println!("Written {} bytes on stream {}", written, stream_id);
+    ///     }
+    /// }
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    /// [`stream_priority()`]: struct.Connection.html#method.stream_priority
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>writable(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; StreamIter {
+        <span class="comment">// If there is not enough connection-level send capacity, none of the
+        // streams are writable, so return an empty iterator.
+        </span><span class="kw">if </span><span class="self">self</span>.tx_cap == <span class="number">0 </span>{
+            <span class="kw">return </span>StreamIter::default();
+        }
+
+        <span class="self">self</span>.streams.writable()
+    }
+
+    <span class="doccomment">/// Returns the maximum possible size of egress UDP payloads.
+    ///
+    /// This is the maximum size of UDP payloads that can be sent, and depends
+    /// on both the configured maximum send payload size of the local endpoint
+    /// (as configured with [`set_max_send_udp_payload_size()`]), as well as
+    /// the transport parameter advertised by the remote peer.
+    ///
+    /// Note that this value can change during the lifetime of the connection,
+    /// but should remain stable across consecutive calls to [`send()`].
+    ///
+    /// [`set_max_send_udp_payload_size()`]:
+    ///     struct.Config.html#method.set_max_send_udp_payload_size
+    /// [`send()`]: struct.Connection.html#method.send
+    </span><span class="kw">pub fn </span>max_send_udp_payload_size(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="kw">let </span>max_datagram_size = <span class="self">self
+            </span>.paths
+            .get_active()
+            .ok()
+            .map(|p| p.recovery.max_datagram_size());
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(max_datagram_size) = max_datagram_size {
+            <span class="kw">if </span><span class="self">self</span>.is_established() {
+                <span class="comment">// We cap the maximum packet size to 16KB or so, so that it can be
+                // always encoded with a 2-byte varint.
+                </span><span class="kw">return </span>cmp::min(<span class="number">16383</span>, max_datagram_size);
+            }
+        }
+
+        <span class="comment">// Allow for 1200 bytes (minimum QUIC packet size) during the
+        // handshake.
+        </span>MIN_CLIENT_INITIAL_LEN
+    }
+
+    <span class="doccomment">/// Schedule an ack-eliciting packet on the active path.
+    ///
+    /// QUIC packets might not contain ack-eliciting frames during normal
+    /// operating conditions. If the packet would already contain
+    /// ack-eliciting frames, this method does not change any behavior.
+    /// However, if the packet would not ordinarily contain ack-eliciting
+    /// frames, this method ensures that a PING frame sent.
+    ///
+    /// Calling this method multiple times before [`send()`] has no effect.
+    ///
+    /// [`send()`]: struct.Connection.html#method.send
+    </span><span class="kw">pub fn </span>send_ack_eliciting(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if </span><span class="self">self</span>.is_closed() || <span class="self">self</span>.is_draining() {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+        }
+        <span class="self">self</span>.paths.get_active_mut()<span class="question-mark">?</span>.needs_ack_eliciting = <span class="bool-val">true</span>;
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Schedule an ack-eliciting packet on the specified path.
+    ///
+    /// See [`send_ack_eliciting()`] for more detail. [`InvalidState`] is
+    /// returned if there is no record of the path.
+    ///
+    /// [`send_ack_eliciting()`]: struct.Connection.html#method.send_ack_eliciting
+    /// [`InvalidState`]: enum.Error.html#variant.InvalidState
+    </span><span class="kw">pub fn </span>send_ack_eliciting_on_path(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, local: SocketAddr, peer: SocketAddr,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if </span><span class="self">self</span>.is_closed() || <span class="self">self</span>.is_draining() {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+        }
+        <span class="kw">let </span>path_id = <span class="self">self
+            </span>.paths
+            .path_id_from_addrs(<span class="kw-2">&amp;</span>(local, peer))
+            .ok_or(Error::InvalidState)<span class="question-mark">?</span>;
+        <span class="self">self</span>.paths.get_mut(path_id)<span class="question-mark">?</span>.needs_ack_eliciting = <span class="bool-val">true</span>;
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Reads the first received DATAGRAM.
+    ///
+    /// On success the DATAGRAM's data is returned along with its size.
+    ///
+    /// [`Done`] is returned if there is no data to read.
+    ///
+    /// [`BufferTooShort`] is returned if the provided buffer is too small for
+    /// the DATAGRAM.
+    ///
+    /// [`Done`]: enum.Error.html#variant.Done
+    /// [`BufferTooShort`]: enum.Error.html#variant.BufferTooShort
+    ///
+    /// ## Examples:
+    ///
+    /// ```no_run
+    /// # let mut buf = [0; 512];
+    /// # let socket = std::net::UdpSocket::bind("127.0.0.1:0").unwrap();
+    /// # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+    /// # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+    /// # let peer = "127.0.0.1:1234".parse().unwrap();
+    /// # let local = socket.local_addr().unwrap();
+    /// # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+    /// let mut dgram_buf = [0; 512];
+    /// while let Ok((len)) = conn.dgram_recv(&amp;mut dgram_buf) {
+    ///     println!("Got {} bytes of DATAGRAM", len);
+    /// }
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>dgram_recv(<span class="kw-2">&amp;mut </span><span class="self">self</span>, buf: <span class="kw-2">&amp;mut </span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="kw">match </span><span class="self">self</span>.dgram_recv_queue.pop() {
+            <span class="prelude-val">Some</span>(d) =&gt; {
+                <span class="kw">if </span>d.len() &gt; buf.len() {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::BufferTooShort);
+                }
+
+                buf[..d.len()].copy_from_slice(<span class="kw-2">&amp;</span>d);
+                <span class="prelude-val">Ok</span>(d.len())
+            },
+
+            <span class="prelude-val">None </span>=&gt; <span class="prelude-val">Err</span>(Error::Done),
+        }
+    }
+
+    <span class="doccomment">/// Reads the first received DATAGRAM.
+    ///
+    /// This is the same as [`dgram_recv()`] but returns the DATAGRAM as a
+    /// `Vec&lt;u8&gt;` instead of copying into the provided buffer.
+    ///
+    /// [`dgram_recv()`]: struct.Connection.html#method.dgram_recv
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>dgram_recv_vec(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;Vec&lt;u8&gt;&gt; {
+        <span class="kw">match </span><span class="self">self</span>.dgram_recv_queue.pop() {
+            <span class="prelude-val">Some</span>(d) =&gt; <span class="prelude-val">Ok</span>(d),
+
+            <span class="prelude-val">None </span>=&gt; <span class="prelude-val">Err</span>(Error::Done),
+        }
+    }
+
+    <span class="doccomment">/// Reads the first received DATAGRAM without removing it from the queue.
+    ///
+    /// On success the DATAGRAM's data is returned along with the actual number
+    /// of bytes peeked. The requested length cannot exceed the DATAGRAM's
+    /// actual length.
+    ///
+    /// [`Done`] is returned if there is no data to read.
+    ///
+    /// [`BufferTooShort`] is returned if the provided buffer is smaller the
+    /// number of bytes to peek.
+    ///
+    /// [`Done`]: enum.Error.html#variant.Done
+    /// [`BufferTooShort`]: enum.Error.html#variant.BufferTooShort
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>dgram_recv_peek(<span class="kw-2">&amp;</span><span class="self">self</span>, buf: <span class="kw-2">&amp;mut </span>[u8], len: usize) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="self">self</span>.dgram_recv_queue.peek_front_bytes(buf, len)
+    }
+
+    <span class="doccomment">/// Returns the length of the first stored DATAGRAM.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>dgram_recv_front_len(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;usize&gt; {
+        <span class="self">self</span>.dgram_recv_queue.peek_front_len()
+    }
+
+    <span class="doccomment">/// Returns the number of items in the DATAGRAM receive queue.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>dgram_recv_queue_len(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.dgram_recv_queue.len()
+    }
+
+    <span class="doccomment">/// Returns the total size of all items in the DATAGRAM receive queue.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>dgram_recv_queue_byte_size(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.dgram_recv_queue.byte_size()
+    }
+
+    <span class="doccomment">/// Returns the number of items in the DATAGRAM send queue.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>dgram_send_queue_len(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.dgram_send_queue.len()
+    }
+
+    <span class="doccomment">/// Returns the total size of all items in the DATAGRAM send queue.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>dgram_send_queue_byte_size(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.dgram_send_queue.byte_size()
+    }
+
+    <span class="doccomment">/// Returns whether or not the DATAGRAM send queue is full.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>is_dgram_send_queue_full(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.dgram_send_queue.is_full()
+    }
+
+    <span class="doccomment">/// Returns whether or not the DATAGRAM recv queue is full.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>is_dgram_recv_queue_full(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.dgram_recv_queue.is_full()
+    }
+
+    <span class="doccomment">/// Sends data in a DATAGRAM frame.
+    ///
+    /// [`Done`] is returned if no data was written.
+    /// [`InvalidState`] is returned if the peer does not support DATAGRAM.
+    /// [`BufferTooShort`] is returned if the DATAGRAM frame length is larger
+    /// than peer's supported DATAGRAM frame length. Use
+    /// [`dgram_max_writable_len()`] to get the largest supported DATAGRAM
+    /// frame length.
+    ///
+    /// Note that there is no flow control of DATAGRAM frames, so in order to
+    /// avoid buffering an infinite amount of frames we apply an internal
+    /// limit.
+    ///
+    /// [`Done`]: enum.Error.html#variant.Done
+    /// [`InvalidState`]: enum.Error.html#variant.InvalidState
+    /// [`BufferTooShort`]: enum.Error.html#variant.BufferTooShort
+    /// [`dgram_max_writable_len()`]:
+    /// struct.Connection.html#method.dgram_max_writable_len
+    ///
+    /// ## Examples:
+    ///
+    /// ```no_run
+    /// # let mut buf = [0; 512];
+    /// # let socket = std::net::UdpSocket::bind("127.0.0.1:0").unwrap();
+    /// # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+    /// # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+    /// # let peer = "127.0.0.1:1234".parse().unwrap();
+    /// # let local = socket.local_addr().unwrap();
+    /// # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+    /// conn.dgram_send(b"hello")?;
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="kw">pub fn </span>dgram_send(<span class="kw-2">&amp;mut </span><span class="self">self</span>, buf: <span class="kw-2">&amp;</span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>max_payload_len = <span class="kw">match </span><span class="self">self</span>.dgram_max_writable_len() {
+            <span class="prelude-val">Some</span>(v) =&gt; v,
+
+            <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState),
+        };
+
+        <span class="kw">if </span>buf.len() &gt; max_payload_len {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::BufferTooShort);
+        }
+
+        <span class="self">self</span>.dgram_send_queue.push(buf.to_vec())<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>active_path = <span class="self">self</span>.paths.get_active_mut()<span class="question-mark">?</span>;
+
+        <span class="kw">if </span><span class="self">self</span>.dgram_send_queue.byte_size() &gt;
+            active_path.recovery.cwnd_available()
+        {
+            active_path.recovery.update_app_limited(<span class="bool-val">false</span>);
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Sends data in a DATAGRAM frame.
+    ///
+    /// This is the same as [`dgram_send()`] but takes a `Vec&lt;u8&gt;` instead of
+    /// a slice.
+    ///
+    /// [`dgram_send()`]: struct.Connection.html#method.dgram_send
+    </span><span class="kw">pub fn </span>dgram_send_vec(<span class="kw-2">&amp;mut </span><span class="self">self</span>, buf: Vec&lt;u8&gt;) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>max_payload_len = <span class="kw">match </span><span class="self">self</span>.dgram_max_writable_len() {
+            <span class="prelude-val">Some</span>(v) =&gt; v,
+
+            <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState),
+        };
+
+        <span class="kw">if </span>buf.len() &gt; max_payload_len {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::BufferTooShort);
+        }
+
+        <span class="self">self</span>.dgram_send_queue.push(buf)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>active_path = <span class="self">self</span>.paths.get_active_mut()<span class="question-mark">?</span>;
+
+        <span class="kw">if </span><span class="self">self</span>.dgram_send_queue.byte_size() &gt;
+            active_path.recovery.cwnd_available()
+        {
+            active_path.recovery.update_app_limited(<span class="bool-val">false</span>);
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Purges queued outgoing DATAGRAMs matching the predicate.
+    ///
+    /// In other words, remove all elements `e` such that `f(&amp;e)` returns true.
+    ///
+    /// ## Examples:
+    /// ```no_run
+    /// # let socket = std::net::UdpSocket::bind("127.0.0.1:0").unwrap();
+    /// # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+    /// # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+    /// # let peer = "127.0.0.1:1234".parse().unwrap();
+    /// # let local = socket.local_addr().unwrap();
+    /// # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+    /// conn.dgram_send(b"hello")?;
+    /// conn.dgram_purge_outgoing(&amp;|d: &amp;[u8]| -&gt; bool { d[0] == 0 });
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>dgram_purge_outgoing&lt;F: Fn(<span class="kw-2">&amp;</span>[u8]) -&gt; bool&gt;(<span class="kw-2">&amp;mut </span><span class="self">self</span>, f: F) {
+        <span class="self">self</span>.dgram_send_queue.purge(f);
+    }
+
+    <span class="doccomment">/// Returns the maximum DATAGRAM payload that can be sent.
+    ///
+    /// [`None`] is returned if the peer hasn't advertised a maximum DATAGRAM
+    /// frame size.
+    ///
+    /// ## Examples:
+    ///
+    /// ```no_run
+    /// # let mut buf = [0; 512];
+    /// # let socket = std::net::UdpSocket::bind("127.0.0.1:0").unwrap();
+    /// # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+    /// # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+    /// # let peer = "127.0.0.1:1234".parse().unwrap();
+    /// # let local = socket.local_addr().unwrap();
+    /// # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+    /// if let Some(payload_size) = conn.dgram_max_writable_len() {
+    ///     if payload_size &gt; 5 {
+    ///         conn.dgram_send(b"hello")?;
+    ///     }
+    /// }
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>dgram_max_writable_len(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;usize&gt; {
+        <span class="kw">match </span><span class="self">self</span>.peer_transport_params.max_datagram_frame_size {
+            <span class="prelude-val">None </span>=&gt; <span class="prelude-val">None</span>,
+            <span class="prelude-val">Some</span>(peer_frame_len) =&gt; {
+                <span class="kw">let </span>dcid = <span class="self">self</span>.destination_id();
+                <span class="comment">// Start from the maximum packet size...
+                </span><span class="kw">let </span><span class="kw-2">mut </span>max_len = <span class="self">self</span>.max_send_udp_payload_size();
+                <span class="comment">// ...subtract the Short packet header overhead...
+                // (1 byte of pkt_len + len of dcid)
+                </span>max_len = max_len.saturating_sub(<span class="number">1 </span>+ dcid.len());
+                <span class="comment">// ...subtract the packet number (max len)...
+                </span>max_len = max_len.saturating_sub(packet::MAX_PKT_NUM_LEN);
+                <span class="comment">// ...subtract the crypto overhead...
+                </span>max_len = max_len.saturating_sub(
+                    <span class="self">self</span>.pkt_num_spaces[packet::Epoch::Application]
+                        .crypto_overhead()<span class="question-mark">?</span>,
+                );
+                <span class="comment">// ...clamp to what peer can support...
+                </span>max_len = cmp::min(peer_frame_len <span class="kw">as </span>usize, max_len);
+                <span class="comment">// ...subtract frame overhead, checked for underflow.
+                // (1 byte of frame type + len of length )
+                </span>max_len.checked_sub(<span class="number">1 </span>+ frame::MAX_DGRAM_OVERHEAD)
+            },
+        }
+    }
+
+    <span class="kw">fn </span>dgram_enabled(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.local_transport_params
+            .max_datagram_frame_size
+            .is_some()
+    }
+
+    <span class="doccomment">/// Returns when the next timeout event will occur.
+    ///
+    /// Once the timeout Instant has been reached, the [`on_timeout()`] method
+    /// should be called. A timeout of `None` means that the timer should be
+    /// disarmed.
+    ///
+    /// [`on_timeout()`]: struct.Connection.html#method.on_timeout
+    </span><span class="kw">pub fn </span>timeout_instant(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;time::Instant&gt; {
+        <span class="kw">if </span><span class="self">self</span>.is_closed() {
+            <span class="kw">return </span><span class="prelude-val">None</span>;
+        }
+
+        <span class="kw">if </span><span class="self">self</span>.is_draining() {
+            <span class="comment">// Draining timer takes precedence over all other timers. If it is
+            // set it means the connection is closing so there's no point in
+            // processing the other timers.
+            </span><span class="self">self</span>.draining_timer
+        } <span class="kw">else </span>{
+            <span class="comment">// Use the lowest timer value (i.e. "sooner") among idle and loss
+            // detection timers. If they are both unset (i.e. `None`) then the
+            // result is `None`, but if at least one of them is set then a
+            // `Some(...)` value is returned.
+            </span><span class="kw">let </span>path_timer = <span class="self">self
+                </span>.paths
+                .iter()
+                .filter_map(|(<span class="kw">_</span>, p)| p.recovery.loss_detection_timer())
+                .min();
+
+            <span class="kw">let </span>key_update_timer = <span class="self">self</span>.pkt_num_spaces
+                [packet::Epoch::Application]
+                .key_update
+                .as_ref()
+                .map(|key_update| key_update.timer);
+
+            <span class="kw">let </span>timers = [<span class="self">self</span>.idle_timer, path_timer, key_update_timer];
+
+            timers.iter().filter_map(|<span class="kw-2">&amp;</span>x| x).min()
+        }
+    }
+
+    <span class="doccomment">/// Returns the amount of time until the next timeout event.
+    ///
+    /// Once the given duration has elapsed, the [`on_timeout()`] method should
+    /// be called. A timeout of `None` means that the timer should be disarmed.
+    ///
+    /// [`on_timeout()`]: struct.Connection.html#method.on_timeout
+    </span><span class="kw">pub fn </span>timeout(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;time::Duration&gt; {
+        <span class="self">self</span>.timeout_instant().map(|timeout| {
+            <span class="kw">let </span>now = time::Instant::now();
+
+            <span class="kw">if </span>timeout &lt;= now {
+                time::Duration::ZERO
+            } <span class="kw">else </span>{
+                timeout.duration_since(now)
+            }
+        })
+    }
+
+    <span class="doccomment">/// Processes a timeout event.
+    ///
+    /// If no timeout has occurred it does nothing.
+    </span><span class="kw">pub fn </span>on_timeout(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="kw">let </span>now = time::Instant::now();
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(draining_timer) = <span class="self">self</span>.draining_timer {
+            <span class="kw">if </span>draining_timer &lt;= now {
+                <span class="macro">trace!</span>(<span class="string">"{} draining timeout expired"</span>, <span class="self">self</span>.trace_id);
+
+                <span class="self">self</span>.mark_closed();
+            }
+
+            <span class="comment">// Draining timer takes precedence over all other timers. If it is
+            // set it means the connection is closing so there's no point in
+            // processing the other timers.
+            </span><span class="kw">return</span>;
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(timer) = <span class="self">self</span>.idle_timer {
+            <span class="kw">if </span>timer &lt;= now {
+                <span class="macro">trace!</span>(<span class="string">"{} idle timeout expired"</span>, <span class="self">self</span>.trace_id);
+
+                <span class="self">self</span>.mark_closed();
+                <span class="self">self</span>.timed_out = <span class="bool-val">true</span>;
+                <span class="kw">return</span>;
+            }
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(timer) = <span class="self">self</span>.pkt_num_spaces[packet::Epoch::Application]
+            .key_update
+            .as_ref()
+            .map(|key_update| key_update.timer)
+        {
+            <span class="kw">if </span>timer &lt;= now {
+                <span class="comment">// Discard previous key once key update timer expired.
+                </span><span class="kw">let _ </span>= <span class="self">self</span>.pkt_num_spaces[packet::Epoch::Application]
+                    .key_update
+                    .take();
+            }
+        }
+
+        <span class="kw">let </span>handshake_status = <span class="self">self</span>.handshake_status();
+
+        <span class="kw">for </span>(<span class="kw">_</span>, p) <span class="kw">in </span><span class="self">self</span>.paths.iter_mut() {
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(timer) = p.recovery.loss_detection_timer() {
+                <span class="kw">if </span>timer &lt;= now {
+                    <span class="macro">trace!</span>(<span class="string">"{} loss detection timeout expired"</span>, <span class="self">self</span>.trace_id);
+
+                    <span class="kw">let </span>(lost_packets, lost_bytes) = p.on_loss_detection_timeout(
+                        handshake_status,
+                        now,
+                        <span class="self">self</span>.is_server,
+                        <span class="kw-2">&amp;</span><span class="self">self</span>.trace_id,
+                    );
+
+                    <span class="self">self</span>.lost_count += lost_packets;
+                    <span class="self">self</span>.lost_bytes += lost_bytes <span class="kw">as </span>u64;
+
+                    <span class="macro">qlog_with_type!</span>(QLOG_METRICS, <span class="self">self</span>.qlog, q, {
+                        <span class="kw">if let </span><span class="prelude-val">Some</span>(ev_data) = p.recovery.maybe_qlog() {
+                            q.add_event_data_with_instant(ev_data, now).ok();
+                        }
+                    });
+                }
+            }
+        }
+
+        <span class="comment">// Notify timeout events to the application.
+        </span><span class="self">self</span>.paths.notify_failed_validations();
+
+        <span class="comment">// If the active path failed, try to find a new candidate.
+        </span><span class="kw">if </span><span class="self">self</span>.paths.get_active_path_id().is_err() {
+            <span class="kw">match </span><span class="self">self</span>.paths.find_candidate_path() {
+                <span class="prelude-val">Some</span>(pid) =&gt; {
+                    <span class="kw">if </span><span class="self">self</span>.set_active_path(pid, now).is_err() {
+                        <span class="comment">// The connection cannot continue.
+                        </span><span class="self">self</span>.mark_closed();
+                    }
+                },
+
+                <span class="comment">// The connection cannot continue.
+                </span><span class="prelude-val">None </span>=&gt; {
+                    <span class="self">self</span>.mark_closed();
+                },
+            }
+        }
+    }
+
+    <span class="doccomment">/// Requests the stack to perform path validation of the proposed 4-tuple.
+    ///
+    /// Probing new paths requires spare Connection IDs at both the host and the
+    /// peer sides. If it is not the case, it raises an [`OutOfIdentifiers`].
+    ///
+    /// The probing of new addresses can only be done by the client. The server
+    /// can only probe network paths that were previously advertised by
+    /// [`PathEvent::New`]. If the server tries to probe such an unseen network
+    /// path, this call raises an [`InvalidState`].
+    ///
+    /// The caller might also want to probe an existing path. In such case, it
+    /// triggers a PATH_CHALLENGE frame, but it does not require spare CIDs.
+    ///
+    /// A server always probes a new path it observes. Calling this method is
+    /// hence not required to validate a new path. However, a server can still
+    /// request an additional path validation of the proposed 4-tuple.
+    ///
+    /// Calling this method several times before calling [`send()`] or
+    /// [`send_on_path()`] results in a single probe being generated. An
+    /// application wanting to send multiple in-flight probes must call this
+    /// method again after having sent packets.
+    ///
+    /// Returns the Destination Connection ID sequence number associated to that
+    /// path.
+    ///
+    /// [`PathEvent::New`]: enum.PathEvent.html#variant.New
+    /// [`OutOfIdentifiers`]: enum.Error.html#OutOfIdentifiers
+    /// [`InvalidState`]: enum.Error.html#InvalidState
+    /// [`send()`]: struct.Connection.html#method.send
+    /// [`send_on_path()`]: struct.Connection.html#method.send_on_path
+    </span><span class="kw">pub fn </span>probe_path(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, local_addr: SocketAddr, peer_addr: SocketAddr,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;u64&gt; {
+        <span class="comment">// We may want to probe an existing path.
+        </span><span class="kw">let </span>pid = <span class="kw">match </span><span class="self">self</span>.paths.path_id_from_addrs(<span class="kw-2">&amp;</span>(local_addr, peer_addr)) {
+            <span class="prelude-val">Some</span>(pid) =&gt; pid,
+            <span class="prelude-val">None </span>=&gt; <span class="self">self</span>.create_path_on_client(local_addr, peer_addr)<span class="question-mark">?</span>,
+        };
+
+        <span class="kw">let </span>path = <span class="self">self</span>.paths.get_mut(pid)<span class="question-mark">?</span>;
+        path.request_validation();
+
+        path.active_dcid_seq.ok_or(Error::InvalidState)
+    }
+
+    <span class="doccomment">/// Migrates the connection to a new local address `local_addr`.
+    ///
+    /// The behavior is similar to [`migrate()`], with the nuance that the
+    /// connection only changes the local address, but not the peer one.
+    ///
+    /// See [`migrate()`] for the full specification of this method.
+    ///
+    /// [`migrate()`]: struct.Connection.html#method.migrate
+    </span><span class="kw">pub fn </span>migrate_source(<span class="kw-2">&amp;mut </span><span class="self">self</span>, local_addr: SocketAddr) -&gt; <span class="prelude-ty">Result</span>&lt;u64&gt; {
+        <span class="kw">let </span>peer_addr = <span class="self">self</span>.paths.get_active()<span class="question-mark">?</span>.peer_addr();
+        <span class="self">self</span>.migrate(local_addr, peer_addr)
+    }
+
+    <span class="doccomment">/// Migrates the connection over the given network path between `local_addr`
+    /// and `peer_addr`.
+    ///
+    /// Connection migration can only be initiated by the client. Calling this
+    /// method as a server returns [`InvalidState`].
+    ///
+    /// To initiate voluntary migration, there should be enough Connection IDs
+    /// at both sides. If this requirement is not satisfied, this call returns
+    /// [`OutOfIdentifiers`].
+    ///
+    /// Returns the Destination Connection ID associated to that migrated path.
+    ///
+    /// [`OutOfIdentifiers`]: enum.Error.html#OutOfIdentifiers
+    /// [`InvalidState`]: enum.Error.html#InvalidState
+    </span><span class="kw">pub fn </span>migrate(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, local_addr: SocketAddr, peer_addr: SocketAddr,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;u64&gt; {
+        <span class="kw">if </span><span class="self">self</span>.is_server {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState);
+        }
+
+        <span class="comment">// If the path already exists, mark it as the active one.
+        </span><span class="kw">let </span>(pid, dcid_seq) = <span class="kw">if let </span><span class="prelude-val">Some</span>(pid) =
+            <span class="self">self</span>.paths.path_id_from_addrs(<span class="kw-2">&amp;</span>(local_addr, peer_addr))
+        {
+            <span class="kw">let </span>path = <span class="self">self</span>.paths.get_mut(pid)<span class="question-mark">?</span>;
+
+            <span class="comment">// If it is already active, do nothing.
+            </span><span class="kw">if </span>path.active() {
+                <span class="kw">return </span>path.active_dcid_seq.ok_or(Error::OutOfIdentifiers);
+            }
+
+            <span class="comment">// Ensures that a Source Connection ID has been dedicated to this
+            // path, or a free one is available. This is only required if the
+            // host uses non-zero length Source Connection IDs.
+            </span><span class="kw">if </span>!<span class="self">self</span>.ids.zero_length_scid() &amp;&amp;
+                path.active_scid_seq.is_none() &amp;&amp;
+                <span class="self">self</span>.ids.available_scids() == <span class="number">0
+            </span>{
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::OutOfIdentifiers);
+            }
+
+            <span class="comment">// Ensures that the migrated path has a Destination Connection ID.
+            </span><span class="kw">let </span>dcid_seq = <span class="kw">if let </span><span class="prelude-val">Some</span>(dcid_seq) = path.active_dcid_seq {
+                dcid_seq
+            } <span class="kw">else </span>{
+                <span class="kw">let </span>dcid_seq = <span class="self">self
+                    </span>.ids
+                    .lowest_available_dcid_seq()
+                    .ok_or(Error::OutOfIdentifiers)<span class="question-mark">?</span>;
+
+                <span class="self">self</span>.ids.link_dcid_to_path_id(dcid_seq, pid)<span class="question-mark">?</span>;
+                path.active_dcid_seq = <span class="prelude-val">Some</span>(dcid_seq);
+
+                dcid_seq
+            };
+
+            (pid, dcid_seq)
+        } <span class="kw">else </span>{
+            <span class="kw">let </span>pid = <span class="self">self</span>.create_path_on_client(local_addr, peer_addr)<span class="question-mark">?</span>;
+
+            <span class="kw">let </span>dcid_seq = <span class="self">self
+                </span>.paths
+                .get(pid)<span class="question-mark">?
+                </span>.active_dcid_seq
+                .ok_or(Error::InvalidState)<span class="question-mark">?</span>;
+
+            (pid, dcid_seq)
+        };
+
+        <span class="comment">// Change the active path.
+        </span><span class="self">self</span>.set_active_path(pid, time::Instant::now())<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(dcid_seq)
+    }
+
+    <span class="doccomment">/// Provides additional source Connection IDs that the peer can use to reach
+    /// this host.
+    ///
+    /// This triggers sending NEW_CONNECTION_ID frames if the provided Source
+    /// Connection ID is not already present. In the case the caller tries to
+    /// reuse a Connection ID with a different reset token, this raises an
+    /// `InvalidState`.
+    ///
+    /// At any time, the peer cannot have more Destination Connection IDs than
+    /// the maximum number of active Connection IDs it negotiated. In such case
+    /// (i.e., when [`scids_left()`] returns 0), if the host agrees to
+    /// request the removal of previous connection IDs, it sets the
+    /// `retire_if_needed` parameter. Otherwise, an [`IdLimit`] is returned.
+    ///
+    /// Note that setting `retire_if_needed` does not prevent this function from
+    /// returning an [`IdLimit`] in the case the caller wants to retire still
+    /// unannounced Connection IDs.
+    ///
+    /// The caller is responsible from ensuring that the provided `scid` is not
+    /// repeated several times over the connection. quiche ensures that as long
+    /// as the provided Connection ID is still in use (i.e., not retired), it
+    /// does not assign a different sequence number.
+    ///
+    /// Note that if the host uses zero-length Source Connection IDs, it cannot
+    /// advertise Source Connection IDs and calling this method returns an
+    /// [`InvalidState`].
+    ///
+    /// Returns the sequence number associated to the provided Connection ID.
+    ///
+    /// [`scids_left()`]: struct.Connection.html#method.scids_left
+    /// [`IdLimit`]: enum.Error.html#IdLimit
+    /// [`InvalidState`]: enum.Error.html#InvalidState
+    </span><span class="kw">pub fn </span>new_scid(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, scid: <span class="kw-2">&amp;</span>ConnectionId, reset_token: u128, retire_if_needed: bool,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;u64&gt; {
+        <span class="self">self</span>.ids.new_scid(
+            scid.to_vec().into(),
+            <span class="prelude-val">Some</span>(reset_token),
+            <span class="bool-val">true</span>,
+            <span class="prelude-val">None</span>,
+            retire_if_needed,
+        )
+    }
+
+    <span class="doccomment">/// Returns the number of source Connection IDs that are active. This is
+    /// only meaningful if the host uses non-zero length Source Connection IDs.
+    </span><span class="kw">pub fn </span>active_scids(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.ids.active_source_cids()
+    }
+
+    <span class="doccomment">/// Returns the number of source Connection IDs that should be provided
+    /// to the peer without exceeding the limit it advertised.
+    ///
+    /// This will automatically limit the number of Connection IDs to the
+    /// minimum between the locally configured active connection ID limit,
+    /// and the one sent by the peer.
+    ///
+    /// To obtain the maximum possible value allowed by the peer an application
+    /// can instead inspect the [`peer_active_conn_id_limit`] value.
+    ///
+    /// [`peer_active_conn_id_limit`]: struct.Stats.html#structfield.peer_active_conn_id_limit
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>scids_left(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="kw">let </span>max_active_source_cids = cmp::min(
+            <span class="self">self</span>.peer_transport_params.active_conn_id_limit,
+            <span class="self">self</span>.local_transport_params.active_conn_id_limit,
+        ) <span class="kw">as </span>usize;
+
+        max_active_source_cids - <span class="self">self</span>.active_scids()
+    }
+
+    <span class="doccomment">/// Requests the retirement of the destination Connection ID used by the
+    /// host to reach its peer.
+    ///
+    /// This triggers sending RETIRE_CONNECTION_ID frames.
+    ///
+    /// If the application tries to retire a non-existing Destination Connection
+    /// ID sequence number, or if it uses zero-length Destination Connection ID,
+    /// this method returns an [`InvalidState`].
+    ///
+    /// At any time, the host must have at least one Destination ID. If the
+    /// application tries to retire the last one, or if the caller tries to
+    /// retire the destination Connection ID used by the current active path
+    /// while having neither spare Destination Connection IDs nor validated
+    /// network paths, this method returns an [`OutOfIdentifiers`]. This
+    /// behavior prevents the caller from stalling the connection due to the
+    /// lack of validated path to send non-probing packets.
+    ///
+    /// [`InvalidState`]: enum.Error.html#InvalidState
+    /// [`OutOfIdentifiers`]: enum.Error.html#OutOfIdentifiers
+    </span><span class="kw">pub fn </span>retire_dcid(<span class="kw-2">&amp;mut </span><span class="self">self</span>, dcid_seq: u64) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if </span><span class="self">self</span>.ids.zero_length_dcid() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState);
+        }
+
+        <span class="kw">let </span>active_path_dcid_seq = <span class="self">self
+            </span>.paths
+            .get_active()<span class="question-mark">?
+            </span>.active_dcid_seq
+            .ok_or(Error::InvalidState)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>active_path_id = <span class="self">self</span>.paths.get_active_path_id()<span class="question-mark">?</span>;
+
+        <span class="kw">if </span>active_path_dcid_seq == dcid_seq &amp;&amp;
+            <span class="self">self</span>.ids.lowest_available_dcid_seq().is_none() &amp;&amp;
+            !<span class="self">self
+                </span>.paths
+                .iter()
+                .any(|(pid, p)| pid != active_path_id &amp;&amp; p.usable())
+        {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::OutOfIdentifiers);
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(pid) = <span class="self">self</span>.ids.retire_dcid(dcid_seq)<span class="question-mark">? </span>{
+            <span class="comment">// The retired Destination CID was associated to a given path. Let's
+            // find an available DCID to associate to that path.
+            </span><span class="kw">let </span>path = <span class="self">self</span>.paths.get_mut(pid)<span class="question-mark">?</span>;
+            <span class="kw">let </span>dcid_seq = <span class="self">self</span>.ids.lowest_available_dcid_seq();
+
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(dcid_seq) = dcid_seq {
+                <span class="self">self</span>.ids.link_dcid_to_path_id(dcid_seq, pid)<span class="question-mark">?</span>;
+            }
+
+            path.active_dcid_seq = dcid_seq;
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Processes path-specific events.
+    ///
+    /// On success it returns a [`PathEvent`], or `None` when there are no
+    /// events to report. Please refer to [`PathEvent`] for the exhaustive event
+    /// list.
+    ///
+    /// Note that all events are edge-triggered, meaning that once reported they
+    /// will not be reported again by calling this method again, until the event
+    /// is re-armed.
+    ///
+    /// [`PathEvent`]: enum.PathEvent.html
+    </span><span class="kw">pub fn </span>path_event_next(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;PathEvent&gt; {
+        <span class="self">self</span>.paths.pop_event()
+    }
+
+    <span class="doccomment">/// Returns the number of source Connection IDs that are retired.
+    </span><span class="kw">pub fn </span>retired_scids(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.ids.retired_source_cids()
+    }
+
+    <span class="doccomment">/// Returns a source `ConnectionId` that has been retired.
+    ///
+    /// On success it returns a [`ConnectionId`], or `None` when there are no
+    /// more retired connection IDs.
+    ///
+    /// [`ConnectionId`]: struct.ConnectionId.html
+    </span><span class="kw">pub fn </span>retired_scid_next(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;ConnectionId&lt;<span class="lifetime">'static</span>&gt;&gt; {
+        <span class="self">self</span>.ids.pop_retired_scid()
+    }
+
+    <span class="doccomment">/// Returns the number of spare Destination Connection IDs, i.e.,
+    /// Destination Connection IDs that are still unused.
+    ///
+    /// Note that this function returns 0 if the host uses zero length
+    /// Destination Connection IDs.
+    </span><span class="kw">pub fn </span>available_dcids(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.ids.available_dcids()
+    }
+
+    <span class="doccomment">/// Returns an iterator over destination `SockAddr`s whose association
+    /// with `from` forms a known QUIC path on which packets can be sent to.
+    ///
+    /// This function is typically used in combination with [`send_on_path()`].
+    ///
+    /// Note that the iterator includes all the possible combination of
+    /// destination `SockAddr`s, even those whose sending is not required now.
+    /// In other words, this is another way for the application to recall from
+    /// past [`PathEvent::New`] events.
+    ///
+    /// [`PathEvent::New`]: enum.PathEvent.html#variant.New
+    /// [`send_on_path()`]: struct.Connection.html#method.send_on_path
+    ///
+    /// ## Examples:
+    ///
+    /// ```no_run
+    /// # let mut out = [0; 512];
+    /// # let socket = std::net::UdpSocket::bind("127.0.0.1:0").unwrap();
+    /// # let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;
+    /// # let scid = quiche::ConnectionId::from_ref(&amp;[0xba; 16]);
+    /// # let local = socket.local_addr().unwrap();
+    /// # let peer = "127.0.0.1:1234".parse().unwrap();
+    /// # let mut conn = quiche::accept(&amp;scid, None, local, peer, &amp;mut config)?;
+    /// // Iterate over possible destinations for the given local `SockAddr`.
+    /// for dest in conn.paths_iter(local) {
+    ///     loop {
+    ///         let (write, send_info) =
+    ///             match conn.send_on_path(&amp;mut out, Some(local), Some(dest)) {
+    ///                 Ok(v) =&gt; v,
+    ///
+    ///                 Err(quiche::Error::Done) =&gt; {
+    ///                     // Done writing for this destination.
+    ///                     break;
+    ///                 },
+    ///
+    ///                 Err(e) =&gt; {
+    ///                     // An error occurred, handle it.
+    ///                     break;
+    ///                 },
+    ///             };
+    ///
+    ///         socket.send_to(&amp;out[..write], &amp;send_info.to).unwrap();
+    ///     }
+    /// }
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>paths_iter(<span class="kw-2">&amp;</span><span class="self">self</span>, from: SocketAddr) -&gt; SocketAddrIter {
+        <span class="comment">// Instead of trying to identify whether packets will be sent on the
+        // given 4-tuple, simply filter paths that cannot be used.
+        </span>SocketAddrIter {
+            sockaddrs: <span class="self">self
+                </span>.paths
+                .iter()
+                .filter(|(<span class="kw">_</span>, p)| p.active_dcid_seq.is_some())
+                .filter(|(<span class="kw">_</span>, p)| p.usable() || p.probing_required())
+                .filter(|(<span class="kw">_</span>, p)| p.local_addr() == from)
+                .map(|(<span class="kw">_</span>, p)| p.peer_addr())
+                .collect(),
+
+            index: <span class="number">0</span>,
+        }
+    }
+
+    <span class="doccomment">/// Closes the connection with the given error and reason.
+    ///
+    /// The `app` parameter specifies whether an application close should be
+    /// sent to the peer. Otherwise a normal connection close is sent.
+    ///
+    /// If `app` is true but the connection is not in a state that is safe to
+    /// send an application error (not established nor in early data), in
+    /// accordance with [RFC
+    /// 9000](https://www.rfc-editor.org/rfc/rfc9000.html#section-10.2.3-3), the
+    /// error code is changed to APPLICATION_ERROR and the reason phrase is
+    /// cleared.
+    ///
+    /// Returns [`Done`] if the connection had already been closed.
+    ///
+    /// Note that the connection will not be closed immediately. An application
+    /// should continue calling the [`recv()`], [`send()`], [`timeout()`] and
+    /// [`on_timeout()`] methods as normal, until the [`is_closed()`] method
+    /// returns `true`.
+    ///
+    /// [`Done`]: enum.Error.html#variant.Done
+    /// [`recv()`]: struct.Connection.html#method.recv
+    /// [`send()`]: struct.Connection.html#method.send
+    /// [`timeout()`]: struct.Connection.html#method.timeout
+    /// [`on_timeout()`]: struct.Connection.html#method.on_timeout
+    /// [`is_closed()`]: struct.Connection.html#method.is_closed
+    </span><span class="kw">pub fn </span>close(<span class="kw-2">&amp;mut </span><span class="self">self</span>, app: bool, err: u64, reason: <span class="kw-2">&amp;</span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if </span><span class="self">self</span>.is_closed() || <span class="self">self</span>.is_draining() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="kw">if </span><span class="self">self</span>.local_error.is_some() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="kw">let </span>is_safe_to_send_app_data =
+            <span class="self">self</span>.is_established() || <span class="self">self</span>.is_in_early_data();
+
+        <span class="kw">if </span>app &amp;&amp; !is_safe_to_send_app_data {
+            <span class="comment">// Clear error information.
+            </span><span class="self">self</span>.local_error = <span class="prelude-val">Some</span>(ConnectionError {
+                is_app: <span class="bool-val">false</span>,
+                error_code: <span class="number">0x0c</span>,
+                reason: <span class="macro">vec!</span>[],
+            });
+        } <span class="kw">else </span>{
+            <span class="self">self</span>.local_error = <span class="prelude-val">Some</span>(ConnectionError {
+                is_app: app,
+                error_code: err,
+                reason: reason.to_vec(),
+            });
+        }
+
+        <span class="comment">// When no packet was successfully processed close connection immediately.
+        </span><span class="kw">if </span><span class="self">self</span>.recv_count == <span class="number">0 </span>{
+            <span class="self">self</span>.mark_closed();
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Returns a string uniquely representing the connection.
+    ///
+    /// This can be used for logging purposes to differentiate between multiple
+    /// connections.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>trace_id(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>str {
+        <span class="kw-2">&amp;</span><span class="self">self</span>.trace_id
+    }
+
+    <span class="doccomment">/// Returns the negotiated ALPN protocol.
+    ///
+    /// If no protocol has been negotiated, the returned value is empty.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>application_proto(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>[u8] {
+        <span class="self">self</span>.alpn.as_ref()
+    }
+
+    <span class="doccomment">/// Returns the server name requested by the client.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>server_name(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>str&gt; {
+        <span class="self">self</span>.handshake.server_name()
+    }
+
+    <span class="doccomment">/// Returns the peer's leaf certificate (if any) as a DER-encoded buffer.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>peer_cert(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>[u8]&gt; {
+        <span class="self">self</span>.handshake.peer_cert()
+    }
+
+    <span class="doccomment">/// Returns the peer's certificate chain (if any) as a vector of DER-encoded
+    /// buffers.
+    ///
+    /// The certificate at index 0 is the peer's leaf certificate, the other
+    /// certificates (if any) are the chain certificate authorities used to
+    /// sign the leaf certificate.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>peer_cert_chain(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;Vec&lt;<span class="kw-2">&amp;</span>[u8]&gt;&gt; {
+        <span class="self">self</span>.handshake.peer_cert_chain()
+    }
+
+    <span class="doccomment">/// Returns the serialized cryptographic session for the connection.
+    ///
+    /// This can be used by a client to cache a connection's session, and resume
+    /// it later using the [`set_session()`] method.
+    ///
+    /// [`set_session()`]: struct.Connection.html#method.set_session
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>session(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>[u8]&gt; {
+        <span class="self">self</span>.session.as_deref()
+    }
+
+    <span class="doccomment">/// Returns the source connection ID.
+    ///
+    /// When there are multiple IDs, and if there is an active path, the ID used
+    /// on that path is returned. Otherwise the oldest ID is returned.
+    ///
+    /// Note that the value returned can change throughout the connection's
+    /// lifetime.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>source_id(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; ConnectionId {
+        <span class="kw">if let </span><span class="prelude-val">Ok</span>(path) = <span class="self">self</span>.paths.get_active() {
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(active_scid_seq) = path.active_scid_seq {
+                <span class="kw">if let </span><span class="prelude-val">Ok</span>(e) = <span class="self">self</span>.ids.get_scid(active_scid_seq) {
+                    <span class="kw">return </span>ConnectionId::from_ref(e.cid.as_ref());
+                }
+            }
+        }
+
+        <span class="kw">let </span>e = <span class="self">self</span>.ids.oldest_scid();
+        ConnectionId::from_ref(e.cid.as_ref())
+    }
+
+    <span class="doccomment">/// Returns all active source connection IDs.
+    ///
+    /// An iterator is returned for all active IDs (i.e. ones that have not
+    /// been explicitly retired yet).
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>source_ids(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw">impl </span>Iterator&lt;Item = <span class="kw-2">&amp;</span>ConnectionId&gt; {
+        <span class="self">self</span>.ids.scids_iter()
+    }
+
+    <span class="doccomment">/// Returns the destination connection ID.
+    ///
+    /// Note that the value returned can change throughout the connection's
+    /// lifetime.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>destination_id(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; ConnectionId {
+        <span class="kw">if let </span><span class="prelude-val">Ok</span>(path) = <span class="self">self</span>.paths.get_active() {
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(active_dcid_seq) = path.active_dcid_seq {
+                <span class="kw">if let </span><span class="prelude-val">Ok</span>(e) = <span class="self">self</span>.ids.get_dcid(active_dcid_seq) {
+                    <span class="kw">return </span>ConnectionId::from_ref(e.cid.as_ref());
+                }
+            }
+        }
+
+        <span class="kw">let </span>e = <span class="self">self</span>.ids.oldest_dcid();
+        ConnectionId::from_ref(e.cid.as_ref())
+    }
+
+    <span class="doccomment">/// Returns true if the connection handshake is complete.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>is_established(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.handshake_completed
+    }
+
+    <span class="doccomment">/// Returns true if the connection is resumed.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>is_resumed(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.handshake.is_resumed()
+    }
+
+    <span class="doccomment">/// Returns true if the connection has a pending handshake that has
+    /// progressed enough to send or receive early data.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>is_in_early_data(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.handshake.is_in_early_data()
+    }
+
+    <span class="doccomment">/// Returns whether there is stream or DATAGRAM data available to read.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>is_readable(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.streams.has_readable() || <span class="self">self</span>.dgram_recv_front_len().is_some()
+    }
+
+    <span class="doccomment">/// Returns whether the network path with local address `from` and remote
+    /// address `peer` has been validated.
+    ///
+    /// If the 4-tuple does not exist over the connection, returns an
+    /// [`InvalidState`].
+    ///
+    /// [`InvalidState`]: enum.Error.html#variant.InvalidState
+    </span><span class="kw">pub fn </span>is_path_validated(
+        <span class="kw-2">&amp;</span><span class="self">self</span>, from: SocketAddr, to: SocketAddr,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;bool&gt; {
+        <span class="kw">let </span>pid = <span class="self">self
+            </span>.paths
+            .path_id_from_addrs(<span class="kw-2">&amp;</span>(from, to))
+            .ok_or(Error::InvalidState)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(<span class="self">self</span>.paths.get(pid)<span class="question-mark">?</span>.validated())
+    }
+
+    <span class="doccomment">/// Returns true if the connection is draining.
+    ///
+    /// If this returns `true`, the connection object cannot yet be dropped, but
+    /// no new application data can be sent or received. An application should
+    /// continue calling the [`recv()`], [`timeout()`], and [`on_timeout()`]
+    /// methods as normal, until the [`is_closed()`] method returns `true`.
+    ///
+    /// In contrast, once `is_draining()` returns `true`, calling [`send()`]
+    /// is not required because no new outgoing packets will be generated.
+    ///
+    /// [`recv()`]: struct.Connection.html#method.recv
+    /// [`send()`]: struct.Connection.html#method.send
+    /// [`timeout()`]: struct.Connection.html#method.timeout
+    /// [`on_timeout()`]: struct.Connection.html#method.on_timeout
+    /// [`is_closed()`]: struct.Connection.html#method.is_closed
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>is_draining(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.draining_timer.is_some()
+    }
+
+    <span class="doccomment">/// Returns true if the connection is closed.
+    ///
+    /// If this returns true, the connection object can be dropped.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>is_closed(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.closed
+    }
+
+    <span class="doccomment">/// Returns true if the connection was closed due to the idle timeout.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>is_timed_out(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.timed_out
+    }
+
+    <span class="doccomment">/// Returns the error received from the peer, if any.
+    ///
+    /// Note that a `Some` return value does not necessarily imply
+    /// [`is_closed()`] or any other connection state.
+    ///
+    /// [`is_closed()`]: struct.Connection.html#method.is_closed
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>peer_error(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>ConnectionError&gt; {
+        <span class="self">self</span>.peer_error.as_ref()
+    }
+
+    <span class="doccomment">/// Returns the error [`close()`] was called with, or internally
+    /// created quiche errors, if any.
+    ///
+    /// Note that a `Some` return value does not necessarily imply
+    /// [`is_closed()`] or any other connection state.
+    /// `Some` also does not guarantee that the error has been sent to
+    /// or received by the peer.
+    ///
+    /// [`close()`]: struct.Connection.html#method.close
+    /// [`is_closed()`]: struct.Connection.html#method.is_closed
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>local_error(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>ConnectionError&gt; {
+        <span class="self">self</span>.local_error.as_ref()
+    }
+
+    <span class="doccomment">/// Collects and returns statistics about the connection.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>stats(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; Stats {
+        Stats {
+            recv: <span class="self">self</span>.recv_count,
+            sent: <span class="self">self</span>.sent_count,
+            lost: <span class="self">self</span>.lost_count,
+            retrans: <span class="self">self</span>.retrans_count,
+            sent_bytes: <span class="self">self</span>.sent_bytes,
+            recv_bytes: <span class="self">self</span>.recv_bytes,
+            lost_bytes: <span class="self">self</span>.lost_bytes,
+            stream_retrans_bytes: <span class="self">self</span>.stream_retrans_bytes,
+            paths_count: <span class="self">self</span>.paths.len(),
+            reset_stream_count_local: <span class="self">self</span>.reset_stream_local_count,
+            stopped_stream_count_local: <span class="self">self</span>.stopped_stream_local_count,
+            reset_stream_count_remote: <span class="self">self</span>.reset_stream_remote_count,
+            stopped_stream_count_remote: <span class="self">self</span>.stopped_stream_remote_count,
+            path_challenge_rx_count: <span class="self">self</span>.path_challenge_rx_count,
+        }
+    }
+
+    <span class="doccomment">/// Returns reference to peer's transport parameters. Returns `None` if we
+    /// have not yet processed the peer's transport parameters.
+    </span><span class="kw">pub fn </span>peer_transport_params(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>TransportParams&gt; {
+        <span class="kw">if </span>!<span class="self">self</span>.parsed_peer_transport_params {
+            <span class="kw">return </span><span class="prelude-val">None</span>;
+        }
+
+        <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="self">self</span>.peer_transport_params)
+    }
+
+    <span class="doccomment">/// Collects and returns statistics about each known path for the
+    /// connection.
+    </span><span class="kw">pub fn </span>path_stats(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw">impl </span>Iterator&lt;Item = PathStats&gt; + <span class="lifetime">'_ </span>{
+        <span class="self">self</span>.paths.iter().map(|(<span class="kw">_</span>, p)| p.stats())
+    }
+
+    <span class="doccomment">/// Returns whether or not this is a server-side connection.
+    </span><span class="kw">pub fn </span>is_server(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.is_server
+    }
+
+    <span class="kw">fn </span>encode_transport_params(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>raw_params = [<span class="number">0</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span>raw_params = TransportParams::encode(
+            <span class="kw-2">&amp;</span><span class="self">self</span>.local_transport_params,
+            <span class="self">self</span>.is_server,
+            <span class="kw-2">&amp;mut </span>raw_params,
+        )<span class="question-mark">?</span>;
+
+        <span class="self">self</span>.handshake.set_quic_transport_params(raw_params)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="kw">fn </span>parse_peer_transport_params(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, peer_params: TransportParams,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="comment">// Validate initial_source_connection_id.
+        </span><span class="kw">match </span><span class="kw-2">&amp;</span>peer_params.initial_source_connection_id {
+            <span class="prelude-val">Some</span>(v) <span class="kw">if </span>v != <span class="kw-2">&amp;</span><span class="self">self</span>.destination_id() =&gt;
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidTransportParam),
+
+            <span class="prelude-val">Some</span>(<span class="kw">_</span>) =&gt; (),
+
+            <span class="comment">// initial_source_connection_id must be sent by
+            // both endpoints.
+            </span><span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidTransportParam),
+        }
+
+        <span class="comment">// Validate original_destination_connection_id.
+        </span><span class="kw">if let </span><span class="prelude-val">Some</span>(odcid) = <span class="kw-2">&amp;</span><span class="self">self</span>.odcid {
+            <span class="kw">match </span><span class="kw-2">&amp;</span>peer_params.original_destination_connection_id {
+                <span class="prelude-val">Some</span>(v) <span class="kw">if </span>v != odcid =&gt;
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidTransportParam),
+
+                <span class="prelude-val">Some</span>(<span class="kw">_</span>) =&gt; (),
+
+                <span class="comment">// original_destination_connection_id must be
+                // sent by the server.
+                </span><span class="prelude-val">None </span><span class="kw">if </span>!<span class="self">self</span>.is_server =&gt;
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidTransportParam),
+
+                <span class="prelude-val">None </span>=&gt; (),
+            }
+        }
+
+        <span class="comment">// Validate retry_source_connection_id.
+        </span><span class="kw">if let </span><span class="prelude-val">Some</span>(rscid) = <span class="kw-2">&amp;</span><span class="self">self</span>.rscid {
+            <span class="kw">match </span><span class="kw-2">&amp;</span>peer_params.retry_source_connection_id {
+                <span class="prelude-val">Some</span>(v) <span class="kw">if </span>v != rscid =&gt;
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidTransportParam),
+
+                <span class="prelude-val">Some</span>(<span class="kw">_</span>) =&gt; (),
+
+                <span class="comment">// retry_source_connection_id must be sent by
+                // the server.
+                </span><span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidTransportParam),
+            }
+        }
+
+        <span class="self">self</span>.process_peer_transport_params(peer_params)<span class="question-mark">?</span>;
+
+        <span class="self">self</span>.parsed_peer_transport_params = <span class="bool-val">true</span>;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="kw">fn </span>process_peer_transport_params(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, peer_params: TransportParams,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="self">self</span>.max_tx_data = peer_params.initial_max_data;
+
+        <span class="comment">// Update send capacity.
+        </span><span class="self">self</span>.update_tx_cap();
+
+        <span class="self">self</span>.streams
+            .update_peer_max_streams_bidi(peer_params.initial_max_streams_bidi);
+        <span class="self">self</span>.streams
+            .update_peer_max_streams_uni(peer_params.initial_max_streams_uni);
+
+        <span class="kw">let </span>max_ack_delay =
+            time::Duration::from_millis(peer_params.max_ack_delay);
+
+        <span class="self">self</span>.recovery_config.max_ack_delay = max_ack_delay;
+
+        <span class="kw">let </span>active_path = <span class="self">self</span>.paths.get_active_mut()<span class="question-mark">?</span>;
+
+        active_path.recovery.max_ack_delay = max_ack_delay;
+
+        <span class="kw">if </span>active_path.pmtud.get_probe_status() {
+            active_path.recovery.pmtud_update_max_datagram_size(
+                active_path
+                    .pmtud
+                    .get_probe_size()
+                    .min(peer_params.max_udp_payload_size <span class="kw">as </span>usize),
+            );
+        } <span class="kw">else </span>{
+            active_path.recovery.update_max_datagram_size(
+                peer_params.max_udp_payload_size <span class="kw">as </span>usize,
+            );
+        }
+
+        <span class="comment">// Record the max_active_conn_id parameter advertised by the peer.
+        </span><span class="self">self</span>.ids
+            .set_source_conn_id_limit(peer_params.active_conn_id_limit);
+
+        <span class="self">self</span>.peer_transport_params = peer_params;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Continues the handshake.
+    ///
+    /// If the connection is already established, it does nothing.
+    </span><span class="kw">fn </span>do_handshake(<span class="kw-2">&amp;mut </span><span class="self">self</span>, now: time::Instant) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>ex_data = tls::ExData {
+            application_protos: <span class="kw-2">&amp;</span><span class="self">self</span>.application_protos,
+
+            pkt_num_spaces: <span class="kw-2">&amp;mut </span><span class="self">self</span>.pkt_num_spaces,
+
+            session: <span class="kw-2">&amp;mut </span><span class="self">self</span>.session,
+
+            local_error: <span class="kw-2">&amp;mut </span><span class="self">self</span>.local_error,
+
+            keylog: <span class="self">self</span>.keylog.as_mut(),
+
+            trace_id: <span class="kw-2">&amp;</span><span class="self">self</span>.trace_id,
+
+            is_server: <span class="self">self</span>.is_server,
+        };
+
+        <span class="kw">if </span><span class="self">self</span>.handshake_completed {
+            <span class="kw">return </span><span class="self">self</span>.handshake.process_post_handshake(<span class="kw-2">&amp;mut </span>ex_data);
+        }
+
+        <span class="kw">match </span><span class="self">self</span>.handshake.do_handshake(<span class="kw-2">&amp;mut </span>ex_data) {
+            <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; (),
+
+            <span class="prelude-val">Err</span>(Error::Done) =&gt; {
+                <span class="comment">// Try to parse transport parameters as soon as the first flight
+                // of handshake data is processed.
+                //
+                // This is potentially dangerous as the handshake hasn't been
+                // completed yet, though it's required to be able to send data
+                // in 0.5 RTT.
+                </span><span class="kw">let </span>raw_params = <span class="self">self</span>.handshake.quic_transport_params();
+
+                <span class="kw">if </span>!<span class="self">self</span>.parsed_peer_transport_params &amp;&amp; !raw_params.is_empty() {
+                    <span class="kw">let </span>peer_params =
+                        TransportParams::decode(raw_params, <span class="self">self</span>.is_server)<span class="question-mark">?</span>;
+
+                    <span class="self">self</span>.parse_peer_transport_params(peer_params)<span class="question-mark">?</span>;
+                }
+
+                <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+            },
+
+            <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+        };
+
+        <span class="self">self</span>.handshake_completed = <span class="self">self</span>.handshake.is_completed();
+
+        <span class="self">self</span>.alpn = <span class="self">self</span>.handshake.alpn_protocol().to_vec();
+
+        <span class="kw">let </span>raw_params = <span class="self">self</span>.handshake.quic_transport_params();
+
+        <span class="kw">if </span>!<span class="self">self</span>.parsed_peer_transport_params &amp;&amp; !raw_params.is_empty() {
+            <span class="kw">let </span>peer_params =
+                TransportParams::decode(raw_params, <span class="self">self</span>.is_server)<span class="question-mark">?</span>;
+
+            <span class="self">self</span>.parse_peer_transport_params(peer_params)<span class="question-mark">?</span>;
+        }
+
+        <span class="kw">if </span><span class="self">self</span>.handshake_completed {
+            <span class="comment">// The handshake is considered confirmed at the server when the
+            // handshake completes, at which point we can also drop the
+            // handshake epoch.
+            </span><span class="kw">if </span><span class="self">self</span>.is_server {
+                <span class="self">self</span>.handshake_confirmed = <span class="bool-val">true</span>;
+
+                <span class="self">self</span>.drop_epoch_state(packet::Epoch::Handshake, now);
+            }
+
+            <span class="comment">// Once the handshake is completed there's no point in processing
+            // 0-RTT packets anymore, so clear the buffer now.
+            </span><span class="self">self</span>.undecryptable_pkts.clear();
+
+            <span class="macro">trace!</span>(<span class="string">"{} connection established: proto={:?} cipher={:?} curve={:?} sigalg={:?} resumed={} {:?}"</span>,
+                   <span class="kw-2">&amp;</span><span class="self">self</span>.trace_id,
+                   std::str::from_utf8(<span class="self">self</span>.application_proto()),
+                   <span class="self">self</span>.handshake.cipher(),
+                   <span class="self">self</span>.handshake.curve(),
+                   <span class="self">self</span>.handshake.sigalg(),
+                   <span class="self">self</span>.handshake.is_resumed(),
+                   <span class="self">self</span>.peer_transport_params);
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Selects the packet type for the next outgoing packet.
+    </span><span class="kw">fn </span>write_pkt_type(<span class="kw-2">&amp;</span><span class="self">self</span>, send_pid: usize) -&gt; <span class="prelude-ty">Result</span>&lt;packet::Type&gt; {
+        <span class="comment">// On error send packet in the latest epoch available, but only send
+        // 1-RTT ones when the handshake is completed.
+        </span><span class="kw">if </span><span class="self">self
+            </span>.local_error
+            .as_ref()
+            .map_or(<span class="bool-val">false</span>, |conn_err| !conn_err.is_app)
+        {
+            <span class="kw">let </span>epoch = <span class="kw">match </span><span class="self">self</span>.handshake.write_level() {
+                crypto::Level::Initial =&gt; packet::Epoch::Initial,
+                crypto::Level::ZeroRTT =&gt; <span class="macro">unreachable!</span>(),
+                crypto::Level::Handshake =&gt; packet::Epoch::Handshake,
+                crypto::Level::OneRTT =&gt; packet::Epoch::Application,
+            };
+
+            <span class="kw">if </span>!<span class="self">self</span>.is_established() {
+                <span class="kw">match </span>epoch {
+                    <span class="comment">// Downgrade the epoch to Handshake as the handshake is not
+                    // completed yet.
+                    </span>packet::Epoch::Application =&gt;
+                        <span class="kw">return </span><span class="prelude-val">Ok</span>(packet::Type::Handshake),
+
+                    <span class="comment">// Downgrade the epoch to Initial as the remote peer might
+                    // not be able to decrypt handshake packets yet.
+                    </span>packet::Epoch::Handshake
+                        <span class="kw">if </span><span class="self">self</span>.pkt_num_spaces[packet::Epoch::Initial]
+                            .has_keys() =&gt;
+                        <span class="kw">return </span><span class="prelude-val">Ok</span>(packet::Type::Initial),
+
+                    <span class="kw">_ </span>=&gt; (),
+                };
+            }
+
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(packet::Type::from_epoch(epoch));
+        }
+
+        <span class="kw">for </span><span class="kw-2">&amp;</span>epoch <span class="kw">in </span>packet::Epoch::epochs(
+            packet::Epoch::Initial..=packet::Epoch::Application,
+        ) {
+            <span class="comment">// Only send packets in a space when we have the send keys for it.
+            </span><span class="kw">if </span><span class="self">self</span>.pkt_num_spaces[epoch].crypto_seal.is_none() {
+                <span class="kw">continue</span>;
+            }
+
+            <span class="comment">// We are ready to send data for this packet number space.
+            </span><span class="kw">if </span><span class="self">self</span>.pkt_num_spaces[epoch].ready() {
+                <span class="kw">return </span><span class="prelude-val">Ok</span>(packet::Type::from_epoch(epoch));
+            }
+
+            <span class="comment">// There are lost frames in this packet number space.
+            </span><span class="kw">for </span>(<span class="kw">_</span>, p) <span class="kw">in </span><span class="self">self</span>.paths.iter() {
+                <span class="kw">if </span>!p.recovery.lost[epoch].is_empty() {
+                    <span class="kw">return </span><span class="prelude-val">Ok</span>(packet::Type::from_epoch(epoch));
+                }
+
+                <span class="comment">// We need to send PTO probe packets.
+                </span><span class="kw">if </span>p.recovery.loss_probes[epoch] &gt; <span class="number">0 </span>{
+                    <span class="kw">return </span><span class="prelude-val">Ok</span>(packet::Type::from_epoch(epoch));
+                }
+            }
+        }
+
+        <span class="comment">// If there are flushable, almost full or blocked streams, use the
+        // Application epoch.
+        </span><span class="kw">let </span>send_path = <span class="self">self</span>.paths.get(send_pid)<span class="question-mark">?</span>;
+        <span class="kw">if </span>(<span class="self">self</span>.is_established() || <span class="self">self</span>.is_in_early_data()) &amp;&amp;
+            (<span class="self">self</span>.should_send_handshake_done() ||
+                <span class="self">self</span>.almost_full ||
+                <span class="self">self</span>.blocked_limit.is_some() ||
+                <span class="self">self</span>.dgram_send_queue.has_pending() ||
+                <span class="self">self</span>.local_error
+                    .as_ref()
+                    .map_or(<span class="bool-val">false</span>, |conn_err| conn_err.is_app) ||
+                <span class="self">self</span>.streams.should_update_max_streams_bidi() ||
+                <span class="self">self</span>.streams.should_update_max_streams_uni() ||
+                <span class="self">self</span>.streams.has_flushable() ||
+                <span class="self">self</span>.streams.has_almost_full() ||
+                <span class="self">self</span>.streams.has_blocked() ||
+                <span class="self">self</span>.streams.has_reset() ||
+                <span class="self">self</span>.streams.has_stopped() ||
+                <span class="self">self</span>.ids.has_new_scids() ||
+                <span class="self">self</span>.ids.has_retire_dcids() ||
+                send_path.pmtud.get_probe_status() ||
+                send_path.needs_ack_eliciting ||
+                send_path.probing_required())
+        {
+            <span class="comment">// Only clients can send 0-RTT packets.
+            </span><span class="kw">if </span>!<span class="self">self</span>.is_server &amp;&amp; <span class="self">self</span>.is_in_early_data() {
+                <span class="kw">return </span><span class="prelude-val">Ok</span>(packet::Type::ZeroRTT);
+            }
+
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(packet::Type::Short);
+        }
+
+        <span class="prelude-val">Err</span>(Error::Done)
+    }
+
+    <span class="doccomment">/// Returns the mutable stream with the given ID if it exists, or creates
+    /// a new one otherwise.
+    </span><span class="kw">fn </span>get_or_create_stream(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, id: u64, local: bool,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;mut </span>stream::Stream&gt; {
+        <span class="self">self</span>.streams.get_or_create(
+            id,
+            <span class="kw-2">&amp;</span><span class="self">self</span>.local_transport_params,
+            <span class="kw-2">&amp;</span><span class="self">self</span>.peer_transport_params,
+            local,
+            <span class="self">self</span>.is_server,
+        )
+    }
+
+    <span class="doccomment">/// Processes an incoming frame.
+    </span><span class="kw">fn </span>process_frame(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, frame: frame::Frame, hdr: <span class="kw-2">&amp;</span>packet::Header,
+        recv_path_id: usize, epoch: packet::Epoch, now: time::Instant,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="macro">trace!</span>(<span class="string">"{} rx frm {:?}"</span>, <span class="self">self</span>.trace_id, frame);
+
+        <span class="kw">match </span>frame {
+            frame::Frame::Padding { .. } =&gt; (),
+
+            frame::Frame::Ping { .. } =&gt; (),
+
+            frame::Frame::ACK {
+                ranges, ack_delay, ..
+            } =&gt; {
+                <span class="kw">let </span>ack_delay = ack_delay
+                    .checked_mul(<span class="number">2_u64</span>.pow(
+                        <span class="self">self</span>.peer_transport_params.ack_delay_exponent <span class="kw">as </span>u32,
+                    ))
+                    .ok_or(Error::InvalidFrame)<span class="question-mark">?</span>;
+
+                <span class="kw">if </span>epoch == packet::Epoch::Handshake ||
+                    (epoch == packet::Epoch::Application &amp;&amp;
+                        <span class="self">self</span>.is_established())
+                {
+                    <span class="self">self</span>.peer_verified_initial_address = <span class="bool-val">true</span>;
+                }
+
+                <span class="kw">let </span>handshake_status = <span class="self">self</span>.handshake_status();
+
+                <span class="kw">let </span>is_app_limited = <span class="self">self</span>.delivery_rate_check_if_app_limited();
+
+                <span class="kw">for </span>(<span class="kw">_</span>, p) <span class="kw">in </span><span class="self">self</span>.paths.iter_mut() {
+                    <span class="kw">if </span>is_app_limited {
+                        p.recovery.delivery_rate_update_app_limited(<span class="bool-val">true</span>);
+                    }
+
+                    <span class="kw">let </span>(lost_packets, lost_bytes) = p.recovery.on_ack_received(
+                        <span class="kw-2">&amp;</span>ranges,
+                        ack_delay,
+                        epoch,
+                        handshake_status,
+                        now,
+                        <span class="kw-2">&amp;</span><span class="self">self</span>.trace_id,
+                        <span class="kw-2">&amp;mut </span><span class="self">self</span>.newly_acked,
+                    )<span class="question-mark">?</span>;
+
+                    <span class="self">self</span>.lost_count += lost_packets;
+                    <span class="self">self</span>.lost_bytes += lost_bytes <span class="kw">as </span>u64;
+                }
+            },
+
+            frame::Frame::ResetStream {
+                stream_id,
+                error_code,
+                final_size,
+            } =&gt; {
+                <span class="comment">// Peer can't send on our unidirectional streams.
+                </span><span class="kw">if </span>!stream::is_bidi(stream_id) &amp;&amp;
+                    stream::is_local(stream_id, <span class="self">self</span>.is_server)
+                {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidStreamState(stream_id));
+                }
+
+                <span class="kw">let </span>max_rx_data_left = <span class="self">self</span>.max_rx_data() - <span class="self">self</span>.rx_data;
+
+                <span class="comment">// Get existing stream or create a new one, but if the stream
+                // has already been closed and collected, ignore the frame.
+                //
+                // This can happen if e.g. an ACK frame is lost, and the peer
+                // retransmits another frame before it realizes that the stream
+                // is gone.
+                //
+                // Note that it makes it impossible to check if the frame is
+                // illegal, since we have no state, but since we ignore the
+                // frame, it should be fine.
+                </span><span class="kw">let </span>stream = <span class="kw">match </span><span class="self">self</span>.get_or_create_stream(stream_id, <span class="bool-val">false</span>) {
+                    <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                    <span class="prelude-val">Err</span>(Error::Done) =&gt; <span class="kw">return </span><span class="prelude-val">Ok</span>(()),
+
+                    <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+                };
+
+                <span class="kw">let </span>was_readable = stream.is_readable();
+                <span class="kw">let </span>priority_key = Arc::clone(<span class="kw-2">&amp;</span>stream.priority_key);
+
+                <span class="kw">let </span>max_off_delta =
+                    stream.recv.reset(error_code, final_size)<span class="question-mark">? </span><span class="kw">as </span>u64;
+
+                <span class="kw">if </span>max_off_delta &gt; max_rx_data_left {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FlowControl);
+                }
+
+                <span class="kw">if </span>!was_readable &amp;&amp; stream.is_readable() {
+                    <span class="self">self</span>.streams.insert_readable(<span class="kw-2">&amp;</span>priority_key);
+                }
+
+                <span class="self">self</span>.rx_data += max_off_delta;
+
+                <span class="self">self</span>.reset_stream_remote_count =
+                    <span class="self">self</span>.reset_stream_remote_count.saturating_add(<span class="number">1</span>);
+            },
+
+            frame::Frame::StopSending {
+                stream_id,
+                error_code,
+            } =&gt; {
+                <span class="comment">// STOP_SENDING on a receive-only stream is a fatal error.
+                </span><span class="kw">if </span>!stream::is_local(stream_id, <span class="self">self</span>.is_server) &amp;&amp;
+                    !stream::is_bidi(stream_id)
+                {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidStreamState(stream_id));
+                }
+
+                <span class="comment">// Get existing stream or create a new one, but if the stream
+                // has already been closed and collected, ignore the frame.
+                //
+                // This can happen if e.g. an ACK frame is lost, and the peer
+                // retransmits another frame before it realizes that the stream
+                // is gone.
+                //
+                // Note that it makes it impossible to check if the frame is
+                // illegal, since we have no state, but since we ignore the
+                // frame, it should be fine.
+                </span><span class="kw">let </span>stream = <span class="kw">match </span><span class="self">self</span>.get_or_create_stream(stream_id, <span class="bool-val">false</span>) {
+                    <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                    <span class="prelude-val">Err</span>(Error::Done) =&gt; <span class="kw">return </span><span class="prelude-val">Ok</span>(()),
+
+                    <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+                };
+
+                <span class="kw">let </span>was_writable = stream.is_writable();
+
+                <span class="kw">let </span>priority_key = Arc::clone(<span class="kw-2">&amp;</span>stream.priority_key);
+
+                <span class="comment">// Try stopping the stream.
+                </span><span class="kw">if let </span><span class="prelude-val">Ok</span>((final_size, unsent)) = stream.send.stop(error_code) {
+                    <span class="comment">// Claw back some flow control allowance from data that was
+                    // buffered but not actually sent before the stream was
+                    // reset.
+                    //
+                    // Note that `tx_cap` will be updated later on, so no need
+                    // to touch it here.
+                    </span><span class="self">self</span>.tx_data = <span class="self">self</span>.tx_data.saturating_sub(unsent);
+
+                    <span class="self">self</span>.tx_buffered =
+                        <span class="self">self</span>.tx_buffered.saturating_sub(unsent <span class="kw">as </span>usize);
+
+                    <span class="self">self</span>.streams.insert_reset(stream_id, error_code, final_size);
+
+                    <span class="kw">if </span>!was_writable {
+                        <span class="self">self</span>.streams.insert_writable(<span class="kw-2">&amp;</span>priority_key);
+                    }
+
+                    <span class="self">self</span>.stopped_stream_remote_count =
+                        <span class="self">self</span>.stopped_stream_remote_count.saturating_add(<span class="number">1</span>);
+                    <span class="self">self</span>.reset_stream_local_count =
+                        <span class="self">self</span>.reset_stream_local_count.saturating_add(<span class="number">1</span>);
+                }
+            },
+
+            frame::Frame::Crypto { data } =&gt; {
+                <span class="kw">if </span>data.max_off() &gt;= MAX_CRYPTO_STREAM_OFFSET {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::CryptoBufferExceeded);
+                }
+
+                <span class="comment">// Push the data to the stream so it can be re-ordered.
+                </span><span class="self">self</span>.pkt_num_spaces[epoch].crypto_stream.recv.write(data)<span class="question-mark">?</span>;
+
+                <span class="comment">// Feed crypto data to the TLS state, if there's data
+                // available at the expected offset.
+                </span><span class="kw">let </span><span class="kw-2">mut </span>crypto_buf = [<span class="number">0</span>; <span class="number">512</span>];
+
+                <span class="kw">let </span>level = crypto::Level::from_epoch(epoch);
+
+                <span class="kw">let </span>stream = <span class="kw-2">&amp;mut </span><span class="self">self</span>.pkt_num_spaces[epoch].crypto_stream;
+
+                <span class="kw">while let </span><span class="prelude-val">Ok</span>((read, <span class="kw">_</span>)) = stream.recv.emit(<span class="kw-2">&amp;mut </span>crypto_buf) {
+                    <span class="kw">let </span>recv_buf = <span class="kw-2">&amp;</span>crypto_buf[..read];
+                    <span class="self">self</span>.handshake.provide_data(level, recv_buf)<span class="question-mark">?</span>;
+                }
+
+                <span class="self">self</span>.do_handshake(now)<span class="question-mark">?</span>;
+            },
+
+            frame::Frame::CryptoHeader { .. } =&gt; <span class="macro">unreachable!</span>(),
+
+            <span class="comment">// TODO: implement stateless retry
+            </span>frame::Frame::NewToken { .. } =&gt;
+                <span class="kw">if </span><span class="self">self</span>.is_server {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidPacket);
+                },
+
+            frame::Frame::Stream { stream_id, data } =&gt; {
+                <span class="comment">// Peer can't send on our unidirectional streams.
+                </span><span class="kw">if </span>!stream::is_bidi(stream_id) &amp;&amp;
+                    stream::is_local(stream_id, <span class="self">self</span>.is_server)
+                {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidStreamState(stream_id));
+                }
+
+                <span class="kw">let </span>max_rx_data_left = <span class="self">self</span>.max_rx_data() - <span class="self">self</span>.rx_data;
+
+                <span class="comment">// Get existing stream or create a new one, but if the stream
+                // has already been closed and collected, ignore the frame.
+                //
+                // This can happen if e.g. an ACK frame is lost, and the peer
+                // retransmits another frame before it realizes that the stream
+                // is gone.
+                //
+                // Note that it makes it impossible to check if the frame is
+                // illegal, since we have no state, but since we ignore the
+                // frame, it should be fine.
+                </span><span class="kw">let </span>stream = <span class="kw">match </span><span class="self">self</span>.get_or_create_stream(stream_id, <span class="bool-val">false</span>) {
+                    <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                    <span class="prelude-val">Err</span>(Error::Done) =&gt; <span class="kw">return </span><span class="prelude-val">Ok</span>(()),
+
+                    <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+                };
+
+                <span class="comment">// Check for the connection-level flow control limit.
+                </span><span class="kw">let </span>max_off_delta =
+                    data.max_off().saturating_sub(stream.recv.max_off());
+
+                <span class="kw">if </span>max_off_delta &gt; max_rx_data_left {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FlowControl);
+                }
+
+                <span class="kw">let </span>was_readable = stream.is_readable();
+                <span class="kw">let </span>priority_key = Arc::clone(<span class="kw-2">&amp;</span>stream.priority_key);
+
+                <span class="kw">let </span>was_draining = stream.recv.is_draining();
+
+                stream.recv.write(data)<span class="question-mark">?</span>;
+
+                <span class="kw">if </span>!was_readable &amp;&amp; stream.is_readable() {
+                    <span class="self">self</span>.streams.insert_readable(<span class="kw-2">&amp;</span>priority_key);
+                }
+
+                <span class="self">self</span>.rx_data += max_off_delta;
+
+                <span class="kw">if </span>was_draining {
+                    <span class="comment">// When a stream is in draining state it will not queue
+                    // incoming data for the application to read, so consider
+                    // the received data as consumed, which might trigger a flow
+                    // control update.
+                    </span><span class="self">self</span>.flow_control.add_consumed(max_off_delta);
+
+                    <span class="kw">if </span><span class="self">self</span>.should_update_max_data() {
+                        <span class="self">self</span>.almost_full = <span class="bool-val">true</span>;
+                    }
+                }
+            },
+
+            frame::Frame::StreamHeader { .. } =&gt; <span class="macro">unreachable!</span>(),
+
+            frame::Frame::MaxData { max } =&gt; {
+                <span class="self">self</span>.max_tx_data = cmp::max(<span class="self">self</span>.max_tx_data, max);
+            },
+
+            frame::Frame::MaxStreamData { stream_id, max } =&gt; {
+                <span class="comment">// Peer can't receive on its own unidirectional streams.
+                </span><span class="kw">if </span>!stream::is_bidi(stream_id) &amp;&amp;
+                    !stream::is_local(stream_id, <span class="self">self</span>.is_server)
+                {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidStreamState(stream_id));
+                }
+
+                <span class="comment">// Get existing stream or create a new one, but if the stream
+                // has already been closed and collected, ignore the frame.
+                //
+                // This can happen if e.g. an ACK frame is lost, and the peer
+                // retransmits another frame before it realizes that the stream
+                // is gone.
+                //
+                // Note that it makes it impossible to check if the frame is
+                // illegal, since we have no state, but since we ignore the
+                // frame, it should be fine.
+                </span><span class="kw">let </span>stream = <span class="kw">match </span><span class="self">self</span>.get_or_create_stream(stream_id, <span class="bool-val">false</span>) {
+                    <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                    <span class="prelude-val">Err</span>(Error::Done) =&gt; <span class="kw">return </span><span class="prelude-val">Ok</span>(()),
+
+                    <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+                };
+
+                <span class="kw">let </span>was_flushable = stream.is_flushable();
+
+                stream.send.update_max_data(max);
+
+                <span class="kw">let </span>writable = stream.is_writable();
+
+                <span class="kw">let </span>priority_key = Arc::clone(<span class="kw-2">&amp;</span>stream.priority_key);
+
+                <span class="comment">// If the stream is now flushable push it to the flushable queue,
+                // but only if it wasn't already queued.
+                </span><span class="kw">if </span>stream.is_flushable() &amp;&amp; !was_flushable {
+                    <span class="kw">let </span>priority_key = Arc::clone(<span class="kw-2">&amp;</span>stream.priority_key);
+                    <span class="self">self</span>.streams.insert_flushable(<span class="kw-2">&amp;</span>priority_key);
+                }
+
+                <span class="kw">if </span>writable {
+                    <span class="self">self</span>.streams.insert_writable(<span class="kw-2">&amp;</span>priority_key);
+                }
+            },
+
+            frame::Frame::MaxStreamsBidi { max } =&gt; {
+                <span class="kw">if </span>max &gt; MAX_STREAM_ID {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidFrame);
+                }
+
+                <span class="self">self</span>.streams.update_peer_max_streams_bidi(max);
+            },
+
+            frame::Frame::MaxStreamsUni { max } =&gt; {
+                <span class="kw">if </span>max &gt; MAX_STREAM_ID {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidFrame);
+                }
+
+                <span class="self">self</span>.streams.update_peer_max_streams_uni(max);
+            },
+
+            frame::Frame::DataBlocked { .. } =&gt; (),
+
+            frame::Frame::StreamDataBlocked { .. } =&gt; (),
+
+            frame::Frame::StreamsBlockedBidi { limit } =&gt; {
+                <span class="kw">if </span>limit &gt; MAX_STREAM_ID {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidFrame);
+                }
+            },
+
+            frame::Frame::StreamsBlockedUni { limit } =&gt; {
+                <span class="kw">if </span>limit &gt; MAX_STREAM_ID {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidFrame);
+                }
+            },
+
+            frame::Frame::NewConnectionId {
+                seq_num,
+                retire_prior_to,
+                conn_id,
+                reset_token,
+            } =&gt; {
+                <span class="kw">if </span><span class="self">self</span>.ids.zero_length_dcid() {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState);
+                }
+
+                <span class="kw">let </span><span class="kw-2">mut </span>retired_path_ids = SmallVec::new();
+
+                <span class="comment">// Retire pending path IDs before propagating the error code to
+                // make sure retired connection IDs are not in use anymore.
+                </span><span class="kw">let </span>new_dcid_res = <span class="self">self</span>.ids.new_dcid(
+                    conn_id.into(),
+                    seq_num,
+                    u128::from_be_bytes(reset_token),
+                    retire_prior_to,
+                    <span class="kw-2">&amp;mut </span>retired_path_ids,
+                );
+
+                <span class="kw">for </span>(dcid_seq, pid) <span class="kw">in </span>retired_path_ids {
+                    <span class="kw">let </span>path = <span class="self">self</span>.paths.get_mut(pid)<span class="question-mark">?</span>;
+
+                    <span class="comment">// Maybe the path already switched to another DCID.
+                    </span><span class="kw">if </span>path.active_dcid_seq != <span class="prelude-val">Some</span>(dcid_seq) {
+                        <span class="kw">continue</span>;
+                    }
+
+                    <span class="kw">if let </span><span class="prelude-val">Some</span>(new_dcid_seq) =
+                        <span class="self">self</span>.ids.lowest_available_dcid_seq()
+                    {
+                        path.active_dcid_seq = <span class="prelude-val">Some</span>(new_dcid_seq);
+
+                        <span class="self">self</span>.ids.link_dcid_to_path_id(new_dcid_seq, pid)<span class="question-mark">?</span>;
+
+                        <span class="macro">trace!</span>(
+                            <span class="string">"{} path ID {} changed DCID: old seq num {} new seq num {}"</span>,
+                            <span class="self">self</span>.trace_id, pid, dcid_seq, new_dcid_seq,
+                        );
+                    } <span class="kw">else </span>{
+                        <span class="comment">// We cannot use this path anymore for now.
+                        </span>path.active_dcid_seq = <span class="prelude-val">None</span>;
+
+                        <span class="macro">trace!</span>(
+                            <span class="string">"{} path ID {} cannot be used; DCID seq num {} has been retired"</span>,
+                            <span class="self">self</span>.trace_id, pid, dcid_seq,
+                        );
+                    }
+                }
+
+                <span class="comment">// Propagate error (if any) now...
+                </span>new_dcid_res<span class="question-mark">?</span>;
+            },
+
+            frame::Frame::RetireConnectionId { seq_num } =&gt; {
+                <span class="kw">if </span><span class="self">self</span>.ids.zero_length_scid() {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState);
+                }
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(pid) = <span class="self">self</span>.ids.retire_scid(seq_num, <span class="kw-2">&amp;</span>hdr.dcid)<span class="question-mark">? </span>{
+                    <span class="kw">let </span>path = <span class="self">self</span>.paths.get_mut(pid)<span class="question-mark">?</span>;
+
+                    <span class="comment">// Maybe we already linked a new SCID to that path.
+                    </span><span class="kw">if </span>path.active_scid_seq == <span class="prelude-val">Some</span>(seq_num) {
+                        <span class="comment">// XXX: We do not remove unused paths now, we instead
+                        // wait until we need to maintain more paths than the
+                        // host is willing to.
+                        </span>path.active_scid_seq = <span class="prelude-val">None</span>;
+                    }
+                }
+            },
+
+            frame::Frame::PathChallenge { data } =&gt; {
+                <span class="self">self</span>.path_challenge_rx_count += <span class="number">1</span>;
+
+                <span class="self">self</span>.paths
+                    .get_mut(recv_path_id)<span class="question-mark">?
+                    </span>.on_challenge_received(data);
+            },
+
+            frame::Frame::PathResponse { data } =&gt; {
+                <span class="self">self</span>.paths.on_response_received(data)<span class="question-mark">?</span>;
+            },
+
+            frame::Frame::ConnectionClose {
+                error_code, reason, ..
+            } =&gt; {
+                <span class="self">self</span>.peer_error = <span class="prelude-val">Some</span>(ConnectionError {
+                    is_app: <span class="bool-val">false</span>,
+                    error_code,
+                    reason,
+                });
+
+                <span class="kw">let </span>path = <span class="self">self</span>.paths.get_active()<span class="question-mark">?</span>;
+                <span class="self">self</span>.draining_timer = <span class="prelude-val">Some</span>(now + (path.recovery.pto() * <span class="number">3</span>));
+            },
+
+            frame::Frame::ApplicationClose { error_code, reason } =&gt; {
+                <span class="self">self</span>.peer_error = <span class="prelude-val">Some</span>(ConnectionError {
+                    is_app: <span class="bool-val">true</span>,
+                    error_code,
+                    reason,
+                });
+
+                <span class="kw">let </span>path = <span class="self">self</span>.paths.get_active()<span class="question-mark">?</span>;
+                <span class="self">self</span>.draining_timer = <span class="prelude-val">Some</span>(now + (path.recovery.pto() * <span class="number">3</span>));
+            },
+
+            frame::Frame::HandshakeDone =&gt; {
+                <span class="kw">if </span><span class="self">self</span>.is_server {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidPacket);
+                }
+
+                <span class="self">self</span>.peer_verified_initial_address = <span class="bool-val">true</span>;
+
+                <span class="self">self</span>.handshake_confirmed = <span class="bool-val">true</span>;
+
+                <span class="comment">// Once the handshake is confirmed, we can drop Handshake keys.
+                </span><span class="self">self</span>.drop_epoch_state(packet::Epoch::Handshake, now);
+            },
+
+            frame::Frame::Datagram { data } =&gt; {
+                <span class="comment">// Close the connection if DATAGRAMs are not enabled.
+                // quiche always advertises support for 64K sized DATAGRAM
+                // frames, as recommended by the standard, so we don't need a
+                // size check.
+                </span><span class="kw">if </span>!<span class="self">self</span>.dgram_enabled() {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState);
+                }
+
+                <span class="comment">// If recv queue is full, discard oldest
+                </span><span class="kw">if </span><span class="self">self</span>.dgram_recv_queue.is_full() {
+                    <span class="self">self</span>.dgram_recv_queue.pop();
+                }
+
+                <span class="self">self</span>.dgram_recv_queue.push(data)<span class="question-mark">?</span>;
+            },
+
+            frame::Frame::DatagramHeader { .. } =&gt; <span class="macro">unreachable!</span>(),
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Drops the keys and recovery state for the given epoch.
+    </span><span class="kw">fn </span>drop_epoch_state(<span class="kw-2">&amp;mut </span><span class="self">self</span>, epoch: packet::Epoch, now: time::Instant) {
+        <span class="kw">if </span><span class="self">self</span>.pkt_num_spaces[epoch].crypto_open.is_none() {
+            <span class="kw">return</span>;
+        }
+
+        <span class="self">self</span>.pkt_num_spaces[epoch].crypto_open = <span class="prelude-val">None</span>;
+        <span class="self">self</span>.pkt_num_spaces[epoch].crypto_seal = <span class="prelude-val">None</span>;
+        <span class="self">self</span>.pkt_num_spaces[epoch].clear();
+
+        <span class="kw">let </span>handshake_status = <span class="self">self</span>.handshake_status();
+        <span class="kw">for </span>(<span class="kw">_</span>, p) <span class="kw">in </span><span class="self">self</span>.paths.iter_mut() {
+            p.recovery
+                .on_pkt_num_space_discarded(epoch, handshake_status, now);
+        }
+
+        <span class="macro">trace!</span>(<span class="string">"{} dropped epoch {} state"</span>, <span class="self">self</span>.trace_id, epoch);
+    }
+
+    <span class="doccomment">/// Returns true if the connection-level flow control needs to be updated.
+    ///
+    /// This happens when the new max data limit is at least double the amount
+    /// of data that can be received before blocking.
+    </span><span class="kw">fn </span>should_update_max_data(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.flow_control.should_update_max_data()
+    }
+
+    <span class="doccomment">/// Returns the connection level flow control limit.
+    </span><span class="kw">fn </span>max_rx_data(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.flow_control.max_data()
+    }
+
+    <span class="doccomment">/// Returns true if the HANDSHAKE_DONE frame needs to be sent.
+    </span><span class="kw">fn </span>should_send_handshake_done(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.is_established() &amp;&amp; !<span class="self">self</span>.handshake_done_sent &amp;&amp; <span class="self">self</span>.is_server
+    }
+
+    <span class="doccomment">/// Returns the idle timeout value.
+    ///
+    /// `None` is returned if both end-points disabled the idle timeout.
+    </span><span class="kw">fn </span>idle_timeout(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;time::Duration&gt; {
+        <span class="comment">// If the transport parameter is set to 0, then the respective endpoint
+        // decided to disable the idle timeout. If both are disabled we should
+        // not set any timeout.
+        </span><span class="kw">if </span><span class="self">self</span>.local_transport_params.max_idle_timeout == <span class="number">0 </span>&amp;&amp;
+            <span class="self">self</span>.peer_transport_params.max_idle_timeout == <span class="number">0
+        </span>{
+            <span class="kw">return </span><span class="prelude-val">None</span>;
+        }
+
+        <span class="comment">// If the local endpoint or the peer disabled the idle timeout, use the
+        // other peer's value, otherwise use the minimum of the two values.
+        </span><span class="kw">let </span>idle_timeout = <span class="kw">if </span><span class="self">self</span>.local_transport_params.max_idle_timeout == <span class="number">0 </span>{
+            <span class="self">self</span>.peer_transport_params.max_idle_timeout
+        } <span class="kw">else if </span><span class="self">self</span>.peer_transport_params.max_idle_timeout == <span class="number">0 </span>{
+            <span class="self">self</span>.local_transport_params.max_idle_timeout
+        } <span class="kw">else </span>{
+            cmp::min(
+                <span class="self">self</span>.local_transport_params.max_idle_timeout,
+                <span class="self">self</span>.peer_transport_params.max_idle_timeout,
+            )
+        };
+
+        <span class="kw">let </span>path_pto = <span class="kw">match </span><span class="self">self</span>.paths.get_active() {
+            <span class="prelude-val">Ok</span>(p) =&gt; p.recovery.pto(),
+            <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; time::Duration::ZERO,
+        };
+
+        <span class="kw">let </span>idle_timeout = time::Duration::from_millis(idle_timeout);
+        <span class="kw">let </span>idle_timeout = cmp::max(idle_timeout, <span class="number">3 </span>* path_pto);
+
+        <span class="prelude-val">Some</span>(idle_timeout)
+    }
+
+    <span class="doccomment">/// Returns the connection's handshake status for use in loss recovery.
+    </span><span class="kw">fn </span>handshake_status(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; recovery::HandshakeStatus {
+        recovery::HandshakeStatus {
+            has_handshake_keys: <span class="self">self</span>.pkt_num_spaces[packet::Epoch::Handshake]
+                .has_keys(),
+
+            peer_verified_address: <span class="self">self</span>.peer_verified_initial_address,
+
+            completed: <span class="self">self</span>.is_established(),
+        }
+    }
+
+    <span class="doccomment">/// Updates send capacity.
+    </span><span class="kw">fn </span>update_tx_cap(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="kw">let </span>cwin_available = <span class="kw">match </span><span class="self">self</span>.paths.get_active() {
+            <span class="prelude-val">Ok</span>(p) =&gt; p.recovery.cwnd_available() <span class="kw">as </span>u64,
+            <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="number">0</span>,
+        };
+
+        <span class="self">self</span>.tx_cap =
+            cmp::min(cwin_available, <span class="self">self</span>.max_tx_data - <span class="self">self</span>.tx_data) <span class="kw">as </span>usize;
+    }
+
+    <span class="kw">fn </span>delivery_rate_check_if_app_limited(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="comment">// Enter the app-limited phase of delivery rate when these conditions
+        // are met:
+        //
+        // - The remaining capacity is higher than available bytes in cwnd (there
+        //   is more room to send).
+        // - New data since the last send() is smaller than available bytes in
+        //   cwnd (we queued less than what we can send).
+        // - There is room to send more data in cwnd.
+        //
+        // In application-limited phases the transmission rate is limited by the
+        // application rather than the congestion control algorithm.
+        //
+        // Note that this is equivalent to CheckIfApplicationLimited() from the
+        // delivery rate draft. This is also separate from `recovery.app_limited`
+        // and only applies to delivery rate calculation.
+        </span><span class="kw">let </span>cwin_available = <span class="self">self
+            </span>.paths
+            .iter()
+            .filter(|<span class="kw-2">&amp;</span>(<span class="kw">_</span>, p)| p.active())
+            .map(|(<span class="kw">_</span>, p)| p.recovery.cwnd_available())
+            .sum();
+
+        ((<span class="self">self</span>.tx_buffered + <span class="self">self</span>.dgram_send_queue_byte_size()) &lt; cwin_available) &amp;&amp;
+            (<span class="self">self</span>.tx_data.saturating_sub(<span class="self">self</span>.last_tx_data)) &lt;
+                cwin_available <span class="kw">as </span>u64 &amp;&amp;
+            cwin_available &gt; <span class="number">0
+    </span>}
+
+    <span class="kw">fn </span>set_initial_dcid(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, cid: ConnectionId&lt;<span class="lifetime">'static</span>&gt;, reset_token: <span class="prelude-ty">Option</span>&lt;u128&gt;,
+        path_id: usize,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="self">self</span>.ids.set_initial_dcid(cid, reset_token, <span class="prelude-val">Some</span>(path_id));
+        <span class="self">self</span>.paths.get_mut(path_id)<span class="question-mark">?</span>.active_dcid_seq = <span class="prelude-val">Some</span>(<span class="number">0</span>);
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Selects the path that the incoming packet belongs to, or creates a new
+    /// one if no existing path matches.
+    </span><span class="kw">fn </span>get_or_create_recv_path_id(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, recv_pid: <span class="prelude-ty">Option</span>&lt;usize&gt;, dcid: <span class="kw-2">&amp;</span>ConnectionId, buf_len: usize,
+        info: <span class="kw-2">&amp;</span>RecvInfo,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="kw">let </span>ids = <span class="kw-2">&amp;mut </span><span class="self">self</span>.ids;
+
+        <span class="kw">let </span>(in_scid_seq, <span class="kw-2">mut </span>in_scid_pid) =
+            ids.find_scid_seq(dcid).ok_or(Error::InvalidState)<span class="question-mark">?</span>;
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(recv_pid) = recv_pid {
+            <span class="comment">// If the path observes a change of SCID used, note it.
+            </span><span class="kw">let </span>recv_path = <span class="self">self</span>.paths.get_mut(recv_pid)<span class="question-mark">?</span>;
+
+            <span class="kw">let </span>cid_entry =
+                recv_path.active_scid_seq.and_then(|v| ids.get_scid(v).ok());
+
+            <span class="kw">if </span>cid_entry.map(|e| <span class="kw-2">&amp;</span>e.cid) != <span class="prelude-val">Some</span>(dcid) {
+                <span class="kw">let </span>incoming_cid_entry = ids.get_scid(in_scid_seq)<span class="question-mark">?</span>;
+
+                <span class="kw">let </span>prev_recv_pid =
+                    incoming_cid_entry.path_id.unwrap_or(recv_pid);
+
+                <span class="kw">if </span>prev_recv_pid != recv_pid {
+                    <span class="macro">trace!</span>(
+                        <span class="string">"{} peer reused CID {:?} from path {} on path {}"</span>,
+                        <span class="self">self</span>.trace_id,
+                        dcid,
+                        prev_recv_pid,
+                        recv_pid
+                    );
+
+                    <span class="comment">// TODO: reset congestion control.
+                </span>}
+
+                <span class="macro">trace!</span>(
+                    <span class="string">"{} path ID {} now see SCID with seq num {}"</span>,
+                    <span class="self">self</span>.trace_id,
+                    recv_pid,
+                    in_scid_seq
+                );
+
+                recv_path.active_scid_seq = <span class="prelude-val">Some</span>(in_scid_seq);
+                ids.link_scid_to_path_id(in_scid_seq, recv_pid)<span class="question-mark">?</span>;
+            }
+
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(recv_pid);
+        }
+
+        <span class="comment">// This is a new 4-tuple. See if the CID has not been assigned on
+        // another path.
+
+        // Ignore this step if are using zero-length SCID.
+        </span><span class="kw">if </span>ids.zero_length_scid() {
+            in_scid_pid = <span class="prelude-val">None</span>;
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(in_scid_pid) = in_scid_pid {
+            <span class="comment">// This CID has been used by another path. If we have the
+            // room to do so, create a new `Path` structure holding this
+            // new 4-tuple. Otherwise, drop the packet.
+            </span><span class="kw">let </span>old_path = <span class="self">self</span>.paths.get_mut(in_scid_pid)<span class="question-mark">?</span>;
+            <span class="kw">let </span>old_local_addr = old_path.local_addr();
+            <span class="kw">let </span>old_peer_addr = old_path.peer_addr();
+
+            <span class="macro">trace!</span>(
+                <span class="string">"{} reused CID seq {} of ({},{}) (path {}) on ({},{})"</span>,
+                <span class="self">self</span>.trace_id,
+                in_scid_seq,
+                old_local_addr,
+                old_peer_addr,
+                in_scid_pid,
+                info.to,
+                info.from
+            );
+
+            <span class="comment">// Notify the application.
+            </span><span class="self">self</span>.paths
+                .notify_event(path::PathEvent::ReusedSourceConnectionId(
+                    in_scid_seq,
+                    (old_local_addr, old_peer_addr),
+                    (info.to, info.from),
+                ));
+        }
+
+        <span class="comment">// This is a new path using an unassigned CID; create it!
+        </span><span class="kw">let </span><span class="kw-2">mut </span>path = path::Path::new(
+            info.to,
+            info.from,
+            <span class="kw-2">&amp;</span><span class="self">self</span>.recovery_config,
+            <span class="self">self</span>.path_challenge_recv_max_queue_len,
+            MIN_CLIENT_INITIAL_LEN,
+            <span class="bool-val">false</span>,
+        );
+
+        path.max_send_bytes = buf_len * MAX_AMPLIFICATION_FACTOR;
+        path.active_scid_seq = <span class="prelude-val">Some</span>(in_scid_seq);
+
+        <span class="comment">// Automatically probes the new path.
+        </span>path.request_validation();
+
+        <span class="kw">let </span>pid = <span class="self">self</span>.paths.insert_path(path, <span class="self">self</span>.is_server)<span class="question-mark">?</span>;
+
+        <span class="comment">// Do not record path reuse.
+        </span><span class="kw">if </span>in_scid_pid.is_none() {
+            ids.link_scid_to_path_id(in_scid_seq, pid)<span class="question-mark">?</span>;
+        }
+
+        <span class="prelude-val">Ok</span>(pid)
+    }
+
+    <span class="doccomment">/// Selects the path on which the next packet must be sent.
+    </span><span class="kw">fn </span>get_send_path_id(
+        <span class="kw-2">&amp;</span><span class="self">self</span>, from: <span class="prelude-ty">Option</span>&lt;SocketAddr&gt;, to: <span class="prelude-ty">Option</span>&lt;SocketAddr&gt;,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="comment">// A probing packet must be sent, but only if the connection is fully
+        // established.
+        </span><span class="kw">if </span><span class="self">self</span>.is_established() {
+            <span class="kw">let </span><span class="kw-2">mut </span>probing = <span class="self">self
+                </span>.paths
+                .iter()
+                .filter(|(<span class="kw">_</span>, p)| from.is_none() || <span class="prelude-val">Some</span>(p.local_addr()) == from)
+                .filter(|(<span class="kw">_</span>, p)| to.is_none() || <span class="prelude-val">Some</span>(p.peer_addr()) == to)
+                .filter(|(<span class="kw">_</span>, p)| p.active_dcid_seq.is_some())
+                .filter(|(<span class="kw">_</span>, p)| p.probing_required())
+                .map(|(pid, <span class="kw">_</span>)| pid);
+
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(pid) = probing.next() {
+                <span class="kw">return </span><span class="prelude-val">Ok</span>(pid);
+            }
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>((pid, p)) = <span class="self">self</span>.paths.get_active_with_pid() {
+            <span class="kw">if </span>from.is_some() &amp;&amp; <span class="prelude-val">Some</span>(p.local_addr()) != from {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+            }
+
+            <span class="kw">if </span>to.is_some() &amp;&amp; <span class="prelude-val">Some</span>(p.peer_addr()) != to {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+            }
+
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(pid);
+        };
+
+        <span class="prelude-val">Err</span>(Error::InvalidState)
+    }
+
+    <span class="doccomment">/// Sets the path with identifier 'path_id' to be active.
+    </span><span class="kw">fn </span>set_active_path(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, path_id: usize, now: time::Instant,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if let </span><span class="prelude-val">Ok</span>(old_active_path) = <span class="self">self</span>.paths.get_active_mut() {
+            <span class="kw">for </span><span class="kw-2">&amp;</span>e <span class="kw">in </span>packet::Epoch::epochs(
+                packet::Epoch::Initial..=packet::Epoch::Application,
+            ) {
+                <span class="kw">let </span>(lost_packets, lost_bytes) = old_active_path
+                    .recovery
+                    .on_path_change(e, now, <span class="kw-2">&amp;</span><span class="self">self</span>.trace_id);
+
+                <span class="self">self</span>.lost_count += lost_packets;
+                <span class="self">self</span>.lost_bytes += lost_bytes <span class="kw">as </span>u64;
+            }
+        }
+
+        <span class="self">self</span>.paths.set_active_path(path_id)
+    }
+
+    <span class="doccomment">/// Handles potential connection migration.
+    </span><span class="kw">fn </span>on_peer_migrated(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, new_pid: usize, disable_dcid_reuse: bool, now: time::Instant,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>active_path_id = <span class="self">self</span>.paths.get_active_path_id()<span class="question-mark">?</span>;
+
+        <span class="kw">if </span>active_path_id == new_pid {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+        }
+
+        <span class="self">self</span>.set_active_path(new_pid, now)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>no_spare_dcid =
+            <span class="self">self</span>.paths.get_mut(new_pid)<span class="question-mark">?</span>.active_dcid_seq.is_none();
+
+        <span class="kw">if </span>no_spare_dcid &amp;&amp; !disable_dcid_reuse {
+            <span class="self">self</span>.paths.get_mut(new_pid)<span class="question-mark">?</span>.active_dcid_seq =
+                <span class="self">self</span>.paths.get_mut(active_path_id)<span class="question-mark">?</span>.active_dcid_seq;
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Creates a new client-side path.
+    </span><span class="kw">fn </span>create_path_on_client(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, local_addr: SocketAddr, peer_addr: SocketAddr,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="kw">if </span><span class="self">self</span>.is_server {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState);
+        }
+
+        <span class="comment">// If we use zero-length SCID and go over our local active CID limit,
+        // the `insert_path()` call will raise an error.
+        </span><span class="kw">if </span>!<span class="self">self</span>.ids.zero_length_scid() &amp;&amp; <span class="self">self</span>.ids.available_scids() == <span class="number">0 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::OutOfIdentifiers);
+        }
+
+        <span class="comment">// Do we have a spare DCID? If we are using zero-length DCID, just use
+        // the default having sequence 0 (note that if we exceed our local CID
+        // limit, the `insert_path()` call will raise an error.
+        </span><span class="kw">let </span>dcid_seq = <span class="kw">if </span><span class="self">self</span>.ids.zero_length_dcid() {
+            <span class="number">0
+        </span>} <span class="kw">else </span>{
+            <span class="self">self</span>.ids
+                .lowest_available_dcid_seq()
+                .ok_or(Error::OutOfIdentifiers)<span class="question-mark">?
+        </span>};
+
+        <span class="kw">let </span><span class="kw-2">mut </span>path = path::Path::new(
+            local_addr,
+            peer_addr,
+            <span class="kw-2">&amp;</span><span class="self">self</span>.recovery_config,
+            <span class="self">self</span>.path_challenge_recv_max_queue_len,
+            MIN_CLIENT_INITIAL_LEN,
+            <span class="bool-val">false</span>,
+        );
+        path.active_dcid_seq = <span class="prelude-val">Some</span>(dcid_seq);
+
+        <span class="kw">let </span>pid = <span class="self">self
+            </span>.paths
+            .insert_path(path, <span class="bool-val">false</span>)
+            .map_err(|<span class="kw">_</span>| Error::OutOfIdentifiers)<span class="question-mark">?</span>;
+        <span class="self">self</span>.ids.link_dcid_to_path_id(dcid_seq, pid)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(pid)
+    }
+
+    <span class="comment">// Marks the connection as closed and does any related tidyup.
+    </span><span class="kw">fn </span>mark_closed(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+        </span>{
+            <span class="kw">let </span>cc = <span class="kw">match </span>(<span class="self">self</span>.is_established(), <span class="self">self</span>.timed_out, <span class="kw-2">&amp;</span><span class="self">self</span>.peer_error, <span class="kw-2">&amp;</span><span class="self">self</span>.local_error) {
+                (<span class="bool-val">false</span>, <span class="kw">_</span>, <span class="kw">_</span>, <span class="kw">_</span>) =&gt; qlog::events::connectivity::ConnectionClosed {
+                    owner: <span class="prelude-val">Some</span>(TransportOwner::Local),
+                    connection_code: <span class="prelude-val">None</span>,
+                    application_code: <span class="prelude-val">None</span>,
+                    internal_code: <span class="prelude-val">None</span>,
+                    reason: <span class="prelude-val">Some</span>(<span class="string">"Failed to establish connection"</span>.to_string()),
+                    trigger: <span class="prelude-val">Some</span>(qlog::events::connectivity::ConnectionClosedTrigger::HandshakeTimeout)
+                },
+
+                (<span class="bool-val">true</span>, <span class="bool-val">true</span>, <span class="kw">_</span>, <span class="kw">_</span>) =&gt; qlog::events::connectivity::ConnectionClosed {
+                    owner: <span class="prelude-val">Some</span>(TransportOwner::Local),
+                    connection_code: <span class="prelude-val">None</span>,
+                    application_code: <span class="prelude-val">None</span>,
+                    internal_code: <span class="prelude-val">None</span>,
+                    reason: <span class="prelude-val">Some</span>(<span class="string">"Idle timeout"</span>.to_string()),
+                    trigger: <span class="prelude-val">Some</span>(qlog::events::connectivity::ConnectionClosedTrigger::IdleTimeout)
+                },
+
+                (<span class="bool-val">true</span>, <span class="bool-val">false</span>, <span class="prelude-val">Some</span>(peer_error), <span class="prelude-val">None</span>) =&gt; {
+                    <span class="kw">let </span>(connection_code, application_code) = <span class="kw">if </span>peer_error.is_app {
+                        (<span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(qlog::events::ApplicationErrorCode::Value(peer_error.error_code)))
+                    } <span class="kw">else </span>{
+                        (<span class="prelude-val">Some</span>(qlog::events::ConnectionErrorCode::Value(peer_error.error_code)), <span class="prelude-val">None</span>)
+                    };
+
+                    qlog::events::connectivity::ConnectionClosed {
+                        owner: <span class="prelude-val">Some</span>(TransportOwner::Remote),
+                        connection_code,
+                        application_code,
+                        internal_code: <span class="prelude-val">None</span>,
+                        reason: <span class="prelude-val">Some</span>(String::from_utf8_lossy(<span class="kw-2">&amp;</span>peer_error.reason).to_string()),
+                        trigger: <span class="prelude-val">Some</span>(qlog::events::connectivity::ConnectionClosedTrigger::Error),
+                    }
+                },
+
+                (<span class="bool-val">true</span>, <span class="bool-val">false</span>, <span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(local_error)) =&gt; {
+                    <span class="kw">let </span>(connection_code, application_code) = <span class="kw">if </span>local_error.is_app {
+                        (<span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(qlog::events::ApplicationErrorCode::Value(local_error.error_code)))
+                    } <span class="kw">else </span>{
+                        (<span class="prelude-val">Some</span>(qlog::events::ConnectionErrorCode::Value(local_error.error_code)), <span class="prelude-val">None</span>)
+                    };
+
+                    qlog::events::connectivity::ConnectionClosed {
+                        owner: <span class="prelude-val">Some</span>(TransportOwner::Local),
+                        connection_code,
+                        application_code,
+                        internal_code: <span class="prelude-val">None</span>,
+                        reason: <span class="prelude-val">Some</span>(String::from_utf8_lossy(<span class="kw-2">&amp;</span>local_error.reason).to_string()),
+                        trigger: <span class="prelude-val">Some</span>(qlog::events::connectivity::ConnectionClosedTrigger::Error),
+                    }
+                },
+
+                <span class="kw">_ </span>=&gt; qlog::events::connectivity::ConnectionClosed {
+                    owner: <span class="prelude-val">None</span>,
+                    connection_code: <span class="prelude-val">None</span>,
+                    application_code: <span class="prelude-val">None</span>,
+                    internal_code: <span class="prelude-val">None</span>,
+                    reason: <span class="prelude-val">None</span>,
+                    trigger: <span class="prelude-val">None</span>,
+                },
+            };
+
+            <span class="macro">qlog_with_type!</span>(QLOG_CONNECTION_CLOSED, <span class="self">self</span>.qlog, q, {
+                <span class="kw">let </span>ev_data = qlog::events::EventData::ConnectionClosed(cc);
+
+                q.add_event_data_now(ev_data).ok();
+            });
+            <span class="self">self</span>.qlog.streamer = <span class="prelude-val">None</span>;
+        }
+        <span class="self">self</span>.closed = <span class="bool-val">true</span>;
+    }
+}
+
+<span class="attr">#[cfg(feature = <span class="string">"boringssl-boring-crate"</span>)]
+</span><span class="kw">impl </span>AsMut&lt;boring::ssl::SslRef&gt; <span class="kw">for </span>Connection {
+    <span class="kw">fn </span>as_mut(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;mut </span>boring::ssl::SslRef {
+        <span class="self">self</span>.handshake.ssl_mut()
+    }
+}
+
+<span class="doccomment">/// Maps an `Error` to `Error::Done`, or itself.
+///
+/// When a received packet that hasn't yet been authenticated triggers a failure
+/// it should, in most cases, be ignored, instead of raising a connection error,
+/// to avoid potential man-in-the-middle and man-on-the-side attacks.
+///
+/// However, if no other packet was previously received, the connection should
+/// indeed be closed as the received packet might just be network background
+/// noise, and it shouldn't keep resources occupied indefinitely.
+///
+/// This function maps an error to `Error::Done` to ignore a packet failure
+/// without aborting the connection, except when no other packet was previously
+/// received, in which case the error itself is returned, but only on the
+/// server-side as the client will already have armed the idle timer.
+///
+/// This must only be used for errors preceding packet authentication. Failures
+/// happening after a packet has been authenticated should still cause the
+/// connection to be aborted.
+</span><span class="kw">fn </span>drop_pkt_on_err(
+    e: Error, recv_count: usize, is_server: bool, trace_id: <span class="kw-2">&amp;</span>str,
+) -&gt; Error {
+    <span class="comment">// On the server, if no other packet has been successfully processed, abort
+    // the connection to avoid keeping the connection open when only junk is
+    // received.
+    </span><span class="kw">if </span>is_server &amp;&amp; recv_count == <span class="number">0 </span>{
+        <span class="kw">return </span>e;
+    }
+
+    <span class="macro">trace!</span>(<span class="string">"{} dropped invalid packet"</span>, trace_id);
+
+    <span class="comment">// Ignore other invalid packets that haven't been authenticated to prevent
+    // man-in-the-middle and man-on-the-side attacks.
+    </span>Error::Done
+}
+
+<span class="kw">struct </span>AddrTupleFmt(SocketAddr, SocketAddr);
+
+<span class="kw">impl </span>std::fmt::Display <span class="kw">for </span>AddrTupleFmt {
+    <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+        <span class="kw">let </span>AddrTupleFmt(src, dst) = <span class="kw-2">&amp;</span><span class="self">self</span>;
+
+        <span class="kw">if </span>src.ip().is_unspecified() || dst.ip().is_unspecified() {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+        }
+
+        f.write_fmt(<span class="macro">format_args!</span>(<span class="string">"src:{src} dst:{dst}"</span>))
+    }
+}
+
+<span class="doccomment">/// Statistics about the connection.
+///
+/// A connection's statistics can be collected using the [`stats()`] method.
+///
+/// [`stats()`]: struct.Connection.html#method.stats
+</span><span class="attr">#[derive(Clone, Default)]
+</span><span class="kw">pub struct </span>Stats {
+    <span class="doccomment">/// The number of QUIC packets received.
+    </span><span class="kw">pub </span>recv: usize,
+
+    <span class="doccomment">/// The number of QUIC packets sent.
+    </span><span class="kw">pub </span>sent: usize,
+
+    <span class="doccomment">/// The number of QUIC packets that were lost.
+    </span><span class="kw">pub </span>lost: usize,
+
+    <span class="doccomment">/// The number of sent QUIC packets with retransmitted data.
+    </span><span class="kw">pub </span>retrans: usize,
+
+    <span class="doccomment">/// The number of sent bytes.
+    </span><span class="kw">pub </span>sent_bytes: u64,
+
+    <span class="doccomment">/// The number of received bytes.
+    </span><span class="kw">pub </span>recv_bytes: u64,
+
+    <span class="doccomment">/// The number of bytes sent lost.
+    </span><span class="kw">pub </span>lost_bytes: u64,
+
+    <span class="doccomment">/// The number of stream bytes retransmitted.
+    </span><span class="kw">pub </span>stream_retrans_bytes: u64,
+
+    <span class="doccomment">/// The number of known paths for the connection.
+    </span><span class="kw">pub </span>paths_count: usize,
+
+    <span class="doccomment">/// The number of streams reset by local.
+    </span><span class="kw">pub </span>reset_stream_count_local: u64,
+
+    <span class="doccomment">/// The number of streams stopped by local.
+    </span><span class="kw">pub </span>stopped_stream_count_local: u64,
+
+    <span class="doccomment">/// The number of streams reset by remote.
+    </span><span class="kw">pub </span>reset_stream_count_remote: u64,
+
+    <span class="doccomment">/// The number of streams stopped by remote.
+    </span><span class="kw">pub </span>stopped_stream_count_remote: u64,
+
+    <span class="doccomment">/// The total number of PATH_CHALLENGE frames that were received.
+    </span><span class="kw">pub </span>path_challenge_rx_count: u64,
+}
+
+<span class="kw">impl </span>std::fmt::Debug <span class="kw">for </span>Stats {
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+        <span class="macro">write!</span>(
+            f,
+            <span class="string">"recv={} sent={} lost={} retrans={}"</span>,
+            <span class="self">self</span>.recv, <span class="self">self</span>.sent, <span class="self">self</span>.lost, <span class="self">self</span>.retrans,
+        )<span class="question-mark">?</span>;
+
+        <span class="macro">write!</span>(
+            f,
+            <span class="string">" sent_bytes={} recv_bytes={} lost_bytes={}"</span>,
+            <span class="self">self</span>.sent_bytes, <span class="self">self</span>.recv_bytes, <span class="self">self</span>.lost_bytes,
+        )<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+}
+
+<span class="doccomment">/// QUIC Transport Parameters
+</span><span class="attr">#[derive(Clone, Debug, PartialEq)]
+</span><span class="kw">pub struct </span>TransportParams {
+    <span class="doccomment">/// Value of Destination CID field from first Initial packet sent by client
+    </span><span class="kw">pub </span>original_destination_connection_id: <span class="prelude-ty">Option</span>&lt;ConnectionId&lt;<span class="lifetime">'static</span>&gt;&gt;,
+    <span class="doccomment">/// The maximum idle timeout.
+    </span><span class="kw">pub </span>max_idle_timeout: u64,
+    <span class="doccomment">/// Token used for verifying stateless resets
+    </span><span class="kw">pub </span>stateless_reset_token: <span class="prelude-ty">Option</span>&lt;u128&gt;,
+    <span class="doccomment">/// The maximum UDP payload size.
+    </span><span class="kw">pub </span>max_udp_payload_size: u64,
+    <span class="doccomment">/// The initial flow control maximum data for the connection.
+    </span><span class="kw">pub </span>initial_max_data: u64,
+    <span class="doccomment">/// The initial flow control maximum data for local bidirectional streams.
+    </span><span class="kw">pub </span>initial_max_stream_data_bidi_local: u64,
+    <span class="doccomment">/// The initial flow control maximum data for remote bidirectional streams.
+    </span><span class="kw">pub </span>initial_max_stream_data_bidi_remote: u64,
+    <span class="doccomment">/// The initial flow control maximum data for unidirectional streams.
+    </span><span class="kw">pub </span>initial_max_stream_data_uni: u64,
+    <span class="doccomment">/// The initial maximum bidirectional streams.
+    </span><span class="kw">pub </span>initial_max_streams_bidi: u64,
+    <span class="doccomment">/// The initial maximum unidirectional streams.
+    </span><span class="kw">pub </span>initial_max_streams_uni: u64,
+    <span class="doccomment">/// The ACK delay exponent.
+    </span><span class="kw">pub </span>ack_delay_exponent: u64,
+    <span class="doccomment">/// The max ACK delay.
+    </span><span class="kw">pub </span>max_ack_delay: u64,
+    <span class="doccomment">/// Whether active migration is disabled.
+    </span><span class="kw">pub </span>disable_active_migration: bool,
+    <span class="doccomment">/// The active connection ID limit.
+    </span><span class="kw">pub </span>active_conn_id_limit: u64,
+    <span class="doccomment">/// The value that the endpoint included in the Source CID field of a Retry
+    /// Packet.
+    </span><span class="kw">pub </span>initial_source_connection_id: <span class="prelude-ty">Option</span>&lt;ConnectionId&lt;<span class="lifetime">'static</span>&gt;&gt;,
+    <span class="doccomment">/// The value that the server included in the Source CID field of a Retry
+    /// Packet.
+    </span><span class="kw">pub </span>retry_source_connection_id: <span class="prelude-ty">Option</span>&lt;ConnectionId&lt;<span class="lifetime">'static</span>&gt;&gt;,
+    <span class="doccomment">/// DATAGRAM frame extension parameter, if any.
+    </span><span class="kw">pub </span>max_datagram_frame_size: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="comment">// pub preferred_address: ...,
+</span>}
+
+<span class="kw">impl </span>Default <span class="kw">for </span>TransportParams {
+    <span class="kw">fn </span>default() -&gt; TransportParams {
+        TransportParams {
+            original_destination_connection_id: <span class="prelude-val">None</span>,
+            max_idle_timeout: <span class="number">0</span>,
+            stateless_reset_token: <span class="prelude-val">None</span>,
+            max_udp_payload_size: <span class="number">65527</span>,
+            initial_max_data: <span class="number">0</span>,
+            initial_max_stream_data_bidi_local: <span class="number">0</span>,
+            initial_max_stream_data_bidi_remote: <span class="number">0</span>,
+            initial_max_stream_data_uni: <span class="number">0</span>,
+            initial_max_streams_bidi: <span class="number">0</span>,
+            initial_max_streams_uni: <span class="number">0</span>,
+            ack_delay_exponent: <span class="number">3</span>,
+            max_ack_delay: <span class="number">25</span>,
+            disable_active_migration: <span class="bool-val">false</span>,
+            active_conn_id_limit: <span class="number">2</span>,
+            initial_source_connection_id: <span class="prelude-val">None</span>,
+            retry_source_connection_id: <span class="prelude-val">None</span>,
+            max_datagram_frame_size: <span class="prelude-val">None</span>,
+        }
+    }
+}
+
+<span class="kw">impl </span>TransportParams {
+    <span class="kw">fn </span>decode(buf: <span class="kw-2">&amp;</span>[u8], is_server: bool) -&gt; <span class="prelude-ty">Result</span>&lt;TransportParams&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>params = octets::Octets::with_slice(buf);
+        <span class="kw">let </span><span class="kw-2">mut </span>seen_params = HashSet::new();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>tp = TransportParams::default();
+
+        <span class="kw">while </span>params.cap() &gt; <span class="number">0 </span>{
+            <span class="kw">let </span>id = params.get_varint()<span class="question-mark">?</span>;
+
+            <span class="kw">if </span>seen_params.contains(<span class="kw-2">&amp;</span>id) {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidTransportParam);
+            }
+            seen_params.insert(id);
+
+            <span class="kw">let </span><span class="kw-2">mut </span>val = params.get_bytes_with_varint_length()<span class="question-mark">?</span>;
+
+            <span class="kw">match </span>id {
+                <span class="number">0x0000 </span>=&gt; {
+                    <span class="kw">if </span>is_server {
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidTransportParam);
+                    }
+
+                    tp.original_destination_connection_id =
+                        <span class="prelude-val">Some</span>(val.to_vec().into());
+                },
+
+                <span class="number">0x0001 </span>=&gt; {
+                    tp.max_idle_timeout = val.get_varint()<span class="question-mark">?</span>;
+                },
+
+                <span class="number">0x0002 </span>=&gt; {
+                    <span class="kw">if </span>is_server {
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidTransportParam);
+                    }
+
+                    tp.stateless_reset_token = <span class="prelude-val">Some</span>(u128::from_be_bytes(
+                        val.get_bytes(<span class="number">16</span>)<span class="question-mark">?
+                            </span>.to_vec()
+                            .try_into()
+                            .map_err(|<span class="kw">_</span>| Error::BufferTooShort)<span class="question-mark">?</span>,
+                    ));
+                },
+
+                <span class="number">0x0003 </span>=&gt; {
+                    tp.max_udp_payload_size = val.get_varint()<span class="question-mark">?</span>;
+
+                    <span class="kw">if </span>tp.max_udp_payload_size &lt; <span class="number">1200 </span>{
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidTransportParam);
+                    }
+                },
+
+                <span class="number">0x0004 </span>=&gt; {
+                    tp.initial_max_data = val.get_varint()<span class="question-mark">?</span>;
+                },
+
+                <span class="number">0x0005 </span>=&gt; {
+                    tp.initial_max_stream_data_bidi_local = val.get_varint()<span class="question-mark">?</span>;
+                },
+
+                <span class="number">0x0006 </span>=&gt; {
+                    tp.initial_max_stream_data_bidi_remote = val.get_varint()<span class="question-mark">?</span>;
+                },
+
+                <span class="number">0x0007 </span>=&gt; {
+                    tp.initial_max_stream_data_uni = val.get_varint()<span class="question-mark">?</span>;
+                },
+
+                <span class="number">0x0008 </span>=&gt; {
+                    <span class="kw">let </span>max = val.get_varint()<span class="question-mark">?</span>;
+
+                    <span class="kw">if </span>max &gt; MAX_STREAM_ID {
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidTransportParam);
+                    }
+
+                    tp.initial_max_streams_bidi = max;
+                },
+
+                <span class="number">0x0009 </span>=&gt; {
+                    <span class="kw">let </span>max = val.get_varint()<span class="question-mark">?</span>;
+
+                    <span class="kw">if </span>max &gt; MAX_STREAM_ID {
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidTransportParam);
+                    }
+
+                    tp.initial_max_streams_uni = max;
+                },
+
+                <span class="number">0x000a </span>=&gt; {
+                    <span class="kw">let </span>ack_delay_exponent = val.get_varint()<span class="question-mark">?</span>;
+
+                    <span class="kw">if </span>ack_delay_exponent &gt; <span class="number">20 </span>{
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidTransportParam);
+                    }
+
+                    tp.ack_delay_exponent = ack_delay_exponent;
+                },
+
+                <span class="number">0x000b </span>=&gt; {
+                    <span class="kw">let </span>max_ack_delay = val.get_varint()<span class="question-mark">?</span>;
+
+                    <span class="kw">if </span>max_ack_delay &gt;= <span class="number">2_u64</span>.pow(<span class="number">14</span>) {
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidTransportParam);
+                    }
+
+                    tp.max_ack_delay = max_ack_delay;
+                },
+
+                <span class="number">0x000c </span>=&gt; {
+                    tp.disable_active_migration = <span class="bool-val">true</span>;
+                },
+
+                <span class="number">0x000d </span>=&gt; {
+                    <span class="kw">if </span>is_server {
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidTransportParam);
+                    }
+
+                    <span class="comment">// TODO: decode preferred_address
+                </span>},
+
+                <span class="number">0x000e </span>=&gt; {
+                    <span class="kw">let </span>limit = val.get_varint()<span class="question-mark">?</span>;
+
+                    <span class="kw">if </span>limit &lt; <span class="number">2 </span>{
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidTransportParam);
+                    }
+
+                    tp.active_conn_id_limit = limit;
+                },
+
+                <span class="number">0x000f </span>=&gt; {
+                    tp.initial_source_connection_id = <span class="prelude-val">Some</span>(val.to_vec().into());
+                },
+
+                <span class="number">0x00010 </span>=&gt; {
+                    <span class="kw">if </span>is_server {
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidTransportParam);
+                    }
+
+                    tp.retry_source_connection_id = <span class="prelude-val">Some</span>(val.to_vec().into());
+                },
+
+                <span class="number">0x0020 </span>=&gt; {
+                    tp.max_datagram_frame_size = <span class="prelude-val">Some</span>(val.get_varint()<span class="question-mark">?</span>);
+                },
+
+                <span class="comment">// Ignore unknown parameters.
+                </span><span class="kw">_ </span>=&gt; (),
+            }
+        }
+
+        <span class="prelude-val">Ok</span>(tp)
+    }
+
+    <span class="kw">fn </span>encode_param(
+        b: <span class="kw-2">&amp;mut </span>octets::OctetsMut, ty: u64, len: usize,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        b.put_varint(ty)<span class="question-mark">?</span>;
+        b.put_varint(len <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="kw">fn </span>encode&lt;<span class="lifetime">'a</span>&gt;(
+        tp: <span class="kw-2">&amp;</span>TransportParams, is_server: bool, out: <span class="kw-2">&amp;</span><span class="lifetime">'a </span><span class="kw-2">mut </span>[u8],
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;</span><span class="lifetime">'a </span><span class="kw-2">mut </span>[u8]&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(out);
+
+        <span class="kw">if </span>is_server {
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(<span class="kw-2">ref </span>odcid) = tp.original_destination_connection_id {
+                TransportParams::encode_param(<span class="kw-2">&amp;mut </span>b, <span class="number">0x0000</span>, odcid.len())<span class="question-mark">?</span>;
+                b.put_bytes(odcid)<span class="question-mark">?</span>;
+            }
+        };
+
+        <span class="kw">if </span>tp.max_idle_timeout != <span class="number">0 </span>{
+            TransportParams::encode_param(
+                <span class="kw-2">&amp;mut </span>b,
+                <span class="number">0x0001</span>,
+                octets::varint_len(tp.max_idle_timeout),
+            )<span class="question-mark">?</span>;
+            b.put_varint(tp.max_idle_timeout)<span class="question-mark">?</span>;
+        }
+
+        <span class="kw">if </span>is_server {
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(<span class="kw-2">ref </span>token) = tp.stateless_reset_token {
+                TransportParams::encode_param(<span class="kw-2">&amp;mut </span>b, <span class="number">0x0002</span>, <span class="number">16</span>)<span class="question-mark">?</span>;
+                b.put_bytes(<span class="kw-2">&amp;</span>token.to_be_bytes())<span class="question-mark">?</span>;
+            }
+        }
+
+        <span class="kw">if </span>tp.max_udp_payload_size != <span class="number">0 </span>{
+            TransportParams::encode_param(
+                <span class="kw-2">&amp;mut </span>b,
+                <span class="number">0x0003</span>,
+                octets::varint_len(tp.max_udp_payload_size),
+            )<span class="question-mark">?</span>;
+            b.put_varint(tp.max_udp_payload_size)<span class="question-mark">?</span>;
+        }
+
+        <span class="kw">if </span>tp.initial_max_data != <span class="number">0 </span>{
+            TransportParams::encode_param(
+                <span class="kw-2">&amp;mut </span>b,
+                <span class="number">0x0004</span>,
+                octets::varint_len(tp.initial_max_data),
+            )<span class="question-mark">?</span>;
+            b.put_varint(tp.initial_max_data)<span class="question-mark">?</span>;
+        }
+
+        <span class="kw">if </span>tp.initial_max_stream_data_bidi_local != <span class="number">0 </span>{
+            TransportParams::encode_param(
+                <span class="kw-2">&amp;mut </span>b,
+                <span class="number">0x0005</span>,
+                octets::varint_len(tp.initial_max_stream_data_bidi_local),
+            )<span class="question-mark">?</span>;
+            b.put_varint(tp.initial_max_stream_data_bidi_local)<span class="question-mark">?</span>;
+        }
+
+        <span class="kw">if </span>tp.initial_max_stream_data_bidi_remote != <span class="number">0 </span>{
+            TransportParams::encode_param(
+                <span class="kw-2">&amp;mut </span>b,
+                <span class="number">0x0006</span>,
+                octets::varint_len(tp.initial_max_stream_data_bidi_remote),
+            )<span class="question-mark">?</span>;
+            b.put_varint(tp.initial_max_stream_data_bidi_remote)<span class="question-mark">?</span>;
+        }
+
+        <span class="kw">if </span>tp.initial_max_stream_data_uni != <span class="number">0 </span>{
+            TransportParams::encode_param(
+                <span class="kw-2">&amp;mut </span>b,
+                <span class="number">0x0007</span>,
+                octets::varint_len(tp.initial_max_stream_data_uni),
+            )<span class="question-mark">?</span>;
+            b.put_varint(tp.initial_max_stream_data_uni)<span class="question-mark">?</span>;
+        }
+
+        <span class="kw">if </span>tp.initial_max_streams_bidi != <span class="number">0 </span>{
+            TransportParams::encode_param(
+                <span class="kw-2">&amp;mut </span>b,
+                <span class="number">0x0008</span>,
+                octets::varint_len(tp.initial_max_streams_bidi),
+            )<span class="question-mark">?</span>;
+            b.put_varint(tp.initial_max_streams_bidi)<span class="question-mark">?</span>;
+        }
+
+        <span class="kw">if </span>tp.initial_max_streams_uni != <span class="number">0 </span>{
+            TransportParams::encode_param(
+                <span class="kw-2">&amp;mut </span>b,
+                <span class="number">0x0009</span>,
+                octets::varint_len(tp.initial_max_streams_uni),
+            )<span class="question-mark">?</span>;
+            b.put_varint(tp.initial_max_streams_uni)<span class="question-mark">?</span>;
+        }
+
+        <span class="kw">if </span>tp.ack_delay_exponent != <span class="number">0 </span>{
+            TransportParams::encode_param(
+                <span class="kw-2">&amp;mut </span>b,
+                <span class="number">0x000a</span>,
+                octets::varint_len(tp.ack_delay_exponent),
+            )<span class="question-mark">?</span>;
+            b.put_varint(tp.ack_delay_exponent)<span class="question-mark">?</span>;
+        }
+
+        <span class="kw">if </span>tp.max_ack_delay != <span class="number">0 </span>{
+            TransportParams::encode_param(
+                <span class="kw-2">&amp;mut </span>b,
+                <span class="number">0x000b</span>,
+                octets::varint_len(tp.max_ack_delay),
+            )<span class="question-mark">?</span>;
+            b.put_varint(tp.max_ack_delay)<span class="question-mark">?</span>;
+        }
+
+        <span class="kw">if </span>tp.disable_active_migration {
+            TransportParams::encode_param(<span class="kw-2">&amp;mut </span>b, <span class="number">0x000c</span>, <span class="number">0</span>)<span class="question-mark">?</span>;
+        }
+
+        <span class="comment">// TODO: encode preferred_address
+
+        </span><span class="kw">if </span>tp.active_conn_id_limit != <span class="number">2 </span>{
+            TransportParams::encode_param(
+                <span class="kw-2">&amp;mut </span>b,
+                <span class="number">0x000e</span>,
+                octets::varint_len(tp.active_conn_id_limit),
+            )<span class="question-mark">?</span>;
+            b.put_varint(tp.active_conn_id_limit)<span class="question-mark">?</span>;
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(scid) = <span class="kw-2">&amp;</span>tp.initial_source_connection_id {
+            TransportParams::encode_param(<span class="kw-2">&amp;mut </span>b, <span class="number">0x000f</span>, scid.len())<span class="question-mark">?</span>;
+            b.put_bytes(scid)<span class="question-mark">?</span>;
+        }
+
+        <span class="kw">if </span>is_server {
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(scid) = <span class="kw-2">&amp;</span>tp.retry_source_connection_id {
+                TransportParams::encode_param(<span class="kw-2">&amp;mut </span>b, <span class="number">0x0010</span>, scid.len())<span class="question-mark">?</span>;
+                b.put_bytes(scid)<span class="question-mark">?</span>;
+            }
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(max_datagram_frame_size) = tp.max_datagram_frame_size {
+            TransportParams::encode_param(
+                <span class="kw-2">&amp;mut </span>b,
+                <span class="number">0x0020</span>,
+                octets::varint_len(max_datagram_frame_size),
+            )<span class="question-mark">?</span>;
+            b.put_varint(max_datagram_frame_size)<span class="question-mark">?</span>;
+        }
+
+        <span class="kw">let </span>out_len = b.off();
+
+        <span class="prelude-val">Ok</span>(<span class="kw-2">&amp;mut </span>out[..out_len])
+    }
+
+    <span class="doccomment">/// Creates a qlog event for connection transport parameters and TLS fields
+    </span><span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+    </span><span class="kw">pub fn </span>to_qlog(
+        <span class="kw-2">&amp;</span><span class="self">self</span>, owner: TransportOwner, cipher: <span class="prelude-ty">Option</span>&lt;crypto::Algorithm&gt;,
+    ) -&gt; EventData {
+        <span class="kw">let </span>original_destination_connection_id = qlog::HexSlice::maybe_string(
+            <span class="self">self</span>.original_destination_connection_id.as_ref(),
+        );
+
+        <span class="kw">let </span>stateless_reset_token = qlog::HexSlice::maybe_string(
+            <span class="self">self</span>.stateless_reset_token.map(|s| s.to_be_bytes()).as_ref(),
+        );
+
+        EventData::TransportParametersSet(
+            qlog::events::quic::TransportParametersSet {
+                owner: <span class="prelude-val">Some</span>(owner),
+                resumption_allowed: <span class="prelude-val">None</span>,
+                early_data_enabled: <span class="prelude-val">None</span>,
+                tls_cipher: <span class="prelude-val">Some</span>(<span class="macro">format!</span>(<span class="string">"{cipher:?}"</span>)),
+                aead_tag_length: <span class="prelude-val">None</span>,
+                original_destination_connection_id,
+                initial_source_connection_id: <span class="prelude-val">None</span>,
+                retry_source_connection_id: <span class="prelude-val">None</span>,
+                stateless_reset_token,
+                disable_active_migration: <span class="prelude-val">Some</span>(<span class="self">self</span>.disable_active_migration),
+                max_idle_timeout: <span class="prelude-val">Some</span>(<span class="self">self</span>.max_idle_timeout),
+                max_udp_payload_size: <span class="prelude-val">Some</span>(<span class="self">self</span>.max_udp_payload_size <span class="kw">as </span>u32),
+                ack_delay_exponent: <span class="prelude-val">Some</span>(<span class="self">self</span>.ack_delay_exponent <span class="kw">as </span>u16),
+                max_ack_delay: <span class="prelude-val">Some</span>(<span class="self">self</span>.max_ack_delay <span class="kw">as </span>u16),
+                active_connection_id_limit: <span class="prelude-val">Some</span>(
+                    <span class="self">self</span>.active_conn_id_limit <span class="kw">as </span>u32,
+                ),
+
+                initial_max_data: <span class="prelude-val">Some</span>(<span class="self">self</span>.initial_max_data),
+                initial_max_stream_data_bidi_local: <span class="prelude-val">Some</span>(
+                    <span class="self">self</span>.initial_max_stream_data_bidi_local,
+                ),
+                initial_max_stream_data_bidi_remote: <span class="prelude-val">Some</span>(
+                    <span class="self">self</span>.initial_max_stream_data_bidi_remote,
+                ),
+                initial_max_stream_data_uni: <span class="prelude-val">Some</span>(
+                    <span class="self">self</span>.initial_max_stream_data_uni,
+                ),
+                initial_max_streams_bidi: <span class="prelude-val">Some</span>(<span class="self">self</span>.initial_max_streams_bidi),
+                initial_max_streams_uni: <span class="prelude-val">Some</span>(<span class="self">self</span>.initial_max_streams_uni),
+
+                preferred_address: <span class="prelude-val">None</span>,
+            },
+        )
+    }
+}
+
+<span class="attr">#[doc(hidden)]
+</span><span class="kw">pub mod </span>testing {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="kw">pub struct </span>Pipe {
+        <span class="kw">pub </span>client: Connection,
+        <span class="kw">pub </span>server: Connection,
+    }
+
+    <span class="kw">impl </span>Pipe {
+        <span class="kw">pub fn </span>new() -&gt; <span class="prelude-ty">Result</span>&lt;Pipe&gt; {
+            <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION)<span class="question-mark">?</span>;
+            config.load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)<span class="question-mark">?</span>;
+            config.load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)<span class="question-mark">?</span>;
+            config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])<span class="question-mark">?</span>;
+            config.set_initial_max_data(<span class="number">30</span>);
+            config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+            config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+            config.set_initial_max_stream_data_uni(<span class="number">10</span>);
+            config.set_initial_max_streams_bidi(<span class="number">3</span>);
+            config.set_initial_max_streams_uni(<span class="number">3</span>);
+            config.set_max_idle_timeout(<span class="number">180_000</span>);
+            config.verify_peer(<span class="bool-val">false</span>);
+            config.set_ack_delay_exponent(<span class="number">8</span>);
+
+            Pipe::with_config(<span class="kw-2">&amp;mut </span>config)
+        }
+
+        <span class="kw">pub fn </span>client_addr() -&gt; SocketAddr {
+            <span class="string">"127.0.0.1:1234"</span>.parse().unwrap()
+        }
+
+        <span class="kw">pub fn </span>server_addr() -&gt; SocketAddr {
+            <span class="string">"127.0.0.1:4321"</span>.parse().unwrap()
+        }
+
+        <span class="kw">pub fn </span>with_config(config: <span class="kw-2">&amp;mut </span>Config) -&gt; <span class="prelude-ty">Result</span>&lt;Pipe&gt; {
+            <span class="kw">let </span><span class="kw-2">mut </span>client_scid = [<span class="number">0</span>; <span class="number">16</span>];
+            rand::rand_bytes(<span class="kw-2">&amp;mut </span>client_scid[..]);
+            <span class="kw">let </span>client_scid = ConnectionId::from_ref(<span class="kw-2">&amp;</span>client_scid);
+            <span class="kw">let </span>client_addr = Pipe::client_addr();
+
+            <span class="kw">let </span><span class="kw-2">mut </span>server_scid = [<span class="number">0</span>; <span class="number">16</span>];
+            rand::rand_bytes(<span class="kw-2">&amp;mut </span>server_scid[..]);
+            <span class="kw">let </span>server_scid = ConnectionId::from_ref(<span class="kw-2">&amp;</span>server_scid);
+            <span class="kw">let </span>server_addr = Pipe::server_addr();
+
+            <span class="prelude-val">Ok</span>(Pipe {
+                client: connect(
+                    <span class="prelude-val">Some</span>(<span class="string">"quic.tech"</span>),
+                    <span class="kw-2">&amp;</span>client_scid,
+                    client_addr,
+                    server_addr,
+                    config,
+                )<span class="question-mark">?</span>,
+                server: accept(
+                    <span class="kw-2">&amp;</span>server_scid,
+                    <span class="prelude-val">None</span>,
+                    server_addr,
+                    client_addr,
+                    config,
+                )<span class="question-mark">?</span>,
+            })
+        }
+
+        <span class="kw">pub fn </span>with_config_and_scid_lengths(
+            config: <span class="kw-2">&amp;mut </span>Config, client_scid_len: usize, server_scid_len: usize,
+        ) -&gt; <span class="prelude-ty">Result</span>&lt;Pipe&gt; {
+            <span class="kw">let </span><span class="kw-2">mut </span>client_scid = <span class="macro">vec!</span>[<span class="number">0</span>; client_scid_len];
+            rand::rand_bytes(<span class="kw-2">&amp;mut </span>client_scid[..]);
+            <span class="kw">let </span>client_scid = ConnectionId::from_ref(<span class="kw-2">&amp;</span>client_scid);
+            <span class="kw">let </span>client_addr = Pipe::client_addr();
+
+            <span class="kw">let </span><span class="kw-2">mut </span>server_scid = <span class="macro">vec!</span>[<span class="number">0</span>; server_scid_len];
+            rand::rand_bytes(<span class="kw-2">&amp;mut </span>server_scid[..]);
+            <span class="kw">let </span>server_scid = ConnectionId::from_ref(<span class="kw-2">&amp;</span>server_scid);
+            <span class="kw">let </span>server_addr = Pipe::server_addr();
+
+            <span class="prelude-val">Ok</span>(Pipe {
+                client: connect(
+                    <span class="prelude-val">Some</span>(<span class="string">"quic.tech"</span>),
+                    <span class="kw-2">&amp;</span>client_scid,
+                    client_addr,
+                    server_addr,
+                    config,
+                )<span class="question-mark">?</span>,
+                server: accept(
+                    <span class="kw-2">&amp;</span>server_scid,
+                    <span class="prelude-val">None</span>,
+                    server_addr,
+                    client_addr,
+                    config,
+                )<span class="question-mark">?</span>,
+            })
+        }
+
+        <span class="kw">pub fn </span>with_client_config(client_config: <span class="kw-2">&amp;mut </span>Config) -&gt; <span class="prelude-ty">Result</span>&lt;Pipe&gt; {
+            <span class="kw">let </span><span class="kw-2">mut </span>client_scid = [<span class="number">0</span>; <span class="number">16</span>];
+            rand::rand_bytes(<span class="kw-2">&amp;mut </span>client_scid[..]);
+            <span class="kw">let </span>client_scid = ConnectionId::from_ref(<span class="kw-2">&amp;</span>client_scid);
+            <span class="kw">let </span>client_addr = Pipe::client_addr();
+
+            <span class="kw">let </span><span class="kw-2">mut </span>server_scid = [<span class="number">0</span>; <span class="number">16</span>];
+            rand::rand_bytes(<span class="kw-2">&amp;mut </span>server_scid[..]);
+            <span class="kw">let </span>server_scid = ConnectionId::from_ref(<span class="kw-2">&amp;</span>server_scid);
+            <span class="kw">let </span>server_addr = Pipe::server_addr();
+
+            <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION)<span class="question-mark">?</span>;
+            config.load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)<span class="question-mark">?</span>;
+            config.load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)<span class="question-mark">?</span>;
+            config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])<span class="question-mark">?</span>;
+            config.set_initial_max_data(<span class="number">30</span>);
+            config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+            config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+            config.set_initial_max_streams_bidi(<span class="number">3</span>);
+            config.set_initial_max_streams_uni(<span class="number">3</span>);
+            config.set_ack_delay_exponent(<span class="number">8</span>);
+
+            <span class="prelude-val">Ok</span>(Pipe {
+                client: connect(
+                    <span class="prelude-val">Some</span>(<span class="string">"quic.tech"</span>),
+                    <span class="kw-2">&amp;</span>client_scid,
+                    client_addr,
+                    server_addr,
+                    client_config,
+                )<span class="question-mark">?</span>,
+                server: accept(
+                    <span class="kw-2">&amp;</span>server_scid,
+                    <span class="prelude-val">None</span>,
+                    server_addr,
+                    client_addr,
+                    <span class="kw-2">&amp;mut </span>config,
+                )<span class="question-mark">?</span>,
+            })
+        }
+
+        <span class="kw">pub fn </span>with_server_config(server_config: <span class="kw-2">&amp;mut </span>Config) -&gt; <span class="prelude-ty">Result</span>&lt;Pipe&gt; {
+            <span class="kw">let </span><span class="kw-2">mut </span>client_scid = [<span class="number">0</span>; <span class="number">16</span>];
+            rand::rand_bytes(<span class="kw-2">&amp;mut </span>client_scid[..]);
+            <span class="kw">let </span>client_scid = ConnectionId::from_ref(<span class="kw-2">&amp;</span>client_scid);
+            <span class="kw">let </span>client_addr = Pipe::client_addr();
+
+            <span class="kw">let </span><span class="kw-2">mut </span>server_scid = [<span class="number">0</span>; <span class="number">16</span>];
+            rand::rand_bytes(<span class="kw-2">&amp;mut </span>server_scid[..]);
+            <span class="kw">let </span>server_scid = ConnectionId::from_ref(<span class="kw-2">&amp;</span>server_scid);
+            <span class="kw">let </span>server_addr = Pipe::server_addr();
+
+            <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION)<span class="question-mark">?</span>;
+            config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])<span class="question-mark">?</span>;
+            config.set_initial_max_data(<span class="number">30</span>);
+            config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+            config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+            config.set_initial_max_streams_bidi(<span class="number">3</span>);
+            config.set_initial_max_streams_uni(<span class="number">3</span>);
+            config.set_ack_delay_exponent(<span class="number">8</span>);
+
+            <span class="prelude-val">Ok</span>(Pipe {
+                client: connect(
+                    <span class="prelude-val">Some</span>(<span class="string">"quic.tech"</span>),
+                    <span class="kw-2">&amp;</span>client_scid,
+                    client_addr,
+                    server_addr,
+                    <span class="kw-2">&amp;mut </span>config,
+                )<span class="question-mark">?</span>,
+                server: accept(
+                    <span class="kw-2">&amp;</span>server_scid,
+                    <span class="prelude-val">None</span>,
+                    server_addr,
+                    client_addr,
+                    server_config,
+                )<span class="question-mark">?</span>,
+            })
+        }
+
+        <span class="kw">pub fn </span>with_client_and_server_config(
+            client_config: <span class="kw-2">&amp;mut </span>Config, server_config: <span class="kw-2">&amp;mut </span>Config,
+        ) -&gt; <span class="prelude-ty">Result</span>&lt;Pipe&gt; {
+            <span class="kw">let </span><span class="kw-2">mut </span>client_scid = [<span class="number">0</span>; <span class="number">16</span>];
+            rand::rand_bytes(<span class="kw-2">&amp;mut </span>client_scid[..]);
+            <span class="kw">let </span>client_scid = ConnectionId::from_ref(<span class="kw-2">&amp;</span>client_scid);
+            <span class="kw">let </span>client_addr = Pipe::client_addr();
+
+            <span class="kw">let </span><span class="kw-2">mut </span>server_scid = [<span class="number">0</span>; <span class="number">16</span>];
+            rand::rand_bytes(<span class="kw-2">&amp;mut </span>server_scid[..]);
+            <span class="kw">let </span>server_scid = ConnectionId::from_ref(<span class="kw-2">&amp;</span>server_scid);
+            <span class="kw">let </span>server_addr = Pipe::server_addr();
+
+            <span class="prelude-val">Ok</span>(Pipe {
+                client: connect(
+                    <span class="prelude-val">Some</span>(<span class="string">"quic.tech"</span>),
+                    <span class="kw-2">&amp;</span>client_scid,
+                    client_addr,
+                    server_addr,
+                    client_config,
+                )<span class="question-mark">?</span>,
+                server: accept(
+                    <span class="kw-2">&amp;</span>server_scid,
+                    <span class="prelude-val">None</span>,
+                    server_addr,
+                    client_addr,
+                    server_config,
+                )<span class="question-mark">?</span>,
+            })
+        }
+
+        <span class="kw">pub fn </span>handshake(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+            <span class="kw">while </span>!<span class="self">self</span>.client.is_established() || !<span class="self">self</span>.server.is_established() {
+                <span class="kw">let </span>flight = emit_flight(<span class="kw-2">&amp;mut </span><span class="self">self</span>.client)<span class="question-mark">?</span>;
+                process_flight(<span class="kw-2">&amp;mut </span><span class="self">self</span>.server, flight)<span class="question-mark">?</span>;
+
+                <span class="kw">let </span>flight = emit_flight(<span class="kw-2">&amp;mut </span><span class="self">self</span>.server)<span class="question-mark">?</span>;
+                process_flight(<span class="kw-2">&amp;mut </span><span class="self">self</span>.client, flight)<span class="question-mark">?</span>;
+            }
+
+            <span class="prelude-val">Ok</span>(())
+        }
+
+        <span class="kw">pub fn </span>advance(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+            <span class="kw">let </span><span class="kw-2">mut </span>client_done = <span class="bool-val">false</span>;
+            <span class="kw">let </span><span class="kw-2">mut </span>server_done = <span class="bool-val">false</span>;
+
+            <span class="kw">while </span>!client_done || !server_done {
+                <span class="kw">match </span>emit_flight(<span class="kw-2">&amp;mut </span><span class="self">self</span>.client) {
+                    <span class="prelude-val">Ok</span>(flight) =&gt; process_flight(<span class="kw-2">&amp;mut </span><span class="self">self</span>.server, flight)<span class="question-mark">?</span>,
+
+                    <span class="prelude-val">Err</span>(Error::Done) =&gt; client_done = <span class="bool-val">true</span>,
+
+                    <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+                };
+
+                <span class="kw">match </span>emit_flight(<span class="kw-2">&amp;mut </span><span class="self">self</span>.server) {
+                    <span class="prelude-val">Ok</span>(flight) =&gt; process_flight(<span class="kw-2">&amp;mut </span><span class="self">self</span>.client, flight)<span class="question-mark">?</span>,
+
+                    <span class="prelude-val">Err</span>(Error::Done) =&gt; server_done = <span class="bool-val">true</span>,
+
+                    <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+                };
+            }
+
+            <span class="prelude-val">Ok</span>(())
+        }
+
+        <span class="kw">pub fn </span>client_recv(<span class="kw-2">&amp;mut </span><span class="self">self</span>, buf: <span class="kw-2">&amp;mut </span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+            <span class="kw">let </span>server_path = <span class="kw-2">&amp;</span><span class="self">self</span>.server.paths.get_active().unwrap();
+            <span class="kw">let </span>info = RecvInfo {
+                to: server_path.peer_addr(),
+                from: server_path.local_addr(),
+            };
+
+            <span class="self">self</span>.client.recv(buf, info)
+        }
+
+        <span class="kw">pub fn </span>server_recv(<span class="kw-2">&amp;mut </span><span class="self">self</span>, buf: <span class="kw-2">&amp;mut </span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+            <span class="kw">let </span>client_path = <span class="kw-2">&amp;</span><span class="self">self</span>.client.paths.get_active().unwrap();
+            <span class="kw">let </span>info = RecvInfo {
+                to: client_path.peer_addr(),
+                from: client_path.local_addr(),
+            };
+
+            <span class="self">self</span>.server.recv(buf, info)
+        }
+
+        <span class="kw">pub fn </span>send_pkt_to_server(
+            <span class="kw-2">&amp;mut </span><span class="self">self</span>, pkt_type: packet::Type, frames: <span class="kw-2">&amp;</span>[frame::Frame],
+            buf: <span class="kw-2">&amp;mut </span>[u8],
+        ) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+            <span class="kw">let </span>written = encode_pkt(<span class="kw-2">&amp;mut </span><span class="self">self</span>.client, pkt_type, frames, buf)<span class="question-mark">?</span>;
+            recv_send(<span class="kw-2">&amp;mut </span><span class="self">self</span>.server, buf, written)
+        }
+
+        <span class="kw">pub fn </span>client_update_key(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+            <span class="kw">let </span>space =
+                <span class="kw-2">&amp;mut </span><span class="self">self</span>.client.pkt_num_spaces[packet::Epoch::Application];
+
+            <span class="kw">let </span>open_next = space
+                .crypto_open
+                .as_ref()
+                .unwrap()
+                .derive_next_packet_key()
+                .unwrap();
+
+            <span class="kw">let </span>seal_next = space
+                .crypto_seal
+                .as_ref()
+                .unwrap()
+                .derive_next_packet_key()<span class="question-mark">?</span>;
+
+            <span class="kw">let </span>open_prev = space.crypto_open.replace(open_next);
+            space.crypto_seal.replace(seal_next);
+
+            space.key_update = <span class="prelude-val">Some</span>(packet::KeyUpdate {
+                crypto_open: open_prev.unwrap(),
+                pn_on_update: space.next_pkt_num,
+                update_acked: <span class="bool-val">true</span>,
+                timer: time::Instant::now(),
+            });
+
+            <span class="self">self</span>.client.key_phase = !<span class="self">self</span>.client.key_phase;
+
+            <span class="prelude-val">Ok</span>(())
+        }
+    }
+
+    <span class="kw">pub fn </span>recv_send(
+        conn: <span class="kw-2">&amp;mut </span>Connection, buf: <span class="kw-2">&amp;mut </span>[u8], len: usize,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="kw">let </span>active_path = conn.paths.get_active()<span class="question-mark">?</span>;
+        <span class="kw">let </span>info = RecvInfo {
+            to: active_path.local_addr(),
+            from: active_path.peer_addr(),
+        };
+
+        conn.recv(<span class="kw-2">&amp;mut </span>buf[..len], info)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>off = <span class="number">0</span>;
+
+        <span class="kw">match </span>conn.send(<span class="kw-2">&amp;mut </span>buf[off..]) {
+            <span class="prelude-val">Ok</span>((write, <span class="kw">_</span>)) =&gt; off += write,
+
+            <span class="prelude-val">Err</span>(Error::Done) =&gt; (),
+
+            <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+        }
+
+        <span class="prelude-val">Ok</span>(off)
+    }
+
+    <span class="kw">pub fn </span>process_flight(
+        conn: <span class="kw-2">&amp;mut </span>Connection, flight: Vec&lt;(Vec&lt;u8&gt;, SendInfo)&gt;,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">for </span>(<span class="kw-2">mut </span>pkt, si) <span class="kw">in </span>flight {
+            <span class="kw">let </span>info = RecvInfo {
+                to: si.to,
+                from: si.from,
+            };
+
+            conn.recv(<span class="kw-2">&amp;mut </span>pkt, info)<span class="question-mark">?</span>;
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="kw">pub fn </span>emit_flight_with_max_buffer(
+        conn: <span class="kw-2">&amp;mut </span>Connection, out_size: usize, from: <span class="prelude-ty">Option</span>&lt;SocketAddr&gt;,
+        to: <span class="prelude-ty">Option</span>&lt;SocketAddr&gt;,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;Vec&lt;(Vec&lt;u8&gt;, SendInfo)&gt;&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>flight = Vec::new();
+
+        <span class="kw">loop </span>{
+            <span class="kw">let </span><span class="kw-2">mut </span>out = <span class="macro">vec!</span>[<span class="number">0u8</span>; out_size];
+
+            <span class="kw">let </span>info = <span class="kw">match </span>conn.send_on_path(<span class="kw-2">&amp;mut </span>out, from, to) {
+                <span class="prelude-val">Ok</span>((written, info)) =&gt; {
+                    out.truncate(written);
+                    info
+                },
+
+                <span class="prelude-val">Err</span>(Error::Done) =&gt; <span class="kw">break</span>,
+
+                <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+            };
+
+            flight.push((out, info));
+        }
+
+        <span class="kw">if </span>flight.is_empty() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="prelude-val">Ok</span>(flight)
+    }
+
+    <span class="kw">pub fn </span>emit_flight_on_path(
+        conn: <span class="kw-2">&amp;mut </span>Connection, from: <span class="prelude-ty">Option</span>&lt;SocketAddr&gt;, to: <span class="prelude-ty">Option</span>&lt;SocketAddr&gt;,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;Vec&lt;(Vec&lt;u8&gt;, SendInfo)&gt;&gt; {
+        emit_flight_with_max_buffer(conn, <span class="number">65535</span>, from, to)
+    }
+
+    <span class="kw">pub fn </span>emit_flight(
+        conn: <span class="kw-2">&amp;mut </span>Connection,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;Vec&lt;(Vec&lt;u8&gt;, SendInfo)&gt;&gt; {
+        emit_flight_on_path(conn, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>)
+    }
+
+    <span class="kw">pub fn </span>encode_pkt(
+        conn: <span class="kw-2">&amp;mut </span>Connection, pkt_type: packet::Type, frames: <span class="kw-2">&amp;</span>[frame::Frame],
+        buf: <span class="kw-2">&amp;mut </span>[u8],
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(buf);
+
+        <span class="kw">let </span>epoch = pkt_type.to_epoch()<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>space = <span class="kw-2">&amp;mut </span>conn.pkt_num_spaces[epoch];
+
+        <span class="kw">let </span>pn = space.next_pkt_num;
+        <span class="kw">let </span>pn_len = <span class="number">4</span>;
+
+        <span class="kw">let </span>send_path = conn.paths.get_active()<span class="question-mark">?</span>;
+        <span class="kw">let </span>active_dcid_seq = send_path
+            .active_dcid_seq
+            .as_ref()
+            .ok_or(Error::InvalidState)<span class="question-mark">?</span>;
+        <span class="kw">let </span>active_scid_seq = send_path
+            .active_scid_seq
+            .as_ref()
+            .ok_or(Error::InvalidState)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>hdr = Header {
+            ty: pkt_type,
+            version: conn.version,
+            dcid: ConnectionId::from_ref(
+                conn.ids.get_dcid(<span class="kw-2">*</span>active_dcid_seq)<span class="question-mark">?</span>.cid.as_ref(),
+            ),
+            scid: ConnectionId::from_ref(
+                conn.ids.get_scid(<span class="kw-2">*</span>active_scid_seq)<span class="question-mark">?</span>.cid.as_ref(),
+            ),
+            pkt_num: <span class="number">0</span>,
+            pkt_num_len: pn_len,
+            token: conn.token.clone(),
+            versions: <span class="prelude-val">None</span>,
+            key_phase: conn.key_phase,
+        };
+
+        hdr.to_bytes(<span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>payload_len = frames.iter().fold(<span class="number">0</span>, |acc, x| acc + x.wire_len());
+
+        <span class="kw">if </span>pkt_type != packet::Type::Short {
+            <span class="kw">let </span>len = pn_len + payload_len + space.crypto_overhead().unwrap();
+            b.put_varint(len <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+        }
+
+        <span class="comment">// Always encode packet number in 4 bytes, to allow encoding packets
+        // with empty payloads.
+        </span>b.put_u32(pn <span class="kw">as </span>u32)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>payload_offset = b.off();
+
+        <span class="kw">for </span>frame <span class="kw">in </span>frames {
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>;
+        }
+
+        <span class="kw">let </span>aead = <span class="kw">match </span>space.crypto_seal {
+            <span class="prelude-val">Some</span>(<span class="kw-2">ref </span>v) =&gt; v,
+            <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidState),
+        };
+
+        <span class="kw">let </span>written = packet::encrypt_pkt(
+            <span class="kw-2">&amp;mut </span>b,
+            pn,
+            pn_len,
+            payload_len,
+            payload_offset,
+            <span class="prelude-val">None</span>,
+            aead,
+        )<span class="question-mark">?</span>;
+
+        space.next_pkt_num += <span class="number">1</span>;
+
+        <span class="prelude-val">Ok</span>(written)
+    }
+
+    <span class="kw">pub fn </span>decode_pkt(
+        conn: <span class="kw-2">&amp;mut </span>Connection, buf: <span class="kw-2">&amp;mut </span>[u8],
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;Vec&lt;frame::Frame&gt;&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(buf);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>hdr = Header::from_bytes(<span class="kw-2">&amp;mut </span>b, conn.source_id().len()).unwrap();
+
+        <span class="kw">let </span>epoch = hdr.ty.to_epoch()<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>aead = conn.pkt_num_spaces[epoch].crypto_open.as_ref().unwrap();
+
+        <span class="kw">let </span>payload_len = b.cap();
+
+        packet::decrypt_hdr(<span class="kw-2">&amp;mut </span>b, <span class="kw-2">&amp;mut </span>hdr, aead).unwrap();
+
+        <span class="kw">let </span>pn = packet::decode_pkt_num(
+            conn.pkt_num_spaces[epoch].largest_rx_pkt_num,
+            hdr.pkt_num,
+            hdr.pkt_num_len,
+        );
+
+        <span class="kw">let </span><span class="kw-2">mut </span>payload =
+            packet::decrypt_pkt(<span class="kw-2">&amp;mut </span>b, pn, hdr.pkt_num_len, payload_len, aead)
+                .unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>frames = Vec::new();
+
+        <span class="kw">while </span>payload.cap() &gt; <span class="number">0 </span>{
+            <span class="kw">let </span>frame = frame::Frame::from_bytes(<span class="kw-2">&amp;mut </span>payload, hdr.ty)<span class="question-mark">?</span>;
+            frames.push(frame);
+        }
+
+        <span class="prelude-val">Ok</span>(frames)
+    }
+
+    <span class="kw">pub fn </span>create_cid_and_reset_token(
+        cid_len: usize,
+    ) -&gt; (ConnectionId&lt;<span class="lifetime">'static</span>&gt;, u128) {
+        <span class="kw">let </span><span class="kw-2">mut </span>cid = <span class="macro">vec!</span>[<span class="number">0</span>; cid_len];
+        rand::rand_bytes(<span class="kw-2">&amp;mut </span>cid[..]);
+        <span class="kw">let </span>cid = ConnectionId::from_ref(<span class="kw-2">&amp;</span>cid).into_owned();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>reset_token = [<span class="number">0</span>; <span class="number">16</span>];
+        rand::rand_bytes(<span class="kw-2">&amp;mut </span>reset_token);
+        <span class="kw">let </span>reset_token = u128::from_be_bytes(reset_token);
+
+        (cid, reset_token)
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>transport_params() {
+        <span class="comment">// Server encodes, client decodes.
+        </span><span class="kw">let </span>tp = TransportParams {
+            original_destination_connection_id: <span class="prelude-val">None</span>,
+            max_idle_timeout: <span class="number">30</span>,
+            stateless_reset_token: <span class="prelude-val">Some</span>(u128::from_be_bytes([<span class="number">0xba</span>; <span class="number">16</span>])),
+            max_udp_payload_size: <span class="number">23_421</span>,
+            initial_max_data: <span class="number">424_645_563</span>,
+            initial_max_stream_data_bidi_local: <span class="number">154_323_123</span>,
+            initial_max_stream_data_bidi_remote: <span class="number">6_587_456</span>,
+            initial_max_stream_data_uni: <span class="number">2_461_234</span>,
+            initial_max_streams_bidi: <span class="number">12_231</span>,
+            initial_max_streams_uni: <span class="number">18_473</span>,
+            ack_delay_exponent: <span class="number">20</span>,
+            max_ack_delay: <span class="number">2_u64</span>.pow(<span class="number">14</span>) - <span class="number">1</span>,
+            disable_active_migration: <span class="bool-val">true</span>,
+            active_conn_id_limit: <span class="number">8</span>,
+            initial_source_connection_id: <span class="prelude-val">Some</span>(<span class="string">b"woot woot"</span>.to_vec().into()),
+            retry_source_connection_id: <span class="prelude-val">Some</span>(<span class="string">b"retry"</span>.to_vec().into()),
+            max_datagram_frame_size: <span class="prelude-val">Some</span>(<span class="number">32</span>),
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>raw_params = [<span class="number">42</span>; <span class="number">256</span>];
+        <span class="kw">let </span>raw_params =
+            TransportParams::encode(<span class="kw-2">&amp;</span>tp, <span class="bool-val">true</span>, <span class="kw-2">&amp;mut </span>raw_params).unwrap();
+        <span class="macro">assert_eq!</span>(raw_params.len(), <span class="number">94</span>);
+
+        <span class="kw">let </span>new_tp = TransportParams::decode(raw_params, <span class="bool-val">false</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(new_tp, tp);
+
+        <span class="comment">// Client encodes, server decodes.
+        </span><span class="kw">let </span>tp = TransportParams {
+            original_destination_connection_id: <span class="prelude-val">None</span>,
+            max_idle_timeout: <span class="number">30</span>,
+            stateless_reset_token: <span class="prelude-val">None</span>,
+            max_udp_payload_size: <span class="number">23_421</span>,
+            initial_max_data: <span class="number">424_645_563</span>,
+            initial_max_stream_data_bidi_local: <span class="number">154_323_123</span>,
+            initial_max_stream_data_bidi_remote: <span class="number">6_587_456</span>,
+            initial_max_stream_data_uni: <span class="number">2_461_234</span>,
+            initial_max_streams_bidi: <span class="number">12_231</span>,
+            initial_max_streams_uni: <span class="number">18_473</span>,
+            ack_delay_exponent: <span class="number">20</span>,
+            max_ack_delay: <span class="number">2_u64</span>.pow(<span class="number">14</span>) - <span class="number">1</span>,
+            disable_active_migration: <span class="bool-val">true</span>,
+            active_conn_id_limit: <span class="number">8</span>,
+            initial_source_connection_id: <span class="prelude-val">Some</span>(<span class="string">b"woot woot"</span>.to_vec().into()),
+            retry_source_connection_id: <span class="prelude-val">None</span>,
+            max_datagram_frame_size: <span class="prelude-val">Some</span>(<span class="number">32</span>),
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>raw_params = [<span class="number">42</span>; <span class="number">256</span>];
+        <span class="kw">let </span>raw_params =
+            TransportParams::encode(<span class="kw-2">&amp;</span>tp, <span class="bool-val">false</span>, <span class="kw-2">&amp;mut </span>raw_params).unwrap();
+        <span class="macro">assert_eq!</span>(raw_params.len(), <span class="number">69</span>);
+
+        <span class="kw">let </span>new_tp = TransportParams::decode(raw_params, <span class="bool-val">true</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(new_tp, tp);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>transport_params_forbid_duplicates() {
+        <span class="comment">// Given an encoded param.
+        </span><span class="kw">let </span>initial_source_connection_id = <span class="string">b"id"</span>;
+        <span class="kw">let </span>initial_source_connection_id_raw = [
+            <span class="number">15</span>,
+            initial_source_connection_id.len() <span class="kw">as </span>u8,
+            initial_source_connection_id[<span class="number">0</span>],
+            initial_source_connection_id[<span class="number">1</span>],
+        ];
+
+        <span class="comment">// No error when decoding the param.
+        </span><span class="kw">let </span>tp = TransportParams::decode(
+            initial_source_connection_id_raw.as_slice(),
+            <span class="bool-val">true</span>,
+        )
+        .unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            tp.initial_source_connection_id,
+            <span class="prelude-val">Some</span>(initial_source_connection_id.to_vec().into())
+        );
+
+        <span class="comment">// Duplicate the param.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>raw_params = Vec::new();
+        raw_params.append(<span class="kw-2">&amp;mut </span>initial_source_connection_id_raw.to_vec());
+        raw_params.append(<span class="kw-2">&amp;mut </span>initial_source_connection_id_raw.to_vec());
+
+        <span class="comment">// Decoding fails.
+        </span><span class="macro">assert_eq!</span>(
+            TransportParams::decode(raw_params.as_slice(), <span class="bool-val">true</span>),
+            <span class="prelude-val">Err</span>(Error::InvalidTransportParam)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>unknown_version() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="number">0xbabababa</span>).unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_client_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Err</span>(Error::UnknownVersion));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>config_version_reserved() {
+        Config::new(<span class="number">0xbabababa</span>).unwrap();
+        Config::new(<span class="number">0x1a2a3a4a</span>).unwrap();
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>config_version_invalid() {
+        <span class="macro">assert_eq!</span>(
+            Config::new(<span class="number">0xb1bababa</span>).err().unwrap(),
+            Error::UnknownVersion
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>version_negotiation() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="number">0xbabababa</span>).unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_client_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+
+        <span class="kw">let </span>(<span class="kw-2">mut </span>len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="kw">let </span>hdr = packet::Header::from_slice(<span class="kw-2">&amp;mut </span>buf[..len], <span class="number">0</span>).unwrap();
+        len = <span class="kw">crate</span>::negotiate_version(<span class="kw-2">&amp;</span>hdr.scid, <span class="kw-2">&amp;</span>hdr.dcid, <span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="macro">assert_eq!</span>(pipe.client_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.version, PROTOCOL_VERSION);
+        <span class="macro">assert_eq!</span>(pipe.server.version, PROTOCOL_VERSION);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>verify_custom_root() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(PROTOCOL_VERSION).unwrap();
+        config.verify_peer(<span class="bool-val">true</span>);
+        config
+            .load_verify_locations_from_file(<span class="string">"examples/rootca.crt"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_client_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+    }
+
+    <span class="comment">// Disable this for openssl as it seems to fail for some reason. It could be
+    // because of the way the get_certs API differs from bssl.
+    </span><span class="attr">#[cfg(not(feature = <span class="string">"openssl"</span>))]
+    #[test]
+    </span><span class="kw">fn </span>verify_client_invalid() {
+        <span class="kw">let </span><span class="kw-2">mut </span>server_config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        server_config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        server_config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        server_config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        server_config.set_initial_max_data(<span class="number">30</span>);
+        server_config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        server_config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        server_config.set_initial_max_streams_bidi(<span class="number">3</span>);
+
+        <span class="comment">// The server shouldn't be able to verify the client's certificate due
+        // to missing CA.
+        </span>server_config.verify_peer(<span class="bool-val">true</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>client_config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        client_config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        client_config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        client_config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        client_config.set_initial_max_data(<span class="number">30</span>);
+        client_config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        client_config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        client_config.set_initial_max_streams_bidi(<span class="number">3</span>);
+
+        <span class="comment">// The client is able to verify the server's certificate with the
+        // appropriate CA.
+        </span>client_config
+            .load_verify_locations_from_file(<span class="string">"examples/rootca.crt"</span>)
+            .unwrap();
+        client_config.verify_peer(<span class="bool-val">true</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_client_and_server_config(
+            <span class="kw-2">&amp;mut </span>client_config,
+            <span class="kw-2">&amp;mut </span>server_config,
+        )
+        .unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Err</span>(Error::TlsFail));
+
+        <span class="comment">// Client did send a certificate.
+        </span><span class="macro">assert!</span>(pipe.server.peer_cert().is_some());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>verify_client_anonymous() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+
+        <span class="comment">// Try to validate client certificate.
+        </span>config.verify_peer(<span class="bool-val">true</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_server_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client didn't send a certificate.
+        </span><span class="macro">assert!</span>(pipe.server.peer_cert().is_none());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>missing_initial_source_connection_id() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+
+        <span class="comment">// Reset initial_source_connection_id.
+        </span>pipe.client
+            .local_transport_params
+            .initial_source_connection_id = <span class="prelude-val">None</span>;
+        <span class="macro">assert_eq!</span>(pipe.client.encode_transport_params(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends initial flight.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="comment">// Server rejects transport parameters.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..len]),
+            <span class="prelude-val">Err</span>(Error::InvalidTransportParam)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>invalid_initial_source_connection_id() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+
+        <span class="comment">// Scramble initial_source_connection_id.
+        </span>pipe.client
+            .local_transport_params
+            .initial_source_connection_id = <span class="prelude-val">Some</span>(<span class="string">b"bogus value"</span>.to_vec().into());
+        <span class="macro">assert_eq!</span>(pipe.client.encode_transport_params(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends initial flight.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="comment">// Server rejects transport parameters.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..len]),
+            <span class="prelude-val">Err</span>(Error::InvalidTransportParam)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>handshake() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(
+            pipe.client.application_proto(),
+            pipe.server.application_proto()
+        );
+
+        <span class="macro">assert_eq!</span>(pipe.server.server_name(), <span class="prelude-val">Some</span>(<span class="string">"quic.tech"</span>));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>handshake_done() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+
+        <span class="comment">// Disable session tickets on the server (SSL_OP_NO_TICKET) to avoid
+        // triggering 1-RTT packet send with a CRYPTO frame.
+        </span>pipe.server.handshake.set_options(<span class="number">0x0000_4000</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert!</span>(pipe.server.handshake_done_sent);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>handshake_confirmation() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+
+        <span class="comment">// Client sends initial flight.
+        </span><span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).unwrap();
+        testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.server, flight).unwrap();
+
+        <span class="comment">// Server sends initial flight.
+        </span><span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).unwrap();
+
+        <span class="macro">assert!</span>(!pipe.client.is_established());
+        <span class="macro">assert!</span>(!pipe.client.handshake_confirmed);
+
+        <span class="macro">assert!</span>(!pipe.server.is_established());
+        <span class="macro">assert!</span>(!pipe.server.handshake_confirmed);
+
+        testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.client, flight).unwrap();
+
+        <span class="comment">// Client sends Handshake packet and completes handshake.
+        </span><span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).unwrap();
+
+        <span class="macro">assert!</span>(pipe.client.is_established());
+        <span class="macro">assert!</span>(!pipe.client.handshake_confirmed);
+
+        <span class="macro">assert!</span>(!pipe.server.is_established());
+        <span class="macro">assert!</span>(!pipe.server.handshake_confirmed);
+
+        testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.server, flight).unwrap();
+
+        <span class="comment">// Server completes and confirms handshake, and sends HANDSHAKE_DONE.
+        </span><span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).unwrap();
+
+        <span class="macro">assert!</span>(pipe.client.is_established());
+        <span class="macro">assert!</span>(!pipe.client.handshake_confirmed);
+
+        <span class="macro">assert!</span>(pipe.server.is_established());
+        <span class="macro">assert!</span>(pipe.server.handshake_confirmed);
+
+        testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.client, flight).unwrap();
+
+        <span class="comment">// Client acks 1-RTT packet, and confirms handshake.
+        </span><span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).unwrap();
+
+        <span class="macro">assert!</span>(pipe.client.is_established());
+        <span class="macro">assert!</span>(pipe.client.handshake_confirmed);
+
+        <span class="macro">assert!</span>(pipe.server.is_established());
+        <span class="macro">assert!</span>(pipe.server.handshake_confirmed);
+
+        testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.server, flight).unwrap();
+
+        <span class="macro">assert!</span>(pipe.client.is_established());
+        <span class="macro">assert!</span>(pipe.client.handshake_confirmed);
+
+        <span class="macro">assert!</span>(pipe.server.is_established());
+        <span class="macro">assert!</span>(pipe.server.handshake_confirmed);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>handshake_resumption() {
+        <span class="attr">#[cfg(not(feature = <span class="string">"openssl"</span>))]
+        </span><span class="kw">const </span>SESSION_TICKET_KEY: [u8; <span class="number">48</span>] = [<span class="number">0xa</span>; <span class="number">48</span>];
+
+        <span class="comment">// 80-byte key(AES 256)
+        // TODO: We can set the default? or query the ticket size by calling
+        // the same API(SSL_CTX_set_tlsext_ticket_keys) twice to fetch the size.
+        </span><span class="attr">#[cfg(feature = <span class="string">"openssl"</span>)]
+        </span><span class="kw">const </span>SESSION_TICKET_KEY: [u8; <span class="number">80</span>] = [<span class="number">0xa</span>; <span class="number">80</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.set_ticket_key(<span class="kw-2">&amp;</span>SESSION_TICKET_KEY).unwrap();
+
+        <span class="comment">// Perform initial handshake.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_server_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert!</span>(pipe.client.is_established());
+        <span class="macro">assert!</span>(pipe.server.is_established());
+
+        <span class="macro">assert!</span>(!pipe.client.is_resumed());
+        <span class="macro">assert!</span>(!pipe.server.is_resumed());
+
+        <span class="comment">// Extract session,
+        </span><span class="kw">let </span>session = pipe.client.session().unwrap();
+
+        <span class="comment">// Configure session on new connection and perform handshake.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.set_ticket_key(<span class="kw-2">&amp;</span>SESSION_TICKET_KEY).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_server_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+
+        <span class="macro">assert_eq!</span>(pipe.client.set_session(session), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert!</span>(pipe.client.is_established());
+        <span class="macro">assert!</span>(pipe.server.is_established());
+
+        <span class="macro">assert!</span>(pipe.client.is_resumed());
+        <span class="macro">assert!</span>(pipe.server.is_resumed());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>handshake_alpn_mismatch() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(PROTOCOL_VERSION).unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto3\x06proto4"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_client_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Err</span>(Error::TlsFail));
+
+        <span class="macro">assert_eq!</span>(pipe.client.application_proto(), <span class="string">b""</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.application_proto(), <span class="string">b""</span>);
+
+        <span class="comment">// Server should only send one packet in response to ALPN mismatch.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.server.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">1200</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.server.send(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(pipe.server.sent_count, <span class="number">1</span>);
+    }
+
+    <span class="attr">#[cfg(not(feature = <span class="string">"openssl"</span>))] </span><span class="comment">// 0-RTT not supported when using openssl/quictls
+    </span><span class="attr">#[test]
+    </span><span class="kw">fn </span>handshake_0rtt() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.enable_early_data();
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="comment">// Perform initial handshake.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Extract session,
+        </span><span class="kw">let </span>session = pipe.client.session().unwrap();
+
+        <span class="comment">// Configure session on new connection.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.client.set_session(session), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends initial flight.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+
+        <span class="comment">// Client sends 0-RTT packet.
+        </span><span class="kw">let </span>pkt_type = packet::Type::ZeroRTT;
+
+        <span class="kw">let </span>frames = [frame::Frame::Stream {
+            stream_id: <span class="number">4</span>,
+            data: stream::RangeBuf::from(<span class="string">b"aaaaa"</span>, <span class="number">0</span>, <span class="bool-val">true</span>),
+        }];
+
+        <span class="macro">assert_eq!</span>(
+            pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Ok</span>(<span class="number">1200</span>)
+        );
+
+        <span class="macro">assert_eq!</span>(pipe.server.undecryptable_pkts.len(), <span class="number">0</span>);
+
+        <span class="comment">// 0-RTT stream data is readable.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>b), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>b[..<span class="number">5</span>], <span class="string">b"aaaaa"</span>);
+    }
+
+    <span class="attr">#[cfg(not(feature = <span class="string">"openssl"</span>))] </span><span class="comment">// 0-RTT not supported when using openssl/quictls
+    </span><span class="attr">#[test]
+    </span><span class="kw">fn </span>handshake_0rtt_reordered() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.enable_early_data();
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="comment">// Perform initial handshake.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Extract session,
+        </span><span class="kw">let </span>session = pipe.client.session().unwrap();
+
+        <span class="comment">// Configure session on new connection.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.client.set_session(session), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends initial flight.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>initial = buf[..len].to_vec();
+
+        <span class="comment">// Client sends 0-RTT packet.
+        </span><span class="kw">let </span>pkt_type = packet::Type::ZeroRTT;
+
+        <span class="kw">let </span>frames = [frame::Frame::Stream {
+            stream_id: <span class="number">4</span>,
+            data: stream::RangeBuf::from(<span class="string">b"aaaaa"</span>, <span class="number">0</span>, <span class="bool-val">true</span>),
+        }];
+
+        <span class="kw">let </span>len =
+            testing::encode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+                .unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>zrtt = buf[..len].to_vec();
+
+        <span class="comment">// 0-RTT packet is received before the Initial one.
+        </span><span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>zrtt), <span class="prelude-val">Ok</span>(zrtt.len()));
+
+        <span class="macro">assert_eq!</span>(pipe.server.undecryptable_pkts.len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.undecryptable_pkts[<span class="number">0</span>].<span class="number">0</span>.len(), zrtt.len());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Initial packet is also received.
+        </span><span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>initial), <span class="prelude-val">Ok</span>(initial.len()));
+
+        <span class="comment">// 0-RTT stream data is readable.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>b), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>b[..<span class="number">5</span>], <span class="string">b"aaaaa"</span>);
+    }
+
+    <span class="attr">#[cfg(not(feature = <span class="string">"openssl"</span>))] </span><span class="comment">// 0-RTT not supported when using openssl/quictls
+    </span><span class="attr">#[test]
+    </span><span class="kw">fn </span>handshake_0rtt_truncated() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.enable_early_data();
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="comment">// Perform initial handshake.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Extract session,
+        </span><span class="kw">let </span>session = pipe.client.session().unwrap();
+
+        <span class="comment">// Configure session on new connection.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.client.set_session(session), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends initial flight.
+        </span>pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="comment">// Client sends 0-RTT packet.
+        </span><span class="kw">let </span>pkt_type = packet::Type::ZeroRTT;
+
+        <span class="kw">let </span>frames = [frame::Frame::Stream {
+            stream_id: <span class="number">4</span>,
+            data: stream::RangeBuf::from(<span class="string">b"aaaaa"</span>, <span class="number">0</span>, <span class="bool-val">true</span>),
+        }];
+
+        <span class="kw">let </span>len =
+            testing::encode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+                .unwrap();
+
+        <span class="comment">// Simulate a truncated packet by sending one byte less.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>zrtt = buf[..len - <span class="number">1</span>].to_vec();
+
+        <span class="comment">// 0-RTT packet is received before the Initial one.
+        </span><span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>zrtt), <span class="prelude-val">Err</span>(Error::InvalidPacket));
+
+        <span class="macro">assert_eq!</span>(pipe.server.undecryptable_pkts.len(), <span class="number">0</span>);
+
+        <span class="macro">assert!</span>(pipe.server.is_closed());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>crypto_limit() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.enable_early_data();
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="comment">// Perform initial handshake.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client send a 1-byte frame that starts from the crypto stream offset
+        // limit.
+        </span><span class="kw">let </span>frames = [frame::Frame::Crypto {
+            data: stream::RangeBuf::from(<span class="string">b"a"</span>, MAX_CRYPTO_STREAM_OFFSET, <span class="bool-val">false</span>),
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+
+        <span class="kw">let </span>written =
+            testing::encode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+                .unwrap();
+
+        <span class="kw">let </span>active_path = pipe.server.paths.get_active().unwrap();
+        <span class="kw">let </span>info = RecvInfo {
+            to: active_path.local_addr(),
+            from: active_path.peer_addr(),
+        };
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.recv(<span class="kw-2">&amp;mut </span>buf[..written], info),
+            <span class="prelude-val">Err</span>(Error::CryptoBufferExceeded)
+        );
+
+        <span class="kw">let </span>written = <span class="kw">match </span>pipe.server.send(<span class="kw-2">&amp;mut </span>buf) {
+            <span class="prelude-val">Ok</span>((write, <span class="kw">_</span>)) =&gt; write,
+
+            <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="macro">unreachable!</span>(),
+        };
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..written]).unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::ConnectionClose {
+                error_code: <span class="number">0x0d</span>,
+                frame_type: <span class="number">0</span>,
+                reason: Vec::new(),
+            })
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>limit_handshake_data() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert-big.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_server_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+
+        <span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).unwrap();
+        <span class="kw">let </span>client_sent = flight.iter().fold(<span class="number">0</span>, |out, p| out + p.<span class="number">0</span>.len());
+        testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.server, flight).unwrap();
+
+        <span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).unwrap();
+        <span class="kw">let </span>server_sent = flight.iter().fold(<span class="number">0</span>, |out, p| out + p.<span class="number">0</span>.len());
+
+        <span class="macro">assert_eq!</span>(server_sent, client_sent * MAX_AMPLIFICATION_FACTOR);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"hello, world"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">12</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert!</span>(!pipe.server.stream_finished(<span class="number">4</span>));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>b), <span class="prelude-val">Ok</span>((<span class="number">12</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>b[..<span class="number">12</span>], <span class="string">b"hello, world"</span>);
+
+        <span class="macro">assert!</span>(pipe.server.stream_finished(<span class="number">4</span>));
+    }
+
+    <span class="attr">#[cfg(not(feature = <span class="string">"openssl"</span>))] </span><span class="comment">// 0-RTT not supported when using openssl/quictls
+    </span><span class="attr">#[test]
+    </span><span class="kw">fn </span>zero_rtt() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.enable_early_data();
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="comment">// Perform initial handshake.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Extract session,
+        </span><span class="kw">let </span>session = pipe.client.session().unwrap();
+
+        <span class="comment">// Configure session on new connection.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.client.set_session(session), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends initial flight.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>initial = buf[..len].to_vec();
+
+        <span class="macro">assert!</span>(pipe.client.is_in_early_data());
+
+        <span class="comment">// Client sends 0-RTT data.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"hello, world"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">12</span>));
+
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>zrtt = buf[..len].to_vec();
+
+        <span class="comment">// Server receives packets.
+        </span><span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>initial), <span class="prelude-val">Ok</span>(initial.len()));
+        <span class="macro">assert!</span>(pipe.server.is_in_early_data());
+
+        <span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>zrtt), <span class="prelude-val">Ok</span>(zrtt.len()));
+
+        <span class="comment">// 0-RTT stream data is readable.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>b), <span class="prelude-val">Ok</span>((<span class="number">12</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>b[..<span class="number">12</span>], <span class="string">b"hello, world"</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_send_on_32bit_arch() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">2_u64</span>.pow(<span class="number">32</span>) + <span class="number">5</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">10</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.set_initial_max_streams_uni(<span class="number">0</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// In 32bit arch, send_capacity() should be min(2^32+5, cwnd),
+        // not min(5, cwnd)
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"hello, world"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">12</span>));
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert!</span>(!pipe.server.stream_finished(<span class="number">4</span>));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>empty_stream_frame() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [frame::Frame::Stream {
+            stream_id: <span class="number">4</span>,
+            data: stream::RangeBuf::from(<span class="string">b"aaaaa"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert_eq!</span>(pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(<span class="number">39</span>));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>readable = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(readable.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">false</span>)));
+
+        <span class="kw">let </span>frames = [frame::Frame::Stream {
+            stream_id: <span class="number">4</span>,
+            data: stream::RangeBuf::from(<span class="string">b""</span>, <span class="number">5</span>, <span class="bool-val">true</span>),
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert_eq!</span>(pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(<span class="number">39</span>));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>readable = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(readable.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="bool-val">true</span>)));
+
+        <span class="kw">let </span>frames = [frame::Frame::Stream {
+            stream_id: <span class="number">4</span>,
+            data: stream::RangeBuf::from(<span class="string">b""</span>, <span class="number">15</span>, <span class="bool-val">true</span>),
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert_eq!</span>(
+            pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Err</span>(Error::FinalSize)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>update_key_request() {
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends message with key update request.
+        </span><span class="macro">assert_eq!</span>(pipe.client_update_key(), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Ensure server updates key and it correctly decrypts the message.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>b), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>b[..<span class="number">5</span>], <span class="string">b"hello"</span>);
+
+        <span class="comment">// Ensure ACK for key update.
+        </span><span class="macro">assert!</span>(
+            pipe.server.pkt_num_spaces[packet::Epoch::Application]
+                .key_update
+                .as_ref()
+                .unwrap()
+                .update_acked
+        );
+
+        <span class="comment">// Server sends message with the new key.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">4</span>, <span class="string">b"world"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Ensure update key is completed and client can decrypt packet.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.client.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>b), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>b[..<span class="number">5</span>], <span class="string">b"world"</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>update_key_request_twice_error() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [frame::Frame::Stream {
+            stream_id: <span class="number">4</span>,
+            data: stream::RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+        }];
+
+        <span class="comment">// Client sends stream frame with key update request.
+        </span><span class="macro">assert_eq!</span>(pipe.client_update_key(), <span class="prelude-val">Ok</span>(()));
+        <span class="kw">let </span>written = testing::encode_pkt(
+            <span class="kw-2">&amp;mut </span>pipe.client,
+            packet::Type::Short,
+            <span class="kw-2">&amp;</span>frames,
+            <span class="kw-2">&amp;mut </span>buf,
+        )
+        .unwrap();
+
+        <span class="comment">// Server correctly decode with new key.
+        </span><span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..written]), <span class="prelude-val">Ok</span>(written));
+
+        <span class="comment">// Client sends stream frame with another key update request before server
+        // ACK.
+        </span><span class="macro">assert_eq!</span>(pipe.client_update_key(), <span class="prelude-val">Ok</span>(()));
+        <span class="kw">let </span>written = testing::encode_pkt(
+            <span class="kw-2">&amp;mut </span>pipe.client,
+            packet::Type::Short,
+            <span class="kw-2">&amp;</span>frames,
+            <span class="kw-2">&amp;mut </span>buf,
+        )
+        .unwrap();
+
+        <span class="comment">// Check server correctly closes the connection with a key update error
+        // for the peer.
+        </span><span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..written]), <span class="prelude-val">Err</span>(Error::KeyUpdate));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that receiving a MAX_STREAM_DATA frame for a receive-only
+    /// unidirectional stream is forbidden.
+    </span><span class="kw">fn </span>max_stream_data_receive_uni() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client opens unidirectional stream.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">2</span>, <span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends MAX_STREAM_DATA on local unidirectional stream.
+        </span><span class="kw">let </span>frames = [frame::Frame::MaxStreamData {
+            stream_id: <span class="number">2</span>,
+            max: <span class="number">1024</span>,
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert_eq!</span>(
+            pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Err</span>(Error::InvalidStreamState(<span class="number">2</span>)),
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>empty_payload() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Send a packet with no frames.
+        </span><span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert_eq!</span>(
+            pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>[], <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Err</span>(Error::InvalidPacket)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>min_payload() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+
+        <span class="comment">// Send a non-ack-eliciting packet.
+        </span><span class="kw">let </span>frames = [frame::Frame::Padding { len: <span class="number">4 </span>}];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Initial;
+        <span class="kw">let </span>written =
+            testing::encode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+                .unwrap();
+        <span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..written]), <span class="prelude-val">Ok</span>(written));
+
+        <span class="kw">let </span>initial_path = pipe
+            .server
+            .paths
+            .get_active()
+            .expect(<span class="string">"initial path not found"</span>);
+
+        <span class="macro">assert_eq!</span>(initial_path.max_send_bytes, <span class="number">195</span>);
+
+        <span class="comment">// Force server to send a single PING frame.
+        </span>pipe.server
+            .paths
+            .get_active_mut()
+            .expect(<span class="string">"no active path"</span>)
+            .recovery
+            .loss_probes[packet::Epoch::Initial] = <span class="number">1</span>;
+
+        <span class="kw">let </span>initial_path = pipe
+            .server
+            .paths
+            .get_active_mut()
+            .expect(<span class="string">"initial path not found"</span>);
+
+        <span class="comment">// Artificially limit the amount of bytes the server can send.
+        </span>initial_path.max_send_bytes = <span class="number">60</span>;
+
+        <span class="macro">assert_eq!</span>(pipe.server.send(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>flow_control_limit() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [
+            frame::Frame::Stream {
+                stream_id: <span class="number">0</span>,
+                data: stream::RangeBuf::from(<span class="string">b"aaaaaaaaaaaaaaa"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">4</span>,
+                data: stream::RangeBuf::from(<span class="string">b"aaaaaaaaaaaaaaa"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">8</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+        ];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert_eq!</span>(
+            pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Err</span>(Error::FlowControl),
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>flow_control_limit_dup() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [
+            <span class="comment">// One byte less than stream limit.
+            </span>frame::Frame::Stream {
+                stream_id: <span class="number">0</span>,
+                data: stream::RangeBuf::from(<span class="string">b"aaaaaaaaaaaaaa"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            <span class="comment">// Same stream, but one byte more.
+            </span>frame::Frame::Stream {
+                stream_id: <span class="number">0</span>,
+                data: stream::RangeBuf::from(<span class="string">b"aaaaaaaaaaaaaaa"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">8</span>,
+                data: stream::RangeBuf::from(<span class="string">b"aaaaaaaaaaaaaaa"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+        ];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert!</span>(pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf).is_ok());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>flow_control_update() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [
+            frame::Frame::Stream {
+                stream_id: <span class="number">0</span>,
+                data: stream::RangeBuf::from(<span class="string">b"aaaaaaaaaaaaaaa"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">4</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+        ];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+
+        <span class="macro">assert!</span>(pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf).is_ok());
+
+        pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>buf).unwrap();
+        pipe.server.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="kw">let </span>frames = [frame::Frame::Stream {
+            stream_id: <span class="number">4</span>,
+            data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">1</span>, <span class="bool-val">false</span>),
+        }];
+
+        <span class="kw">let </span>len = pipe
+            .send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+            .unwrap();
+
+        <span class="macro">assert!</span>(len &gt; <span class="number">0</span>);
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="comment">// Ignore ACK.
+        </span>iter.next().unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::MaxStreamData {
+                stream_id: <span class="number">0</span>,
+                max: <span class="number">30
+            </span>})
+        );
+        <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::MaxData { max: <span class="number">61 </span>}));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that flow control is properly updated even when a stream is shut
+    /// down.
+    </span><span class="kw">fn </span>flow_control_drain() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client opens a stream and sends some data.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server receives data, without reading it.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// In the meantime, client sends more data.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+
+        <span class="comment">// Server shuts down one stream.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_shutdown(<span class="number">4</span>, Shutdown::Read, <span class="number">42</span>), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Flush connection.
+        </span><span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_flow_control_limit_bidi() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [frame::Frame::Stream {
+            stream_id: <span class="number">4</span>,
+            data: stream::RangeBuf::from(<span class="string">b"aaaaaaaaaaaaaaaa"</span>, <span class="number">0</span>, <span class="bool-val">true</span>),
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert_eq!</span>(
+            pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Err</span>(Error::FlowControl),
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_flow_control_limit_uni() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [frame::Frame::Stream {
+            stream_id: <span class="number">2</span>,
+            data: stream::RangeBuf::from(<span class="string">b"aaaaaaaaaaa"</span>, <span class="number">0</span>, <span class="bool-val">true</span>),
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert_eq!</span>(
+            pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Err</span>(Error::FlowControl),
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_flow_control_update() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [frame::Frame::Stream {
+            stream_id: <span class="number">4</span>,
+            data: stream::RangeBuf::from(<span class="string">b"aaaaaaaaa"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+
+        <span class="macro">assert!</span>(pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf).is_ok());
+
+        pipe.server.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="kw">let </span>frames = [frame::Frame::Stream {
+            stream_id: <span class="number">4</span>,
+            data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">9</span>, <span class="bool-val">false</span>),
+        }];
+
+        <span class="kw">let </span>len = pipe
+            .send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+            .unwrap();
+
+        <span class="macro">assert!</span>(len &gt; <span class="number">0</span>);
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="comment">// Ignore ACK.
+        </span>iter.next().unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::MaxStreamData {
+                stream_id: <span class="number">4</span>,
+                max: <span class="number">24</span>,
+            })
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_left_bidi() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(<span class="number">3</span>, pipe.client.peer_streams_left_bidi());
+        <span class="macro">assert_eq!</span>(<span class="number">3</span>, pipe.server.peer_streams_left_bidi());
+
+        pipe.server.stream_send(<span class="number">1</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>).ok();
+        <span class="macro">assert_eq!</span>(<span class="number">2</span>, pipe.server.peer_streams_left_bidi());
+        pipe.server.stream_send(<span class="number">5</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>).ok();
+        <span class="macro">assert_eq!</span>(<span class="number">1</span>, pipe.server.peer_streams_left_bidi());
+
+        pipe.server.stream_send(<span class="number">9</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>).ok();
+        <span class="macro">assert_eq!</span>(<span class="number">0</span>, pipe.server.peer_streams_left_bidi());
+
+        <span class="kw">let </span>frames = [frame::Frame::MaxStreamsBidi { max: MAX_STREAM_ID }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert!</span>(pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf).is_ok());
+
+        <span class="macro">assert_eq!</span>(MAX_STREAM_ID - <span class="number">3</span>, pipe.server.peer_streams_left_bidi());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_left_uni() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(<span class="number">3</span>, pipe.client.peer_streams_left_uni());
+        <span class="macro">assert_eq!</span>(<span class="number">3</span>, pipe.server.peer_streams_left_uni());
+
+        pipe.server.stream_send(<span class="number">3</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>).ok();
+        <span class="macro">assert_eq!</span>(<span class="number">2</span>, pipe.server.peer_streams_left_uni());
+        pipe.server.stream_send(<span class="number">7</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>).ok();
+        <span class="macro">assert_eq!</span>(<span class="number">1</span>, pipe.server.peer_streams_left_uni());
+
+        pipe.server.stream_send(<span class="number">11</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>).ok();
+        <span class="macro">assert_eq!</span>(<span class="number">0</span>, pipe.server.peer_streams_left_uni());
+
+        <span class="kw">let </span>frames = [frame::Frame::MaxStreamsUni { max: MAX_STREAM_ID }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert!</span>(pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf).is_ok());
+
+        <span class="macro">assert_eq!</span>(MAX_STREAM_ID - <span class="number">3</span>, pipe.server.peer_streams_left_uni());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_limit_bidi() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [
+            frame::Frame::Stream {
+                stream_id: <span class="number">4</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">8</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">12</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">16</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">20</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">24</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">28</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+        ];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert_eq!</span>(
+            pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Err</span>(Error::StreamLimit),
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_limit_max_bidi() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [frame::Frame::MaxStreamsBidi { max: MAX_STREAM_ID }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert!</span>(pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf).is_ok());
+
+        <span class="kw">let </span>frames = [frame::Frame::MaxStreamsBidi {
+            max: MAX_STREAM_ID + <span class="number">1</span>,
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert_eq!</span>(
+            pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Err</span>(Error::InvalidFrame),
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_limit_uni() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [
+            frame::Frame::Stream {
+                stream_id: <span class="number">2</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">6</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">10</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">14</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">18</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">22</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">26</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+        ];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert_eq!</span>(
+            pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Err</span>(Error::StreamLimit),
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_limit_max_uni() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [frame::Frame::MaxStreamsUni { max: MAX_STREAM_ID }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert!</span>(pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf).is_ok());
+
+        <span class="kw">let </span>frames = [frame::Frame::MaxStreamsUni {
+            max: MAX_STREAM_ID + <span class="number">1</span>,
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert_eq!</span>(
+            pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Err</span>(Error::InvalidFrame),
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_left_reset_bidi() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(<span class="number">3</span>, pipe.client.peer_streams_left_bidi());
+        <span class="macro">assert_eq!</span>(<span class="number">3</span>, pipe.server.peer_streams_left_bidi());
+
+        pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>).ok();
+        <span class="macro">assert_eq!</span>(<span class="number">2</span>, pipe.client.peer_streams_left_bidi());
+        pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>).ok();
+        <span class="macro">assert_eq!</span>(<span class="number">1</span>, pipe.client.peer_streams_left_bidi());
+        pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>).ok();
+        <span class="macro">assert_eq!</span>(<span class="number">0</span>, pipe.client.peer_streams_left_bidi());
+
+        <span class="comment">// Client resets the stream.
+        </span>pipe.client
+            .stream_shutdown(<span class="number">0</span>, Shutdown::Write, <span class="number">1001</span>)
+            .unwrap();
+        pipe.advance().unwrap();
+
+        <span class="macro">assert_eq!</span>(<span class="number">0</span>, pipe.client.peer_streams_left_bidi());
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">0</span>), r.next());
+        <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">4</span>), r.next());
+        <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">8</span>), r.next());
+        <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, r.next());
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Err</span>(Error::StreamReset(<span class="number">1001</span>))
+        );
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">4</span>), r.next());
+        <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">8</span>), r.next());
+        <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, r.next());
+
+        <span class="comment">// Server resets the stream in reaction.
+        </span>pipe.server
+            .stream_shutdown(<span class="number">0</span>, Shutdown::Write, <span class="number">1001</span>)
+            .unwrap();
+        pipe.advance().unwrap();
+
+        <span class="macro">assert_eq!</span>(<span class="number">1</span>, pipe.client.peer_streams_left_bidi());
+
+        <span class="comment">// Repeat for the other 2 streams
+        </span>pipe.client
+            .stream_shutdown(<span class="number">4</span>, Shutdown::Write, <span class="number">1001</span>)
+            .unwrap();
+        pipe.client
+            .stream_shutdown(<span class="number">8</span>, Shutdown::Write, <span class="number">1001</span>)
+            .unwrap();
+        pipe.advance().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">4</span>), r.next());
+        <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">8</span>), r.next());
+        <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, r.next());
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Err</span>(Error::StreamReset(<span class="number">1001</span>))
+        );
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.stream_recv(<span class="number">8</span>, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Err</span>(Error::StreamReset(<span class="number">1001</span>))
+        );
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, r.next());
+
+        pipe.server
+            .stream_shutdown(<span class="number">4</span>, Shutdown::Write, <span class="number">1001</span>)
+            .unwrap();
+        pipe.server
+            .stream_shutdown(<span class="number">8</span>, Shutdown::Write, <span class="number">1001</span>)
+            .unwrap();
+        pipe.advance().unwrap();
+
+        <span class="macro">assert_eq!</span>(<span class="number">3</span>, pipe.client.peer_streams_left_bidi());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_reset_counts() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>).ok();
+        pipe.client.stream_send(<span class="number">2</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>).ok();
+        pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>).ok();
+        pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>).ok();
+        pipe.advance().unwrap();
+
+        <span class="kw">let </span>stats = pipe.client.stats();
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_local, <span class="number">0</span>);
+
+        <span class="comment">// Client resets the stream.
+        </span>pipe.client
+            .stream_shutdown(<span class="number">0</span>, Shutdown::Write, <span class="number">1001</span>)
+            .unwrap();
+        pipe.advance().unwrap();
+
+        <span class="kw">let </span>stats = pipe.client.stats();
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_local, <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_remote, <span class="number">0</span>);
+        <span class="kw">let </span>stats = pipe.server.stats();
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_local, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_remote, <span class="number">1</span>);
+
+        <span class="comment">// Server resets the stream in reaction.
+        </span>pipe.server
+            .stream_shutdown(<span class="number">0</span>, Shutdown::Write, <span class="number">1001</span>)
+            .unwrap();
+        pipe.advance().unwrap();
+
+        <span class="kw">let </span>stats = pipe.client.stats();
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_local, <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_remote, <span class="number">1</span>);
+        <span class="kw">let </span>stats = pipe.server.stats();
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_local, <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_remote, <span class="number">1</span>);
+
+        <span class="comment">// Repeat for the other streams
+        </span>pipe.client
+            .stream_shutdown(<span class="number">2</span>, Shutdown::Write, <span class="number">1001</span>)
+            .unwrap();
+        pipe.client
+            .stream_shutdown(<span class="number">4</span>, Shutdown::Write, <span class="number">1001</span>)
+            .unwrap();
+        pipe.client
+            .stream_shutdown(<span class="number">8</span>, Shutdown::Write, <span class="number">1001</span>)
+            .unwrap();
+        pipe.advance().unwrap();
+
+        pipe.server
+            .stream_shutdown(<span class="number">4</span>, Shutdown::Write, <span class="number">1001</span>)
+            .unwrap();
+        pipe.server
+            .stream_shutdown(<span class="number">8</span>, Shutdown::Write, <span class="number">1001</span>)
+            .unwrap();
+        pipe.advance().unwrap();
+
+        <span class="kw">let </span>stats = pipe.client.stats();
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_local, <span class="number">4</span>);
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_remote, <span class="number">3</span>);
+        <span class="kw">let </span>stats = pipe.server.stats();
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_local, <span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_remote, <span class="number">4</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_stop_counts() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>).ok();
+        pipe.client.stream_send(<span class="number">2</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>).ok();
+        pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>).ok();
+        pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>).ok();
+        pipe.advance().unwrap();
+
+        <span class="kw">let </span>stats = pipe.client.stats();
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_local, <span class="number">0</span>);
+
+        <span class="comment">// Server stops the stream and client automatically resets.
+        </span>pipe.server
+            .stream_shutdown(<span class="number">0</span>, Shutdown::Read, <span class="number">1001</span>)
+            .unwrap();
+        pipe.advance().unwrap();
+
+        <span class="kw">let </span>stats = pipe.client.stats();
+        <span class="macro">assert_eq!</span>(stats.stopped_stream_count_local, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(stats.stopped_stream_count_remote, <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_local, <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_remote, <span class="number">0</span>);
+
+        <span class="kw">let </span>stats = pipe.server.stats();
+        <span class="macro">assert_eq!</span>(stats.stopped_stream_count_local, <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(stats.stopped_stream_count_remote, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_local, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_remote, <span class="number">1</span>);
+
+        <span class="comment">// Repeat for the other streams
+        </span>pipe.server
+            .stream_shutdown(<span class="number">2</span>, Shutdown::Read, <span class="number">1001</span>)
+            .unwrap();
+        pipe.server
+            .stream_shutdown(<span class="number">4</span>, Shutdown::Read, <span class="number">1001</span>)
+            .unwrap();
+        pipe.server
+            .stream_shutdown(<span class="number">8</span>, Shutdown::Read, <span class="number">1001</span>)
+            .unwrap();
+        pipe.advance().unwrap();
+
+        <span class="kw">let </span>stats = pipe.client.stats();
+        <span class="macro">assert_eq!</span>(stats.stopped_stream_count_local, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(stats.stopped_stream_count_remote, <span class="number">4</span>);
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_local, <span class="number">4</span>);
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_remote, <span class="number">0</span>);
+
+        <span class="kw">let </span>stats = pipe.server.stats();
+        <span class="macro">assert_eq!</span>(stats.stopped_stream_count_local, <span class="number">4</span>);
+        <span class="macro">assert_eq!</span>(stats.stopped_stream_count_remote, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_local, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(stats.reset_stream_count_remote, <span class="number">4</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>streams_blocked_max_bidi() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [frame::Frame::StreamsBlockedBidi {
+            limit: MAX_STREAM_ID,
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert!</span>(pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf).is_ok());
+
+        <span class="kw">let </span>frames = [frame::Frame::StreamsBlockedBidi {
+            limit: MAX_STREAM_ID + <span class="number">1</span>,
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert_eq!</span>(
+            pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Err</span>(Error::InvalidFrame),
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>streams_blocked_max_uni() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [frame::Frame::StreamsBlockedUni {
+            limit: MAX_STREAM_ID,
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert!</span>(pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf).is_ok());
+
+        <span class="kw">let </span>frames = [frame::Frame::StreamsBlockedUni {
+            limit: MAX_STREAM_ID + <span class="number">1</span>,
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert_eq!</span>(
+            pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Err</span>(Error::InvalidFrame),
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_data_overlap() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [
+            frame::Frame::Stream {
+                stream_id: <span class="number">0</span>,
+                data: stream::RangeBuf::from(<span class="string">b"aaaaa"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">0</span>,
+                data: stream::RangeBuf::from(<span class="string">b"bbbbb"</span>, <span class="number">3</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">0</span>,
+                data: stream::RangeBuf::from(<span class="string">b"ccccc"</span>, <span class="number">6</span>, <span class="bool-val">false</span>),
+            },
+        ];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert!</span>(pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b), <span class="prelude-val">Ok</span>((<span class="number">11</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>b[..<span class="number">11</span>], <span class="string">b"aaaaabbbccc"</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_data_overlap_with_reordering() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [
+            frame::Frame::Stream {
+                stream_id: <span class="number">0</span>,
+                data: stream::RangeBuf::from(<span class="string">b"aaaaa"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">0</span>,
+                data: stream::RangeBuf::from(<span class="string">b"ccccc"</span>, <span class="number">6</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">0</span>,
+                data: stream::RangeBuf::from(<span class="string">b"bbbbb"</span>, <span class="number">3</span>, <span class="bool-val">false</span>),
+            },
+        ];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert!</span>(pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b), <span class="prelude-val">Ok</span>((<span class="number">11</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>b[..<span class="number">11</span>], <span class="string">b"aaaaabccccc"</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that receiving a valid RESET_STREAM frame when all data has
+    /// already been read, notifies the application.
+    </span><span class="kw">fn </span>reset_stream_data_recvd() {
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends some data.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server gets data and sends data back, closing stream.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert!</span>(!pipe.server.stream_finished(<span class="number">0</span>));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">0</span>, <span class="string">b""</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.client.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b), <span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert!</span>(pipe.client.stream_finished(<span class="number">0</span>));
+
+        <span class="comment">// Client sends RESET_STREAM, closing stream.
+        </span><span class="kw">let </span>frames = [frame::Frame::ResetStream {
+            stream_id: <span class="number">0</span>,
+            error_code: <span class="number">42</span>,
+            final_size: <span class="number">5</span>,
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert_eq!</span>(pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(<span class="number">39</span>));
+
+        <span class="comment">// Server is notified of stream readability, due to reset.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b),
+            <span class="prelude-val">Err</span>(Error::StreamReset(<span class="number">42</span>))
+        );
+
+        <span class="macro">assert!</span>(pipe.server.stream_finished(<span class="number">0</span>));
+
+        <span class="comment">// Sending RESET_STREAM again shouldn't make stream readable again.
+        </span>pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+            .unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that receiving a valid RESET_STREAM frame when all data has _not_
+    /// been read, discards all buffered data and notifies the application.
+    </span><span class="kw">fn </span>reset_stream_data_not_recvd() {
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends some data.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"h"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server gets data and sends data back, closing stream.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b), <span class="prelude-val">Ok</span>((<span class="number">1</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert!</span>(!pipe.server.stream_finished(<span class="number">0</span>));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">0</span>, <span class="string">b""</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.client.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b), <span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert!</span>(pipe.client.stream_finished(<span class="number">0</span>));
+
+        <span class="comment">// Client sends RESET_STREAM, closing stream.
+        </span><span class="kw">let </span>frames = [frame::Frame::ResetStream {
+            stream_id: <span class="number">0</span>,
+            error_code: <span class="number">42</span>,
+            final_size: <span class="number">5</span>,
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert_eq!</span>(pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(<span class="number">39</span>));
+
+        <span class="comment">// Server is notified of stream readability, due to reset.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b),
+            <span class="prelude-val">Err</span>(Error::StreamReset(<span class="number">42</span>))
+        );
+
+        <span class="macro">assert!</span>(pipe.server.stream_finished(<span class="number">0</span>));
+
+        <span class="comment">// Sending RESET_STREAM again shouldn't make stream readable again.
+        </span><span class="macro">assert_eq!</span>(pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(<span class="number">39</span>));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that RESET_STREAM frames exceeding the connection-level flow
+    /// control limit cause an error.
+    </span><span class="kw">fn </span>reset_stream_flow_control() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [
+            frame::Frame::Stream {
+                stream_id: <span class="number">0</span>,
+                data: stream::RangeBuf::from(<span class="string">b"aaaaaaaaaaaaaaa"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">4</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::ResetStream {
+                stream_id: <span class="number">4</span>,
+                error_code: <span class="number">0</span>,
+                final_size: <span class="number">15</span>,
+            },
+            frame::Frame::Stream {
+                stream_id: <span class="number">8</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+        ];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert_eq!</span>(
+            pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Err</span>(Error::FlowControl),
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that RESET_STREAM frames exceeding the stream-level flow control
+    /// limit cause an error.
+    </span><span class="kw">fn </span>reset_stream_flow_control_stream() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [
+            frame::Frame::Stream {
+                stream_id: <span class="number">4</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            },
+            frame::Frame::ResetStream {
+                stream_id: <span class="number">4</span>,
+                error_code: <span class="number">0</span>,
+                final_size: <span class="number">16</span>, <span class="comment">// Past stream's flow control limit.
+            </span>},
+        ];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert_eq!</span>(
+            pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Err</span>(Error::FlowControl),
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>path_challenge() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [frame::Frame::PathChallenge { data: [<span class="number">0xba</span>; <span class="number">8</span>] }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+
+        <span class="kw">let </span>len = pipe
+            .send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+            .unwrap();
+
+        <span class="macro">assert!</span>(len &gt; <span class="number">0</span>);
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="comment">// Ignore ACK.
+        </span>iter.next().unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::PathResponse { data: [<span class="number">0xba</span>; <span class="number">8</span>] })
+        );
+    }
+
+    <span class="attr">#[cfg(not(feature = <span class="string">"openssl"</span>))] </span><span class="comment">// 0-RTT not supported when using openssl/quictls
+    </span><span class="attr">#[test]
+    </span><span class="doccomment">/// Simulates reception of an early 1-RTT packet on the server, by
+    /// delaying the client's Handshake packet that completes the handshake.
+    </span><span class="kw">fn </span>early_1rtt_packet() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+
+        <span class="comment">// Client sends initial flight
+        </span><span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).unwrap();
+        testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.server, flight).unwrap();
+
+        <span class="comment">// Server sends initial flight.
+        </span><span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).unwrap();
+        testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.client, flight).unwrap();
+
+        <span class="comment">// Client sends Handshake packet.
+        </span><span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).unwrap();
+
+        <span class="comment">// Emulate handshake packet delay by not making server process client
+        // packet.
+        </span><span class="kw">let </span>delayed = flight;
+
+        testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).ok();
+
+        <span class="macro">assert!</span>(pipe.client.is_established());
+
+        <span class="comment">// Send 1-RTT packet #0.
+        </span><span class="kw">let </span>frames = [frame::Frame::Stream {
+            stream_id: <span class="number">0</span>,
+            data: stream::RangeBuf::from(<span class="string">b"hello, world"</span>, <span class="number">0</span>, <span class="bool-val">true</span>),
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="kw">let </span>written =
+            testing::encode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+                .unwrap();
+
+        <span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..written]), <span class="prelude-val">Ok</span>(written));
+
+        <span class="comment">// Send 1-RTT packet #1.
+        </span><span class="kw">let </span>frames = [frame::Frame::Stream {
+            stream_id: <span class="number">4</span>,
+            data: stream::RangeBuf::from(<span class="string">b"hello, world"</span>, <span class="number">0</span>, <span class="bool-val">true</span>),
+        }];
+
+        <span class="kw">let </span>written =
+            testing::encode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+                .unwrap();
+
+        <span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..written]), <span class="prelude-val">Ok</span>(written));
+
+        <span class="macro">assert!</span>(!pipe.server.is_established());
+
+        <span class="comment">// Client sent 1-RTT packets 0 and 1, but server hasn't received them.
+        //
+        // Note that `largest_rx_pkt_num` is initialized to 0, so we need to
+        // send another 1-RTT packet to make this check meaningful.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.server.pkt_num_spaces[packet::Epoch::Application]
+                .largest_rx_pkt_num,
+            <span class="number">0
+        </span>);
+
+        <span class="comment">// Process delayed packet.
+        </span>testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.server, delayed).unwrap();
+
+        <span class="macro">assert!</span>(pipe.server.is_established());
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.pkt_num_spaces[packet::Epoch::Application]
+                .largest_rx_pkt_num,
+            <span class="number">0
+        </span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stop_sending() {
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends some data, and closes stream.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"hello"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server gets data.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert!</span>(pipe.server.stream_finished(<span class="number">0</span>));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Server sends data, until blocked.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.writable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="kw">loop </span>{
+            <span class="kw">if </span>pipe.server.stream_send(<span class="number">0</span>, <span class="string">b"world"</span>, <span class="bool-val">false</span>) == <span class="prelude-val">Err</span>(Error::Done) {
+                <span class="kw">break</span>;
+            }
+
+            <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.writable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Client sends STOP_SENDING.
+        </span><span class="kw">let </span>frames = [frame::Frame::StopSending {
+            stream_id: <span class="number">0</span>,
+            error_code: <span class="number">42</span>,
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="kw">let </span>len = pipe
+            .send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+            .unwrap();
+
+        <span class="comment">// Server sent a RESET_STREAM frame in response.
+        </span><span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="comment">// Skip ACK frame.
+        </span>iter.next();
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::ResetStream {
+                stream_id: <span class="number">0</span>,
+                error_code: <span class="number">42</span>,
+                final_size: <span class="number">15</span>,
+            })
+        );
+
+        <span class="comment">// Stream is writable, but writing returns an error.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.writable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.stream_send(<span class="number">0</span>, <span class="string">b"world"</span>, <span class="bool-val">true</span>),
+            <span class="prelude-val">Err</span>(Error::StreamStopped(<span class="number">42</span>)),
+        );
+
+        <span class="macro">assert_eq!</span>(pipe.server.streams.len(), <span class="number">1</span>);
+
+        <span class="comment">// Client acks RESET_STREAM frame.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>ranges = ranges::RangeSet::default();
+        ranges.insert(<span class="number">0</span>..<span class="number">6</span>);
+
+        <span class="kw">let </span>frames = [frame::Frame::ACK {
+            ack_delay: <span class="number">15</span>,
+            ranges,
+            ecn_counts: <span class="prelude-val">None</span>,
+        }];
+
+        <span class="macro">assert_eq!</span>(pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+
+        <span class="comment">// Stream is collected on the server after RESET_STREAM is acked.
+        </span><span class="macro">assert_eq!</span>(pipe.server.streams.len(), <span class="number">0</span>);
+
+        <span class="comment">// Sending STOP_SENDING again shouldn't trigger RESET_STREAM again.
+        </span><span class="kw">let </span>frames = [frame::Frame::StopSending {
+            stream_id: <span class="number">0</span>,
+            error_code: <span class="number">42</span>,
+        }];
+
+        <span class="kw">let </span>len = pipe
+            .send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+            .unwrap();
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="macro">assert_eq!</span>(frames.len(), <span class="number">1</span>);
+
+        <span class="kw">match </span>frames.first() {
+            <span class="prelude-val">Some</span>(frame::Frame::ACK { .. }) =&gt; (),
+
+            f =&gt; <span class="macro">panic!</span>(<span class="string">"expected ACK frame, got {:?}"</span>, f),
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.writable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stop_sending_fin() {
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends some data, and closes stream.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"hello"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server gets data.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>b), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert!</span>(pipe.server.stream_finished(<span class="number">4</span>));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Server sends data...
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.writable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">4</span>, <span class="string">b"world"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// ...and buffers more, and closes stream.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">4</span>, <span class="string">b"world"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+
+        <span class="comment">// Client sends STOP_SENDING before server flushes stream.
+        </span><span class="kw">let </span>frames = [frame::Frame::StopSending {
+            stream_id: <span class="number">4</span>,
+            error_code: <span class="number">42</span>,
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="kw">let </span>len = pipe
+            .send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+            .unwrap();
+
+        <span class="comment">// Server sent a RESET_STREAM frame in response.
+        </span><span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="comment">// Skip ACK frame.
+        </span>iter.next();
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::ResetStream {
+                stream_id: <span class="number">4</span>,
+                error_code: <span class="number">42</span>,
+                final_size: <span class="number">5</span>,
+            })
+        );
+
+        <span class="comment">// No more frames are sent by the server.
+        </span><span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">None</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that resetting a stream restores flow control for unsent data.
+    </span><span class="kw">fn </span>stop_sending_unsent_tx_cap() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">30</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">30</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.set_initial_max_streams_uni(<span class="number">0</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends some data.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"hello"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>b), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">true</span>)));
+
+        <span class="comment">// Server sends some data.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">4</span>, <span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server buffers some data, until send capacity limit reached.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">4</span>, <span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">4</span>, <span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(
+            pipe.server.stream_send(<span class="number">4</span>, <span class="string">b"hello"</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+
+        <span class="comment">// Client sends STOP_SENDING.
+        </span><span class="kw">let </span>frames = [frame::Frame::StopSending {
+            stream_id: <span class="number">4</span>,
+            error_code: <span class="number">42</span>,
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+            .unwrap();
+
+        <span class="comment">// Server can now send more data (on a different stream).
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"hello"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">8</span>, <span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">8</span>, <span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(
+            pipe.server.stream_send(<span class="number">8</span>, <span class="string">b"hello"</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_shutdown_read() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends some data.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"hello, world"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">12</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.client.streams.len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.streams.len(), <span class="number">1</span>);
+
+        <span class="comment">// Server shuts down stream.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_shutdown(<span class="number">4</span>, Shutdown::Read, <span class="number">42</span>), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.server.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>dummy = buf[..len].to_vec();
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>dummy[..len]).unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::StopSending {
+                stream_id: <span class="number">4</span>,
+                error_code: <span class="number">42</span>,
+            })
+        );
+
+        <span class="macro">assert_eq!</span>(pipe.client_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Sending more data is forbidden.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.client.writable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(
+            pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"bye"</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Err</span>(Error::StreamStopped(<span class="number">42</span>))
+        );
+
+        <span class="comment">// Server sends some data, without reading the incoming data, and closes
+        // the stream.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">4</span>, <span class="string">b"hello, world"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">12</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client reads the data.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.client.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>((<span class="number">12</span>, <span class="bool-val">true</span>)));
+
+        <span class="comment">// Stream is collected on both sides.
+        </span><span class="macro">assert_eq!</span>(pipe.client.streams.len(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.streams.len(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.stream_shutdown(<span class="number">4</span>, Shutdown::Read, <span class="number">0</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_shutdown_read_after_fin() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends some data.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"hello, world"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">12</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.client.streams.len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.streams.len(), <span class="number">1</span>);
+
+        <span class="comment">// Server shuts down stream.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_shutdown(<span class="number">4</span>, Shutdown::Read, <span class="number">42</span>), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Server has nothing to send.
+        </span><span class="macro">assert_eq!</span>(pipe.server.send(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server sends some data, without reading the incoming data, and closes
+        // the stream.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">4</span>, <span class="string">b"hello, world"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">12</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client reads the data.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.client.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>((<span class="number">12</span>, <span class="bool-val">true</span>)));
+
+        <span class="comment">// Stream is collected on both sides.
+        </span><span class="macro">assert_eq!</span>(pipe.client.streams.len(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.streams.len(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.stream_shutdown(<span class="number">4</span>, Shutdown::Read, <span class="number">0</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_shutdown_read_update_max_data() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">10000</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">10000</span>);
+        config.set_initial_max_streams_bidi(<span class="number">10</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>((<span class="number">1</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(pipe.server.stream_shutdown(<span class="number">0</span>, Shutdown::Read, <span class="number">123</span>), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.server.rx_data, <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.tx_data, <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.max_tx_data, <span class="number">30</span>);
+
+        <span class="macro">assert_eq!</span>(
+            pipe.client
+                .stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>buf[..pipe.client.tx_cap], <span class="bool-val">false</span>),
+            <span class="prelude-val">Ok</span>(<span class="number">29</span>)
+        );
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert!</span>(!pipe.server.stream_readable(<span class="number">0</span>)); <span class="comment">// nothing can be consumed
+
+        // The client has increased its tx_data, and server has received it, so
+        // it increases flow control accordingly.
+        </span><span class="macro">assert_eq!</span>(pipe.client.tx_data, <span class="number">30</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.rx_data, <span class="number">30</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.tx_cap, <span class="number">45</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_shutdown_uni() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Exchange some data on uni streams.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">2</span>, <span class="string">b"hello, world"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">10</span>));
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">3</span>, <span class="string">b"hello, world"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">10</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Test local and remote shutdown.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_shutdown(<span class="number">2</span>, Shutdown::Write, <span class="number">42</span>), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(
+            pipe.client.stream_shutdown(<span class="number">2</span>, Shutdown::Read, <span class="number">42</span>),
+            <span class="prelude-val">Err</span>(Error::InvalidStreamState(<span class="number">2</span>))
+        );
+
+        <span class="macro">assert_eq!</span>(
+            pipe.client.stream_shutdown(<span class="number">3</span>, Shutdown::Write, <span class="number">42</span>),
+            <span class="prelude-val">Err</span>(Error::InvalidStreamState(<span class="number">3</span>))
+        );
+        <span class="macro">assert_eq!</span>(pipe.client.stream_shutdown(<span class="number">3</span>, Shutdown::Read, <span class="number">42</span>), <span class="prelude-val">Ok</span>(()));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_shutdown_write() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends some data.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"hello, world"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">12</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.writable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.client.streams.len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.streams.len(), <span class="number">1</span>);
+
+        <span class="comment">// Server sends some data.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">4</span>, <span class="string">b"goodbye, world"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">14</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server shuts down stream.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_shutdown(<span class="number">4</span>, Shutdown::Write, <span class="number">42</span>), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.writable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.server.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>dummy = buf[..len].to_vec();
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>dummy[..len]).unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::ResetStream {
+                stream_id: <span class="number">4</span>,
+                error_code: <span class="number">42</span>,
+                final_size: <span class="number">14</span>,
+            })
+        );
+
+        <span class="macro">assert_eq!</span>(pipe.client_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Sending more data is forbidden.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.server.stream_send(<span class="number">4</span>, <span class="string">b"bye"</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Err</span>(Error::FinalSize)
+        );
+
+        <span class="comment">// Client sends some data and closes the stream.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"bye"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">3</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server reads the data.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>((<span class="number">15</span>, <span class="bool-val">true</span>)));
+
+        <span class="comment">// Client processes readable streams.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.client.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(
+            pipe.client.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Err</span>(Error::StreamReset(<span class="number">42</span>))
+        );
+
+        <span class="comment">// Stream is collected on both sides.
+        </span><span class="macro">assert_eq!</span>(pipe.client.streams.len(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.streams.len(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.stream_shutdown(<span class="number">4</span>, Shutdown::Write, <span class="number">0</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that shutting down a stream restores flow control for unsent data.
+    </span><span class="kw">fn </span>stream_shutdown_write_unsent_tx_cap() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">30</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">30</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.set_initial_max_streams_uni(<span class="number">0</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends some data.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"hello"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>b), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">true</span>)));
+
+        <span class="comment">// Server sends some data.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">4</span>, <span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server buffers some data, until send capacity limit reached.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">4</span>, <span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">4</span>, <span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(
+            pipe.server.stream_send(<span class="number">4</span>, <span class="string">b"hello"</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+
+        <span class="comment">// Client shouldn't update flow control.
+        </span><span class="macro">assert!</span>(!pipe.client.should_update_max_data());
+
+        <span class="comment">// Server shuts down stream.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_shutdown(<span class="number">4</span>, Shutdown::Write, <span class="number">42</span>), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server can now send more data (on a different stream).
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"hello"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">8</span>, <span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">8</span>, <span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(
+            pipe.server.stream_send(<span class="number">8</span>, <span class="string">b"hello"</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that the order of flushable streams scheduled on the wire is the
+    /// same as the order of `stream_send()` calls done by the application.
+    </span><span class="kw">fn </span>stream_round_robin() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.server, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="comment">// Skip ACK frame.
+        </span>iter.next();
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::Stream {
+                stream_id: <span class="number">8</span>,
+                data: stream::RangeBuf::from(<span class="string">b"aaaaa"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            })
+        );
+
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.server, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            frames.first(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::Stream {
+                stream_id: <span class="number">0</span>,
+                data: stream::RangeBuf::from(<span class="string">b"aaaaa"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            })
+        );
+
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.server, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            frames.first(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::Stream {
+                stream_id: <span class="number">4</span>,
+                data: stream::RangeBuf::from(<span class="string">b"aaaaa"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            })
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests the readable iterator.
+    </span><span class="kw">fn </span>stream_readable() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// No readable streams.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.client.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.client.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server received stream.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.stream_send(<span class="number">0</span>, <span class="string">b"aaaaaaaaaaaaaaa"</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Ok</span>(<span class="number">15</span>)
+        );
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.client.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Client drains stream.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        pipe.client.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.client.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Server shuts down stream.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_shutdown(<span class="number">0</span>, Shutdown::Read, <span class="number">0</span>), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Client creates multiple streams.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">2</span>);
+
+        <span class="macro">assert!</span>(r.next().is_some());
+        <span class="macro">assert!</span>(r.next().is_some());
+        <span class="macro">assert!</span>(r.next().is_none());
+
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">0</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests the writable iterator.
+    </span><span class="kw">fn </span>stream_writable() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// No writable streams.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>w = pipe.client.writable();
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+
+        <span class="comment">// Client created stream.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>w = pipe.client.writable();
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server created stream.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>w = pipe.server.writable();
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.stream_send(<span class="number">0</span>, <span class="string">b"aaaaaaaaaaaaaaa"</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Ok</span>(<span class="number">15</span>)
+        );
+
+        <span class="comment">// Server stream is full.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>w = pipe.server.writable();
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client drains stream.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        pipe.client.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server stream is writable again.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>w = pipe.server.writable();
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Server shuts down stream.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_shutdown(<span class="number">0</span>, Shutdown::Write, <span class="number">0</span>), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>w = pipe.server.writable();
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Client creates multiple streams.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>w = pipe.server.writable();
+        <span class="macro">assert_eq!</span>(w.len(), <span class="number">2</span>);
+
+        <span class="macro">assert!</span>(w.next().is_some());
+        <span class="macro">assert!</span>(w.next().is_some());
+        <span class="macro">assert!</span>(w.next().is_none());
+
+        <span class="macro">assert_eq!</span>(w.len(), <span class="number">0</span>);
+
+        <span class="comment">// Server finishes stream.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">8</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>w = pipe.server.writable();
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">None</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_writable_blocked() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"h3"</span>]).unwrap();
+        config.set_initial_max_data(<span class="number">70</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">150000</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">150000</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">150000</span>);
+        config.set_initial_max_streams_bidi(<span class="number">100</span>);
+        config.set_initial_max_streams_uni(<span class="number">5</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client creates stream and sends some data.
+        </span><span class="kw">let </span>send_buf = [<span class="number">0</span>; <span class="number">35</span>];
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>send_buf, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">35</span>));
+
+        <span class="comment">// Stream is still writable as it still has capacity.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_writable_next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Client fills stream, which becomes unwritable due to connection
+        // capacity.
+        </span><span class="kw">let </span>send_buf = [<span class="number">0</span>; <span class="number">36</span>];
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>send_buf, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">35</span>));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_writable_next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.client.tx_cap, <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">70</span>];
+        pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// The connection capacity has increased and the stream is now writable
+        // again.
+        </span><span class="macro">assert_ne!</span>(pipe.client.tx_cap, <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_writable_next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_writable_next(), <span class="prelude-val">None</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that we don't exceed the per-connection flow control limit set by
+    /// the peer.
+    </span><span class="kw">fn </span>flow_control_limit_send() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(
+            pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"aaaaaaaaaaaaaaa"</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Ok</span>(<span class="number">15</span>)
+        );
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(
+            pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"aaaaaaaaaaaaaaa"</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Ok</span>(<span class="number">15</span>)
+        );
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert!</span>(r.next().is_some());
+        <span class="macro">assert!</span>(r.next().is_some());
+        <span class="macro">assert!</span>(r.next().is_none());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that invalid packets received before any other valid ones cause
+    /// the server to close the connection immediately.
+    </span><span class="kw">fn </span>invalid_initial_server() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+
+        <span class="kw">let </span>frames = [frame::Frame::Padding { len: <span class="number">10 </span>}];
+
+        <span class="kw">let </span>written = testing::encode_pkt(
+            <span class="kw-2">&amp;mut </span>pipe.client,
+            packet::Type::Initial,
+            <span class="kw-2">&amp;</span>frames,
+            <span class="kw-2">&amp;mut </span>buf,
+        )
+        .unwrap();
+
+        <span class="comment">// Corrupt the packets's last byte to make decryption fail (the last
+        // byte is part of the AEAD tag, so changing it means that the packet
+        // cannot be authenticated during decryption).
+        </span>buf[written - <span class="number">1</span>] = !buf[written - <span class="number">1</span>];
+
+        <span class="macro">assert_eq!</span>(pipe.server.timeout(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..written]),
+            <span class="prelude-val">Err</span>(Error::CryptoFail)
+        );
+
+        <span class="macro">assert!</span>(pipe.server.is_closed());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that invalid Initial packets received to cause
+    /// the client to close the connection immediately.
+    </span><span class="kw">fn </span>invalid_initial_client() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+
+        <span class="comment">// Client sends initial flight.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="comment">// Server sends initial flight.
+        </span><span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(<span class="number">1200</span>));
+
+        <span class="kw">let </span>frames = [frame::Frame::Padding { len: <span class="number">10 </span>}];
+
+        <span class="kw">let </span>written = testing::encode_pkt(
+            <span class="kw-2">&amp;mut </span>pipe.server,
+            packet::Type::Initial,
+            <span class="kw-2">&amp;</span>frames,
+            <span class="kw-2">&amp;mut </span>buf,
+        )
+        .unwrap();
+
+        <span class="comment">// Corrupt the packets's last byte to make decryption fail (the last
+        // byte is part of the AEAD tag, so changing it means that the packet
+        // cannot be authenticated during decryption).
+        </span>buf[written - <span class="number">1</span>] = !buf[written - <span class="number">1</span>];
+
+        <span class="comment">// Client will ignore invalid packet.
+        </span><span class="macro">assert_eq!</span>(pipe.client_recv(<span class="kw-2">&amp;mut </span>buf[..written]), <span class="prelude-val">Ok</span>(<span class="number">71</span>));
+
+        <span class="comment">// The connection should be alive...
+        </span><span class="macro">assert!</span>(!pipe.client.is_closed());
+
+        <span class="comment">// ...and the idle timeout should be armed.
+        </span><span class="macro">assert!</span>(pipe.client.idle_timer.is_some());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that packets with invalid payload length received before any other
+    /// valid packet cause the server to close the connection immediately.
+    </span><span class="kw">fn </span>invalid_initial_payload() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>buf);
+
+        <span class="kw">let </span>epoch = packet::Type::Initial.to_epoch().unwrap();
+
+        <span class="kw">let </span>pn = <span class="number">0</span>;
+        <span class="kw">let </span>pn_len = packet::pkt_num_len(pn).unwrap();
+
+        <span class="kw">let </span>dcid = pipe.client.destination_id();
+        <span class="kw">let </span>scid = pipe.client.source_id();
+
+        <span class="kw">let </span>hdr = Header {
+            ty: packet::Type::Initial,
+            version: pipe.client.version,
+            dcid: ConnectionId::from_ref(<span class="kw-2">&amp;</span>dcid),
+            scid: ConnectionId::from_ref(<span class="kw-2">&amp;</span>scid),
+            pkt_num: <span class="number">0</span>,
+            pkt_num_len: pn_len,
+            token: pipe.client.token.clone(),
+            versions: <span class="prelude-val">None</span>,
+            key_phase: <span class="bool-val">false</span>,
+        };
+
+        hdr.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+
+        <span class="comment">// Payload length is invalid!!!
+        </span><span class="kw">let </span>payload_len = <span class="number">4096</span>;
+
+        <span class="kw">let </span>len = pn_len + payload_len;
+        b.put_varint(len <span class="kw">as </span>u64).unwrap();
+
+        packet::encode_pkt_num(pn, <span class="kw-2">&amp;mut </span>b).unwrap();
+
+        <span class="kw">let </span>payload_offset = b.off();
+
+        <span class="kw">let </span>frames = [frame::Frame::Padding { len: <span class="number">10 </span>}];
+
+        <span class="kw">for </span>frame <span class="kw">in </span><span class="kw-2">&amp;</span>frames {
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+        }
+
+        <span class="kw">let </span>space = <span class="kw-2">&amp;mut </span>pipe.client.pkt_num_spaces[epoch];
+
+        <span class="comment">// Use correct payload length when encrypting the packet.
+        </span><span class="kw">let </span>payload_len = frames.iter().fold(<span class="number">0</span>, |acc, x| acc + x.wire_len());
+
+        <span class="kw">let </span>aead = space.crypto_seal.as_ref().unwrap();
+
+        <span class="kw">let </span>written = packet::encrypt_pkt(
+            <span class="kw-2">&amp;mut </span>b,
+            pn,
+            pn_len,
+            payload_len,
+            payload_offset,
+            <span class="prelude-val">None</span>,
+            aead,
+        )
+        .unwrap();
+
+        <span class="macro">assert_eq!</span>(pipe.server.timeout(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..written]),
+            <span class="prelude-val">Err</span>(Error::InvalidPacket)
+        );
+
+        <span class="macro">assert!</span>(pipe.server.is_closed());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that invalid packets don't cause the connection to be closed.
+    </span><span class="kw">fn </span>invalid_packet() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = [frame::Frame::Padding { len: <span class="number">10 </span>}];
+
+        <span class="kw">let </span>written = testing::encode_pkt(
+            <span class="kw-2">&amp;mut </span>pipe.client,
+            packet::Type::Short,
+            <span class="kw-2">&amp;</span>frames,
+            <span class="kw-2">&amp;mut </span>buf,
+        )
+        .unwrap();
+
+        <span class="comment">// Corrupt the packets's last byte to make decryption fail (the last
+        // byte is part of the AEAD tag, so changing it means that the packet
+        // cannot be authenticated during decryption).
+        </span>buf[written - <span class="number">1</span>] = !buf[written - <span class="number">1</span>];
+
+        <span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..written]), <span class="prelude-val">Ok</span>(written));
+
+        <span class="comment">// Corrupt the packets's first byte to make the header fail decoding.
+        </span>buf[<span class="number">0</span>] = <span class="number">255</span>;
+
+        <span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..written]), <span class="prelude-val">Ok</span>(written));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>recv_empty_buffer() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..<span class="number">0</span>]), <span class="prelude-val">Err</span>(Error::BufferTooShort));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that the MAX_STREAMS frame is sent for bidirectional streams.
+    </span><span class="kw">fn </span>stream_limit_update_bidi() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">10</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.set_initial_max_streams_uni(<span class="number">0</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends stream data.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"b"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"b"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server reads stream data.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        pipe.server.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server sends stream data, with fin.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">0</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">4</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">4</span>, <span class="string">b"b"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">0</span>, <span class="string">b"b"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+
+        <span class="comment">// Server sends MAX_STREAMS.
+        </span><span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client tries to create new streams.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">12</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">16</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(
+            pipe.client.stream_send(<span class="number">20</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Err</span>(Error::StreamLimit)
+        );
+
+        <span class="macro">assert_eq!</span>(pipe.server.readable().len(), <span class="number">3</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that the MAX_STREAMS frame is sent for unidirectional streams.
+    </span><span class="kw">fn </span>stream_limit_update_uni() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">10</span>);
+        config.set_initial_max_streams_bidi(<span class="number">0</span>);
+        config.set_initial_max_streams_uni(<span class="number">3</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends stream data.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">2</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">6</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">6</span>, <span class="string">b"b"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">2</span>, <span class="string">b"b"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server reads stream data.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        pipe.server.stream_recv(<span class="number">2</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        pipe.server.stream_recv(<span class="number">6</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+
+        <span class="comment">// Server sends MAX_STREAMS.
+        </span><span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client tries to create new streams.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">10</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">14</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">18</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(
+            pipe.client.stream_send(<span class="number">22</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Err</span>(Error::StreamLimit)
+        );
+
+        <span class="macro">assert_eq!</span>(pipe.server.readable().len(), <span class="number">3</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that the stream's fin flag is properly flushed even if there's no
+    /// data in the buffer, and that the buffer becomes readable on the other
+    /// side.
+    </span><span class="kw">fn </span>stream_zero_length_fin() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(
+            pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"aaaaaaaaaaaaaaa"</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Ok</span>(<span class="number">15</span>)
+        );
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert!</span>(r.next().is_none());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends zero-length frame.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b""</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Stream should be readable on the server after receiving empty fin.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert!</span>(r.next().is_none());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends zero-length frame (again).
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b""</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Stream should _not_ be readable on the server after receiving empty
+        // fin, because it was already finished.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that the stream's fin flag is properly flushed even if there's no
+    /// data in the buffer, that the buffer becomes readable on the other
+    /// side and stays readable even if the stream is fin'd locally.
+    </span><span class="kw">fn </span>stream_zero_length_fin_deferred_collection() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(
+            pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"aaaaaaaaaaaaaaa"</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Ok</span>(<span class="number">15</span>)
+        );
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert!</span>(r.next().is_none());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends zero-length frame.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b""</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server sends zero-length frame.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">0</span>, <span class="string">b""</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Stream should be readable on the server after receiving empty fin.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert!</span>(r.next().is_none());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends zero-length frame (again).
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b""</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Stream should _not_ be readable on the server after receiving empty
+        // fin, because it was already finished.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Stream _is_readable on the client side.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.client.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+
+        pipe.client.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Stream is completed and _is not_ readable.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.client.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that the stream gets created with stream_send() even if there's
+    /// no data in the buffer and the fin flag is not set.
+    </span><span class="kw">fn </span>stream_zero_length_non_fin() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b""</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+
+        <span class="comment">// The stream now should have been created.
+        </span><span class="macro">assert_eq!</span>(pipe.client.streams.len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Sending an empty non-fin should not change any stream state on the
+        // other side.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert!</span>(r.next().is_none());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that completed streams are garbage collected.
+    </span><span class="kw">fn </span>collect_streams() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.streams.len(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.streams.len(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert!</span>(!pipe.client.stream_finished(<span class="number">0</span>));
+        <span class="macro">assert!</span>(!pipe.server.stream_finished(<span class="number">0</span>));
+
+        <span class="macro">assert_eq!</span>(pipe.client.streams.len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.streams.len(), <span class="number">1</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">5</span>];
+        pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">0</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert!</span>(!pipe.client.stream_finished(<span class="number">0</span>));
+        <span class="macro">assert!</span>(pipe.server.stream_finished(<span class="number">0</span>));
+
+        <span class="macro">assert_eq!</span>(pipe.client.streams.len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.streams.len(), <span class="number">0</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">5</span>];
+        pipe.client.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.streams.len(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.streams.len(), <span class="number">0</span>);
+
+        <span class="macro">assert!</span>(pipe.client.stream_finished(<span class="number">0</span>));
+        <span class="macro">assert!</span>(pipe.server.stream_finished(<span class="number">0</span>));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b""</span>, <span class="bool-val">true</span>), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="kw">let </span>frames = [frame::Frame::Stream {
+            stream_id: <span class="number">0</span>,
+            data: stream::RangeBuf::from(<span class="string">b"aa"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="macro">assert_eq!</span>(pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(<span class="number">39</span>));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>config_set_cc_algorithm_name() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(PROTOCOL_VERSION).unwrap();
+
+        <span class="macro">assert_eq!</span>(config.set_cc_algorithm_name(<span class="string">"reno"</span>), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Unknown name.
+        </span><span class="macro">assert_eq!</span>(
+            config.set_cc_algorithm_name(<span class="string">"???"</span>),
+            <span class="prelude-val">Err</span>(Error::CongestionControl)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>peer_cert() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">match </span>pipe.client.peer_cert() {
+            <span class="prelude-val">Some</span>(c) =&gt; <span class="macro">assert_eq!</span>(c.len(), <span class="number">753</span>),
+
+            <span class="prelude-val">None </span>=&gt; <span class="macro">panic!</span>(<span class="string">"missing server certificate"</span>),
+        }
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>peer_cert_chain() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert-big.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_server_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">match </span>pipe.client.peer_cert_chain() {
+            <span class="prelude-val">Some</span>(c) =&gt; <span class="macro">assert_eq!</span>(c.len(), <span class="number">5</span>),
+
+            <span class="prelude-val">None </span>=&gt; <span class="macro">panic!</span>(<span class="string">"missing server certificate chain"</span>),
+        }
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>retry() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_server_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+
+        <span class="comment">// Client sends initial flight.
+        </span><span class="kw">let </span>(<span class="kw-2">mut </span>len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="comment">// Server sends Retry packet.
+        </span><span class="kw">let </span>hdr = Header::from_slice(<span class="kw-2">&amp;mut </span>buf[..len], MAX_CONN_ID_LEN).unwrap();
+
+        <span class="kw">let </span>odcid = hdr.dcid.clone();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>scid = [<span class="number">0</span>; MAX_CONN_ID_LEN];
+        rand::rand_bytes(<span class="kw-2">&amp;mut </span>scid[..]);
+        <span class="kw">let </span>scid = ConnectionId::from_ref(<span class="kw-2">&amp;</span>scid);
+
+        <span class="kw">let </span>token = <span class="string">b"quiche test retry token"</span>;
+
+        len = packet::retry(
+            <span class="kw-2">&amp;</span>hdr.scid,
+            <span class="kw-2">&amp;</span>hdr.dcid,
+            <span class="kw-2">&amp;</span>scid,
+            token,
+            hdr.version,
+            <span class="kw-2">&amp;mut </span>buf,
+        )
+        .unwrap();
+
+        <span class="comment">// Client receives Retry and sends new Initial.
+        </span><span class="macro">assert_eq!</span>(pipe.client_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="kw">let </span>hdr = Header::from_slice(<span class="kw-2">&amp;mut </span>buf[..len], MAX_CONN_ID_LEN).unwrap();
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>hdr.token.unwrap(), token);
+
+        <span class="comment">// Server accepts connection.
+        </span><span class="kw">let </span>from = <span class="string">"127.0.0.1:1234"</span>.parse().unwrap();
+        pipe.server = accept(
+            <span class="kw-2">&amp;</span>scid,
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>odcid),
+            testing::Pipe::server_addr(),
+            from,
+            <span class="kw-2">&amp;mut </span>config,
+        )
+        .unwrap();
+        <span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert!</span>(pipe.client.is_established());
+        <span class="macro">assert!</span>(pipe.server.is_established());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>missing_retry_source_connection_id() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_server_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+
+        <span class="comment">// Client sends initial flight.
+        </span><span class="kw">let </span>(<span class="kw-2">mut </span>len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="comment">// Server sends Retry packet.
+        </span><span class="kw">let </span>hdr = Header::from_slice(<span class="kw-2">&amp;mut </span>buf[..len], MAX_CONN_ID_LEN).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>scid = [<span class="number">0</span>; MAX_CONN_ID_LEN];
+        rand::rand_bytes(<span class="kw-2">&amp;mut </span>scid[..]);
+        <span class="kw">let </span>scid = ConnectionId::from_ref(<span class="kw-2">&amp;</span>scid);
+
+        <span class="kw">let </span>token = <span class="string">b"quiche test retry token"</span>;
+
+        len = packet::retry(
+            <span class="kw-2">&amp;</span>hdr.scid,
+            <span class="kw-2">&amp;</span>hdr.dcid,
+            <span class="kw-2">&amp;</span>scid,
+            token,
+            hdr.version,
+            <span class="kw-2">&amp;mut </span>buf,
+        )
+        .unwrap();
+
+        <span class="comment">// Client receives Retry and sends new Initial.
+        </span><span class="macro">assert_eq!</span>(pipe.client_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="comment">// Server accepts connection and send first flight. But original
+        // destination connection ID is ignored.
+        </span><span class="kw">let </span>from = <span class="string">"127.0.0.1:1234"</span>.parse().unwrap();
+        pipe.server =
+            accept(<span class="kw-2">&amp;</span>scid, <span class="prelude-val">None</span>, testing::Pipe::server_addr(), from, <span class="kw-2">&amp;mut </span>config)
+                .unwrap();
+        <span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+
+        <span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.client, flight),
+            <span class="prelude-val">Err</span>(Error::InvalidTransportParam)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>invalid_retry_source_connection_id() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_server_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+
+        <span class="comment">// Client sends initial flight.
+        </span><span class="kw">let </span>(<span class="kw-2">mut </span>len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="comment">// Server sends Retry packet.
+        </span><span class="kw">let </span>hdr = Header::from_slice(<span class="kw-2">&amp;mut </span>buf[..len], MAX_CONN_ID_LEN).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>scid = [<span class="number">0</span>; MAX_CONN_ID_LEN];
+        rand::rand_bytes(<span class="kw-2">&amp;mut </span>scid[..]);
+        <span class="kw">let </span>scid = ConnectionId::from_ref(<span class="kw-2">&amp;</span>scid);
+
+        <span class="kw">let </span>token = <span class="string">b"quiche test retry token"</span>;
+
+        len = packet::retry(
+            <span class="kw-2">&amp;</span>hdr.scid,
+            <span class="kw-2">&amp;</span>hdr.dcid,
+            <span class="kw-2">&amp;</span>scid,
+            token,
+            hdr.version,
+            <span class="kw-2">&amp;mut </span>buf,
+        )
+        .unwrap();
+
+        <span class="comment">// Client receives Retry and sends new Initial.
+        </span><span class="macro">assert_eq!</span>(pipe.client_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="comment">// Server accepts connection and send first flight. But original
+        // destination connection ID is invalid.
+        </span><span class="kw">let </span>from = <span class="string">"127.0.0.1:1234"</span>.parse().unwrap();
+        <span class="kw">let </span>odcid = ConnectionId::from_ref(<span class="string">b"bogus value"</span>);
+        pipe.server = accept(
+            <span class="kw-2">&amp;</span>scid,
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>odcid),
+            testing::Pipe::server_addr(),
+            from,
+            <span class="kw-2">&amp;mut </span>config,
+        )
+        .unwrap();
+        <span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+
+        <span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.client, flight),
+            <span class="prelude-val">Err</span>(Error::InvalidTransportParam)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that a zero-length NEW_TOKEN frame is detected as an error.
+    </span><span class="kw">fn </span>zero_length_new_token() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = <span class="macro">vec!</span>[frame::Frame::NewToken { token: <span class="macro">vec!</span>[] }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+
+        <span class="kw">let </span>written =
+            testing::encode_pkt(<span class="kw-2">&amp;mut </span>pipe.server, pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+                .unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            pipe.client_recv(<span class="kw-2">&amp;mut </span>buf[..written]),
+            <span class="prelude-val">Err</span>(Error::InvalidFrame)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that a NEW_TOKEN frame sent by client is detected as an error.
+    </span><span class="kw">fn </span>client_sent_new_token() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>frames = <span class="macro">vec!</span>[frame::Frame::NewToken {
+            token: <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>],
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+
+        <span class="kw">let </span>written =
+            testing::encode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+                .unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..written]),
+            <span class="prelude-val">Err</span>(Error::InvalidPacket)
+        );
+    }
+
+    <span class="kw">fn </span>check_send(<span class="kw">_</span>: <span class="kw-2">&amp;mut </span><span class="kw">impl </span>Send) {}
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>config_must_be_send() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        check_send(<span class="kw-2">&amp;mut </span>config);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>connection_must_be_send() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        check_send(<span class="kw-2">&amp;mut </span>pipe.client);
+    }
+
+    <span class="kw">fn </span>check_sync(<span class="kw">_</span>: <span class="kw-2">&amp;mut </span><span class="kw">impl </span>Sync) {}
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>config_must_be_sync() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        check_sync(<span class="kw-2">&amp;mut </span>config);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>connection_must_be_sync() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        check_sync(<span class="kw-2">&amp;mut </span>pipe.client);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>data_blocked() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"aaaaaaaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">10</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.blocked_limit, <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"aaaaaaaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">10</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.blocked_limit, <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"aaaaaaaaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">10</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.blocked_limit, <span class="prelude-val">Some</span>(<span class="number">30</span>));
+
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.client.blocked_limit, <span class="prelude-val">None</span>);
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.server, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::DataBlocked { limit: <span class="number">30 </span>}));
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::Stream {
+                stream_id: <span class="number">8</span>,
+                data: stream::RangeBuf::from(<span class="string">b"aaaaaaaaaa"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            })
+        );
+
+        <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">None</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_data_blocked() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.streams.blocked().len(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.streams.blocked().len(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"aaaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.streams.blocked().len(), <span class="number">1</span>);
+
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.client.streams.blocked().len(), <span class="number">0</span>);
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.server, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="comment">// Skip ACK frame.
+        </span>iter.next();
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::StreamDataBlocked {
+                stream_id: <span class="number">0</span>,
+                limit: <span class="number">15</span>,
+            })
+        );
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::Stream {
+                stream_id: <span class="number">0</span>,
+                data: stream::RangeBuf::from(<span class="string">b"aaaaaaaaaaaaaaa"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            })
+        );
+
+        <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Send from another stream, make sure we don't send STREAM_DATA_BLOCKED
+        // again.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.client.streams.blocked().len(), <span class="number">0</span>);
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.server, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::Stream {
+                stream_id: <span class="number">4</span>,
+                data: stream::RangeBuf::from(<span class="string">b"a"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            })
+        );
+
+        <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Send again from blocked stream and make sure it is not marked as
+        // blocked again.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"aaaaaa"</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+        <span class="macro">assert_eq!</span>(pipe.client.streams.blocked().len(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.send(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_data_blocked_unblocked_flow_control() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(
+            pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"aaaaaaaaaaaaaaah"</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Ok</span>(<span class="number">15</span>)
+        );
+        <span class="macro">assert_eq!</span>(pipe.client.streams.blocked().len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.client.streams.blocked().len(), <span class="number">0</span>);
+
+        <span class="comment">// Send again on blocked stream. It's blocked at the same offset as
+        // previously, so it should not be marked as blocked again.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"h"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(pipe.client.streams.blocked().len(), <span class="number">0</span>);
+
+        <span class="comment">// No matter how many times we try to write stream data tried, no
+        // packets containing STREAM_BLOCKED should be emitted.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"h"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(pipe.client.send(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"h"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(pipe.client.send(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"h"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(pipe.client.send(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Now read some data at the server to release flow control.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">10</span>];
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b), <span class="prelude-val">Ok</span>((<span class="number">10</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>b[..<span class="number">10</span>], <span class="string">b"aaaaaaaaaa"</span>);
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"hhhhhhhhhh!"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">10</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.streams.blocked().len(), <span class="number">1</span>);
+
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.client.streams.blocked().len(), <span class="number">0</span>);
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.server, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::StreamDataBlocked {
+                stream_id: <span class="number">0</span>,
+                limit: <span class="number">25</span>,
+            })
+        );
+
+        <span class="comment">// don't care about remaining received frames
+
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"!"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Err</span>(Error::Done));
+        <span class="macro">assert_eq!</span>(pipe.client.streams.blocked().len(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.send(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>app_limited_true() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(PROTOCOL_VERSION).unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">50000</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">50000</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">50000</span>);
+        config.set_max_recv_udp_payload_size(<span class="number">1200</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_client_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends stream data.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"a"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server reads stream data.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server sends stream data smaller than cwnd.
+        </span><span class="kw">let </span>send_buf = [<span class="number">0</span>; <span class="number">10000</span>];
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>send_buf, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">10000</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// app_limited should be true because we send less than cwnd.
+        </span><span class="macro">assert!</span>(pipe
+            .server
+            .paths
+            .get_active()
+            .expect(<span class="string">"no active"</span>)
+            .recovery
+            .app_limited());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>app_limited_false() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(PROTOCOL_VERSION).unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">50000</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">50000</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">50000</span>);
+        config.set_max_recv_udp_payload_size(<span class="number">1200</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_client_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends stream data.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"a"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server reads stream data.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server sends stream data bigger than cwnd.
+        </span><span class="kw">let </span>send_buf1 = [<span class="number">0</span>; <span class="number">20000</span>];
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>send_buf1, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">12000</span>));
+
+        testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).ok();
+
+        <span class="comment">// We can't create a new packet header because there is no room by cwnd.
+        // app_limited should be false because we can't send more by cwnd.
+        </span><span class="macro">assert!</span>(!pipe
+            .server
+            .paths
+            .get_active()
+            .expect(<span class="string">"no active"</span>)
+            .recovery
+            .app_limited());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>sends_ack_only_pkt_when_full_cwnd_and_ack_elicited() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">50000</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">50000</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">50000</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.set_initial_max_streams_uni(<span class="number">3</span>);
+        config.set_max_recv_udp_payload_size(<span class="number">1200</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends stream data bigger than cwnd (it will never arrive to the
+        // server).
+        </span><span class="kw">let </span>send_buf1 = [<span class="number">0</span>; <span class="number">20000</span>];
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>send_buf1, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">12000</span>));
+
+        testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).ok();
+
+        <span class="comment">// Server sends some stream data that will need ACKs.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.server.stream_send(<span class="number">1</span>, <span class="kw-2">&amp;</span>send_buf1[..<span class="number">500</span>], <span class="bool-val">false</span>),
+            <span class="prelude-val">Ok</span>(<span class="number">500</span>)
+        );
+
+        testing::process_flight(
+            <span class="kw-2">&amp;mut </span>pipe.client,
+            testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).unwrap(),
+        )
+        .unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">2000</span>];
+
+        <span class="kw">let </span>ret = pipe.client.send(<span class="kw-2">&amp;mut </span>buf);
+
+        <span class="macro">assert_eq!</span>(pipe.client.tx_cap, <span class="number">0</span>);
+
+        <span class="macro">assert!</span>(<span class="macro">matches!</span>(ret, <span class="prelude-val">Ok</span>((<span class="kw">_</span>, <span class="kw">_</span>))), <span class="string">"the client should at least send one packet to acknowledge the newly received data"</span>);
+
+        <span class="kw">let </span>(sent, <span class="kw">_</span>) = ret.unwrap();
+
+        <span class="macro">assert_ne!</span>(sent, <span class="number">0</span>, <span class="string">"the client should at least send a pure ACK packet"</span>);
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.server, <span class="kw-2">&amp;mut </span>buf[..sent]).unwrap();
+        <span class="macro">assert_eq!</span>(<span class="number">1</span>, frames.len());
+        <span class="macro">assert!</span>(
+            <span class="macro">matches!</span>(frames[<span class="number">0</span>], frame::Frame::ACK { .. }),
+            <span class="string">"the packet sent by the client must be an ACK only packet"
+        </span>);
+    }
+
+    <span class="doccomment">/// Like sends_ack_only_pkt_when_full_cwnd_and_ack_elicited, but when
+    /// ack_eliciting is explicitly requested.
+    </span><span class="attr">#[test]
+    </span><span class="kw">fn </span>sends_ack_only_pkt_when_full_cwnd_and_ack_elicited_despite_max_unacknowledging(
+    ) {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">50000</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">50000</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">50000</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.set_initial_max_streams_uni(<span class="number">3</span>);
+        config.set_max_recv_udp_payload_size(<span class="number">1200</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends stream data bigger than cwnd (it will never arrive to the
+        // server). This exhausts the congestion window.
+        </span><span class="kw">let </span>send_buf1 = [<span class="number">0</span>; <span class="number">20000</span>];
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>send_buf1, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">12000</span>));
+
+        testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).ok();
+
+        <span class="comment">// Client gets PING frames from server, which elicit ACK
+        </span><span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">2000</span>];
+        <span class="kw">for _ in </span><span class="number">0</span>..recovery::MAX_OUTSTANDING_NON_ACK_ELICITING {
+            <span class="kw">let </span>written = testing::encode_pkt(
+                <span class="kw-2">&amp;mut </span>pipe.server,
+                packet::Type::Short,
+                <span class="kw-2">&amp;</span>[frame::Frame::Ping { mtu_probe: <span class="prelude-val">None </span>}],
+                <span class="kw-2">&amp;mut </span>buf,
+            )
+            .unwrap();
+
+            pipe.client_recv(<span class="kw-2">&amp;mut </span>buf[..written])
+                .expect(<span class="string">"client recv ping"</span>);
+
+            <span class="comment">// Client acknowledges despite a full congestion window
+            </span><span class="kw">let </span>ret = pipe.client.send(<span class="kw-2">&amp;mut </span>buf);
+
+            <span class="macro">assert!</span>(<span class="macro">matches!</span>(ret, <span class="prelude-val">Ok</span>((<span class="kw">_</span>, <span class="kw">_</span>))), <span class="string">"the client should at least send one packet to acknowledge the newly received data"</span>);
+
+            <span class="kw">let </span>(sent, <span class="kw">_</span>) = ret.unwrap();
+
+            <span class="macro">assert_ne!</span>(
+                sent, <span class="number">0</span>,
+                <span class="string">"the client should at least send a pure ACK packet"
+            </span>);
+
+            <span class="kw">let </span>frames =
+                testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.server, <span class="kw-2">&amp;mut </span>buf[..sent]).unwrap();
+
+            <span class="macro">assert_eq!</span>(<span class="number">1</span>, frames.len());
+
+            <span class="macro">assert!</span>(
+                <span class="macro">matches!</span>(frames[<span class="number">0</span>], frame::Frame::ACK { .. }),
+                <span class="string">"the packet sent by the client must be an ACK only packet"
+            </span>);
+        }
+
+        <span class="comment">// The client shouldn't need to send any more packets after the ACK only
+        // packet it just sent.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.client.send(<span class="kw-2">&amp;mut </span>buf),
+            <span class="prelude-val">Err</span>(Error::Done),
+            <span class="string">"nothing for client to send after ACK-only packet"
+        </span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>app_limited_false_no_frame() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(PROTOCOL_VERSION).unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">50000</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">50000</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">50000</span>);
+        config.set_max_recv_udp_payload_size(<span class="number">1405</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_client_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends stream data.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"a"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server reads stream data.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server sends stream data bigger than cwnd.
+        </span><span class="kw">let </span>send_buf1 = [<span class="number">0</span>; <span class="number">20000</span>];
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>send_buf1, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">12000</span>));
+
+        testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).ok();
+
+        <span class="comment">// We can't create a new packet header because there is no room by cwnd.
+        // app_limited should be false because we can't send more by cwnd.
+        </span><span class="macro">assert!</span>(!pipe
+            .server
+            .paths
+            .get_active()
+            .expect(<span class="string">"no active"</span>)
+            .recovery
+            .app_limited());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>app_limited_false_no_header() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(PROTOCOL_VERSION).unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">50000</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">50000</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">50000</span>);
+        config.set_max_recv_udp_payload_size(<span class="number">1406</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_client_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends stream data.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"a"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server reads stream data.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server sends stream data bigger than cwnd.
+        </span><span class="kw">let </span>send_buf1 = [<span class="number">0</span>; <span class="number">20000</span>];
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>send_buf1, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">12000</span>));
+
+        testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).ok();
+
+        <span class="comment">// We can't create a new frame because there is no room by cwnd.
+        // app_limited should be false because we can't send more by cwnd.
+        </span><span class="macro">assert!</span>(!pipe
+            .server
+            .paths
+            .get_active()
+            .expect(<span class="string">"no active"</span>)
+            .recovery
+            .app_limited());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>app_limited_not_changed_on_no_new_frames() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(PROTOCOL_VERSION).unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">50000</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">50000</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">50000</span>);
+        config.set_max_recv_udp_payload_size(<span class="number">1200</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_client_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends stream data.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"a"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server reads stream data.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client's app_limited is true because its bytes-in-flight
+        // is much smaller than the current cwnd.
+        </span><span class="macro">assert!</span>(pipe
+            .client
+            .paths
+            .get_active()
+            .expect(<span class="string">"no active"</span>)
+            .recovery
+            .app_limited());
+
+        <span class="comment">// Client has no new frames to send - returns Done.
+        </span><span class="macro">assert_eq!</span>(testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Client's app_limited should remain the same.
+        </span><span class="macro">assert!</span>(pipe
+            .client
+            .paths
+            .get_active()
+            .expect(<span class="string">"no active"</span>)
+            .recovery
+            .app_limited());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>limit_ack_ranges() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>epoch = packet::Epoch::Application;
+
+        <span class="macro">assert_eq!</span>(pipe.server.pkt_num_spaces[epoch].recv_pkt_need_ack.len(), <span class="number">0</span>);
+
+        <span class="kw">let </span>frames = [
+            frame::Frame::Ping { mtu_probe: <span class="prelude-val">None </span>},
+            frame::Frame::Padding { len: <span class="number">3 </span>},
+        ];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>last_packet_sent = <span class="number">0</span>;
+
+        <span class="kw">for _ in </span><span class="number">0</span>..<span class="number">512 </span>{
+            <span class="kw">let </span>recv_count = pipe.server.recv_count;
+
+            last_packet_sent = pipe.client.pkt_num_spaces[epoch].next_pkt_num;
+
+            pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+                .unwrap();
+
+            <span class="macro">assert_eq!</span>(pipe.server.recv_count, recv_count + <span class="number">1</span>);
+
+            <span class="comment">// Skip packet number.
+            </span>pipe.client.pkt_num_spaces[epoch].next_pkt_num += <span class="number">1</span>;
+        }
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.pkt_num_spaces[epoch].recv_pkt_need_ack.len(),
+            MAX_ACK_RANGES
+        );
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.pkt_num_spaces[epoch].recv_pkt_need_ack.first(),
+            <span class="prelude-val">Some</span>(last_packet_sent - ((MAX_ACK_RANGES <span class="kw">as </span>u64) - <span class="number">1</span>) * <span class="number">2</span>)
+        );
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.pkt_num_spaces[epoch].recv_pkt_need_ack.last(),
+            <span class="prelude-val">Some</span>(last_packet_sent)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that streams are correctly scheduled based on their priority.
+    </span><span class="kw">fn </span>stream_priority() {
+        <span class="comment">// Limit 1-RTT packet size to avoid congestion control interference.
+        </span><span class="kw">const </span>MAX_TEST_PACKET_SIZE: usize = <span class="number">540</span>;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">1_000_000</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">1_000_000</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">1_000_000</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">0</span>);
+        config.set_initial_max_streams_bidi(<span class="number">100</span>);
+        config.set_initial_max_streams_uni(<span class="number">0</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">12</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">16</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">20</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">1</span>];
+
+        <span class="kw">let </span>out = [<span class="string">b'b'</span>; <span class="number">500</span>];
+
+        <span class="comment">// Server prioritizes streams as follows:
+        //  * Stream 8 and 16 have the same priority but are non-incremental.
+        //  * Stream 4, 12 and 20 have the same priority but 20 is non-incremental
+        //    and 4 and 12 are incremental.
+        //  * Stream 0 is on its own.
+
+        </span>pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.server.stream_priority(<span class="number">0</span>, <span class="number">255</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(()));
+        pipe.server.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+        pipe.server.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+        pipe.server.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+
+        pipe.server.stream_recv(<span class="number">12</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.server.stream_priority(<span class="number">12</span>, <span class="number">42</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(()));
+        pipe.server.stream_send(<span class="number">12</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+        pipe.server.stream_send(<span class="number">12</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+        pipe.server.stream_send(<span class="number">12</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+
+        pipe.server.stream_recv(<span class="number">16</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.server.stream_priority(<span class="number">16</span>, <span class="number">10</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(()));
+        pipe.server.stream_send(<span class="number">16</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+        pipe.server.stream_send(<span class="number">16</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+        pipe.server.stream_send(<span class="number">16</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+
+        pipe.server.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.server.stream_priority(<span class="number">4</span>, <span class="number">42</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(()));
+        pipe.server.stream_send(<span class="number">4</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+        pipe.server.stream_send(<span class="number">4</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+        pipe.server.stream_send(<span class="number">4</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+
+        pipe.server.stream_recv(<span class="number">8</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.server.stream_priority(<span class="number">8</span>, <span class="number">10</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(()));
+        pipe.server.stream_send(<span class="number">8</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+        pipe.server.stream_send(<span class="number">8</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+        pipe.server.stream_send(<span class="number">8</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+
+        pipe.server.stream_recv(<span class="number">20</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.server.stream_priority(<span class="number">20</span>, <span class="number">42</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(()));
+        pipe.server.stream_send(<span class="number">20</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+        pipe.server.stream_send(<span class="number">20</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+        pipe.server.stream_send(<span class="number">20</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+
+        <span class="comment">// First is stream 8.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>off = <span class="number">0</span>;
+
+        <span class="kw">for _ in </span><span class="number">1</span>..=<span class="number">3 </span>{
+            <span class="kw">let </span>(len, <span class="kw">_</span>) =
+                pipe.server.send(<span class="kw-2">&amp;mut </span>buf[..MAX_TEST_PACKET_SIZE]).unwrap();
+
+            <span class="kw">let </span>frames =
+                testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+            <span class="kw">let </span>stream = frames.first().unwrap();
+
+            <span class="macro">assert_eq!</span>(stream, <span class="kw-2">&amp;</span>frame::Frame::Stream {
+                stream_id: <span class="number">8</span>,
+                data: stream::RangeBuf::from(<span class="kw-2">&amp;</span>out, off, <span class="bool-val">false</span>),
+            });
+
+            off = <span class="kw">match </span>stream {
+                frame::Frame::Stream { data, .. } =&gt; data.max_off(),
+
+                <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+            };
+        }
+
+        <span class="comment">// Then is stream 16.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>off = <span class="number">0</span>;
+
+        <span class="kw">for _ in </span><span class="number">1</span>..=<span class="number">3 </span>{
+            <span class="kw">let </span>(len, <span class="kw">_</span>) =
+                pipe.server.send(<span class="kw-2">&amp;mut </span>buf[..MAX_TEST_PACKET_SIZE]).unwrap();
+
+            <span class="kw">let </span>frames =
+                testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+            <span class="kw">let </span>stream = frames.first().unwrap();
+
+            <span class="macro">assert_eq!</span>(stream, <span class="kw-2">&amp;</span>frame::Frame::Stream {
+                stream_id: <span class="number">16</span>,
+                data: stream::RangeBuf::from(<span class="kw-2">&amp;</span>out, off, <span class="bool-val">false</span>),
+            });
+
+            off = <span class="kw">match </span>stream {
+                frame::Frame::Stream { data, .. } =&gt; data.max_off(),
+
+                <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+            };
+        }
+
+        <span class="comment">// Then is stream 20.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>off = <span class="number">0</span>;
+
+        <span class="kw">for _ in </span><span class="number">1</span>..=<span class="number">3 </span>{
+            <span class="kw">let </span>(len, <span class="kw">_</span>) =
+                pipe.server.send(<span class="kw-2">&amp;mut </span>buf[..MAX_TEST_PACKET_SIZE]).unwrap();
+
+            <span class="kw">let </span>frames =
+                testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+            <span class="kw">let </span>stream = frames.first().unwrap();
+
+            <span class="macro">assert_eq!</span>(stream, <span class="kw-2">&amp;</span>frame::Frame::Stream {
+                stream_id: <span class="number">20</span>,
+                data: stream::RangeBuf::from(<span class="kw-2">&amp;</span>out, off, <span class="bool-val">false</span>),
+            });
+
+            off = <span class="kw">match </span>stream {
+                frame::Frame::Stream { data, .. } =&gt; data.max_off(),
+
+                <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+            };
+        }
+
+        <span class="comment">// Then are stream 12 and 4, with the same priority, incrementally.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>off = <span class="number">0</span>;
+
+        <span class="kw">for _ in </span><span class="number">1</span>..=<span class="number">3 </span>{
+            <span class="kw">let </span>(len, <span class="kw">_</span>) =
+                pipe.server.send(<span class="kw-2">&amp;mut </span>buf[..MAX_TEST_PACKET_SIZE]).unwrap();
+
+            <span class="kw">let </span>frames =
+                testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+            <span class="macro">assert_eq!</span>(
+                frames.first(),
+                <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::Stream {
+                    stream_id: <span class="number">12</span>,
+                    data: stream::RangeBuf::from(<span class="kw-2">&amp;</span>out, off, <span class="bool-val">false</span>),
+                })
+            );
+
+            <span class="kw">let </span>(len, <span class="kw">_</span>) =
+                pipe.server.send(<span class="kw-2">&amp;mut </span>buf[..MAX_TEST_PACKET_SIZE]).unwrap();
+
+            <span class="kw">let </span>frames =
+                testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+            <span class="kw">let </span>stream = frames.first().unwrap();
+
+            <span class="macro">assert_eq!</span>(stream, <span class="kw-2">&amp;</span>frame::Frame::Stream {
+                stream_id: <span class="number">4</span>,
+                data: stream::RangeBuf::from(<span class="kw-2">&amp;</span>out, off, <span class="bool-val">false</span>),
+            });
+
+            off = <span class="kw">match </span>stream {
+                frame::Frame::Stream { data, .. } =&gt; data.max_off(),
+
+                <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+            };
+        }
+
+        <span class="comment">// Final is stream 0.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>off = <span class="number">0</span>;
+
+        <span class="kw">for _ in </span><span class="number">1</span>..=<span class="number">3 </span>{
+            <span class="kw">let </span>(len, <span class="kw">_</span>) =
+                pipe.server.send(<span class="kw-2">&amp;mut </span>buf[..MAX_TEST_PACKET_SIZE]).unwrap();
+
+            <span class="kw">let </span>frames =
+                testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+            <span class="kw">let </span>stream = frames.first().unwrap();
+
+            <span class="macro">assert_eq!</span>(stream, <span class="kw-2">&amp;</span>frame::Frame::Stream {
+                stream_id: <span class="number">0</span>,
+                data: stream::RangeBuf::from(<span class="kw-2">&amp;</span>out, off, <span class="bool-val">false</span>),
+            });
+
+            off = <span class="kw">match </span>stream {
+                frame::Frame::Stream { data, .. } =&gt; data.max_off(),
+
+                <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+            };
+        }
+
+        <span class="macro">assert_eq!</span>(pipe.server.send(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that changing a stream's priority is correctly propagated.
+    </span><span class="kw">fn </span>stream_reprioritize() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">0</span>);
+        config.set_initial_max_streams_bidi(<span class="number">5</span>);
+        config.set_initial_max_streams_uni(<span class="number">0</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">12</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">1</span>];
+
+        pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.server.stream_priority(<span class="number">0</span>, <span class="number">255</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(()));
+        pipe.server.stream_send(<span class="number">0</span>, <span class="string">b"b"</span>, <span class="bool-val">false</span>).unwrap();
+
+        pipe.server.stream_recv(<span class="number">12</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.server.stream_priority(<span class="number">12</span>, <span class="number">42</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(()));
+        pipe.server.stream_send(<span class="number">12</span>, <span class="string">b"b"</span>, <span class="bool-val">false</span>).unwrap();
+
+        pipe.server.stream_recv(<span class="number">8</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.server.stream_priority(<span class="number">8</span>, <span class="number">10</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(()));
+        pipe.server.stream_send(<span class="number">8</span>, <span class="string">b"b"</span>, <span class="bool-val">false</span>).unwrap();
+
+        pipe.server.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.server.stream_priority(<span class="number">4</span>, <span class="number">42</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(()));
+        pipe.server.stream_send(<span class="number">4</span>, <span class="string">b"b"</span>, <span class="bool-val">false</span>).unwrap();
+
+        <span class="comment">// Stream 0 is re-prioritized!!!
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_priority(<span class="number">0</span>, <span class="number">20</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// First is stream 8.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.server.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            frames.first(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::Stream {
+                stream_id: <span class="number">8</span>,
+                data: stream::RangeBuf::from(<span class="string">b"b"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            })
+        );
+
+        <span class="comment">// Then is stream 0.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.server.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            frames.first(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::Stream {
+                stream_id: <span class="number">0</span>,
+                data: stream::RangeBuf::from(<span class="string">b"b"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            })
+        );
+
+        <span class="comment">// Then are stream 12 and 4, with the same priority.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.server.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            frames.first(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::Stream {
+                stream_id: <span class="number">12</span>,
+                data: stream::RangeBuf::from(<span class="string">b"b"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            })
+        );
+
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.server.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            frames.first(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::Stream {
+                stream_id: <span class="number">4</span>,
+                data: stream::RangeBuf::from(<span class="string">b"b"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            })
+        );
+
+        <span class="macro">assert_eq!</span>(pipe.server.send(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that streams and datagrams are correctly scheduled.
+    </span><span class="kw">fn </span>stream_datagram_priority() {
+        <span class="comment">// Limit 1-RTT packet size to avoid congestion control interference.
+        </span><span class="kw">const </span>MAX_TEST_PACKET_SIZE: usize = <span class="number">540</span>;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">1_000_000</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">1_000_000</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">1_000_000</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">0</span>);
+        config.set_initial_max_streams_bidi(<span class="number">100</span>);
+        config.set_initial_max_streams_uni(<span class="number">0</span>);
+        config.enable_dgram(<span class="bool-val">true</span>, <span class="number">10</span>, <span class="number">10</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">1</span>];
+
+        <span class="kw">let </span>out = [<span class="string">b'b'</span>; <span class="number">500</span>];
+
+        <span class="comment">// Server prioritizes Stream 0 and 4 with the same urgency with
+        // incremental, meaning the frames should be sent in round-robin
+        // fashion. It also sends DATAGRAMS which are always interleaved with
+        // STREAM frames. So we'll expect a mix of frame types regardless
+        // of the order that the application writes things in.
+
+        </span>pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.server.stream_priority(<span class="number">0</span>, <span class="number">255</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(()));
+        pipe.server.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+        pipe.server.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+        pipe.server.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_priority(<span class="number">4</span>, <span class="number">255</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(()));
+        pipe.server.stream_send(<span class="number">4</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+        pipe.server.stream_send(<span class="number">4</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+        pipe.server.stream_send(<span class="number">4</span>, <span class="kw-2">&amp;</span>out, <span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">for _ in </span><span class="number">1</span>..=<span class="number">6 </span>{
+            <span class="macro">assert_eq!</span>(pipe.server.dgram_send(<span class="kw-2">&amp;</span>out), <span class="prelude-val">Ok</span>(()));
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>off_0 = <span class="number">0</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>off_4 = <span class="number">0</span>;
+
+        <span class="kw">for _ in </span><span class="number">1</span>..=<span class="number">3 </span>{
+            <span class="comment">// DATAGRAM
+            </span><span class="kw">let </span>(len, <span class="kw">_</span>) =
+                pipe.server.send(<span class="kw-2">&amp;mut </span>buf[..MAX_TEST_PACKET_SIZE]).unwrap();
+
+            <span class="kw">let </span>frames =
+                testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+            <span class="kw">let </span><span class="kw-2">mut </span>frame_iter = frames.iter();
+
+            <span class="macro">assert_eq!</span>(frame_iter.next().unwrap(), <span class="kw-2">&amp;</span>frame::Frame::Datagram {
+                data: out.into()
+            });
+            <span class="macro">assert_eq!</span>(frame_iter.next(), <span class="prelude-val">None</span>);
+
+            <span class="comment">// STREAM 0
+            </span><span class="kw">let </span>(len, <span class="kw">_</span>) =
+                pipe.server.send(<span class="kw-2">&amp;mut </span>buf[..MAX_TEST_PACKET_SIZE]).unwrap();
+
+            <span class="kw">let </span>frames =
+                testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+            <span class="kw">let </span><span class="kw-2">mut </span>frame_iter = frames.iter();
+            <span class="kw">let </span>stream = frame_iter.next().unwrap();
+
+            <span class="macro">assert_eq!</span>(stream, <span class="kw-2">&amp;</span>frame::Frame::Stream {
+                stream_id: <span class="number">0</span>,
+                data: stream::RangeBuf::from(<span class="kw-2">&amp;</span>out, off_0, <span class="bool-val">false</span>),
+            });
+
+            off_0 = <span class="kw">match </span>stream {
+                frame::Frame::Stream { data, .. } =&gt; data.max_off(),
+
+                <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+            };
+            <span class="macro">assert_eq!</span>(frame_iter.next(), <span class="prelude-val">None</span>);
+
+            <span class="comment">// DATAGRAM
+            </span><span class="kw">let </span>(len, <span class="kw">_</span>) =
+                pipe.server.send(<span class="kw-2">&amp;mut </span>buf[..MAX_TEST_PACKET_SIZE]).unwrap();
+
+            <span class="kw">let </span>frames =
+                testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+            <span class="kw">let </span><span class="kw-2">mut </span>frame_iter = frames.iter();
+
+            <span class="macro">assert_eq!</span>(frame_iter.next().unwrap(), <span class="kw-2">&amp;</span>frame::Frame::Datagram {
+                data: out.into()
+            });
+            <span class="macro">assert_eq!</span>(frame_iter.next(), <span class="prelude-val">None</span>);
+
+            <span class="comment">// STREAM 4
+            </span><span class="kw">let </span>(len, <span class="kw">_</span>) =
+                pipe.server.send(<span class="kw-2">&amp;mut </span>buf[..MAX_TEST_PACKET_SIZE]).unwrap();
+
+            <span class="kw">let </span>frames =
+                testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+            <span class="kw">let </span><span class="kw-2">mut </span>frame_iter = frames.iter();
+            <span class="kw">let </span>stream = frame_iter.next().unwrap();
+
+            <span class="macro">assert_eq!</span>(stream, <span class="kw-2">&amp;</span>frame::Frame::Stream {
+                stream_id: <span class="number">4</span>,
+                data: stream::RangeBuf::from(<span class="kw-2">&amp;</span>out, off_4, <span class="bool-val">false</span>),
+            });
+
+            off_4 = <span class="kw">match </span>stream {
+                frame::Frame::Stream { data, .. } =&gt; data.max_off(),
+
+                <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+            };
+            <span class="macro">assert_eq!</span>(frame_iter.next(), <span class="prelude-val">None</span>);
+        }
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that old data is retransmitted on PTO.
+    </span><span class="kw">fn </span>early_retransmit() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends stream data.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends more stream data, but packet is lost
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"b"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert!</span>(pipe.client.send(<span class="kw-2">&amp;mut </span>buf).is_ok());
+
+        <span class="comment">// Wait until PTO expires. Since the RTT is very low, wait a bit more.
+        </span><span class="kw">let </span>timer = pipe.client.timeout().unwrap();
+        std::thread::sleep(timer + time::Duration::from_millis(<span class="number">1</span>));
+
+        pipe.client.on_timeout();
+
+        <span class="kw">let </span>epoch = packet::Epoch::Application;
+        <span class="macro">assert_eq!</span>(
+            pipe.client
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .recovery
+                .loss_probes[epoch],
+            <span class="number">1</span>,
+        );
+
+        <span class="comment">// Client retransmits stream data in PTO probe.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(
+            pipe.client
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .recovery
+                .loss_probes[epoch],
+            <span class="number">0</span>,
+        );
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.server, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="comment">// Skip ACK frame.
+        </span>iter.next();
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::Stream {
+                stream_id: <span class="number">4</span>,
+                data: stream::RangeBuf::from(<span class="string">b"b"</span>, <span class="number">0</span>, <span class="bool-val">false</span>),
+            })
+        );
+        <span class="macro">assert_eq!</span>(pipe.client.stats().retrans, <span class="number">1</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that PTO probe packets are not coalesced together.
+    </span><span class="kw">fn </span>dont_coalesce_probes() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+
+        <span class="comment">// Client sends Initial packet.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">1200</span>);
+
+        <span class="comment">// Wait for PTO to expire.
+        </span><span class="kw">let </span>timer = pipe.client.timeout().unwrap();
+        std::thread::sleep(timer + time::Duration::from_millis(<span class="number">1</span>));
+
+        pipe.client.on_timeout();
+
+        <span class="kw">let </span>epoch = packet::Epoch::Initial;
+        <span class="macro">assert_eq!</span>(
+            pipe.client
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .recovery
+                .loss_probes[epoch],
+            <span class="number">1</span>,
+        );
+
+        <span class="comment">// Client sends PTO probe.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">1200</span>);
+        <span class="macro">assert_eq!</span>(
+            pipe.client
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .recovery
+                .loss_probes[epoch],
+            <span class="number">0</span>,
+        );
+
+        <span class="comment">// Wait for PTO to expire.
+        </span><span class="kw">let </span>timer = pipe.client.timeout().unwrap();
+        std::thread::sleep(timer + time::Duration::from_millis(<span class="number">1</span>));
+
+        pipe.client.on_timeout();
+
+        <span class="macro">assert_eq!</span>(
+            pipe.client
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .recovery
+                .loss_probes[epoch],
+            <span class="number">2</span>,
+        );
+
+        <span class="comment">// Client sends first PTO probe.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">1200</span>);
+        <span class="macro">assert_eq!</span>(
+            pipe.client
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .recovery
+                .loss_probes[epoch],
+            <span class="number">1</span>,
+        );
+
+        <span class="comment">// Client sends second PTO probe.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">1200</span>);
+        <span class="macro">assert_eq!</span>(
+            pipe.client
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .recovery
+                .loss_probes[epoch],
+            <span class="number">0</span>,
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>coalesce_padding_short() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+
+        <span class="comment">// Client sends first flight.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, MIN_CLIENT_INITIAL_LEN);
+        <span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+
+        <span class="comment">// Server sends first flight.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.server.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, MIN_CLIENT_INITIAL_LEN);
+        <span class="macro">assert_eq!</span>(pipe.client_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.server.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.client_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+
+        <span class="comment">// Client sends stream data.
+        </span><span class="macro">assert!</span>(pipe.client.is_established());
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"hello"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+
+        <span class="comment">// Client sends second flight.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, MIN_CLIENT_INITIAL_LEN);
+        <span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+
+        <span class="comment">// None of the sent packets should have been dropped.
+        </span><span class="macro">assert_eq!</span>(pipe.client.sent_count, pipe.server.recv_count);
+        <span class="macro">assert_eq!</span>(pipe.server.sent_count, pipe.client.recv_count);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that client avoids handshake deadlock by arming PTO.
+    </span><span class="kw">fn </span>handshake_anti_deadlock() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert-big.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_server_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+
+        <span class="macro">assert!</span>(!pipe.client.handshake_status().has_handshake_keys);
+        <span class="macro">assert!</span>(!pipe.client.handshake_status().peer_verified_address);
+        <span class="macro">assert!</span>(!pipe.server.handshake_status().has_handshake_keys);
+        <span class="macro">assert!</span>(pipe.server.handshake_status().peer_verified_address);
+
+        <span class="comment">// Client sends padded Initial.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">1200</span>);
+
+        <span class="comment">// Server receives client's Initial and sends own Initial and Handshake
+        // until it's blocked by the anti-amplification limit.
+        </span><span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+        <span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).unwrap();
+
+        <span class="macro">assert!</span>(!pipe.client.handshake_status().has_handshake_keys);
+        <span class="macro">assert!</span>(!pipe.client.handshake_status().peer_verified_address);
+        <span class="macro">assert!</span>(pipe.server.handshake_status().has_handshake_keys);
+        <span class="macro">assert!</span>(pipe.server.handshake_status().peer_verified_address);
+
+        <span class="comment">// Client receives the server flight and sends Handshake ACK, but it is
+        // lost.
+        </span>testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.client, flight).unwrap();
+        testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).unwrap();
+
+        <span class="macro">assert!</span>(pipe.client.handshake_status().has_handshake_keys);
+        <span class="macro">assert!</span>(!pipe.client.handshake_status().peer_verified_address);
+        <span class="macro">assert!</span>(pipe.server.handshake_status().has_handshake_keys);
+        <span class="macro">assert!</span>(pipe.server.handshake_status().peer_verified_address);
+
+        <span class="comment">// Make sure client's PTO timer is armed.
+        </span><span class="macro">assert!</span>(pipe.client.timeout().is_some());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that packets with corrupted type (from Handshake to Initial) are
+    /// properly ignored.
+    </span><span class="kw">fn </span>handshake_packet_type_corruption() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+
+        <span class="comment">// Client sends padded Initial.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">1200</span>);
+
+        <span class="comment">// Server receives client's Initial and sends own Initial and Handshake.
+        </span><span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+
+        <span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).unwrap();
+        testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.client, flight).unwrap();
+
+        <span class="comment">// Client sends Initial packet with ACK.
+        </span><span class="kw">let </span>active_pid =
+            pipe.client.paths.get_active_path_id().expect(<span class="string">"no active"</span>);
+        <span class="kw">let </span>(ty, len) = pipe
+            .client
+            .send_single(<span class="kw-2">&amp;mut </span>buf, active_pid, <span class="bool-val">false</span>, time::Instant::now())
+            .unwrap();
+        <span class="macro">assert_eq!</span>(ty, Type::Initial);
+
+        <span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+
+        <span class="comment">// Client sends Handshake packet.
+        </span><span class="kw">let </span>(ty, len) = pipe
+            .client
+            .send_single(<span class="kw-2">&amp;mut </span>buf, active_pid, <span class="bool-val">false</span>, time::Instant::now())
+            .unwrap();
+        <span class="macro">assert_eq!</span>(ty, Type::Handshake);
+
+        <span class="comment">// Packet type is corrupted to Initial.
+        </span>buf[<span class="number">0</span>] &amp;= !(<span class="number">0x20</span>);
+
+        <span class="kw">let </span>hdr = Header::from_slice(<span class="kw-2">&amp;mut </span>buf[..len], <span class="number">0</span>).unwrap();
+        <span class="macro">assert_eq!</span>(hdr.ty, Type::Initial);
+
+        <span class="comment">// Server receives corrupted packet without returning an error.
+        </span><span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>dgram_send_fails_invalidstate() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(
+            pipe.client.dgram_send(<span class="string">b"hello, world"</span>),
+            <span class="prelude-val">Err</span>(Error::InvalidState)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>dgram_send_app_limited() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+        <span class="kw">let </span>send_buf = [<span class="number">0xcf</span>; <span class="number">1000</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">10</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.set_initial_max_streams_uni(<span class="number">3</span>);
+        config.enable_dgram(<span class="bool-val">true</span>, <span class="number">1000</span>, <span class="number">1000</span>);
+        config.set_max_recv_udp_payload_size(<span class="number">1200</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">for _ in </span><span class="number">0</span>..<span class="number">1000 </span>{
+            <span class="macro">assert_eq!</span>(pipe.client.dgram_send(<span class="kw-2">&amp;</span>send_buf), <span class="prelude-val">Ok</span>(()));
+        }
+
+        <span class="macro">assert!</span>(!pipe
+            .client
+            .paths
+            .get_active()
+            .expect(<span class="string">"no active"</span>)
+            .recovery
+            .app_limited());
+        <span class="macro">assert_eq!</span>(pipe.client.dgram_send_queue.byte_size(), <span class="number">1_000_000</span>);
+
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="macro">assert_ne!</span>(pipe.client.dgram_send_queue.byte_size(), <span class="number">0</span>);
+        <span class="macro">assert_ne!</span>(pipe.client.dgram_send_queue.byte_size(), <span class="number">1_000_000</span>);
+        <span class="macro">assert!</span>(!pipe
+            .client
+            .paths
+            .get_active()
+            .expect(<span class="string">"no active"</span>)
+            .recovery
+            .app_limited());
+
+        <span class="macro">assert_eq!</span>(pipe.server_recv(<span class="kw-2">&amp;mut </span>buf[..len]), <span class="prelude-val">Ok</span>(len));
+
+        <span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).unwrap();
+        testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.server, flight).unwrap();
+
+        <span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).unwrap();
+        testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.client, flight).unwrap();
+
+        <span class="macro">assert_ne!</span>(pipe.client.dgram_send_queue.byte_size(), <span class="number">0</span>);
+        <span class="macro">assert_ne!</span>(pipe.client.dgram_send_queue.byte_size(), <span class="number">1_000_000</span>);
+
+        <span class="macro">assert!</span>(!pipe
+            .client
+            .paths
+            .get_active()
+            .expect(<span class="string">"no active"</span>)
+            .recovery
+            .app_limited());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>dgram_single_datagram() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">10</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.set_initial_max_streams_uni(<span class="number">3</span>);
+        config.enable_dgram(<span class="bool-val">true</span>, <span class="number">10</span>, <span class="number">10</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.dgram_send(<span class="string">b"hello, world"</span>), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>result1 = pipe.server.dgram_recv(<span class="kw-2">&amp;mut </span>buf);
+        <span class="macro">assert_eq!</span>(result1, <span class="prelude-val">Ok</span>(<span class="number">12</span>));
+
+        <span class="kw">let </span>result2 = pipe.server.dgram_recv(<span class="kw-2">&amp;mut </span>buf);
+        <span class="macro">assert_eq!</span>(result2, <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>dgram_multiple_datagrams() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">10</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.set_initial_max_streams_uni(<span class="number">3</span>);
+        config.enable_dgram(<span class="bool-val">true</span>, <span class="number">2</span>, <span class="number">3</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.dgram_send_queue_len(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.dgram_send_queue_byte_size(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.client.dgram_send(<span class="string">b"hello, world"</span>), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.client.dgram_send(<span class="string">b"ciao, mondo"</span>), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.client.dgram_send(<span class="string">b"hola, mundo"</span>), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert!</span>(pipe.client.is_dgram_send_queue_full());
+
+        <span class="macro">assert_eq!</span>(pipe.client.dgram_send_queue_byte_size(), <span class="number">34</span>);
+
+        pipe.client
+            .dgram_purge_outgoing(|d: <span class="kw-2">&amp;</span>[u8]| -&gt; bool { d[<span class="number">0</span>] == <span class="string">b'c' </span>});
+
+        <span class="macro">assert_eq!</span>(pipe.client.dgram_send_queue_len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.dgram_send_queue_byte_size(), <span class="number">23</span>);
+        <span class="macro">assert!</span>(!pipe.client.is_dgram_send_queue_full());
+
+        <span class="comment">// Before packets exchanged, no dgrams on server receive side.
+        </span><span class="macro">assert_eq!</span>(pipe.server.dgram_recv_queue_len(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// After packets exchanged, no dgrams on client send side.
+        </span><span class="macro">assert_eq!</span>(pipe.client.dgram_send_queue_len(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.dgram_send_queue_byte_size(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.server.dgram_recv_queue_len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.dgram_recv_queue_byte_size(), <span class="number">23</span>);
+        <span class="macro">assert!</span>(pipe.server.is_dgram_recv_queue_full());
+
+        <span class="kw">let </span>result1 = pipe.server.dgram_recv(<span class="kw-2">&amp;mut </span>buf);
+        <span class="macro">assert_eq!</span>(result1, <span class="prelude-val">Ok</span>(<span class="number">12</span>));
+        <span class="macro">assert_eq!</span>(buf[<span class="number">0</span>], <span class="string">b'h'</span>);
+        <span class="macro">assert_eq!</span>(buf[<span class="number">1</span>], <span class="string">b'e'</span>);
+        <span class="macro">assert!</span>(!pipe.server.is_dgram_recv_queue_full());
+
+        <span class="kw">let </span>result2 = pipe.server.dgram_recv(<span class="kw-2">&amp;mut </span>buf);
+        <span class="macro">assert_eq!</span>(result2, <span class="prelude-val">Ok</span>(<span class="number">11</span>));
+        <span class="macro">assert_eq!</span>(buf[<span class="number">0</span>], <span class="string">b'h'</span>);
+        <span class="macro">assert_eq!</span>(buf[<span class="number">1</span>], <span class="string">b'o'</span>);
+
+        <span class="kw">let </span>result3 = pipe.server.dgram_recv(<span class="kw-2">&amp;mut </span>buf);
+        <span class="macro">assert_eq!</span>(result3, <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(pipe.server.dgram_recv_queue_len(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.dgram_recv_queue_byte_size(), <span class="number">0</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>dgram_send_queue_overflow() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">10</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.set_initial_max_streams_uni(<span class="number">3</span>);
+        config.enable_dgram(<span class="bool-val">true</span>, <span class="number">10</span>, <span class="number">2</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.dgram_send(<span class="string">b"hello, world"</span>), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.client.dgram_send(<span class="string">b"ciao, mondo"</span>), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.client.dgram_send(<span class="string">b"hola, mundo"</span>), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>result1 = pipe.server.dgram_recv(<span class="kw-2">&amp;mut </span>buf);
+        <span class="macro">assert_eq!</span>(result1, <span class="prelude-val">Ok</span>(<span class="number">12</span>));
+        <span class="macro">assert_eq!</span>(buf[<span class="number">0</span>], <span class="string">b'h'</span>);
+        <span class="macro">assert_eq!</span>(buf[<span class="number">1</span>], <span class="string">b'e'</span>);
+
+        <span class="kw">let </span>result2 = pipe.server.dgram_recv(<span class="kw-2">&amp;mut </span>buf);
+        <span class="macro">assert_eq!</span>(result2, <span class="prelude-val">Ok</span>(<span class="number">11</span>));
+        <span class="macro">assert_eq!</span>(buf[<span class="number">0</span>], <span class="string">b'c'</span>);
+        <span class="macro">assert_eq!</span>(buf[<span class="number">1</span>], <span class="string">b'i'</span>);
+
+        <span class="kw">let </span>result3 = pipe.server.dgram_recv(<span class="kw-2">&amp;mut </span>buf);
+        <span class="macro">assert_eq!</span>(result3, <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>dgram_recv_queue_overflow() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">10</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.set_initial_max_streams_uni(<span class="number">3</span>);
+        config.enable_dgram(<span class="bool-val">true</span>, <span class="number">2</span>, <span class="number">10</span>);
+        config.set_max_recv_udp_payload_size(<span class="number">1200</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.dgram_send(<span class="string">b"hello, world"</span>), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.client.dgram_send(<span class="string">b"ciao, mondo"</span>), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.client.dgram_send(<span class="string">b"hola, mundo"</span>), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>result1 = pipe.server.dgram_recv(<span class="kw-2">&amp;mut </span>buf);
+        <span class="macro">assert_eq!</span>(result1, <span class="prelude-val">Ok</span>(<span class="number">11</span>));
+        <span class="macro">assert_eq!</span>(buf[<span class="number">0</span>], <span class="string">b'c'</span>);
+        <span class="macro">assert_eq!</span>(buf[<span class="number">1</span>], <span class="string">b'i'</span>);
+
+        <span class="kw">let </span>result2 = pipe.server.dgram_recv(<span class="kw-2">&amp;mut </span>buf);
+        <span class="macro">assert_eq!</span>(result2, <span class="prelude-val">Ok</span>(<span class="number">11</span>));
+        <span class="macro">assert_eq!</span>(buf[<span class="number">0</span>], <span class="string">b'h'</span>);
+        <span class="macro">assert_eq!</span>(buf[<span class="number">1</span>], <span class="string">b'o'</span>);
+
+        <span class="kw">let </span>result3 = pipe.server.dgram_recv(<span class="kw-2">&amp;mut </span>buf);
+        <span class="macro">assert_eq!</span>(result3, <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>dgram_send_max_size() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; MAX_DGRAM_FRAME_SIZE <span class="kw">as </span>usize];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">10</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.set_initial_max_streams_uni(<span class="number">3</span>);
+        config.enable_dgram(<span class="bool-val">true</span>, <span class="number">10</span>, <span class="number">10</span>);
+        config.set_max_recv_udp_payload_size(<span class="number">1452</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+
+        <span class="comment">// Before handshake (before peer settings) we don't know max dgram size
+        </span><span class="macro">assert_eq!</span>(pipe.client.dgram_max_writable_len(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>max_dgram_size = pipe.client.dgram_max_writable_len().unwrap();
+
+        <span class="comment">// Tests use a 16-byte connection ID, so the max datagram frame payload
+        // size is (1200 byte-long packet - 40 bytes overhead)
+        </span><span class="macro">assert_eq!</span>(max_dgram_size, <span class="number">1160</span>);
+
+        <span class="kw">let </span>dgram_packet: Vec&lt;u8&gt; = <span class="macro">vec!</span>[<span class="number">42</span>; max_dgram_size];
+
+        <span class="macro">assert_eq!</span>(pipe.client.dgram_send(<span class="kw-2">&amp;</span>dgram_packet), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>result1 = pipe.server.dgram_recv(<span class="kw-2">&amp;mut </span>buf);
+        <span class="macro">assert_eq!</span>(result1, <span class="prelude-val">Ok</span>(max_dgram_size));
+
+        <span class="kw">let </span>result2 = pipe.server.dgram_recv(<span class="kw-2">&amp;mut </span>buf);
+        <span class="macro">assert_eq!</span>(result2, <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests is_readable check.
+    </span><span class="kw">fn </span>is_readable() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">10</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+        config.set_initial_max_streams_uni(<span class="number">3</span>);
+        config.enable_dgram(<span class="bool-val">true</span>, <span class="number">10</span>, <span class="number">10</span>);
+        config.set_max_recv_udp_payload_size(<span class="number">1452</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// No readable data.
+        </span><span class="macro">assert!</span>(!pipe.client.is_readable());
+        <span class="macro">assert!</span>(!pipe.server.is_readable());
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"aaaaa"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server received stream.
+        </span><span class="macro">assert!</span>(!pipe.client.is_readable());
+        <span class="macro">assert!</span>(pipe.server.is_readable());
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.stream_send(<span class="number">4</span>, <span class="string">b"aaaaaaaaaaaaaaa"</span>, <span class="bool-val">false</span>),
+            <span class="prelude-val">Ok</span>(<span class="number">15</span>)
+        );
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client received stream.
+        </span><span class="macro">assert!</span>(pipe.client.is_readable());
+        <span class="macro">assert!</span>(pipe.server.is_readable());
+
+        <span class="comment">// Client drains stream.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        pipe.client.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert!</span>(!pipe.client.is_readable());
+        <span class="macro">assert!</span>(pipe.server.is_readable());
+
+        <span class="comment">// Server shuts down stream.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_shutdown(<span class="number">4</span>, Shutdown::Read, <span class="number">0</span>), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert!</span>(!pipe.server.is_readable());
+
+        <span class="comment">// Server received dgram.
+        </span><span class="macro">assert_eq!</span>(pipe.client.dgram_send(<span class="string">b"dddddddddddddd"</span>), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert!</span>(!pipe.client.is_readable());
+        <span class="macro">assert!</span>(pipe.server.is_readable());
+
+        <span class="comment">// Client received dgram.
+        </span><span class="macro">assert_eq!</span>(pipe.server.dgram_send(<span class="string">b"dddddddddddddd"</span>), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert!</span>(pipe.client.is_readable());
+        <span class="macro">assert!</span>(pipe.server.is_readable());
+
+        <span class="comment">// Drain the dgram queues.
+        </span><span class="kw">let </span>r = pipe.server.dgram_recv(<span class="kw-2">&amp;mut </span>buf);
+        <span class="macro">assert_eq!</span>(r, <span class="prelude-val">Ok</span>(<span class="number">14</span>));
+        <span class="macro">assert!</span>(!pipe.server.is_readable());
+
+        <span class="kw">let </span>r = pipe.client.dgram_recv(<span class="kw-2">&amp;mut </span>buf);
+        <span class="macro">assert_eq!</span>(r, <span class="prelude-val">Ok</span>(<span class="number">14</span>));
+        <span class="macro">assert!</span>(!pipe.client.is_readable());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>close() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.close(<span class="bool-val">false</span>, <span class="number">0x1234</span>, <span class="string">b"hello?"</span>), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(
+            pipe.client.close(<span class="bool-val">false</span>, <span class="number">0x4321</span>, <span class="string">b"hello?"</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.server, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            frames.first(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::ConnectionClose {
+                error_code: <span class="number">0x1234</span>,
+                frame_type: <span class="number">0</span>,
+                reason: <span class="string">b"hello?"</span>.to_vec(),
+            })
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>app_close_by_client() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.close(<span class="bool-val">true</span>, <span class="number">0x1234</span>, <span class="string">b"hello!"</span>), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.close(<span class="bool-val">true</span>, <span class="number">0x4321</span>, <span class="string">b"hello!"</span>), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.client.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.server, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            frames.first(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::ApplicationClose {
+                error_code: <span class="number">0x1234</span>,
+                reason: <span class="string">b"hello!"</span>.to_vec(),
+            })
+        );
+    }
+
+    <span class="comment">// OpenSSL does not provide a straightforward interface to deal with custom
+    // off-load key signing.
+    </span><span class="attr">#[cfg(not(feature = <span class="string">"openssl"</span>))]
+    #[test]
+    </span><span class="kw">fn </span>app_close_by_server_during_handshake_private_key_failure() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        pipe.server.handshake.set_failing_private_key_method();
+
+        <span class="comment">// Client sends initial flight.
+        </span><span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).unwrap();
+        <span class="macro">assert_eq!</span>(
+            testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.server, flight),
+            <span class="prelude-val">Err</span>(Error::TlsFail)
+        );
+
+        <span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).unwrap();
+
+        <span class="comment">// Both connections are not established.
+        </span><span class="macro">assert!</span>(!pipe.server.is_established());
+        <span class="macro">assert!</span>(!pipe.client.is_established());
+
+        <span class="comment">// Connection should already be closed due the failure during key signing.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.server.close(<span class="bool-val">true</span>, <span class="number">123</span>, <span class="string">b"fail whale"</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+
+        testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.client, flight).unwrap();
+
+        <span class="comment">// Connection should already be closed due the failure during key signing.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.client.close(<span class="bool-val">true</span>, <span class="number">123</span>, <span class="string">b"fail whale"</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+
+        <span class="comment">// Connection is not established on the server / client (and never
+        // will be)
+        </span><span class="macro">assert!</span>(!pipe.server.is_established());
+        <span class="macro">assert!</span>(!pipe.client.is_established());
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.local_error(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>ConnectionError {
+                is_app: <span class="bool-val">false</span>,
+                error_code: <span class="number">0x01</span>,
+                reason: <span class="macro">vec!</span>[],
+            })
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.client.peer_error(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>ConnectionError {
+                is_app: <span class="bool-val">false</span>,
+                error_code: <span class="number">0x01</span>,
+                reason: <span class="macro">vec!</span>[],
+            })
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>app_close_by_server_during_handshake_not_established() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+
+        <span class="comment">// Client sends initial flight.
+        </span><span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).unwrap();
+        testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.server, flight).unwrap();
+
+        <span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).unwrap();
+
+        <span class="comment">// Both connections are not established.
+        </span><span class="macro">assert!</span>(!pipe.client.is_established() &amp;&amp; !pipe.server.is_established());
+
+        <span class="comment">// Server closes before connection is established.
+        </span>pipe.server.close(<span class="bool-val">true</span>, <span class="number">123</span>, <span class="string">b"fail whale"</span>).unwrap();
+
+        testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.client, flight).unwrap();
+
+        <span class="comment">// Connection is established on the client.
+        </span><span class="macro">assert!</span>(pipe.client.is_established());
+
+        <span class="comment">// Client sends after connection is established.
+        </span>pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"badauthtoken"</span>, <span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).unwrap();
+        testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.server, flight).unwrap();
+
+        <span class="comment">// Connection is not established on the server (and never will be)
+        </span><span class="macro">assert!</span>(!pipe.server.is_established());
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.local_error(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>ConnectionError {
+                is_app: <span class="bool-val">false</span>,
+                error_code: <span class="number">0x0c</span>,
+                reason: <span class="macro">vec!</span>[],
+            })
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.client.peer_error(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>ConnectionError {
+                is_app: <span class="bool-val">false</span>,
+                error_code: <span class="number">0x0c</span>,
+                reason: <span class="macro">vec!</span>[],
+            })
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>app_close_by_server_during_handshake_established() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+
+        <span class="comment">// Client sends initial flight.
+        </span><span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).unwrap();
+        testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.server, flight).unwrap();
+
+        <span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).unwrap();
+
+        <span class="comment">// Both connections are not established.
+        </span><span class="macro">assert!</span>(!pipe.client.is_established() &amp;&amp; !pipe.server.is_established());
+
+        testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.client, flight).unwrap();
+
+        <span class="comment">// Connection is established on the client.
+        </span><span class="macro">assert!</span>(pipe.client.is_established());
+
+        <span class="comment">// Client sends after connection is established.
+        </span>pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"badauthtoken"</span>, <span class="bool-val">true</span>).unwrap();
+
+        <span class="kw">let </span>flight = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).unwrap();
+        testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.server, flight).unwrap();
+
+        <span class="comment">// Connection is established on the server but the Handshake ACK has not
+        // been sent yet.
+        </span><span class="macro">assert!</span>(pipe.server.is_established());
+
+        <span class="comment">// Server closes after connection is established.
+        </span>pipe.server
+            .close(<span class="bool-val">true</span>, <span class="number">123</span>, <span class="string">b"Invalid authentication"</span>)
+            .unwrap();
+
+        <span class="comment">// Server sends Handshake ACK and then 1RTT CONNECTION_CLOSE.
+        </span><span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.local_error(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>ConnectionError {
+                is_app: <span class="bool-val">true</span>,
+                error_code: <span class="number">123</span>,
+                reason: <span class="string">b"Invalid authentication"</span>.to_vec()
+            })
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.client.peer_error(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>ConnectionError {
+                is_app: <span class="bool-val">true</span>,
+                error_code: <span class="number">123</span>,
+                reason: <span class="string">b"Invalid authentication"</span>.to_vec()
+            })
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>peer_error() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.server.close(<span class="bool-val">false</span>, <span class="number">0x1234</span>, <span class="string">b"hello?"</span>), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(
+            pipe.client.peer_error(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>ConnectionError {
+                is_app: <span class="bool-val">false</span>,
+                error_code: <span class="number">0x1234u64</span>,
+                reason: <span class="string">b"hello?"</span>.to_vec()
+            })
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>app_peer_error() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.server.close(<span class="bool-val">true</span>, <span class="number">0x1234</span>, <span class="string">b"hello!"</span>), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(
+            pipe.client.peer_error(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>ConnectionError {
+                is_app: <span class="bool-val">true</span>,
+                error_code: <span class="number">0x1234u64</span>,
+                reason: <span class="string">b"hello!"</span>.to_vec()
+            })
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>local_error() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.server.local_error(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.server.close(<span class="bool-val">true</span>, <span class="number">0x1234</span>, <span class="string">b"hello!"</span>), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.local_error(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>ConnectionError {
+                is_app: <span class="bool-val">true</span>,
+                error_code: <span class="number">0x1234u64</span>,
+                reason: <span class="string">b"hello!"</span>.to_vec()
+            })
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>update_max_datagram_size() {
+        <span class="kw">let </span><span class="kw-2">mut </span>client_scid = [<span class="number">0</span>; <span class="number">16</span>];
+        rand::rand_bytes(<span class="kw-2">&amp;mut </span>client_scid[..]);
+        <span class="kw">let </span>client_scid = ConnectionId::from_ref(<span class="kw-2">&amp;</span>client_scid);
+        <span class="kw">let </span>client_addr = <span class="string">"127.0.0.1:1234"</span>.parse().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>server_scid = [<span class="number">0</span>; <span class="number">16</span>];
+        rand::rand_bytes(<span class="kw-2">&amp;mut </span>server_scid[..]);
+        <span class="kw">let </span>server_scid = ConnectionId::from_ref(<span class="kw-2">&amp;</span>server_scid);
+        <span class="kw">let </span>server_addr = <span class="string">"127.0.0.1:4321"</span>.parse().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>client_config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        client_config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        client_config.set_max_recv_udp_payload_size(<span class="number">1200</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>server_config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        server_config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        server_config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        server_config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        server_config.verify_peer(<span class="bool-val">false</span>);
+        server_config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        <span class="comment">// Larger than the client
+        </span>server_config.set_max_send_udp_payload_size(<span class="number">1500</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe {
+            client: connect(
+                <span class="prelude-val">Some</span>(<span class="string">"quic.tech"</span>),
+                <span class="kw-2">&amp;</span>client_scid,
+                client_addr,
+                server_addr,
+                <span class="kw-2">&amp;mut </span>client_config,
+            )
+            .unwrap(),
+            server: accept(
+                <span class="kw-2">&amp;</span>server_scid,
+                <span class="prelude-val">None</span>,
+                server_addr,
+                client_addr,
+                <span class="kw-2">&amp;mut </span>server_config,
+            )
+            .unwrap(),
+        };
+
+        <span class="comment">// Before handshake
+        </span><span class="macro">assert_eq!</span>(
+            pipe.server
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .recovery
+                .max_datagram_size(),
+            <span class="number">1500</span>,
+        );
+
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// After handshake, max_datagram_size should match to client's
+        // max_recv_udp_payload_size which is smaller
+        </span><span class="macro">assert_eq!</span>(
+            pipe.server
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .recovery
+                .max_datagram_size(),
+            <span class="number">1200</span>,
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .recovery
+                .cwnd(),
+            <span class="number">12000</span>,
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that connection-level send capacity decreases as more stream data
+    /// is buffered.
+    </span><span class="kw">fn </span>send_capacity() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">100000</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">10000</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">10000</span>);
+        config.set_initial_max_streams_bidi(<span class="number">10</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"hello!"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">6</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"hello!"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">6</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"hello!"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">6</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">12</span>, <span class="string">b"hello!"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">6</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable().collect::&lt;Vec&lt;u64&gt;&gt;();
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">4</span>);
+
+        r.sort();
+
+        <span class="macro">assert_eq!</span>(r, [<span class="number">0</span>, <span class="number">4</span>, <span class="number">8</span>, <span class="number">12</span>]);
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>((<span class="number">6</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>((<span class="number">6</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">8</span>, <span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>((<span class="number">6</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">12</span>, <span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>((<span class="number">6</span>, <span class="bool-val">true</span>)));
+
+        <span class="macro">assert_eq!</span>(pipe.server.tx_cap, <span class="number">12000</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>buf[..<span class="number">5000</span>], <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5000</span>));
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">4</span>, <span class="kw-2">&amp;</span>buf[..<span class="number">5000</span>], <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5000</span>));
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">8</span>, <span class="kw-2">&amp;</span>buf[..<span class="number">5000</span>], <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">2000</span>));
+
+        <span class="comment">// No more connection send capacity.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.server.stream_send(<span class="number">12</span>, <span class="kw-2">&amp;</span>buf[..<span class="number">5000</span>], <span class="bool-val">false</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+        <span class="macro">assert_eq!</span>(pipe.server.tx_cap, <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+    }
+
+    <span class="attr">#[cfg(feature = <span class="string">"boringssl-boring-crate"</span>)]
+    #[test]
+    </span><span class="kw">fn </span>user_provided_boring_ctx() -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="comment">// Manually construct boring ssl ctx for server
+        </span><span class="kw">let </span><span class="kw-2">mut </span>server_tls_ctx_builder =
+            boring::ssl::SslContextBuilder::new(boring::ssl::SslMethod::tls())
+                .unwrap();
+        server_tls_ctx_builder
+            .set_certificate_chain_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        server_tls_ctx_builder
+            .set_private_key_file(
+                <span class="string">"examples/cert.key"</span>,
+                boring::ssl::SslFiletype::PEM,
+            )
+            .unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>server_config = Config::with_boring_ssl_ctx_builder(
+            <span class="kw">crate</span>::PROTOCOL_VERSION,
+            server_tls_ctx_builder,
+        )<span class="question-mark">?</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>client_config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION)<span class="question-mark">?</span>;
+        client_config.load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)<span class="question-mark">?</span>;
+        client_config.load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)<span class="question-mark">?</span>;
+
+        <span class="kw">for </span>config <span class="kw">in </span>[<span class="kw-2">&amp;mut </span>client_config, <span class="kw-2">&amp;mut </span>server_config] {
+            config.set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])<span class="question-mark">?</span>;
+            config.set_initial_max_data(<span class="number">30</span>);
+            config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+            config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+            config.set_initial_max_stream_data_uni(<span class="number">10</span>);
+            config.set_initial_max_streams_bidi(<span class="number">3</span>);
+            config.set_initial_max_streams_uni(<span class="number">3</span>);
+            config.set_max_idle_timeout(<span class="number">180_000</span>);
+            config.verify_peer(<span class="bool-val">false</span>);
+            config.set_ack_delay_exponent(<span class="number">8</span>);
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>client_scid = [<span class="number">0</span>; <span class="number">16</span>];
+        rand::rand_bytes(<span class="kw-2">&amp;mut </span>client_scid[..]);
+        <span class="kw">let </span>client_scid = ConnectionId::from_ref(<span class="kw-2">&amp;</span>client_scid);
+        <span class="kw">let </span>client_addr = <span class="string">"127.0.0.1:1234"</span>.parse().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>server_scid = [<span class="number">0</span>; <span class="number">16</span>];
+        rand::rand_bytes(<span class="kw-2">&amp;mut </span>server_scid[..]);
+        <span class="kw">let </span>server_scid = ConnectionId::from_ref(<span class="kw-2">&amp;</span>server_scid);
+        <span class="kw">let </span>server_addr = <span class="string">"127.0.0.1:4321"</span>.parse().unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe {
+            client: connect(
+                <span class="prelude-val">Some</span>(<span class="string">"quic.tech"</span>),
+                <span class="kw-2">&amp;</span>client_scid,
+                client_addr,
+                server_addr,
+                <span class="kw-2">&amp;mut </span>client_config,
+            )<span class="question-mark">?</span>,
+            server: accept(
+                <span class="kw-2">&amp;</span>server_scid,
+                <span class="prelude-val">None</span>,
+                server_addr,
+                client_addr,
+                <span class="kw-2">&amp;mut </span>server_config,
+            )<span class="question-mark">?</span>,
+        };
+
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that resetting a stream restores flow control for unsent data.
+    </span><span class="kw">fn </span>last_tx_data_larger_than_tx_data() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(PROTOCOL_VERSION).unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">12000</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">20000</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">20000</span>);
+        config.set_max_recv_udp_payload_size(<span class="number">1200</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_client_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client opens stream 4 and 8.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"a"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"b"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server reads stream data.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+        pipe.server.stream_recv(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>b).unwrap();
+
+        <span class="comment">// Server sends stream data close to cwnd (12000).
+        </span><span class="kw">let </span>buf = [<span class="number">0</span>; <span class="number">10000</span>];
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">4</span>, <span class="kw-2">&amp;</span>buf, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">10000</span>));
+
+        testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).unwrap();
+
+        <span class="comment">// Server buffers some data, until send capacity limit reached.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">1200</span>];
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">4</span>, <span class="kw-2">&amp;</span>buf, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1200</span>));
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">8</span>, <span class="kw-2">&amp;</span>buf, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">800</span>));
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">4</span>, <span class="kw-2">&amp;</span>buf, <span class="bool-val">false</span>), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="comment">// Wait for PTO to expire.
+        </span><span class="kw">let </span>timer = pipe.server.timeout().unwrap();
+        std::thread::sleep(timer + time::Duration::from_millis(<span class="number">1</span>));
+
+        pipe.server.on_timeout();
+
+        <span class="comment">// Server sends PTO probe (not limited to cwnd),
+        // to update last_tx_data.
+        </span><span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.server.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">1200</span>);
+
+        <span class="comment">// Client sends STOP_SENDING to decrease tx_data
+        // by unsent data. It will make last_tx_data &gt; tx_data
+        // and trigger #1232 bug.
+        </span><span class="kw">let </span>frames = [frame::Frame::StopSending {
+            stream_id: <span class="number">4</span>,
+            error_code: <span class="number">42</span>,
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+            .unwrap();
+    }
+
+    <span class="doccomment">/// Tests that when the client provides a new ConnectionId, it eventually
+    /// reaches the server and notifies the application.
+    </span><span class="attr">#[test]
+    </span><span class="kw">fn </span>send_connection_ids() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_active_connection_id_limit(<span class="number">3</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// So far, there should not have any QUIC event.
+        </span><span class="macro">assert_eq!</span>(pipe.client.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.scids_left(), <span class="number">2</span>);
+
+        <span class="kw">let </span>(scid, reset_token) = testing::create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.new_scid(<span class="kw-2">&amp;</span>scid, reset_token, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+
+        <span class="comment">// Let exchange packets over the connection.
+        </span><span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// At this point, the server should be notified that it has a new CID.
+        </span><span class="macro">assert_eq!</span>(pipe.server.available_dcids(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.scids_left(), <span class="number">1</span>);
+
+        <span class="comment">// Now, a second CID can be provided.
+        </span><span class="kw">let </span>(scid, reset_token) = testing::create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.new_scid(<span class="kw-2">&amp;</span>scid, reset_token, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">2</span>));
+
+        <span class="comment">// Let exchange packets over the connection.
+        </span><span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// At this point, the server should be notified that it has a new CID.
+        </span><span class="macro">assert_eq!</span>(pipe.server.available_dcids(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.scids_left(), <span class="number">0</span>);
+
+        <span class="comment">// If now the client tries to send another CID, it reports an error
+        // since it exceeds the limit of active CIDs.
+        </span><span class="kw">let </span>(scid, reset_token) = testing::create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert_eq!</span>(
+            pipe.client.new_scid(<span class="kw-2">&amp;</span>scid, reset_token, <span class="bool-val">false</span>),
+            <span class="prelude-val">Err</span>(Error::IdLimit),
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that NEW_CONNECTION_ID with zero-length CID are rejected.
+    </span><span class="kw">fn </span>connection_id_zero() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_active_connection_id_limit(<span class="number">2</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>frames = Vec::new();
+
+        <span class="comment">// Client adds a CID that is too short.
+        </span><span class="kw">let </span>(scid, reset_token) = testing::create_cid_and_reset_token(<span class="number">0</span>);
+
+        frames.push(frame::Frame::NewConnectionId {
+            seq_num: <span class="number">1</span>,
+            retire_prior_to: <span class="number">0</span>,
+            conn_id: scid.to_vec(),
+            reset_token: reset_token.to_be_bytes(),
+        });
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+
+        <span class="kw">let </span>written =
+            testing::encode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+                .unwrap();
+
+        <span class="kw">let </span>active_path = pipe.server.paths.get_active().unwrap();
+        <span class="kw">let </span>info = RecvInfo {
+            to: active_path.local_addr(),
+            from: active_path.peer_addr(),
+        };
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.recv(<span class="kw-2">&amp;mut </span>buf[..written], info),
+            <span class="prelude-val">Err</span>(Error::InvalidFrame)
+        );
+
+        <span class="kw">let </span>written = <span class="kw">match </span>pipe.server.send(<span class="kw-2">&amp;mut </span>buf) {
+            <span class="prelude-val">Ok</span>((write, <span class="kw">_</span>)) =&gt; write,
+
+            <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="macro">unreachable!</span>(),
+        };
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..written]).unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::ConnectionClose {
+                error_code: <span class="number">0x7</span>,
+                frame_type: <span class="number">0</span>,
+                reason: Vec::new(),
+            })
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests that NEW_CONNECTION_ID with too long CID are rejected.
+    </span><span class="kw">fn </span>connection_id_invalid_max_len() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_active_connection_id_limit(<span class="number">2</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>frames = Vec::new();
+
+        <span class="comment">// Client adds a CID that is too long.
+        </span><span class="kw">let </span>(scid, reset_token) =
+            testing::create_cid_and_reset_token(MAX_CONN_ID_LEN + <span class="number">1</span>);
+
+        frames.push(frame::Frame::NewConnectionId {
+            seq_num: <span class="number">1</span>,
+            retire_prior_to: <span class="number">0</span>,
+            conn_id: scid.to_vec(),
+            reset_token: reset_token.to_be_bytes(),
+        });
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+
+        <span class="kw">let </span>written =
+            testing::encode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+                .unwrap();
+
+        <span class="kw">let </span>active_path = pipe.server.paths.get_active().unwrap();
+        <span class="kw">let </span>info = RecvInfo {
+            to: active_path.local_addr(),
+            from: active_path.peer_addr(),
+        };
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.recv(<span class="kw-2">&amp;mut </span>buf[..written], info),
+            <span class="prelude-val">Err</span>(Error::InvalidFrame)
+        );
+
+        <span class="kw">let </span>written = <span class="kw">match </span>pipe.server.send(<span class="kw-2">&amp;mut </span>buf) {
+            <span class="prelude-val">Ok</span>((write, <span class="kw">_</span>)) =&gt; write,
+
+            <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="macro">unreachable!</span>(),
+        };
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..written]).unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::ConnectionClose {
+                error_code: <span class="number">0x7</span>,
+                frame_type: <span class="number">0</span>,
+                reason: Vec::new(),
+            })
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Exercises the handling of NEW_CONNECTION_ID and RETIRE_CONNECTION_ID
+    /// frames.
+    </span><span class="kw">fn </span>connection_id_handling() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_active_connection_id_limit(<span class="number">2</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// So far, there should not have any QUIC event.
+        </span><span class="macro">assert_eq!</span>(pipe.client.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.scids_left(), <span class="number">1</span>);
+
+        <span class="kw">let </span>scid = pipe.client.source_id().into_owned();
+
+        <span class="kw">let </span>(scid_1, reset_token_1) = testing::create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.new_scid(<span class="kw-2">&amp;</span>scid_1, reset_token_1, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+
+        <span class="comment">// Let exchange packets over the connection.
+        </span><span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// At this point, the server should be notified that it has a new CID.
+        </span><span class="macro">assert_eq!</span>(pipe.server.available_dcids(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.scids_left(), <span class="number">0</span>);
+
+        <span class="comment">// Now we assume that the client wants to advertise more source
+        // Connection IDs than the advertised limit. This is valid if it
+        // requests its peer to retire enough Connection IDs to fit within the
+        // limits.
+
+        </span><span class="kw">let </span>(scid_2, reset_token_2) = testing::create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.new_scid(<span class="kw-2">&amp;</span>scid_2, reset_token_2, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">2</span>));
+
+        <span class="comment">// Let exchange packets over the connection.
+        </span><span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// At this point, the server still have a spare DCID.
+        </span><span class="macro">assert_eq!</span>(pipe.server.available_dcids(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Client should have received a retired notification.
+        </span><span class="macro">assert_eq!</span>(pipe.client.retired_scid_next(), <span class="prelude-val">Some</span>(scid));
+        <span class="macro">assert_eq!</span>(pipe.client.retired_scid_next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.client.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.scids_left(), <span class="number">0</span>);
+
+        <span class="comment">// The active Destination Connection ID of the server should now be the
+        // one with sequence number 1.
+        </span><span class="macro">assert_eq!</span>(pipe.server.destination_id(), scid_1);
+
+        <span class="comment">// Now tries to experience CID retirement. If the server tries to remove
+        // non-existing DCIDs, it fails.
+        </span><span class="macro">assert_eq!</span>(pipe.server.retire_dcid(<span class="number">0</span>), <span class="prelude-val">Err</span>(Error::InvalidState));
+        <span class="macro">assert_eq!</span>(pipe.server.retire_dcid(<span class="number">3</span>), <span class="prelude-val">Err</span>(Error::InvalidState));
+
+        <span class="comment">// Now it removes DCID with sequence 1.
+        </span><span class="macro">assert_eq!</span>(pipe.server.retire_dcid(<span class="number">1</span>), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Let exchange packets over the connection.
+        </span><span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.retired_scid_next(), <span class="prelude-val">Some</span>(scid_1));
+        <span class="macro">assert_eq!</span>(pipe.client.retired_scid_next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.server.destination_id(), scid_2);
+        <span class="macro">assert_eq!</span>(pipe.server.available_dcids(), <span class="number">0</span>);
+
+        <span class="comment">// Trying to remove the last DCID triggers an error.
+        </span><span class="macro">assert_eq!</span>(pipe.server.retire_dcid(<span class="number">2</span>), <span class="prelude-val">Err</span>(Error::OutOfIdentifiers));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>lost_connection_id_frames() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_active_connection_id_limit(<span class="number">2</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>scid = pipe.client.source_id().into_owned();
+
+        <span class="kw">let </span>(scid_1, reset_token_1) = testing::create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.new_scid(<span class="kw-2">&amp;</span>scid_1, reset_token_1, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+
+        <span class="comment">// Packets are sent, but never received.
+        </span>testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).unwrap();
+
+        <span class="comment">// Wait until timer expires. Since the RTT is very low, wait a bit more.
+        </span><span class="kw">let </span>timer = pipe.client.timeout().unwrap();
+        std::thread::sleep(timer + time::Duration::from_millis(<span class="number">1</span>));
+
+        pipe.client.on_timeout();
+
+        <span class="comment">// Let exchange packets over the connection.
+        </span><span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// At this point, the server should be notified that it has a new CID.
+        </span><span class="macro">assert_eq!</span>(pipe.server.available_dcids(), <span class="number">1</span>);
+
+        <span class="comment">// Now the server retires the first Destination CID.
+        </span><span class="macro">assert_eq!</span>(pipe.server.retire_dcid(<span class="number">0</span>), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// But the packet never reaches the client.
+        </span>testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).unwrap();
+
+        <span class="comment">// Wait until timer expires. Since the RTT is very low, wait a bit more.
+        </span><span class="kw">let </span>timer = pipe.server.timeout().unwrap();
+        std::thread::sleep(timer + time::Duration::from_millis(<span class="number">1</span>));
+
+        pipe.server.on_timeout();
+
+        <span class="comment">// Let exchange packets over the connection.
+        </span><span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.client.retired_scid_next(), <span class="prelude-val">Some</span>(scid));
+        <span class="macro">assert_eq!</span>(pipe.client.retired_scid_next(), <span class="prelude-val">None</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>sending_duplicate_scids() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_active_connection_id_limit(<span class="number">3</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>(scid_1, reset_token_1) = testing::create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.new_scid(<span class="kw-2">&amp;</span>scid_1, reset_token_1, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Trying to send the same CID with a different reset token raises an
+        // InvalidState error.
+        </span><span class="kw">let </span>reset_token_2 = reset_token_1.wrapping_add(<span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(
+            pipe.client.new_scid(<span class="kw-2">&amp;</span>scid_1, reset_token_2, <span class="bool-val">false</span>),
+            <span class="prelude-val">Err</span>(Error::InvalidState),
+        );
+
+        <span class="comment">// Retrying to send the exact same CID with the same token returns the
+        // previously assigned CID seq, but without sending anything.
+        </span><span class="macro">assert_eq!</span>(pipe.client.new_scid(<span class="kw-2">&amp;</span>scid_1, reset_token_1, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert!</span>(!pipe.client.ids.has_new_scids());
+
+        <span class="comment">// Now retire this new CID.
+        </span><span class="macro">assert_eq!</span>(pipe.server.retire_dcid(<span class="number">1</span>), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// It is up to the application to ensure that a given SCID is not reused
+        // later.
+        </span><span class="macro">assert_eq!</span>(pipe.client.new_scid(<span class="kw-2">&amp;</span>scid_1, reset_token_1, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">2</span>));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Tests the limit to retired DCID sequence numbers.
+    </span><span class="kw">fn </span>connection_id_retire_limit() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_active_connection_id_limit(<span class="number">2</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// So far, there should not have any QUIC event.
+        </span><span class="macro">assert_eq!</span>(pipe.client.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.scids_left(), <span class="number">1</span>);
+
+        <span class="kw">let </span>(scid_1, reset_token_1) = testing::create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.new_scid(<span class="kw-2">&amp;</span>scid_1, reset_token_1, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+
+        <span class="comment">// Let exchange packets over the connection.
+        </span><span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// At this point, the server should be notified that it has a new CID.
+        </span><span class="macro">assert_eq!</span>(pipe.server.available_dcids(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.scids_left(), <span class="number">0</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>frames = Vec::new();
+
+        <span class="comment">// Client retires more than 3x the number of allowed active CIDs.
+        </span><span class="kw">for </span>i <span class="kw">in </span><span class="number">2</span>..=<span class="number">7 </span>{
+            <span class="kw">let </span>(scid, reset_token) = testing::create_cid_and_reset_token(<span class="number">16</span>);
+
+            frames.push(frame::Frame::NewConnectionId {
+                seq_num: i,
+                retire_prior_to: i,
+                conn_id: scid.to_vec(),
+                reset_token: reset_token.to_be_bytes(),
+            });
+        }
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+
+        <span class="kw">let </span>written =
+            testing::encode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+                .unwrap();
+
+        <span class="kw">let </span>active_path = pipe.server.paths.get_active().unwrap();
+        <span class="kw">let </span>info = RecvInfo {
+            to: active_path.local_addr(),
+            from: active_path.peer_addr(),
+        };
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.recv(<span class="kw-2">&amp;mut </span>buf[..written], info),
+            <span class="prelude-val">Err</span>(Error::IdLimit)
+        );
+
+        <span class="kw">let </span>written = <span class="kw">match </span>pipe.server.send(<span class="kw-2">&amp;mut </span>buf) {
+            <span class="prelude-val">Ok</span>((write, <span class="kw">_</span>)) =&gt; write,
+
+            <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="macro">unreachable!</span>(),
+        };
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..written]).unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::ConnectionClose {
+                error_code: <span class="number">0x9</span>,
+                frame_type: <span class="number">0</span>,
+                reason: Vec::new(),
+            })
+        );
+    }
+
+    <span class="comment">// Utility function.
+    </span><span class="kw">fn </span>pipe_with_exchanged_cids(
+        config: <span class="kw-2">&amp;mut </span>Config, client_scid_len: usize, server_scid_len: usize,
+        additional_cids: usize,
+    ) -&gt; testing::Pipe {
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config_and_scid_lengths(
+            config,
+            client_scid_len,
+            server_scid_len,
+        )
+        .unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>c_cids = Vec::new();
+        <span class="kw">let </span><span class="kw-2">mut </span>c_reset_tokens = Vec::new();
+        <span class="kw">let </span><span class="kw-2">mut </span>s_cids = Vec::new();
+        <span class="kw">let </span><span class="kw-2">mut </span>s_reset_tokens = Vec::new();
+
+        <span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..additional_cids {
+            <span class="kw">if </span>client_scid_len &gt; <span class="number">0 </span>{
+                <span class="kw">let </span>(c_cid, c_reset_token) =
+                    testing::create_cid_and_reset_token(client_scid_len);
+                c_cids.push(c_cid);
+                c_reset_tokens.push(c_reset_token);
+
+                <span class="macro">assert_eq!</span>(
+                    pipe.client.new_scid(<span class="kw-2">&amp;</span>c_cids[i], c_reset_tokens[i], <span class="bool-val">true</span>),
+                    <span class="prelude-val">Ok</span>(i <span class="kw">as </span>u64 + <span class="number">1</span>)
+                );
+            }
+
+            <span class="kw">if </span>server_scid_len &gt; <span class="number">0 </span>{
+                <span class="kw">let </span>(s_cid, s_reset_token) =
+                    testing::create_cid_and_reset_token(server_scid_len);
+                s_cids.push(s_cid);
+                s_reset_tokens.push(s_reset_token);
+                <span class="macro">assert_eq!</span>(
+                    pipe.server.new_scid(<span class="kw-2">&amp;</span>s_cids[i], s_reset_tokens[i], <span class="bool-val">true</span>),
+                    <span class="prelude-val">Ok</span>(i <span class="kw">as </span>u64 + <span class="number">1</span>)
+                );
+            }
+        }
+
+        <span class="comment">// Let exchange packets over the connection.
+        </span><span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">if </span>client_scid_len &gt; <span class="number">0 </span>{
+            <span class="macro">assert_eq!</span>(pipe.server.available_dcids(), additional_cids);
+        }
+
+        <span class="kw">if </span>server_scid_len &gt; <span class="number">0 </span>{
+            <span class="macro">assert_eq!</span>(pipe.client.available_dcids(), additional_cids);
+        }
+
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.path_event_next(), <span class="prelude-val">None</span>);
+
+        pipe
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>path_validation() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_active_connection_id_limit(<span class="number">2</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>server_addr = testing::Pipe::server_addr();
+        <span class="kw">let </span>client_addr_2 = <span class="string">"127.0.0.1:5678"</span>.parse().unwrap();
+
+        <span class="comment">// We cannot probe a new path if there are not enough identifiers.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.client.probe_path(client_addr_2, server_addr),
+            <span class="prelude-val">Err</span>(Error::OutOfIdentifiers)
+        );
+
+        <span class="kw">let </span>(c_cid, c_reset_token) = testing::create_cid_and_reset_token(<span class="number">16</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.client.new_scid(<span class="kw-2">&amp;</span>c_cid, c_reset_token, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+
+        <span class="kw">let </span>(s_cid, s_reset_token) = testing::create_cid_and_reset_token(<span class="number">16</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.new_scid(<span class="kw-2">&amp;</span>s_cid, s_reset_token, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+
+        <span class="comment">// We need to exchange the CIDs first.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.client.probe_path(client_addr_2, server_addr),
+            <span class="prelude-val">Err</span>(Error::OutOfIdentifiers)
+        );
+
+        <span class="comment">// Let exchange packets over the connection.
+        </span><span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.server.available_dcids(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.available_dcids(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(pipe.client.path_event_next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Now the path probing can work.
+        </span><span class="macro">assert_eq!</span>(pipe.client.probe_path(client_addr_2, server_addr), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+
+        <span class="comment">// But the server cannot probe a yet-unseen path.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.server.probe_path(server_addr, client_addr_2),
+            <span class="prelude-val">Err</span>(Error::InvalidState),
+        );
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// The path should be validated at some point.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.client.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::Validated(client_addr_2, server_addr)),
+        );
+        <span class="macro">assert_eq!</span>(pipe.client.path_event_next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// The server should be notified of this new path.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::New(server_addr, client_addr_2)),
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::Validated(server_addr, client_addr_2)),
+        );
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// The server can later probe the path again.
+        </span><span class="macro">assert_eq!</span>(pipe.server.probe_path(server_addr, client_addr_2), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+
+        <span class="comment">// This should not trigger any event at client side.
+        </span><span class="macro">assert_eq!</span>(pipe.client.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>losing_probing_packets() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_active_connection_id_limit(<span class="number">2</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = pipe_with_exchanged_cids(<span class="kw-2">&amp;mut </span>config, <span class="number">16</span>, <span class="number">16</span>, <span class="number">1</span>);
+
+        <span class="kw">let </span>server_addr = testing::Pipe::server_addr();
+        <span class="kw">let </span>client_addr_2 = <span class="string">"127.0.0.1:5678"</span>.parse().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.client.probe_path(client_addr_2, server_addr), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+
+        <span class="comment">// The client creates the PATH CHALLENGE, but it is lost.
+        </span>testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).unwrap();
+
+        <span class="comment">// Wait until probing timer expires. Since the RTT is very low,
+        // wait a bit more.
+        </span><span class="kw">let </span>probed_pid = pipe
+            .client
+            .paths
+            .path_id_from_addrs(<span class="kw-2">&amp;</span>(client_addr_2, server_addr))
+            .unwrap();
+        <span class="kw">let </span>probe_instant = pipe
+            .client
+            .paths
+            .get(probed_pid)
+            .unwrap()
+            .recovery
+            .loss_detection_timer()
+            .unwrap();
+        <span class="kw">let </span>timer = probe_instant.duration_since(time::Instant::now());
+        std::thread::sleep(timer + time::Duration::from_millis(<span class="number">1</span>));
+
+        pipe.client.on_timeout();
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// The path should be validated at some point.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.client.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::Validated(client_addr_2, server_addr))
+        );
+        <span class="macro">assert_eq!</span>(pipe.client.path_event_next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::New(server_addr, client_addr_2))
+        );
+        <span class="comment">// The path should be validated at some point.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::Validated(server_addr, client_addr_2))
+        );
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>failed_path_validation() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_active_connection_id_limit(<span class="number">2</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = pipe_with_exchanged_cids(<span class="kw-2">&amp;mut </span>config, <span class="number">16</span>, <span class="number">16</span>, <span class="number">1</span>);
+
+        <span class="kw">let </span>server_addr = testing::Pipe::server_addr();
+        <span class="kw">let </span>client_addr_2 = <span class="string">"127.0.0.1:5678"</span>.parse().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.client.probe_path(client_addr_2, server_addr), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+
+        <span class="kw">for _ in </span><span class="number">0</span>..MAX_PROBING_TIMEOUTS {
+            <span class="comment">// The client creates the PATH CHALLENGE, but it is always lost.
+            </span>testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).unwrap();
+
+            <span class="comment">// Wait until probing timer expires. Since the RTT is very low,
+            // wait a bit more.
+            </span><span class="kw">let </span>probed_pid = pipe
+                .client
+                .paths
+                .path_id_from_addrs(<span class="kw-2">&amp;</span>(client_addr_2, server_addr))
+                .unwrap();
+            <span class="kw">let </span>probe_instant = pipe
+                .client
+                .paths
+                .get(probed_pid)
+                .unwrap()
+                .recovery
+                .loss_detection_timer()
+                .unwrap();
+            <span class="kw">let </span>timer = probe_instant.duration_since(time::Instant::now());
+            std::thread::sleep(timer + time::Duration::from_millis(<span class="number">1</span>));
+
+            pipe.client.on_timeout();
+        }
+
+        <span class="macro">assert_eq!</span>(
+            pipe.client.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::FailedValidation(client_addr_2, server_addr)),
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>client_discard_unknown_address() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">10</span>);
+        config.set_initial_max_streams_uni(<span class="number">3</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server sends stream data.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">3</span>, <span class="string">b"a"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>flight =
+            testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).expect(<span class="string">"no packet"</span>);
+        <span class="comment">// Let's change the address info.
+        </span>flight
+            .iter_mut()
+            .for_each(|(<span class="kw">_</span>, si)| si.from = <span class="string">"127.0.0.1:9292"</span>.parse().unwrap());
+        <span class="macro">assert_eq!</span>(testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.client, flight), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.client.paths.len(), <span class="number">1</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>path_validation_limited_mtu() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_active_connection_id_limit(<span class="number">2</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = pipe_with_exchanged_cids(<span class="kw-2">&amp;mut </span>config, <span class="number">16</span>, <span class="number">16</span>, <span class="number">1</span>);
+
+        <span class="kw">let </span>server_addr = testing::Pipe::server_addr();
+        <span class="kw">let </span>client_addr_2 = <span class="string">"127.0.0.1:5678"</span>.parse().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.client.probe_path(client_addr_2, server_addr), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="comment">// Limited MTU of 1199 bytes for some reason.
+        </span>testing::process_flight(
+            <span class="kw-2">&amp;mut </span>pipe.server,
+            testing::emit_flight_with_max_buffer(
+                <span class="kw-2">&amp;mut </span>pipe.client,
+                <span class="number">1199</span>,
+                <span class="prelude-val">None</span>,
+                <span class="prelude-val">None</span>,
+            )
+            .expect(<span class="string">"no packet"</span>),
+        )
+        .expect(<span class="string">"error when processing client packets"</span>);
+        testing::process_flight(
+            <span class="kw-2">&amp;mut </span>pipe.client,
+            testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).expect(<span class="string">"no packet"</span>),
+        )
+        .expect(<span class="string">"error when processing client packets"</span>);
+        <span class="kw">let </span>probed_pid = pipe
+            .client
+            .paths
+            .path_id_from_addrs(<span class="kw-2">&amp;</span>(client_addr_2, server_addr))
+            .unwrap();
+        <span class="macro">assert!</span>(!pipe.client.paths.get(probed_pid).unwrap().validated(),);
+        <span class="macro">assert_eq!</span>(pipe.client.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="comment">// Now let the client probe at its MTU.
+        </span><span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert!</span>(pipe.client.paths.get(probed_pid).unwrap().validated());
+        <span class="macro">assert_eq!</span>(
+            pipe.client.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::Validated(client_addr_2, server_addr))
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>path_probing_dos() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_active_connection_id_limit(<span class="number">2</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = pipe_with_exchanged_cids(<span class="kw-2">&amp;mut </span>config, <span class="number">16</span>, <span class="number">16</span>, <span class="number">1</span>);
+
+        <span class="kw">let </span>server_addr = testing::Pipe::server_addr();
+        <span class="kw">let </span>client_addr_2 = <span class="string">"127.0.0.1:5678"</span>.parse().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.client.probe_path(client_addr_2, server_addr), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// The path should be validated at some point.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.client.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::Validated(client_addr_2, server_addr))
+        );
+        <span class="macro">assert_eq!</span>(pipe.client.path_event_next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// The server should be notified of this new path.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::New(server_addr, client_addr_2))
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::Validated(server_addr, client_addr_2))
+        );
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.server.paths.len(), <span class="number">2</span>);
+
+        <span class="comment">// Now forge a packet reusing the unverified path's CID over another
+        // 4-tuple.
+        </span><span class="macro">assert_eq!</span>(pipe.client.probe_path(client_addr_2, server_addr), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="kw">let </span>client_addr_3 = <span class="string">"127.0.0.1:9012"</span>.parse().unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>flight =
+            testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).expect(<span class="string">"no generated packet"</span>);
+        flight
+            .iter_mut()
+            .for_each(|(<span class="kw">_</span>, si)| si.from = client_addr_3);
+        testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.server, flight)
+            .expect(<span class="string">"failed to process"</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.paths.len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::ReusedSourceConnectionId(
+                <span class="number">1</span>,
+                (server_addr, client_addr_2),
+                (server_addr, client_addr_3)
+            ))
+        );
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>retiring_active_path_dcid() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_active_connection_id_limit(<span class="number">2</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = pipe_with_exchanged_cids(<span class="kw-2">&amp;mut </span>config, <span class="number">16</span>, <span class="number">16</span>, <span class="number">1</span>);
+        <span class="kw">let </span>server_addr = testing::Pipe::server_addr();
+        <span class="kw">let </span>client_addr_2 = <span class="string">"127.0.0.1:5678"</span>.parse().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.client.probe_path(client_addr_2, server_addr), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+
+        <span class="macro">assert_eq!</span>(pipe.client.retire_dcid(<span class="number">0</span>), <span class="prelude-val">Err</span>(Error::OutOfIdentifiers));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>send_on_path_test() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_initial_max_data(<span class="number">100000</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">100000</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">100000</span>);
+        config.set_initial_max_streams_bidi(<span class="number">2</span>);
+        config.set_active_connection_id_limit(<span class="number">4</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = pipe_with_exchanged_cids(<span class="kw-2">&amp;mut </span>config, <span class="number">16</span>, <span class="number">16</span>, <span class="number">3</span>);
+
+        <span class="kw">let </span>server_addr = testing::Pipe::server_addr();
+        <span class="kw">let </span>client_addr = testing::Pipe::client_addr();
+        <span class="kw">let </span>client_addr_2 = <span class="string">"127.0.0.1:5678"</span>.parse().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.client.probe_path(client_addr_2, server_addr), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+        <span class="comment">// There is nothing to send on the initial path.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.client.send_on_path(
+                <span class="kw-2">&amp;mut </span>buf,
+                <span class="prelude-val">Some</span>(client_addr),
+                <span class="prelude-val">Some</span>(server_addr)
+            ),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+
+        <span class="comment">// Client should send padded PATH_CHALLENGE.
+        </span><span class="kw">let </span>(sent, si) = pipe
+            .client
+            .send_on_path(<span class="kw-2">&amp;mut </span>buf, <span class="prelude-val">Some</span>(client_addr_2), <span class="prelude-val">Some</span>(server_addr))
+            .expect(<span class="string">"No error"</span>);
+        <span class="macro">assert_eq!</span>(sent, MIN_CLIENT_INITIAL_LEN);
+        <span class="macro">assert_eq!</span>(si.from, client_addr_2);
+        <span class="macro">assert_eq!</span>(si.to, server_addr);
+
+        <span class="kw">let </span>ri = RecvInfo {
+            to: si.to,
+            from: si.from,
+        };
+        <span class="macro">assert_eq!</span>(pipe.server.recv(<span class="kw-2">&amp;mut </span>buf[..sent], ri), <span class="prelude-val">Ok</span>(sent));
+
+        <span class="kw">let </span>stats = pipe.server.stats();
+        <span class="macro">assert_eq!</span>(stats.path_challenge_rx_count, <span class="number">1</span>);
+
+        <span class="comment">// A non-existing 4-tuple raises an InvalidState.
+        </span><span class="kw">let </span>client_addr_3 = <span class="string">"127.0.0.1:9012"</span>.parse().unwrap();
+        <span class="kw">let </span>server_addr_2 = <span class="string">"127.0.0.1:9876"</span>.parse().unwrap();
+        <span class="macro">assert_eq!</span>(
+            pipe.client.send_on_path(
+                <span class="kw-2">&amp;mut </span>buf,
+                <span class="prelude-val">Some</span>(client_addr_3),
+                <span class="prelude-val">Some</span>(server_addr)
+            ),
+            <span class="prelude-val">Err</span>(Error::InvalidState)
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.client.send_on_path(
+                <span class="kw-2">&amp;mut </span>buf,
+                <span class="prelude-val">Some</span>(client_addr),
+                <span class="prelude-val">Some</span>(server_addr_2)
+            ),
+            <span class="prelude-val">Err</span>(Error::InvalidState)
+        );
+
+        <span class="comment">// Let's introduce some additional path challenges and data exchange.
+        </span><span class="macro">assert_eq!</span>(pipe.client.probe_path(client_addr, server_addr_2), <span class="prelude-val">Ok</span>(<span class="number">2</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.probe_path(client_addr_3, server_addr), <span class="prelude-val">Ok</span>(<span class="number">3</span>));
+        <span class="comment">// Just to fit in two packets.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="kw-2">&amp;</span>buf[..<span class="number">1201</span>], <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">1201</span>));
+
+        <span class="comment">// PATH_CHALLENGE
+        </span><span class="kw">let </span>(sent, si) = pipe
+            .client
+            .send_on_path(<span class="kw-2">&amp;mut </span>buf, <span class="prelude-val">Some</span>(client_addr), <span class="prelude-val">None</span>)
+            .expect(<span class="string">"No error"</span>);
+        <span class="macro">assert_eq!</span>(sent, MIN_CLIENT_INITIAL_LEN);
+        <span class="macro">assert_eq!</span>(si.from, client_addr);
+        <span class="macro">assert_eq!</span>(si.to, server_addr_2);
+
+        <span class="kw">let </span>ri = RecvInfo {
+            to: si.to,
+            from: si.from,
+        };
+        <span class="macro">assert_eq!</span>(pipe.server.recv(<span class="kw-2">&amp;mut </span>buf[..sent], ri), <span class="prelude-val">Ok</span>(sent));
+
+        <span class="kw">let </span>stats = pipe.server.stats();
+        <span class="macro">assert_eq!</span>(stats.path_challenge_rx_count, <span class="number">2</span>);
+
+        <span class="comment">// STREAM frame on active path.
+        </span><span class="kw">let </span>(sent, si) = pipe
+            .client
+            .send_on_path(<span class="kw-2">&amp;mut </span>buf, <span class="prelude-val">Some</span>(client_addr), <span class="prelude-val">None</span>)
+            .expect(<span class="string">"No error"</span>);
+        <span class="macro">assert_eq!</span>(si.from, client_addr);
+        <span class="macro">assert_eq!</span>(si.to, server_addr);
+
+        <span class="kw">let </span>ri = RecvInfo {
+            to: si.to,
+            from: si.from,
+        };
+        <span class="macro">assert_eq!</span>(pipe.server.recv(<span class="kw-2">&amp;mut </span>buf[..sent], ri), <span class="prelude-val">Ok</span>(sent));
+
+        <span class="kw">let </span>stats = pipe.server.stats();
+        <span class="macro">assert_eq!</span>(stats.path_challenge_rx_count, <span class="number">2</span>);
+
+        <span class="comment">// PATH_CHALLENGE
+        </span><span class="kw">let </span>(sent, si) = pipe
+            .client
+            .send_on_path(<span class="kw-2">&amp;mut </span>buf, <span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(server_addr))
+            .expect(<span class="string">"No error"</span>);
+        <span class="macro">assert_eq!</span>(sent, MIN_CLIENT_INITIAL_LEN);
+        <span class="macro">assert_eq!</span>(si.from, client_addr_3);
+        <span class="macro">assert_eq!</span>(si.to, server_addr);
+
+        <span class="kw">let </span>ri = RecvInfo {
+            to: si.to,
+            from: si.from,
+        };
+        <span class="macro">assert_eq!</span>(pipe.server.recv(<span class="kw-2">&amp;mut </span>buf[..sent], ri), <span class="prelude-val">Ok</span>(sent));
+
+        <span class="kw">let </span>stats = pipe.server.stats();
+        <span class="macro">assert_eq!</span>(stats.path_challenge_rx_count, <span class="number">3</span>);
+
+        <span class="comment">// STREAM frame on active path.
+        </span><span class="kw">let </span>(sent, si) = pipe
+            .client
+            .send_on_path(<span class="kw-2">&amp;mut </span>buf, <span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(server_addr))
+            .expect(<span class="string">"No error"</span>);
+        <span class="macro">assert_eq!</span>(si.from, client_addr);
+        <span class="macro">assert_eq!</span>(si.to, server_addr);
+
+        <span class="kw">let </span>ri = RecvInfo {
+            to: si.to,
+            from: si.from,
+        };
+        <span class="macro">assert_eq!</span>(pipe.server.recv(<span class="kw-2">&amp;mut </span>buf[..sent], ri), <span class="prelude-val">Ok</span>(sent));
+
+        <span class="comment">// No more data to exchange leads to Error::Done.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.client.send_on_path(<span class="kw-2">&amp;mut </span>buf, <span class="prelude-val">Some</span>(client_addr), <span class="prelude-val">None</span>),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.client.send_on_path(<span class="kw-2">&amp;mut </span>buf, <span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(server_addr)),
+            <span class="prelude-val">Err</span>(Error::Done)
+        );
+
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>v1 = pipe.client.paths_iter(client_addr).collect::&lt;Vec&lt;<span class="kw">_</span>&gt;&gt;();
+        <span class="kw">let </span><span class="kw-2">mut </span>v2 = <span class="macro">vec!</span>[server_addr, server_addr_2];
+
+        v1.sort();
+        v2.sort();
+
+        <span class="macro">assert_eq!</span>(v1, v2);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>v1 = pipe.client.paths_iter(client_addr_2).collect::&lt;Vec&lt;<span class="kw">_</span>&gt;&gt;();
+        <span class="kw">let </span><span class="kw-2">mut </span>v2 = <span class="macro">vec!</span>[server_addr];
+
+        v1.sort();
+        v2.sort();
+
+        <span class="macro">assert_eq!</span>(v1, v2);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>v1 = pipe.client.paths_iter(client_addr_3).collect::&lt;Vec&lt;<span class="kw">_</span>&gt;&gt;();
+        <span class="kw">let </span><span class="kw-2">mut </span>v2 = <span class="macro">vec!</span>[server_addr];
+
+        v1.sort();
+        v2.sort();
+
+        <span class="macro">assert_eq!</span>(v1, v2);
+
+        <span class="kw">let </span>stats = pipe.server.stats();
+        <span class="macro">assert_eq!</span>(stats.path_challenge_rx_count, <span class="number">3</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>connection_migration() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_active_connection_id_limit(<span class="number">3</span>);
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">10</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = pipe_with_exchanged_cids(<span class="kw-2">&amp;mut </span>config, <span class="number">16</span>, <span class="number">16</span>, <span class="number">2</span>);
+
+        <span class="kw">let </span>server_addr = testing::Pipe::server_addr();
+        <span class="kw">let </span>client_addr_2 = <span class="string">"127.0.0.1:5678"</span>.parse().unwrap();
+        <span class="kw">let </span>client_addr_3 = <span class="string">"127.0.0.1:9012"</span>.parse().unwrap();
+        <span class="kw">let </span>client_addr_4 = <span class="string">"127.0.0.1:8908"</span>.parse().unwrap();
+
+        <span class="comment">// Case 1: the client first probes the new address, the server too, and
+        // then migrates.
+        </span><span class="macro">assert_eq!</span>(pipe.client.probe_path(client_addr_2, server_addr), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(
+            pipe.client.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::Validated(client_addr_2, server_addr))
+        );
+        <span class="macro">assert_eq!</span>(pipe.client.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::New(server_addr, client_addr_2))
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::Validated(server_addr, client_addr_2))
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.client.is_path_validated(client_addr_2, server_addr),
+            <span class="prelude-val">Ok</span>(<span class="bool-val">true</span>)
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server.is_path_validated(server_addr, client_addr_2),
+            <span class="prelude-val">Ok</span>(<span class="bool-val">true</span>)
+        );
+        <span class="comment">// The server can never initiates the connection migration.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.server.migrate(server_addr, client_addr_2),
+            <span class="prelude-val">Err</span>(Error::InvalidState)
+        );
+        <span class="macro">assert_eq!</span>(pipe.client.migrate(client_addr_2, server_addr), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"data"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(
+            pipe.client
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .local_addr(),
+            client_addr_2
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.client
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .peer_addr(),
+            server_addr
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::PeerMigrated(server_addr, client_addr_2))
+        );
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(
+            pipe.server
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .local_addr(),
+            server_addr
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .peer_addr(),
+            client_addr_2
+        );
+
+        <span class="comment">// Case 2: the client migrates on a path that was not previously
+        // validated, and has spare SCIDs/DCIDs to do so.
+        </span><span class="macro">assert_eq!</span>(pipe.client.migrate(client_addr_3, server_addr), <span class="prelude-val">Ok</span>(<span class="number">2</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"data"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(
+            pipe.client
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .local_addr(),
+            client_addr_3
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.client
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .peer_addr(),
+            server_addr
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::New(server_addr, client_addr_3))
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::Validated(server_addr, client_addr_3))
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::PeerMigrated(server_addr, client_addr_3))
+        );
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(
+            pipe.server
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .local_addr(),
+            server_addr
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .peer_addr(),
+            client_addr_3
+        );
+
+        <span class="comment">// Case 3: the client tries to migrate on the current active path.
+        // This is not an error, but it triggers nothing.
+        </span><span class="macro">assert_eq!</span>(pipe.client.migrate(client_addr_3, server_addr), <span class="prelude-val">Ok</span>(<span class="number">2</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"data"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(pipe.client.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(
+            pipe.client
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .local_addr(),
+            client_addr_3
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.client
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .peer_addr(),
+            server_addr
+        );
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(
+            pipe.server
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .local_addr(),
+            server_addr
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .peer_addr(),
+            client_addr_3
+        );
+
+        <span class="comment">// Case 4: the client tries to migrate on a path that was not previously
+        // validated, and has no spare SCIDs/DCIDs. Prevent active migration.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.client.migrate(client_addr_4, server_addr),
+            <span class="prelude-val">Err</span>(Error::OutOfIdentifiers)
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.client
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .local_addr(),
+            client_addr_3
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.client
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .peer_addr(),
+            server_addr
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>connection_migration_zero_length_cid() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_active_connection_id_limit(<span class="number">2</span>);
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">10</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = pipe_with_exchanged_cids(<span class="kw-2">&amp;mut </span>config, <span class="number">0</span>, <span class="number">16</span>, <span class="number">1</span>);
+
+        <span class="kw">let </span>server_addr = testing::Pipe::server_addr();
+        <span class="kw">let </span>client_addr_2 = <span class="string">"127.0.0.1:5678"</span>.parse().unwrap();
+
+        <span class="comment">// The client migrates on a path that was not previously
+        // validated, and has spare SCIDs/DCIDs to do so.
+        </span><span class="macro">assert_eq!</span>(pipe.client.migrate(client_addr_2, server_addr), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"data"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(
+            pipe.client
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .local_addr(),
+            client_addr_2
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.client
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .peer_addr(),
+            server_addr
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::New(server_addr, client_addr_2))
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::Validated(server_addr, client_addr_2))
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::PeerMigrated(server_addr, client_addr_2))
+        );
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(
+            pipe.server
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .local_addr(),
+            server_addr
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .peer_addr(),
+            client_addr_2
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>connection_migration_reordered_non_probing() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_active_connection_id_limit(<span class="number">2</span>);
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">10</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = pipe_with_exchanged_cids(<span class="kw-2">&amp;mut </span>config, <span class="number">16</span>, <span class="number">16</span>, <span class="number">1</span>);
+
+        <span class="kw">let </span>client_addr = testing::Pipe::client_addr();
+        <span class="kw">let </span>server_addr = testing::Pipe::server_addr();
+        <span class="kw">let </span>client_addr_2 = <span class="string">"127.0.0.1:5678"</span>.parse().unwrap();
+
+        <span class="macro">assert_eq!</span>(pipe.client.probe_path(client_addr_2, server_addr), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(
+            pipe.client.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::Validated(client_addr_2, server_addr))
+        );
+        <span class="macro">assert_eq!</span>(pipe.client.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::New(server_addr, client_addr_2))
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::Validated(server_addr, client_addr_2))
+        );
+        <span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// A first flight sent from secondary address.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"data"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">4</span>));
+        <span class="kw">let </span><span class="kw-2">mut </span>first = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).unwrap();
+        first.iter_mut().for_each(|(<span class="kw">_</span>, si)| si.from = client_addr_2);
+        <span class="comment">// A second one, but sent from the original one.
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"data"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">4</span>));
+        <span class="kw">let </span>second = testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).unwrap();
+        <span class="comment">// Second flight is received before first one.
+        </span><span class="macro">assert_eq!</span>(testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.server, second), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.server, first), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server does not perform connection migration because of packet
+        // reordering.
+        </span><span class="macro">assert_eq!</span>(pipe.server.path_event_next(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(
+            pipe.server
+                .paths
+                .get_active()
+                .expect(<span class="string">"no active"</span>)
+                .peer_addr(),
+            client_addr
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>resilience_against_migration_attack() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_active_connection_id_limit(<span class="number">3</span>);
+        config.set_initial_max_data(<span class="number">100000</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">100000</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">100000</span>);
+        config.set_initial_max_streams_bidi(<span class="number">2</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = pipe_with_exchanged_cids(<span class="kw-2">&amp;mut </span>config, <span class="number">16</span>, <span class="number">16</span>, <span class="number">1</span>);
+
+        <span class="kw">let </span>client_addr = testing::Pipe::client_addr();
+        <span class="kw">let </span>server_addr = testing::Pipe::server_addr();
+        <span class="kw">let </span>spoofed_client_addr = <span class="string">"127.0.0.1:6666"</span>.parse().unwrap();
+
+        <span class="kw">const </span>DATA_BYTES: usize = <span class="number">24000</span>;
+        <span class="kw">let </span>buf = [<span class="number">42</span>; DATA_BYTES];
+        <span class="kw">let </span><span class="kw-2">mut </span>recv_buf = [<span class="number">0</span>; DATA_BYTES];
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">1</span>, <span class="kw-2">&amp;</span>buf, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">12000</span>));
+        <span class="macro">assert_eq!</span>(
+            testing::process_flight(
+                <span class="kw-2">&amp;mut </span>pipe.client,
+                testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).unwrap()
+            ),
+            <span class="prelude-val">Ok</span>(())
+        );
+        <span class="kw">let </span>(rcv_data_1, <span class="kw">_</span>) = pipe.client.stream_recv(<span class="number">1</span>, <span class="kw-2">&amp;mut </span>recv_buf).unwrap();
+
+        <span class="comment">// Fake the source address of client.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>faked_addr_flight =
+            testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.client).unwrap();
+        faked_addr_flight
+            .iter_mut()
+            .for_each(|(<span class="kw">_</span>, si)| si.from = spoofed_client_addr);
+        <span class="macro">assert_eq!</span>(
+            testing::process_flight(<span class="kw-2">&amp;mut </span>pipe.server, faked_addr_flight),
+            <span class="prelude-val">Ok</span>(())
+        );
+        <span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">1</span>, <span class="kw-2">&amp;</span>buf[<span class="number">12000</span>..], <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">12000</span>));
+        <span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::ReusedSourceConnectionId(
+                <span class="number">0</span>,
+                (server_addr, client_addr),
+                (server_addr, spoofed_client_addr)
+            ))
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::New(server_addr, spoofed_client_addr))
+        );
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.is_path_validated(server_addr, client_addr),
+            <span class="prelude-val">Ok</span>(<span class="bool-val">true</span>)
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server
+                .is_path_validated(server_addr, spoofed_client_addr),
+            <span class="prelude-val">Ok</span>(<span class="bool-val">false</span>)
+        );
+
+        <span class="comment">// The client creates the PATH CHALLENGE, but it is always lost.
+        </span>testing::emit_flight(<span class="kw-2">&amp;mut </span>pipe.server).unwrap();
+
+        <span class="comment">// Wait until probing timer expires. Since the RTT is very low,
+        // wait a bit more.
+        </span><span class="kw">let </span>probed_pid = pipe
+            .server
+            .paths
+            .path_id_from_addrs(<span class="kw-2">&amp;</span>(server_addr, spoofed_client_addr))
+            .unwrap();
+        <span class="kw">let </span>probe_instant = pipe
+            .server
+            .paths
+            .get(probed_pid)
+            .unwrap()
+            .recovery
+            .loss_detection_timer()
+            .unwrap();
+        <span class="kw">let </span>timer = probe_instant.duration_since(time::Instant::now());
+        std::thread::sleep(timer + time::Duration::from_millis(<span class="number">1</span>));
+
+        pipe.server.on_timeout();
+
+        <span class="comment">// Because of the small ACK size, the server cannot send more to the
+        // client. Fallback on the previous active path.
+        </span><span class="macro">assert_eq!</span>(
+            pipe.server.path_event_next(),
+            <span class="prelude-val">Some</span>(PathEvent::FailedValidation(
+                server_addr,
+                spoofed_client_addr
+            ))
+        );
+
+        <span class="macro">assert_eq!</span>(
+            pipe.server.is_path_validated(server_addr, client_addr),
+            <span class="prelude-val">Ok</span>(<span class="bool-val">true</span>)
+        );
+        <span class="macro">assert_eq!</span>(
+            pipe.server
+                .is_path_validated(server_addr, spoofed_client_addr),
+            <span class="prelude-val">Ok</span>(<span class="bool-val">false</span>)
+        );
+
+        <span class="kw">let </span>server_active_path = pipe.server.paths.get_active().unwrap();
+        <span class="macro">assert_eq!</span>(server_active_path.local_addr(), server_addr);
+        <span class="macro">assert_eq!</span>(server_active_path.peer_addr(), client_addr);
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+        <span class="kw">let </span>(rcv_data_2, fin) =
+            pipe.client.stream_recv(<span class="number">1</span>, <span class="kw-2">&amp;mut </span>recv_buf).unwrap();
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(rcv_data_1 + rcv_data_2, DATA_BYTES);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>consecutive_non_ack_eliciting() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Client sends a bunch of PING frames, causing server to ACK (ACKs aren't
+        // ack-eliciting)
+        </span><span class="kw">let </span>frames = [frame::Frame::Ping { mtu_probe: <span class="prelude-val">None </span>}];
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="kw">for _ in </span><span class="number">0</span>..<span class="number">24 </span>{
+            <span class="kw">let </span>len = pipe
+                .send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+                .unwrap();
+            <span class="macro">assert!</span>(len &gt; <span class="number">0</span>);
+
+            <span class="kw">let </span>frames =
+                testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+            <span class="macro">assert!</span>(
+                frames
+                    .iter()
+                    .all(|frame| <span class="macro">matches!</span>(frame, frame::Frame::ACK { .. })),
+                <span class="string">"ACK only"
+            </span>);
+        }
+
+        <span class="comment">// After 24 non-ack-eliciting, an ACK is explicitly elicited with a PING
+        </span><span class="kw">let </span>len = pipe
+            .send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+            .unwrap();
+        <span class="macro">assert!</span>(len &gt; <span class="number">0</span>);
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+        <span class="macro">assert!</span>(
+            frames
+                .iter()
+                .any(|frame| <span class="macro">matches!</span>(frame, frame::Frame::Ping {
+                    mtu_probe: <span class="prelude-val">None
+                </span>})),
+            <span class="string">"found a PING"
+        </span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>send_ack_eliciting_causes_ping() {
+        <span class="comment">// First establish a connection
+        </span><span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Queue a PING frame
+        </span>pipe.server.send_ack_eliciting().unwrap();
+
+        <span class="comment">// Make sure ping is sent
+        </span><span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">1500</span>];
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.server.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::Ping { mtu_probe: <span class="prelude-val">None </span>}));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>send_ack_eliciting_no_ping() {
+        <span class="comment">// First establish a connection
+        </span><span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::new().unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Queue a PING frame
+        </span>pipe.server.send_ack_eliciting().unwrap();
+
+        <span class="comment">// Send a stream frame, which is ACK-eliciting to make sure the ping is
+        // not sent
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">1</span>, <span class="string">b"a"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">1</span>));
+
+        <span class="comment">// Make sure ping is not sent
+        </span><span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">1500</span>];
+        <span class="kw">let </span>(len, <span class="kw">_</span>) = pipe.server.send(<span class="kw-2">&amp;mut </span>buf).unwrap();
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="macro">assert!</span>(<span class="macro">matches!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::Stream {
+                stream_id: <span class="number">1</span>,
+                data: <span class="kw">_
+            </span>})
+        ));
+        <span class="macro">assert!</span>(iter.next().is_none());
+    }
+
+    <span class="doccomment">/// Tests that streams do not keep being "writable" after being collected
+    /// on reset.
+    </span><span class="attr">#[test]
+    </span><span class="kw">fn </span>stop_sending_stream_send_after_reset_stream_ack() {
+        <span class="kw">let </span><span class="kw-2">mut </span>b = [<span class="number">0</span>; <span class="number">15</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.set_initial_max_data(<span class="number">999999999</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">30</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">30</span>);
+        config.set_initial_max_streams_bidi(<span class="number">1000</span>);
+        config.set_initial_max_streams_uni(<span class="number">0</span>);
+        config.verify_peer(<span class="bool-val">false</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="macro">assert_eq!</span>(pipe.server.streams.len(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.readable().len(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.writable().len(), <span class="number">0</span>);
+
+        <span class="comment">// Client opens a load of streams
+        </span><span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">0</span>, <span class="string">b"hello"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">4</span>, <span class="string">b"hello"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">8</span>, <span class="string">b"hello"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">12</span>, <span class="string">b"hello"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">16</span>, <span class="string">b"hello"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">20</span>, <span class="string">b"hello"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">24</span>, <span class="string">b"hello"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">28</span>, <span class="string">b"hello"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">32</span>, <span class="string">b"hello"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.client.stream_send(<span class="number">36</span>, <span class="string">b"hello"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server iterators are populated
+        </span><span class="kw">let </span><span class="kw-2">mut </span>r = pipe.server.readable();
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">8</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">12</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">16</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">20</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">24</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">28</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">32</span>));
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">Some</span>(<span class="number">36</span>));
+
+        <span class="macro">assert_eq!</span>(r.next(), <span class="prelude-val">None</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>w = pipe.server.writable();
+        <span class="macro">assert_eq!</span>(w.len(), <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">Some</span>(<span class="number">8</span>));
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">Some</span>(<span class="number">12</span>));
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">Some</span>(<span class="number">16</span>));
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">Some</span>(<span class="number">20</span>));
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">Some</span>(<span class="number">24</span>));
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">Some</span>(<span class="number">28</span>));
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">Some</span>(<span class="number">32</span>));
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">Some</span>(<span class="number">36</span>));
+        <span class="macro">assert_eq!</span>(w.next(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Read one stream
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_recv(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>b), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert!</span>(pipe.server.stream_finished(<span class="number">0</span>));
+
+        <span class="macro">assert_eq!</span>(pipe.server.readable().len(), <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.writable().len(), <span class="number">10</span>);
+
+        <span class="macro">assert_eq!</span>(pipe.server.stream_writable(<span class="number">0</span>, <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="bool-val">true</span>));
+
+        <span class="comment">// Server sends data on stream 0, until blocked.
+        </span><span class="kw">loop </span>{
+            <span class="kw">if </span>pipe.server.stream_send(<span class="number">0</span>, <span class="string">b"world"</span>, <span class="bool-val">false</span>) == <span class="prelude-val">Err</span>(Error::Done) {
+                <span class="kw">break</span>;
+            }
+
+            <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+        }
+
+        <span class="macro">assert_eq!</span>(pipe.server.writable().len(), <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.stream_writable(<span class="number">0</span>, <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="bool-val">true</span>));
+
+        <span class="comment">// Client sends STOP_SENDING.
+        </span><span class="kw">let </span>frames = [frame::Frame::StopSending {
+            stream_id: <span class="number">0</span>,
+            error_code: <span class="number">42</span>,
+        }];
+
+        <span class="kw">let </span>pkt_type = packet::Type::Short;
+        <span class="kw">let </span>len = pipe
+            .send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+            .unwrap();
+
+        <span class="comment">// Server sent a RESET_STREAM frame in response.
+        </span><span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>iter = frames.iter();
+
+        <span class="comment">// Skip ACK frame.
+        </span>iter.next();
+
+        <span class="macro">assert_eq!</span>(
+            iter.next(),
+            <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>frame::Frame::ResetStream {
+                stream_id: <span class="number">0</span>,
+                error_code: <span class="number">42</span>,
+                final_size: <span class="number">30</span>,
+            })
+        );
+
+        <span class="comment">// Stream 0 is now writable in order to make apps aware of STOP_SENDING
+        // via returning an error.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>w = pipe.server.writable();
+        <span class="macro">assert_eq!</span>(w.len(), <span class="number">10</span>);
+
+        <span class="macro">assert!</span>(w.any(|s| s == <span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(
+            pipe.server.stream_writable(<span class="number">0</span>, <span class="number">1</span>),
+            <span class="prelude-val">Err</span>(Error::StreamStopped(<span class="number">42</span>))
+        );
+
+        <span class="macro">assert_eq!</span>(pipe.server.writable().len(), <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(pipe.server.streams.len(), <span class="number">10</span>);
+
+        <span class="comment">// Client acks RESET_STREAM frame.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>ranges = ranges::RangeSet::default();
+        ranges.insert(<span class="number">0</span>..<span class="number">12</span>);
+
+        <span class="kw">let </span>frames = [frame::Frame::ACK {
+            ack_delay: <span class="number">15</span>,
+            ranges,
+            ecn_counts: <span class="prelude-val">None</span>,
+        }];
+
+        <span class="macro">assert_eq!</span>(pipe.send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+
+        <span class="comment">// Stream is collected on the server after RESET_STREAM is acked.
+        </span><span class="macro">assert_eq!</span>(pipe.server.streams.len(), <span class="number">9</span>);
+
+        <span class="comment">// Sending STOP_SENDING again shouldn't trigger RESET_STREAM again.
+        </span><span class="kw">let </span>frames = [frame::Frame::StopSending {
+            stream_id: <span class="number">0</span>,
+            error_code: <span class="number">42</span>,
+        }];
+
+        <span class="kw">let </span>len = pipe
+            .send_pkt_to_server(pkt_type, <span class="kw-2">&amp;</span>frames, <span class="kw-2">&amp;mut </span>buf)
+            .unwrap();
+
+        <span class="kw">let </span>frames =
+            testing::decode_pkt(<span class="kw-2">&amp;mut </span>pipe.client, <span class="kw-2">&amp;mut </span>buf[..len]).unwrap();
+
+        <span class="macro">assert_eq!</span>(frames.len(), <span class="number">1</span>);
+
+        <span class="kw">match </span>frames.first() {
+            <span class="prelude-val">Some</span>(frame::Frame::ACK { .. }) =&gt; (),
+
+            f =&gt; <span class="macro">panic!</span>(<span class="string">"expected ACK frame, got {:?}"</span>, f),
+        };
+
+        <span class="macro">assert_eq!</span>(pipe.server.streams.len(), <span class="number">9</span>);
+
+        <span class="comment">// Stream 0 has been collected and must not be writable anymore.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>w = pipe.server.writable();
+        <span class="macro">assert_eq!</span>(w.len(), <span class="number">9</span>);
+        <span class="macro">assert!</span>(!w.any(|s| s == <span class="number">0</span>));
+
+        <span class="comment">// If we called send before the client ACK of reset stream, it would
+        // have failed with StreamStopped.
+        </span><span class="macro">assert_eq!</span>(pipe.server.stream_send(<span class="number">0</span>, <span class="string">b"world"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Err</span>(Error::Done),);
+
+        <span class="comment">// Stream 0 is still not writable.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>w = pipe.server.writable();
+        <span class="macro">assert_eq!</span>(w.len(), <span class="number">9</span>);
+        <span class="macro">assert!</span>(!w.any(|s| s == <span class="number">0</span>));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>challenge_no_cids() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_active_connection_id_limit(<span class="number">4</span>);
+        config.set_initial_max_data(<span class="number">30</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">15</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">15</span>);
+        config.set_initial_max_stream_data_uni(<span class="number">10</span>);
+        config.set_initial_max_streams_bidi(<span class="number">3</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pipe =
+            testing::Pipe::with_config_and_scid_lengths(<span class="kw-2">&amp;mut </span>config, <span class="number">16</span>, <span class="number">16</span>)
+                .unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="comment">// Server send CIDs to client
+        </span><span class="kw">let </span><span class="kw-2">mut </span>server_cids = Vec::new();
+        <span class="kw">for _ in </span><span class="number">0</span>..<span class="number">2 </span>{
+            <span class="kw">let </span>(cid, reset_token) = testing::create_cid_and_reset_token(<span class="number">16</span>);
+            pipe.server
+                .new_scid(<span class="kw-2">&amp;</span>cid, reset_token, <span class="bool-val">true</span>)
+                .expect(<span class="string">"server issue cid"</span>);
+            server_cids.push(cid);
+        }
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>server_addr = testing::Pipe::server_addr();
+        <span class="kw">let </span>client_addr_2 = <span class="string">"127.0.0.1:5678"</span>.parse().unwrap();
+
+        <span class="comment">// Client probes path before sending CIDs (simulating race condition)
+        </span><span class="kw">let </span>frames = [frame::Frame::PathChallenge {
+            data: [<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>],
+        }];
+        <span class="kw">let </span><span class="kw-2">mut </span>pkt_buf = [<span class="number">0u8</span>; <span class="number">1500</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>pkt_buf);
+        <span class="kw">let </span>epoch = packet::Type::Short.to_epoch().unwrap();
+        <span class="kw">let </span>space = <span class="kw-2">&amp;mut </span>pipe.client.pkt_num_spaces[epoch];
+        <span class="kw">let </span>pn = space.next_pkt_num;
+        <span class="kw">let </span>pn_len = <span class="number">4</span>;
+
+        <span class="kw">let </span>hdr = Header {
+            ty: packet::Type::Short,
+            version: pipe.client.version,
+            dcid: server_cids[<span class="number">0</span>].clone(),
+            scid: ConnectionId::from_ref(<span class="kw-2">&amp;</span>[<span class="number">5</span>, <span class="number">4</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">1</span>]),
+            pkt_num: <span class="number">0</span>,
+            pkt_num_len: pn_len,
+            token: pipe.client.token.clone(),
+            versions: <span class="prelude-val">None</span>,
+            key_phase: pipe.client.key_phase,
+        };
+        hdr.to_bytes(<span class="kw-2">&amp;mut </span>b).expect(<span class="string">"encode header"</span>);
+        <span class="kw">let </span>payload_len = frames.iter().fold(<span class="number">0</span>, |acc, x| acc + x.wire_len());
+        b.put_u32(pn <span class="kw">as </span>u32).expect(<span class="string">"put pn"</span>);
+
+        <span class="kw">let </span>payload_offset = b.off();
+
+        <span class="kw">for </span>frame <span class="kw">in </span>frames {
+            frame.to_bytes(<span class="kw-2">&amp;mut </span>b).expect(<span class="string">"encode frames"</span>);
+        }
+
+        <span class="kw">let </span>aead = space.crypto_seal.as_ref().expect(<span class="string">"crypto seal"</span>);
+
+        <span class="kw">let </span>written = packet::encrypt_pkt(
+            <span class="kw-2">&amp;mut </span>b,
+            pn,
+            pn_len,
+            payload_len,
+            payload_offset,
+            <span class="prelude-val">None</span>,
+            aead,
+        )
+        .expect(<span class="string">"packet encrypt"</span>);
+        space.next_pkt_num += <span class="number">1</span>;
+
+        pipe.server
+            .recv(<span class="kw-2">&amp;mut </span>pkt_buf[..written], RecvInfo {
+                to: server_addr,
+                from: client_addr_2,
+            })
+            .expect(<span class="string">"server receive path challenge"</span>);
+
+        <span class="comment">// Show that the new path is not considered a destination path by quiche
+        </span><span class="macro">assert!</span>(!pipe
+            .server
+            .paths_iter(server_addr)
+            .any(|path| path == client_addr_2));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>successful_probe_pmtud() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_initial_max_data(<span class="number">100000</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">100000</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">100000</span>);
+        config.set_initial_max_streams_bidi(<span class="number">2</span>);
+        config.set_active_connection_id_limit(<span class="number">4</span>);
+        config.set_max_send_udp_payload_size(<span class="number">1350</span>);
+        config.set_max_recv_udp_payload_size(<span class="number">1350</span>);
+        config.discover_pmtu(<span class="bool-val">true</span>);
+
+        <span class="comment">// Perform initial handshake.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>server_addr = testing::Pipe::server_addr();
+        <span class="kw">let </span>client_addr = testing::Pipe::client_addr();
+        <span class="kw">let </span>pid_1 = pipe
+            .server
+            .paths
+            .path_id_from_addrs(<span class="kw-2">&amp;</span>(server_addr, client_addr))
+            .expect(<span class="string">"no such path"</span>);
+
+        <span class="comment">// Check that PMTU params are configured correctly
+        </span><span class="kw">let </span>pmtu_param = <span class="kw-2">&amp;mut </span>pipe.server.paths.get_mut(pid_1).unwrap().pmtud;
+        <span class="macro">assert!</span>(pmtu_param.get_probe_status());
+        <span class="macro">assert_eq!</span>(pmtu_param.get_probe_size(), <span class="number">1350</span>);
+        <span class="macro">assert_eq!</span>(pipe.advance(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">for </span>(<span class="kw">_</span>, p) <span class="kw">in </span>pipe.server.paths.iter_mut() {
+            <span class="macro">assert_eq!</span>(p.pmtud.get_current(), <span class="number">1350</span>);
+            <span class="macro">assert!</span>(!p.pmtud.get_probe_status());
+        }
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>pmtud_probe_loss() {
+        <span class="kw">let </span><span class="kw-2">mut </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        config
+            .load_cert_chain_from_pem_file(<span class="string">"examples/cert.crt"</span>)
+            .unwrap();
+        config
+            .load_priv_key_from_pem_file(<span class="string">"examples/cert.key"</span>)
+            .unwrap();
+        config
+            .set_application_protos(<span class="kw-2">&amp;</span>[<span class="string">b"proto1"</span>, <span class="string">b"proto2"</span>])
+            .unwrap();
+        config.verify_peer(<span class="bool-val">false</span>);
+        config.set_initial_max_data(<span class="number">100000</span>);
+        config.set_initial_max_stream_data_bidi_local(<span class="number">100000</span>);
+        config.set_initial_max_stream_data_bidi_remote(<span class="number">100000</span>);
+        config.set_initial_max_streams_bidi(<span class="number">2</span>);
+        config.set_active_connection_id_limit(<span class="number">4</span>);
+        config.set_max_send_udp_payload_size(<span class="number">1350</span>);
+        config.set_max_recv_udp_payload_size(<span class="number">1250</span>);
+        config.discover_pmtu(<span class="bool-val">true</span>);
+
+        <span class="comment">// Perform initial handshake.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>pipe = testing::Pipe::with_config(<span class="kw-2">&amp;mut </span>config).unwrap();
+        <span class="macro">assert_eq!</span>(pipe.handshake(), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>server_addr = testing::Pipe::server_addr();
+        <span class="kw">let </span>client_addr = testing::Pipe::client_addr();
+        <span class="kw">let </span>pid_1 = pipe
+            .server
+            .paths
+            .path_id_from_addrs(<span class="kw-2">&amp;</span>(server_addr, client_addr))
+            .expect(<span class="string">"no such path"</span>);
+
+        <span class="comment">// Check that PMTU params are configured correctly
+        </span><span class="kw">let </span>pmtu_param = <span class="kw-2">&amp;mut </span>pipe.server.paths.get_mut(pid_1).unwrap().pmtud;
+        <span class="macro">assert!</span>(pmtu_param.get_probe_status());
+        <span class="macro">assert_eq!</span>(pmtu_param.get_probe_size(), <span class="number">1350</span>);
+        std::thread::sleep(
+            pipe.server.paths.get_mut(pid_1).unwrap().recovery.rtt() +
+                time::Duration::from_millis(<span class="number">1</span>),
+        );
+
+        <span class="kw">let </span>active_server_path = pipe.server.paths.get_active_mut().unwrap();
+        <span class="kw">let </span>pmtu_param = <span class="kw-2">&amp;mut </span>active_server_path.pmtud;
+
+        <span class="comment">// PMTU not updated since probe is not ACKed
+        </span><span class="macro">assert_eq!</span>(pmtu_param.get_current(), <span class="number">1200</span>);
+
+        <span class="comment">// Continue searching for PMTU
+        </span><span class="macro">assert!</span>(pmtu_param.get_probe_status());
+    }
+}
+
+<span class="kw">pub use </span><span class="kw">crate</span>::packet::ConnectionId;
+<span class="kw">pub use </span><span class="kw">crate</span>::packet::Header;
+<span class="kw">pub use </span><span class="kw">crate</span>::packet::Type;
+
+<span class="kw">pub use </span><span class="kw">crate</span>::path::PathEvent;
+<span class="kw">pub use </span><span class="kw">crate</span>::path::PathStats;
+<span class="kw">pub use </span><span class="kw">crate</span>::path::SocketAddrIter;
+
+<span class="kw">pub use </span><span class="kw">crate</span>::recovery::CongestionControlAlgorithm;
+
+<span class="kw">pub use </span><span class="kw">crate</span>::stream::StreamIter;
+
+<span class="kw">mod </span>cid;
+<span class="kw">mod </span>crypto;
+<span class="kw">mod </span>dgram;
+<span class="attr">#[cfg(feature = <span class="string">"ffi"</span>)]
+</span><span class="kw">mod </span>ffi;
+<span class="kw">mod </span>flowcontrol;
+<span class="kw">mod </span>frame;
+<span class="kw">pub mod </span>h3;
+<span class="kw">mod </span>minmax;
+<span class="kw">mod </span>packet;
+<span class="kw">mod </span>path;
+<span class="kw">mod </span>pmtud;
+<span class="kw">mod </span>rand;
+<span class="kw">mod </span>ranges;
+<span class="kw">mod </span>recovery;
+<span class="kw">mod </span>stream;
+<span class="kw">mod </span>tls;
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/minmax.rs.html b/src/quiche/minmax.rs.html
new file mode 100644
index 0000000..155020e
--- /dev/null
+++ b/src/quiche/minmax.rs.html
@@ -0,0 +1,871 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/minmax.rs`."><title>minmax.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2020, Cloudflare, Inc.
+// Copyright (C) 2017, Google, Inc.
+//
+// Use of this source code is governed by the following BSD-style license:
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// lib/minmax.c: windowed min/max tracker
+//
+// Kathleen Nichols' algorithm for tracking the minimum (or maximum)
+// value of a data stream over some fixed time interval.  (E.g.,
+// the minimum RTT over the past five minutes.) It uses constant
+// space and constant time per update yet almost always delivers
+// the same minimum as an implementation that has to keep all the
+// data in the window.
+//
+// The algorithm keeps track of the best, 2nd best &amp; 3rd best min
+// values, maintaining an invariant that the measurement time of
+// the n'th best &gt;= n-1'th best. It also makes sure that the three
+// values are widely separated in the time window since that bounds
+// the worse case error when that data is monotonically increasing
+// over the window.
+//
+// Upon getting a new min, we can forget everything earlier because
+// it has no value - the new min is &lt;= everything else in the window
+// by definition and it's the most recent. So we restart fresh on
+// every new min and overwrites 2nd &amp; 3rd choices. The same property
+// holds for 2nd &amp; 3rd best.
+
+</span><span class="kw">use </span>std::time::Duration;
+<span class="kw">use </span>std::time::Instant;
+
+<span class="attr">#[derive(Copy, Clone)]
+</span><span class="kw">struct </span>MinmaxSample&lt;T&gt; {
+    time: Instant,
+    value: T,
+}
+
+<span class="kw">pub struct </span>Minmax&lt;T&gt; {
+    estimate: [MinmaxSample&lt;T&gt;; <span class="number">3</span>],
+}
+
+<span class="kw">impl</span>&lt;T: PartialOrd + Copy&gt; Minmax&lt;T&gt; {
+    <span class="kw">pub fn </span>new(val: T) -&gt; <span class="self">Self </span>{
+        Minmax {
+            estimate: [MinmaxSample {
+                time: Instant::now(),
+                value: val,
+            }; <span class="number">3</span>],
+        }
+    }
+
+    <span class="doccomment">/// Resets the estimates to the given value.
+    </span><span class="kw">pub fn </span>reset(<span class="kw-2">&amp;mut </span><span class="self">self</span>, time: Instant, meas: T) -&gt; T {
+        <span class="kw">let </span>val = MinmaxSample { time, value: meas };
+
+        <span class="kw">for </span>i <span class="kw">in </span><span class="self">self</span>.estimate.iter_mut() {
+            <span class="kw-2">*</span>i = val;
+        }
+
+        <span class="self">self</span>.estimate[<span class="number">0</span>].value
+    }
+
+    <span class="doccomment">/// Updates the min estimate based on the given measurement, and returns it.
+    </span><span class="kw">pub fn </span>running_min(<span class="kw-2">&amp;mut </span><span class="self">self</span>, win: Duration, time: Instant, meas: T) -&gt; T {
+        <span class="kw">let </span>val = MinmaxSample { time, value: meas };
+
+        <span class="kw">let </span>delta_time = time.duration_since(<span class="self">self</span>.estimate[<span class="number">2</span>].time);
+
+        <span class="comment">// Reset if there's nothing in the window or a new min value is found.
+        </span><span class="kw">if </span>val.value &lt;= <span class="self">self</span>.estimate[<span class="number">0</span>].value || delta_time &gt; win {
+            <span class="kw">return </span><span class="self">self</span>.reset(time, meas);
+        }
+
+        <span class="kw">if </span>val.value &lt;= <span class="self">self</span>.estimate[<span class="number">1</span>].value {
+            <span class="self">self</span>.estimate[<span class="number">2</span>] = val;
+            <span class="self">self</span>.estimate[<span class="number">1</span>] = val;
+        } <span class="kw">else if </span>val.value &lt;= <span class="self">self</span>.estimate[<span class="number">2</span>].value {
+            <span class="self">self</span>.estimate[<span class="number">2</span>] = val;
+        }
+
+        <span class="self">self</span>.subwin_update(win, time, meas)
+    }
+
+    <span class="doccomment">/// Updates the max estimate based on the given measurement, and returns it.
+    </span><span class="kw">pub fn </span>running_max(<span class="kw-2">&amp;mut </span><span class="self">self</span>, win: Duration, time: Instant, meas: T) -&gt; T {
+        <span class="kw">let </span>val = MinmaxSample { time, value: meas };
+
+        <span class="kw">let </span>delta_time = time.duration_since(<span class="self">self</span>.estimate[<span class="number">2</span>].time);
+
+        <span class="comment">// Reset if there's nothing in the window or a new max value is found.
+        </span><span class="kw">if </span>val.value &gt;= <span class="self">self</span>.estimate[<span class="number">0</span>].value || delta_time &gt; win {
+            <span class="kw">return </span><span class="self">self</span>.reset(time, meas);
+        }
+
+        <span class="kw">if </span>val.value &gt;= <span class="self">self</span>.estimate[<span class="number">1</span>].value {
+            <span class="self">self</span>.estimate[<span class="number">2</span>] = val;
+            <span class="self">self</span>.estimate[<span class="number">1</span>] = val;
+        } <span class="kw">else if </span>val.value &gt;= <span class="self">self</span>.estimate[<span class="number">2</span>].value {
+            <span class="self">self</span>.estimate[<span class="number">2</span>] = val
+        }
+
+        <span class="self">self</span>.subwin_update(win, time, meas)
+    }
+
+    <span class="doccomment">/// As time advances, update the 1st, 2nd and 3rd estimates.
+    </span><span class="kw">fn </span>subwin_update(<span class="kw-2">&amp;mut </span><span class="self">self</span>, win: Duration, time: Instant, meas: T) -&gt; T {
+        <span class="kw">let </span>val = MinmaxSample { time, value: meas };
+
+        <span class="kw">let </span>delta_time = time.duration_since(<span class="self">self</span>.estimate[<span class="number">0</span>].time);
+
+        <span class="kw">if </span>delta_time &gt; win {
+            <span class="comment">// Passed entire window without a new val so make 2nd estimate the
+            // new val &amp; 3rd estimate the new 2nd choice. we may have to iterate
+            // this since our 2nd estimate may also be outside the window (we
+            // checked on entry that the third estimate was in the window).
+            </span><span class="self">self</span>.estimate[<span class="number">0</span>] = <span class="self">self</span>.estimate[<span class="number">1</span>];
+            <span class="self">self</span>.estimate[<span class="number">1</span>] = <span class="self">self</span>.estimate[<span class="number">2</span>];
+            <span class="self">self</span>.estimate[<span class="number">2</span>] = val;
+
+            <span class="kw">if </span>time.duration_since(<span class="self">self</span>.estimate[<span class="number">0</span>].time) &gt; win {
+                <span class="self">self</span>.estimate[<span class="number">0</span>] = <span class="self">self</span>.estimate[<span class="number">1</span>];
+                <span class="self">self</span>.estimate[<span class="number">1</span>] = <span class="self">self</span>.estimate[<span class="number">2</span>];
+                <span class="self">self</span>.estimate[<span class="number">2</span>] = val;
+            }
+        } <span class="kw">else if </span><span class="self">self</span>.estimate[<span class="number">1</span>].time == <span class="self">self</span>.estimate[<span class="number">0</span>].time &amp;&amp;
+            delta_time &gt; win.div_f32(<span class="number">4.0</span>)
+        {
+            <span class="comment">// We've passed a quarter of the window without a new val so take a
+            // 2nd estimate from the 2nd quarter of the window.
+            </span><span class="self">self</span>.estimate[<span class="number">2</span>] = val;
+            <span class="self">self</span>.estimate[<span class="number">1</span>] = val;
+        } <span class="kw">else if </span><span class="self">self</span>.estimate[<span class="number">2</span>].time == <span class="self">self</span>.estimate[<span class="number">1</span>].time &amp;&amp;
+            delta_time &gt; win.div_f32(<span class="number">2.0</span>)
+        {
+            <span class="comment">// We've passed half the window without finding a new val so take a
+            // 3rd estimate from the last half of the window.
+            </span><span class="self">self</span>.estimate[<span class="number">2</span>] = val;
+        }
+
+        <span class="self">self</span>.estimate[<span class="number">0</span>].value
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>reset_filter_rtt() {
+        <span class="kw">let </span><span class="kw-2">mut </span>f = Minmax::new(Duration::ZERO);
+        <span class="kw">let </span>now = Instant::now();
+        <span class="kw">let </span>rtt = Duration::from_millis(<span class="number">50</span>);
+
+        <span class="kw">let </span>rtt_min = f.reset(now, rtt);
+        <span class="macro">assert_eq!</span>(rtt_min, rtt);
+
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">0</span>].time, now);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">0</span>].value, rtt);
+
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].time, now);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, rtt);
+
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].time, now);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, rtt);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>reset_filter_bandwidth() {
+        <span class="kw">let </span><span class="kw-2">mut </span>f = Minmax::new(<span class="number">0</span>);
+        <span class="kw">let </span>now = Instant::now();
+        <span class="kw">let </span>bw = <span class="number">2000</span>;
+
+        <span class="kw">let </span>bw_min = f.reset(now, bw);
+        <span class="macro">assert_eq!</span>(bw_min, bw);
+
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">0</span>].time, now);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">0</span>].value, bw);
+
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].time, now);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, bw);
+
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].time, now);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, bw);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>get_windowed_min_rtt() {
+        <span class="kw">let </span><span class="kw-2">mut </span>f = Minmax::new(Duration::ZERO);
+        <span class="kw">let </span>rtt_25 = Duration::from_millis(<span class="number">25</span>);
+        <span class="kw">let </span>rtt_24 = Duration::from_millis(<span class="number">24</span>);
+        <span class="kw">let </span>win = Duration::from_millis(<span class="number">500</span>);
+        <span class="kw">let </span><span class="kw-2">mut </span>time = Instant::now();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>rtt_min = f.reset(time, rtt_25);
+        <span class="macro">assert_eq!</span>(rtt_min, rtt_25);
+
+        time += Duration::from_millis(<span class="number">250</span>);
+        rtt_min = f.running_min(win, time, rtt_24);
+        <span class="macro">assert_eq!</span>(rtt_min, rtt_24);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, rtt_24);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, rtt_24);
+
+        time += Duration::from_millis(<span class="number">600</span>);
+        rtt_min = f.running_min(win, time, rtt_25);
+        <span class="macro">assert_eq!</span>(rtt_min, rtt_25);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, rtt_25);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, rtt_25);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>get_windowed_min_bandwidth() {
+        <span class="kw">let </span><span class="kw-2">mut </span>f = Minmax::new(<span class="number">0</span>);
+        <span class="kw">let </span>bw_200 = <span class="number">200</span>;
+        <span class="kw">let </span>bw_500 = <span class="number">500</span>;
+        <span class="kw">let </span>win = Duration::from_millis(<span class="number">500</span>);
+        <span class="kw">let </span><span class="kw-2">mut </span>time = Instant::now();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>bw_min = f.reset(time, bw_500);
+        <span class="macro">assert_eq!</span>(bw_min, bw_500);
+
+        time += Duration::from_millis(<span class="number">250</span>);
+        bw_min = f.running_min(win, time, bw_200);
+        <span class="macro">assert_eq!</span>(bw_min, bw_200);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, bw_200);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, bw_200);
+
+        time += Duration::from_millis(<span class="number">600</span>);
+        bw_min = f.running_min(win, time, bw_500);
+        <span class="macro">assert_eq!</span>(bw_min, bw_500);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, bw_500);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, bw_500);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>get_windowed_max_rtt() {
+        <span class="kw">let </span><span class="kw-2">mut </span>f = Minmax::new(Duration::ZERO);
+        <span class="kw">let </span>rtt_25 = Duration::from_millis(<span class="number">25</span>);
+        <span class="kw">let </span>rtt_24 = Duration::from_millis(<span class="number">24</span>);
+        <span class="kw">let </span>win = Duration::from_millis(<span class="number">500</span>);
+        <span class="kw">let </span><span class="kw-2">mut </span>time = Instant::now();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>rtt_max = f.reset(time, rtt_24);
+        <span class="macro">assert_eq!</span>(rtt_max, rtt_24);
+
+        time += Duration::from_millis(<span class="number">250</span>);
+        rtt_max = f.running_max(win, time, rtt_25);
+        <span class="macro">assert_eq!</span>(rtt_max, rtt_25);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, rtt_25);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, rtt_25);
+
+        time += Duration::from_millis(<span class="number">600</span>);
+        rtt_max = f.running_max(win, time, rtt_24);
+        <span class="macro">assert_eq!</span>(rtt_max, rtt_24);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, rtt_24);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, rtt_24);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>get_windowed_max_bandwidth() {
+        <span class="kw">let </span><span class="kw-2">mut </span>f = Minmax::new(<span class="number">0</span>);
+        <span class="kw">let </span>bw_200 = <span class="number">200</span>;
+        <span class="kw">let </span>bw_500 = <span class="number">500</span>;
+        <span class="kw">let </span>win = Duration::from_millis(<span class="number">500</span>);
+        <span class="kw">let </span><span class="kw-2">mut </span>time = Instant::now();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>bw_max = f.reset(time, bw_200);
+        <span class="macro">assert_eq!</span>(bw_max, bw_200);
+
+        time += Duration::from_millis(<span class="number">5000</span>);
+        bw_max = f.running_max(win, time, bw_500);
+        <span class="macro">assert_eq!</span>(bw_max, bw_500);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, bw_500);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, bw_500);
+
+        time += Duration::from_millis(<span class="number">600</span>);
+        bw_max = f.running_max(win, time, bw_200);
+        <span class="macro">assert_eq!</span>(bw_max, bw_200);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, bw_200);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, bw_200);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>get_windowed_min_estimates_rtt() {
+        <span class="kw">let </span><span class="kw-2">mut </span>f = Minmax::new(Duration::ZERO);
+        <span class="kw">let </span>rtt_25 = Duration::from_millis(<span class="number">25</span>);
+        <span class="kw">let </span>rtt_24 = Duration::from_millis(<span class="number">24</span>);
+        <span class="kw">let </span>rtt_23 = Duration::from_millis(<span class="number">23</span>);
+        <span class="kw">let </span>rtt_22 = Duration::from_millis(<span class="number">22</span>);
+        <span class="kw">let </span>win = Duration::from_secs(<span class="number">1</span>);
+        <span class="kw">let </span><span class="kw-2">mut </span>time = Instant::now();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>rtt_min = f.reset(time, rtt_23);
+        <span class="macro">assert_eq!</span>(rtt_min, rtt_23);
+
+        time += Duration::from_millis(<span class="number">300</span>);
+        rtt_min = f.running_min(win, time, rtt_24);
+        <span class="macro">assert_eq!</span>(rtt_min, rtt_23);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, rtt_24);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, rtt_24);
+
+        time += Duration::from_millis(<span class="number">300</span>);
+        rtt_min = f.running_min(win, time, rtt_25);
+        <span class="macro">assert_eq!</span>(rtt_min, rtt_23);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, rtt_24);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, rtt_25);
+
+        time += Duration::from_millis(<span class="number">300</span>);
+        rtt_min = f.running_min(win, time, rtt_22);
+        <span class="macro">assert_eq!</span>(rtt_min, rtt_22);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, rtt_22);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, rtt_22);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>get_windowed_min_estimates_bandwidth() {
+        <span class="kw">let </span><span class="kw-2">mut </span>f = Minmax::new(<span class="number">0</span>);
+        <span class="kw">let </span>bw_500 = <span class="number">500</span>;
+        <span class="kw">let </span>bw_400 = <span class="number">400</span>;
+        <span class="kw">let </span>bw_300 = <span class="number">300</span>;
+        <span class="kw">let </span>bw_200 = <span class="number">200</span>;
+        <span class="kw">let </span>win = Duration::from_secs(<span class="number">1</span>);
+        <span class="kw">let </span><span class="kw-2">mut </span>time = Instant::now();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>bw_min = f.reset(time, bw_300);
+        <span class="macro">assert_eq!</span>(bw_min, bw_300);
+
+        time += Duration::from_millis(<span class="number">300</span>);
+        bw_min = f.running_min(win, time, bw_400);
+        <span class="macro">assert_eq!</span>(bw_min, bw_300);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, bw_400);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, bw_400);
+
+        time += Duration::from_millis(<span class="number">300</span>);
+        bw_min = f.running_min(win, time, bw_500);
+        <span class="macro">assert_eq!</span>(bw_min, bw_300);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, bw_400);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, bw_500);
+
+        time += Duration::from_millis(<span class="number">300</span>);
+        bw_min = f.running_min(win, time, bw_200);
+        <span class="macro">assert_eq!</span>(bw_min, bw_200);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, bw_200);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, bw_200);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>get_windowed_max_estimates_rtt() {
+        <span class="kw">let </span><span class="kw-2">mut </span>f = Minmax::new(Duration::ZERO);
+        <span class="kw">let </span>rtt_25 = Duration::from_millis(<span class="number">25</span>);
+        <span class="kw">let </span>rtt_24 = Duration::from_millis(<span class="number">24</span>);
+        <span class="kw">let </span>rtt_23 = Duration::from_millis(<span class="number">23</span>);
+        <span class="kw">let </span>rtt_26 = Duration::from_millis(<span class="number">26</span>);
+        <span class="kw">let </span>win = Duration::from_secs(<span class="number">1</span>);
+        <span class="kw">let </span><span class="kw-2">mut </span>time = Instant::now();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>rtt_max = f.reset(time, rtt_25);
+        <span class="macro">assert_eq!</span>(rtt_max, rtt_25);
+
+        time += Duration::from_millis(<span class="number">300</span>);
+        rtt_max = f.running_max(win, time, rtt_24);
+        <span class="macro">assert_eq!</span>(rtt_max, rtt_25);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, rtt_24);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, rtt_24);
+
+        time += Duration::from_millis(<span class="number">300</span>);
+        rtt_max = f.running_max(win, time, rtt_23);
+        <span class="macro">assert_eq!</span>(rtt_max, rtt_25);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, rtt_24);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, rtt_23);
+
+        time += Duration::from_millis(<span class="number">300</span>);
+        rtt_max = f.running_max(win, time, rtt_26);
+        <span class="macro">assert_eq!</span>(rtt_max, rtt_26);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, rtt_26);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, rtt_26);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>get_windowed_max_estimates_bandwidth() {
+        <span class="kw">let </span><span class="kw-2">mut </span>f = Minmax::new(<span class="number">0</span>);
+        <span class="kw">let </span>bw_500 = <span class="number">500</span>;
+        <span class="kw">let </span>bw_400 = <span class="number">400</span>;
+        <span class="kw">let </span>bw_300 = <span class="number">300</span>;
+        <span class="kw">let </span>bw_600 = <span class="number">600</span>;
+        <span class="kw">let </span>win = Duration::from_secs(<span class="number">1</span>);
+        <span class="kw">let </span><span class="kw-2">mut </span>time = Instant::now();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>bw_max = f.reset(time, bw_500);
+        <span class="macro">assert_eq!</span>(bw_max, bw_500);
+
+        time += Duration::from_millis(<span class="number">300</span>);
+        bw_max = f.running_max(win, time, bw_400);
+        <span class="macro">assert_eq!</span>(bw_max, bw_500);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, bw_400);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, bw_400);
+
+        time += Duration::from_millis(<span class="number">300</span>);
+        bw_max = f.running_max(win, time, bw_300);
+        <span class="macro">assert_eq!</span>(bw_max, bw_500);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, bw_400);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, bw_300);
+
+        time += Duration::from_millis(<span class="number">300</span>);
+        bw_max = f.running_max(win, time, bw_600);
+        <span class="macro">assert_eq!</span>(bw_max, bw_600);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">1</span>].value, bw_600);
+        <span class="macro">assert_eq!</span>(f.estimate[<span class="number">2</span>].value, bw_600);
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/packet.rs.html b/src/quiche/packet.rs.html
new file mode 100644
index 0000000..ae0d4d0
--- /dev/null
+++ b/src/quiche/packet.rs.html
@@ -0,0 +1,3947 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/packet.rs`."><title>packet.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+<a href="#1217" id="1217">1217</a>
+<a href="#1218" id="1218">1218</a>
+<a href="#1219" id="1219">1219</a>
+<a href="#1220" id="1220">1220</a>
+<a href="#1221" id="1221">1221</a>
+<a href="#1222" id="1222">1222</a>
+<a href="#1223" id="1223">1223</a>
+<a href="#1224" id="1224">1224</a>
+<a href="#1225" id="1225">1225</a>
+<a href="#1226" id="1226">1226</a>
+<a href="#1227" id="1227">1227</a>
+<a href="#1228" id="1228">1228</a>
+<a href="#1229" id="1229">1229</a>
+<a href="#1230" id="1230">1230</a>
+<a href="#1231" id="1231">1231</a>
+<a href="#1232" id="1232">1232</a>
+<a href="#1233" id="1233">1233</a>
+<a href="#1234" id="1234">1234</a>
+<a href="#1235" id="1235">1235</a>
+<a href="#1236" id="1236">1236</a>
+<a href="#1237" id="1237">1237</a>
+<a href="#1238" id="1238">1238</a>
+<a href="#1239" id="1239">1239</a>
+<a href="#1240" id="1240">1240</a>
+<a href="#1241" id="1241">1241</a>
+<a href="#1242" id="1242">1242</a>
+<a href="#1243" id="1243">1243</a>
+<a href="#1244" id="1244">1244</a>
+<a href="#1245" id="1245">1245</a>
+<a href="#1246" id="1246">1246</a>
+<a href="#1247" id="1247">1247</a>
+<a href="#1248" id="1248">1248</a>
+<a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</a>
+<a href="#1259" id="1259">1259</a>
+<a href="#1260" id="1260">1260</a>
+<a href="#1261" id="1261">1261</a>
+<a href="#1262" id="1262">1262</a>
+<a href="#1263" id="1263">1263</a>
+<a href="#1264" id="1264">1264</a>
+<a href="#1265" id="1265">1265</a>
+<a href="#1266" id="1266">1266</a>
+<a href="#1267" id="1267">1267</a>
+<a href="#1268" id="1268">1268</a>
+<a href="#1269" id="1269">1269</a>
+<a href="#1270" id="1270">1270</a>
+<a href="#1271" id="1271">1271</a>
+<a href="#1272" id="1272">1272</a>
+<a href="#1273" id="1273">1273</a>
+<a href="#1274" id="1274">1274</a>
+<a href="#1275" id="1275">1275</a>
+<a href="#1276" id="1276">1276</a>
+<a href="#1277" id="1277">1277</a>
+<a href="#1278" id="1278">1278</a>
+<a href="#1279" id="1279">1279</a>
+<a href="#1280" id="1280">1280</a>
+<a href="#1281" id="1281">1281</a>
+<a href="#1282" id="1282">1282</a>
+<a href="#1283" id="1283">1283</a>
+<a href="#1284" id="1284">1284</a>
+<a href="#1285" id="1285">1285</a>
+<a href="#1286" id="1286">1286</a>
+<a href="#1287" id="1287">1287</a>
+<a href="#1288" id="1288">1288</a>
+<a href="#1289" id="1289">1289</a>
+<a href="#1290" id="1290">1290</a>
+<a href="#1291" id="1291">1291</a>
+<a href="#1292" id="1292">1292</a>
+<a href="#1293" id="1293">1293</a>
+<a href="#1294" id="1294">1294</a>
+<a href="#1295" id="1295">1295</a>
+<a href="#1296" id="1296">1296</a>
+<a href="#1297" id="1297">1297</a>
+<a href="#1298" id="1298">1298</a>
+<a href="#1299" id="1299">1299</a>
+<a href="#1300" id="1300">1300</a>
+<a href="#1301" id="1301">1301</a>
+<a href="#1302" id="1302">1302</a>
+<a href="#1303" id="1303">1303</a>
+<a href="#1304" id="1304">1304</a>
+<a href="#1305" id="1305">1305</a>
+<a href="#1306" id="1306">1306</a>
+<a href="#1307" id="1307">1307</a>
+<a href="#1308" id="1308">1308</a>
+<a href="#1309" id="1309">1309</a>
+<a href="#1310" id="1310">1310</a>
+<a href="#1311" id="1311">1311</a>
+<a href="#1312" id="1312">1312</a>
+<a href="#1313" id="1313">1313</a>
+<a href="#1314" id="1314">1314</a>
+<a href="#1315" id="1315">1315</a>
+<a href="#1316" id="1316">1316</a>
+<a href="#1317" id="1317">1317</a>
+<a href="#1318" id="1318">1318</a>
+<a href="#1319" id="1319">1319</a>
+<a href="#1320" id="1320">1320</a>
+<a href="#1321" id="1321">1321</a>
+<a href="#1322" id="1322">1322</a>
+<a href="#1323" id="1323">1323</a>
+<a href="#1324" id="1324">1324</a>
+<a href="#1325" id="1325">1325</a>
+<a href="#1326" id="1326">1326</a>
+<a href="#1327" id="1327">1327</a>
+<a href="#1328" id="1328">1328</a>
+<a href="#1329" id="1329">1329</a>
+<a href="#1330" id="1330">1330</a>
+<a href="#1331" id="1331">1331</a>
+<a href="#1332" id="1332">1332</a>
+<a href="#1333" id="1333">1333</a>
+<a href="#1334" id="1334">1334</a>
+<a href="#1335" id="1335">1335</a>
+<a href="#1336" id="1336">1336</a>
+<a href="#1337" id="1337">1337</a>
+<a href="#1338" id="1338">1338</a>
+<a href="#1339" id="1339">1339</a>
+<a href="#1340" id="1340">1340</a>
+<a href="#1341" id="1341">1341</a>
+<a href="#1342" id="1342">1342</a>
+<a href="#1343" id="1343">1343</a>
+<a href="#1344" id="1344">1344</a>
+<a href="#1345" id="1345">1345</a>
+<a href="#1346" id="1346">1346</a>
+<a href="#1347" id="1347">1347</a>
+<a href="#1348" id="1348">1348</a>
+<a href="#1349" id="1349">1349</a>
+<a href="#1350" id="1350">1350</a>
+<a href="#1351" id="1351">1351</a>
+<a href="#1352" id="1352">1352</a>
+<a href="#1353" id="1353">1353</a>
+<a href="#1354" id="1354">1354</a>
+<a href="#1355" id="1355">1355</a>
+<a href="#1356" id="1356">1356</a>
+<a href="#1357" id="1357">1357</a>
+<a href="#1358" id="1358">1358</a>
+<a href="#1359" id="1359">1359</a>
+<a href="#1360" id="1360">1360</a>
+<a href="#1361" id="1361">1361</a>
+<a href="#1362" id="1362">1362</a>
+<a href="#1363" id="1363">1363</a>
+<a href="#1364" id="1364">1364</a>
+<a href="#1365" id="1365">1365</a>
+<a href="#1366" id="1366">1366</a>
+<a href="#1367" id="1367">1367</a>
+<a href="#1368" id="1368">1368</a>
+<a href="#1369" id="1369">1369</a>
+<a href="#1370" id="1370">1370</a>
+<a href="#1371" id="1371">1371</a>
+<a href="#1372" id="1372">1372</a>
+<a href="#1373" id="1373">1373</a>
+<a href="#1374" id="1374">1374</a>
+<a href="#1375" id="1375">1375</a>
+<a href="#1376" id="1376">1376</a>
+<a href="#1377" id="1377">1377</a>
+<a href="#1378" id="1378">1378</a>
+<a href="#1379" id="1379">1379</a>
+<a href="#1380" id="1380">1380</a>
+<a href="#1381" id="1381">1381</a>
+<a href="#1382" id="1382">1382</a>
+<a href="#1383" id="1383">1383</a>
+<a href="#1384" id="1384">1384</a>
+<a href="#1385" id="1385">1385</a>
+<a href="#1386" id="1386">1386</a>
+<a href="#1387" id="1387">1387</a>
+<a href="#1388" id="1388">1388</a>
+<a href="#1389" id="1389">1389</a>
+<a href="#1390" id="1390">1390</a>
+<a href="#1391" id="1391">1391</a>
+<a href="#1392" id="1392">1392</a>
+<a href="#1393" id="1393">1393</a>
+<a href="#1394" id="1394">1394</a>
+<a href="#1395" id="1395">1395</a>
+<a href="#1396" id="1396">1396</a>
+<a href="#1397" id="1397">1397</a>
+<a href="#1398" id="1398">1398</a>
+<a href="#1399" id="1399">1399</a>
+<a href="#1400" id="1400">1400</a>
+<a href="#1401" id="1401">1401</a>
+<a href="#1402" id="1402">1402</a>
+<a href="#1403" id="1403">1403</a>
+<a href="#1404" id="1404">1404</a>
+<a href="#1405" id="1405">1405</a>
+<a href="#1406" id="1406">1406</a>
+<a href="#1407" id="1407">1407</a>
+<a href="#1408" id="1408">1408</a>
+<a href="#1409" id="1409">1409</a>
+<a href="#1410" id="1410">1410</a>
+<a href="#1411" id="1411">1411</a>
+<a href="#1412" id="1412">1412</a>
+<a href="#1413" id="1413">1413</a>
+<a href="#1414" id="1414">1414</a>
+<a href="#1415" id="1415">1415</a>
+<a href="#1416" id="1416">1416</a>
+<a href="#1417" id="1417">1417</a>
+<a href="#1418" id="1418">1418</a>
+<a href="#1419" id="1419">1419</a>
+<a href="#1420" id="1420">1420</a>
+<a href="#1421" id="1421">1421</a>
+<a href="#1422" id="1422">1422</a>
+<a href="#1423" id="1423">1423</a>
+<a href="#1424" id="1424">1424</a>
+<a href="#1425" id="1425">1425</a>
+<a href="#1426" id="1426">1426</a>
+<a href="#1427" id="1427">1427</a>
+<a href="#1428" id="1428">1428</a>
+<a href="#1429" id="1429">1429</a>
+<a href="#1430" id="1430">1430</a>
+<a href="#1431" id="1431">1431</a>
+<a href="#1432" id="1432">1432</a>
+<a href="#1433" id="1433">1433</a>
+<a href="#1434" id="1434">1434</a>
+<a href="#1435" id="1435">1435</a>
+<a href="#1436" id="1436">1436</a>
+<a href="#1437" id="1437">1437</a>
+<a href="#1438" id="1438">1438</a>
+<a href="#1439" id="1439">1439</a>
+<a href="#1440" id="1440">1440</a>
+<a href="#1441" id="1441">1441</a>
+<a href="#1442" id="1442">1442</a>
+<a href="#1443" id="1443">1443</a>
+<a href="#1444" id="1444">1444</a>
+<a href="#1445" id="1445">1445</a>
+<a href="#1446" id="1446">1446</a>
+<a href="#1447" id="1447">1447</a>
+<a href="#1448" id="1448">1448</a>
+<a href="#1449" id="1449">1449</a>
+<a href="#1450" id="1450">1450</a>
+<a href="#1451" id="1451">1451</a>
+<a href="#1452" id="1452">1452</a>
+<a href="#1453" id="1453">1453</a>
+<a href="#1454" id="1454">1454</a>
+<a href="#1455" id="1455">1455</a>
+<a href="#1456" id="1456">1456</a>
+<a href="#1457" id="1457">1457</a>
+<a href="#1458" id="1458">1458</a>
+<a href="#1459" id="1459">1459</a>
+<a href="#1460" id="1460">1460</a>
+<a href="#1461" id="1461">1461</a>
+<a href="#1462" id="1462">1462</a>
+<a href="#1463" id="1463">1463</a>
+<a href="#1464" id="1464">1464</a>
+<a href="#1465" id="1465">1465</a>
+<a href="#1466" id="1466">1466</a>
+<a href="#1467" id="1467">1467</a>
+<a href="#1468" id="1468">1468</a>
+<a href="#1469" id="1469">1469</a>
+<a href="#1470" id="1470">1470</a>
+<a href="#1471" id="1471">1471</a>
+<a href="#1472" id="1472">1472</a>
+<a href="#1473" id="1473">1473</a>
+<a href="#1474" id="1474">1474</a>
+<a href="#1475" id="1475">1475</a>
+<a href="#1476" id="1476">1476</a>
+<a href="#1477" id="1477">1477</a>
+<a href="#1478" id="1478">1478</a>
+<a href="#1479" id="1479">1479</a>
+<a href="#1480" id="1480">1480</a>
+<a href="#1481" id="1481">1481</a>
+<a href="#1482" id="1482">1482</a>
+<a href="#1483" id="1483">1483</a>
+<a href="#1484" id="1484">1484</a>
+<a href="#1485" id="1485">1485</a>
+<a href="#1486" id="1486">1486</a>
+<a href="#1487" id="1487">1487</a>
+<a href="#1488" id="1488">1488</a>
+<a href="#1489" id="1489">1489</a>
+<a href="#1490" id="1490">1490</a>
+<a href="#1491" id="1491">1491</a>
+<a href="#1492" id="1492">1492</a>
+<a href="#1493" id="1493">1493</a>
+<a href="#1494" id="1494">1494</a>
+<a href="#1495" id="1495">1495</a>
+<a href="#1496" id="1496">1496</a>
+<a href="#1497" id="1497">1497</a>
+<a href="#1498" id="1498">1498</a>
+<a href="#1499" id="1499">1499</a>
+<a href="#1500" id="1500">1500</a>
+<a href="#1501" id="1501">1501</a>
+<a href="#1502" id="1502">1502</a>
+<a href="#1503" id="1503">1503</a>
+<a href="#1504" id="1504">1504</a>
+<a href="#1505" id="1505">1505</a>
+<a href="#1506" id="1506">1506</a>
+<a href="#1507" id="1507">1507</a>
+<a href="#1508" id="1508">1508</a>
+<a href="#1509" id="1509">1509</a>
+<a href="#1510" id="1510">1510</a>
+<a href="#1511" id="1511">1511</a>
+<a href="#1512" id="1512">1512</a>
+<a href="#1513" id="1513">1513</a>
+<a href="#1514" id="1514">1514</a>
+<a href="#1515" id="1515">1515</a>
+<a href="#1516" id="1516">1516</a>
+<a href="#1517" id="1517">1517</a>
+<a href="#1518" id="1518">1518</a>
+<a href="#1519" id="1519">1519</a>
+<a href="#1520" id="1520">1520</a>
+<a href="#1521" id="1521">1521</a>
+<a href="#1522" id="1522">1522</a>
+<a href="#1523" id="1523">1523</a>
+<a href="#1524" id="1524">1524</a>
+<a href="#1525" id="1525">1525</a>
+<a href="#1526" id="1526">1526</a>
+<a href="#1527" id="1527">1527</a>
+<a href="#1528" id="1528">1528</a>
+<a href="#1529" id="1529">1529</a>
+<a href="#1530" id="1530">1530</a>
+<a href="#1531" id="1531">1531</a>
+<a href="#1532" id="1532">1532</a>
+<a href="#1533" id="1533">1533</a>
+<a href="#1534" id="1534">1534</a>
+<a href="#1535" id="1535">1535</a>
+<a href="#1536" id="1536">1536</a>
+<a href="#1537" id="1537">1537</a>
+<a href="#1538" id="1538">1538</a>
+<a href="#1539" id="1539">1539</a>
+<a href="#1540" id="1540">1540</a>
+<a href="#1541" id="1541">1541</a>
+<a href="#1542" id="1542">1542</a>
+<a href="#1543" id="1543">1543</a>
+<a href="#1544" id="1544">1544</a>
+<a href="#1545" id="1545">1545</a>
+<a href="#1546" id="1546">1546</a>
+<a href="#1547" id="1547">1547</a>
+<a href="#1548" id="1548">1548</a>
+<a href="#1549" id="1549">1549</a>
+<a href="#1550" id="1550">1550</a>
+<a href="#1551" id="1551">1551</a>
+<a href="#1552" id="1552">1552</a>
+<a href="#1553" id="1553">1553</a>
+<a href="#1554" id="1554">1554</a>
+<a href="#1555" id="1555">1555</a>
+<a href="#1556" id="1556">1556</a>
+<a href="#1557" id="1557">1557</a>
+<a href="#1558" id="1558">1558</a>
+<a href="#1559" id="1559">1559</a>
+<a href="#1560" id="1560">1560</a>
+<a href="#1561" id="1561">1561</a>
+<a href="#1562" id="1562">1562</a>
+<a href="#1563" id="1563">1563</a>
+<a href="#1564" id="1564">1564</a>
+<a href="#1565" id="1565">1565</a>
+<a href="#1566" id="1566">1566</a>
+<a href="#1567" id="1567">1567</a>
+<a href="#1568" id="1568">1568</a>
+<a href="#1569" id="1569">1569</a>
+<a href="#1570" id="1570">1570</a>
+<a href="#1571" id="1571">1571</a>
+<a href="#1572" id="1572">1572</a>
+<a href="#1573" id="1573">1573</a>
+<a href="#1574" id="1574">1574</a>
+<a href="#1575" id="1575">1575</a>
+<a href="#1576" id="1576">1576</a>
+<a href="#1577" id="1577">1577</a>
+<a href="#1578" id="1578">1578</a>
+<a href="#1579" id="1579">1579</a>
+<a href="#1580" id="1580">1580</a>
+<a href="#1581" id="1581">1581</a>
+<a href="#1582" id="1582">1582</a>
+<a href="#1583" id="1583">1583</a>
+<a href="#1584" id="1584">1584</a>
+<a href="#1585" id="1585">1585</a>
+<a href="#1586" id="1586">1586</a>
+<a href="#1587" id="1587">1587</a>
+<a href="#1588" id="1588">1588</a>
+<a href="#1589" id="1589">1589</a>
+<a href="#1590" id="1590">1590</a>
+<a href="#1591" id="1591">1591</a>
+<a href="#1592" id="1592">1592</a>
+<a href="#1593" id="1593">1593</a>
+<a href="#1594" id="1594">1594</a>
+<a href="#1595" id="1595">1595</a>
+<a href="#1596" id="1596">1596</a>
+<a href="#1597" id="1597">1597</a>
+<a href="#1598" id="1598">1598</a>
+<a href="#1599" id="1599">1599</a>
+<a href="#1600" id="1600">1600</a>
+<a href="#1601" id="1601">1601</a>
+<a href="#1602" id="1602">1602</a>
+<a href="#1603" id="1603">1603</a>
+<a href="#1604" id="1604">1604</a>
+<a href="#1605" id="1605">1605</a>
+<a href="#1606" id="1606">1606</a>
+<a href="#1607" id="1607">1607</a>
+<a href="#1608" id="1608">1608</a>
+<a href="#1609" id="1609">1609</a>
+<a href="#1610" id="1610">1610</a>
+<a href="#1611" id="1611">1611</a>
+<a href="#1612" id="1612">1612</a>
+<a href="#1613" id="1613">1613</a>
+<a href="#1614" id="1614">1614</a>
+<a href="#1615" id="1615">1615</a>
+<a href="#1616" id="1616">1616</a>
+<a href="#1617" id="1617">1617</a>
+<a href="#1618" id="1618">1618</a>
+<a href="#1619" id="1619">1619</a>
+<a href="#1620" id="1620">1620</a>
+<a href="#1621" id="1621">1621</a>
+<a href="#1622" id="1622">1622</a>
+<a href="#1623" id="1623">1623</a>
+<a href="#1624" id="1624">1624</a>
+<a href="#1625" id="1625">1625</a>
+<a href="#1626" id="1626">1626</a>
+<a href="#1627" id="1627">1627</a>
+<a href="#1628" id="1628">1628</a>
+<a href="#1629" id="1629">1629</a>
+<a href="#1630" id="1630">1630</a>
+<a href="#1631" id="1631">1631</a>
+<a href="#1632" id="1632">1632</a>
+<a href="#1633" id="1633">1633</a>
+<a href="#1634" id="1634">1634</a>
+<a href="#1635" id="1635">1635</a>
+<a href="#1636" id="1636">1636</a>
+<a href="#1637" id="1637">1637</a>
+<a href="#1638" id="1638">1638</a>
+<a href="#1639" id="1639">1639</a>
+<a href="#1640" id="1640">1640</a>
+<a href="#1641" id="1641">1641</a>
+<a href="#1642" id="1642">1642</a>
+<a href="#1643" id="1643">1643</a>
+<a href="#1644" id="1644">1644</a>
+<a href="#1645" id="1645">1645</a>
+<a href="#1646" id="1646">1646</a>
+<a href="#1647" id="1647">1647</a>
+<a href="#1648" id="1648">1648</a>
+<a href="#1649" id="1649">1649</a>
+<a href="#1650" id="1650">1650</a>
+<a href="#1651" id="1651">1651</a>
+<a href="#1652" id="1652">1652</a>
+<a href="#1653" id="1653">1653</a>
+<a href="#1654" id="1654">1654</a>
+<a href="#1655" id="1655">1655</a>
+<a href="#1656" id="1656">1656</a>
+<a href="#1657" id="1657">1657</a>
+<a href="#1658" id="1658">1658</a>
+<a href="#1659" id="1659">1659</a>
+<a href="#1660" id="1660">1660</a>
+<a href="#1661" id="1661">1661</a>
+<a href="#1662" id="1662">1662</a>
+<a href="#1663" id="1663">1663</a>
+<a href="#1664" id="1664">1664</a>
+<a href="#1665" id="1665">1665</a>
+<a href="#1666" id="1666">1666</a>
+<a href="#1667" id="1667">1667</a>
+<a href="#1668" id="1668">1668</a>
+<a href="#1669" id="1669">1669</a>
+<a href="#1670" id="1670">1670</a>
+<a href="#1671" id="1671">1671</a>
+<a href="#1672" id="1672">1672</a>
+<a href="#1673" id="1673">1673</a>
+<a href="#1674" id="1674">1674</a>
+<a href="#1675" id="1675">1675</a>
+<a href="#1676" id="1676">1676</a>
+<a href="#1677" id="1677">1677</a>
+<a href="#1678" id="1678">1678</a>
+<a href="#1679" id="1679">1679</a>
+<a href="#1680" id="1680">1680</a>
+<a href="#1681" id="1681">1681</a>
+<a href="#1682" id="1682">1682</a>
+<a href="#1683" id="1683">1683</a>
+<a href="#1684" id="1684">1684</a>
+<a href="#1685" id="1685">1685</a>
+<a href="#1686" id="1686">1686</a>
+<a href="#1687" id="1687">1687</a>
+<a href="#1688" id="1688">1688</a>
+<a href="#1689" id="1689">1689</a>
+<a href="#1690" id="1690">1690</a>
+<a href="#1691" id="1691">1691</a>
+<a href="#1692" id="1692">1692</a>
+<a href="#1693" id="1693">1693</a>
+<a href="#1694" id="1694">1694</a>
+<a href="#1695" id="1695">1695</a>
+<a href="#1696" id="1696">1696</a>
+<a href="#1697" id="1697">1697</a>
+<a href="#1698" id="1698">1698</a>
+<a href="#1699" id="1699">1699</a>
+<a href="#1700" id="1700">1700</a>
+<a href="#1701" id="1701">1701</a>
+<a href="#1702" id="1702">1702</a>
+<a href="#1703" id="1703">1703</a>
+<a href="#1704" id="1704">1704</a>
+<a href="#1705" id="1705">1705</a>
+<a href="#1706" id="1706">1706</a>
+<a href="#1707" id="1707">1707</a>
+<a href="#1708" id="1708">1708</a>
+<a href="#1709" id="1709">1709</a>
+<a href="#1710" id="1710">1710</a>
+<a href="#1711" id="1711">1711</a>
+<a href="#1712" id="1712">1712</a>
+<a href="#1713" id="1713">1713</a>
+<a href="#1714" id="1714">1714</a>
+<a href="#1715" id="1715">1715</a>
+<a href="#1716" id="1716">1716</a>
+<a href="#1717" id="1717">1717</a>
+<a href="#1718" id="1718">1718</a>
+<a href="#1719" id="1719">1719</a>
+<a href="#1720" id="1720">1720</a>
+<a href="#1721" id="1721">1721</a>
+<a href="#1722" id="1722">1722</a>
+<a href="#1723" id="1723">1723</a>
+<a href="#1724" id="1724">1724</a>
+<a href="#1725" id="1725">1725</a>
+<a href="#1726" id="1726">1726</a>
+<a href="#1727" id="1727">1727</a>
+<a href="#1728" id="1728">1728</a>
+<a href="#1729" id="1729">1729</a>
+<a href="#1730" id="1730">1730</a>
+<a href="#1731" id="1731">1731</a>
+<a href="#1732" id="1732">1732</a>
+<a href="#1733" id="1733">1733</a>
+<a href="#1734" id="1734">1734</a>
+<a href="#1735" id="1735">1735</a>
+<a href="#1736" id="1736">1736</a>
+<a href="#1737" id="1737">1737</a>
+<a href="#1738" id="1738">1738</a>
+<a href="#1739" id="1739">1739</a>
+<a href="#1740" id="1740">1740</a>
+<a href="#1741" id="1741">1741</a>
+<a href="#1742" id="1742">1742</a>
+<a href="#1743" id="1743">1743</a>
+<a href="#1744" id="1744">1744</a>
+<a href="#1745" id="1745">1745</a>
+<a href="#1746" id="1746">1746</a>
+<a href="#1747" id="1747">1747</a>
+<a href="#1748" id="1748">1748</a>
+<a href="#1749" id="1749">1749</a>
+<a href="#1750" id="1750">1750</a>
+<a href="#1751" id="1751">1751</a>
+<a href="#1752" id="1752">1752</a>
+<a href="#1753" id="1753">1753</a>
+<a href="#1754" id="1754">1754</a>
+<a href="#1755" id="1755">1755</a>
+<a href="#1756" id="1756">1756</a>
+<a href="#1757" id="1757">1757</a>
+<a href="#1758" id="1758">1758</a>
+<a href="#1759" id="1759">1759</a>
+<a href="#1760" id="1760">1760</a>
+<a href="#1761" id="1761">1761</a>
+<a href="#1762" id="1762">1762</a>
+<a href="#1763" id="1763">1763</a>
+<a href="#1764" id="1764">1764</a>
+<a href="#1765" id="1765">1765</a>
+<a href="#1766" id="1766">1766</a>
+<a href="#1767" id="1767">1767</a>
+<a href="#1768" id="1768">1768</a>
+<a href="#1769" id="1769">1769</a>
+<a href="#1770" id="1770">1770</a>
+<a href="#1771" id="1771">1771</a>
+<a href="#1772" id="1772">1772</a>
+<a href="#1773" id="1773">1773</a>
+<a href="#1774" id="1774">1774</a>
+<a href="#1775" id="1775">1775</a>
+<a href="#1776" id="1776">1776</a>
+<a href="#1777" id="1777">1777</a>
+<a href="#1778" id="1778">1778</a>
+<a href="#1779" id="1779">1779</a>
+<a href="#1780" id="1780">1780</a>
+<a href="#1781" id="1781">1781</a>
+<a href="#1782" id="1782">1782</a>
+<a href="#1783" id="1783">1783</a>
+<a href="#1784" id="1784">1784</a>
+<a href="#1785" id="1785">1785</a>
+<a href="#1786" id="1786">1786</a>
+<a href="#1787" id="1787">1787</a>
+<a href="#1788" id="1788">1788</a>
+<a href="#1789" id="1789">1789</a>
+<a href="#1790" id="1790">1790</a>
+<a href="#1791" id="1791">1791</a>
+<a href="#1792" id="1792">1792</a>
+<a href="#1793" id="1793">1793</a>
+<a href="#1794" id="1794">1794</a>
+<a href="#1795" id="1795">1795</a>
+<a href="#1796" id="1796">1796</a>
+<a href="#1797" id="1797">1797</a>
+<a href="#1798" id="1798">1798</a>
+<a href="#1799" id="1799">1799</a>
+<a href="#1800" id="1800">1800</a>
+<a href="#1801" id="1801">1801</a>
+<a href="#1802" id="1802">1802</a>
+<a href="#1803" id="1803">1803</a>
+<a href="#1804" id="1804">1804</a>
+<a href="#1805" id="1805">1805</a>
+<a href="#1806" id="1806">1806</a>
+<a href="#1807" id="1807">1807</a>
+<a href="#1808" id="1808">1808</a>
+<a href="#1809" id="1809">1809</a>
+<a href="#1810" id="1810">1810</a>
+<a href="#1811" id="1811">1811</a>
+<a href="#1812" id="1812">1812</a>
+<a href="#1813" id="1813">1813</a>
+<a href="#1814" id="1814">1814</a>
+<a href="#1815" id="1815">1815</a>
+<a href="#1816" id="1816">1816</a>
+<a href="#1817" id="1817">1817</a>
+<a href="#1818" id="1818">1818</a>
+<a href="#1819" id="1819">1819</a>
+<a href="#1820" id="1820">1820</a>
+<a href="#1821" id="1821">1821</a>
+<a href="#1822" id="1822">1822</a>
+<a href="#1823" id="1823">1823</a>
+<a href="#1824" id="1824">1824</a>
+<a href="#1825" id="1825">1825</a>
+<a href="#1826" id="1826">1826</a>
+<a href="#1827" id="1827">1827</a>
+<a href="#1828" id="1828">1828</a>
+<a href="#1829" id="1829">1829</a>
+<a href="#1830" id="1830">1830</a>
+<a href="#1831" id="1831">1831</a>
+<a href="#1832" id="1832">1832</a>
+<a href="#1833" id="1833">1833</a>
+<a href="#1834" id="1834">1834</a>
+<a href="#1835" id="1835">1835</a>
+<a href="#1836" id="1836">1836</a>
+<a href="#1837" id="1837">1837</a>
+<a href="#1838" id="1838">1838</a>
+<a href="#1839" id="1839">1839</a>
+<a href="#1840" id="1840">1840</a>
+<a href="#1841" id="1841">1841</a>
+<a href="#1842" id="1842">1842</a>
+<a href="#1843" id="1843">1843</a>
+<a href="#1844" id="1844">1844</a>
+<a href="#1845" id="1845">1845</a>
+<a href="#1846" id="1846">1846</a>
+<a href="#1847" id="1847">1847</a>
+<a href="#1848" id="1848">1848</a>
+<a href="#1849" id="1849">1849</a>
+<a href="#1850" id="1850">1850</a>
+<a href="#1851" id="1851">1851</a>
+<a href="#1852" id="1852">1852</a>
+<a href="#1853" id="1853">1853</a>
+<a href="#1854" id="1854">1854</a>
+<a href="#1855" id="1855">1855</a>
+<a href="#1856" id="1856">1856</a>
+<a href="#1857" id="1857">1857</a>
+<a href="#1858" id="1858">1858</a>
+<a href="#1859" id="1859">1859</a>
+<a href="#1860" id="1860">1860</a>
+<a href="#1861" id="1861">1861</a>
+<a href="#1862" id="1862">1862</a>
+<a href="#1863" id="1863">1863</a>
+<a href="#1864" id="1864">1864</a>
+<a href="#1865" id="1865">1865</a>
+<a href="#1866" id="1866">1866</a>
+<a href="#1867" id="1867">1867</a>
+<a href="#1868" id="1868">1868</a>
+<a href="#1869" id="1869">1869</a>
+<a href="#1870" id="1870">1870</a>
+<a href="#1871" id="1871">1871</a>
+<a href="#1872" id="1872">1872</a>
+<a href="#1873" id="1873">1873</a>
+<a href="#1874" id="1874">1874</a>
+<a href="#1875" id="1875">1875</a>
+<a href="#1876" id="1876">1876</a>
+<a href="#1877" id="1877">1877</a>
+<a href="#1878" id="1878">1878</a>
+<a href="#1879" id="1879">1879</a>
+<a href="#1880" id="1880">1880</a>
+<a href="#1881" id="1881">1881</a>
+<a href="#1882" id="1882">1882</a>
+<a href="#1883" id="1883">1883</a>
+<a href="#1884" id="1884">1884</a>
+<a href="#1885" id="1885">1885</a>
+<a href="#1886" id="1886">1886</a>
+<a href="#1887" id="1887">1887</a>
+<a href="#1888" id="1888">1888</a>
+<a href="#1889" id="1889">1889</a>
+<a href="#1890" id="1890">1890</a>
+<a href="#1891" id="1891">1891</a>
+<a href="#1892" id="1892">1892</a>
+<a href="#1893" id="1893">1893</a>
+<a href="#1894" id="1894">1894</a>
+<a href="#1895" id="1895">1895</a>
+<a href="#1896" id="1896">1896</a>
+<a href="#1897" id="1897">1897</a>
+<a href="#1898" id="1898">1898</a>
+<a href="#1899" id="1899">1899</a>
+<a href="#1900" id="1900">1900</a>
+<a href="#1901" id="1901">1901</a>
+<a href="#1902" id="1902">1902</a>
+<a href="#1903" id="1903">1903</a>
+<a href="#1904" id="1904">1904</a>
+<a href="#1905" id="1905">1905</a>
+<a href="#1906" id="1906">1906</a>
+<a href="#1907" id="1907">1907</a>
+<a href="#1908" id="1908">1908</a>
+<a href="#1909" id="1909">1909</a>
+<a href="#1910" id="1910">1910</a>
+<a href="#1911" id="1911">1911</a>
+<a href="#1912" id="1912">1912</a>
+<a href="#1913" id="1913">1913</a>
+<a href="#1914" id="1914">1914</a>
+<a href="#1915" id="1915">1915</a>
+<a href="#1916" id="1916">1916</a>
+<a href="#1917" id="1917">1917</a>
+<a href="#1918" id="1918">1918</a>
+<a href="#1919" id="1919">1919</a>
+<a href="#1920" id="1920">1920</a>
+<a href="#1921" id="1921">1921</a>
+<a href="#1922" id="1922">1922</a>
+<a href="#1923" id="1923">1923</a>
+<a href="#1924" id="1924">1924</a>
+<a href="#1925" id="1925">1925</a>
+<a href="#1926" id="1926">1926</a>
+<a href="#1927" id="1927">1927</a>
+<a href="#1928" id="1928">1928</a>
+<a href="#1929" id="1929">1929</a>
+<a href="#1930" id="1930">1930</a>
+<a href="#1931" id="1931">1931</a>
+<a href="#1932" id="1932">1932</a>
+<a href="#1933" id="1933">1933</a>
+<a href="#1934" id="1934">1934</a>
+<a href="#1935" id="1935">1935</a>
+<a href="#1936" id="1936">1936</a>
+<a href="#1937" id="1937">1937</a>
+<a href="#1938" id="1938">1938</a>
+<a href="#1939" id="1939">1939</a>
+<a href="#1940" id="1940">1940</a>
+<a href="#1941" id="1941">1941</a>
+<a href="#1942" id="1942">1942</a>
+<a href="#1943" id="1943">1943</a>
+<a href="#1944" id="1944">1944</a>
+<a href="#1945" id="1945">1945</a>
+<a href="#1946" id="1946">1946</a>
+<a href="#1947" id="1947">1947</a>
+<a href="#1948" id="1948">1948</a>
+<a href="#1949" id="1949">1949</a>
+<a href="#1950" id="1950">1950</a>
+<a href="#1951" id="1951">1951</a>
+<a href="#1952" id="1952">1952</a>
+<a href="#1953" id="1953">1953</a>
+<a href="#1954" id="1954">1954</a>
+<a href="#1955" id="1955">1955</a>
+<a href="#1956" id="1956">1956</a>
+<a href="#1957" id="1957">1957</a>
+<a href="#1958" id="1958">1958</a>
+<a href="#1959" id="1959">1959</a>
+<a href="#1960" id="1960">1960</a>
+<a href="#1961" id="1961">1961</a>
+<a href="#1962" id="1962">1962</a>
+<a href="#1963" id="1963">1963</a>
+<a href="#1964" id="1964">1964</a>
+<a href="#1965" id="1965">1965</a>
+<a href="#1966" id="1966">1966</a>
+<a href="#1967" id="1967">1967</a>
+<a href="#1968" id="1968">1968</a>
+<a href="#1969" id="1969">1969</a>
+<a href="#1970" id="1970">1970</a>
+<a href="#1971" id="1971">1971</a>
+<a href="#1972" id="1972">1972</a>
+<a href="#1973" id="1973">1973</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2018-2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span>std::fmt::Display;
+<span class="kw">use </span>std::ops::Index;
+<span class="kw">use </span>std::ops::IndexMut;
+<span class="kw">use </span>std::ops::RangeInclusive;
+<span class="kw">use </span>std::time;
+
+<span class="kw">use </span>ring::aead;
+
+<span class="kw">use </span><span class="kw">crate</span>::Error;
+<span class="kw">use </span><span class="kw">crate</span>::Result;
+
+<span class="kw">use </span><span class="kw">crate</span>::crypto;
+<span class="kw">use </span><span class="kw">crate</span>::rand;
+<span class="kw">use </span><span class="kw">crate</span>::ranges;
+<span class="kw">use </span><span class="kw">crate</span>::stream;
+
+<span class="kw">const </span>FORM_BIT: u8 = <span class="number">0x80</span>;
+<span class="kw">const </span>FIXED_BIT: u8 = <span class="number">0x40</span>;
+<span class="kw">const </span>KEY_PHASE_BIT: u8 = <span class="number">0x04</span>;
+
+<span class="kw">const </span>TYPE_MASK: u8 = <span class="number">0x30</span>;
+<span class="kw">const </span>PKT_NUM_MASK: u8 = <span class="number">0x03</span>;
+
+<span class="kw">pub const </span>MAX_CID_LEN: u8 = <span class="number">20</span>;
+
+<span class="kw">pub const </span>MAX_PKT_NUM_LEN: usize = <span class="number">4</span>;
+
+<span class="kw">const </span>SAMPLE_LEN: usize = <span class="number">16</span>;
+
+<span class="attr">#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug)]
+</span><span class="kw">pub enum </span>Epoch {
+    Initial     = <span class="number">0</span>,
+    Handshake   = <span class="number">1</span>,
+    Application = <span class="number">2</span>,
+}
+
+<span class="kw">static </span>EPOCHS: [Epoch; <span class="number">3</span>] =
+    [Epoch::Initial, Epoch::Handshake, Epoch::Application];
+
+<span class="kw">impl </span>Epoch {
+    <span class="doccomment">/// Returns an ordered slice containing the `Epoch`s that fit in the
+    /// provided `range`.
+    </span><span class="kw">pub fn </span>epochs(range: RangeInclusive&lt;Epoch&gt;) -&gt; <span class="kw-2">&amp;</span><span class="lifetime">'static </span>[Epoch] {
+        <span class="kw-2">&amp;</span>EPOCHS[<span class="kw-2">*</span>range.start() <span class="kw">as </span>usize..=<span class="kw-2">*</span>range.end() <span class="kw">as </span>usize]
+    }
+
+    <span class="kw">pub const fn </span>count() -&gt; usize {
+        <span class="number">3
+    </span>}
+}
+
+<span class="kw">impl </span>Display <span class="kw">for </span>Epoch {
+    <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter&lt;<span class="lifetime">'_</span>&gt;) -&gt; std::fmt::Result {
+        <span class="macro">write!</span>(f, <span class="string">"{}"</span>, usize::from(<span class="kw-2">*</span><span class="self">self</span>))
+    }
+}
+
+<span class="kw">impl </span>From&lt;Epoch&gt; <span class="kw">for </span>usize {
+    <span class="kw">fn </span>from(e: Epoch) -&gt; <span class="self">Self </span>{
+        e <span class="kw">as </span>usize
+    }
+}
+
+<span class="kw">impl</span>&lt;T&gt; Index&lt;Epoch&gt; <span class="kw">for </span>[T]
+<span class="kw">where
+    </span>T: Sized,
+{
+    <span class="kw">type </span>Output = T;
+
+    <span class="kw">fn </span>index(<span class="kw-2">&amp;</span><span class="self">self</span>, index: Epoch) -&gt; <span class="kw-2">&amp;</span><span class="self">Self</span>::Output {
+        <span class="self">self</span>.index(usize::from(index))
+    }
+}
+
+<span class="kw">impl</span>&lt;T&gt; IndexMut&lt;Epoch&gt; <span class="kw">for </span>[T]
+<span class="kw">where
+    </span>T: Sized,
+{
+    <span class="kw">fn </span>index_mut(<span class="kw-2">&amp;mut </span><span class="self">self</span>, index: Epoch) -&gt; <span class="kw-2">&amp;mut </span><span class="self">Self</span>::Output {
+        <span class="self">self</span>.index_mut(usize::from(index))
+    }
+}
+
+<span class="doccomment">/// QUIC packet type.
+</span><span class="attr">#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+</span><span class="kw">pub enum </span>Type {
+    <span class="doccomment">/// Initial packet.
+    </span>Initial,
+
+    <span class="doccomment">/// Retry packet.
+    </span>Retry,
+
+    <span class="doccomment">/// Handshake packet.
+    </span>Handshake,
+
+    <span class="doccomment">/// 0-RTT packet.
+    </span>ZeroRTT,
+
+    <span class="doccomment">/// Version negotiation packet.
+    </span>VersionNegotiation,
+
+    <span class="doccomment">/// 1-RTT short header packet.
+    </span>Short,
+}
+
+<span class="kw">impl </span>Type {
+    <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>from_epoch(e: Epoch) -&gt; Type {
+        <span class="kw">match </span>e {
+            Epoch::Initial =&gt; Type::Initial,
+
+            Epoch::Handshake =&gt; Type::Handshake,
+
+            Epoch::Application =&gt; Type::Short,
+        }
+    }
+
+    <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>to_epoch(<span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;Epoch&gt; {
+        <span class="kw">match </span><span class="self">self </span>{
+            Type::Initial =&gt; <span class="prelude-val">Ok</span>(Epoch::Initial),
+
+            Type::ZeroRTT =&gt; <span class="prelude-val">Ok</span>(Epoch::Application),
+
+            Type::Handshake =&gt; <span class="prelude-val">Ok</span>(Epoch::Handshake),
+
+            Type::Short =&gt; <span class="prelude-val">Ok</span>(Epoch::Application),
+
+            <span class="kw">_ </span>=&gt; <span class="prelude-val">Err</span>(Error::InvalidPacket),
+        }
+    }
+
+    <span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+    </span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>to_qlog(<span class="self">self</span>) -&gt; qlog::events::quic::PacketType {
+        <span class="kw">match </span><span class="self">self </span>{
+            Type::Initial =&gt; qlog::events::quic::PacketType::Initial,
+
+            Type::Retry =&gt; qlog::events::quic::PacketType::Retry,
+
+            Type::Handshake =&gt; qlog::events::quic::PacketType::Handshake,
+
+            Type::ZeroRTT =&gt; qlog::events::quic::PacketType::ZeroRtt,
+
+            Type::VersionNegotiation =&gt;
+                qlog::events::quic::PacketType::VersionNegotiation,
+
+            Type::Short =&gt; qlog::events::quic::PacketType::OneRtt,
+        }
+    }
+}
+
+<span class="doccomment">/// A QUIC connection ID.
+</span><span class="kw">pub struct </span>ConnectionId&lt;<span class="lifetime">'a</span>&gt;(ConnectionIdInner&lt;<span class="lifetime">'a</span>&gt;);
+
+<span class="kw">enum </span>ConnectionIdInner&lt;<span class="lifetime">'a</span>&gt; {
+    Vec(Vec&lt;u8&gt;),
+    Ref(<span class="kw-2">&amp;</span><span class="lifetime">'a </span>[u8]),
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; ConnectionId&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="doccomment">/// Creates a new connection ID from the given vector.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub const fn </span>from_vec(cid: Vec&lt;u8&gt;) -&gt; <span class="self">Self </span>{
+        <span class="self">Self</span>(ConnectionIdInner::Vec(cid))
+    }
+
+    <span class="doccomment">/// Creates a new connection ID from the given slice.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub const fn </span>from_ref(cid: <span class="kw-2">&amp;</span><span class="lifetime">'a </span>[u8]) -&gt; <span class="self">Self </span>{
+        <span class="self">Self</span>(ConnectionIdInner::Ref(cid))
+    }
+
+    <span class="doccomment">/// Returns a new owning connection ID from the given existing one.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>into_owned(<span class="self">self</span>) -&gt; ConnectionId&lt;<span class="lifetime">'static</span>&gt; {
+        ConnectionId::from_vec(<span class="self">self</span>.into())
+    }
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; Default <span class="kw">for </span>ConnectionId&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>default() -&gt; <span class="self">Self </span>{
+        <span class="self">Self</span>::from_vec(Vec::new())
+    }
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; From&lt;Vec&lt;u8&gt;&gt; <span class="kw">for </span>ConnectionId&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>from(v: Vec&lt;u8&gt;) -&gt; <span class="self">Self </span>{
+        <span class="self">Self</span>::from_vec(v)
+    }
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; From&lt;ConnectionId&lt;<span class="lifetime">'a</span>&gt;&gt; <span class="kw">for </span>Vec&lt;u8&gt; {
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>from(id: ConnectionId&lt;<span class="lifetime">'a</span>&gt;) -&gt; <span class="self">Self </span>{
+        <span class="kw">match </span>id.<span class="number">0 </span>{
+            ConnectionIdInner::Vec(cid) =&gt; cid,
+            ConnectionIdInner::Ref(cid) =&gt; cid.to_vec(),
+        }
+    }
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; PartialEq <span class="kw">for </span>ConnectionId&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>eq(<span class="kw-2">&amp;</span><span class="self">self</span>, other: <span class="kw-2">&amp;</span><span class="self">Self</span>) -&gt; bool {
+        <span class="self">self</span>.as_ref() == other.as_ref()
+    }
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; Eq <span class="kw">for </span>ConnectionId&lt;<span class="lifetime">'a</span>&gt; {}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; AsRef&lt;[u8]&gt; <span class="kw">for </span>ConnectionId&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>as_ref(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>[u8] {
+        <span class="kw">match </span><span class="kw-2">&amp;</span><span class="self">self</span>.<span class="number">0 </span>{
+            ConnectionIdInner::Vec(v) =&gt; v.as_ref(),
+            ConnectionIdInner::Ref(v) =&gt; v,
+        }
+    }
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; std::hash::Hash <span class="kw">for </span>ConnectionId&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>hash&lt;H: std::hash::Hasher&gt;(<span class="kw-2">&amp;</span><span class="self">self</span>, state: <span class="kw-2">&amp;mut </span>H) {
+        <span class="self">self</span>.as_ref().hash(state);
+    }
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; std::ops::Deref <span class="kw">for </span>ConnectionId&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="kw">type </span>Target = [u8];
+
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>deref(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>[u8] {
+        <span class="kw">match </span><span class="kw-2">&amp;</span><span class="self">self</span>.<span class="number">0 </span>{
+            ConnectionIdInner::Vec(v) =&gt; v.as_ref(),
+            ConnectionIdInner::Ref(v) =&gt; v,
+        }
+    }
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; Clone <span class="kw">for </span>ConnectionId&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>clone(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="self">Self </span>{
+        <span class="self">Self</span>::from_vec(<span class="self">self</span>.as_ref().to_vec())
+    }
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; std::fmt::Debug <span class="kw">for </span>ConnectionId&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+        <span class="kw">for </span>c <span class="kw">in </span><span class="self">self</span>.as_ref() {
+            <span class="macro">write!</span>(f, <span class="string">"{c:02x}"</span>)<span class="question-mark">?</span>;
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+}
+
+<span class="doccomment">/// A QUIC packet's header.
+</span><span class="attr">#[derive(Clone, PartialEq, Eq)]
+</span><span class="kw">pub struct </span>Header&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="doccomment">/// The type of the packet.
+    </span><span class="kw">pub </span>ty: Type,
+
+    <span class="doccomment">/// The version of the packet.
+    </span><span class="kw">pub </span>version: u32,
+
+    <span class="doccomment">/// The destination connection ID of the packet.
+    </span><span class="kw">pub </span>dcid: ConnectionId&lt;<span class="lifetime">'a</span>&gt;,
+
+    <span class="doccomment">/// The source connection ID of the packet.
+    </span><span class="kw">pub </span>scid: ConnectionId&lt;<span class="lifetime">'a</span>&gt;,
+
+    <span class="doccomment">/// The packet number. It's only meaningful after the header protection is
+    /// removed.
+    </span><span class="kw">pub</span>(<span class="kw">crate</span>) pkt_num: u64,
+
+    <span class="doccomment">/// The length of the packet number. It's only meaningful after the header
+    /// protection is removed.
+    </span><span class="kw">pub</span>(<span class="kw">crate</span>) pkt_num_len: usize,
+
+    <span class="doccomment">/// The address verification token of the packet. Only present in `Initial`
+    /// and `Retry` packets.
+    </span><span class="kw">pub </span>token: <span class="prelude-ty">Option</span>&lt;Vec&lt;u8&gt;&gt;,
+
+    <span class="doccomment">/// The list of versions in the packet. Only present in
+    /// `VersionNegotiation` packets.
+    </span><span class="kw">pub </span>versions: <span class="prelude-ty">Option</span>&lt;Vec&lt;u32&gt;&gt;,
+
+    <span class="doccomment">/// The key phase bit of the packet. It's only meaningful after the header
+    /// protection is removed.
+    </span><span class="kw">pub</span>(<span class="kw">crate</span>) key_phase: bool,
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; Header&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="doccomment">/// Parses a QUIC packet header from the given buffer.
+    ///
+    /// The `dcid_len` parameter is the length of the destination connection ID,
+    /// required to parse short header packets.
+    ///
+    /// ## Examples:
+    ///
+    /// ```no_run
+    /// # const LOCAL_CONN_ID_LEN: usize = 16;
+    /// # let mut buf = [0; 512];
+    /// # let mut out = [0; 512];
+    /// # let socket = std::net::UdpSocket::bind("127.0.0.1:0").unwrap();
+    /// let (len, src) = socket.recv_from(&amp;mut buf).unwrap();
+    ///
+    /// let hdr = quiche::Header::from_slice(&amp;mut buf[..len], LOCAL_CONN_ID_LEN)?;
+    /// # Ok::&lt;(), quiche::Error&gt;(())
+    /// ```
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>from_slice&lt;<span class="lifetime">'b</span>&gt;(
+        buf: <span class="kw-2">&amp;</span><span class="lifetime">'b </span><span class="kw-2">mut </span>[u8], dcid_len: usize,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;Header&lt;<span class="lifetime">'a</span>&gt;&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(buf);
+        Header::from_bytes(<span class="kw-2">&amp;mut </span>b, dcid_len)
+    }
+
+    <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>from_bytes&lt;<span class="lifetime">'b</span>&gt;(
+        b: <span class="kw-2">&amp;</span><span class="lifetime">'b </span><span class="kw-2">mut </span>octets::OctetsMut, dcid_len: usize,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;Header&lt;<span class="lifetime">'a</span>&gt;&gt; {
+        <span class="kw">let </span>first = b.get_u8()<span class="question-mark">?</span>;
+
+        <span class="kw">if </span>!Header::is_long(first) {
+            <span class="comment">// Decode short header.
+            </span><span class="kw">let </span>dcid = b.get_bytes(dcid_len)<span class="question-mark">?</span>;
+
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(Header {
+                ty: Type::Short,
+                version: <span class="number">0</span>,
+                dcid: dcid.to_vec().into(),
+                scid: ConnectionId::default(),
+                pkt_num: <span class="number">0</span>,
+                pkt_num_len: <span class="number">0</span>,
+                token: <span class="prelude-val">None</span>,
+                versions: <span class="prelude-val">None</span>,
+                key_phase: <span class="bool-val">false</span>,
+            });
+        }
+
+        <span class="comment">// Decode long header.
+        </span><span class="kw">let </span>version = b.get_u32()<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>ty = <span class="kw">if </span>version == <span class="number">0 </span>{
+            Type::VersionNegotiation
+        } <span class="kw">else </span>{
+            <span class="kw">match </span>(first &amp; TYPE_MASK) &gt;&gt; <span class="number">4 </span>{
+                <span class="number">0x00 </span>=&gt; Type::Initial,
+                <span class="number">0x01 </span>=&gt; Type::ZeroRTT,
+                <span class="number">0x02 </span>=&gt; Type::Handshake,
+                <span class="number">0x03 </span>=&gt; Type::Retry,
+                <span class="kw">_ </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidPacket),
+            }
+        };
+
+        <span class="kw">let </span>dcid_len = b.get_u8()<span class="question-mark">?</span>;
+        <span class="kw">if </span><span class="kw">crate</span>::version_is_supported(version) &amp;&amp; dcid_len &gt; MAX_CID_LEN {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidPacket);
+        }
+        <span class="kw">let </span>dcid = b.get_bytes(dcid_len <span class="kw">as </span>usize)<span class="question-mark">?</span>.to_vec();
+
+        <span class="kw">let </span>scid_len = b.get_u8()<span class="question-mark">?</span>;
+        <span class="kw">if </span><span class="kw">crate</span>::version_is_supported(version) &amp;&amp; scid_len &gt; MAX_CID_LEN {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidPacket);
+        }
+        <span class="kw">let </span>scid = b.get_bytes(scid_len <span class="kw">as </span>usize)<span class="question-mark">?</span>.to_vec();
+
+        <span class="comment">// End of invariants.
+
+        </span><span class="kw">let </span><span class="kw-2">mut </span>token: <span class="prelude-ty">Option</span>&lt;Vec&lt;u8&gt;&gt; = <span class="prelude-val">None</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>versions: <span class="prelude-ty">Option</span>&lt;Vec&lt;u32&gt;&gt; = <span class="prelude-val">None</span>;
+
+        <span class="kw">match </span>ty {
+            Type::Initial =&gt; {
+                token = <span class="prelude-val">Some</span>(b.get_bytes_with_varint_length()<span class="question-mark">?</span>.to_vec());
+            },
+
+            Type::Retry =&gt; {
+                <span class="comment">// Exclude the integrity tag from the token.
+                </span><span class="kw">if </span>b.cap() &lt; aead::AES_128_GCM.tag_len() {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidPacket);
+                }
+
+                <span class="kw">let </span>token_len = b.cap() - aead::AES_128_GCM.tag_len();
+                token = <span class="prelude-val">Some</span>(b.get_bytes(token_len)<span class="question-mark">?</span>.to_vec());
+            },
+
+            Type::VersionNegotiation =&gt; {
+                <span class="kw">let </span><span class="kw-2">mut </span>list: Vec&lt;u32&gt; = Vec::new();
+
+                <span class="kw">while </span>b.cap() &gt; <span class="number">0 </span>{
+                    <span class="kw">let </span>version = b.get_u32()<span class="question-mark">?</span>;
+                    list.push(version);
+                }
+
+                versions = <span class="prelude-val">Some</span>(list);
+            },
+
+            <span class="kw">_ </span>=&gt; (),
+        };
+
+        <span class="prelude-val">Ok</span>(Header {
+            ty,
+            version,
+            dcid: dcid.into(),
+            scid: scid.into(),
+            pkt_num: <span class="number">0</span>,
+            pkt_num_len: <span class="number">0</span>,
+            token,
+            versions,
+            key_phase: <span class="bool-val">false</span>,
+        })
+    }
+
+    <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>to_bytes(<span class="kw-2">&amp;</span><span class="self">self</span>, out: <span class="kw-2">&amp;mut </span>octets::OctetsMut) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>first = <span class="number">0</span>;
+
+        <span class="comment">// Encode pkt num length.
+        </span>first |= <span class="self">self</span>.pkt_num_len.saturating_sub(<span class="number">1</span>) <span class="kw">as </span>u8;
+
+        <span class="comment">// Encode short header.
+        </span><span class="kw">if </span><span class="self">self</span>.ty == Type::Short {
+            <span class="comment">// Unset form bit for short header.
+            </span>first &amp;= !FORM_BIT;
+
+            <span class="comment">// Set fixed bit.
+            </span>first |= FIXED_BIT;
+
+            <span class="comment">// Set key phase bit.
+            </span><span class="kw">if </span><span class="self">self</span>.key_phase {
+                first |= KEY_PHASE_BIT;
+            } <span class="kw">else </span>{
+                first &amp;= !KEY_PHASE_BIT;
+            }
+
+            out.put_u8(first)<span class="question-mark">?</span>;
+            out.put_bytes(<span class="kw-2">&amp;</span><span class="self">self</span>.dcid)<span class="question-mark">?</span>;
+
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+        }
+
+        <span class="comment">// Encode long header.
+        </span><span class="kw">let </span>ty: u8 = <span class="kw">match </span><span class="self">self</span>.ty {
+            Type::Initial =&gt; <span class="number">0x00</span>,
+            Type::ZeroRTT =&gt; <span class="number">0x01</span>,
+            Type::Handshake =&gt; <span class="number">0x02</span>,
+            Type::Retry =&gt; <span class="number">0x03</span>,
+            <span class="kw">_ </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidPacket),
+        };
+
+        first |= FORM_BIT | FIXED_BIT | (ty &lt;&lt; <span class="number">4</span>);
+
+        out.put_u8(first)<span class="question-mark">?</span>;
+
+        out.put_u32(<span class="self">self</span>.version)<span class="question-mark">?</span>;
+
+        out.put_u8(<span class="self">self</span>.dcid.len() <span class="kw">as </span>u8)<span class="question-mark">?</span>;
+        out.put_bytes(<span class="kw-2">&amp;</span><span class="self">self</span>.dcid)<span class="question-mark">?</span>;
+
+        out.put_u8(<span class="self">self</span>.scid.len() <span class="kw">as </span>u8)<span class="question-mark">?</span>;
+        out.put_bytes(<span class="kw-2">&amp;</span><span class="self">self</span>.scid)<span class="question-mark">?</span>;
+
+        <span class="comment">// Only Initial and Retry packets have a token.
+        </span><span class="kw">match </span><span class="self">self</span>.ty {
+            Type::Initial =&gt; {
+                <span class="kw">match </span><span class="self">self</span>.token {
+                    <span class="prelude-val">Some</span>(<span class="kw-2">ref </span>v) =&gt; {
+                        out.put_varint(v.len() <span class="kw">as </span>u64)<span class="question-mark">?</span>;
+                        out.put_bytes(v)<span class="question-mark">?</span>;
+                    },
+
+                    <span class="comment">// No token, so length = 0.
+                    </span><span class="prelude-val">None </span>=&gt; {
+                        out.put_varint(<span class="number">0</span>)<span class="question-mark">?</span>;
+                    },
+                }
+            },
+
+            Type::Retry =&gt; {
+                <span class="comment">// Retry packets don't have a token length.
+                </span>out.put_bytes(<span class="self">self</span>.token.as_ref().unwrap())<span class="question-mark">?</span>;
+            },
+
+            <span class="kw">_ </span>=&gt; (),
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Returns true if the packet has a long header.
+    ///
+    /// The `b` parameter represents the first byte of the QUIC header.
+    </span><span class="kw">fn </span>is_long(b: u8) -&gt; bool {
+        b &amp; FORM_BIT != <span class="number">0
+    </span>}
+}
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; std::fmt::Debug <span class="kw">for </span>Header&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+        <span class="macro">write!</span>(f, <span class="string">"{:?}"</span>, <span class="self">self</span>.ty)<span class="question-mark">?</span>;
+
+        <span class="kw">if </span><span class="self">self</span>.ty != Type::Short {
+            <span class="macro">write!</span>(f, <span class="string">" version={:x}"</span>, <span class="self">self</span>.version)<span class="question-mark">?</span>;
+        }
+
+        <span class="macro">write!</span>(f, <span class="string">" dcid={:?}"</span>, <span class="self">self</span>.dcid)<span class="question-mark">?</span>;
+
+        <span class="kw">if </span><span class="self">self</span>.ty != Type::Short {
+            <span class="macro">write!</span>(f, <span class="string">" scid={:?}"</span>, <span class="self">self</span>.scid)<span class="question-mark">?</span>;
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(<span class="kw-2">ref </span>token) = <span class="self">self</span>.token {
+            <span class="macro">write!</span>(f, <span class="string">" token="</span>)<span class="question-mark">?</span>;
+            <span class="kw">for </span>b <span class="kw">in </span>token {
+                <span class="macro">write!</span>(f, <span class="string">"{b:02x}"</span>)<span class="question-mark">?</span>;
+            }
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(<span class="kw-2">ref </span>versions) = <span class="self">self</span>.versions {
+            <span class="macro">write!</span>(f, <span class="string">" versions={versions:x?}"</span>)<span class="question-mark">?</span>;
+        }
+
+        <span class="kw">if </span><span class="self">self</span>.ty == Type::Short {
+            <span class="macro">write!</span>(f, <span class="string">" key_phase={}"</span>, <span class="self">self</span>.key_phase)<span class="question-mark">?</span>;
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+}
+
+<span class="kw">pub fn </span>pkt_num_len(pn: u64) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+    <span class="kw">let </span>len = <span class="kw">if </span>pn &lt; u64::from(u8::MAX) {
+        <span class="number">1
+    </span>} <span class="kw">else if </span>pn &lt; u64::from(u16::MAX) {
+        <span class="number">2
+    </span>} <span class="kw">else if </span>pn &lt; <span class="number">16_777_215u64 </span>{
+        <span class="number">3
+    </span>} <span class="kw">else if </span>pn &lt; u64::from(u32::MAX) {
+        <span class="number">4
+    </span>} <span class="kw">else </span>{
+        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidPacket);
+    };
+
+    <span class="prelude-val">Ok</span>(len)
+}
+
+<span class="kw">pub fn </span>decrypt_hdr(
+    b: <span class="kw-2">&amp;mut </span>octets::OctetsMut, hdr: <span class="kw-2">&amp;mut </span>Header, aead: <span class="kw-2">&amp;</span>crypto::Open,
+) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+    <span class="kw">let </span><span class="kw-2">mut </span>first = {
+        <span class="kw">let </span>(first_buf, <span class="kw">_</span>) = b.split_at(<span class="number">1</span>)<span class="question-mark">?</span>;
+        first_buf.as_ref()[<span class="number">0</span>]
+    };
+
+    <span class="kw">let </span><span class="kw-2">mut </span>pn_and_sample = b.peek_bytes_mut(MAX_PKT_NUM_LEN + SAMPLE_LEN)<span class="question-mark">?</span>;
+
+    <span class="kw">let </span>(<span class="kw-2">mut </span>ciphertext, sample) = pn_and_sample.split_at(MAX_PKT_NUM_LEN)<span class="question-mark">?</span>;
+
+    <span class="kw">let </span>ciphertext = ciphertext.as_mut();
+
+    <span class="kw">let </span>mask = aead.new_mask(sample.as_ref())<span class="question-mark">?</span>;
+
+    <span class="kw">if </span>Header::is_long(first) {
+        first ^= mask[<span class="number">0</span>] &amp; <span class="number">0x0f</span>;
+    } <span class="kw">else </span>{
+        first ^= mask[<span class="number">0</span>] &amp; <span class="number">0x1f</span>;
+    }
+
+    <span class="kw">let </span>pn_len = usize::from((first &amp; PKT_NUM_MASK) + <span class="number">1</span>);
+
+    <span class="kw">let </span>ciphertext = <span class="kw-2">&amp;mut </span>ciphertext[..pn_len];
+
+    <span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..pn_len {
+        ciphertext[i] ^= mask[i + <span class="number">1</span>];
+    }
+
+    <span class="comment">// Extract packet number corresponding to the decoded length.
+    </span><span class="kw">let </span>pn = <span class="kw">match </span>pn_len {
+        <span class="number">1 </span>=&gt; u64::from(b.get_u8()<span class="question-mark">?</span>),
+
+        <span class="number">2 </span>=&gt; u64::from(b.get_u16()<span class="question-mark">?</span>),
+
+        <span class="number">3 </span>=&gt; u64::from(b.get_u24()<span class="question-mark">?</span>),
+
+        <span class="number">4 </span>=&gt; u64::from(b.get_u32()<span class="question-mark">?</span>),
+
+        <span class="kw">_ </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidPacket),
+    };
+
+    <span class="comment">// Write decrypted first byte back into the input buffer.
+    </span><span class="kw">let </span>(<span class="kw-2">mut </span>first_buf, <span class="kw">_</span>) = b.split_at(<span class="number">1</span>)<span class="question-mark">?</span>;
+    first_buf.as_mut()[<span class="number">0</span>] = first;
+
+    hdr.pkt_num = pn;
+    hdr.pkt_num_len = pn_len;
+
+    <span class="kw">if </span>hdr.ty == Type::Short {
+        hdr.key_phase = (first &amp; KEY_PHASE_BIT) != <span class="number">0</span>;
+    }
+
+    <span class="prelude-val">Ok</span>(())
+}
+
+<span class="kw">pub fn </span>decode_pkt_num(largest_pn: u64, truncated_pn: u64, pn_len: usize) -&gt; u64 {
+    <span class="kw">let </span>pn_nbits = pn_len * <span class="number">8</span>;
+    <span class="kw">let </span>expected_pn = largest_pn + <span class="number">1</span>;
+    <span class="kw">let </span>pn_win = <span class="number">1 </span>&lt;&lt; pn_nbits;
+    <span class="kw">let </span>pn_hwin = pn_win / <span class="number">2</span>;
+    <span class="kw">let </span>pn_mask = pn_win - <span class="number">1</span>;
+    <span class="kw">let </span>candidate_pn = (expected_pn &amp; !pn_mask) | truncated_pn;
+
+    <span class="kw">if </span>candidate_pn + pn_hwin &lt;= expected_pn &amp;&amp; candidate_pn &lt; (<span class="number">1 </span>&lt;&lt; <span class="number">62</span>) - pn_win
+    {
+        <span class="kw">return </span>candidate_pn + pn_win;
+    }
+
+    <span class="kw">if </span>candidate_pn &gt; expected_pn + pn_hwin &amp;&amp; candidate_pn &gt;= pn_win {
+        <span class="kw">return </span>candidate_pn - pn_win;
+    }
+
+    candidate_pn
+}
+
+<span class="kw">pub fn </span>decrypt_pkt&lt;<span class="lifetime">'a</span>&gt;(
+    b: <span class="kw-2">&amp;</span><span class="lifetime">'a </span><span class="kw-2">mut </span>octets::OctetsMut, pn: u64, pn_len: usize, payload_len: usize,
+    aead: <span class="kw-2">&amp;</span>crypto::Open,
+) -&gt; <span class="prelude-ty">Result</span>&lt;octets::Octets&lt;<span class="lifetime">'a</span>&gt;&gt; {
+    <span class="kw">let </span>payload_offset = b.off();
+
+    <span class="kw">let </span>(header, <span class="kw-2">mut </span>payload) = b.split_at(payload_offset)<span class="question-mark">?</span>;
+
+    <span class="kw">let </span>payload_len = payload_len
+        .checked_sub(pn_len)
+        .ok_or(Error::InvalidPacket)<span class="question-mark">?</span>;
+
+    <span class="kw">let </span><span class="kw-2">mut </span>ciphertext = payload.peek_bytes_mut(payload_len)<span class="question-mark">?</span>;
+
+    <span class="kw">let </span>payload_len =
+        aead.open_with_u64_counter(pn, header.as_ref(), ciphertext.as_mut())<span class="question-mark">?</span>;
+
+    <span class="prelude-val">Ok</span>(b.get_bytes(payload_len)<span class="question-mark">?</span>)
+}
+
+<span class="kw">pub fn </span>encrypt_hdr(
+    b: <span class="kw-2">&amp;mut </span>octets::OctetsMut, pn_len: usize, payload: <span class="kw-2">&amp;</span>[u8], aead: <span class="kw-2">&amp;</span>crypto::Seal,
+) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+    <span class="kw">let </span>sample = <span class="kw-2">&amp;</span>payload
+        [MAX_PKT_NUM_LEN - pn_len..SAMPLE_LEN + (MAX_PKT_NUM_LEN - pn_len)];
+
+    <span class="kw">let </span>mask = aead.new_mask(sample)<span class="question-mark">?</span>;
+
+    <span class="kw">let </span>(<span class="kw-2">mut </span>first, <span class="kw-2">mut </span>rest) = b.split_at(<span class="number">1</span>)<span class="question-mark">?</span>;
+
+    <span class="kw">let </span>first = first.as_mut();
+
+    <span class="kw">if </span>Header::is_long(first[<span class="number">0</span>]) {
+        first[<span class="number">0</span>] ^= mask[<span class="number">0</span>] &amp; <span class="number">0x0f</span>;
+    } <span class="kw">else </span>{
+        first[<span class="number">0</span>] ^= mask[<span class="number">0</span>] &amp; <span class="number">0x1f</span>;
+    }
+
+    <span class="kw">let </span>pn_buf = rest.slice_last(pn_len)<span class="question-mark">?</span>;
+    <span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..pn_len {
+        pn_buf[i] ^= mask[i + <span class="number">1</span>];
+    }
+
+    <span class="prelude-val">Ok</span>(())
+}
+
+<span class="kw">pub fn </span>encrypt_pkt(
+    b: <span class="kw-2">&amp;mut </span>octets::OctetsMut, pn: u64, pn_len: usize, payload_len: usize,
+    payload_offset: usize, extra_in: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>[u8]&gt;, aead: <span class="kw-2">&amp;</span>crypto::Seal,
+) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+    <span class="kw">let </span>(<span class="kw-2">mut </span>header, <span class="kw-2">mut </span>payload) = b.split_at(payload_offset)<span class="question-mark">?</span>;
+
+    <span class="kw">let </span>ciphertext_len = aead.seal_with_u64_counter(
+        pn,
+        header.as_ref(),
+        payload.as_mut(),
+        payload_len,
+        extra_in,
+    )<span class="question-mark">?</span>;
+
+    encrypt_hdr(<span class="kw-2">&amp;mut </span>header, pn_len, payload.as_ref(), aead)<span class="question-mark">?</span>;
+
+    <span class="prelude-val">Ok</span>(payload_offset + ciphertext_len)
+}
+
+<span class="kw">pub fn </span>encode_pkt_num(pn: u64, b: <span class="kw-2">&amp;mut </span>octets::OctetsMut) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+    <span class="kw">let </span>len = pkt_num_len(pn)<span class="question-mark">?</span>;
+
+    <span class="kw">match </span>len {
+        <span class="number">1 </span>=&gt; b.put_u8(pn <span class="kw">as </span>u8)<span class="question-mark">?</span>,
+
+        <span class="number">2 </span>=&gt; b.put_u16(pn <span class="kw">as </span>u16)<span class="question-mark">?</span>,
+
+        <span class="number">3 </span>=&gt; b.put_u24(pn <span class="kw">as </span>u32)<span class="question-mark">?</span>,
+
+        <span class="number">4 </span>=&gt; b.put_u32(pn <span class="kw">as </span>u32)<span class="question-mark">?</span>,
+
+        <span class="kw">_ </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidPacket),
+    };
+
+    <span class="prelude-val">Ok</span>(())
+}
+
+<span class="kw">pub fn </span>negotiate_version(
+    scid: <span class="kw-2">&amp;</span>[u8], dcid: <span class="kw-2">&amp;</span>[u8], out: <span class="kw-2">&amp;mut </span>[u8],
+) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+    <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(out);
+
+    <span class="kw">let </span>first = rand::rand_u8() | FORM_BIT;
+
+    b.put_u8(first)<span class="question-mark">?</span>;
+    b.put_u32(<span class="number">0</span>)<span class="question-mark">?</span>;
+
+    b.put_u8(scid.len() <span class="kw">as </span>u8)<span class="question-mark">?</span>;
+    b.put_bytes(scid)<span class="question-mark">?</span>;
+    b.put_u8(dcid.len() <span class="kw">as </span>u8)<span class="question-mark">?</span>;
+    b.put_bytes(dcid)<span class="question-mark">?</span>;
+    b.put_u32(<span class="kw">crate</span>::PROTOCOL_VERSION_V1)<span class="question-mark">?</span>;
+
+    <span class="prelude-val">Ok</span>(b.off())
+}
+
+<span class="kw">pub fn </span>retry(
+    scid: <span class="kw-2">&amp;</span>[u8], dcid: <span class="kw-2">&amp;</span>[u8], new_scid: <span class="kw-2">&amp;</span>[u8], token: <span class="kw-2">&amp;</span>[u8], version: u32,
+    out: <span class="kw-2">&amp;mut </span>[u8],
+) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+    <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(out);
+
+    <span class="kw">if </span>!<span class="kw">crate</span>::version_is_supported(version) {
+        <span class="kw">return </span><span class="prelude-val">Err</span>(Error::UnknownVersion);
+    }
+
+    <span class="kw">let </span>hdr = Header {
+        ty: Type::Retry,
+        version,
+        dcid: ConnectionId::from_ref(scid),
+        scid: ConnectionId::from_ref(new_scid),
+        pkt_num: <span class="number">0</span>,
+        pkt_num_len: <span class="number">0</span>,
+        token: <span class="prelude-val">Some</span>(token.to_vec()),
+        versions: <span class="prelude-val">None</span>,
+        key_phase: <span class="bool-val">false</span>,
+    };
+
+    hdr.to_bytes(<span class="kw-2">&amp;mut </span>b)<span class="question-mark">?</span>;
+
+    <span class="kw">let </span>tag = compute_retry_integrity_tag(<span class="kw-2">&amp;</span>b, dcid, version)<span class="question-mark">?</span>;
+
+    b.put_bytes(tag.as_ref())<span class="question-mark">?</span>;
+
+    <span class="prelude-val">Ok</span>(b.off())
+}
+
+<span class="kw">pub fn </span>verify_retry_integrity(
+    b: <span class="kw-2">&amp;</span>octets::OctetsMut, odcid: <span class="kw-2">&amp;</span>[u8], version: u32,
+) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+    <span class="kw">let </span>tag = compute_retry_integrity_tag(b, odcid, version)<span class="question-mark">?</span>;
+
+    ring::constant_time::verify_slices_are_equal(
+        <span class="kw-2">&amp;</span>b.as_ref()[..aead::AES_128_GCM.tag_len()],
+        tag.as_ref(),
+    )
+    .map_err(|<span class="kw">_</span>| Error::CryptoFail)<span class="question-mark">?</span>;
+
+    <span class="prelude-val">Ok</span>(())
+}
+
+<span class="kw">fn </span>compute_retry_integrity_tag(
+    b: <span class="kw-2">&amp;</span>octets::OctetsMut, odcid: <span class="kw-2">&amp;</span>[u8], version: u32,
+) -&gt; <span class="prelude-ty">Result</span>&lt;aead::Tag&gt; {
+    <span class="kw">const </span>RETRY_INTEGRITY_KEY_V1: [u8; <span class="number">16</span>] = [
+        <span class="number">0xbe</span>, <span class="number">0x0c</span>, <span class="number">0x69</span>, <span class="number">0x0b</span>, <span class="number">0x9f</span>, <span class="number">0x66</span>, <span class="number">0x57</span>, <span class="number">0x5a</span>, <span class="number">0x1d</span>, <span class="number">0x76</span>, <span class="number">0x6b</span>, <span class="number">0x54</span>,
+        <span class="number">0xe3</span>, <span class="number">0x68</span>, <span class="number">0xc8</span>, <span class="number">0x4e</span>,
+    ];
+
+    <span class="kw">const </span>RETRY_INTEGRITY_NONCE_V1: [u8; aead::NONCE_LEN] = [
+        <span class="number">0x46</span>, <span class="number">0x15</span>, <span class="number">0x99</span>, <span class="number">0xd3</span>, <span class="number">0x5d</span>, <span class="number">0x63</span>, <span class="number">0x2b</span>, <span class="number">0xf2</span>, <span class="number">0x23</span>, <span class="number">0x98</span>, <span class="number">0x25</span>, <span class="number">0xbb</span>,
+    ];
+
+    <span class="kw">let </span>(key, nonce) = <span class="kw">match </span>version {
+        <span class="kw">crate</span>::PROTOCOL_VERSION_V1 =&gt;
+            (<span class="kw-2">&amp;</span>RETRY_INTEGRITY_KEY_V1, RETRY_INTEGRITY_NONCE_V1),
+
+        <span class="kw">_ </span>=&gt; (<span class="kw-2">&amp;</span>RETRY_INTEGRITY_KEY_V1, RETRY_INTEGRITY_NONCE_V1),
+    };
+
+    <span class="kw">let </span>hdr_len = b.off();
+
+    <span class="kw">let </span><span class="kw-2">mut </span>pseudo = <span class="macro">vec!</span>[<span class="number">0</span>; <span class="number">1 </span>+ odcid.len() + hdr_len];
+
+    <span class="kw">let </span><span class="kw-2">mut </span>pb = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>pseudo);
+
+    pb.put_u8(odcid.len() <span class="kw">as </span>u8)<span class="question-mark">?</span>;
+    pb.put_bytes(odcid)<span class="question-mark">?</span>;
+    pb.put_bytes(<span class="kw-2">&amp;</span>b.buf()[..hdr_len])<span class="question-mark">?</span>;
+
+    <span class="kw">let </span>key = aead::LessSafeKey::new(
+        aead::UnboundKey::new(<span class="kw-2">&amp;</span>aead::AES_128_GCM, key)
+            .map_err(|<span class="kw">_</span>| Error::CryptoFail)<span class="question-mark">?</span>,
+    );
+
+    <span class="kw">let </span>nonce = aead::Nonce::assume_unique_for_key(nonce);
+
+    <span class="kw">let </span>aad = aead::Aad::from(<span class="kw-2">&amp;</span>pseudo);
+
+    key.seal_in_place_separate_tag(nonce, aad, <span class="kw-2">&amp;mut </span>[])
+        .map_err(|<span class="kw">_</span>| Error::CryptoFail)
+}
+
+<span class="kw">pub struct </span>KeyUpdate {
+    <span class="doccomment">/// 1-RTT key used prior to a key update.
+    </span><span class="kw">pub </span>crypto_open: crypto::Open,
+
+    <span class="doccomment">/// The packet number triggered the latest key-update.
+    ///
+    /// Incoming packets with lower pn should use this (prev) crypto key.
+    </span><span class="kw">pub </span>pn_on_update: u64,
+
+    <span class="doccomment">/// Whether ACK frame for key-update has been sent.
+    </span><span class="kw">pub </span>update_acked: bool,
+
+    <span class="doccomment">/// When the old key should be discarded.
+    </span><span class="kw">pub </span>timer: time::Instant,
+}
+
+<span class="kw">pub struct </span>PktNumSpace {
+    <span class="kw">pub </span>largest_rx_pkt_num: u64,
+
+    <span class="kw">pub </span>largest_rx_pkt_time: time::Instant,
+
+    <span class="kw">pub </span>largest_rx_non_probing_pkt_num: u64,
+
+    <span class="kw">pub </span>next_pkt_num: u64,
+
+    <span class="kw">pub </span>recv_pkt_need_ack: ranges::RangeSet,
+
+    <span class="kw">pub </span>recv_pkt_num: PktNumWindow,
+
+    <span class="kw">pub </span>ack_elicited: bool,
+
+    <span class="kw">pub </span>key_update: <span class="prelude-ty">Option</span>&lt;KeyUpdate&gt;,
+
+    <span class="kw">pub </span>crypto_open: <span class="prelude-ty">Option</span>&lt;crypto::Open&gt;,
+    <span class="kw">pub </span>crypto_seal: <span class="prelude-ty">Option</span>&lt;crypto::Seal&gt;,
+
+    <span class="kw">pub </span>crypto_0rtt_open: <span class="prelude-ty">Option</span>&lt;crypto::Open&gt;,
+
+    <span class="kw">pub </span>crypto_stream: stream::Stream,
+}
+
+<span class="kw">impl </span>PktNumSpace {
+    <span class="kw">pub fn </span>new() -&gt; PktNumSpace {
+        PktNumSpace {
+            largest_rx_pkt_num: <span class="number">0</span>,
+
+            largest_rx_pkt_time: time::Instant::now(),
+
+            largest_rx_non_probing_pkt_num: <span class="number">0</span>,
+
+            next_pkt_num: <span class="number">0</span>,
+
+            recv_pkt_need_ack: ranges::RangeSet::new(<span class="kw">crate</span>::MAX_ACK_RANGES),
+
+            recv_pkt_num: PktNumWindow::default(),
+
+            ack_elicited: <span class="bool-val">false</span>,
+
+            key_update: <span class="prelude-val">None</span>,
+
+            crypto_open: <span class="prelude-val">None</span>,
+            crypto_seal: <span class="prelude-val">None</span>,
+
+            crypto_0rtt_open: <span class="prelude-val">None</span>,
+
+            crypto_stream: stream::Stream::new(
+                <span class="number">0</span>, <span class="comment">// dummy
+                </span>u64::MAX,
+                u64::MAX,
+                <span class="bool-val">true</span>,
+                <span class="bool-val">true</span>,
+                stream::MAX_STREAM_WINDOW,
+            ),
+        }
+    }
+
+    <span class="kw">pub fn </span>clear(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="self">self</span>.crypto_stream = stream::Stream::new(
+            <span class="number">0</span>, <span class="comment">// dummy
+            </span>u64::MAX,
+            u64::MAX,
+            <span class="bool-val">true</span>,
+            <span class="bool-val">true</span>,
+            stream::MAX_STREAM_WINDOW,
+        );
+
+        <span class="self">self</span>.ack_elicited = <span class="bool-val">false</span>;
+    }
+
+    <span class="kw">pub fn </span>crypto_overhead(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;usize&gt; {
+        <span class="prelude-val">Some</span>(<span class="self">self</span>.crypto_seal.as_ref()<span class="question-mark">?</span>.alg().tag_len())
+    }
+
+    <span class="kw">pub fn </span>ready(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.crypto_stream.is_flushable() || <span class="self">self</span>.ack_elicited
+    }
+
+    <span class="kw">pub fn </span>has_keys(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.crypto_open.is_some() &amp;&amp; <span class="self">self</span>.crypto_seal.is_some()
+    }
+}
+
+<span class="attr">#[derive(Clone, Copy, Default)]
+</span><span class="kw">pub struct </span>PktNumWindow {
+    lower: u64,
+    window: u128,
+}
+
+<span class="kw">impl </span>PktNumWindow {
+    <span class="kw">pub fn </span>insert(<span class="kw-2">&amp;mut </span><span class="self">self</span>, seq: u64) {
+        <span class="comment">// Packet is on the left end of the window.
+        </span><span class="kw">if </span>seq &lt; <span class="self">self</span>.lower {
+            <span class="kw">return</span>;
+        }
+
+        <span class="comment">// Packet is on the right end of the window.
+        </span><span class="kw">if </span>seq &gt; <span class="self">self</span>.upper() {
+            <span class="kw">let </span>diff = seq - <span class="self">self</span>.upper();
+            <span class="self">self</span>.lower += diff;
+
+            <span class="self">self</span>.window = <span class="self">self</span>.window.checked_shl(diff <span class="kw">as </span>u32).unwrap_or(<span class="number">0</span>);
+        }
+
+        <span class="kw">let </span>mask = <span class="number">1_u128 </span>&lt;&lt; (<span class="self">self</span>.upper() - seq);
+        <span class="self">self</span>.window |= mask;
+    }
+
+    <span class="kw">pub fn </span>contains(<span class="kw-2">&amp;mut </span><span class="self">self</span>, seq: u64) -&gt; bool {
+        <span class="comment">// Packet is on the right end of the window.
+        </span><span class="kw">if </span>seq &gt; <span class="self">self</span>.upper() {
+            <span class="kw">return </span><span class="bool-val">false</span>;
+        }
+
+        <span class="comment">// Packet is on the left end of the window.
+        </span><span class="kw">if </span>seq &lt; <span class="self">self</span>.lower {
+            <span class="kw">return </span><span class="bool-val">true</span>;
+        }
+
+        <span class="kw">let </span>mask = <span class="number">1_u128 </span>&lt;&lt; (<span class="self">self</span>.upper() - seq);
+        <span class="self">self</span>.window &amp; mask != <span class="number">0
+    </span>}
+
+    <span class="kw">fn </span>upper(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.lower
+            .saturating_add(std::mem::size_of::&lt;u128&gt;() <span class="kw">as </span>u64 * <span class="number">8</span>) -
+            <span class="number">1
+    </span>}
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>retry() {
+        <span class="kw">let </span>hdr = Header {
+            ty: Type::Retry,
+            version: <span class="number">0xafafafaf</span>,
+            dcid: <span class="macro">vec!</span>[<span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>]
+                .into(),
+            scid: <span class="macro">vec!</span>[<span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>].into(),
+            pkt_num: <span class="number">0</span>,
+            pkt_num_len: <span class="number">0</span>,
+            token: <span class="prelude-val">Some</span>(<span class="macro">vec!</span>[<span class="number">0xba</span>; <span class="number">24</span>]),
+            versions: <span class="prelude-val">None</span>,
+            key_phase: <span class="bool-val">false</span>,
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0</span>; <span class="number">63</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert!</span>(hdr.to_bytes(<span class="kw-2">&amp;mut </span>b).is_ok());
+
+        <span class="comment">// Add fake retry integrity token.
+        </span>b.put_bytes(<span class="kw-2">&amp;</span>[<span class="number">0xba</span>; <span class="number">16</span>]).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert_eq!</span>(Header::from_bytes(<span class="kw-2">&amp;mut </span>b, <span class="number">9</span>).unwrap(), hdr);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>initial() {
+        <span class="kw">let </span>hdr = Header {
+            ty: Type::Initial,
+            version: <span class="number">0xafafafaf</span>,
+            dcid: <span class="macro">vec!</span>[<span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>]
+                .into(),
+            scid: <span class="macro">vec!</span>[<span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>].into(),
+            pkt_num: <span class="number">0</span>,
+            pkt_num_len: <span class="number">0</span>,
+            token: <span class="prelude-val">Some</span>(<span class="macro">vec!</span>[<span class="number">0x05</span>, <span class="number">0x06</span>, <span class="number">0x07</span>, <span class="number">0x08</span>]),
+            versions: <span class="prelude-val">None</span>,
+            key_phase: <span class="bool-val">false</span>,
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0</span>; <span class="number">50</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert!</span>(hdr.to_bytes(<span class="kw-2">&amp;mut </span>b).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert_eq!</span>(Header::from_bytes(<span class="kw-2">&amp;mut </span>b, <span class="number">9</span>).unwrap(), hdr);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>initial_v1_dcid_too_long() {
+        <span class="kw">let </span>hdr = Header {
+            ty: Type::Initial,
+            version: <span class="kw">crate</span>::PROTOCOL_VERSION,
+            dcid: <span class="macro">vec!</span>[
+                <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>,
+                <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>,
+            ]
+            .into(),
+            scid: <span class="macro">vec!</span>[<span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>].into(),
+            pkt_num: <span class="number">0</span>,
+            pkt_num_len: <span class="number">0</span>,
+            token: <span class="prelude-val">Some</span>(<span class="macro">vec!</span>[<span class="number">0x05</span>, <span class="number">0x06</span>, <span class="number">0x07</span>, <span class="number">0x08</span>]),
+            versions: <span class="prelude-val">None</span>,
+            key_phase: <span class="bool-val">false</span>,
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0</span>; <span class="number">50</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert!</span>(hdr.to_bytes(<span class="kw-2">&amp;mut </span>b).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert_eq!</span>(Header::from_bytes(<span class="kw-2">&amp;mut </span>b, <span class="number">21</span>), <span class="prelude-val">Err</span>(Error::InvalidPacket));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>initial_v1_scid_too_long() {
+        <span class="kw">let </span>hdr = Header {
+            ty: Type::Initial,
+            version: <span class="kw">crate</span>::PROTOCOL_VERSION,
+            dcid: <span class="macro">vec!</span>[<span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>]
+                .into(),
+            scid: <span class="macro">vec!</span>[
+                <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>,
+                <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>,
+            ]
+            .into(),
+            pkt_num: <span class="number">0</span>,
+            pkt_num_len: <span class="number">0</span>,
+            token: <span class="prelude-val">Some</span>(<span class="macro">vec!</span>[<span class="number">0x05</span>, <span class="number">0x06</span>, <span class="number">0x07</span>, <span class="number">0x08</span>]),
+            versions: <span class="prelude-val">None</span>,
+            key_phase: <span class="bool-val">false</span>,
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0</span>; <span class="number">50</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert!</span>(hdr.to_bytes(<span class="kw-2">&amp;mut </span>b).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert_eq!</span>(Header::from_bytes(<span class="kw-2">&amp;mut </span>b, <span class="number">9</span>), <span class="prelude-val">Err</span>(Error::InvalidPacket));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>initial_non_v1_scid_long() {
+        <span class="kw">let </span>hdr = Header {
+            ty: Type::Initial,
+            version: <span class="number">0xafafafaf</span>,
+            dcid: <span class="macro">vec!</span>[<span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>]
+                .into(),
+            scid: <span class="macro">vec!</span>[
+                <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>,
+                <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>,
+            ]
+            .into(),
+            pkt_num: <span class="number">0</span>,
+            pkt_num_len: <span class="number">0</span>,
+            token: <span class="prelude-val">Some</span>(<span class="macro">vec!</span>[<span class="number">0x05</span>, <span class="number">0x06</span>, <span class="number">0x07</span>, <span class="number">0x08</span>]),
+            versions: <span class="prelude-val">None</span>,
+            key_phase: <span class="bool-val">false</span>,
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0</span>; <span class="number">50</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert!</span>(hdr.to_bytes(<span class="kw-2">&amp;mut </span>b).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert_eq!</span>(Header::from_bytes(<span class="kw-2">&amp;mut </span>b, <span class="number">9</span>).unwrap(), hdr);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>handshake() {
+        <span class="kw">let </span>hdr = Header {
+            ty: Type::Handshake,
+            version: <span class="number">0xafafafaf</span>,
+            dcid: <span class="macro">vec!</span>[<span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>]
+                .into(),
+            scid: <span class="macro">vec!</span>[<span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>, <span class="number">0xbb</span>].into(),
+            pkt_num: <span class="number">0</span>,
+            pkt_num_len: <span class="number">0</span>,
+            token: <span class="prelude-val">None</span>,
+            versions: <span class="prelude-val">None</span>,
+            key_phase: <span class="bool-val">false</span>,
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0</span>; <span class="number">50</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert!</span>(hdr.to_bytes(<span class="kw-2">&amp;mut </span>b).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert_eq!</span>(Header::from_bytes(<span class="kw-2">&amp;mut </span>b, <span class="number">9</span>).unwrap(), hdr);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>application() {
+        <span class="kw">let </span>hdr = Header {
+            ty: Type::Short,
+            version: <span class="number">0</span>,
+            dcid: <span class="macro">vec!</span>[<span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xba</span>]
+                .into(),
+            scid: ConnectionId::default(),
+            pkt_num: <span class="number">0</span>,
+            pkt_num_len: <span class="number">0</span>,
+            token: <span class="prelude-val">None</span>,
+            versions: <span class="prelude-val">None</span>,
+            key_phase: <span class="bool-val">false</span>,
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>d = [<span class="number">0</span>; <span class="number">50</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert!</span>(hdr.to_bytes(<span class="kw-2">&amp;mut </span>b).is_ok());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+        <span class="macro">assert_eq!</span>(Header::from_bytes(<span class="kw-2">&amp;mut </span>b, <span class="number">9</span>).unwrap(), hdr);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>pkt_num_decode() {
+        <span class="kw">let </span>pn = decode_pkt_num(<span class="number">0xa82f30ea</span>, <span class="number">0x9b32</span>, <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(pn, <span class="number">0xa82f9b32</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>pkt_num_window() {
+        <span class="kw">let </span><span class="kw-2">mut </span>win = PktNumWindow::default();
+        <span class="macro">assert_eq!</span>(win.lower, <span class="number">0</span>);
+        <span class="macro">assert!</span>(!win.contains(<span class="number">0</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">1</span>));
+
+        win.insert(<span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(win.lower, <span class="number">0</span>);
+        <span class="macro">assert!</span>(win.contains(<span class="number">0</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">1</span>));
+
+        win.insert(<span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(win.lower, <span class="number">0</span>);
+        <span class="macro">assert!</span>(win.contains(<span class="number">0</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">1</span>));
+
+        win.insert(<span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(win.lower, <span class="number">0</span>);
+        <span class="macro">assert!</span>(win.contains(<span class="number">0</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">1</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">2</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">3</span>));
+
+        win.insert(<span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(win.lower, <span class="number">0</span>);
+        <span class="macro">assert!</span>(win.contains(<span class="number">0</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">1</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">2</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">3</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">4</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">5</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">6</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">7</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">8</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">9</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">10</span>));
+
+        win.insert(<span class="number">132</span>);
+        <span class="macro">assert_eq!</span>(win.lower, <span class="number">5</span>);
+        <span class="macro">assert!</span>(win.contains(<span class="number">0</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">1</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">2</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">3</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">4</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">5</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">6</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">7</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">8</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">9</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">10</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">128</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">130</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">131</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">132</span>));
+
+        win.insert(<span class="number">1024</span>);
+        <span class="macro">assert_eq!</span>(win.lower, <span class="number">897</span>);
+        <span class="macro">assert!</span>(win.contains(<span class="number">0</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">1</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">2</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">3</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">4</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">5</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">6</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">7</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">8</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">9</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">10</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">128</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">130</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">132</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">896</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">897</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">1022</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">1023</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">1024</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">1025</span>));
+        <span class="macro">assert!</span>(!win.contains(<span class="number">1026</span>));
+
+        win.insert(u64::MAX - <span class="number">1</span>);
+        <span class="macro">assert!</span>(win.contains(<span class="number">0</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">1</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">2</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">3</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">4</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">5</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">6</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">7</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">8</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">9</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">10</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">128</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">130</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">132</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">896</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">897</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">1022</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">1023</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">1024</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">1025</span>));
+        <span class="macro">assert!</span>(win.contains(<span class="number">1026</span>));
+        <span class="macro">assert!</span>(!win.contains(u64::MAX - <span class="number">2</span>));
+        <span class="macro">assert!</span>(win.contains(u64::MAX - <span class="number">1</span>));
+    }
+
+    <span class="kw">fn </span>assert_decrypt_initial_pkt(
+        pkt: <span class="kw-2">&amp;mut </span>[u8], dcid: <span class="kw-2">&amp;</span>[u8], is_server: bool, expected_frames: <span class="kw-2">&amp;</span>[u8],
+        expected_pn: u64, expected_pn_len: usize,
+    ) {
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(pkt);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>hdr = Header::from_bytes(<span class="kw-2">&amp;mut </span>b, <span class="number">0</span>).unwrap();
+        <span class="macro">assert_eq!</span>(hdr.ty, Type::Initial);
+
+        <span class="kw">let </span>payload_len = b.get_varint().unwrap() <span class="kw">as </span>usize;
+
+        <span class="kw">let </span>(aead, <span class="kw">_</span>) =
+            crypto::derive_initial_key_material(dcid, hdr.version, is_server)
+                .unwrap();
+
+        decrypt_hdr(<span class="kw-2">&amp;mut </span>b, <span class="kw-2">&amp;mut </span>hdr, <span class="kw-2">&amp;</span>aead).unwrap();
+        <span class="macro">assert_eq!</span>(hdr.pkt_num_len, expected_pn_len);
+
+        <span class="kw">let </span>pn = decode_pkt_num(<span class="number">0</span>, hdr.pkt_num, hdr.pkt_num_len);
+        <span class="macro">assert_eq!</span>(pn, expected_pn);
+
+        <span class="kw">let </span>payload =
+            decrypt_pkt(<span class="kw-2">&amp;mut </span>b, pn, hdr.pkt_num_len, payload_len, <span class="kw-2">&amp;</span>aead).unwrap();
+
+        <span class="kw">let </span>payload = payload.as_ref();
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>payload[..expected_frames.len()], expected_frames);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>decrypt_client_initial_v1() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pkt = [
+            <span class="number">0xc0</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x01</span>, <span class="number">0x08</span>, <span class="number">0x83</span>, <span class="number">0x94</span>, <span class="number">0xc8</span>, <span class="number">0xf0</span>, <span class="number">0x3e</span>,
+            <span class="number">0x51</span>, <span class="number">0x57</span>, <span class="number">0x08</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x44</span>, <span class="number">0x9e</span>, <span class="number">0x7b</span>, <span class="number">0x9a</span>, <span class="number">0xec</span>, <span class="number">0x34</span>,
+            <span class="number">0xd1</span>, <span class="number">0xb1</span>, <span class="number">0xc9</span>, <span class="number">0x8d</span>, <span class="number">0xd7</span>, <span class="number">0x68</span>, <span class="number">0x9f</span>, <span class="number">0xb8</span>, <span class="number">0xec</span>, <span class="number">0x11</span>, <span class="number">0xd2</span>,
+            <span class="number">0x42</span>, <span class="number">0xb1</span>, <span class="number">0x23</span>, <span class="number">0xdc</span>, <span class="number">0x9b</span>, <span class="number">0xd8</span>, <span class="number">0xba</span>, <span class="number">0xb9</span>, <span class="number">0x36</span>, <span class="number">0xb4</span>, <span class="number">0x7d</span>,
+            <span class="number">0x92</span>, <span class="number">0xec</span>, <span class="number">0x35</span>, <span class="number">0x6c</span>, <span class="number">0x0b</span>, <span class="number">0xab</span>, <span class="number">0x7d</span>, <span class="number">0xf5</span>, <span class="number">0x97</span>, <span class="number">0x6d</span>, <span class="number">0x27</span>,
+            <span class="number">0xcd</span>, <span class="number">0x44</span>, <span class="number">0x9f</span>, <span class="number">0x63</span>, <span class="number">0x30</span>, <span class="number">0x00</span>, <span class="number">0x99</span>, <span class="number">0xf3</span>, <span class="number">0x99</span>, <span class="number">0x1c</span>, <span class="number">0x26</span>,
+            <span class="number">0x0e</span>, <span class="number">0xc4</span>, <span class="number">0xc6</span>, <span class="number">0x0d</span>, <span class="number">0x17</span>, <span class="number">0xb3</span>, <span class="number">0x1f</span>, <span class="number">0x84</span>, <span class="number">0x29</span>, <span class="number">0x15</span>, <span class="number">0x7b</span>,
+            <span class="number">0xb3</span>, <span class="number">0x5a</span>, <span class="number">0x12</span>, <span class="number">0x82</span>, <span class="number">0xa6</span>, <span class="number">0x43</span>, <span class="number">0xa8</span>, <span class="number">0xd2</span>, <span class="number">0x26</span>, <span class="number">0x2c</span>, <span class="number">0xad</span>,
+            <span class="number">0x67</span>, <span class="number">0x50</span>, <span class="number">0x0c</span>, <span class="number">0xad</span>, <span class="number">0xb8</span>, <span class="number">0xe7</span>, <span class="number">0x37</span>, <span class="number">0x8c</span>, <span class="number">0x8e</span>, <span class="number">0xb7</span>, <span class="number">0x53</span>,
+            <span class="number">0x9e</span>, <span class="number">0xc4</span>, <span class="number">0xd4</span>, <span class="number">0x90</span>, <span class="number">0x5f</span>, <span class="number">0xed</span>, <span class="number">0x1b</span>, <span class="number">0xee</span>, <span class="number">0x1f</span>, <span class="number">0xc8</span>, <span class="number">0xaa</span>,
+            <span class="number">0xfb</span>, <span class="number">0xa1</span>, <span class="number">0x7c</span>, <span class="number">0x75</span>, <span class="number">0x0e</span>, <span class="number">0x2c</span>, <span class="number">0x7a</span>, <span class="number">0xce</span>, <span class="number">0x01</span>, <span class="number">0xe6</span>, <span class="number">0x00</span>,
+            <span class="number">0x5f</span>, <span class="number">0x80</span>, <span class="number">0xfc</span>, <span class="number">0xb7</span>, <span class="number">0xdf</span>, <span class="number">0x62</span>, <span class="number">0x12</span>, <span class="number">0x30</span>, <span class="number">0xc8</span>, <span class="number">0x37</span>, <span class="number">0x11</span>,
+            <span class="number">0xb3</span>, <span class="number">0x93</span>, <span class="number">0x43</span>, <span class="number">0xfa</span>, <span class="number">0x02</span>, <span class="number">0x8c</span>, <span class="number">0xea</span>, <span class="number">0x7f</span>, <span class="number">0x7f</span>, <span class="number">0xb5</span>, <span class="number">0xff</span>,
+            <span class="number">0x89</span>, <span class="number">0xea</span>, <span class="number">0xc2</span>, <span class="number">0x30</span>, <span class="number">0x82</span>, <span class="number">0x49</span>, <span class="number">0xa0</span>, <span class="number">0x22</span>, <span class="number">0x52</span>, <span class="number">0x15</span>, <span class="number">0x5e</span>,
+            <span class="number">0x23</span>, <span class="number">0x47</span>, <span class="number">0xb6</span>, <span class="number">0x3d</span>, <span class="number">0x58</span>, <span class="number">0xc5</span>, <span class="number">0x45</span>, <span class="number">0x7a</span>, <span class="number">0xfd</span>, <span class="number">0x84</span>, <span class="number">0xd0</span>,
+            <span class="number">0x5d</span>, <span class="number">0xff</span>, <span class="number">0xfd</span>, <span class="number">0xb2</span>, <span class="number">0x03</span>, <span class="number">0x92</span>, <span class="number">0x84</span>, <span class="number">0x4a</span>, <span class="number">0xe8</span>, <span class="number">0x12</span>, <span class="number">0x15</span>,
+            <span class="number">0x46</span>, <span class="number">0x82</span>, <span class="number">0xe9</span>, <span class="number">0xcf</span>, <span class="number">0x01</span>, <span class="number">0x2f</span>, <span class="number">0x90</span>, <span class="number">0x21</span>, <span class="number">0xa6</span>, <span class="number">0xf0</span>, <span class="number">0xbe</span>,
+            <span class="number">0x17</span>, <span class="number">0xdd</span>, <span class="number">0xd0</span>, <span class="number">0xc2</span>, <span class="number">0x08</span>, <span class="number">0x4d</span>, <span class="number">0xce</span>, <span class="number">0x25</span>, <span class="number">0xff</span>, <span class="number">0x9b</span>, <span class="number">0x06</span>,
+            <span class="number">0xcd</span>, <span class="number">0xe5</span>, <span class="number">0x35</span>, <span class="number">0xd0</span>, <span class="number">0xf9</span>, <span class="number">0x20</span>, <span class="number">0xa2</span>, <span class="number">0xdb</span>, <span class="number">0x1b</span>, <span class="number">0xf3</span>, <span class="number">0x62</span>,
+            <span class="number">0xc2</span>, <span class="number">0x3e</span>, <span class="number">0x59</span>, <span class="number">0x6d</span>, <span class="number">0xee</span>, <span class="number">0x38</span>, <span class="number">0xf5</span>, <span class="number">0xa6</span>, <span class="number">0xcf</span>, <span class="number">0x39</span>, <span class="number">0x48</span>,
+            <span class="number">0x83</span>, <span class="number">0x8a</span>, <span class="number">0x3a</span>, <span class="number">0xec</span>, <span class="number">0x4e</span>, <span class="number">0x15</span>, <span class="number">0xda</span>, <span class="number">0xf8</span>, <span class="number">0x50</span>, <span class="number">0x0a</span>, <span class="number">0x6e</span>,
+            <span class="number">0xf6</span>, <span class="number">0x9e</span>, <span class="number">0xc4</span>, <span class="number">0xe3</span>, <span class="number">0xfe</span>, <span class="number">0xb6</span>, <span class="number">0xb1</span>, <span class="number">0xd9</span>, <span class="number">0x8e</span>, <span class="number">0x61</span>, <span class="number">0x0a</span>,
+            <span class="number">0xc8</span>, <span class="number">0xb7</span>, <span class="number">0xec</span>, <span class="number">0x3f</span>, <span class="number">0xaf</span>, <span class="number">0x6a</span>, <span class="number">0xd7</span>, <span class="number">0x60</span>, <span class="number">0xb7</span>, <span class="number">0xba</span>, <span class="number">0xd1</span>,
+            <span class="number">0xdb</span>, <span class="number">0x4b</span>, <span class="number">0xa3</span>, <span class="number">0x48</span>, <span class="number">0x5e</span>, <span class="number">0x8a</span>, <span class="number">0x94</span>, <span class="number">0xdc</span>, <span class="number">0x25</span>, <span class="number">0x0a</span>, <span class="number">0xe3</span>,
+            <span class="number">0xfd</span>, <span class="number">0xb4</span>, <span class="number">0x1e</span>, <span class="number">0xd1</span>, <span class="number">0x5f</span>, <span class="number">0xb6</span>, <span class="number">0xa8</span>, <span class="number">0xe5</span>, <span class="number">0xeb</span>, <span class="number">0xa0</span>, <span class="number">0xfc</span>,
+            <span class="number">0x3d</span>, <span class="number">0xd6</span>, <span class="number">0x0b</span>, <span class="number">0xc8</span>, <span class="number">0xe3</span>, <span class="number">0x0c</span>, <span class="number">0x5c</span>, <span class="number">0x42</span>, <span class="number">0x87</span>, <span class="number">0xe5</span>, <span class="number">0x38</span>,
+            <span class="number">0x05</span>, <span class="number">0xdb</span>, <span class="number">0x05</span>, <span class="number">0x9a</span>, <span class="number">0xe0</span>, <span class="number">0x64</span>, <span class="number">0x8d</span>, <span class="number">0xb2</span>, <span class="number">0xf6</span>, <span class="number">0x42</span>, <span class="number">0x64</span>,
+            <span class="number">0xed</span>, <span class="number">0x5e</span>, <span class="number">0x39</span>, <span class="number">0xbe</span>, <span class="number">0x2e</span>, <span class="number">0x20</span>, <span class="number">0xd8</span>, <span class="number">0x2d</span>, <span class="number">0xf5</span>, <span class="number">0x66</span>, <span class="number">0xda</span>,
+            <span class="number">0x8d</span>, <span class="number">0xd5</span>, <span class="number">0x99</span>, <span class="number">0x8c</span>, <span class="number">0xca</span>, <span class="number">0xbd</span>, <span class="number">0xae</span>, <span class="number">0x05</span>, <span class="number">0x30</span>, <span class="number">0x60</span>, <span class="number">0xae</span>,
+            <span class="number">0x6c</span>, <span class="number">0x7b</span>, <span class="number">0x43</span>, <span class="number">0x78</span>, <span class="number">0xe8</span>, <span class="number">0x46</span>, <span class="number">0xd2</span>, <span class="number">0x9f</span>, <span class="number">0x37</span>, <span class="number">0xed</span>, <span class="number">0x7b</span>,
+            <span class="number">0x4e</span>, <span class="number">0xa9</span>, <span class="number">0xec</span>, <span class="number">0x5d</span>, <span class="number">0x82</span>, <span class="number">0xe7</span>, <span class="number">0x96</span>, <span class="number">0x1b</span>, <span class="number">0x7f</span>, <span class="number">0x25</span>, <span class="number">0xa9</span>,
+            <span class="number">0x32</span>, <span class="number">0x38</span>, <span class="number">0x51</span>, <span class="number">0xf6</span>, <span class="number">0x81</span>, <span class="number">0xd5</span>, <span class="number">0x82</span>, <span class="number">0x36</span>, <span class="number">0x3a</span>, <span class="number">0xa5</span>, <span class="number">0xf8</span>,
+            <span class="number">0x99</span>, <span class="number">0x37</span>, <span class="number">0xf5</span>, <span class="number">0xa6</span>, <span class="number">0x72</span>, <span class="number">0x58</span>, <span class="number">0xbf</span>, <span class="number">0x63</span>, <span class="number">0xad</span>, <span class="number">0x6f</span>, <span class="number">0x1a</span>,
+            <span class="number">0x0b</span>, <span class="number">0x1d</span>, <span class="number">0x96</span>, <span class="number">0xdb</span>, <span class="number">0xd4</span>, <span class="number">0xfa</span>, <span class="number">0xdd</span>, <span class="number">0xfc</span>, <span class="number">0xef</span>, <span class="number">0xc5</span>, <span class="number">0x26</span>,
+            <span class="number">0x6b</span>, <span class="number">0xa6</span>, <span class="number">0x61</span>, <span class="number">0x17</span>, <span class="number">0x22</span>, <span class="number">0x39</span>, <span class="number">0x5c</span>, <span class="number">0x90</span>, <span class="number">0x65</span>, <span class="number">0x56</span>, <span class="number">0xbe</span>,
+            <span class="number">0x52</span>, <span class="number">0xaf</span>, <span class="number">0xe3</span>, <span class="number">0xf5</span>, <span class="number">0x65</span>, <span class="number">0x63</span>, <span class="number">0x6a</span>, <span class="number">0xd1</span>, <span class="number">0xb1</span>, <span class="number">0x7d</span>, <span class="number">0x50</span>,
+            <span class="number">0x8b</span>, <span class="number">0x73</span>, <span class="number">0xd8</span>, <span class="number">0x74</span>, <span class="number">0x3e</span>, <span class="number">0xeb</span>, <span class="number">0x52</span>, <span class="number">0x4b</span>, <span class="number">0xe2</span>, <span class="number">0x2b</span>, <span class="number">0x3d</span>,
+            <span class="number">0xcb</span>, <span class="number">0xc2</span>, <span class="number">0xc7</span>, <span class="number">0x46</span>, <span class="number">0x8d</span>, <span class="number">0x54</span>, <span class="number">0x11</span>, <span class="number">0x9c</span>, <span class="number">0x74</span>, <span class="number">0x68</span>, <span class="number">0x44</span>,
+            <span class="number">0x9a</span>, <span class="number">0x13</span>, <span class="number">0xd8</span>, <span class="number">0xe3</span>, <span class="number">0xb9</span>, <span class="number">0x58</span>, <span class="number">0x11</span>, <span class="number">0xa1</span>, <span class="number">0x98</span>, <span class="number">0xf3</span>, <span class="number">0x49</span>,
+            <span class="number">0x1d</span>, <span class="number">0xe3</span>, <span class="number">0xe7</span>, <span class="number">0xfe</span>, <span class="number">0x94</span>, <span class="number">0x2b</span>, <span class="number">0x33</span>, <span class="number">0x04</span>, <span class="number">0x07</span>, <span class="number">0xab</span>, <span class="number">0xf8</span>,
+            <span class="number">0x2a</span>, <span class="number">0x4e</span>, <span class="number">0xd7</span>, <span class="number">0xc1</span>, <span class="number">0xb3</span>, <span class="number">0x11</span>, <span class="number">0x66</span>, <span class="number">0x3a</span>, <span class="number">0xc6</span>, <span class="number">0x98</span>, <span class="number">0x90</span>,
+            <span class="number">0xf4</span>, <span class="number">0x15</span>, <span class="number">0x70</span>, <span class="number">0x15</span>, <span class="number">0x85</span>, <span class="number">0x3d</span>, <span class="number">0x91</span>, <span class="number">0xe9</span>, <span class="number">0x23</span>, <span class="number">0x03</span>, <span class="number">0x7c</span>,
+            <span class="number">0x22</span>, <span class="number">0x7a</span>, <span class="number">0x33</span>, <span class="number">0xcd</span>, <span class="number">0xd5</span>, <span class="number">0xec</span>, <span class="number">0x28</span>, <span class="number">0x1c</span>, <span class="number">0xa3</span>, <span class="number">0xf7</span>, <span class="number">0x9c</span>,
+            <span class="number">0x44</span>, <span class="number">0x54</span>, <span class="number">0x6b</span>, <span class="number">0x9d</span>, <span class="number">0x90</span>, <span class="number">0xca</span>, <span class="number">0x00</span>, <span class="number">0xf0</span>, <span class="number">0x64</span>, <span class="number">0xc9</span>, <span class="number">0x9e</span>,
+            <span class="number">0x3d</span>, <span class="number">0xd9</span>, <span class="number">0x79</span>, <span class="number">0x11</span>, <span class="number">0xd3</span>, <span class="number">0x9f</span>, <span class="number">0xe9</span>, <span class="number">0xc5</span>, <span class="number">0xd0</span>, <span class="number">0xb2</span>, <span class="number">0x3a</span>,
+            <span class="number">0x22</span>, <span class="number">0x9a</span>, <span class="number">0x23</span>, <span class="number">0x4c</span>, <span class="number">0xb3</span>, <span class="number">0x61</span>, <span class="number">0x86</span>, <span class="number">0xc4</span>, <span class="number">0x81</span>, <span class="number">0x9e</span>, <span class="number">0x8b</span>,
+            <span class="number">0x9c</span>, <span class="number">0x59</span>, <span class="number">0x27</span>, <span class="number">0x72</span>, <span class="number">0x66</span>, <span class="number">0x32</span>, <span class="number">0x29</span>, <span class="number">0x1d</span>, <span class="number">0x6a</span>, <span class="number">0x41</span>, <span class="number">0x82</span>,
+            <span class="number">0x11</span>, <span class="number">0xcc</span>, <span class="number">0x29</span>, <span class="number">0x62</span>, <span class="number">0xe2</span>, <span class="number">0x0f</span>, <span class="number">0xe4</span>, <span class="number">0x7f</span>, <span class="number">0xeb</span>, <span class="number">0x3e</span>, <span class="number">0xdf</span>,
+            <span class="number">0x33</span>, <span class="number">0x0f</span>, <span class="number">0x2c</span>, <span class="number">0x60</span>, <span class="number">0x3a</span>, <span class="number">0x9d</span>, <span class="number">0x48</span>, <span class="number">0xc0</span>, <span class="number">0xfc</span>, <span class="number">0xb5</span>, <span class="number">0x69</span>,
+            <span class="number">0x9d</span>, <span class="number">0xbf</span>, <span class="number">0xe5</span>, <span class="number">0x89</span>, <span class="number">0x64</span>, <span class="number">0x25</span>, <span class="number">0xc5</span>, <span class="number">0xba</span>, <span class="number">0xc4</span>, <span class="number">0xae</span>, <span class="number">0xe8</span>,
+            <span class="number">0x2e</span>, <span class="number">0x57</span>, <span class="number">0xa8</span>, <span class="number">0x5a</span>, <span class="number">0xaf</span>, <span class="number">0x4e</span>, <span class="number">0x25</span>, <span class="number">0x13</span>, <span class="number">0xe4</span>, <span class="number">0xf0</span>, <span class="number">0x57</span>,
+            <span class="number">0x96</span>, <span class="number">0xb0</span>, <span class="number">0x7b</span>, <span class="number">0xa2</span>, <span class="number">0xee</span>, <span class="number">0x47</span>, <span class="number">0xd8</span>, <span class="number">0x05</span>, <span class="number">0x06</span>, <span class="number">0xf8</span>, <span class="number">0xd2</span>,
+            <span class="number">0xc2</span>, <span class="number">0x5e</span>, <span class="number">0x50</span>, <span class="number">0xfd</span>, <span class="number">0x14</span>, <span class="number">0xde</span>, <span class="number">0x71</span>, <span class="number">0xe6</span>, <span class="number">0xc4</span>, <span class="number">0x18</span>, <span class="number">0x55</span>,
+            <span class="number">0x93</span>, <span class="number">0x02</span>, <span class="number">0xf9</span>, <span class="number">0x39</span>, <span class="number">0xb0</span>, <span class="number">0xe1</span>, <span class="number">0xab</span>, <span class="number">0xd5</span>, <span class="number">0x76</span>, <span class="number">0xf2</span>, <span class="number">0x79</span>,
+            <span class="number">0xc4</span>, <span class="number">0xb2</span>, <span class="number">0xe0</span>, <span class="number">0xfe</span>, <span class="number">0xb8</span>, <span class="number">0x5c</span>, <span class="number">0x1f</span>, <span class="number">0x28</span>, <span class="number">0xff</span>, <span class="number">0x18</span>, <span class="number">0xf5</span>,
+            <span class="number">0x88</span>, <span class="number">0x91</span>, <span class="number">0xff</span>, <span class="number">0xef</span>, <span class="number">0x13</span>, <span class="number">0x2e</span>, <span class="number">0xef</span>, <span class="number">0x2f</span>, <span class="number">0xa0</span>, <span class="number">0x93</span>, <span class="number">0x46</span>,
+            <span class="number">0xae</span>, <span class="number">0xe3</span>, <span class="number">0x3c</span>, <span class="number">0x28</span>, <span class="number">0xeb</span>, <span class="number">0x13</span>, <span class="number">0x0f</span>, <span class="number">0xf2</span>, <span class="number">0x8f</span>, <span class="number">0x5b</span>, <span class="number">0x76</span>,
+            <span class="number">0x69</span>, <span class="number">0x53</span>, <span class="number">0x33</span>, <span class="number">0x41</span>, <span class="number">0x13</span>, <span class="number">0x21</span>, <span class="number">0x19</span>, <span class="number">0x96</span>, <span class="number">0xd2</span>, <span class="number">0x00</span>, <span class="number">0x11</span>,
+            <span class="number">0xa1</span>, <span class="number">0x98</span>, <span class="number">0xe3</span>, <span class="number">0xfc</span>, <span class="number">0x43</span>, <span class="number">0x3f</span>, <span class="number">0x9f</span>, <span class="number">0x25</span>, <span class="number">0x41</span>, <span class="number">0x01</span>, <span class="number">0x0a</span>,
+            <span class="number">0xe1</span>, <span class="number">0x7c</span>, <span class="number">0x1b</span>, <span class="number">0xf2</span>, <span class="number">0x02</span>, <span class="number">0x58</span>, <span class="number">0x0f</span>, <span class="number">0x60</span>, <span class="number">0x47</span>, <span class="number">0x47</span>, <span class="number">0x2f</span>,
+            <span class="number">0xb3</span>, <span class="number">0x68</span>, <span class="number">0x57</span>, <span class="number">0xfe</span>, <span class="number">0x84</span>, <span class="number">0x3b</span>, <span class="number">0x19</span>, <span class="number">0xf5</span>, <span class="number">0x98</span>, <span class="number">0x40</span>, <span class="number">0x09</span>,
+            <span class="number">0xdd</span>, <span class="number">0xc3</span>, <span class="number">0x24</span>, <span class="number">0x04</span>, <span class="number">0x4e</span>, <span class="number">0x84</span>, <span class="number">0x7a</span>, <span class="number">0x4f</span>, <span class="number">0x4a</span>, <span class="number">0x0a</span>, <span class="number">0xb3</span>,
+            <span class="number">0x4f</span>, <span class="number">0x71</span>, <span class="number">0x95</span>, <span class="number">0x95</span>, <span class="number">0xde</span>, <span class="number">0x37</span>, <span class="number">0x25</span>, <span class="number">0x2d</span>, <span class="number">0x62</span>, <span class="number">0x35</span>, <span class="number">0x36</span>,
+            <span class="number">0x5e</span>, <span class="number">0x9b</span>, <span class="number">0x84</span>, <span class="number">0x39</span>, <span class="number">0x2b</span>, <span class="number">0x06</span>, <span class="number">0x10</span>, <span class="number">0x85</span>, <span class="number">0x34</span>, <span class="number">0x9d</span>, <span class="number">0x73</span>,
+            <span class="number">0x20</span>, <span class="number">0x3a</span>, <span class="number">0x4a</span>, <span class="number">0x13</span>, <span class="number">0xe9</span>, <span class="number">0x6f</span>, <span class="number">0x54</span>, <span class="number">0x32</span>, <span class="number">0xec</span>, <span class="number">0x0f</span>, <span class="number">0xd4</span>,
+            <span class="number">0xa1</span>, <span class="number">0xee</span>, <span class="number">0x65</span>, <span class="number">0xac</span>, <span class="number">0xcd</span>, <span class="number">0xd5</span>, <span class="number">0xe3</span>, <span class="number">0x90</span>, <span class="number">0x4d</span>, <span class="number">0xf5</span>, <span class="number">0x4c</span>,
+            <span class="number">0x1d</span>, <span class="number">0xa5</span>, <span class="number">0x10</span>, <span class="number">0xb0</span>, <span class="number">0xff</span>, <span class="number">0x20</span>, <span class="number">0xdc</span>, <span class="number">0xc0</span>, <span class="number">0xc7</span>, <span class="number">0x7f</span>, <span class="number">0xcb</span>,
+            <span class="number">0x2c</span>, <span class="number">0x0e</span>, <span class="number">0x0e</span>, <span class="number">0xb6</span>, <span class="number">0x05</span>, <span class="number">0xcb</span>, <span class="number">0x05</span>, <span class="number">0x04</span>, <span class="number">0xdb</span>, <span class="number">0x87</span>, <span class="number">0x63</span>,
+            <span class="number">0x2c</span>, <span class="number">0xf3</span>, <span class="number">0xd8</span>, <span class="number">0xb4</span>, <span class="number">0xda</span>, <span class="number">0xe6</span>, <span class="number">0xe7</span>, <span class="number">0x05</span>, <span class="number">0x76</span>, <span class="number">0x9d</span>, <span class="number">0x1d</span>,
+            <span class="number">0xe3</span>, <span class="number">0x54</span>, <span class="number">0x27</span>, <span class="number">0x01</span>, <span class="number">0x23</span>, <span class="number">0xcb</span>, <span class="number">0x11</span>, <span class="number">0x45</span>, <span class="number">0x0e</span>, <span class="number">0xfc</span>, <span class="number">0x60</span>,
+            <span class="number">0xac</span>, <span class="number">0x47</span>, <span class="number">0x68</span>, <span class="number">0x3d</span>, <span class="number">0x7b</span>, <span class="number">0x8d</span>, <span class="number">0x0f</span>, <span class="number">0x81</span>, <span class="number">0x13</span>, <span class="number">0x65</span>, <span class="number">0x56</span>,
+            <span class="number">0x5f</span>, <span class="number">0xd9</span>, <span class="number">0x8c</span>, <span class="number">0x4c</span>, <span class="number">0x8e</span>, <span class="number">0xb9</span>, <span class="number">0x36</span>, <span class="number">0xbc</span>, <span class="number">0xab</span>, <span class="number">0x8d</span>, <span class="number">0x06</span>,
+            <span class="number">0x9f</span>, <span class="number">0xc3</span>, <span class="number">0x3b</span>, <span class="number">0xd8</span>, <span class="number">0x01</span>, <span class="number">0xb0</span>, <span class="number">0x3a</span>, <span class="number">0xde</span>, <span class="number">0xa2</span>, <span class="number">0xe1</span>, <span class="number">0xfb</span>,
+            <span class="number">0xc5</span>, <span class="number">0xaa</span>, <span class="number">0x46</span>, <span class="number">0x3d</span>, <span class="number">0x08</span>, <span class="number">0xca</span>, <span class="number">0x19</span>, <span class="number">0x89</span>, <span class="number">0x6d</span>, <span class="number">0x2b</span>, <span class="number">0xf5</span>,
+            <span class="number">0x9a</span>, <span class="number">0x07</span>, <span class="number">0x1b</span>, <span class="number">0x85</span>, <span class="number">0x1e</span>, <span class="number">0x6c</span>, <span class="number">0x23</span>, <span class="number">0x90</span>, <span class="number">0x52</span>, <span class="number">0x17</span>, <span class="number">0x2f</span>,
+            <span class="number">0x29</span>, <span class="number">0x6b</span>, <span class="number">0xfb</span>, <span class="number">0x5e</span>, <span class="number">0x72</span>, <span class="number">0x40</span>, <span class="number">0x47</span>, <span class="number">0x90</span>, <span class="number">0xa2</span>, <span class="number">0x18</span>, <span class="number">0x10</span>,
+            <span class="number">0x14</span>, <span class="number">0xf3</span>, <span class="number">0xb9</span>, <span class="number">0x4a</span>, <span class="number">0x4e</span>, <span class="number">0x97</span>, <span class="number">0xd1</span>, <span class="number">0x17</span>, <span class="number">0xb4</span>, <span class="number">0x38</span>, <span class="number">0x13</span>,
+            <span class="number">0x03</span>, <span class="number">0x68</span>, <span class="number">0xcc</span>, <span class="number">0x39</span>, <span class="number">0xdb</span>, <span class="number">0xb2</span>, <span class="number">0xd1</span>, <span class="number">0x98</span>, <span class="number">0x06</span>, <span class="number">0x5a</span>, <span class="number">0xe3</span>,
+            <span class="number">0x98</span>, <span class="number">0x65</span>, <span class="number">0x47</span>, <span class="number">0x92</span>, <span class="number">0x6c</span>, <span class="number">0xd2</span>, <span class="number">0x16</span>, <span class="number">0x2f</span>, <span class="number">0x40</span>, <span class="number">0xa2</span>, <span class="number">0x9f</span>,
+            <span class="number">0x0c</span>, <span class="number">0x3c</span>, <span class="number">0x87</span>, <span class="number">0x45</span>, <span class="number">0xc0</span>, <span class="number">0xf5</span>, <span class="number">0x0f</span>, <span class="number">0xba</span>, <span class="number">0x38</span>, <span class="number">0x52</span>, <span class="number">0xe5</span>,
+            <span class="number">0x66</span>, <span class="number">0xd4</span>, <span class="number">0x45</span>, <span class="number">0x75</span>, <span class="number">0xc2</span>, <span class="number">0x9d</span>, <span class="number">0x39</span>, <span class="number">0xa0</span>, <span class="number">0x3f</span>, <span class="number">0x0c</span>, <span class="number">0xda</span>,
+            <span class="number">0x72</span>, <span class="number">0x19</span>, <span class="number">0x84</span>, <span class="number">0xb6</span>, <span class="number">0xf4</span>, <span class="number">0x40</span>, <span class="number">0x59</span>, <span class="number">0x1f</span>, <span class="number">0x35</span>, <span class="number">0x5e</span>, <span class="number">0x12</span>,
+            <span class="number">0xd4</span>, <span class="number">0x39</span>, <span class="number">0xff</span>, <span class="number">0x15</span>, <span class="number">0x0a</span>, <span class="number">0xab</span>, <span class="number">0x76</span>, <span class="number">0x13</span>, <span class="number">0x49</span>, <span class="number">0x9d</span>, <span class="number">0xbd</span>,
+            <span class="number">0x49</span>, <span class="number">0xad</span>, <span class="number">0xab</span>, <span class="number">0xc8</span>, <span class="number">0x67</span>, <span class="number">0x6e</span>, <span class="number">0xef</span>, <span class="number">0x02</span>, <span class="number">0x3b</span>, <span class="number">0x15</span>, <span class="number">0xb6</span>,
+            <span class="number">0x5b</span>, <span class="number">0xfc</span>, <span class="number">0x5c</span>, <span class="number">0xa0</span>, <span class="number">0x69</span>, <span class="number">0x48</span>, <span class="number">0x10</span>, <span class="number">0x9f</span>, <span class="number">0x23</span>, <span class="number">0xf3</span>, <span class="number">0x50</span>,
+            <span class="number">0xdb</span>, <span class="number">0x82</span>, <span class="number">0x12</span>, <span class="number">0x35</span>, <span class="number">0x35</span>, <span class="number">0xeb</span>, <span class="number">0x8a</span>, <span class="number">0x74</span>, <span class="number">0x33</span>, <span class="number">0xbd</span>, <span class="number">0xab</span>,
+            <span class="number">0xcb</span>, <span class="number">0x90</span>, <span class="number">0x92</span>, <span class="number">0x71</span>, <span class="number">0xa6</span>, <span class="number">0xec</span>, <span class="number">0xbc</span>, <span class="number">0xb5</span>, <span class="number">0x8b</span>, <span class="number">0x93</span>, <span class="number">0x6a</span>,
+            <span class="number">0x88</span>, <span class="number">0xcd</span>, <span class="number">0x4e</span>, <span class="number">0x8f</span>, <span class="number">0x2e</span>, <span class="number">0x6f</span>, <span class="number">0xf5</span>, <span class="number">0x80</span>, <span class="number">0x01</span>, <span class="number">0x75</span>, <span class="number">0xf1</span>,
+            <span class="number">0x13</span>, <span class="number">0x25</span>, <span class="number">0x3d</span>, <span class="number">0x8f</span>, <span class="number">0xa9</span>, <span class="number">0xca</span>, <span class="number">0x88</span>, <span class="number">0x85</span>, <span class="number">0xc2</span>, <span class="number">0xf5</span>, <span class="number">0x52</span>,
+            <span class="number">0xe6</span>, <span class="number">0x57</span>, <span class="number">0xdc</span>, <span class="number">0x60</span>, <span class="number">0x3f</span>, <span class="number">0x25</span>, <span class="number">0x2e</span>, <span class="number">0x1a</span>, <span class="number">0x8e</span>, <span class="number">0x30</span>, <span class="number">0x8f</span>,
+            <span class="number">0x76</span>, <span class="number">0xf0</span>, <span class="number">0xbe</span>, <span class="number">0x79</span>, <span class="number">0xe2</span>, <span class="number">0xfb</span>, <span class="number">0x8f</span>, <span class="number">0x5d</span>, <span class="number">0x5f</span>, <span class="number">0xbb</span>, <span class="number">0xe2</span>,
+            <span class="number">0xe3</span>, <span class="number">0x0e</span>, <span class="number">0xca</span>, <span class="number">0xdd</span>, <span class="number">0x22</span>, <span class="number">0x07</span>, <span class="number">0x23</span>, <span class="number">0xc8</span>, <span class="number">0xc0</span>, <span class="number">0xae</span>, <span class="number">0xa8</span>,
+            <span class="number">0x07</span>, <span class="number">0x8c</span>, <span class="number">0xdf</span>, <span class="number">0xcb</span>, <span class="number">0x38</span>, <span class="number">0x68</span>, <span class="number">0x26</span>, <span class="number">0x3f</span>, <span class="number">0xf8</span>, <span class="number">0xf0</span>, <span class="number">0x94</span>,
+            <span class="number">0x00</span>, <span class="number">0x54</span>, <span class="number">0xda</span>, <span class="number">0x48</span>, <span class="number">0x78</span>, <span class="number">0x18</span>, <span class="number">0x93</span>, <span class="number">0xa7</span>, <span class="number">0xe4</span>, <span class="number">0x9a</span>, <span class="number">0xd5</span>,
+            <span class="number">0xaf</span>, <span class="number">0xf4</span>, <span class="number">0xaf</span>, <span class="number">0x30</span>, <span class="number">0x0c</span>, <span class="number">0xd8</span>, <span class="number">0x04</span>, <span class="number">0xa6</span>, <span class="number">0xb6</span>, <span class="number">0x27</span>, <span class="number">0x9a</span>,
+            <span class="number">0xb3</span>, <span class="number">0xff</span>, <span class="number">0x3a</span>, <span class="number">0xfb</span>, <span class="number">0x64</span>, <span class="number">0x49</span>, <span class="number">0x1c</span>, <span class="number">0x85</span>, <span class="number">0x19</span>, <span class="number">0x4a</span>, <span class="number">0xab</span>,
+            <span class="number">0x76</span>, <span class="number">0x0d</span>, <span class="number">0x58</span>, <span class="number">0xa6</span>, <span class="number">0x06</span>, <span class="number">0x65</span>, <span class="number">0x4f</span>, <span class="number">0x9f</span>, <span class="number">0x44</span>, <span class="number">0x00</span>, <span class="number">0xe8</span>,
+            <span class="number">0xb3</span>, <span class="number">0x85</span>, <span class="number">0x91</span>, <span class="number">0x35</span>, <span class="number">0x6f</span>, <span class="number">0xbf</span>, <span class="number">0x64</span>, <span class="number">0x25</span>, <span class="number">0xac</span>, <span class="number">0xa2</span>, <span class="number">0x6d</span>,
+            <span class="number">0xc8</span>, <span class="number">0x52</span>, <span class="number">0x44</span>, <span class="number">0x25</span>, <span class="number">0x9f</span>, <span class="number">0xf2</span>, <span class="number">0xb1</span>, <span class="number">0x9c</span>, <span class="number">0x41</span>, <span class="number">0xb9</span>, <span class="number">0xf9</span>,
+            <span class="number">0x6f</span>, <span class="number">0x3c</span>, <span class="number">0xa9</span>, <span class="number">0xec</span>, <span class="number">0x1d</span>, <span class="number">0xde</span>, <span class="number">0x43</span>, <span class="number">0x4d</span>, <span class="number">0xa7</span>, <span class="number">0xd2</span>, <span class="number">0xd3</span>,
+            <span class="number">0x92</span>, <span class="number">0xb9</span>, <span class="number">0x05</span>, <span class="number">0xdd</span>, <span class="number">0xf3</span>, <span class="number">0xd1</span>, <span class="number">0xf9</span>, <span class="number">0xaf</span>, <span class="number">0x93</span>, <span class="number">0xd1</span>, <span class="number">0xaf</span>,
+            <span class="number">0x59</span>, <span class="number">0x50</span>, <span class="number">0xbd</span>, <span class="number">0x49</span>, <span class="number">0x3f</span>, <span class="number">0x5a</span>, <span class="number">0xa7</span>, <span class="number">0x31</span>, <span class="number">0xb4</span>, <span class="number">0x05</span>, <span class="number">0x6d</span>,
+            <span class="number">0xf3</span>, <span class="number">0x1b</span>, <span class="number">0xd2</span>, <span class="number">0x67</span>, <span class="number">0xb6</span>, <span class="number">0xb9</span>, <span class="number">0x0a</span>, <span class="number">0x07</span>, <span class="number">0x98</span>, <span class="number">0x31</span>, <span class="number">0xaa</span>,
+            <span class="number">0xf5</span>, <span class="number">0x79</span>, <span class="number">0xbe</span>, <span class="number">0x0a</span>, <span class="number">0x39</span>, <span class="number">0x01</span>, <span class="number">0x31</span>, <span class="number">0x37</span>, <span class="number">0xaa</span>, <span class="number">0xc6</span>, <span class="number">0xd4</span>,
+            <span class="number">0x04</span>, <span class="number">0xf5</span>, <span class="number">0x18</span>, <span class="number">0xcf</span>, <span class="number">0xd4</span>, <span class="number">0x68</span>, <span class="number">0x40</span>, <span class="number">0x64</span>, <span class="number">0x7e</span>, <span class="number">0x78</span>, <span class="number">0xbf</span>,
+            <span class="number">0xe7</span>, <span class="number">0x06</span>, <span class="number">0xca</span>, <span class="number">0x4c</span>, <span class="number">0xf5</span>, <span class="number">0xe9</span>, <span class="number">0xc5</span>, <span class="number">0x45</span>, <span class="number">0x3e</span>, <span class="number">0x9f</span>, <span class="number">0x7c</span>,
+            <span class="number">0xfd</span>, <span class="number">0x2b</span>, <span class="number">0x8b</span>, <span class="number">0x4c</span>, <span class="number">0x8d</span>, <span class="number">0x16</span>, <span class="number">0x9a</span>, <span class="number">0x44</span>, <span class="number">0xe5</span>, <span class="number">0x5c</span>, <span class="number">0x88</span>,
+            <span class="number">0xd4</span>, <span class="number">0xa9</span>, <span class="number">0xa7</span>, <span class="number">0xf9</span>, <span class="number">0x47</span>, <span class="number">0x42</span>, <span class="number">0x41</span>, <span class="number">0x10</span>, <span class="number">0x92</span>, <span class="number">0xab</span>, <span class="number">0xbd</span>,
+            <span class="number">0xf8</span>, <span class="number">0xb8</span>, <span class="number">0x89</span>, <span class="number">0xe5</span>, <span class="number">0xc1</span>, <span class="number">0x99</span>, <span class="number">0xd0</span>, <span class="number">0x96</span>, <span class="number">0xe3</span>, <span class="number">0xf2</span>, <span class="number">0x47</span>,
+            <span class="number">0x88</span>,
+        ];
+
+        <span class="kw">let </span>dcid = [<span class="number">0x83</span>, <span class="number">0x94</span>, <span class="number">0xc8</span>, <span class="number">0xf0</span>, <span class="number">0x3e</span>, <span class="number">0x51</span>, <span class="number">0x57</span>, <span class="number">0x08</span>];
+
+        <span class="kw">let </span>frames = [
+            <span class="number">0x06</span>, <span class="number">0x00</span>, <span class="number">0x40</span>, <span class="number">0xf1</span>, <span class="number">0x01</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0xed</span>, <span class="number">0x03</span>, <span class="number">0x03</span>, <span class="number">0xeb</span>,
+            <span class="number">0xf8</span>, <span class="number">0xfa</span>, <span class="number">0x56</span>, <span class="number">0xf1</span>, <span class="number">0x29</span>, <span class="number">0x39</span>, <span class="number">0xb9</span>, <span class="number">0x58</span>, <span class="number">0x4a</span>, <span class="number">0x38</span>, <span class="number">0x96</span>,
+            <span class="number">0x47</span>, <span class="number">0x2e</span>, <span class="number">0xc4</span>, <span class="number">0x0b</span>, <span class="number">0xb8</span>, <span class="number">0x63</span>, <span class="number">0xcf</span>, <span class="number">0xd3</span>, <span class="number">0xe8</span>, <span class="number">0x68</span>, <span class="number">0x04</span>,
+            <span class="number">0xfe</span>, <span class="number">0x3a</span>, <span class="number">0x47</span>, <span class="number">0xf0</span>, <span class="number">0x6a</span>, <span class="number">0x2b</span>, <span class="number">0x69</span>, <span class="number">0x48</span>, <span class="number">0x4c</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x04</span>, <span class="number">0x13</span>, <span class="number">0x01</span>, <span class="number">0x13</span>, <span class="number">0x02</span>, <span class="number">0x01</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0xc0</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x10</span>, <span class="number">0x00</span>, <span class="number">0x0e</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x0b</span>, <span class="number">0x65</span>, <span class="number">0x78</span>, <span class="number">0x61</span>, <span class="number">0x6d</span>,
+            <span class="number">0x70</span>, <span class="number">0x6c</span>, <span class="number">0x65</span>, <span class="number">0x2e</span>, <span class="number">0x63</span>, <span class="number">0x6f</span>, <span class="number">0x6d</span>, <span class="number">0xff</span>, <span class="number">0x01</span>, <span class="number">0x00</span>, <span class="number">0x01</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x0a</span>, <span class="number">0x00</span>, <span class="number">0x08</span>, <span class="number">0x00</span>, <span class="number">0x06</span>, <span class="number">0x00</span>, <span class="number">0x1d</span>, <span class="number">0x00</span>, <span class="number">0x17</span>,
+            <span class="number">0x00</span>, <span class="number">0x18</span>, <span class="number">0x00</span>, <span class="number">0x10</span>, <span class="number">0x00</span>, <span class="number">0x07</span>, <span class="number">0x00</span>, <span class="number">0x05</span>, <span class="number">0x04</span>, <span class="number">0x61</span>, <span class="number">0x6c</span>,
+            <span class="number">0x70</span>, <span class="number">0x6e</span>, <span class="number">0x00</span>, <span class="number">0x05</span>, <span class="number">0x00</span>, <span class="number">0x05</span>, <span class="number">0x01</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x33</span>, <span class="number">0x00</span>, <span class="number">0x26</span>, <span class="number">0x00</span>, <span class="number">0x24</span>, <span class="number">0x00</span>, <span class="number">0x1d</span>, <span class="number">0x00</span>, <span class="number">0x20</span>, <span class="number">0x93</span>,
+            <span class="number">0x70</span>, <span class="number">0xb2</span>, <span class="number">0xc9</span>, <span class="number">0xca</span>, <span class="number">0xa4</span>, <span class="number">0x7f</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xf4</span>, <span class="number">0x55</span>, <span class="number">0x9f</span>,
+            <span class="number">0xed</span>, <span class="number">0xba</span>, <span class="number">0x75</span>, <span class="number">0x3d</span>, <span class="number">0xe1</span>, <span class="number">0x71</span>, <span class="number">0xfa</span>, <span class="number">0x71</span>, <span class="number">0xf5</span>, <span class="number">0x0f</span>, <span class="number">0x1c</span>,
+            <span class="number">0xe1</span>, <span class="number">0x5d</span>, <span class="number">0x43</span>, <span class="number">0xe9</span>, <span class="number">0x94</span>, <span class="number">0xec</span>, <span class="number">0x74</span>, <span class="number">0xd7</span>, <span class="number">0x48</span>, <span class="number">0x00</span>, <span class="number">0x2b</span>,
+            <span class="number">0x00</span>, <span class="number">0x03</span>, <span class="number">0x02</span>, <span class="number">0x03</span>, <span class="number">0x04</span>, <span class="number">0x00</span>, <span class="number">0x0d</span>, <span class="number">0x00</span>, <span class="number">0x10</span>, <span class="number">0x00</span>, <span class="number">0x0e</span>,
+            <span class="number">0x04</span>, <span class="number">0x03</span>, <span class="number">0x05</span>, <span class="number">0x03</span>, <span class="number">0x06</span>, <span class="number">0x03</span>, <span class="number">0x02</span>, <span class="number">0x03</span>, <span class="number">0x08</span>, <span class="number">0x04</span>, <span class="number">0x08</span>,
+            <span class="number">0x05</span>, <span class="number">0x08</span>, <span class="number">0x06</span>, <span class="number">0x00</span>, <span class="number">0x2d</span>, <span class="number">0x00</span>, <span class="number">0x02</span>, <span class="number">0x01</span>, <span class="number">0x01</span>, <span class="number">0x00</span>, <span class="number">0x1c</span>,
+            <span class="number">0x00</span>, <span class="number">0x02</span>, <span class="number">0x40</span>, <span class="number">0x01</span>, <span class="number">0xff</span>, <span class="number">0xa5</span>, <span class="number">0x00</span>, <span class="number">0x32</span>, <span class="number">0x04</span>, <span class="number">0x08</span>, <span class="number">0xff</span>,
+            <span class="number">0xff</span>, <span class="number">0xff</span>, <span class="number">0xff</span>, <span class="number">0xff</span>, <span class="number">0xff</span>, <span class="number">0xff</span>, <span class="number">0xff</span>, <span class="number">0x05</span>, <span class="number">0x04</span>, <span class="number">0x80</span>, <span class="number">0x00</span>,
+            <span class="number">0xff</span>, <span class="number">0xff</span>, <span class="number">0x07</span>, <span class="number">0x04</span>, <span class="number">0x80</span>, <span class="number">0x00</span>, <span class="number">0xff</span>, <span class="number">0xff</span>, <span class="number">0x08</span>, <span class="number">0x01</span>, <span class="number">0x10</span>,
+            <span class="number">0x01</span>, <span class="number">0x04</span>, <span class="number">0x80</span>, <span class="number">0x00</span>, <span class="number">0x75</span>, <span class="number">0x30</span>, <span class="number">0x09</span>, <span class="number">0x01</span>, <span class="number">0x10</span>, <span class="number">0x0f</span>, <span class="number">0x08</span>,
+            <span class="number">0x83</span>, <span class="number">0x94</span>, <span class="number">0xc8</span>, <span class="number">0xf0</span>, <span class="number">0x3e</span>, <span class="number">0x51</span>, <span class="number">0x57</span>, <span class="number">0x08</span>, <span class="number">0x06</span>, <span class="number">0x04</span>, <span class="number">0x80</span>,
+            <span class="number">0x00</span>, <span class="number">0xff</span>, <span class="number">0xff</span>,
+        ];
+
+        assert_decrypt_initial_pkt(<span class="kw-2">&amp;mut </span>pkt, <span class="kw-2">&amp;</span>dcid, <span class="bool-val">true</span>, <span class="kw-2">&amp;</span>frames, <span class="number">2</span>, <span class="number">4</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>decrypt_server_initial_v1() {
+        <span class="kw">let </span><span class="kw-2">mut </span>pkt = [
+            <span class="number">0xcf</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x01</span>, <span class="number">0x00</span>, <span class="number">0x08</span>, <span class="number">0xf0</span>, <span class="number">0x67</span>, <span class="number">0xa5</span>, <span class="number">0x50</span>,
+            <span class="number">0x2a</span>, <span class="number">0x42</span>, <span class="number">0x62</span>, <span class="number">0xb5</span>, <span class="number">0x00</span>, <span class="number">0x40</span>, <span class="number">0x75</span>, <span class="number">0xc0</span>, <span class="number">0xd9</span>, <span class="number">0x5a</span>, <span class="number">0x48</span>,
+            <span class="number">0x2c</span>, <span class="number">0xd0</span>, <span class="number">0x99</span>, <span class="number">0x1c</span>, <span class="number">0xd2</span>, <span class="number">0x5b</span>, <span class="number">0x0a</span>, <span class="number">0xac</span>, <span class="number">0x40</span>, <span class="number">0x6a</span>, <span class="number">0x58</span>,
+            <span class="number">0x16</span>, <span class="number">0xb6</span>, <span class="number">0x39</span>, <span class="number">0x41</span>, <span class="number">0x00</span>, <span class="number">0xf3</span>, <span class="number">0x7a</span>, <span class="number">0x1c</span>, <span class="number">0x69</span>, <span class="number">0x79</span>, <span class="number">0x75</span>,
+            <span class="number">0x54</span>, <span class="number">0x78</span>, <span class="number">0x0b</span>, <span class="number">0xb3</span>, <span class="number">0x8c</span>, <span class="number">0xc5</span>, <span class="number">0xa9</span>, <span class="number">0x9f</span>, <span class="number">0x5e</span>, <span class="number">0xde</span>, <span class="number">0x4c</span>,
+            <span class="number">0xf7</span>, <span class="number">0x3c</span>, <span class="number">0x3e</span>, <span class="number">0xc2</span>, <span class="number">0x49</span>, <span class="number">0x3a</span>, <span class="number">0x18</span>, <span class="number">0x39</span>, <span class="number">0xb3</span>, <span class="number">0xdb</span>, <span class="number">0xcb</span>,
+            <span class="number">0xa3</span>, <span class="number">0xf6</span>, <span class="number">0xea</span>, <span class="number">0x46</span>, <span class="number">0xc5</span>, <span class="number">0xb7</span>, <span class="number">0x68</span>, <span class="number">0x4d</span>, <span class="number">0xf3</span>, <span class="number">0x54</span>, <span class="number">0x8e</span>,
+            <span class="number">0x7d</span>, <span class="number">0xde</span>, <span class="number">0xb9</span>, <span class="number">0xc3</span>, <span class="number">0xbf</span>, <span class="number">0x9c</span>, <span class="number">0x73</span>, <span class="number">0xcc</span>, <span class="number">0x3f</span>, <span class="number">0x3b</span>, <span class="number">0xde</span>,
+            <span class="number">0xd7</span>, <span class="number">0x4b</span>, <span class="number">0x56</span>, <span class="number">0x2b</span>, <span class="number">0xfb</span>, <span class="number">0x19</span>, <span class="number">0xfb</span>, <span class="number">0x84</span>, <span class="number">0x02</span>, <span class="number">0x2f</span>, <span class="number">0x8e</span>,
+            <span class="number">0xf4</span>, <span class="number">0xcd</span>, <span class="number">0xd9</span>, <span class="number">0x37</span>, <span class="number">0x95</span>, <span class="number">0xd7</span>, <span class="number">0x7d</span>, <span class="number">0x06</span>, <span class="number">0xed</span>, <span class="number">0xbb</span>, <span class="number">0x7a</span>,
+            <span class="number">0xaf</span>, <span class="number">0x2f</span>, <span class="number">0x58</span>, <span class="number">0x89</span>, <span class="number">0x18</span>, <span class="number">0x50</span>, <span class="number">0xab</span>, <span class="number">0xbd</span>, <span class="number">0xca</span>, <span class="number">0x3d</span>, <span class="number">0x20</span>,
+            <span class="number">0x39</span>, <span class="number">0x8c</span>, <span class="number">0x27</span>, <span class="number">0x64</span>, <span class="number">0x56</span>, <span class="number">0xcb</span>, <span class="number">0xc4</span>, <span class="number">0x21</span>, <span class="number">0x58</span>, <span class="number">0x40</span>, <span class="number">0x7d</span>,
+            <span class="number">0xd0</span>, <span class="number">0x74</span>, <span class="number">0xee</span>,
+        ];
+
+        <span class="kw">let </span>dcid = [<span class="number">0x83</span>, <span class="number">0x94</span>, <span class="number">0xc8</span>, <span class="number">0xf0</span>, <span class="number">0x3e</span>, <span class="number">0x51</span>, <span class="number">0x57</span>, <span class="number">0x08</span>];
+
+        <span class="kw">let </span>frames = [
+            <span class="number">0x02</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x06</span>, <span class="number">0x00</span>, <span class="number">0x40</span>, <span class="number">0x5a</span>, <span class="number">0x02</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x56</span>, <span class="number">0x03</span>, <span class="number">0x03</span>, <span class="number">0xee</span>, <span class="number">0xfc</span>, <span class="number">0xe7</span>, <span class="number">0xf7</span>, <span class="number">0xb3</span>, <span class="number">0x7b</span>, <span class="number">0xa1</span>,
+            <span class="number">0xd1</span>, <span class="number">0x63</span>, <span class="number">0x2e</span>, <span class="number">0x96</span>, <span class="number">0x67</span>, <span class="number">0x78</span>, <span class="number">0x25</span>, <span class="number">0xdd</span>, <span class="number">0xf7</span>, <span class="number">0x39</span>, <span class="number">0x88</span>,
+            <span class="number">0xcf</span>, <span class="number">0xc7</span>, <span class="number">0x98</span>, <span class="number">0x25</span>, <span class="number">0xdf</span>, <span class="number">0x56</span>, <span class="number">0x6d</span>, <span class="number">0xc5</span>, <span class="number">0x43</span>, <span class="number">0x0b</span>, <span class="number">0x9a</span>,
+            <span class="number">0x04</span>, <span class="number">0x5a</span>, <span class="number">0x12</span>, <span class="number">0x00</span>, <span class="number">0x13</span>, <span class="number">0x01</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x2e</span>, <span class="number">0x00</span>, <span class="number">0x33</span>,
+            <span class="number">0x00</span>, <span class="number">0x24</span>, <span class="number">0x00</span>, <span class="number">0x1d</span>, <span class="number">0x00</span>, <span class="number">0x20</span>, <span class="number">0x9d</span>, <span class="number">0x3c</span>, <span class="number">0x94</span>, <span class="number">0x0d</span>, <span class="number">0x89</span>,
+            <span class="number">0x69</span>, <span class="number">0x0b</span>, <span class="number">0x84</span>, <span class="number">0xd0</span>, <span class="number">0x8a</span>, <span class="number">0x60</span>, <span class="number">0x99</span>, <span class="number">0x3c</span>, <span class="number">0x14</span>, <span class="number">0x4e</span>, <span class="number">0xca</span>,
+            <span class="number">0x68</span>, <span class="number">0x4d</span>, <span class="number">0x10</span>, <span class="number">0x81</span>, <span class="number">0x28</span>, <span class="number">0x7c</span>, <span class="number">0x83</span>, <span class="number">0x4d</span>, <span class="number">0x53</span>, <span class="number">0x11</span>, <span class="number">0xbc</span>,
+            <span class="number">0xf3</span>, <span class="number">0x2b</span>, <span class="number">0xb9</span>, <span class="number">0xda</span>, <span class="number">0x1a</span>, <span class="number">0x00</span>, <span class="number">0x2b</span>, <span class="number">0x00</span>, <span class="number">0x02</span>, <span class="number">0x03</span>, <span class="number">0x04</span>,
+        ];
+
+        assert_decrypt_initial_pkt(<span class="kw-2">&amp;mut </span>pkt, <span class="kw-2">&amp;</span>dcid, <span class="bool-val">false</span>, <span class="kw-2">&amp;</span>frames, <span class="number">1</span>, <span class="number">2</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>decrypt_chacha20() {
+        <span class="kw">let </span>secret = [
+            <span class="number">0x9a</span>, <span class="number">0xc3</span>, <span class="number">0x12</span>, <span class="number">0xa7</span>, <span class="number">0xf8</span>, <span class="number">0x77</span>, <span class="number">0x46</span>, <span class="number">0x8e</span>, <span class="number">0xbe</span>, <span class="number">0x69</span>, <span class="number">0x42</span>,
+            <span class="number">0x27</span>, <span class="number">0x48</span>, <span class="number">0xad</span>, <span class="number">0x00</span>, <span class="number">0xa1</span>, <span class="number">0x54</span>, <span class="number">0x43</span>, <span class="number">0xf1</span>, <span class="number">0x82</span>, <span class="number">0x03</span>, <span class="number">0xa0</span>,
+            <span class="number">0x7d</span>, <span class="number">0x60</span>, <span class="number">0x60</span>, <span class="number">0xf6</span>, <span class="number">0x88</span>, <span class="number">0xf3</span>, <span class="number">0x0f</span>, <span class="number">0x21</span>, <span class="number">0x63</span>, <span class="number">0x2b</span>,
+        ];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pkt = [
+            <span class="number">0x4c</span>, <span class="number">0xfe</span>, <span class="number">0x41</span>, <span class="number">0x89</span>, <span class="number">0x65</span>, <span class="number">0x5e</span>, <span class="number">0x5c</span>, <span class="number">0xd5</span>, <span class="number">0x5c</span>, <span class="number">0x41</span>, <span class="number">0xf6</span>,
+            <span class="number">0x90</span>, <span class="number">0x80</span>, <span class="number">0x57</span>, <span class="number">0x5d</span>, <span class="number">0x79</span>, <span class="number">0x99</span>, <span class="number">0xc2</span>, <span class="number">0x5a</span>, <span class="number">0x5b</span>, <span class="number">0xfb</span>,
+        ];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>pkt);
+
+        <span class="kw">let </span>alg = crypto::Algorithm::ChaCha20_Poly1305;
+
+        <span class="kw">let </span>aead = crypto::Open::from_secret(alg, secret.into()).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>hdr = Header::from_bytes(<span class="kw-2">&amp;mut </span>b, <span class="number">0</span>).unwrap();
+        <span class="macro">assert_eq!</span>(hdr.ty, Type::Short);
+
+        <span class="kw">let </span>payload_len = b.cap();
+
+        decrypt_hdr(<span class="kw-2">&amp;mut </span>b, <span class="kw-2">&amp;mut </span>hdr, <span class="kw-2">&amp;</span>aead).unwrap();
+        <span class="macro">assert_eq!</span>(hdr.pkt_num_len, <span class="number">3</span>);
+
+        <span class="kw">let </span>pn = decode_pkt_num(<span class="number">654_360_564</span>, hdr.pkt_num, hdr.pkt_num_len);
+        <span class="macro">assert_eq!</span>(pn, <span class="number">654_360_564</span>);
+
+        <span class="kw">let </span>payload =
+            decrypt_pkt(<span class="kw-2">&amp;mut </span>b, pn, hdr.pkt_num_len, payload_len, <span class="kw-2">&amp;</span>aead).unwrap();
+
+        <span class="kw">let </span>payload = payload.as_ref();
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>payload, <span class="kw-2">&amp;</span>[<span class="number">0x01</span>]);
+    }
+
+    <span class="kw">fn </span>assert_encrypt_initial_pkt(
+        header: <span class="kw-2">&amp;mut </span>[u8], dcid: <span class="kw-2">&amp;</span>[u8], frames: <span class="kw-2">&amp;</span>[u8], pn: u64, pn_len: usize,
+        is_server: bool, expected_pkt: <span class="kw-2">&amp;</span>[u8],
+    ) {
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(header);
+
+        <span class="kw">let </span>hdr = Header::from_bytes(<span class="kw-2">&amp;mut </span>b, <span class="number">0</span>).unwrap();
+        <span class="macro">assert_eq!</span>(hdr.ty, Type::Initial);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>out = <span class="macro">vec!</span>[<span class="number">0</span>; expected_pkt.len()];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>out);
+
+        b.put_bytes(header).unwrap();
+
+        <span class="kw">let </span>(<span class="kw">_</span>, aead) =
+            crypto::derive_initial_key_material(dcid, hdr.version, is_server)
+                .unwrap();
+
+        <span class="kw">let </span>payload_len = frames.len();
+
+        <span class="kw">let </span>payload_offset = b.off();
+
+        b.put_bytes(frames).unwrap();
+
+        <span class="kw">let </span>written = encrypt_pkt(
+            <span class="kw-2">&amp;mut </span>b,
+            pn,
+            pn_len,
+            payload_len,
+            payload_offset,
+            <span class="prelude-val">None</span>,
+            <span class="kw-2">&amp;</span>aead,
+        )
+        .unwrap();
+
+        <span class="macro">assert_eq!</span>(written, expected_pkt.len());
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>out[..written], expected_pkt);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>encrypt_client_initial_v1() {
+        <span class="kw">let </span><span class="kw-2">mut </span>header = [
+            <span class="number">0xc3</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x01</span>, <span class="number">0x08</span>, <span class="number">0x83</span>, <span class="number">0x94</span>, <span class="number">0xc8</span>, <span class="number">0xf0</span>, <span class="number">0x3e</span>,
+            <span class="number">0x51</span>, <span class="number">0x57</span>, <span class="number">0x08</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x44</span>, <span class="number">0x9e</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x02</span>,
+        ];
+
+        <span class="kw">let </span>dcid = [<span class="number">0x83</span>, <span class="number">0x94</span>, <span class="number">0xc8</span>, <span class="number">0xf0</span>, <span class="number">0x3e</span>, <span class="number">0x51</span>, <span class="number">0x57</span>, <span class="number">0x08</span>];
+
+        <span class="kw">let </span>frames = [
+            <span class="number">0x06</span>, <span class="number">0x00</span>, <span class="number">0x40</span>, <span class="number">0xf1</span>, <span class="number">0x01</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0xed</span>, <span class="number">0x03</span>, <span class="number">0x03</span>, <span class="number">0xeb</span>,
+            <span class="number">0xf8</span>, <span class="number">0xfa</span>, <span class="number">0x56</span>, <span class="number">0xf1</span>, <span class="number">0x29</span>, <span class="number">0x39</span>, <span class="number">0xb9</span>, <span class="number">0x58</span>, <span class="number">0x4a</span>, <span class="number">0x38</span>, <span class="number">0x96</span>,
+            <span class="number">0x47</span>, <span class="number">0x2e</span>, <span class="number">0xc4</span>, <span class="number">0x0b</span>, <span class="number">0xb8</span>, <span class="number">0x63</span>, <span class="number">0xcf</span>, <span class="number">0xd3</span>, <span class="number">0xe8</span>, <span class="number">0x68</span>, <span class="number">0x04</span>,
+            <span class="number">0xfe</span>, <span class="number">0x3a</span>, <span class="number">0x47</span>, <span class="number">0xf0</span>, <span class="number">0x6a</span>, <span class="number">0x2b</span>, <span class="number">0x69</span>, <span class="number">0x48</span>, <span class="number">0x4c</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x04</span>, <span class="number">0x13</span>, <span class="number">0x01</span>, <span class="number">0x13</span>, <span class="number">0x02</span>, <span class="number">0x01</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0xc0</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x10</span>, <span class="number">0x00</span>, <span class="number">0x0e</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x0b</span>, <span class="number">0x65</span>, <span class="number">0x78</span>, <span class="number">0x61</span>, <span class="number">0x6d</span>,
+            <span class="number">0x70</span>, <span class="number">0x6c</span>, <span class="number">0x65</span>, <span class="number">0x2e</span>, <span class="number">0x63</span>, <span class="number">0x6f</span>, <span class="number">0x6d</span>, <span class="number">0xff</span>, <span class="number">0x01</span>, <span class="number">0x00</span>, <span class="number">0x01</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x0a</span>, <span class="number">0x00</span>, <span class="number">0x08</span>, <span class="number">0x00</span>, <span class="number">0x06</span>, <span class="number">0x00</span>, <span class="number">0x1d</span>, <span class="number">0x00</span>, <span class="number">0x17</span>,
+            <span class="number">0x00</span>, <span class="number">0x18</span>, <span class="number">0x00</span>, <span class="number">0x10</span>, <span class="number">0x00</span>, <span class="number">0x07</span>, <span class="number">0x00</span>, <span class="number">0x05</span>, <span class="number">0x04</span>, <span class="number">0x61</span>, <span class="number">0x6c</span>,
+            <span class="number">0x70</span>, <span class="number">0x6e</span>, <span class="number">0x00</span>, <span class="number">0x05</span>, <span class="number">0x00</span>, <span class="number">0x05</span>, <span class="number">0x01</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x33</span>, <span class="number">0x00</span>, <span class="number">0x26</span>, <span class="number">0x00</span>, <span class="number">0x24</span>, <span class="number">0x00</span>, <span class="number">0x1d</span>, <span class="number">0x00</span>, <span class="number">0x20</span>, <span class="number">0x93</span>,
+            <span class="number">0x70</span>, <span class="number">0xb2</span>, <span class="number">0xc9</span>, <span class="number">0xca</span>, <span class="number">0xa4</span>, <span class="number">0x7f</span>, <span class="number">0xba</span>, <span class="number">0xba</span>, <span class="number">0xf4</span>, <span class="number">0x55</span>, <span class="number">0x9f</span>,
+            <span class="number">0xed</span>, <span class="number">0xba</span>, <span class="number">0x75</span>, <span class="number">0x3d</span>, <span class="number">0xe1</span>, <span class="number">0x71</span>, <span class="number">0xfa</span>, <span class="number">0x71</span>, <span class="number">0xf5</span>, <span class="number">0x0f</span>, <span class="number">0x1c</span>,
+            <span class="number">0xe1</span>, <span class="number">0x5d</span>, <span class="number">0x43</span>, <span class="number">0xe9</span>, <span class="number">0x94</span>, <span class="number">0xec</span>, <span class="number">0x74</span>, <span class="number">0xd7</span>, <span class="number">0x48</span>, <span class="number">0x00</span>, <span class="number">0x2b</span>,
+            <span class="number">0x00</span>, <span class="number">0x03</span>, <span class="number">0x02</span>, <span class="number">0x03</span>, <span class="number">0x04</span>, <span class="number">0x00</span>, <span class="number">0x0d</span>, <span class="number">0x00</span>, <span class="number">0x10</span>, <span class="number">0x00</span>, <span class="number">0x0e</span>,
+            <span class="number">0x04</span>, <span class="number">0x03</span>, <span class="number">0x05</span>, <span class="number">0x03</span>, <span class="number">0x06</span>, <span class="number">0x03</span>, <span class="number">0x02</span>, <span class="number">0x03</span>, <span class="number">0x08</span>, <span class="number">0x04</span>, <span class="number">0x08</span>,
+            <span class="number">0x05</span>, <span class="number">0x08</span>, <span class="number">0x06</span>, <span class="number">0x00</span>, <span class="number">0x2d</span>, <span class="number">0x00</span>, <span class="number">0x02</span>, <span class="number">0x01</span>, <span class="number">0x01</span>, <span class="number">0x00</span>, <span class="number">0x1c</span>,
+            <span class="number">0x00</span>, <span class="number">0x02</span>, <span class="number">0x40</span>, <span class="number">0x01</span>, <span class="number">0xff</span>, <span class="number">0xa5</span>, <span class="number">0x00</span>, <span class="number">0x32</span>, <span class="number">0x04</span>, <span class="number">0x08</span>, <span class="number">0xff</span>,
+            <span class="number">0xff</span>, <span class="number">0xff</span>, <span class="number">0xff</span>, <span class="number">0xff</span>, <span class="number">0xff</span>, <span class="number">0xff</span>, <span class="number">0xff</span>, <span class="number">0x05</span>, <span class="number">0x04</span>, <span class="number">0x80</span>, <span class="number">0x00</span>,
+            <span class="number">0xff</span>, <span class="number">0xff</span>, <span class="number">0x07</span>, <span class="number">0x04</span>, <span class="number">0x80</span>, <span class="number">0x00</span>, <span class="number">0xff</span>, <span class="number">0xff</span>, <span class="number">0x08</span>, <span class="number">0x01</span>, <span class="number">0x10</span>,
+            <span class="number">0x01</span>, <span class="number">0x04</span>, <span class="number">0x80</span>, <span class="number">0x00</span>, <span class="number">0x75</span>, <span class="number">0x30</span>, <span class="number">0x09</span>, <span class="number">0x01</span>, <span class="number">0x10</span>, <span class="number">0x0f</span>, <span class="number">0x08</span>,
+            <span class="number">0x83</span>, <span class="number">0x94</span>, <span class="number">0xc8</span>, <span class="number">0xf0</span>, <span class="number">0x3e</span>, <span class="number">0x51</span>, <span class="number">0x57</span>, <span class="number">0x08</span>, <span class="number">0x06</span>, <span class="number">0x04</span>, <span class="number">0x80</span>,
+            <span class="number">0x00</span>, <span class="number">0xff</span>, <span class="number">0xff</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>,
+        ];
+
+        <span class="kw">let </span>pkt = [
+            <span class="number">0xc0</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x01</span>, <span class="number">0x08</span>, <span class="number">0x83</span>, <span class="number">0x94</span>, <span class="number">0xc8</span>, <span class="number">0xf0</span>, <span class="number">0x3e</span>,
+            <span class="number">0x51</span>, <span class="number">0x57</span>, <span class="number">0x08</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x44</span>, <span class="number">0x9e</span>, <span class="number">0x7b</span>, <span class="number">0x9a</span>, <span class="number">0xec</span>, <span class="number">0x34</span>,
+            <span class="number">0xd1</span>, <span class="number">0xb1</span>, <span class="number">0xc9</span>, <span class="number">0x8d</span>, <span class="number">0xd7</span>, <span class="number">0x68</span>, <span class="number">0x9f</span>, <span class="number">0xb8</span>, <span class="number">0xec</span>, <span class="number">0x11</span>, <span class="number">0xd2</span>,
+            <span class="number">0x42</span>, <span class="number">0xb1</span>, <span class="number">0x23</span>, <span class="number">0xdc</span>, <span class="number">0x9b</span>, <span class="number">0xd8</span>, <span class="number">0xba</span>, <span class="number">0xb9</span>, <span class="number">0x36</span>, <span class="number">0xb4</span>, <span class="number">0x7d</span>,
+            <span class="number">0x92</span>, <span class="number">0xec</span>, <span class="number">0x35</span>, <span class="number">0x6c</span>, <span class="number">0x0b</span>, <span class="number">0xab</span>, <span class="number">0x7d</span>, <span class="number">0xf5</span>, <span class="number">0x97</span>, <span class="number">0x6d</span>, <span class="number">0x27</span>,
+            <span class="number">0xcd</span>, <span class="number">0x44</span>, <span class="number">0x9f</span>, <span class="number">0x63</span>, <span class="number">0x30</span>, <span class="number">0x00</span>, <span class="number">0x99</span>, <span class="number">0xf3</span>, <span class="number">0x99</span>, <span class="number">0x1c</span>, <span class="number">0x26</span>,
+            <span class="number">0x0e</span>, <span class="number">0xc4</span>, <span class="number">0xc6</span>, <span class="number">0x0d</span>, <span class="number">0x17</span>, <span class="number">0xb3</span>, <span class="number">0x1f</span>, <span class="number">0x84</span>, <span class="number">0x29</span>, <span class="number">0x15</span>, <span class="number">0x7b</span>,
+            <span class="number">0xb3</span>, <span class="number">0x5a</span>, <span class="number">0x12</span>, <span class="number">0x82</span>, <span class="number">0xa6</span>, <span class="number">0x43</span>, <span class="number">0xa8</span>, <span class="number">0xd2</span>, <span class="number">0x26</span>, <span class="number">0x2c</span>, <span class="number">0xad</span>,
+            <span class="number">0x67</span>, <span class="number">0x50</span>, <span class="number">0x0c</span>, <span class="number">0xad</span>, <span class="number">0xb8</span>, <span class="number">0xe7</span>, <span class="number">0x37</span>, <span class="number">0x8c</span>, <span class="number">0x8e</span>, <span class="number">0xb7</span>, <span class="number">0x53</span>,
+            <span class="number">0x9e</span>, <span class="number">0xc4</span>, <span class="number">0xd4</span>, <span class="number">0x90</span>, <span class="number">0x5f</span>, <span class="number">0xed</span>, <span class="number">0x1b</span>, <span class="number">0xee</span>, <span class="number">0x1f</span>, <span class="number">0xc8</span>, <span class="number">0xaa</span>,
+            <span class="number">0xfb</span>, <span class="number">0xa1</span>, <span class="number">0x7c</span>, <span class="number">0x75</span>, <span class="number">0x0e</span>, <span class="number">0x2c</span>, <span class="number">0x7a</span>, <span class="number">0xce</span>, <span class="number">0x01</span>, <span class="number">0xe6</span>, <span class="number">0x00</span>,
+            <span class="number">0x5f</span>, <span class="number">0x80</span>, <span class="number">0xfc</span>, <span class="number">0xb7</span>, <span class="number">0xdf</span>, <span class="number">0x62</span>, <span class="number">0x12</span>, <span class="number">0x30</span>, <span class="number">0xc8</span>, <span class="number">0x37</span>, <span class="number">0x11</span>,
+            <span class="number">0xb3</span>, <span class="number">0x93</span>, <span class="number">0x43</span>, <span class="number">0xfa</span>, <span class="number">0x02</span>, <span class="number">0x8c</span>, <span class="number">0xea</span>, <span class="number">0x7f</span>, <span class="number">0x7f</span>, <span class="number">0xb5</span>, <span class="number">0xff</span>,
+            <span class="number">0x89</span>, <span class="number">0xea</span>, <span class="number">0xc2</span>, <span class="number">0x30</span>, <span class="number">0x82</span>, <span class="number">0x49</span>, <span class="number">0xa0</span>, <span class="number">0x22</span>, <span class="number">0x52</span>, <span class="number">0x15</span>, <span class="number">0x5e</span>,
+            <span class="number">0x23</span>, <span class="number">0x47</span>, <span class="number">0xb6</span>, <span class="number">0x3d</span>, <span class="number">0x58</span>, <span class="number">0xc5</span>, <span class="number">0x45</span>, <span class="number">0x7a</span>, <span class="number">0xfd</span>, <span class="number">0x84</span>, <span class="number">0xd0</span>,
+            <span class="number">0x5d</span>, <span class="number">0xff</span>, <span class="number">0xfd</span>, <span class="number">0xb2</span>, <span class="number">0x03</span>, <span class="number">0x92</span>, <span class="number">0x84</span>, <span class="number">0x4a</span>, <span class="number">0xe8</span>, <span class="number">0x12</span>, <span class="number">0x15</span>,
+            <span class="number">0x46</span>, <span class="number">0x82</span>, <span class="number">0xe9</span>, <span class="number">0xcf</span>, <span class="number">0x01</span>, <span class="number">0x2f</span>, <span class="number">0x90</span>, <span class="number">0x21</span>, <span class="number">0xa6</span>, <span class="number">0xf0</span>, <span class="number">0xbe</span>,
+            <span class="number">0x17</span>, <span class="number">0xdd</span>, <span class="number">0xd0</span>, <span class="number">0xc2</span>, <span class="number">0x08</span>, <span class="number">0x4d</span>, <span class="number">0xce</span>, <span class="number">0x25</span>, <span class="number">0xff</span>, <span class="number">0x9b</span>, <span class="number">0x06</span>,
+            <span class="number">0xcd</span>, <span class="number">0xe5</span>, <span class="number">0x35</span>, <span class="number">0xd0</span>, <span class="number">0xf9</span>, <span class="number">0x20</span>, <span class="number">0xa2</span>, <span class="number">0xdb</span>, <span class="number">0x1b</span>, <span class="number">0xf3</span>, <span class="number">0x62</span>,
+            <span class="number">0xc2</span>, <span class="number">0x3e</span>, <span class="number">0x59</span>, <span class="number">0x6d</span>, <span class="number">0xee</span>, <span class="number">0x38</span>, <span class="number">0xf5</span>, <span class="number">0xa6</span>, <span class="number">0xcf</span>, <span class="number">0x39</span>, <span class="number">0x48</span>,
+            <span class="number">0x83</span>, <span class="number">0x8a</span>, <span class="number">0x3a</span>, <span class="number">0xec</span>, <span class="number">0x4e</span>, <span class="number">0x15</span>, <span class="number">0xda</span>, <span class="number">0xf8</span>, <span class="number">0x50</span>, <span class="number">0x0a</span>, <span class="number">0x6e</span>,
+            <span class="number">0xf6</span>, <span class="number">0x9e</span>, <span class="number">0xc4</span>, <span class="number">0xe3</span>, <span class="number">0xfe</span>, <span class="number">0xb6</span>, <span class="number">0xb1</span>, <span class="number">0xd9</span>, <span class="number">0x8e</span>, <span class="number">0x61</span>, <span class="number">0x0a</span>,
+            <span class="number">0xc8</span>, <span class="number">0xb7</span>, <span class="number">0xec</span>, <span class="number">0x3f</span>, <span class="number">0xaf</span>, <span class="number">0x6a</span>, <span class="number">0xd7</span>, <span class="number">0x60</span>, <span class="number">0xb7</span>, <span class="number">0xba</span>, <span class="number">0xd1</span>,
+            <span class="number">0xdb</span>, <span class="number">0x4b</span>, <span class="number">0xa3</span>, <span class="number">0x48</span>, <span class="number">0x5e</span>, <span class="number">0x8a</span>, <span class="number">0x94</span>, <span class="number">0xdc</span>, <span class="number">0x25</span>, <span class="number">0x0a</span>, <span class="number">0xe3</span>,
+            <span class="number">0xfd</span>, <span class="number">0xb4</span>, <span class="number">0x1e</span>, <span class="number">0xd1</span>, <span class="number">0x5f</span>, <span class="number">0xb6</span>, <span class="number">0xa8</span>, <span class="number">0xe5</span>, <span class="number">0xeb</span>, <span class="number">0xa0</span>, <span class="number">0xfc</span>,
+            <span class="number">0x3d</span>, <span class="number">0xd6</span>, <span class="number">0x0b</span>, <span class="number">0xc8</span>, <span class="number">0xe3</span>, <span class="number">0x0c</span>, <span class="number">0x5c</span>, <span class="number">0x42</span>, <span class="number">0x87</span>, <span class="number">0xe5</span>, <span class="number">0x38</span>,
+            <span class="number">0x05</span>, <span class="number">0xdb</span>, <span class="number">0x05</span>, <span class="number">0x9a</span>, <span class="number">0xe0</span>, <span class="number">0x64</span>, <span class="number">0x8d</span>, <span class="number">0xb2</span>, <span class="number">0xf6</span>, <span class="number">0x42</span>, <span class="number">0x64</span>,
+            <span class="number">0xed</span>, <span class="number">0x5e</span>, <span class="number">0x39</span>, <span class="number">0xbe</span>, <span class="number">0x2e</span>, <span class="number">0x20</span>, <span class="number">0xd8</span>, <span class="number">0x2d</span>, <span class="number">0xf5</span>, <span class="number">0x66</span>, <span class="number">0xda</span>,
+            <span class="number">0x8d</span>, <span class="number">0xd5</span>, <span class="number">0x99</span>, <span class="number">0x8c</span>, <span class="number">0xca</span>, <span class="number">0xbd</span>, <span class="number">0xae</span>, <span class="number">0x05</span>, <span class="number">0x30</span>, <span class="number">0x60</span>, <span class="number">0xae</span>,
+            <span class="number">0x6c</span>, <span class="number">0x7b</span>, <span class="number">0x43</span>, <span class="number">0x78</span>, <span class="number">0xe8</span>, <span class="number">0x46</span>, <span class="number">0xd2</span>, <span class="number">0x9f</span>, <span class="number">0x37</span>, <span class="number">0xed</span>, <span class="number">0x7b</span>,
+            <span class="number">0x4e</span>, <span class="number">0xa9</span>, <span class="number">0xec</span>, <span class="number">0x5d</span>, <span class="number">0x82</span>, <span class="number">0xe7</span>, <span class="number">0x96</span>, <span class="number">0x1b</span>, <span class="number">0x7f</span>, <span class="number">0x25</span>, <span class="number">0xa9</span>,
+            <span class="number">0x32</span>, <span class="number">0x38</span>, <span class="number">0x51</span>, <span class="number">0xf6</span>, <span class="number">0x81</span>, <span class="number">0xd5</span>, <span class="number">0x82</span>, <span class="number">0x36</span>, <span class="number">0x3a</span>, <span class="number">0xa5</span>, <span class="number">0xf8</span>,
+            <span class="number">0x99</span>, <span class="number">0x37</span>, <span class="number">0xf5</span>, <span class="number">0xa6</span>, <span class="number">0x72</span>, <span class="number">0x58</span>, <span class="number">0xbf</span>, <span class="number">0x63</span>, <span class="number">0xad</span>, <span class="number">0x6f</span>, <span class="number">0x1a</span>,
+            <span class="number">0x0b</span>, <span class="number">0x1d</span>, <span class="number">0x96</span>, <span class="number">0xdb</span>, <span class="number">0xd4</span>, <span class="number">0xfa</span>, <span class="number">0xdd</span>, <span class="number">0xfc</span>, <span class="number">0xef</span>, <span class="number">0xc5</span>, <span class="number">0x26</span>,
+            <span class="number">0x6b</span>, <span class="number">0xa6</span>, <span class="number">0x61</span>, <span class="number">0x17</span>, <span class="number">0x22</span>, <span class="number">0x39</span>, <span class="number">0x5c</span>, <span class="number">0x90</span>, <span class="number">0x65</span>, <span class="number">0x56</span>, <span class="number">0xbe</span>,
+            <span class="number">0x52</span>, <span class="number">0xaf</span>, <span class="number">0xe3</span>, <span class="number">0xf5</span>, <span class="number">0x65</span>, <span class="number">0x63</span>, <span class="number">0x6a</span>, <span class="number">0xd1</span>, <span class="number">0xb1</span>, <span class="number">0x7d</span>, <span class="number">0x50</span>,
+            <span class="number">0x8b</span>, <span class="number">0x73</span>, <span class="number">0xd8</span>, <span class="number">0x74</span>, <span class="number">0x3e</span>, <span class="number">0xeb</span>, <span class="number">0x52</span>, <span class="number">0x4b</span>, <span class="number">0xe2</span>, <span class="number">0x2b</span>, <span class="number">0x3d</span>,
+            <span class="number">0xcb</span>, <span class="number">0xc2</span>, <span class="number">0xc7</span>, <span class="number">0x46</span>, <span class="number">0x8d</span>, <span class="number">0x54</span>, <span class="number">0x11</span>, <span class="number">0x9c</span>, <span class="number">0x74</span>, <span class="number">0x68</span>, <span class="number">0x44</span>,
+            <span class="number">0x9a</span>, <span class="number">0x13</span>, <span class="number">0xd8</span>, <span class="number">0xe3</span>, <span class="number">0xb9</span>, <span class="number">0x58</span>, <span class="number">0x11</span>, <span class="number">0xa1</span>, <span class="number">0x98</span>, <span class="number">0xf3</span>, <span class="number">0x49</span>,
+            <span class="number">0x1d</span>, <span class="number">0xe3</span>, <span class="number">0xe7</span>, <span class="number">0xfe</span>, <span class="number">0x94</span>, <span class="number">0x2b</span>, <span class="number">0x33</span>, <span class="number">0x04</span>, <span class="number">0x07</span>, <span class="number">0xab</span>, <span class="number">0xf8</span>,
+            <span class="number">0x2a</span>, <span class="number">0x4e</span>, <span class="number">0xd7</span>, <span class="number">0xc1</span>, <span class="number">0xb3</span>, <span class="number">0x11</span>, <span class="number">0x66</span>, <span class="number">0x3a</span>, <span class="number">0xc6</span>, <span class="number">0x98</span>, <span class="number">0x90</span>,
+            <span class="number">0xf4</span>, <span class="number">0x15</span>, <span class="number">0x70</span>, <span class="number">0x15</span>, <span class="number">0x85</span>, <span class="number">0x3d</span>, <span class="number">0x91</span>, <span class="number">0xe9</span>, <span class="number">0x23</span>, <span class="number">0x03</span>, <span class="number">0x7c</span>,
+            <span class="number">0x22</span>, <span class="number">0x7a</span>, <span class="number">0x33</span>, <span class="number">0xcd</span>, <span class="number">0xd5</span>, <span class="number">0xec</span>, <span class="number">0x28</span>, <span class="number">0x1c</span>, <span class="number">0xa3</span>, <span class="number">0xf7</span>, <span class="number">0x9c</span>,
+            <span class="number">0x44</span>, <span class="number">0x54</span>, <span class="number">0x6b</span>, <span class="number">0x9d</span>, <span class="number">0x90</span>, <span class="number">0xca</span>, <span class="number">0x00</span>, <span class="number">0xf0</span>, <span class="number">0x64</span>, <span class="number">0xc9</span>, <span class="number">0x9e</span>,
+            <span class="number">0x3d</span>, <span class="number">0xd9</span>, <span class="number">0x79</span>, <span class="number">0x11</span>, <span class="number">0xd3</span>, <span class="number">0x9f</span>, <span class="number">0xe9</span>, <span class="number">0xc5</span>, <span class="number">0xd0</span>, <span class="number">0xb2</span>, <span class="number">0x3a</span>,
+            <span class="number">0x22</span>, <span class="number">0x9a</span>, <span class="number">0x23</span>, <span class="number">0x4c</span>, <span class="number">0xb3</span>, <span class="number">0x61</span>, <span class="number">0x86</span>, <span class="number">0xc4</span>, <span class="number">0x81</span>, <span class="number">0x9e</span>, <span class="number">0x8b</span>,
+            <span class="number">0x9c</span>, <span class="number">0x59</span>, <span class="number">0x27</span>, <span class="number">0x72</span>, <span class="number">0x66</span>, <span class="number">0x32</span>, <span class="number">0x29</span>, <span class="number">0x1d</span>, <span class="number">0x6a</span>, <span class="number">0x41</span>, <span class="number">0x82</span>,
+            <span class="number">0x11</span>, <span class="number">0xcc</span>, <span class="number">0x29</span>, <span class="number">0x62</span>, <span class="number">0xe2</span>, <span class="number">0x0f</span>, <span class="number">0xe4</span>, <span class="number">0x7f</span>, <span class="number">0xeb</span>, <span class="number">0x3e</span>, <span class="number">0xdf</span>,
+            <span class="number">0x33</span>, <span class="number">0x0f</span>, <span class="number">0x2c</span>, <span class="number">0x60</span>, <span class="number">0x3a</span>, <span class="number">0x9d</span>, <span class="number">0x48</span>, <span class="number">0xc0</span>, <span class="number">0xfc</span>, <span class="number">0xb5</span>, <span class="number">0x69</span>,
+            <span class="number">0x9d</span>, <span class="number">0xbf</span>, <span class="number">0xe5</span>, <span class="number">0x89</span>, <span class="number">0x64</span>, <span class="number">0x25</span>, <span class="number">0xc5</span>, <span class="number">0xba</span>, <span class="number">0xc4</span>, <span class="number">0xae</span>, <span class="number">0xe8</span>,
+            <span class="number">0x2e</span>, <span class="number">0x57</span>, <span class="number">0xa8</span>, <span class="number">0x5a</span>, <span class="number">0xaf</span>, <span class="number">0x4e</span>, <span class="number">0x25</span>, <span class="number">0x13</span>, <span class="number">0xe4</span>, <span class="number">0xf0</span>, <span class="number">0x57</span>,
+            <span class="number">0x96</span>, <span class="number">0xb0</span>, <span class="number">0x7b</span>, <span class="number">0xa2</span>, <span class="number">0xee</span>, <span class="number">0x47</span>, <span class="number">0xd8</span>, <span class="number">0x05</span>, <span class="number">0x06</span>, <span class="number">0xf8</span>, <span class="number">0xd2</span>,
+            <span class="number">0xc2</span>, <span class="number">0x5e</span>, <span class="number">0x50</span>, <span class="number">0xfd</span>, <span class="number">0x14</span>, <span class="number">0xde</span>, <span class="number">0x71</span>, <span class="number">0xe6</span>, <span class="number">0xc4</span>, <span class="number">0x18</span>, <span class="number">0x55</span>,
+            <span class="number">0x93</span>, <span class="number">0x02</span>, <span class="number">0xf9</span>, <span class="number">0x39</span>, <span class="number">0xb0</span>, <span class="number">0xe1</span>, <span class="number">0xab</span>, <span class="number">0xd5</span>, <span class="number">0x76</span>, <span class="number">0xf2</span>, <span class="number">0x79</span>,
+            <span class="number">0xc4</span>, <span class="number">0xb2</span>, <span class="number">0xe0</span>, <span class="number">0xfe</span>, <span class="number">0xb8</span>, <span class="number">0x5c</span>, <span class="number">0x1f</span>, <span class="number">0x28</span>, <span class="number">0xff</span>, <span class="number">0x18</span>, <span class="number">0xf5</span>,
+            <span class="number">0x88</span>, <span class="number">0x91</span>, <span class="number">0xff</span>, <span class="number">0xef</span>, <span class="number">0x13</span>, <span class="number">0x2e</span>, <span class="number">0xef</span>, <span class="number">0x2f</span>, <span class="number">0xa0</span>, <span class="number">0x93</span>, <span class="number">0x46</span>,
+            <span class="number">0xae</span>, <span class="number">0xe3</span>, <span class="number">0x3c</span>, <span class="number">0x28</span>, <span class="number">0xeb</span>, <span class="number">0x13</span>, <span class="number">0x0f</span>, <span class="number">0xf2</span>, <span class="number">0x8f</span>, <span class="number">0x5b</span>, <span class="number">0x76</span>,
+            <span class="number">0x69</span>, <span class="number">0x53</span>, <span class="number">0x33</span>, <span class="number">0x41</span>, <span class="number">0x13</span>, <span class="number">0x21</span>, <span class="number">0x19</span>, <span class="number">0x96</span>, <span class="number">0xd2</span>, <span class="number">0x00</span>, <span class="number">0x11</span>,
+            <span class="number">0xa1</span>, <span class="number">0x98</span>, <span class="number">0xe3</span>, <span class="number">0xfc</span>, <span class="number">0x43</span>, <span class="number">0x3f</span>, <span class="number">0x9f</span>, <span class="number">0x25</span>, <span class="number">0x41</span>, <span class="number">0x01</span>, <span class="number">0x0a</span>,
+            <span class="number">0xe1</span>, <span class="number">0x7c</span>, <span class="number">0x1b</span>, <span class="number">0xf2</span>, <span class="number">0x02</span>, <span class="number">0x58</span>, <span class="number">0x0f</span>, <span class="number">0x60</span>, <span class="number">0x47</span>, <span class="number">0x47</span>, <span class="number">0x2f</span>,
+            <span class="number">0xb3</span>, <span class="number">0x68</span>, <span class="number">0x57</span>, <span class="number">0xfe</span>, <span class="number">0x84</span>, <span class="number">0x3b</span>, <span class="number">0x19</span>, <span class="number">0xf5</span>, <span class="number">0x98</span>, <span class="number">0x40</span>, <span class="number">0x09</span>,
+            <span class="number">0xdd</span>, <span class="number">0xc3</span>, <span class="number">0x24</span>, <span class="number">0x04</span>, <span class="number">0x4e</span>, <span class="number">0x84</span>, <span class="number">0x7a</span>, <span class="number">0x4f</span>, <span class="number">0x4a</span>, <span class="number">0x0a</span>, <span class="number">0xb3</span>,
+            <span class="number">0x4f</span>, <span class="number">0x71</span>, <span class="number">0x95</span>, <span class="number">0x95</span>, <span class="number">0xde</span>, <span class="number">0x37</span>, <span class="number">0x25</span>, <span class="number">0x2d</span>, <span class="number">0x62</span>, <span class="number">0x35</span>, <span class="number">0x36</span>,
+            <span class="number">0x5e</span>, <span class="number">0x9b</span>, <span class="number">0x84</span>, <span class="number">0x39</span>, <span class="number">0x2b</span>, <span class="number">0x06</span>, <span class="number">0x10</span>, <span class="number">0x85</span>, <span class="number">0x34</span>, <span class="number">0x9d</span>, <span class="number">0x73</span>,
+            <span class="number">0x20</span>, <span class="number">0x3a</span>, <span class="number">0x4a</span>, <span class="number">0x13</span>, <span class="number">0xe9</span>, <span class="number">0x6f</span>, <span class="number">0x54</span>, <span class="number">0x32</span>, <span class="number">0xec</span>, <span class="number">0x0f</span>, <span class="number">0xd4</span>,
+            <span class="number">0xa1</span>, <span class="number">0xee</span>, <span class="number">0x65</span>, <span class="number">0xac</span>, <span class="number">0xcd</span>, <span class="number">0xd5</span>, <span class="number">0xe3</span>, <span class="number">0x90</span>, <span class="number">0x4d</span>, <span class="number">0xf5</span>, <span class="number">0x4c</span>,
+            <span class="number">0x1d</span>, <span class="number">0xa5</span>, <span class="number">0x10</span>, <span class="number">0xb0</span>, <span class="number">0xff</span>, <span class="number">0x20</span>, <span class="number">0xdc</span>, <span class="number">0xc0</span>, <span class="number">0xc7</span>, <span class="number">0x7f</span>, <span class="number">0xcb</span>,
+            <span class="number">0x2c</span>, <span class="number">0x0e</span>, <span class="number">0x0e</span>, <span class="number">0xb6</span>, <span class="number">0x05</span>, <span class="number">0xcb</span>, <span class="number">0x05</span>, <span class="number">0x04</span>, <span class="number">0xdb</span>, <span class="number">0x87</span>, <span class="number">0x63</span>,
+            <span class="number">0x2c</span>, <span class="number">0xf3</span>, <span class="number">0xd8</span>, <span class="number">0xb4</span>, <span class="number">0xda</span>, <span class="number">0xe6</span>, <span class="number">0xe7</span>, <span class="number">0x05</span>, <span class="number">0x76</span>, <span class="number">0x9d</span>, <span class="number">0x1d</span>,
+            <span class="number">0xe3</span>, <span class="number">0x54</span>, <span class="number">0x27</span>, <span class="number">0x01</span>, <span class="number">0x23</span>, <span class="number">0xcb</span>, <span class="number">0x11</span>, <span class="number">0x45</span>, <span class="number">0x0e</span>, <span class="number">0xfc</span>, <span class="number">0x60</span>,
+            <span class="number">0xac</span>, <span class="number">0x47</span>, <span class="number">0x68</span>, <span class="number">0x3d</span>, <span class="number">0x7b</span>, <span class="number">0x8d</span>, <span class="number">0x0f</span>, <span class="number">0x81</span>, <span class="number">0x13</span>, <span class="number">0x65</span>, <span class="number">0x56</span>,
+            <span class="number">0x5f</span>, <span class="number">0xd9</span>, <span class="number">0x8c</span>, <span class="number">0x4c</span>, <span class="number">0x8e</span>, <span class="number">0xb9</span>, <span class="number">0x36</span>, <span class="number">0xbc</span>, <span class="number">0xab</span>, <span class="number">0x8d</span>, <span class="number">0x06</span>,
+            <span class="number">0x9f</span>, <span class="number">0xc3</span>, <span class="number">0x3b</span>, <span class="number">0xd8</span>, <span class="number">0x01</span>, <span class="number">0xb0</span>, <span class="number">0x3a</span>, <span class="number">0xde</span>, <span class="number">0xa2</span>, <span class="number">0xe1</span>, <span class="number">0xfb</span>,
+            <span class="number">0xc5</span>, <span class="number">0xaa</span>, <span class="number">0x46</span>, <span class="number">0x3d</span>, <span class="number">0x08</span>, <span class="number">0xca</span>, <span class="number">0x19</span>, <span class="number">0x89</span>, <span class="number">0x6d</span>, <span class="number">0x2b</span>, <span class="number">0xf5</span>,
+            <span class="number">0x9a</span>, <span class="number">0x07</span>, <span class="number">0x1b</span>, <span class="number">0x85</span>, <span class="number">0x1e</span>, <span class="number">0x6c</span>, <span class="number">0x23</span>, <span class="number">0x90</span>, <span class="number">0x52</span>, <span class="number">0x17</span>, <span class="number">0x2f</span>,
+            <span class="number">0x29</span>, <span class="number">0x6b</span>, <span class="number">0xfb</span>, <span class="number">0x5e</span>, <span class="number">0x72</span>, <span class="number">0x40</span>, <span class="number">0x47</span>, <span class="number">0x90</span>, <span class="number">0xa2</span>, <span class="number">0x18</span>, <span class="number">0x10</span>,
+            <span class="number">0x14</span>, <span class="number">0xf3</span>, <span class="number">0xb9</span>, <span class="number">0x4a</span>, <span class="number">0x4e</span>, <span class="number">0x97</span>, <span class="number">0xd1</span>, <span class="number">0x17</span>, <span class="number">0xb4</span>, <span class="number">0x38</span>, <span class="number">0x13</span>,
+            <span class="number">0x03</span>, <span class="number">0x68</span>, <span class="number">0xcc</span>, <span class="number">0x39</span>, <span class="number">0xdb</span>, <span class="number">0xb2</span>, <span class="number">0xd1</span>, <span class="number">0x98</span>, <span class="number">0x06</span>, <span class="number">0x5a</span>, <span class="number">0xe3</span>,
+            <span class="number">0x98</span>, <span class="number">0x65</span>, <span class="number">0x47</span>, <span class="number">0x92</span>, <span class="number">0x6c</span>, <span class="number">0xd2</span>, <span class="number">0x16</span>, <span class="number">0x2f</span>, <span class="number">0x40</span>, <span class="number">0xa2</span>, <span class="number">0x9f</span>,
+            <span class="number">0x0c</span>, <span class="number">0x3c</span>, <span class="number">0x87</span>, <span class="number">0x45</span>, <span class="number">0xc0</span>, <span class="number">0xf5</span>, <span class="number">0x0f</span>, <span class="number">0xba</span>, <span class="number">0x38</span>, <span class="number">0x52</span>, <span class="number">0xe5</span>,
+            <span class="number">0x66</span>, <span class="number">0xd4</span>, <span class="number">0x45</span>, <span class="number">0x75</span>, <span class="number">0xc2</span>, <span class="number">0x9d</span>, <span class="number">0x39</span>, <span class="number">0xa0</span>, <span class="number">0x3f</span>, <span class="number">0x0c</span>, <span class="number">0xda</span>,
+            <span class="number">0x72</span>, <span class="number">0x19</span>, <span class="number">0x84</span>, <span class="number">0xb6</span>, <span class="number">0xf4</span>, <span class="number">0x40</span>, <span class="number">0x59</span>, <span class="number">0x1f</span>, <span class="number">0x35</span>, <span class="number">0x5e</span>, <span class="number">0x12</span>,
+            <span class="number">0xd4</span>, <span class="number">0x39</span>, <span class="number">0xff</span>, <span class="number">0x15</span>, <span class="number">0x0a</span>, <span class="number">0xab</span>, <span class="number">0x76</span>, <span class="number">0x13</span>, <span class="number">0x49</span>, <span class="number">0x9d</span>, <span class="number">0xbd</span>,
+            <span class="number">0x49</span>, <span class="number">0xad</span>, <span class="number">0xab</span>, <span class="number">0xc8</span>, <span class="number">0x67</span>, <span class="number">0x6e</span>, <span class="number">0xef</span>, <span class="number">0x02</span>, <span class="number">0x3b</span>, <span class="number">0x15</span>, <span class="number">0xb6</span>,
+            <span class="number">0x5b</span>, <span class="number">0xfc</span>, <span class="number">0x5c</span>, <span class="number">0xa0</span>, <span class="number">0x69</span>, <span class="number">0x48</span>, <span class="number">0x10</span>, <span class="number">0x9f</span>, <span class="number">0x23</span>, <span class="number">0xf3</span>, <span class="number">0x50</span>,
+            <span class="number">0xdb</span>, <span class="number">0x82</span>, <span class="number">0x12</span>, <span class="number">0x35</span>, <span class="number">0x35</span>, <span class="number">0xeb</span>, <span class="number">0x8a</span>, <span class="number">0x74</span>, <span class="number">0x33</span>, <span class="number">0xbd</span>, <span class="number">0xab</span>,
+            <span class="number">0xcb</span>, <span class="number">0x90</span>, <span class="number">0x92</span>, <span class="number">0x71</span>, <span class="number">0xa6</span>, <span class="number">0xec</span>, <span class="number">0xbc</span>, <span class="number">0xb5</span>, <span class="number">0x8b</span>, <span class="number">0x93</span>, <span class="number">0x6a</span>,
+            <span class="number">0x88</span>, <span class="number">0xcd</span>, <span class="number">0x4e</span>, <span class="number">0x8f</span>, <span class="number">0x2e</span>, <span class="number">0x6f</span>, <span class="number">0xf5</span>, <span class="number">0x80</span>, <span class="number">0x01</span>, <span class="number">0x75</span>, <span class="number">0xf1</span>,
+            <span class="number">0x13</span>, <span class="number">0x25</span>, <span class="number">0x3d</span>, <span class="number">0x8f</span>, <span class="number">0xa9</span>, <span class="number">0xca</span>, <span class="number">0x88</span>, <span class="number">0x85</span>, <span class="number">0xc2</span>, <span class="number">0xf5</span>, <span class="number">0x52</span>,
+            <span class="number">0xe6</span>, <span class="number">0x57</span>, <span class="number">0xdc</span>, <span class="number">0x60</span>, <span class="number">0x3f</span>, <span class="number">0x25</span>, <span class="number">0x2e</span>, <span class="number">0x1a</span>, <span class="number">0x8e</span>, <span class="number">0x30</span>, <span class="number">0x8f</span>,
+            <span class="number">0x76</span>, <span class="number">0xf0</span>, <span class="number">0xbe</span>, <span class="number">0x79</span>, <span class="number">0xe2</span>, <span class="number">0xfb</span>, <span class="number">0x8f</span>, <span class="number">0x5d</span>, <span class="number">0x5f</span>, <span class="number">0xbb</span>, <span class="number">0xe2</span>,
+            <span class="number">0xe3</span>, <span class="number">0x0e</span>, <span class="number">0xca</span>, <span class="number">0xdd</span>, <span class="number">0x22</span>, <span class="number">0x07</span>, <span class="number">0x23</span>, <span class="number">0xc8</span>, <span class="number">0xc0</span>, <span class="number">0xae</span>, <span class="number">0xa8</span>,
+            <span class="number">0x07</span>, <span class="number">0x8c</span>, <span class="number">0xdf</span>, <span class="number">0xcb</span>, <span class="number">0x38</span>, <span class="number">0x68</span>, <span class="number">0x26</span>, <span class="number">0x3f</span>, <span class="number">0xf8</span>, <span class="number">0xf0</span>, <span class="number">0x94</span>,
+            <span class="number">0x00</span>, <span class="number">0x54</span>, <span class="number">0xda</span>, <span class="number">0x48</span>, <span class="number">0x78</span>, <span class="number">0x18</span>, <span class="number">0x93</span>, <span class="number">0xa7</span>, <span class="number">0xe4</span>, <span class="number">0x9a</span>, <span class="number">0xd5</span>,
+            <span class="number">0xaf</span>, <span class="number">0xf4</span>, <span class="number">0xaf</span>, <span class="number">0x30</span>, <span class="number">0x0c</span>, <span class="number">0xd8</span>, <span class="number">0x04</span>, <span class="number">0xa6</span>, <span class="number">0xb6</span>, <span class="number">0x27</span>, <span class="number">0x9a</span>,
+            <span class="number">0xb3</span>, <span class="number">0xff</span>, <span class="number">0x3a</span>, <span class="number">0xfb</span>, <span class="number">0x64</span>, <span class="number">0x49</span>, <span class="number">0x1c</span>, <span class="number">0x85</span>, <span class="number">0x19</span>, <span class="number">0x4a</span>, <span class="number">0xab</span>,
+            <span class="number">0x76</span>, <span class="number">0x0d</span>, <span class="number">0x58</span>, <span class="number">0xa6</span>, <span class="number">0x06</span>, <span class="number">0x65</span>, <span class="number">0x4f</span>, <span class="number">0x9f</span>, <span class="number">0x44</span>, <span class="number">0x00</span>, <span class="number">0xe8</span>,
+            <span class="number">0xb3</span>, <span class="number">0x85</span>, <span class="number">0x91</span>, <span class="number">0x35</span>, <span class="number">0x6f</span>, <span class="number">0xbf</span>, <span class="number">0x64</span>, <span class="number">0x25</span>, <span class="number">0xac</span>, <span class="number">0xa2</span>, <span class="number">0x6d</span>,
+            <span class="number">0xc8</span>, <span class="number">0x52</span>, <span class="number">0x44</span>, <span class="number">0x25</span>, <span class="number">0x9f</span>, <span class="number">0xf2</span>, <span class="number">0xb1</span>, <span class="number">0x9c</span>, <span class="number">0x41</span>, <span class="number">0xb9</span>, <span class="number">0xf9</span>,
+            <span class="number">0x6f</span>, <span class="number">0x3c</span>, <span class="number">0xa9</span>, <span class="number">0xec</span>, <span class="number">0x1d</span>, <span class="number">0xde</span>, <span class="number">0x43</span>, <span class="number">0x4d</span>, <span class="number">0xa7</span>, <span class="number">0xd2</span>, <span class="number">0xd3</span>,
+            <span class="number">0x92</span>, <span class="number">0xb9</span>, <span class="number">0x05</span>, <span class="number">0xdd</span>, <span class="number">0xf3</span>, <span class="number">0xd1</span>, <span class="number">0xf9</span>, <span class="number">0xaf</span>, <span class="number">0x93</span>, <span class="number">0xd1</span>, <span class="number">0xaf</span>,
+            <span class="number">0x59</span>, <span class="number">0x50</span>, <span class="number">0xbd</span>, <span class="number">0x49</span>, <span class="number">0x3f</span>, <span class="number">0x5a</span>, <span class="number">0xa7</span>, <span class="number">0x31</span>, <span class="number">0xb4</span>, <span class="number">0x05</span>, <span class="number">0x6d</span>,
+            <span class="number">0xf3</span>, <span class="number">0x1b</span>, <span class="number">0xd2</span>, <span class="number">0x67</span>, <span class="number">0xb6</span>, <span class="number">0xb9</span>, <span class="number">0x0a</span>, <span class="number">0x07</span>, <span class="number">0x98</span>, <span class="number">0x31</span>, <span class="number">0xaa</span>,
+            <span class="number">0xf5</span>, <span class="number">0x79</span>, <span class="number">0xbe</span>, <span class="number">0x0a</span>, <span class="number">0x39</span>, <span class="number">0x01</span>, <span class="number">0x31</span>, <span class="number">0x37</span>, <span class="number">0xaa</span>, <span class="number">0xc6</span>, <span class="number">0xd4</span>,
+            <span class="number">0x04</span>, <span class="number">0xf5</span>, <span class="number">0x18</span>, <span class="number">0xcf</span>, <span class="number">0xd4</span>, <span class="number">0x68</span>, <span class="number">0x40</span>, <span class="number">0x64</span>, <span class="number">0x7e</span>, <span class="number">0x78</span>, <span class="number">0xbf</span>,
+            <span class="number">0xe7</span>, <span class="number">0x06</span>, <span class="number">0xca</span>, <span class="number">0x4c</span>, <span class="number">0xf5</span>, <span class="number">0xe9</span>, <span class="number">0xc5</span>, <span class="number">0x45</span>, <span class="number">0x3e</span>, <span class="number">0x9f</span>, <span class="number">0x7c</span>,
+            <span class="number">0xfd</span>, <span class="number">0x2b</span>, <span class="number">0x8b</span>, <span class="number">0x4c</span>, <span class="number">0x8d</span>, <span class="number">0x16</span>, <span class="number">0x9a</span>, <span class="number">0x44</span>, <span class="number">0xe5</span>, <span class="number">0x5c</span>, <span class="number">0x88</span>,
+            <span class="number">0xd4</span>, <span class="number">0xa9</span>, <span class="number">0xa7</span>, <span class="number">0xf9</span>, <span class="number">0x47</span>, <span class="number">0x42</span>, <span class="number">0x41</span>, <span class="number">0x10</span>, <span class="number">0x92</span>, <span class="number">0xab</span>, <span class="number">0xbd</span>,
+            <span class="number">0xf8</span>, <span class="number">0xb8</span>, <span class="number">0x89</span>, <span class="number">0xe5</span>, <span class="number">0xc1</span>, <span class="number">0x99</span>, <span class="number">0xd0</span>, <span class="number">0x96</span>, <span class="number">0xe3</span>, <span class="number">0xf2</span>, <span class="number">0x47</span>,
+            <span class="number">0x88</span>,
+        ];
+
+        assert_encrypt_initial_pkt(
+            <span class="kw-2">&amp;mut </span>header,
+            <span class="kw-2">&amp;</span>dcid,
+            <span class="kw-2">&amp;</span>frames,
+            <span class="number">2</span>,
+            <span class="number">4</span>,
+            <span class="bool-val">false</span>,
+            <span class="kw-2">&amp;</span>pkt,
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>encrypt_server_initial_v1() {
+        <span class="kw">let </span><span class="kw-2">mut </span>header = [
+            <span class="number">0xc1</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x01</span>, <span class="number">0x00</span>, <span class="number">0x08</span>, <span class="number">0xf0</span>, <span class="number">0x67</span>, <span class="number">0xa5</span>, <span class="number">0x50</span>,
+            <span class="number">0x2a</span>, <span class="number">0x42</span>, <span class="number">0x62</span>, <span class="number">0xb5</span>, <span class="number">0x00</span>, <span class="number">0x40</span>, <span class="number">0x75</span>, <span class="number">0x00</span>, <span class="number">0x01</span>,
+        ];
+
+        <span class="kw">let </span>dcid = [<span class="number">0x83</span>, <span class="number">0x94</span>, <span class="number">0xc8</span>, <span class="number">0xf0</span>, <span class="number">0x3e</span>, <span class="number">0x51</span>, <span class="number">0x57</span>, <span class="number">0x08</span>];
+
+        <span class="kw">let </span>frames = [
+            <span class="number">0x02</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x06</span>, <span class="number">0x00</span>, <span class="number">0x40</span>, <span class="number">0x5a</span>, <span class="number">0x02</span>, <span class="number">0x00</span>,
+            <span class="number">0x00</span>, <span class="number">0x56</span>, <span class="number">0x03</span>, <span class="number">0x03</span>, <span class="number">0xee</span>, <span class="number">0xfc</span>, <span class="number">0xe7</span>, <span class="number">0xf7</span>, <span class="number">0xb3</span>, <span class="number">0x7b</span>, <span class="number">0xa1</span>,
+            <span class="number">0xd1</span>, <span class="number">0x63</span>, <span class="number">0x2e</span>, <span class="number">0x96</span>, <span class="number">0x67</span>, <span class="number">0x78</span>, <span class="number">0x25</span>, <span class="number">0xdd</span>, <span class="number">0xf7</span>, <span class="number">0x39</span>, <span class="number">0x88</span>,
+            <span class="number">0xcf</span>, <span class="number">0xc7</span>, <span class="number">0x98</span>, <span class="number">0x25</span>, <span class="number">0xdf</span>, <span class="number">0x56</span>, <span class="number">0x6d</span>, <span class="number">0xc5</span>, <span class="number">0x43</span>, <span class="number">0x0b</span>, <span class="number">0x9a</span>,
+            <span class="number">0x04</span>, <span class="number">0x5a</span>, <span class="number">0x12</span>, <span class="number">0x00</span>, <span class="number">0x13</span>, <span class="number">0x01</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x2e</span>, <span class="number">0x00</span>, <span class="number">0x33</span>,
+            <span class="number">0x00</span>, <span class="number">0x24</span>, <span class="number">0x00</span>, <span class="number">0x1d</span>, <span class="number">0x00</span>, <span class="number">0x20</span>, <span class="number">0x9d</span>, <span class="number">0x3c</span>, <span class="number">0x94</span>, <span class="number">0x0d</span>, <span class="number">0x89</span>,
+            <span class="number">0x69</span>, <span class="number">0x0b</span>, <span class="number">0x84</span>, <span class="number">0xd0</span>, <span class="number">0x8a</span>, <span class="number">0x60</span>, <span class="number">0x99</span>, <span class="number">0x3c</span>, <span class="number">0x14</span>, <span class="number">0x4e</span>, <span class="number">0xca</span>,
+            <span class="number">0x68</span>, <span class="number">0x4d</span>, <span class="number">0x10</span>, <span class="number">0x81</span>, <span class="number">0x28</span>, <span class="number">0x7c</span>, <span class="number">0x83</span>, <span class="number">0x4d</span>, <span class="number">0x53</span>, <span class="number">0x11</span>, <span class="number">0xbc</span>,
+            <span class="number">0xf3</span>, <span class="number">0x2b</span>, <span class="number">0xb9</span>, <span class="number">0xda</span>, <span class="number">0x1a</span>, <span class="number">0x00</span>, <span class="number">0x2b</span>, <span class="number">0x00</span>, <span class="number">0x02</span>, <span class="number">0x03</span>, <span class="number">0x04</span>,
+        ];
+
+        <span class="kw">let </span>pkt = [
+            <span class="number">0xcf</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x00</span>, <span class="number">0x01</span>, <span class="number">0x00</span>, <span class="number">0x08</span>, <span class="number">0xf0</span>, <span class="number">0x67</span>, <span class="number">0xa5</span>, <span class="number">0x50</span>,
+            <span class="number">0x2a</span>, <span class="number">0x42</span>, <span class="number">0x62</span>, <span class="number">0xb5</span>, <span class="number">0x00</span>, <span class="number">0x40</span>, <span class="number">0x75</span>, <span class="number">0xc0</span>, <span class="number">0xd9</span>, <span class="number">0x5a</span>, <span class="number">0x48</span>,
+            <span class="number">0x2c</span>, <span class="number">0xd0</span>, <span class="number">0x99</span>, <span class="number">0x1c</span>, <span class="number">0xd2</span>, <span class="number">0x5b</span>, <span class="number">0x0a</span>, <span class="number">0xac</span>, <span class="number">0x40</span>, <span class="number">0x6a</span>, <span class="number">0x58</span>,
+            <span class="number">0x16</span>, <span class="number">0xb6</span>, <span class="number">0x39</span>, <span class="number">0x41</span>, <span class="number">0x00</span>, <span class="number">0xf3</span>, <span class="number">0x7a</span>, <span class="number">0x1c</span>, <span class="number">0x69</span>, <span class="number">0x79</span>, <span class="number">0x75</span>,
+            <span class="number">0x54</span>, <span class="number">0x78</span>, <span class="number">0x0b</span>, <span class="number">0xb3</span>, <span class="number">0x8c</span>, <span class="number">0xc5</span>, <span class="number">0xa9</span>, <span class="number">0x9f</span>, <span class="number">0x5e</span>, <span class="number">0xde</span>, <span class="number">0x4c</span>,
+            <span class="number">0xf7</span>, <span class="number">0x3c</span>, <span class="number">0x3e</span>, <span class="number">0xc2</span>, <span class="number">0x49</span>, <span class="number">0x3a</span>, <span class="number">0x18</span>, <span class="number">0x39</span>, <span class="number">0xb3</span>, <span class="number">0xdb</span>, <span class="number">0xcb</span>,
+            <span class="number">0xa3</span>, <span class="number">0xf6</span>, <span class="number">0xea</span>, <span class="number">0x46</span>, <span class="number">0xc5</span>, <span class="number">0xb7</span>, <span class="number">0x68</span>, <span class="number">0x4d</span>, <span class="number">0xf3</span>, <span class="number">0x54</span>, <span class="number">0x8e</span>,
+            <span class="number">0x7d</span>, <span class="number">0xde</span>, <span class="number">0xb9</span>, <span class="number">0xc3</span>, <span class="number">0xbf</span>, <span class="number">0x9c</span>, <span class="number">0x73</span>, <span class="number">0xcc</span>, <span class="number">0x3f</span>, <span class="number">0x3b</span>, <span class="number">0xde</span>,
+            <span class="number">0xd7</span>, <span class="number">0x4b</span>, <span class="number">0x56</span>, <span class="number">0x2b</span>, <span class="number">0xfb</span>, <span class="number">0x19</span>, <span class="number">0xfb</span>, <span class="number">0x84</span>, <span class="number">0x02</span>, <span class="number">0x2f</span>, <span class="number">0x8e</span>,
+            <span class="number">0xf4</span>, <span class="number">0xcd</span>, <span class="number">0xd9</span>, <span class="number">0x37</span>, <span class="number">0x95</span>, <span class="number">0xd7</span>, <span class="number">0x7d</span>, <span class="number">0x06</span>, <span class="number">0xed</span>, <span class="number">0xbb</span>, <span class="number">0x7a</span>,
+            <span class="number">0xaf</span>, <span class="number">0x2f</span>, <span class="number">0x58</span>, <span class="number">0x89</span>, <span class="number">0x18</span>, <span class="number">0x50</span>, <span class="number">0xab</span>, <span class="number">0xbd</span>, <span class="number">0xca</span>, <span class="number">0x3d</span>, <span class="number">0x20</span>,
+            <span class="number">0x39</span>, <span class="number">0x8c</span>, <span class="number">0x27</span>, <span class="number">0x64</span>, <span class="number">0x56</span>, <span class="number">0xcb</span>, <span class="number">0xc4</span>, <span class="number">0x21</span>, <span class="number">0x58</span>, <span class="number">0x40</span>, <span class="number">0x7d</span>,
+            <span class="number">0xd0</span>, <span class="number">0x74</span>, <span class="number">0xee</span>,
+        ];
+
+        assert_encrypt_initial_pkt(<span class="kw-2">&amp;mut </span>header, <span class="kw-2">&amp;</span>dcid, <span class="kw-2">&amp;</span>frames, <span class="number">1</span>, <span class="number">2</span>, <span class="bool-val">true</span>, <span class="kw-2">&amp;</span>pkt);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>encrypt_chacha20() {
+        <span class="kw">let </span>secret = [
+            <span class="number">0x9a</span>, <span class="number">0xc3</span>, <span class="number">0x12</span>, <span class="number">0xa7</span>, <span class="number">0xf8</span>, <span class="number">0x77</span>, <span class="number">0x46</span>, <span class="number">0x8e</span>, <span class="number">0xbe</span>, <span class="number">0x69</span>, <span class="number">0x42</span>,
+            <span class="number">0x27</span>, <span class="number">0x48</span>, <span class="number">0xad</span>, <span class="number">0x00</span>, <span class="number">0xa1</span>, <span class="number">0x54</span>, <span class="number">0x43</span>, <span class="number">0xf1</span>, <span class="number">0x82</span>, <span class="number">0x03</span>, <span class="number">0xa0</span>,
+            <span class="number">0x7d</span>, <span class="number">0x60</span>, <span class="number">0x60</span>, <span class="number">0xf6</span>, <span class="number">0x88</span>, <span class="number">0xf3</span>, <span class="number">0x0f</span>, <span class="number">0x21</span>, <span class="number">0x63</span>, <span class="number">0x2b</span>,
+        ];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>header = [<span class="number">0x42</span>, <span class="number">0x00</span>, <span class="number">0xbf</span>, <span class="number">0xf4</span>];
+
+        <span class="kw">let </span>expected_pkt = [
+            <span class="number">0x4c</span>, <span class="number">0xfe</span>, <span class="number">0x41</span>, <span class="number">0x89</span>, <span class="number">0x65</span>, <span class="number">0x5e</span>, <span class="number">0x5c</span>, <span class="number">0xd5</span>, <span class="number">0x5c</span>, <span class="number">0x41</span>, <span class="number">0xf6</span>,
+            <span class="number">0x90</span>, <span class="number">0x80</span>, <span class="number">0x57</span>, <span class="number">0x5d</span>, <span class="number">0x79</span>, <span class="number">0x99</span>, <span class="number">0xc2</span>, <span class="number">0x5a</span>, <span class="number">0x5b</span>, <span class="number">0xfb</span>,
+        ];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>header);
+
+        <span class="kw">let </span>hdr = Header::from_bytes(<span class="kw-2">&amp;mut </span>b, <span class="number">0</span>).unwrap();
+        <span class="macro">assert_eq!</span>(hdr.ty, Type::Short);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>out = <span class="macro">vec!</span>[<span class="number">0</span>; expected_pkt.len()];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>out);
+
+        b.put_bytes(<span class="kw-2">&amp;</span>header).unwrap();
+
+        <span class="kw">let </span>alg = crypto::Algorithm::ChaCha20_Poly1305;
+
+        <span class="kw">let </span>aead = crypto::Seal::from_secret(alg, secret.into()).unwrap();
+
+        <span class="kw">let </span>pn = <span class="number">654_360_564</span>;
+        <span class="kw">let </span>pn_len = <span class="number">3</span>;
+
+        <span class="kw">let </span>frames = [<span class="number">0x01</span>];
+
+        <span class="kw">let </span>payload_len = frames.len();
+
+        <span class="kw">let </span>payload_offset = b.off();
+
+        b.put_bytes(<span class="kw-2">&amp;</span>frames).unwrap();
+
+        <span class="kw">let </span>written = encrypt_pkt(
+            <span class="kw-2">&amp;mut </span>b,
+            pn,
+            pn_len,
+            payload_len,
+            payload_offset,
+            <span class="prelude-val">None</span>,
+            <span class="kw-2">&amp;</span>aead,
+        )
+        .unwrap();
+
+        <span class="macro">assert_eq!</span>(written, expected_pkt.len());
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>out[..written], <span class="kw-2">&amp;</span>expected_pkt[..]);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>decrypt_pkt_underflow() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>buf);
+
+        <span class="kw">let </span>hdr = Header {
+            ty: Type::Initial,
+            version: <span class="kw">crate</span>::PROTOCOL_VERSION,
+            dcid: ConnectionId::default(),
+            scid: ConnectionId::default(),
+            pkt_num: <span class="number">0</span>,
+            pkt_num_len: <span class="number">0</span>,
+            token: <span class="prelude-val">None</span>,
+            versions: <span class="prelude-val">None</span>,
+            key_phase: <span class="bool-val">false</span>,
+        };
+
+        hdr.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+
+        b.put_bytes(<span class="kw-2">&amp;</span>[<span class="number">0</span>; <span class="number">50</span>]).unwrap();
+
+        <span class="kw">let </span>payload_len = b.get_varint().unwrap() <span class="kw">as </span>usize;
+
+        <span class="kw">let </span>(aead, <span class="kw">_</span>) =
+            crypto::derive_initial_key_material(<span class="string">b""</span>, hdr.version, <span class="bool-val">true</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            decrypt_pkt(<span class="kw-2">&amp;mut </span>b, <span class="number">0</span>, <span class="number">1</span>, payload_len, <span class="kw-2">&amp;</span>aead),
+            <span class="prelude-val">Err</span>(Error::InvalidPacket)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>decrypt_pkt_too_small() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>buf);
+
+        <span class="kw">let </span>hdr = Header {
+            ty: Type::Initial,
+            version: <span class="kw">crate</span>::PROTOCOL_VERSION,
+            dcid: ConnectionId::default(),
+            scid: ConnectionId::default(),
+            pkt_num: <span class="number">0</span>,
+            pkt_num_len: <span class="number">0</span>,
+            token: <span class="prelude-val">None</span>,
+            versions: <span class="prelude-val">None</span>,
+            key_phase: <span class="bool-val">false</span>,
+        };
+
+        hdr.to_bytes(<span class="kw-2">&amp;mut </span>b).unwrap();
+
+        b.put_bytes(<span class="kw-2">&amp;</span>[<span class="number">0</span>; <span class="number">1</span>]).unwrap();
+
+        <span class="comment">// No space for decryption.
+        </span><span class="kw">let </span>payload_len = <span class="number">1</span>;
+
+        <span class="kw">let </span>(aead, <span class="kw">_</span>) =
+            crypto::derive_initial_key_material(<span class="string">b""</span>, hdr.version, <span class="bool-val">true</span>).unwrap();
+
+        <span class="macro">assert_eq!</span>(
+            decrypt_pkt(<span class="kw-2">&amp;mut </span>b, <span class="number">0</span>, <span class="number">1</span>, payload_len, <span class="kw-2">&amp;</span>aead),
+            <span class="prelude-val">Err</span>(Error::CryptoFail)
+        );
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/path.rs.html b/src/quiche/path.rs.html
new file mode 100644
index 0000000..9861927
--- /dev/null
+++ b/src/quiche/path.rs.html
@@ -0,0 +1,2537 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/path.rs`."><title>path.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+<a href="#1217" id="1217">1217</a>
+<a href="#1218" id="1218">1218</a>
+<a href="#1219" id="1219">1219</a>
+<a href="#1220" id="1220">1220</a>
+<a href="#1221" id="1221">1221</a>
+<a href="#1222" id="1222">1222</a>
+<a href="#1223" id="1223">1223</a>
+<a href="#1224" id="1224">1224</a>
+<a href="#1225" id="1225">1225</a>
+<a href="#1226" id="1226">1226</a>
+<a href="#1227" id="1227">1227</a>
+<a href="#1228" id="1228">1228</a>
+<a href="#1229" id="1229">1229</a>
+<a href="#1230" id="1230">1230</a>
+<a href="#1231" id="1231">1231</a>
+<a href="#1232" id="1232">1232</a>
+<a href="#1233" id="1233">1233</a>
+<a href="#1234" id="1234">1234</a>
+<a href="#1235" id="1235">1235</a>
+<a href="#1236" id="1236">1236</a>
+<a href="#1237" id="1237">1237</a>
+<a href="#1238" id="1238">1238</a>
+<a href="#1239" id="1239">1239</a>
+<a href="#1240" id="1240">1240</a>
+<a href="#1241" id="1241">1241</a>
+<a href="#1242" id="1242">1242</a>
+<a href="#1243" id="1243">1243</a>
+<a href="#1244" id="1244">1244</a>
+<a href="#1245" id="1245">1245</a>
+<a href="#1246" id="1246">1246</a>
+<a href="#1247" id="1247">1247</a>
+<a href="#1248" id="1248">1248</a>
+<a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</a>
+<a href="#1259" id="1259">1259</a>
+<a href="#1260" id="1260">1260</a>
+<a href="#1261" id="1261">1261</a>
+<a href="#1262" id="1262">1262</a>
+<a href="#1263" id="1263">1263</a>
+<a href="#1264" id="1264">1264</a>
+<a href="#1265" id="1265">1265</a>
+<a href="#1266" id="1266">1266</a>
+<a href="#1267" id="1267">1267</a>
+<a href="#1268" id="1268">1268</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2022, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span>std::time;
+
+<span class="kw">use </span>std::collections::BTreeMap;
+<span class="kw">use </span>std::collections::VecDeque;
+<span class="kw">use </span>std::net::SocketAddr;
+
+<span class="kw">use </span>smallvec::SmallVec;
+
+<span class="kw">use </span>slab::Slab;
+
+<span class="kw">use </span><span class="kw">crate</span>::Error;
+<span class="kw">use </span><span class="kw">crate</span>::Result;
+
+<span class="kw">use </span><span class="kw">crate</span>::pmtud;
+<span class="kw">use </span><span class="kw">crate</span>::recovery;
+<span class="kw">use </span><span class="kw">crate</span>::recovery::HandshakeStatus;
+
+<span class="doccomment">/// The different states of the path validation.
+</span><span class="attr">#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
+</span><span class="kw">pub enum </span>PathState {
+    <span class="doccomment">/// The path failed its validation.
+    </span>Failed,
+
+    <span class="doccomment">/// The path exists, but no path validation has been performed.
+    </span>Unknown,
+
+    <span class="doccomment">/// The path is under validation.
+    </span>Validating,
+
+    <span class="doccomment">/// The remote address has been validated, but not the path MTU.
+    </span>ValidatingMTU,
+
+    <span class="doccomment">/// The path has been validated.
+    </span>Validated,
+}
+
+<span class="kw">impl </span>PathState {
+    <span class="attr">#[cfg(feature = <span class="string">"ffi"</span>)]
+    </span><span class="kw">pub fn </span>to_c(<span class="self">self</span>) -&gt; libc::ssize_t {
+        <span class="kw">match </span><span class="self">self </span>{
+            PathState::Failed =&gt; -<span class="number">1</span>,
+            PathState::Unknown =&gt; <span class="number">0</span>,
+            PathState::Validating =&gt; <span class="number">1</span>,
+            PathState::ValidatingMTU =&gt; <span class="number">2</span>,
+            PathState::Validated =&gt; <span class="number">3</span>,
+        }
+    }
+}
+
+<span class="doccomment">/// A path-specific event.
+</span><span class="attr">#[derive(Clone, Debug, PartialEq, Eq)]
+</span><span class="kw">pub enum </span>PathEvent {
+    <span class="doccomment">/// A new network path (local address, peer address) has been seen on a
+    /// received packet. Note that this event is only triggered for servers, as
+    /// the client is responsible from initiating new paths. The application may
+    /// then probe this new path, if desired.
+    </span>New(SocketAddr, SocketAddr),
+
+    <span class="doccomment">/// The related network path between local `SocketAddr` and peer
+    /// `SocketAddr` has been validated.
+    </span>Validated(SocketAddr, SocketAddr),
+
+    <span class="doccomment">/// The related network path between local `SocketAddr` and peer
+    /// `SocketAddr` failed to be validated. This network path will not be used
+    /// anymore, unless the application requests probing this path again.
+    </span>FailedValidation(SocketAddr, SocketAddr),
+
+    <span class="doccomment">/// The related network path between local `SocketAddr` and peer
+    /// `SocketAddr` has been closed and is now unusable on this connection.
+    </span>Closed(SocketAddr, SocketAddr),
+
+    <span class="doccomment">/// The stack observes that the Source Connection ID with the given sequence
+    /// number, initially used by the peer over the first pair of `SocketAddr`s,
+    /// is now reused over the second pair of `SocketAddr`s.
+    </span>ReusedSourceConnectionId(
+        u64,
+        (SocketAddr, SocketAddr),
+        (SocketAddr, SocketAddr),
+    ),
+
+    <span class="doccomment">/// The connection observed that the peer migrated over the network path
+    /// denoted by the pair of `SocketAddr`, i.e., non-probing packets have been
+    /// received on this network path. This is a server side only event.
+    ///
+    /// Note that this event is only raised if the path has been validated.
+    </span>PeerMigrated(SocketAddr, SocketAddr),
+}
+
+<span class="doccomment">/// A network path on which QUIC packets can be sent.
+</span><span class="attr">#[derive(Debug)]
+</span><span class="kw">pub struct </span>Path {
+    <span class="doccomment">/// The local address.
+    </span>local_addr: SocketAddr,
+
+    <span class="doccomment">/// The remote address.
+    </span>peer_addr: SocketAddr,
+
+    <span class="doccomment">/// Source CID sequence number used over that path.
+    </span><span class="kw">pub </span>active_scid_seq: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    <span class="doccomment">/// Destination CID sequence number used over that path.
+    </span><span class="kw">pub </span>active_dcid_seq: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    <span class="doccomment">/// The current validation state of the path.
+    </span>state: PathState,
+
+    <span class="doccomment">/// Is this path used to send non-probing packets.
+    </span>active: bool,
+
+    <span class="doccomment">/// Loss recovery and congestion control state.
+    </span><span class="kw">pub </span>recovery: recovery::Recovery,
+
+    <span class="doccomment">/// Path MTU discovery state.
+    </span><span class="kw">pub </span>pmtud: pmtud::Pmtud,
+
+    <span class="doccomment">/// Pending challenge data with the size of the packet containing them and
+    /// when they were sent.
+    </span>in_flight_challenges: VecDeque&lt;([u8; <span class="number">8</span>], usize, time::Instant)&gt;,
+
+    <span class="doccomment">/// The maximum challenge size that got acknowledged.
+    </span>max_challenge_size: usize,
+
+    <span class="doccomment">/// Number of consecutive (spaced by at least 1 RTT) probing packets lost.
+    </span>probing_lost: usize,
+
+    <span class="doccomment">/// Last instant when a probing packet got lost.
+    </span>last_probe_lost_time: <span class="prelude-ty">Option</span>&lt;time::Instant&gt;,
+
+    <span class="doccomment">/// Received challenge data.
+    </span>received_challenges: VecDeque&lt;[u8; <span class="number">8</span>]&gt;,
+
+    <span class="doccomment">/// Max length of received challenges queue.
+    </span>received_challenges_max_len: usize,
+
+    <span class="doccomment">/// Number of packets sent on this path.
+    </span><span class="kw">pub </span>sent_count: usize,
+
+    <span class="doccomment">/// Number of packets received on this path.
+    </span><span class="kw">pub </span>recv_count: usize,
+
+    <span class="doccomment">/// Total number of packets sent with data retransmitted from this path.
+    </span><span class="kw">pub </span>retrans_count: usize,
+
+    <span class="doccomment">/// Total number of sent bytes over this path.
+    </span><span class="kw">pub </span>sent_bytes: u64,
+
+    <span class="doccomment">/// Total number of bytes received over this path.
+    </span><span class="kw">pub </span>recv_bytes: u64,
+
+    <span class="doccomment">/// Total number of bytes retransmitted from this path.
+    /// This counts only STREAM and CRYPTO data.
+    </span><span class="kw">pub </span>stream_retrans_bytes: u64,
+
+    <span class="doccomment">/// Total number of bytes the server can send before the peer's address
+    /// is verified.
+    </span><span class="kw">pub </span>max_send_bytes: usize,
+
+    <span class="doccomment">/// Whether the peer's address has been verified.
+    </span><span class="kw">pub </span>verified_peer_address: bool,
+
+    <span class="doccomment">/// Whether the peer has verified our address.
+    </span><span class="kw">pub </span>peer_verified_local_address: bool,
+
+    <span class="doccomment">/// Does it requires sending PATH_CHALLENGE?
+    </span>challenge_requested: bool,
+
+    <span class="doccomment">/// Whether the failure of this path was notified.
+    </span>failure_notified: bool,
+
+    <span class="doccomment">/// Whether the connection tries to migrate to this path, but it still needs
+    /// to be validated.
+    </span>migrating: bool,
+
+    <span class="doccomment">/// Whether or not we should force eliciting of an ACK (e.g. via PING frame)
+    </span><span class="kw">pub </span>needs_ack_eliciting: bool,
+}
+
+<span class="kw">impl </span>Path {
+    <span class="doccomment">/// Create a new Path instance with the provided addresses, the remaining of
+    /// the fields being set to their default value.
+    </span><span class="kw">pub fn </span>new(
+        local_addr: SocketAddr, peer_addr: SocketAddr,
+        recovery_config: <span class="kw-2">&amp;</span>recovery::RecoveryConfig,
+        path_challenge_recv_max_queue_len: usize, pmtud_init: usize,
+        is_initial: bool,
+    ) -&gt; <span class="self">Self </span>{
+        <span class="kw">let </span>(state, active_scid_seq, active_dcid_seq) = <span class="kw">if </span>is_initial {
+            (PathState::Validated, <span class="prelude-val">Some</span>(<span class="number">0</span>), <span class="prelude-val">Some</span>(<span class="number">0</span>))
+        } <span class="kw">else </span>{
+            (PathState::Unknown, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>)
+        };
+
+        <span class="self">Self </span>{
+            local_addr,
+            peer_addr,
+            active_scid_seq,
+            active_dcid_seq,
+            state,
+            active: <span class="bool-val">false</span>,
+            recovery: recovery::Recovery::new_with_config(recovery_config),
+            pmtud: pmtud::Pmtud::new(pmtud_init),
+            in_flight_challenges: VecDeque::new(),
+            max_challenge_size: <span class="number">0</span>,
+            probing_lost: <span class="number">0</span>,
+            last_probe_lost_time: <span class="prelude-val">None</span>,
+            received_challenges: VecDeque::with_capacity(
+                path_challenge_recv_max_queue_len,
+            ),
+            received_challenges_max_len: path_challenge_recv_max_queue_len,
+            sent_count: <span class="number">0</span>,
+            recv_count: <span class="number">0</span>,
+            retrans_count: <span class="number">0</span>,
+            sent_bytes: <span class="number">0</span>,
+            recv_bytes: <span class="number">0</span>,
+            stream_retrans_bytes: <span class="number">0</span>,
+            max_send_bytes: <span class="number">0</span>,
+            verified_peer_address: <span class="bool-val">false</span>,
+            peer_verified_local_address: <span class="bool-val">false</span>,
+            challenge_requested: <span class="bool-val">false</span>,
+            failure_notified: <span class="bool-val">false</span>,
+            migrating: <span class="bool-val">false</span>,
+            needs_ack_eliciting: <span class="bool-val">false</span>,
+        }
+    }
+
+    <span class="doccomment">/// Returns the local address on which this path operates.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>local_addr(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; SocketAddr {
+        <span class="self">self</span>.local_addr
+    }
+
+    <span class="doccomment">/// Returns the peer address on which this path operates.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>peer_addr(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; SocketAddr {
+        <span class="self">self</span>.peer_addr
+    }
+
+    <span class="doccomment">/// Returns whether the path is working (i.e., not failed).
+    </span><span class="attr">#[inline]
+    </span><span class="kw">fn </span>working(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.state &gt; PathState::Failed
+    }
+
+    <span class="doccomment">/// Returns whether the path is active.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>active(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.active &amp;&amp; <span class="self">self</span>.working() &amp;&amp; <span class="self">self</span>.active_dcid_seq.is_some()
+    }
+
+    <span class="doccomment">/// Returns whether the path can be used to send non-probing packets.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>usable(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.active() ||
+            (<span class="self">self</span>.state == PathState::Validated &amp;&amp;
+                <span class="self">self</span>.active_dcid_seq.is_some())
+    }
+
+    <span class="doccomment">/// Returns whether the path is unused.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">fn </span>unused(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="comment">// FIXME: we should check that there is nothing in the sent queue.
+        </span>!<span class="self">self</span>.active() &amp;&amp; <span class="self">self</span>.active_dcid_seq.is_none()
+    }
+
+    <span class="doccomment">/// Returns whether the path requires sending a probing packet.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>probing_required(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        !<span class="self">self</span>.received_challenges.is_empty() || <span class="self">self</span>.validation_requested()
+    }
+
+    <span class="doccomment">/// Promotes the path to the provided state only if the new state is greater
+    /// than the current one.
+    </span><span class="kw">fn </span>promote_to(<span class="kw-2">&amp;mut </span><span class="self">self</span>, state: PathState) {
+        <span class="kw">if </span><span class="self">self</span>.state &lt; state {
+            <span class="self">self</span>.state = state;
+        }
+    }
+
+    <span class="doccomment">/// Returns whether the path is validated.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>validated(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.state == PathState::Validated
+    }
+
+    <span class="doccomment">/// Returns whether this path failed its validation.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">fn </span>validation_failed(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.state == PathState::Failed
+    }
+
+    <span class="comment">// Returns whether this path is under path validation process.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>under_validation(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="macro">matches!</span>(<span class="self">self</span>.state, PathState::Validating | PathState::ValidatingMTU)
+    }
+
+    <span class="doccomment">/// Requests path validation.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>request_validation(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="self">self</span>.challenge_requested = <span class="bool-val">true</span>;
+    }
+
+    <span class="doccomment">/// Returns whether a validation is requested.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>validation_requested(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.challenge_requested
+    }
+
+    <span class="kw">pub fn </span>should_send_pmtu_probe(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, hs_confirmed: bool, hs_done: bool, out_len: usize,
+        is_closing: bool, frames_empty: bool,
+    ) -&gt; bool {
+        (hs_confirmed &amp;&amp; hs_done) &amp;&amp;
+            <span class="self">self</span>.pmtud.get_probe_size() &gt; <span class="self">self</span>.pmtud.get_current() &amp;&amp;
+            <span class="self">self</span>.recovery.cwnd_available() &gt; <span class="self">self</span>.pmtud.get_probe_size() &amp;&amp;
+            out_len &gt;= <span class="self">self</span>.pmtud.get_probe_size() &amp;&amp;
+            <span class="self">self</span>.pmtud.get_probe_status() &amp;&amp;
+            !is_closing &amp;&amp;
+            frames_empty
+    }
+
+    <span class="kw">pub fn </span>on_challenge_sent(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="self">self</span>.promote_to(PathState::Validating);
+        <span class="self">self</span>.challenge_requested = <span class="bool-val">false</span>;
+    }
+
+    <span class="doccomment">/// Handles the sending of PATH_CHALLENGE.
+    </span><span class="kw">pub fn </span>add_challenge_sent(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, data: [u8; <span class="number">8</span>], pkt_size: usize, sent_time: time::Instant,
+    ) {
+        <span class="self">self</span>.on_challenge_sent();
+        <span class="self">self</span>.in_flight_challenges
+            .push_back((data, pkt_size, sent_time));
+    }
+
+    <span class="kw">pub fn </span>on_challenge_received(<span class="kw-2">&amp;mut </span><span class="self">self</span>, data: [u8; <span class="number">8</span>]) {
+        <span class="comment">// Discard challenges that would cause us to queue more than we want.
+        </span><span class="kw">if </span><span class="self">self</span>.received_challenges.len() == <span class="self">self</span>.received_challenges_max_len {
+            <span class="kw">return</span>;
+        }
+
+        <span class="self">self</span>.received_challenges.push_back(data);
+        <span class="self">self</span>.peer_verified_local_address = <span class="bool-val">true</span>;
+    }
+
+    <span class="kw">pub fn </span>has_pending_challenge(<span class="kw-2">&amp;</span><span class="self">self</span>, data: [u8; <span class="number">8</span>]) -&gt; bool {
+        <span class="self">self</span>.in_flight_challenges.iter().any(|(d, ..)| <span class="kw-2">*</span>d == data)
+    }
+
+    <span class="doccomment">/// Returns whether the path is now validated.
+    </span><span class="kw">pub fn </span>on_response_received(<span class="kw-2">&amp;mut </span><span class="self">self</span>, data: [u8; <span class="number">8</span>]) -&gt; bool {
+        <span class="self">self</span>.verified_peer_address = <span class="bool-val">true</span>;
+        <span class="self">self</span>.probing_lost = <span class="number">0</span>;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>challenge_size = <span class="number">0</span>;
+        <span class="self">self</span>.in_flight_challenges.retain(|(d, s, <span class="kw">_</span>)| {
+            <span class="kw">if </span><span class="kw-2">*</span>d == data {
+                challenge_size = <span class="kw-2">*</span>s;
+                <span class="bool-val">false
+            </span>} <span class="kw">else </span>{
+                <span class="bool-val">true
+            </span>}
+        });
+
+        <span class="comment">// The 4-tuple is reachable, but we didn't check Path MTU yet.
+        </span><span class="self">self</span>.promote_to(PathState::ValidatingMTU);
+
+        <span class="self">self</span>.max_challenge_size =
+            std::cmp::max(<span class="self">self</span>.max_challenge_size, challenge_size);
+
+        <span class="kw">if </span><span class="self">self</span>.state == PathState::ValidatingMTU {
+            <span class="kw">if </span><span class="self">self</span>.max_challenge_size &gt;= <span class="kw">crate</span>::MIN_CLIENT_INITIAL_LEN {
+                <span class="comment">// Path MTU is sufficient for QUIC traffic.
+                </span><span class="self">self</span>.promote_to(PathState::Validated);
+                <span class="kw">return </span><span class="bool-val">true</span>;
+            }
+
+            <span class="comment">// If the MTU was not validated, probe again.
+            </span><span class="self">self</span>.request_validation();
+        }
+
+        <span class="bool-val">false
+    </span>}
+
+    <span class="kw">fn </span>on_failed_validation(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="self">self</span>.state = PathState::Failed;
+        <span class="self">self</span>.active = <span class="bool-val">false</span>;
+    }
+
+    <span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>pop_received_challenge(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;[u8; <span class="number">8</span>]&gt; {
+        <span class="self">self</span>.received_challenges.pop_front()
+    }
+
+    <span class="kw">pub fn </span>on_loss_detection_timeout(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, handshake_status: HandshakeStatus, now: time::Instant,
+        is_server: bool, trace_id: <span class="kw-2">&amp;</span>str,
+    ) -&gt; (usize, usize) {
+        <span class="kw">let </span>(lost_packets, lost_bytes) = <span class="self">self</span>.recovery.on_loss_detection_timeout(
+            handshake_status,
+            now,
+            trace_id,
+        );
+
+        <span class="kw">let </span><span class="kw-2">mut </span>lost_probe_time = <span class="prelude-val">None</span>;
+        <span class="self">self</span>.in_flight_challenges.retain(|(<span class="kw">_</span>, <span class="kw">_</span>, sent_time)| {
+            <span class="kw">if </span><span class="kw-2">*</span>sent_time &lt;= now {
+                <span class="kw">if </span>lost_probe_time.is_none() {
+                    lost_probe_time = <span class="prelude-val">Some</span>(<span class="kw-2">*</span>sent_time);
+                }
+                <span class="bool-val">false
+            </span>} <span class="kw">else </span>{
+                <span class="bool-val">true
+            </span>}
+        });
+
+        <span class="comment">// If we lost probing packets, check if the path failed
+        // validation.
+        </span><span class="kw">if let </span><span class="prelude-val">Some</span>(lost_probe_time) = lost_probe_time {
+            <span class="self">self</span>.last_probe_lost_time = <span class="kw">match </span><span class="self">self</span>.last_probe_lost_time {
+                <span class="prelude-val">Some</span>(last) =&gt; {
+                    <span class="comment">// Count a loss if at least 1-RTT happened.
+                    </span><span class="kw">if </span>lost_probe_time - last &gt;= <span class="self">self</span>.recovery.rtt() {
+                        <span class="self">self</span>.probing_lost += <span class="number">1</span>;
+                        <span class="prelude-val">Some</span>(lost_probe_time)
+                    } <span class="kw">else </span>{
+                        <span class="prelude-val">Some</span>(last)
+                    }
+                },
+                <span class="prelude-val">None </span>=&gt; {
+                    <span class="self">self</span>.probing_lost += <span class="number">1</span>;
+                    <span class="prelude-val">Some</span>(lost_probe_time)
+                },
+            };
+            <span class="comment">// As a server, if requesting a challenge is not
+            // possible due to the amplification attack, declare the
+            // validation as failed.
+            </span><span class="kw">if </span><span class="self">self</span>.probing_lost &gt;= <span class="kw">crate</span>::MAX_PROBING_TIMEOUTS ||
+                (is_server &amp;&amp; <span class="self">self</span>.max_send_bytes &lt; <span class="kw">crate</span>::MIN_PROBING_SIZE)
+            {
+                <span class="self">self</span>.on_failed_validation();
+            } <span class="kw">else </span>{
+                <span class="self">self</span>.request_validation();
+            }
+        }
+
+        (lost_packets, lost_bytes)
+    }
+
+    <span class="kw">pub fn </span>stats(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; PathStats {
+        PathStats {
+            local_addr: <span class="self">self</span>.local_addr,
+            peer_addr: <span class="self">self</span>.peer_addr,
+            validation_state: <span class="self">self</span>.state,
+            active: <span class="self">self</span>.active,
+            recv: <span class="self">self</span>.recv_count,
+            sent: <span class="self">self</span>.sent_count,
+            lost: <span class="self">self</span>.recovery.lost_count,
+            retrans: <span class="self">self</span>.retrans_count,
+            rtt: <span class="self">self</span>.recovery.rtt(),
+            min_rtt: <span class="self">self</span>.recovery.min_rtt(),
+            rttvar: <span class="self">self</span>.recovery.rttvar(),
+            cwnd: <span class="self">self</span>.recovery.cwnd(),
+            sent_bytes: <span class="self">self</span>.sent_bytes,
+            recv_bytes: <span class="self">self</span>.recv_bytes,
+            lost_bytes: <span class="self">self</span>.recovery.bytes_lost,
+            stream_retrans_bytes: <span class="self">self</span>.stream_retrans_bytes,
+            pmtu: <span class="self">self</span>.recovery.max_datagram_size(),
+            delivery_rate: <span class="self">self</span>.recovery.delivery_rate(),
+        }
+    }
+}
+
+<span class="doccomment">/// An iterator over SocketAddr.
+</span><span class="attr">#[derive(Default)]
+</span><span class="kw">pub struct </span>SocketAddrIter {
+    <span class="kw">pub</span>(<span class="kw">crate</span>) sockaddrs: SmallVec&lt;[SocketAddr; <span class="number">8</span>]&gt;,
+    <span class="kw">pub</span>(<span class="kw">crate</span>) index: usize,
+}
+
+<span class="kw">impl </span>Iterator <span class="kw">for </span>SocketAddrIter {
+    <span class="kw">type </span>Item = SocketAddr;
+
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>next(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="self">Self</span>::Item&gt; {
+        <span class="kw">let </span>v = <span class="self">self</span>.sockaddrs.get(<span class="self">self</span>.index)<span class="question-mark">?</span>;
+        <span class="self">self</span>.index += <span class="number">1</span>;
+        <span class="prelude-val">Some</span>(<span class="kw-2">*</span>v)
+    }
+}
+
+<span class="kw">impl </span>ExactSizeIterator <span class="kw">for </span>SocketAddrIter {
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>len(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.sockaddrs.len() - <span class="self">self</span>.index
+    }
+}
+
+<span class="doccomment">/// All path-related information.
+</span><span class="kw">pub struct </span>PathMap {
+    <span class="doccomment">/// The paths of the connection. Each of them has an internal identifier
+    /// that is used by `addrs_to_paths` and `ConnectionEntry`.
+    </span>paths: Slab&lt;Path&gt;,
+
+    <span class="doccomment">/// The maximum number of concurrent paths allowed.
+    </span>max_concurrent_paths: usize,
+
+    <span class="doccomment">/// The mapping from the (local `SocketAddr`, peer `SocketAddr`) to the
+    /// `Path` structure identifier.
+    </span>addrs_to_paths: BTreeMap&lt;(SocketAddr, SocketAddr), usize&gt;,
+
+    <span class="doccomment">/// Path-specific events to be notified to the application.
+    </span>events: VecDeque&lt;PathEvent&gt;,
+
+    <span class="doccomment">/// Whether this manager serves a connection as a server.
+    </span>is_server: bool,
+}
+
+<span class="kw">impl </span>PathMap {
+    <span class="doccomment">/// Creates a new `PathMap` with the initial provided `path` and a
+    /// capacity limit.
+    </span><span class="kw">pub fn </span>new(
+        <span class="kw-2">mut </span>initial_path: Path, max_concurrent_paths: usize, is_server: bool,
+        enable_pmtud: bool, max_send_udp_payload_size: usize,
+    ) -&gt; <span class="self">Self </span>{
+        <span class="kw">let </span><span class="kw-2">mut </span>paths = Slab::with_capacity(<span class="number">1</span>); <span class="comment">// most connections only have one path
+        </span><span class="kw">let </span><span class="kw-2">mut </span>addrs_to_paths = BTreeMap::new();
+
+        <span class="kw">let </span>local_addr = initial_path.local_addr;
+        <span class="kw">let </span>peer_addr = initial_path.peer_addr;
+
+        <span class="comment">// As it is the first path, it is active by default.
+        </span>initial_path.active = <span class="bool-val">true</span>;
+
+        <span class="comment">// Enable path MTU Discovery and start probing with the largest datagram
+        // size.
+        </span><span class="kw">if </span>enable_pmtud {
+            initial_path.pmtud.should_probe(enable_pmtud);
+            initial_path.pmtud.set_probe_size(max_send_udp_payload_size);
+            initial_path.pmtud.enable(enable_pmtud);
+        }
+
+        <span class="kw">let </span>active_path_id = paths.insert(initial_path);
+        addrs_to_paths.insert((local_addr, peer_addr), active_path_id);
+
+        <span class="self">Self </span>{
+            paths,
+            max_concurrent_paths,
+            addrs_to_paths,
+            events: VecDeque::new(),
+            is_server,
+        }
+    }
+
+    <span class="doccomment">/// Gets an immutable reference to the path identified by `path_id`. If the
+    /// provided `path_id` does not identify any current `Path`, returns an
+    /// [`InvalidState`].
+    ///
+    /// [`InvalidState`]: enum.Error.html#variant.InvalidState
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>get(<span class="kw-2">&amp;</span><span class="self">self</span>, path_id: usize) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;</span>Path&gt; {
+        <span class="self">self</span>.paths.get(path_id).ok_or(Error::InvalidState)
+    }
+
+    <span class="doccomment">/// Gets a mutable reference to the path identified by `path_id`. If the
+    /// provided `path_id` does not identify any current `Path`, returns an
+    /// [`InvalidState`].
+    ///
+    /// [`InvalidState`]: enum.Error.html#variant.InvalidState
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>get_mut(<span class="kw-2">&amp;mut </span><span class="self">self</span>, path_id: usize) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;mut </span>Path&gt; {
+        <span class="self">self</span>.paths.get_mut(path_id).ok_or(Error::InvalidState)
+    }
+
+    <span class="attr">#[inline]
+    </span><span class="doccomment">/// Gets an immutable reference to the active path with the value of the
+    /// lowest identifier. If there is no active path, returns `None`.
+    </span><span class="kw">pub fn </span>get_active_with_pid(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;(usize, <span class="kw-2">&amp;</span>Path)&gt; {
+        <span class="self">self</span>.paths.iter().find(|(<span class="kw">_</span>, p)| p.active())
+    }
+
+    <span class="doccomment">/// Gets an immutable reference to the active path with the lowest
+    /// identifier. If there is no active path, returns an [`InvalidState`].
+    ///
+    /// [`InvalidState`]: enum.Error.html#variant.InvalidState
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>get_active(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;</span>Path&gt; {
+        <span class="self">self</span>.get_active_with_pid()
+            .map(|(<span class="kw">_</span>, p)| p)
+            .ok_or(Error::InvalidState)
+    }
+
+    <span class="doccomment">/// Gets the lowest active path identifier. If there is no active path,
+    /// returns an [`InvalidState`].
+    ///
+    /// [`InvalidState`]: enum.Error.html#variant.InvalidState
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>get_active_path_id(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="self">self</span>.get_active_with_pid()
+            .map(|(pid, <span class="kw">_</span>)| pid)
+            .ok_or(Error::InvalidState)
+    }
+
+    <span class="doccomment">/// Gets an mutable reference to the active path with the lowest identifier.
+    /// If there is no active path, returns an [`InvalidState`].
+    ///
+    /// [`InvalidState`]: enum.Error.html#variant.InvalidState
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>get_active_mut(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;mut </span>Path&gt; {
+        <span class="self">self</span>.paths
+            .iter_mut()
+            .map(|(<span class="kw">_</span>, p)| p)
+            .find(|p| p.active())
+            .ok_or(Error::InvalidState)
+    }
+
+    <span class="doccomment">/// Returns an iterator over all existing paths.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>iter(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; slab::Iter&lt;Path&gt; {
+        <span class="self">self</span>.paths.iter()
+    }
+
+    <span class="doccomment">/// Returns a mutable iterator over all existing paths.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>iter_mut(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; slab::IterMut&lt;Path&gt; {
+        <span class="self">self</span>.paths.iter_mut()
+    }
+
+    <span class="doccomment">/// Returns the number of existing paths.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>len(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.paths.len()
+    }
+
+    <span class="doccomment">/// Returns the `Path` identifier related to the provided `addrs`.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>path_id_from_addrs(
+        <span class="kw-2">&amp;</span><span class="self">self</span>, addrs: <span class="kw-2">&amp;</span>(SocketAddr, SocketAddr),
+    ) -&gt; <span class="prelude-ty">Option</span>&lt;usize&gt; {
+        <span class="self">self</span>.addrs_to_paths.get(addrs).copied()
+    }
+
+    <span class="doccomment">/// Checks if creating a new path will not exceed the current `self.paths`
+    /// capacity. If yes, this method tries to remove one unused path. If it
+    /// fails to do so, returns [`Done`].
+    ///
+    /// [`Done`]: enum.Error.html#variant.Done
+    </span><span class="kw">fn </span>make_room_for_new_path(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if </span><span class="self">self</span>.paths.len() &lt; <span class="self">self</span>.max_concurrent_paths {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+        }
+
+        <span class="kw">let </span>(pid_to_remove, <span class="kw">_</span>) = <span class="self">self
+            </span>.paths
+            .iter()
+            .find(|(<span class="kw">_</span>, p)| p.unused())
+            .ok_or(Error::Done)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>path = <span class="self">self</span>.paths.remove(pid_to_remove);
+        <span class="self">self</span>.addrs_to_paths
+            .remove(<span class="kw-2">&amp;</span>(path.local_addr, path.peer_addr));
+
+        <span class="self">self</span>.notify_event(PathEvent::Closed(path.local_addr, path.peer_addr));
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Records the provided `Path` and returns its assigned identifier.
+    ///
+    /// On success, this method takes care of creating a notification to the
+    /// serving application, if it serves a server-side connection.
+    ///
+    /// If there are already `max_concurrent_paths` currently recorded, this
+    /// method tries to remove an unused `Path` first. If it fails to do so,
+    /// it returns [`Done`].
+    ///
+    /// [`Done`]: enum.Error.html#variant.Done
+    </span><span class="kw">pub fn </span>insert_path(<span class="kw-2">&amp;mut </span><span class="self">self</span>, path: Path, is_server: bool) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="self">self</span>.make_room_for_new_path()<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>local_addr = path.local_addr;
+        <span class="kw">let </span>peer_addr = path.peer_addr;
+
+        <span class="kw">let </span>pid = <span class="self">self</span>.paths.insert(path);
+        <span class="self">self</span>.addrs_to_paths.insert((local_addr, peer_addr), pid);
+
+        <span class="comment">// Notifies the application if we are in server mode.
+        </span><span class="kw">if </span>is_server {
+            <span class="self">self</span>.notify_event(PathEvent::New(local_addr, peer_addr));
+        }
+
+        <span class="prelude-val">Ok</span>(pid)
+    }
+
+    <span class="doccomment">/// Notifies a path event to the application served by the connection.
+    </span><span class="kw">pub fn </span>notify_event(<span class="kw-2">&amp;mut </span><span class="self">self</span>, ev: PathEvent) {
+        <span class="self">self</span>.events.push_back(ev);
+    }
+
+    <span class="doccomment">/// Gets the first path event to be notified to the application.
+    </span><span class="kw">pub fn </span>pop_event(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;PathEvent&gt; {
+        <span class="self">self</span>.events.pop_front()
+    }
+
+    <span class="doccomment">/// Notifies all failed validations to the application.
+    </span><span class="kw">pub fn </span>notify_failed_validations(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="kw">let </span>validation_failed = <span class="self">self
+            </span>.paths
+            .iter_mut()
+            .filter(|(<span class="kw">_</span>, p)| p.validation_failed() &amp;&amp; !p.failure_notified);
+
+        <span class="kw">for </span>(<span class="kw">_</span>, p) <span class="kw">in </span>validation_failed {
+            <span class="self">self</span>.events.push_back(PathEvent::FailedValidation(
+                p.local_addr,
+                p.peer_addr,
+            ));
+
+            p.failure_notified = <span class="bool-val">true</span>;
+        }
+    }
+
+    <span class="doccomment">/// Finds a path candidate to be active and returns its identifier.
+    </span><span class="kw">pub fn </span>find_candidate_path(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;usize&gt; {
+        <span class="comment">// TODO: also consider unvalidated paths if there are no more validated.
+        </span><span class="self">self</span>.paths
+            .iter()
+            .find(|(<span class="kw">_</span>, p)| p.usable())
+            .map(|(pid, <span class="kw">_</span>)| pid)
+    }
+
+    <span class="doccomment">/// Handles incoming PATH_RESPONSE data.
+    </span><span class="kw">pub fn </span>on_response_received(<span class="kw-2">&amp;mut </span><span class="self">self</span>, data: [u8; <span class="number">8</span>]) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>active_pid = <span class="self">self</span>.get_active_path_id()<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>challenge_pending =
+            <span class="self">self</span>.iter_mut().find(|(<span class="kw">_</span>, p)| p.has_pending_challenge(data));
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>((pid, p)) = challenge_pending {
+            <span class="kw">if </span>p.on_response_received(data) {
+                <span class="kw">let </span>local_addr = p.local_addr;
+                <span class="kw">let </span>peer_addr = p.peer_addr;
+                <span class="kw">let </span>was_migrating = p.migrating;
+
+                p.migrating = <span class="bool-val">false</span>;
+
+                <span class="comment">// Notifies the application.
+                </span><span class="self">self</span>.notify_event(PathEvent::Validated(local_addr, peer_addr));
+
+                <span class="comment">// If this path was the candidate for migration, notifies the
+                // application.
+                </span><span class="kw">if </span>pid == active_pid &amp;&amp; was_migrating {
+                    <span class="self">self</span>.notify_event(PathEvent::PeerMigrated(
+                        local_addr, peer_addr,
+                    ));
+                }
+            }
+        }
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Sets the path with identifier 'path_id' to be active.
+    ///
+    /// There can be exactly one active path on which non-probing packets can be
+    /// sent. If another path is marked as active, it will be superseded by the
+    /// one having `path_id` as identifier.
+    ///
+    /// A server should always ensure that the active path is validated. If it
+    /// is already the case, it notifies the application that the connection
+    /// migrated. Otherwise, it triggers a path validation and defers the
+    /// notification once it is actually validated.
+    </span><span class="kw">pub fn </span>set_active_path(<span class="kw-2">&amp;mut </span><span class="self">self</span>, path_id: usize) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>is_server = <span class="self">self</span>.is_server;
+
+        <span class="kw">if let </span><span class="prelude-val">Ok</span>(old_active_path) = <span class="self">self</span>.get_active_mut() {
+            old_active_path.active = <span class="bool-val">false</span>;
+        }
+
+        <span class="kw">let </span>new_active_path = <span class="self">self</span>.get_mut(path_id)<span class="question-mark">?</span>;
+        new_active_path.active = <span class="bool-val">true</span>;
+
+        <span class="kw">if </span>is_server {
+            <span class="kw">if </span>new_active_path.validated() {
+                <span class="kw">let </span>local_addr = new_active_path.local_addr();
+                <span class="kw">let </span>peer_addr = new_active_path.peer_addr();
+
+                <span class="self">self</span>.notify_event(PathEvent::PeerMigrated(local_addr, peer_addr));
+            } <span class="kw">else </span>{
+                new_active_path.migrating = <span class="bool-val">true</span>;
+
+                <span class="comment">// Requests path validation if needed.
+                </span><span class="kw">if </span>!new_active_path.under_validation() {
+                    new_active_path.request_validation();
+                }
+            }
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+}
+
+<span class="doccomment">/// Statistics about the path of a connection.
+///
+/// It is part of the `Stats` structure returned by the [`stats()`] method.
+///
+/// [`stats()`]: struct.Connection.html#method.stats
+</span><span class="attr">#[derive(Clone)]
+</span><span class="kw">pub struct </span>PathStats {
+    <span class="doccomment">/// The local address of the path.
+    </span><span class="kw">pub </span>local_addr: SocketAddr,
+
+    <span class="doccomment">/// The peer address of the path.
+    </span><span class="kw">pub </span>peer_addr: SocketAddr,
+
+    <span class="doccomment">/// The path validation state.
+    </span><span class="kw">pub </span>validation_state: PathState,
+
+    <span class="doccomment">/// Whether the path is marked as active.
+    </span><span class="kw">pub </span>active: bool,
+
+    <span class="doccomment">/// The number of QUIC packets received.
+    </span><span class="kw">pub </span>recv: usize,
+
+    <span class="doccomment">/// The number of QUIC packets sent.
+    </span><span class="kw">pub </span>sent: usize,
+
+    <span class="doccomment">/// The number of QUIC packets that were lost.
+    </span><span class="kw">pub </span>lost: usize,
+
+    <span class="doccomment">/// The number of sent QUIC packets with retransmitted data.
+    </span><span class="kw">pub </span>retrans: usize,
+
+    <span class="doccomment">/// The estimated round-trip time of the connection.
+    </span><span class="kw">pub </span>rtt: time::Duration,
+
+    <span class="doccomment">/// The minimum round-trip time observed.
+    </span><span class="kw">pub </span>min_rtt: <span class="prelude-ty">Option</span>&lt;time::Duration&gt;,
+
+    <span class="doccomment">/// The estimated round-trip time variation in samples using a mean
+    /// variation.
+    </span><span class="kw">pub </span>rttvar: time::Duration,
+
+    <span class="doccomment">/// The size of the connection's congestion window in bytes.
+    </span><span class="kw">pub </span>cwnd: usize,
+
+    <span class="doccomment">/// The number of sent bytes.
+    </span><span class="kw">pub </span>sent_bytes: u64,
+
+    <span class="doccomment">/// The number of received bytes.
+    </span><span class="kw">pub </span>recv_bytes: u64,
+
+    <span class="doccomment">/// The number of bytes lost.
+    </span><span class="kw">pub </span>lost_bytes: u64,
+
+    <span class="doccomment">/// The number of stream bytes retransmitted.
+    </span><span class="kw">pub </span>stream_retrans_bytes: u64,
+
+    <span class="doccomment">/// The current PMTU for the connection.
+    </span><span class="kw">pub </span>pmtu: usize,
+
+    <span class="doccomment">/// The most recent data delivery rate estimate in bytes/s.
+    ///
+    /// Note that this value could be inaccurate if the application does not
+    /// respect pacing hints (see [`SendInfo.at`] and [Pacing] for more
+    /// details).
+    ///
+    /// [`SendInfo.at`]: struct.SendInfo.html#structfield.at
+    /// [Pacing]: index.html#pacing
+    </span><span class="kw">pub </span>delivery_rate: u64,
+}
+
+<span class="kw">impl </span>std::fmt::Debug <span class="kw">for </span>PathStats {
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+        <span class="macro">write!</span>(
+            f,
+            <span class="string">"local_addr={:?} peer_addr={:?} "</span>,
+            <span class="self">self</span>.local_addr, <span class="self">self</span>.peer_addr,
+        )<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(
+            f,
+            <span class="string">"validation_state={:?} active={} "</span>,
+            <span class="self">self</span>.validation_state, <span class="self">self</span>.active,
+        )<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(
+            f,
+            <span class="string">"recv={} sent={} lost={} retrans={} rtt={:?} min_rtt={:?} rttvar={:?} cwnd={}"</span>,
+            <span class="self">self</span>.recv, <span class="self">self</span>.sent, <span class="self">self</span>.lost, <span class="self">self</span>.retrans, <span class="self">self</span>.rtt, <span class="self">self</span>.min_rtt, <span class="self">self</span>.rttvar, <span class="self">self</span>.cwnd,
+        )<span class="question-mark">?</span>;
+
+        <span class="macro">write!</span>(
+            f,
+            <span class="string">" sent_bytes={} recv_bytes={} lost_bytes={}"</span>,
+            <span class="self">self</span>.sent_bytes, <span class="self">self</span>.recv_bytes, <span class="self">self</span>.lost_bytes,
+        )<span class="question-mark">?</span>;
+
+        <span class="macro">write!</span>(
+            f,
+            <span class="string">" stream_retrans_bytes={} pmtu={} delivery_rate={}"</span>,
+            <span class="self">self</span>.stream_retrans_bytes, <span class="self">self</span>.pmtu, <span class="self">self</span>.delivery_rate,
+        )
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use </span><span class="kw">crate</span>::rand;
+    <span class="kw">use </span><span class="kw">crate</span>::MIN_CLIENT_INITIAL_LEN;
+
+    <span class="kw">use </span><span class="kw">crate</span>::recovery::RecoveryConfig;
+    <span class="kw">use </span><span class="kw">crate</span>::Config;
+
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>path_validation_limited_mtu() {
+        <span class="kw">let </span>client_addr = <span class="string">"127.0.0.1:1234"</span>.parse().unwrap();
+        <span class="kw">let </span>client_addr_2 = <span class="string">"127.0.0.1:5678"</span>.parse().unwrap();
+        <span class="kw">let </span>server_addr = <span class="string">"127.0.0.1:4321"</span>.parse().unwrap();
+
+        <span class="kw">let </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        <span class="kw">let </span>recovery_config = RecoveryConfig::from_config(<span class="kw-2">&amp;</span>config);
+
+        <span class="kw">let </span>path = Path::new(
+            client_addr,
+            server_addr,
+            <span class="kw-2">&amp;</span>recovery_config,
+            config.path_challenge_recv_max_queue_len,
+            <span class="number">1200</span>,
+            <span class="bool-val">true</span>,
+        );
+        <span class="kw">let </span><span class="kw-2">mut </span>path_mgr = PathMap::new(path, <span class="number">2</span>, <span class="bool-val">false</span>, <span class="bool-val">true</span>, <span class="number">1200</span>);
+
+        <span class="kw">let </span>probed_path = Path::new(
+            client_addr_2,
+            server_addr,
+            <span class="kw-2">&amp;</span>recovery_config,
+            config.path_challenge_recv_max_queue_len,
+            <span class="number">1200</span>,
+            <span class="bool-val">false</span>,
+        );
+        path_mgr.insert_path(probed_path, <span class="bool-val">false</span>).unwrap();
+
+        <span class="kw">let </span>pid = path_mgr
+            .path_id_from_addrs(<span class="kw-2">&amp;</span>(client_addr_2, server_addr))
+            .unwrap();
+        path_mgr.get_mut(pid).unwrap().request_validation();
+        <span class="macro">assert!</span>(path_mgr.get_mut(pid).unwrap().validation_requested());
+        <span class="macro">assert!</span>(path_mgr.get_mut(pid).unwrap().probing_required());
+
+        <span class="comment">// Fake sending of PathChallenge in a packet of MIN_CLIENT_INITIAL_LEN - 1
+        // bytes.
+        </span><span class="kw">let </span>data = rand::rand_u64().to_be_bytes();
+        path_mgr.get_mut(pid).unwrap().add_challenge_sent(
+            data,
+            MIN_CLIENT_INITIAL_LEN - <span class="number">1</span>,
+            time::Instant::now(),
+        );
+
+        <span class="macro">assert!</span>(!path_mgr.get_mut(pid).unwrap().validation_requested());
+        <span class="macro">assert!</span>(!path_mgr.get_mut(pid).unwrap().probing_required());
+        <span class="macro">assert!</span>(path_mgr.get_mut(pid).unwrap().under_validation());
+        <span class="macro">assert!</span>(!path_mgr.get_mut(pid).unwrap().validated());
+        <span class="macro">assert_eq!</span>(path_mgr.get_mut(pid).unwrap().state, PathState::Validating);
+        <span class="macro">assert_eq!</span>(path_mgr.pop_event(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Receives the response. The path is reachable, but the MTU is not
+        // validated yet.
+        </span>path_mgr.on_response_received(data).unwrap();
+
+        <span class="macro">assert!</span>(path_mgr.get_mut(pid).unwrap().validation_requested());
+        <span class="macro">assert!</span>(path_mgr.get_mut(pid).unwrap().probing_required());
+        <span class="macro">assert!</span>(path_mgr.get_mut(pid).unwrap().under_validation());
+        <span class="macro">assert!</span>(!path_mgr.get_mut(pid).unwrap().validated());
+        <span class="macro">assert_eq!</span>(
+            path_mgr.get_mut(pid).unwrap().state,
+            PathState::ValidatingMTU
+        );
+        <span class="macro">assert_eq!</span>(path_mgr.pop_event(), <span class="prelude-val">None</span>);
+
+        <span class="comment">// Fake sending of PathChallenge in a packet of MIN_CLIENT_INITIAL_LEN
+        // bytes.
+        </span><span class="kw">let </span>data = rand::rand_u64().to_be_bytes();
+        path_mgr.get_mut(pid).unwrap().add_challenge_sent(
+            data,
+            MIN_CLIENT_INITIAL_LEN,
+            time::Instant::now(),
+        );
+
+        path_mgr.on_response_received(data).unwrap();
+
+        <span class="macro">assert!</span>(!path_mgr.get_mut(pid).unwrap().validation_requested());
+        <span class="macro">assert!</span>(!path_mgr.get_mut(pid).unwrap().probing_required());
+        <span class="macro">assert!</span>(!path_mgr.get_mut(pid).unwrap().under_validation());
+        <span class="macro">assert!</span>(path_mgr.get_mut(pid).unwrap().validated());
+        <span class="macro">assert_eq!</span>(path_mgr.get_mut(pid).unwrap().state, PathState::Validated);
+        <span class="macro">assert_eq!</span>(
+            path_mgr.pop_event(),
+            <span class="prelude-val">Some</span>(PathEvent::Validated(client_addr_2, server_addr))
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>multiple_probes() {
+        <span class="kw">let </span>client_addr = <span class="string">"127.0.0.1:1234"</span>.parse().unwrap();
+        <span class="kw">let </span>server_addr = <span class="string">"127.0.0.1:4321"</span>.parse().unwrap();
+
+        <span class="kw">let </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        <span class="kw">let </span>recovery_config = RecoveryConfig::from_config(<span class="kw-2">&amp;</span>config);
+
+        <span class="kw">let </span>path = Path::new(
+            client_addr,
+            server_addr,
+            <span class="kw-2">&amp;</span>recovery_config,
+            config.path_challenge_recv_max_queue_len,
+            <span class="number">1200</span>,
+            <span class="bool-val">true</span>,
+        );
+        <span class="kw">let </span><span class="kw-2">mut </span>client_path_mgr = PathMap::new(path, <span class="number">2</span>, <span class="bool-val">false</span>, <span class="bool-val">false</span>, <span class="number">1200</span>);
+        <span class="kw">let </span><span class="kw-2">mut </span>server_path = Path::new(
+            server_addr,
+            client_addr,
+            <span class="kw-2">&amp;</span>recovery_config,
+            config.path_challenge_recv_max_queue_len,
+            <span class="number">1200</span>,
+            <span class="bool-val">false</span>,
+        );
+
+        <span class="kw">let </span>client_pid = client_path_mgr
+            .path_id_from_addrs(<span class="kw-2">&amp;</span>(client_addr, server_addr))
+            .unwrap();
+
+        <span class="comment">// First probe.
+        </span><span class="kw">let </span>data = rand::rand_u64().to_be_bytes();
+
+        client_path_mgr
+            .get_mut(client_pid)
+            .unwrap()
+            .add_challenge_sent(
+                data,
+                MIN_CLIENT_INITIAL_LEN,
+                time::Instant::now(),
+            );
+
+        <span class="comment">// Second probe.
+        </span><span class="kw">let </span>data_2 = rand::rand_u64().to_be_bytes();
+
+        client_path_mgr
+            .get_mut(client_pid)
+            .unwrap()
+            .add_challenge_sent(
+                data_2,
+                MIN_CLIENT_INITIAL_LEN,
+                time::Instant::now(),
+            );
+        <span class="macro">assert_eq!</span>(
+            client_path_mgr
+                .get(client_pid)
+                .unwrap()
+                .in_flight_challenges
+                .len(),
+            <span class="number">2
+        </span>);
+
+        <span class="comment">// If we receive multiple challenges, we can store them.
+        </span>server_path.on_challenge_received(data);
+        <span class="macro">assert_eq!</span>(server_path.received_challenges.len(), <span class="number">1</span>);
+        server_path.on_challenge_received(data_2);
+        <span class="macro">assert_eq!</span>(server_path.received_challenges.len(), <span class="number">2</span>);
+
+        <span class="comment">// Response for first probe.
+        </span>client_path_mgr.on_response_received(data).unwrap();
+        <span class="macro">assert_eq!</span>(
+            client_path_mgr
+                .get(client_pid)
+                .unwrap()
+                .in_flight_challenges
+                .len(),
+            <span class="number">1
+        </span>);
+
+        <span class="comment">// Response for second probe.
+        </span>client_path_mgr.on_response_received(data_2).unwrap();
+        <span class="macro">assert_eq!</span>(
+            client_path_mgr
+                .get(client_pid)
+                .unwrap()
+                .in_flight_challenges
+                .len(),
+            <span class="number">0
+        </span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>too_many_probes() {
+        <span class="kw">let </span>client_addr = <span class="string">"127.0.0.1:1234"</span>.parse().unwrap();
+        <span class="kw">let </span>server_addr = <span class="string">"127.0.0.1:4321"</span>.parse().unwrap();
+
+        <span class="comment">// Default to DEFAULT_MAX_PATH_CHALLENGE_RX_QUEUE_LEN
+        </span><span class="kw">let </span>config = Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        <span class="kw">let </span>recovery_config = RecoveryConfig::from_config(<span class="kw-2">&amp;</span>config);
+
+        <span class="kw">let </span>path = Path::new(
+            client_addr,
+            server_addr,
+            <span class="kw-2">&amp;</span>recovery_config,
+            config.path_challenge_recv_max_queue_len,
+            <span class="number">1200</span>,
+            <span class="bool-val">true</span>,
+        );
+        <span class="kw">let </span><span class="kw-2">mut </span>client_path_mgr = PathMap::new(path, <span class="number">2</span>, <span class="bool-val">false</span>, <span class="bool-val">false</span>, <span class="number">1200</span>);
+        <span class="kw">let </span><span class="kw-2">mut </span>server_path = Path::new(
+            server_addr,
+            client_addr,
+            <span class="kw-2">&amp;</span>recovery_config,
+            config.path_challenge_recv_max_queue_len,
+            <span class="number">1200</span>,
+            <span class="bool-val">false</span>,
+        );
+
+        <span class="kw">let </span>client_pid = client_path_mgr
+            .path_id_from_addrs(<span class="kw-2">&amp;</span>(client_addr, server_addr))
+            .unwrap();
+
+        <span class="comment">// First probe.
+        </span><span class="kw">let </span>data = rand::rand_u64().to_be_bytes();
+
+        client_path_mgr
+            .get_mut(client_pid)
+            .unwrap()
+            .add_challenge_sent(
+                data,
+                MIN_CLIENT_INITIAL_LEN,
+                time::Instant::now(),
+            );
+
+        <span class="comment">// Second probe.
+        </span><span class="kw">let </span>data_2 = rand::rand_u64().to_be_bytes();
+
+        client_path_mgr
+            .get_mut(client_pid)
+            .unwrap()
+            .add_challenge_sent(
+                data_2,
+                MIN_CLIENT_INITIAL_LEN,
+                time::Instant::now(),
+            );
+        <span class="macro">assert_eq!</span>(
+            client_path_mgr
+                .get(client_pid)
+                .unwrap()
+                .in_flight_challenges
+                .len(),
+            <span class="number">2
+        </span>);
+
+        <span class="comment">// Third probe.
+        </span><span class="kw">let </span>data_3 = rand::rand_u64().to_be_bytes();
+
+        client_path_mgr
+            .get_mut(client_pid)
+            .unwrap()
+            .add_challenge_sent(
+                data_3,
+                MIN_CLIENT_INITIAL_LEN,
+                time::Instant::now(),
+            );
+        <span class="macro">assert_eq!</span>(
+            client_path_mgr
+                .get(client_pid)
+                .unwrap()
+                .in_flight_challenges
+                .len(),
+            <span class="number">3
+        </span>);
+
+        <span class="comment">// Fourth probe.
+        </span><span class="kw">let </span>data_4 = rand::rand_u64().to_be_bytes();
+
+        client_path_mgr
+            .get_mut(client_pid)
+            .unwrap()
+            .add_challenge_sent(
+                data_4,
+                MIN_CLIENT_INITIAL_LEN,
+                time::Instant::now(),
+            );
+        <span class="macro">assert_eq!</span>(
+            client_path_mgr
+                .get(client_pid)
+                .unwrap()
+                .in_flight_challenges
+                .len(),
+            <span class="number">4
+        </span>);
+
+        <span class="comment">// If we receive multiple challenges, we can store them up to our queue
+        // size.
+        </span>server_path.on_challenge_received(data);
+        <span class="macro">assert_eq!</span>(server_path.received_challenges.len(), <span class="number">1</span>);
+        server_path.on_challenge_received(data_2);
+        <span class="macro">assert_eq!</span>(server_path.received_challenges.len(), <span class="number">2</span>);
+        server_path.on_challenge_received(data_3);
+        <span class="macro">assert_eq!</span>(server_path.received_challenges.len(), <span class="number">3</span>);
+        server_path.on_challenge_received(data_4);
+        <span class="macro">assert_eq!</span>(server_path.received_challenges.len(), <span class="number">3</span>);
+
+        <span class="comment">// Response for first probe.
+        </span>client_path_mgr.on_response_received(data).unwrap();
+        <span class="macro">assert_eq!</span>(
+            client_path_mgr
+                .get(client_pid)
+                .unwrap()
+                .in_flight_challenges
+                .len(),
+            <span class="number">3
+        </span>);
+
+        <span class="comment">// Response for second probe.
+        </span>client_path_mgr.on_response_received(data_2).unwrap();
+        <span class="macro">assert_eq!</span>(
+            client_path_mgr
+                .get(client_pid)
+                .unwrap()
+                .in_flight_challenges
+                .len(),
+            <span class="number">2
+        </span>);
+
+        <span class="comment">// Response for third probe.
+        </span>client_path_mgr.on_response_received(data_3).unwrap();
+        <span class="macro">assert_eq!</span>(
+            client_path_mgr
+                .get(client_pid)
+                .unwrap()
+                .in_flight_challenges
+                .len(),
+            <span class="number">1
+        </span>);
+
+        <span class="comment">// There will never be a response for fourth probe...
+    </span>}
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/pmtud.rs.html b/src/quiche/pmtud.rs.html
new file mode 100644
index 0000000..94cf5e1
--- /dev/null
+++ b/src/quiche/pmtud.rs.html
@@ -0,0 +1,185 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/pmtud.rs`."><title>pmtud.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+</pre></div><pre class="rust"><code><span class="attr">#[derive(Default)]
+</span><span class="kw">pub struct </span>Pmtud {
+    <span class="doccomment">/// The current path MTU estimate.
+    </span>cur_size: usize,
+
+    <span class="doccomment">/// The last MTU probe size that was attempted.
+    </span>probe: usize,
+
+    <span class="doccomment">/// Indicated if Path MTU probe needs to be generated.
+    </span>next_size: bool,
+
+    <span class="doccomment">/// Check config for PMTU variable.
+    </span>enable: bool,
+}
+
+<span class="kw">impl </span>Pmtud {
+    <span class="doccomment">/// Creates new PMTUD instance.
+    </span><span class="kw">pub fn </span>new(cur_size: usize) -&gt; <span class="self">Self </span>{
+        <span class="self">Self </span>{
+            cur_size,
+            ..Default::default()
+        }
+    }
+
+    <span class="doccomment">/// Enables Path MTU Discovery for the connection.
+    </span><span class="kw">pub fn </span>enable(<span class="kw-2">&amp;mut </span><span class="self">self</span>, enable: bool) {
+        <span class="self">self</span>.enable = enable;
+    }
+
+    <span class="doccomment">/// Returns enable status for Path MTU Discovery for the connection.
+    </span><span class="kw">pub fn </span>is_enabled(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.enable
+    }
+
+    <span class="doccomment">/// Specifies whether Path MTU Discovery should be performed at the next
+    /// opportunity, i.e., when the next packet is sent out if possible.
+    ///
+    /// Once Path MTU has been discovered, this maybe set to false.
+    </span><span class="kw">pub fn </span>should_probe(<span class="kw-2">&amp;mut </span><span class="self">self</span>, pmtu_next: bool) {
+        <span class="self">self</span>.next_size = pmtu_next;
+    }
+
+    <span class="doccomment">/// Returns the value of the Path MTU Discovery flag.
+    </span><span class="kw">pub fn </span>get_probe_status(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.next_size
+    }
+
+    <span class="doccomment">/// Sets the next Path MTU Discovery probe size.
+    </span><span class="kw">pub fn </span>set_probe_size(<span class="kw-2">&amp;mut </span><span class="self">self</span>, pmtu_probe: usize) {
+        <span class="self">self</span>.probe = pmtu_probe;
+    }
+
+    <span class="doccomment">/// Returns the next Path MTU Discovery probe size.
+    </span><span class="kw">pub fn </span>get_probe_size(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.probe
+    }
+
+    <span class="doccomment">/// Sets the current Path MTU Discovery size after a successful probe has
+    /// been performed.
+    </span><span class="kw">pub fn </span>set_current(<span class="kw-2">&amp;mut </span><span class="self">self</span>, pmtu: usize) {
+        <span class="self">self</span>.cur_size = pmtu;
+    }
+
+    <span class="doccomment">/// Returns the discovered PATH MTU size.
+    </span><span class="kw">pub fn </span>get_current(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.cur_size
+    }
+
+    <span class="doccomment">/// Selects path MTU probe based on the binary search algorithm.
+    ///
+    /// Based on the Optimistic Binary algorithm defined in:
+    /// Ref: &lt;https://www.hb.fh-muenster.de/opus4/frontdoor/deliver/index/docId/14965/file/dplpmtudQuicPaper.pdf&gt;
+    </span><span class="kw">pub fn </span>update_probe_size(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="self">self</span>.probe = <span class="self">self</span>.cur_size + ((<span class="self">self</span>.probe - <span class="self">self</span>.cur_size) / <span class="number">2</span>);
+    }
+
+    <span class="doccomment">/// Updates probe value when the Path MTU Discovery probe is lost.
+    </span><span class="kw">pub fn </span>pmtu_probe_lost(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="self">self</span>.update_probe_size();
+        <span class="self">self</span>.should_probe(<span class="bool-val">true</span>);
+    }
+}
+
+<span class="kw">impl </span>std::fmt::Debug <span class="kw">for </span>Pmtud {
+    <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+        <span class="macro">write!</span>(f, <span class="string">"current={:?} "</span>, <span class="self">self</span>.cur_size)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"probe_size={:?} "</span>, <span class="self">self</span>.probe)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"continue_probing={:?} "</span>, <span class="self">self</span>.next_size)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"enable={:?} "</span>, <span class="self">self</span>.enable)<span class="question-mark">?</span>;
+        <span class="prelude-val">Ok</span>(())
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/rand.rs.html b/src/quiche/rand.rs.html
new file mode 100644
index 0000000..dd071d4
--- /dev/null
+++ b/src/quiche/rand.rs.html
@@ -0,0 +1,129 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/rand.rs`."><title>rand.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2018-2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">pub fn </span>rand_bytes(buf: <span class="kw-2">&amp;mut </span>[u8]) {
+    <span class="kw">unsafe </span>{
+        RAND_bytes(buf.as_mut_ptr(), buf.len());
+    }
+}
+
+<span class="kw">pub fn </span>rand_u8() -&gt; u8 {
+    <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">1</span>];
+
+    rand_bytes(<span class="kw-2">&amp;mut </span>buf);
+
+    buf[<span class="number">0</span>]
+}
+
+<span class="kw">pub fn </span>rand_u64() -&gt; u64 {
+    <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">8</span>];
+
+    rand_bytes(<span class="kw-2">&amp;mut </span>buf);
+
+    u64::from_ne_bytes(buf)
+}
+
+<span class="kw">pub fn </span>rand_u64_uniform(max: u64) -&gt; u64 {
+    <span class="kw">let </span>chunk_size = u64::max_value() / max;
+    <span class="kw">let </span>end_of_last_chunk = chunk_size * max;
+
+    <span class="kw">let </span><span class="kw-2">mut </span>r = rand_u64();
+
+    <span class="kw">while </span>r &gt;= end_of_last_chunk {
+        r = rand_u64();
+    }
+
+    r / chunk_size
+}
+
+<span class="kw">extern </span>{
+    <span class="kw">fn </span>RAND_bytes(buf: <span class="kw-2">*mut </span>u8, len: libc::size_t) -&gt; libc::c_int;
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/ranges.rs.html b/src/quiche/ranges.rs.html
new file mode 100644
index 0000000..1179428
--- /dev/null
+++ b/src/quiche/ranges.rs.html
@@ -0,0 +1,1505 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/ranges.rs`."><title>ranges.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2018-2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span>std::iter::FromIterator;
+<span class="kw">use </span>std::ops::Range;
+
+<span class="kw">use </span>std::collections::BTreeMap;
+<span class="kw">use </span>std::collections::Bound;
+
+<span class="kw">use </span>either::Either;
+<span class="kw">use </span>smallvec::SmallVec;
+
+<span class="kw">const </span>MAX_INLINE_CAPACITY: usize = <span class="number">4</span>;
+<span class="kw">const </span>MIN_TO_INLINE: usize = <span class="number">2</span>;
+
+<span class="doccomment">/// A sorted collection of non overlapping [`u64`] ranges
+</span><span class="attr">#[derive(Clone, PartialEq, Eq, PartialOrd)]
+</span><span class="kw">pub enum </span>RangeSet {
+    Inline(InlineRangeSet),
+    BTree(BTreeRangeSet),
+}
+
+<span class="doccomment">/// A [`RangeSet`] variant backed by a [`SmallVec`] that is capable of storing
+/// [`MAX_INLINE_CAPACITY`] of ranges without allocation
+</span><span class="attr">#[derive(Clone, PartialEq, Eq, PartialOrd)]
+</span><span class="kw">pub struct </span>InlineRangeSet {
+    inner: SmallVec&lt;[(u64, u64); MAX_INLINE_CAPACITY]&gt;,
+    capacity: usize,
+}
+
+<span class="doccomment">/// A [`RangeSet`] variant backed by a [`BTreeMap`] that is capable of storing
+/// an arbitrary number of ranges
+</span><span class="attr">#[derive(Clone, PartialEq, Eq, PartialOrd)]
+</span><span class="kw">pub struct </span>BTreeRangeSet {
+    inner: BTreeMap&lt;u64, u64&gt;,
+    capacity: usize,
+}
+
+<span class="kw">impl </span>RangeSet {
+    <span class="doccomment">/// Create a new [`RangeSet`].
+    ///
+    /// When the length of a [`RangeSet`] overflows `capacity` it will remove
+    /// the smallest range.
+    </span><span class="kw">pub fn </span>new(capacity: usize) -&gt; <span class="self">Self </span>{
+        RangeSet::Inline(InlineRangeSet {
+            inner: Default::default(),
+            capacity,
+        })
+    }
+
+    <span class="doccomment">/// The number of nonoverlapping ranges stored in this [`RangeSet`].
+    </span><span class="kw">pub fn </span>len(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="kw">match </span><span class="self">self </span>{
+            RangeSet::Inline(set) =&gt; set.inner.len(),
+            RangeSet::BTree(set) =&gt; set.inner.len(),
+        }
+    }
+
+    <span class="doccomment">/// Converts the inner representation from a BTree to Inline and vice versa
+    /// when the proper conditions are met. Keeps the stored data intact.
+    </span><span class="attr">#[inline(always)]
+    </span><span class="kw">fn </span>fixup(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="kw">match </span><span class="self">self </span>{
+            RangeSet::Inline(set) <span class="kw">if </span>set.inner.len() == MAX_INLINE_CAPACITY =&gt; {
+                <span class="kw">let </span>old_inner = std::mem::take(<span class="kw-2">&amp;mut </span>set.inner);
+                <span class="kw-2">*</span><span class="self">self </span>= RangeSet::BTree(BTreeRangeSet {
+                    inner: old_inner.into_inner().expect(<span class="string">"At capacity"</span>).into(),
+                    capacity: set.capacity,
+                });
+            },
+
+            RangeSet::BTree(set) <span class="kw">if </span>set.inner.len() &lt;= MIN_TO_INLINE =&gt; {
+                <span class="kw">let </span>old_inner = std::mem::take(<span class="kw-2">&amp;mut </span>set.inner);
+                <span class="kw-2">*</span><span class="self">self </span>= RangeSet::Inline(InlineRangeSet {
+                    inner: SmallVec::from_iter(old_inner),
+                    capacity: set.capacity,
+                })
+            },
+
+            <span class="kw">_ </span>=&gt; {},
+        }
+    }
+
+    <span class="doccomment">/// Insert a new [`Range`] into the collection.
+    ///
+    /// If the [`Range`] overlaps with any existing range, it may be merged with
+    /// one or more other [`Range`]s. If following the insertion the number of
+    /// stored ranges overflows capacity, the smalles range will be removed.
+    </span><span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>insert(<span class="kw-2">&amp;mut </span><span class="self">self</span>, item: Range&lt;u64&gt;) {
+        <span class="kw">match </span><span class="self">self </span>{
+            RangeSet::Inline(set) =&gt; set.insert(item),
+            RangeSet::BTree(set) =&gt; set.insert(item),
+        }
+
+        <span class="self">self</span>.fixup();
+    }
+
+    <span class="doccomment">/// Iterate over the stored ranges in incremental order.
+    </span><span class="kw">pub fn </span>iter(
+        <span class="kw-2">&amp;</span><span class="self">self</span>,
+    ) -&gt; <span class="kw">impl </span>DoubleEndedIterator&lt;Item = Range&lt;u64&gt;&gt; + ExactSizeIterator + <span class="lifetime">'_
+    </span>{
+        <span class="kw">match </span><span class="self">self </span>{
+            RangeSet::BTree(set) =&gt;
+                Either::Left(set.inner.iter().map(|(k, v)| <span class="kw-2">*</span>k..<span class="kw-2">*</span>v)),
+
+            RangeSet::Inline(set) =&gt;
+                Either::Right(set.inner.iter().map(|(s, e)| <span class="kw-2">*</span>s..<span class="kw-2">*</span>e)),
+        }
+    }
+
+    <span class="doccomment">/// Iterate over every single [`u64`] value covered by the ranges in this
+    /// [`RangeSet`] in incremental order.
+    </span><span class="kw">pub fn </span>flatten(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw">impl </span>DoubleEndedIterator&lt;Item = u64&gt; + <span class="lifetime">'_ </span>{
+        <span class="kw">match </span><span class="self">self </span>{
+            RangeSet::BTree(set) =&gt;
+                Either::Left(set.inner.iter().flat_map(|(k, v)| <span class="kw-2">*</span>k..<span class="kw-2">*</span>v)),
+
+            RangeSet::Inline(set) =&gt;
+                Either::Right(set.inner.iter().flat_map(|(s, e)| <span class="kw-2">*</span>s..<span class="kw-2">*</span>e)),
+        }
+    }
+
+    <span class="doccomment">/// The smallest value covered by ranges in this collection.
+    </span><span class="kw">pub fn </span>first(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;u64&gt; {
+        <span class="kw">match </span><span class="self">self </span>{
+            RangeSet::Inline(set) =&gt; set.inner.first().map(|(s, <span class="kw">_</span>)| <span class="kw-2">*</span>s),
+
+            RangeSet::BTree(set) =&gt; set.inner.first_key_value().map(|(k, <span class="kw">_</span>)| <span class="kw-2">*</span>k),
+        }
+    }
+
+    <span class="doccomment">/// The largest value covered by ranges in this collection.
+    </span><span class="kw">pub fn </span>last(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;u64&gt; {
+        <span class="kw">match </span><span class="self">self </span>{
+            RangeSet::Inline(set) =&gt; set.inner.last().map(|(<span class="kw">_</span>, e)| <span class="kw-2">*</span>e - <span class="number">1</span>),
+
+            RangeSet::BTree(set) =&gt;
+                set.inner.last_key_value().map(|(<span class="kw">_</span>, v)| <span class="kw-2">*</span>v - <span class="number">1</span>),
+        }
+    }
+
+    <span class="attr">#[inline]
+    </span><span class="kw">pub fn </span>remove_until(<span class="kw-2">&amp;mut </span><span class="self">self</span>, largest: u64) {
+        <span class="kw">match </span><span class="self">self </span>{
+            RangeSet::Inline(set) =&gt; set.remove_until(largest),
+            RangeSet::BTree(set) =&gt; set.remove_until(largest),
+        }
+
+        <span class="self">self</span>.fixup();
+    }
+
+    <span class="kw">pub fn </span>push_item(<span class="kw-2">&amp;mut </span><span class="self">self</span>, item: u64) {
+        <span class="self">self</span>.insert(item..item + <span class="number">1</span>)
+    }
+}
+
+<span class="kw">impl </span>InlineRangeSet {
+    <span class="kw">fn </span>insert(<span class="kw-2">&amp;mut </span><span class="self">self</span>, item: Range&lt;u64&gt;) {
+        <span class="kw">let </span>start = item.start;
+        <span class="kw">let </span><span class="kw-2">mut </span>end = item.end;
+        <span class="kw">let </span><span class="kw-2">mut </span>pos = <span class="number">0</span>;
+
+        <span class="kw">loop </span>{
+            <span class="kw">match </span><span class="self">self</span>.inner.get_mut(pos) {
+                <span class="prelude-val">Some</span>((s, e)) =&gt; {
+                    <span class="kw">if </span>start &gt; <span class="kw-2">*</span>e {
+                        <span class="comment">// Skip while start is greater than end
+                        </span>pos += <span class="number">1</span>;
+                        <span class="kw">continue</span>;
+                    }
+
+                    <span class="kw">if </span>end &lt; <span class="kw-2">*</span>s {
+                        <span class="comment">// Inserted range is entirely before this range. Insert
+                        // and return.
+                        </span><span class="kw">if </span><span class="self">self</span>.inner.len() == <span class="self">self</span>.capacity {
+                            <span class="self">self</span>.inner.remove(<span class="number">0</span>);
+                            pos -= <span class="number">1</span>;
+                        }
+
+                        <span class="self">self</span>.inner.insert(pos, (start, end));
+                        <span class="kw">return</span>;
+                    }
+
+                    <span class="comment">// At this point we know (start &lt;= *e)
+                    </span><span class="kw">if </span>start &lt; <span class="kw-2">*</span>s {
+                        <span class="comment">// We know we are completely past the previous range, so
+                        // we can simply adjust the lower bound
+                        </span><span class="kw-2">*</span>s = start;
+                    }
+
+                    <span class="kw">if </span>end &gt; <span class="kw-2">*</span>e {
+                        <span class="comment">// We adjusted the upper bound of an existing range, we
+                        // must now check it does not overlap with the next range
+                        </span><span class="kw-2">*</span>e = end;
+                        <span class="kw">break</span>;
+                    } <span class="kw">else </span>{
+                        <span class="kw">return</span>;
+                    }
+                },
+
+                <span class="prelude-val">None </span>=&gt; {
+                    <span class="kw">if </span><span class="self">self</span>.inner.len() == <span class="self">self</span>.capacity {
+                        <span class="self">self</span>.inner.remove(<span class="number">0</span>);
+                    }
+
+                    <span class="self">self</span>.inner.push((start, end));
+                    <span class="kw">return</span>;
+                },
+            }
+        }
+
+        <span class="comment">// Merge any newly overlapping ranges
+        </span><span class="kw">while let </span><span class="prelude-val">Some</span>((s, e)) = <span class="self">self</span>.inner.get(pos + <span class="number">1</span>).copied() {
+            <span class="kw">if </span>end &lt; s {
+                <span class="comment">// We are done, since the next range is completely disjoint
+                </span><span class="kw">break</span>;
+            }
+
+            <span class="kw">let </span>new_e = e.max(end);
+            <span class="self">self</span>.inner[pos].<span class="number">1 </span>= new_e;
+            end = new_e;
+            <span class="self">self</span>.inner.remove(pos + <span class="number">1</span>);
+        }
+    }
+
+    <span class="kw">fn </span>remove_until(<span class="kw-2">&amp;mut </span><span class="self">self</span>, largest: u64) {
+        <span class="kw">while let </span><span class="prelude-val">Some</span>((s, e)) = <span class="self">self</span>.inner.first_mut() {
+            <span class="kw">if </span>largest &gt;= <span class="kw-2">*</span>e {
+                <span class="self">self</span>.inner.remove(<span class="number">0</span>);
+                <span class="kw">continue</span>;
+            }
+
+            <span class="kw-2">*</span>s = (largest + <span class="number">1</span>).max(<span class="kw-2">*</span>s);
+            <span class="kw">if </span><span class="kw-2">*</span>s == <span class="kw-2">*</span>e {
+                <span class="self">self</span>.inner.remove(<span class="number">0</span>);
+            }
+
+            <span class="kw">break</span>;
+        }
+    }
+}
+
+<span class="kw">impl </span>BTreeRangeSet {
+    <span class="comment">// TODO: use RangeInclusive
+    </span><span class="kw">fn </span>insert(<span class="kw-2">&amp;mut </span><span class="self">self</span>, item: Range&lt;u64&gt;) {
+        <span class="kw">let </span><span class="kw-2">mut </span>start = item.start;
+        <span class="kw">let </span><span class="kw-2">mut </span>end = item.end;
+
+        <span class="comment">// Check if preceding existing range overlaps with the new one.
+        </span><span class="kw">if let </span><span class="prelude-val">Some</span>(r) = <span class="self">self</span>.prev_to(start) {
+            <span class="comment">// New range overlaps with existing range in the set, merge them.
+            </span><span class="kw">if </span>range_overlaps(<span class="kw-2">&amp;</span>r, <span class="kw-2">&amp;</span>item) {
+                <span class="self">self</span>.inner.remove(<span class="kw-2">&amp;</span>r.start);
+
+                start = std::cmp::min(start, r.start);
+                end = std::cmp::max(end, r.end);
+            }
+        }
+
+        <span class="comment">// Check if following existing ranges overlap with the new one.
+        </span><span class="kw">while let </span><span class="prelude-val">Some</span>(r) = <span class="self">self</span>.next_to(start) {
+            <span class="comment">// Existing range is fully contained in the new range, remove it.
+            </span><span class="kw">if </span>item.contains(<span class="kw-2">&amp;</span>r.start) &amp;&amp; item.contains(<span class="kw-2">&amp;</span>r.end) {
+                <span class="self">self</span>.inner.remove(<span class="kw-2">&amp;</span>r.start);
+                <span class="kw">continue</span>;
+            }
+
+            <span class="comment">// New range doesn't overlap anymore, we are done.
+            </span><span class="kw">if </span>!range_overlaps(<span class="kw-2">&amp;</span>r, <span class="kw-2">&amp;</span>item) {
+                <span class="kw">break</span>;
+            }
+
+            <span class="comment">// New range overlaps with existing range in the set, merge them.
+            </span><span class="self">self</span>.inner.remove(<span class="kw-2">&amp;</span>r.start);
+
+            start = std::cmp::min(start, r.start);
+            end = std::cmp::max(end, r.end);
+        }
+
+        <span class="kw">if </span><span class="self">self</span>.inner.len() &gt;= <span class="self">self</span>.capacity {
+            <span class="self">self</span>.inner.pop_first();
+        }
+
+        <span class="self">self</span>.inner.insert(start, end);
+    }
+
+    <span class="kw">fn </span>remove_until(<span class="kw-2">&amp;mut </span><span class="self">self</span>, largest: u64) {
+        <span class="kw">let </span>ranges: Vec&lt;Range&lt;u64&gt;&gt; = <span class="self">self
+            </span>.inner
+            .range((Bound::Unbounded, Bound::Included(<span class="kw-2">&amp;</span>largest)))
+            .map(|(<span class="kw-2">&amp;</span>s, <span class="kw-2">&amp;</span>e)| (s..e))
+            .collect();
+
+        <span class="kw">for </span>r <span class="kw">in </span>ranges {
+            <span class="self">self</span>.inner.remove(<span class="kw-2">&amp;</span>r.start);
+
+            <span class="kw">if </span>r.end &gt; largest + <span class="number">1 </span>{
+                <span class="kw">let </span>start = largest + <span class="number">1</span>;
+                <span class="self">self</span>.insert(start..r.end);
+            }
+        }
+    }
+
+    <span class="kw">fn </span>prev_to(<span class="kw-2">&amp;</span><span class="self">self</span>, item: u64) -&gt; <span class="prelude-ty">Option</span>&lt;Range&lt;u64&gt;&gt; {
+        <span class="self">self</span>.inner
+            .range((Bound::Unbounded, Bound::Included(item)))
+            .map(|(<span class="kw-2">&amp;</span>s, <span class="kw-2">&amp;</span>e)| (s..e))
+            .next_back()
+    }
+
+    <span class="kw">fn </span>next_to(<span class="kw-2">&amp;</span><span class="self">self</span>, item: u64) -&gt; <span class="prelude-ty">Option</span>&lt;Range&lt;u64&gt;&gt; {
+        <span class="self">self</span>.inner
+            .range((Bound::Included(item), Bound::Unbounded))
+            .map(|(<span class="kw-2">&amp;</span>s, <span class="kw-2">&amp;</span>e)| (s..e))
+            .next()
+    }
+}
+
+<span class="kw">impl </span>Default <span class="kw">for </span>RangeSet {
+    <span class="kw">fn </span>default() -&gt; <span class="self">Self </span>{
+        RangeSet::Inline(InlineRangeSet {
+            inner: Default::default(),
+            capacity: usize::MAX,
+        })
+    }
+}
+
+<span class="comment">// This implements comparison between `BTreeRangeSet` and standard `Range`. The
+// idea is that a `RangeSet` with no gaps (i.e. that only contains a single
+// range) is basically equvalent to a normal `Range` so they should be
+// comparable.
+</span><span class="kw">impl </span>PartialEq&lt;Range&lt;u64&gt;&gt; <span class="kw">for </span>RangeSet {
+    <span class="kw">fn </span>eq(<span class="kw-2">&amp;</span><span class="self">self</span>, other: <span class="kw-2">&amp;</span>Range&lt;u64&gt;) -&gt; bool {
+        <span class="comment">// If there is more than one range it means that the range set is not
+        // contiguous, so can't be equal to a single range.
+        </span><span class="kw">if </span><span class="self">self</span>.len() != <span class="number">1 </span>{
+            <span class="kw">return </span><span class="bool-val">false</span>;
+        }
+
+        <span class="comment">// Get the first and only range in the set.
+        </span><span class="kw">let </span>range = <span class="self">self</span>.iter().next().unwrap();
+        range == <span class="kw-2">*</span>other
+    }
+}
+
+<span class="kw">impl </span>std::fmt::Debug <span class="kw">for </span>RangeSet {
+    <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+        <span class="kw">let </span>ranges: Vec&lt;Range&lt;u64&gt;&gt; = <span class="self">self
+            </span>.iter()
+            .map(|<span class="kw-2">mut </span>r| {
+                r.end -= <span class="number">1</span>;
+                r
+            })
+            .collect();
+
+        <span class="macro">write!</span>(f, <span class="string">"{ranges:?}"</span>)
+    }
+}
+
+<span class="kw">fn </span>range_overlaps(r: <span class="kw-2">&amp;</span>Range&lt;u64&gt;, other: <span class="kw-2">&amp;</span>Range&lt;u64&gt;) -&gt; bool {
+    other.start &gt;= r.start &amp;&amp; other.start &lt;= r.end ||
+        other.end &gt;= r.start &amp;&amp; other.end &lt;= r.end
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>insert_non_overlapping() {
+        <span class="kw">let </span><span class="kw-2">mut </span>r = RangeSet::default();
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">0</span>);
+        <span class="kw">let </span>empty: <span class="kw-2">&amp;</span>[u64] = <span class="kw-2">&amp;</span>[];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>empty);
+
+        r.insert(<span class="number">4</span>..<span class="number">7</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]);
+
+        r.insert(<span class="number">9</span>..<span class="number">12</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>]);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>insert_contained() {
+        <span class="kw">let </span><span class="kw-2">mut </span>r = RangeSet::default();
+
+        r.insert(<span class="number">4</span>..<span class="number">7</span>);
+        r.insert(<span class="number">9</span>..<span class="number">12</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>]);
+
+        r.insert(<span class="number">4</span>..<span class="number">7</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>]);
+
+        r.insert(<span class="number">4</span>..<span class="number">6</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>]);
+
+        r.insert(<span class="number">5</span>..<span class="number">6</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>]);
+
+        r.insert(<span class="number">10</span>..<span class="number">11</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>]);
+
+        r.insert(<span class="number">9</span>..<span class="number">11</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>]);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>insert_overlapping() {
+        <span class="kw">let </span><span class="kw-2">mut </span>r = RangeSet::default();
+
+        r.insert(<span class="number">3</span>..<span class="number">6</span>);
+        r.insert(<span class="number">9</span>..<span class="number">12</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[<span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>]);
+
+        r.insert(<span class="number">5</span>..<span class="number">7</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[<span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>]);
+
+        r.insert(<span class="number">10</span>..<span class="number">15</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[
+            <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>, <span class="number">13</span>, <span class="number">14
+        </span>]);
+
+        r.insert(<span class="number">2</span>..<span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[
+            <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>, <span class="number">13</span>, <span class="number">14
+        </span>]);
+
+        r.insert(<span class="number">8</span>..<span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[
+            <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>, <span class="number">13</span>, <span class="number">14
+        </span>]);
+
+        r.insert(<span class="number">6</span>..<span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[
+            <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>, <span class="number">13</span>, <span class="number">14
+        </span>]);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>insert_overlapping_multi() {
+        <span class="kw">let </span><span class="kw-2">mut </span>r = RangeSet::default();
+
+        r.insert(<span class="number">3</span>..<span class="number">6</span>);
+        r.insert(<span class="number">16</span>..<span class="number">20</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[
+            <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">16</span>, <span class="number">17</span>, <span class="number">18</span>, <span class="number">19
+        </span>]);
+
+        r.insert(<span class="number">10</span>..<span class="number">11</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[
+            <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">10</span>, <span class="number">16</span>, <span class="number">17</span>, <span class="number">18</span>, <span class="number">19
+        </span>]);
+
+        <span class="macro">assert!</span>(<span class="macro">matches!</span>(r, RangeSet::Inline(<span class="kw">_</span>)));
+
+        r.insert(<span class="number">13</span>..<span class="number">14</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">4</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[
+            <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">10</span>, <span class="number">13</span>, <span class="number">16</span>, <span class="number">17</span>, <span class="number">18</span>, <span class="number">19
+        </span>]);
+
+        <span class="comment">// Make sure it converted to a btree at capacity
+        </span><span class="macro">assert!</span>(<span class="macro">matches!</span>(r, RangeSet::BTree(<span class="kw">_</span>)));
+
+        r.insert(<span class="number">4</span>..<span class="number">17</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[
+            <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>, <span class="number">13</span>, <span class="number">14</span>, <span class="number">15</span>, <span class="number">16</span>, <span class="number">17</span>, <span class="number">18</span>, <span class="number">19
+        </span>]);
+
+        <span class="comment">// Make sure it converted back to inline
+        </span><span class="macro">assert!</span>(<span class="macro">matches!</span>(r, RangeSet::Inline(<span class="kw">_</span>)));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>prev_to() {
+        <span class="kw">let </span><span class="kw-2">mut </span>r = BTreeRangeSet {
+            inner: Default::default(),
+            capacity: usize::MAX,
+        };
+
+        r.insert(<span class="number">4</span>..<span class="number">7</span>);
+        r.insert(<span class="number">9</span>..<span class="number">12</span>);
+
+        <span class="macro">assert_eq!</span>(r.prev_to(<span class="number">2</span>), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(r.prev_to(<span class="number">4</span>), <span class="prelude-val">Some</span>(<span class="number">4</span>..<span class="number">7</span>));
+        <span class="macro">assert_eq!</span>(r.prev_to(<span class="number">15</span>), <span class="prelude-val">Some</span>(<span class="number">9</span>..<span class="number">12</span>));
+        <span class="macro">assert_eq!</span>(r.prev_to(<span class="number">5</span>), <span class="prelude-val">Some</span>(<span class="number">4</span>..<span class="number">7</span>));
+        <span class="macro">assert_eq!</span>(r.prev_to(<span class="number">8</span>), <span class="prelude-val">Some</span>(<span class="number">4</span>..<span class="number">7</span>));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>next_to() {
+        <span class="kw">let </span><span class="kw-2">mut </span>r = BTreeRangeSet {
+            inner: Default::default(),
+            capacity: usize::MAX,
+        };
+
+        r.insert(<span class="number">4</span>..<span class="number">7</span>);
+        r.insert(<span class="number">9</span>..<span class="number">12</span>);
+
+        <span class="macro">assert_eq!</span>(r.next_to(<span class="number">2</span>), <span class="prelude-val">Some</span>(<span class="number">4</span>..<span class="number">7</span>));
+        <span class="macro">assert_eq!</span>(r.next_to(<span class="number">12</span>), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(r.next_to(<span class="number">15</span>), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(r.next_to(<span class="number">5</span>), <span class="prelude-val">Some</span>(<span class="number">9</span>..<span class="number">12</span>));
+        <span class="macro">assert_eq!</span>(r.next_to(<span class="number">8</span>), <span class="prelude-val">Some</span>(<span class="number">9</span>..<span class="number">12</span>));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>push_item() {
+        <span class="kw">let </span><span class="kw-2">mut </span>r = RangeSet::default();
+
+        r.insert(<span class="number">4</span>..<span class="number">7</span>);
+        r.insert(<span class="number">9</span>..<span class="number">12</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>]);
+
+        r.push_item(<span class="number">15</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[
+            <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">15
+        </span>]);
+
+        r.push_item(<span class="number">15</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[
+            <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">15
+        </span>]);
+
+        r.push_item(<span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">4</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[
+            <span class="number">1</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">15
+        </span>]);
+
+        r.push_item(<span class="number">12</span>);
+        r.push_item(<span class="number">13</span>);
+        r.push_item(<span class="number">14</span>);
+
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[
+            <span class="number">1</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>, <span class="number">13</span>, <span class="number">14</span>, <span class="number">15
+        </span>]);
+
+        r.push_item(<span class="number">2</span>);
+        r.push_item(<span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[
+            <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>, <span class="number">13</span>, <span class="number">14</span>, <span class="number">15
+        </span>]);
+
+        r.push_item(<span class="number">8</span>);
+        r.push_item(<span class="number">7</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[
+            <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>, <span class="number">12</span>, <span class="number">13</span>, <span class="number">14</span>, <span class="number">15
+        </span>]);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>flatten_rev() {
+        <span class="kw">let </span><span class="kw-2">mut </span>r = RangeSet::default();
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">0</span>);
+
+        <span class="kw">let </span>empty: <span class="kw-2">&amp;</span>[u64] = <span class="kw-2">&amp;</span>[];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>empty);
+
+        r.insert(<span class="number">4</span>..<span class="number">7</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().rev().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[<span class="number">6</span>, <span class="number">5</span>, <span class="number">4</span>]);
+
+        r.insert(<span class="number">9</span>..<span class="number">12</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>]);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().rev().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[
+            <span class="number">11</span>, <span class="number">10</span>, <span class="number">9</span>, <span class="number">6</span>, <span class="number">5</span>, <span class="number">4
+        </span>]);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>flatten_one() {
+        <span class="kw">let </span><span class="kw-2">mut </span>r = RangeSet::default();
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">0</span>);
+
+        <span class="kw">let </span>empty: <span class="kw-2">&amp;</span>[u64] = <span class="kw-2">&amp;</span>[];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>empty);
+
+        r.insert(<span class="number">0</span>..<span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(r.len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[<span class="number">0</span>]);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().rev().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[<span class="number">0</span>]);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>remove_largest() {
+        <span class="kw">let </span><span class="kw-2">mut </span>r = RangeSet::default();
+
+        r.insert(<span class="number">3</span>..<span class="number">6</span>);
+        r.insert(<span class="number">9</span>..<span class="number">11</span>);
+        r.insert(<span class="number">13</span>..<span class="number">14</span>);
+        r.insert(<span class="number">16</span>..<span class="number">20</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[
+            <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">13</span>, <span class="number">16</span>, <span class="number">17</span>, <span class="number">18</span>, <span class="number">19
+        </span>]);
+
+        r.remove_until(<span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[
+            <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">13</span>, <span class="number">16</span>, <span class="number">17</span>, <span class="number">18</span>, <span class="number">19
+        </span>]);
+
+        r.remove_until(<span class="number">4</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[
+            <span class="number">5</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">13</span>, <span class="number">16</span>, <span class="number">17</span>, <span class="number">18</span>, <span class="number">19
+        </span>]);
+
+        r.remove_until(<span class="number">6</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[
+            <span class="number">9</span>, <span class="number">10</span>, <span class="number">13</span>, <span class="number">16</span>, <span class="number">17</span>, <span class="number">18</span>, <span class="number">19
+        </span>]);
+
+        r.remove_until(<span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[<span class="number">13</span>, <span class="number">16</span>, <span class="number">17</span>, <span class="number">18</span>, <span class="number">19</span>]);
+
+        r.remove_until(<span class="number">17</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[<span class="number">18</span>, <span class="number">19</span>]);
+
+        r.remove_until(<span class="number">18</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>[<span class="number">19</span>]);
+
+        r.remove_until(<span class="number">20</span>);
+
+        <span class="kw">let </span>empty: <span class="kw-2">&amp;</span>[u64] = <span class="kw-2">&amp;</span>[];
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>r.flatten().collect::&lt;Vec&lt;u64&gt;&gt;(), <span class="kw-2">&amp;</span>empty);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>eq_range() {
+        <span class="kw">let </span><span class="kw-2">mut </span>r = RangeSet::default();
+        <span class="macro">assert_ne!</span>(r, <span class="number">0</span>..<span class="number">0</span>);
+
+        <span class="kw">let </span>expected = <span class="number">3</span>..<span class="number">20</span>;
+
+        r.insert(<span class="number">3</span>..<span class="number">6</span>);
+        <span class="macro">assert_ne!</span>(r, expected);
+
+        r.insert(<span class="number">16</span>..<span class="number">20</span>);
+        <span class="macro">assert_ne!</span>(r, expected);
+
+        r.insert(<span class="number">10</span>..<span class="number">11</span>);
+        <span class="macro">assert_ne!</span>(r, expected);
+
+        r.insert(<span class="number">13</span>..<span class="number">14</span>);
+        <span class="macro">assert_ne!</span>(r, expected);
+
+        r.insert(<span class="number">4</span>..<span class="number">17</span>);
+
+        <span class="macro">assert_eq!</span>(r, expected);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>first_last() {
+        <span class="kw">let </span><span class="kw-2">mut </span>r = RangeSet::default();
+        <span class="macro">assert_eq!</span>(r.first(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(r.last(), <span class="prelude-val">None</span>);
+
+        r.insert(<span class="number">10</span>..<span class="number">11</span>);
+        <span class="macro">assert_eq!</span>(r.first(), <span class="prelude-val">Some</span>(<span class="number">10</span>));
+        <span class="macro">assert_eq!</span>(r.last(), <span class="prelude-val">Some</span>(<span class="number">10</span>));
+
+        r.insert(<span class="number">13</span>..<span class="number">14</span>);
+        <span class="macro">assert_eq!</span>(r.first(), <span class="prelude-val">Some</span>(<span class="number">10</span>));
+        <span class="macro">assert_eq!</span>(r.last(), <span class="prelude-val">Some</span>(<span class="number">13</span>));
+
+        r.insert(<span class="number">3</span>..<span class="number">6</span>);
+        <span class="macro">assert_eq!</span>(r.first(), <span class="prelude-val">Some</span>(<span class="number">3</span>));
+        <span class="macro">assert_eq!</span>(r.last(), <span class="prelude-val">Some</span>(<span class="number">13</span>));
+
+        r.insert(<span class="number">16</span>..<span class="number">20</span>);
+        <span class="macro">assert_eq!</span>(r.first(), <span class="prelude-val">Some</span>(<span class="number">3</span>));
+        <span class="macro">assert_eq!</span>(r.last(), <span class="prelude-val">Some</span>(<span class="number">19</span>));
+
+        r.insert(<span class="number">4</span>..<span class="number">17</span>);
+        <span class="macro">assert_eq!</span>(r.first(), <span class="prelude-val">Some</span>(<span class="number">3</span>));
+        <span class="macro">assert_eq!</span>(r.last(), <span class="prelude-val">Some</span>(<span class="number">19</span>));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>capacity() {
+        <span class="kw">let </span><span class="kw-2">mut </span>r = RangeSet::new(<span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(r.first(), <span class="prelude-val">None</span>);
+        <span class="macro">assert_eq!</span>(r.last(), <span class="prelude-val">None</span>);
+
+        r.insert(<span class="number">10</span>..<span class="number">11</span>);
+        <span class="macro">assert_eq!</span>(r.first(), <span class="prelude-val">Some</span>(<span class="number">10</span>));
+        <span class="macro">assert_eq!</span>(r.last(), <span class="prelude-val">Some</span>(<span class="number">10</span>));
+
+        r.insert(<span class="number">13</span>..<span class="number">14</span>);
+        <span class="macro">assert_eq!</span>(r.first(), <span class="prelude-val">Some</span>(<span class="number">10</span>));
+        <span class="macro">assert_eq!</span>(r.last(), <span class="prelude-val">Some</span>(<span class="number">13</span>));
+
+        r.insert(<span class="number">3</span>..<span class="number">6</span>);
+        <span class="macro">assert_eq!</span>(r.first(), <span class="prelude-val">Some</span>(<span class="number">3</span>));
+        <span class="macro">assert_eq!</span>(r.last(), <span class="prelude-val">Some</span>(<span class="number">13</span>));
+
+        r.insert(<span class="number">16</span>..<span class="number">20</span>);
+        <span class="macro">assert_eq!</span>(r.first(), <span class="prelude-val">Some</span>(<span class="number">10</span>));
+        <span class="macro">assert_eq!</span>(r.last(), <span class="prelude-val">Some</span>(<span class="number">19</span>));
+
+        r.insert(<span class="number">4</span>..<span class="number">17</span>);
+        <span class="macro">assert_eq!</span>(r.first(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(r.last(), <span class="prelude-val">Some</span>(<span class="number">19</span>));
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/recovery/bbr/init.rs.html b/src/quiche/recovery/bbr/init.rs.html
new file mode 100644
index 0000000..b667e1c
--- /dev/null
+++ b/src/quiche/recovery/bbr/init.rs.html
@@ -0,0 +1,179 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/recovery/bbr/init.rs`."><title>init.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../../src-files.js"></script><script defer src="../../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2022, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+<span class="comment">// BBR Functions at Initialization.
+//
+
+// 4.3.1.  Initialization Steps
+</span><span class="kw">pub fn </span>bbr_init(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>rtt = r.rtt();
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr_state;
+
+    bbr.rtprop = rtt;
+    bbr.rtprop_stamp = Instant::now();
+    bbr.next_round_delivered = r.delivery_rate.delivered();
+
+    r.send_quantum = r.max_datagram_size;
+
+    bbr_init_round_counting(r);
+    bbr_init_full_pipe(r);
+    bbr_init_pacing_rate(r);
+    bbr_enter_startup(r);
+}
+
+<span class="comment">// 4.1.1.3.  Tracking Time for the BBR.BtlBw Max Filter
+</span><span class="kw">fn </span>bbr_init_round_counting(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr_state;
+
+    bbr.next_round_delivered = <span class="number">0</span>;
+    bbr.round_start = <span class="bool-val">false</span>;
+    bbr.round_count = <span class="number">0</span>;
+}
+
+<span class="comment">// 4.2.1.  Pacing Rate
+</span><span class="kw">fn </span>bbr_init_pacing_rate(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr_state;
+
+    <span class="kw">let </span>srtt = r
+        .smoothed_rtt
+        .unwrap_or_else(|| Duration::from_millis(<span class="number">1</span>))
+        .as_secs_f64();
+
+    <span class="comment">// At init, cwnd is initcwnd.
+    </span><span class="kw">let </span>nominal_bandwidth = r.congestion_window <span class="kw">as </span>f64 / srtt;
+
+    bbr.pacing_rate = (bbr.pacing_gain * nominal_bandwidth) <span class="kw">as </span>u64;
+}
+
+<span class="comment">// 4.3.2.1.  Startup Dynamics
+</span><span class="kw">pub fn </span>bbr_enter_startup(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr_state;
+
+    bbr.state = BBRStateMachine::Startup;
+    bbr.pacing_gain = BBR_HIGH_GAIN;
+    bbr.cwnd_gain = BBR_HIGH_GAIN;
+}
+
+<span class="comment">// 4.3.2.2.  Estimating When Startup has Filled the Pipe
+</span><span class="kw">fn </span>bbr_init_full_pipe(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr_state;
+
+    bbr.filled_pipe = <span class="bool-val">false</span>;
+    bbr.full_bw = <span class="number">0</span>;
+    bbr.full_bw_count = <span class="number">0</span>;
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/recovery/bbr/mod.rs.html b/src/quiche/recovery/bbr/mod.rs.html
new file mode 100644
index 0000000..96a288a
--- /dev/null
+++ b/src/quiche/recovery/bbr/mod.rs.html
@@ -0,0 +1,1737 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/recovery/bbr/mod.rs`."><title>mod.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../../src-files.js"></script><script defer src="../../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2022, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="doccomment">//! BBR Congestion Control
+//!
+//! This implementation is based on the following draft:
+//! &lt;https://tools.ietf.org/html/draft-cardwell-iccrg-bbr-congestion-control-00&gt;
+
+</span><span class="kw">use </span><span class="kw">crate</span>::minmax::Minmax;
+<span class="kw">use </span><span class="kw">crate</span>::recovery::<span class="kw-2">*</span>;
+
+<span class="kw">use </span>std::time::Duration;
+
+<span class="kw">pub static </span>BBR: CongestionControlOps = CongestionControlOps {
+    on_init,
+    reset,
+    on_packet_sent,
+    on_packets_acked,
+    congestion_event,
+    collapse_cwnd,
+    checkpoint,
+    rollback,
+    has_custom_pacing,
+    debug_fmt,
+};
+
+<span class="doccomment">/// A constant specifying the length of the BBR.BtlBw max filter window for
+/// BBR.BtlBwFilter, BtlBwFilterLen is 10 packet-timed round trips.
+</span><span class="kw">const </span>BTLBW_FILTER_LEN: Duration = Duration::from_secs(<span class="number">10</span>);
+
+<span class="doccomment">/// A constant specifying the minimum time interval between ProbeRTT states: 10
+/// secs.
+</span><span class="kw">const </span>PROBE_RTT_INTERVAL: Duration = Duration::from_secs(<span class="number">10</span>);
+
+<span class="doccomment">/// A constant specifying the length of the RTProp min filter window.
+</span><span class="kw">const </span>RTPROP_FILTER_LEN: Duration = PROBE_RTT_INTERVAL;
+
+<span class="doccomment">/// A constant specifying the minimum gain value that will allow the sending
+/// rate to double each round (2/ln(2) ~= 2.89), used in Startup mode for both
+/// BBR.pacing_gain and BBR.cwnd_gain.
+</span><span class="kw">const </span>BBR_HIGH_GAIN: f64 = <span class="number">2.89</span>;
+
+<span class="doccomment">/// The minimal cwnd value BBR tries to target using: 4 packets, or 4 * SMSS
+</span><span class="kw">const </span>BBR_MIN_PIPE_CWND_PKTS: usize = <span class="number">4</span>;
+
+<span class="doccomment">/// The number of phases in the BBR ProbeBW gain cycle: 8.
+</span><span class="kw">const </span>BBR_GAIN_CYCLE_LEN: usize = <span class="number">8</span>;
+
+<span class="doccomment">/// A constant specifying the minimum duration for which ProbeRTT state holds
+/// inflight to BBRMinPipeCwnd or fewer packets: 200 ms.
+</span><span class="kw">const </span>PROBE_RTT_DURATION: Duration = Duration::from_millis(<span class="number">200</span>);
+
+<span class="doccomment">/// Pacing Gain Cycle.
+</span><span class="kw">const </span>PACING_GAIN_CYCLE: [f64; BBR_GAIN_CYCLE_LEN] =
+    [<span class="number">5.0 </span>/ <span class="number">4.0</span>, <span class="number">3.0 </span>/ <span class="number">4.0</span>, <span class="number">1.0</span>, <span class="number">1.0</span>, <span class="number">1.0</span>, <span class="number">1.0</span>, <span class="number">1.0</span>, <span class="number">1.0</span>];
+
+<span class="doccomment">/// A constant to check BBR.BtlBW is still growing.
+</span><span class="kw">const </span>BTLBW_GROWTH_TARGET: f64 = <span class="number">1.25</span>;
+
+<span class="doccomment">/// BBR Internal State Machine.
+</span><span class="attr">#[derive(Debug, PartialEq, Eq)]
+</span><span class="kw">enum </span>BBRStateMachine {
+    Startup,
+    Drain,
+    ProbeBW,
+    ProbeRTT,
+}
+
+<span class="doccomment">/// BBR Specific State Variables.
+</span><span class="kw">pub struct </span>State {
+    <span class="comment">// The current state of a BBR flow in the BBR state machine.
+    </span>state: BBRStateMachine,
+
+    <span class="comment">// The current pacing rate for a BBR flow, which controls inter-packet
+    // spacing.
+    </span>pacing_rate: u64,
+
+    <span class="comment">// BBR's estimated bottleneck bandwidth available to the transport flow,
+    // estimated from the maximum delivery rate sample in a sliding window.
+    </span>btlbw: u64,
+
+    <span class="comment">// The max filter used to estimate BBR.BtlBw.
+    </span>btlbwfilter: Minmax&lt;u64&gt;,
+
+    <span class="comment">// BBR's estimated two-way round-trip propagation delay of the path,
+    // estimated from the windowed minimum recent round-trip delay sample.
+    </span>rtprop: Duration,
+
+    <span class="comment">// The wall clock time at which the current BBR.RTProp sample was obtained.
+    </span>rtprop_stamp: Instant,
+
+    <span class="comment">// A boolean recording whether the BBR.RTprop has expired and is due for a
+    // refresh with an application idle period or a transition into ProbeRTT
+    // state.
+    </span>rtprop_expired: bool,
+
+    <span class="comment">// The dynamic gain factor used to scale BBR.BtlBw to produce
+    // BBR.pacing_rate.
+    </span>pacing_gain: f64,
+
+    <span class="comment">// The dynamic gain factor used to scale the estimated BDP to produce a
+    // congestion window (cwnd).
+    </span>cwnd_gain: f64,
+
+    <span class="comment">// A boolean that records whether BBR estimates that it has ever fully
+    // utilized its available bandwidth ("filled the pipe").
+    </span>filled_pipe: bool,
+
+    <span class="comment">// Count of packet-timed round trips elapsed so far.
+    </span>round_count: u64,
+
+    <span class="comment">// A boolean that BBR sets to true once per packet-timed round trip,
+    // on ACKs that advance BBR.round_count.
+    </span>round_start: bool,
+
+    <span class="comment">// packet.delivered value denoting the end of a packet-timed round trip.
+    </span>next_round_delivered: usize,
+
+    <span class="comment">// Timestamp when ProbeRTT state ends.
+    </span>probe_rtt_done_stamp: <span class="prelude-ty">Option</span>&lt;Instant&gt;,
+
+    <span class="comment">// Checking if a roundtrip in ProbeRTT state ends.
+    </span>probe_rtt_round_done: bool,
+
+    <span class="comment">// Checking if in the packet conservation mode during recovery.
+    </span>packet_conservation: bool,
+
+    <span class="comment">// Saved cwnd before loss recovery.
+    </span>prior_cwnd: usize,
+
+    <span class="comment">// Checking if restarting from idle.
+    </span>idle_restart: bool,
+
+    <span class="comment">// Baseline level delivery rate for full pipe estimator.
+    </span>full_bw: u64,
+
+    <span class="comment">// The number of round for full pipe estimator without much growth.
+    </span>full_bw_count: usize,
+
+    <span class="comment">// Last time cycle_index is updated.
+    </span>cycle_stamp: Instant,
+
+    <span class="comment">// Current index of pacing_gain_cycle[].
+    </span>cycle_index: usize,
+
+    <span class="comment">// The upper bound on the volume of data BBR allows in flight.
+    </span>target_cwnd: usize,
+
+    <span class="comment">// Whether in the recovery episode.
+    </span>in_recovery: bool,
+
+    <span class="comment">// Start time of the connection.
+    </span>start_time: Instant,
+
+    <span class="comment">// Newly marked lost data size in bytes.
+    </span>newly_lost_bytes: usize,
+
+    <span class="comment">// Newly acked data size in bytes.
+    </span>newly_acked_bytes: usize,
+
+    <span class="comment">// bytes_in_flight before processing this ACK.
+    </span>prior_bytes_in_flight: usize,
+}
+
+<span class="kw">impl </span>State {
+    <span class="kw">pub fn </span>new() -&gt; <span class="self">Self </span>{
+        <span class="kw">let </span>now = Instant::now();
+
+        State {
+            state: BBRStateMachine::Startup,
+
+            pacing_rate: <span class="number">0</span>,
+
+            btlbw: <span class="number">0</span>,
+
+            btlbwfilter: Minmax::new(<span class="number">0</span>),
+
+            rtprop: Duration::ZERO,
+
+            rtprop_stamp: now,
+
+            rtprop_expired: <span class="bool-val">false</span>,
+
+            pacing_gain: <span class="number">0.0</span>,
+
+            cwnd_gain: <span class="number">0.0</span>,
+
+            filled_pipe: <span class="bool-val">false</span>,
+
+            round_count: <span class="number">0</span>,
+
+            round_start: <span class="bool-val">false</span>,
+
+            next_round_delivered: <span class="number">0</span>,
+
+            probe_rtt_done_stamp: <span class="prelude-val">None</span>,
+
+            probe_rtt_round_done: <span class="bool-val">false</span>,
+
+            packet_conservation: <span class="bool-val">false</span>,
+
+            prior_cwnd: <span class="number">0</span>,
+
+            idle_restart: <span class="bool-val">false</span>,
+
+            full_bw: <span class="number">0</span>,
+
+            full_bw_count: <span class="number">0</span>,
+
+            cycle_stamp: now,
+
+            cycle_index: <span class="number">0</span>,
+
+            target_cwnd: <span class="number">0</span>,
+
+            in_recovery: <span class="bool-val">false</span>,
+
+            start_time: now,
+
+            newly_lost_bytes: <span class="number">0</span>,
+
+            newly_acked_bytes: <span class="number">0</span>,
+
+            prior_bytes_in_flight: <span class="number">0</span>,
+        }
+    }
+}
+
+<span class="comment">// When entering the recovery episode.
+</span><span class="kw">fn </span>bbr_enter_recovery(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    r.bbr_state.prior_cwnd = per_ack::bbr_save_cwnd(r);
+
+    r.congestion_window = r.bytes_in_flight.max(r.max_datagram_size);
+    r.congestion_recovery_start_time = <span class="prelude-val">Some</span>(now);
+
+    r.bbr_state.packet_conservation = <span class="bool-val">true</span>;
+    r.bbr_state.in_recovery = <span class="bool-val">true</span>;
+
+    r.bbr_state.newly_lost_bytes = <span class="number">0</span>;
+
+    <span class="comment">// Start round now.
+    </span>r.bbr_state.next_round_delivered = r.delivery_rate.delivered();
+}
+
+<span class="comment">// When exiting the recovery episode.
+</span><span class="kw">fn </span>bbr_exit_recovery(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    r.congestion_recovery_start_time = <span class="prelude-val">None</span>;
+
+    r.bbr_state.packet_conservation = <span class="bool-val">false</span>;
+    r.bbr_state.in_recovery = <span class="bool-val">false</span>;
+
+    per_ack::bbr_restore_cwnd(r);
+}
+
+<span class="comment">// Congestion Control Hooks.
+//
+</span><span class="kw">fn </span>on_init(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    init::bbr_init(r);
+}
+
+<span class="kw">fn </span>reset(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    r.bbr_state = State::new();
+
+    init::bbr_init(r);
+}
+
+<span class="kw">fn </span>on_packet_sent(r: <span class="kw-2">&amp;mut </span>Recovery, sent_bytes: usize, _now: Instant) {
+    per_transmit::bbr_on_transmit(r);
+
+    r.bytes_in_flight += sent_bytes;
+}
+
+<span class="kw">fn </span>on_packets_acked(
+    r: <span class="kw-2">&amp;mut </span>Recovery, packets: <span class="kw-2">&amp;mut </span>Vec&lt;Acked&gt;, _epoch: packet::Epoch,
+    now: Instant,
+) {
+    r.bbr_state.newly_acked_bytes =
+        packets.drain(..).fold(<span class="number">0</span>, |acked_bytes, p| {
+            r.bbr_state.prior_bytes_in_flight = r.bytes_in_flight;
+
+            per_ack::bbr_update_model_and_state(r, <span class="kw-2">&amp;</span>p, now);
+
+            r.bytes_in_flight = r.bytes_in_flight.saturating_sub(p.size);
+
+            acked_bytes + p.size
+        });
+
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(pkt) = packets.last() {
+        <span class="kw">if </span>!r.in_congestion_recovery(pkt.time_sent) &amp;&amp; r.bbr_state.in_recovery {
+            <span class="comment">// Upon exiting loss recovery.
+            </span>bbr_exit_recovery(r);
+        }
+    }
+
+    per_ack::bbr_update_control_parameters(r, now);
+
+    r.bbr_state.newly_lost_bytes = <span class="number">0</span>;
+}
+
+<span class="kw">fn </span>congestion_event(
+    r: <span class="kw-2">&amp;mut </span>Recovery, lost_bytes: usize, largest_lost_pkt: <span class="kw-2">&amp;</span>Sent,
+    _epoch: packet::Epoch, now: Instant,
+) {
+    r.bbr_state.newly_lost_bytes = lost_bytes;
+
+    <span class="comment">// Upon entering Fast Recovery.
+    </span><span class="kw">if </span>!r.in_congestion_recovery(largest_lost_pkt.time_sent) {
+        <span class="comment">// Upon entering Fast Recovery.
+        </span>bbr_enter_recovery(r, now);
+    }
+}
+
+<span class="kw">fn </span>collapse_cwnd(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    r.bbr_state.prior_cwnd = per_ack::bbr_save_cwnd(r);
+
+    reno::collapse_cwnd(r);
+}
+
+<span class="kw">fn </span>checkpoint(_r: <span class="kw-2">&amp;mut </span>Recovery) {}
+
+<span class="kw">fn </span>rollback(_r: <span class="kw-2">&amp;mut </span>Recovery) -&gt; bool {
+    <span class="bool-val">false
+</span>}
+
+<span class="kw">fn </span>has_custom_pacing() -&gt; bool {
+    <span class="bool-val">true
+</span>}
+
+<span class="kw">fn </span>debug_fmt(r: <span class="kw-2">&amp;</span>Recovery, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;</span>r.bbr_state;
+
+    <span class="macro">write!</span>(
+         f,
+         <span class="string">"bbr={{ state={:?} btlbw={} rtprop={:?} pacing_rate={} pacing_gain={} cwnd_gain={} target_cwnd={} send_quantum={} filled_pipe={} round_count={} }}"</span>,
+         bbr.state, bbr.btlbw, bbr.rtprop, bbr.pacing_rate, bbr.pacing_gain, bbr.cwnd_gain, bbr.target_cwnd, r.send_quantum(), bbr.filled_pipe, bbr.round_count
+    )
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="kw">use </span><span class="kw">crate</span>::recovery;
+
+    <span class="kw">use </span>smallvec::smallvec;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>bbr_init() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::BBR);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+
+        <span class="comment">// on_init() is called in Connection::new(), so it need to be
+        // called manually here.
+        </span>r.on_init();
+
+        <span class="macro">assert_eq!</span>(
+            r.cwnd(),
+            r.max_datagram_size * cfg.initial_congestion_window_packets
+        );
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(r.bbr_state.state, BBRStateMachine::Startup);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>bbr_send() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::BBR);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span>now = Instant::now();
+
+        r.on_init();
+        r.on_packet_sent_cc(<span class="number">1000</span>, now);
+
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">1000</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>bbr_startup() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::BBR);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span>now = Instant::now();
+        <span class="kw">let </span>mss = r.max_datagram_size;
+
+        r.on_init();
+
+        <span class="comment">// Send 5 packets.
+        </span><span class="kw">for </span>pn <span class="kw">in </span><span class="number">0</span>..<span class="number">5 </span>{
+            <span class="kw">let </span>pkt = Sent {
+                pkt_num: pn,
+                frames: <span class="macro">smallvec!</span>[],
+                time_sent: now,
+                time_acked: <span class="prelude-val">None</span>,
+                time_lost: <span class="prelude-val">None</span>,
+                size: mss,
+                ack_eliciting: <span class="bool-val">true</span>,
+                in_flight: <span class="bool-val">true</span>,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                has_data: <span class="bool-val">false</span>,
+                pmtud: <span class="bool-val">false</span>,
+            };
+
+            r.on_packet_sent(
+                pkt,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+            );
+        }
+
+        <span class="kw">let </span>rtt = Duration::from_millis(<span class="number">50</span>);
+        <span class="kw">let </span>now = now + rtt;
+        <span class="kw">let </span>cwnd_prev = r.cwnd();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+        acked.insert(<span class="number">0</span>..<span class="number">5</span>);
+
+        <span class="macro">assert_eq!</span>(
+            r.on_ack_received(
+                <span class="kw-2">&amp;</span>acked,
+                <span class="number">25</span>,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+                <span class="kw-2">&amp;mut </span>Vec::new(),
+            ),
+            <span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="number">0</span>)),
+        );
+
+        <span class="macro">assert_eq!</span>(r.bbr_state.state, BBRStateMachine::Startup);
+        <span class="macro">assert_eq!</span>(r.cwnd(), cwnd_prev + mss * <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(
+            r.delivery_rate(),
+            ((mss * <span class="number">5</span>) <span class="kw">as </span>f64 / rtt.as_secs_f64()) <span class="kw">as </span>u64
+        );
+        <span class="macro">assert_eq!</span>(r.bbr_state.btlbw, r.delivery_rate());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>bbr_congestion_event() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::BBR);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span>now = Instant::now();
+        <span class="kw">let </span>mss = r.max_datagram_size;
+
+        r.on_init();
+
+        <span class="comment">// Send 5 packets.
+        </span><span class="kw">for </span>pn <span class="kw">in </span><span class="number">0</span>..<span class="number">5 </span>{
+            <span class="kw">let </span>pkt = Sent {
+                pkt_num: pn,
+                frames: <span class="macro">smallvec!</span>[],
+                time_sent: now,
+                time_acked: <span class="prelude-val">None</span>,
+                time_lost: <span class="prelude-val">None</span>,
+                size: mss,
+                ack_eliciting: <span class="bool-val">true</span>,
+                in_flight: <span class="bool-val">true</span>,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                has_data: <span class="bool-val">false</span>,
+                pmtud: <span class="bool-val">false</span>,
+            };
+
+            r.on_packet_sent(
+                pkt,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+            );
+        }
+
+        <span class="kw">let </span>rtt = Duration::from_millis(<span class="number">50</span>);
+        <span class="kw">let </span>now = now + rtt;
+
+        <span class="comment">// Make a packet loss to trigger a congestion event.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+        acked.insert(<span class="number">4</span>..<span class="number">5</span>);
+
+        <span class="comment">// 2 acked, 2 x MSS lost.
+        </span><span class="macro">assert_eq!</span>(
+            r.on_ack_received(
+                <span class="kw-2">&amp;</span>acked,
+                <span class="number">25</span>,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+                <span class="kw-2">&amp;mut </span>Vec::new(),
+            ),
+            <span class="prelude-val">Ok</span>((<span class="number">2</span>, <span class="number">2400</span>)),
+        );
+
+        <span class="comment">// Sent: 0, 1, 2, 3, 4, Acked 4.
+        </span><span class="macro">assert_eq!</span>(r.cwnd(), mss * <span class="number">4</span>);
+        <span class="comment">// Stil in flight: 2, 3.
+        </span><span class="macro">assert_eq!</span>(r.bytes_in_flight, mss * <span class="number">2</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>bbr_drain() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::BBR);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span>now = Instant::now();
+        <span class="kw">let </span>mss = r.max_datagram_size;
+
+        r.on_init();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pn = <span class="number">0</span>;
+
+        <span class="comment">// Stop right before filled_pipe=true.
+        </span><span class="kw">for _ in </span><span class="number">0</span>..<span class="number">3 </span>{
+            <span class="kw">let </span>pkt = Sent {
+                pkt_num: pn,
+                frames: <span class="macro">smallvec!</span>[],
+                time_sent: now,
+                time_acked: <span class="prelude-val">None</span>,
+                time_lost: <span class="prelude-val">None</span>,
+                size: mss,
+                ack_eliciting: <span class="bool-val">true</span>,
+                in_flight: <span class="bool-val">true</span>,
+                delivered: r.delivery_rate.delivered(),
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                has_data: <span class="bool-val">false</span>,
+                pmtud: <span class="bool-val">false</span>,
+            };
+
+            r.on_packet_sent(
+                pkt,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+            );
+
+            pn += <span class="number">1</span>;
+
+            <span class="kw">let </span>rtt = Duration::from_millis(<span class="number">50</span>);
+
+            <span class="kw">let </span>now = now + rtt;
+
+            <span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+            acked.insert(<span class="number">0</span>..pn);
+
+            <span class="macro">assert_eq!</span>(
+                r.on_ack_received(
+                    <span class="kw-2">&amp;</span>acked,
+                    <span class="number">25</span>,
+                    packet::Epoch::Application,
+                    HandshakeStatus::default(),
+                    now,
+                    <span class="string">""</span>,
+                    <span class="kw-2">&amp;mut </span>Vec::new(),
+                ),
+                <span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="number">0</span>)),
+            );
+        }
+
+        <span class="comment">// Stop at right before filled_pipe=true.
+        </span><span class="kw">for _ in </span><span class="number">0</span>..<span class="number">5 </span>{
+            <span class="kw">let </span>pkt = Sent {
+                pkt_num: pn,
+                frames: <span class="macro">smallvec!</span>[],
+                time_sent: now,
+                time_acked: <span class="prelude-val">None</span>,
+                time_lost: <span class="prelude-val">None</span>,
+                size: mss,
+                ack_eliciting: <span class="bool-val">true</span>,
+                in_flight: <span class="bool-val">true</span>,
+                delivered: r.delivery_rate.delivered(),
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                has_data: <span class="bool-val">false</span>,
+                pmtud: <span class="bool-val">false</span>,
+            };
+
+            r.on_packet_sent(
+                pkt,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+            );
+
+            pn += <span class="number">1</span>;
+        }
+
+        <span class="kw">let </span>rtt = Duration::from_millis(<span class="number">50</span>);
+        <span class="kw">let </span>now = now + rtt;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+
+        <span class="comment">// We sent 5 packets, but ack only one, to stay
+        // in Drain state.
+        </span>acked.insert(<span class="number">0</span>..pn - <span class="number">4</span>);
+
+        <span class="macro">assert_eq!</span>(
+            r.on_ack_received(
+                <span class="kw-2">&amp;</span>acked,
+                <span class="number">25</span>,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+                <span class="kw-2">&amp;mut </span>Vec::new(),
+            ),
+            <span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="number">0</span>)),
+        );
+
+        <span class="comment">// Now we are in Drain state.
+        </span><span class="macro">assert!</span>(r.bbr_state.filled_pipe);
+        <span class="macro">assert_eq!</span>(r.bbr_state.state, BBRStateMachine::Drain);
+        <span class="macro">assert!</span>(r.bbr_state.pacing_gain &lt; <span class="number">1.0</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>bbr_probe_bw() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::BBR);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span>now = Instant::now();
+        <span class="kw">let </span>mss = r.max_datagram_size;
+
+        r.on_init();
+
+        <span class="comment">// At 4th roundtrip, filled_pipe=true and switch to Drain,
+        // but move to ProbeBW immediately because bytes_in_flight is
+        // smaller than BBRInFlight(1).
+        </span><span class="kw">for </span>(pn, <span class="kw">_</span>) <span class="kw">in </span>(<span class="number">0</span>..<span class="number">4</span>).enumerate() {
+            <span class="kw">let </span>pkt = Sent {
+                pkt_num: pn <span class="kw">as </span>u64,
+                frames: <span class="macro">smallvec!</span>[],
+                time_sent: now,
+                time_acked: <span class="prelude-val">None</span>,
+                time_lost: <span class="prelude-val">None</span>,
+                size: mss,
+                ack_eliciting: <span class="bool-val">true</span>,
+                in_flight: <span class="bool-val">true</span>,
+                delivered: r.delivery_rate.delivered(),
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                has_data: <span class="bool-val">false</span>,
+                pmtud: <span class="bool-val">false</span>,
+            };
+
+            r.on_packet_sent(
+                pkt,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+            );
+
+            <span class="kw">let </span>rtt = Duration::from_millis(<span class="number">50</span>);
+            <span class="kw">let </span>now = now + rtt;
+
+            <span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+            acked.insert(<span class="number">0</span>..pn <span class="kw">as </span>u64 + <span class="number">1</span>);
+
+            <span class="macro">assert_eq!</span>(
+                r.on_ack_received(
+                    <span class="kw-2">&amp;</span>acked,
+                    <span class="number">25</span>,
+                    packet::Epoch::Application,
+                    HandshakeStatus::default(),
+                    now,
+                    <span class="string">""</span>,
+                    <span class="kw-2">&amp;mut </span>Vec::new(),
+                ),
+                <span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="number">0</span>)),
+            );
+        }
+
+        <span class="comment">// Now we are in ProbeBW state.
+        </span><span class="macro">assert!</span>(r.bbr_state.filled_pipe);
+        <span class="macro">assert_eq!</span>(r.bbr_state.state, BBRStateMachine::ProbeBW);
+
+        <span class="comment">// In the first ProbeBW cycle, pacing_gain should be &gt;= 1.0.
+        </span><span class="macro">assert!</span>(r.bbr_state.pacing_gain &gt;= <span class="number">1.0</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>bbr_probe_rtt() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::BBR);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span>now = Instant::now();
+        <span class="kw">let </span>mss = r.max_datagram_size;
+
+        r.on_init();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pn = <span class="number">0</span>;
+
+        <span class="comment">// At 4th roundtrip, filled_pipe=true and switch to Drain,
+        // but move to ProbeBW immediately because bytes_in_flight is
+        // smaller than BBRInFlight(1).
+        </span><span class="kw">for _ in </span><span class="number">0</span>..<span class="number">4 </span>{
+            <span class="kw">let </span>pkt = Sent {
+                pkt_num: pn,
+                frames: <span class="macro">smallvec!</span>[],
+                time_sent: now,
+                time_acked: <span class="prelude-val">None</span>,
+                time_lost: <span class="prelude-val">None</span>,
+                size: mss,
+                ack_eliciting: <span class="bool-val">true</span>,
+                in_flight: <span class="bool-val">true</span>,
+                delivered: r.delivery_rate.delivered(),
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                has_data: <span class="bool-val">false</span>,
+                pmtud: <span class="bool-val">false</span>,
+            };
+
+            r.on_packet_sent(
+                pkt,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+            );
+
+            pn += <span class="number">1</span>;
+
+            <span class="kw">let </span>rtt = Duration::from_millis(<span class="number">50</span>);
+            <span class="kw">let </span>now = now + rtt;
+
+            <span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+            acked.insert(<span class="number">0</span>..pn);
+
+            <span class="macro">assert_eq!</span>(
+                r.on_ack_received(
+                    <span class="kw-2">&amp;</span>acked,
+                    <span class="number">25</span>,
+                    packet::Epoch::Application,
+                    HandshakeStatus::default(),
+                    now,
+                    <span class="string">""</span>,
+                    <span class="kw-2">&amp;mut </span>Vec::new(),
+                ),
+                <span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="number">0</span>)),
+            );
+        }
+
+        <span class="comment">// Now we are in ProbeBW state.
+        </span><span class="macro">assert_eq!</span>(r.bbr_state.state, BBRStateMachine::ProbeBW);
+
+        <span class="comment">// After RTPROP_FILTER_LEN (10s), switch to ProbeRTT.
+        </span><span class="kw">let </span>now = now + RTPROP_FILTER_LEN;
+
+        <span class="kw">let </span>pkt = Sent {
+            pkt_num: pn,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: mss,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: r.delivery_rate.delivered(),
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            pkt,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+
+        pn += <span class="number">1</span>;
+
+        <span class="comment">// Don't update rtprop by giving larger rtt than before.
+        // If rtprop is updated, rtprop expiry check is reset.
+        </span><span class="kw">let </span>rtt = Duration::from_millis(<span class="number">100</span>);
+        <span class="kw">let </span>now = now + rtt;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+        acked.insert(<span class="number">0</span>..pn);
+
+        <span class="macro">assert_eq!</span>(
+            r.on_ack_received(
+                <span class="kw-2">&amp;</span>acked,
+                <span class="number">25</span>,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+                <span class="kw-2">&amp;mut </span>Vec::new(),
+            ),
+            <span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="number">0</span>)),
+        );
+
+        <span class="macro">assert_eq!</span>(r.bbr_state.state, BBRStateMachine::ProbeRTT);
+        <span class="macro">assert_eq!</span>(r.bbr_state.pacing_gain, <span class="number">1.0</span>);
+    }
+}
+
+<span class="kw">mod </span>init;
+<span class="kw">mod </span>pacing;
+<span class="kw">mod </span>per_ack;
+<span class="kw">mod </span>per_transmit;
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/recovery/bbr/pacing.rs.html b/src/quiche/recovery/bbr/pacing.rs.html
new file mode 100644
index 0000000..a027e8f
--- /dev/null
+++ b/src/quiche/recovery/bbr/pacing.rs.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/recovery/bbr/pacing.rs`."><title>pacing.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../../src-files.js"></script><script defer src="../../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2022, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span><span class="kw">crate</span>::recovery::Recovery;
+
+<span class="comment">// BBR Transmit Packet Pacing Functions
+//
+
+// 4.2.1. Pacing Rate
+</span><span class="kw">pub fn </span>bbr_set_pacing_rate_with_gain(r: <span class="kw-2">&amp;mut </span>Recovery, pacing_gain: f64) {
+    <span class="kw">let </span>rate = (pacing_gain * r.bbr_state.btlbw <span class="kw">as </span>f64) <span class="kw">as </span>u64;
+
+    <span class="kw">if </span>r.bbr_state.filled_pipe || rate &gt; r.bbr_state.pacing_rate {
+        r.bbr_state.pacing_rate = rate;
+    }
+}
+
+<span class="kw">pub fn </span>bbr_set_pacing_rate(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    bbr_set_pacing_rate_with_gain(r, r.bbr_state.pacing_gain);
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/recovery/bbr/per_ack.rs.html b/src/quiche/recovery/bbr/per_ack.rs.html
new file mode 100644
index 0000000..753859a
--- /dev/null
+++ b/src/quiche/recovery/bbr/per_ack.rs.html
@@ -0,0 +1,755 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/recovery/bbr/per_ack.rs`."><title>per_ack.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../../src-files.js"></script><script defer src="../../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2022, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use super</span>::<span class="kw-2">*</span>;
+<span class="kw">use </span><span class="kw">crate</span>::rand;
+<span class="kw">use </span><span class="kw">crate</span>::recovery;
+
+<span class="doccomment">/// 1.2Mbps in bytes/sec
+</span><span class="kw">const </span>PACING_RATE_1_2MBPS: u64 = <span class="number">1200 </span>* <span class="number">1000 </span>/ <span class="number">8</span>;
+
+<span class="doccomment">/// 24Mbps in bytes/sec
+</span><span class="kw">const </span>PACING_RATE_24MBPS: u64 = <span class="number">24 </span>* <span class="number">1000 </span>* <span class="number">1000 </span>/ <span class="number">8</span>;
+
+<span class="doccomment">/// The minimal cwnd value BBR tries to target, in bytes
+</span><span class="attr">#[inline]
+</span><span class="kw">fn </span>bbr_min_pipe_cwnd(r: <span class="kw-2">&amp;mut </span>Recovery) -&gt; usize {
+    BBR_MIN_PIPE_CWND_PKTS * r.max_datagram_size
+}
+
+<span class="comment">// BBR Functions when ACK is received.
+//
+</span><span class="kw">pub fn </span>bbr_update_model_and_state(
+    r: <span class="kw-2">&amp;mut </span>Recovery, packet: <span class="kw-2">&amp;</span>Acked, now: Instant,
+) {
+    bbr_update_btlbw(r, packet);
+    bbr_check_cycle_phase(r, now);
+    bbr_check_full_pipe(r);
+    bbr_check_drain(r, now);
+    bbr_update_rtprop(r, now);
+    bbr_check_probe_rtt(r, now);
+}
+
+<span class="kw">pub fn </span>bbr_update_control_parameters(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    pacing::bbr_set_pacing_rate(r);
+    bbr_set_send_quantum(r);
+
+    <span class="comment">// Set outgoing packet pacing rate
+    // It is called here because send_quantum may be updated too.
+    </span>r.set_pacing_rate(r.bbr_state.pacing_rate, now);
+
+    bbr_set_cwnd(r);
+}
+
+<span class="comment">// BBR Functions while processing ACKs.
+//
+
+// 4.1.1.5.  Updating the BBR.BtlBw Max Filter
+</span><span class="kw">fn </span>bbr_update_btlbw(r: <span class="kw-2">&amp;mut </span>Recovery, packet: <span class="kw-2">&amp;</span>Acked) {
+    bbr_update_round(r, packet);
+
+    <span class="kw">if </span>r.delivery_rate() &gt;= r.bbr_state.btlbw ||
+        !r.delivery_rate.sample_is_app_limited()
+    {
+        <span class="comment">// Since minmax filter is based on time,
+        // start_time + (round_count as seconds) is used instead.
+        </span>r.bbr_state.btlbw = r.bbr_state.btlbwfilter.running_max(
+            BTLBW_FILTER_LEN,
+            r.bbr_state.start_time + Duration::from_secs(r.bbr_state.round_count),
+            r.delivery_rate(),
+        );
+    }
+}
+
+<span class="comment">// 4.1.1.3 Tracking Time for the BBR.BtlBw Max Filter
+</span><span class="kw">fn </span>bbr_update_round(r: <span class="kw-2">&amp;mut </span>Recovery, packet: <span class="kw-2">&amp;</span>Acked) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr_state;
+
+    <span class="kw">if </span>packet.delivered &gt;= bbr.next_round_delivered {
+        bbr.next_round_delivered = r.delivery_rate.delivered();
+        bbr.round_count += <span class="number">1</span>;
+        bbr.round_start = <span class="bool-val">true</span>;
+        bbr.packet_conservation = <span class="bool-val">false</span>;
+    } <span class="kw">else </span>{
+        bbr.round_start = <span class="bool-val">false</span>;
+    }
+}
+
+<span class="comment">// 4.1.2.3. Updating the BBR.RTprop Min Filter
+</span><span class="kw">fn </span>bbr_update_rtprop(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr_state;
+    <span class="kw">let </span>rs_rtt = r.delivery_rate.sample_rtt();
+
+    bbr.rtprop_expired = now &gt; bbr.rtprop_stamp + RTPROP_FILTER_LEN;
+
+    <span class="kw">if </span>!rs_rtt.is_zero() &amp;&amp; (rs_rtt &lt;= bbr.rtprop || bbr.rtprop_expired) {
+        bbr.rtprop = rs_rtt;
+        bbr.rtprop_stamp = now;
+    }
+}
+
+<span class="comment">// 4.2.2 Send Quantum
+</span><span class="kw">fn </span>bbr_set_send_quantum(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>rate = r.bbr_state.pacing_rate;
+
+    r.send_quantum = <span class="kw">match </span>rate {
+        rate <span class="kw">if </span>rate &lt; PACING_RATE_1_2MBPS =&gt; r.max_datagram_size,
+
+        rate <span class="kw">if </span>rate &lt; PACING_RATE_24MBPS =&gt; <span class="number">2 </span>* r.max_datagram_size,
+
+        <span class="kw">_ </span>=&gt; cmp::min((rate / <span class="number">1000_u64</span>) <span class="kw">as </span>usize, <span class="number">64 </span>* <span class="number">1024</span>),
+    }
+}
+
+<span class="comment">// 4.2.3.2 Target cwnd
+</span><span class="kw">fn </span>bbr_inflight(r: <span class="kw-2">&amp;mut </span>Recovery, gain: f64) -&gt; usize {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr_state;
+
+    <span class="kw">if </span>bbr.rtprop == Duration::MAX {
+        <span class="kw">return </span>r.max_datagram_size * r.initial_congestion_window_packets;
+    }
+
+    <span class="kw">let </span>quanta = <span class="number">3 </span>* r.send_quantum;
+    <span class="kw">let </span>estimated_bdp = bbr.btlbw <span class="kw">as </span>f64 * bbr.rtprop.as_secs_f64();
+
+    (gain * estimated_bdp) <span class="kw">as </span>usize + quanta
+}
+
+<span class="kw">fn </span>bbr_update_target_cwnd(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    r.bbr_state.target_cwnd = bbr_inflight(r, r.bbr_state.cwnd_gain);
+}
+
+<span class="comment">// 4.2.3.4 Modulating cwnd in Loss Recovery
+</span><span class="kw">pub fn </span>bbr_save_cwnd(r: <span class="kw-2">&amp;mut </span>Recovery) -&gt; usize {
+    <span class="kw">if </span>!r.bbr_state.in_recovery &amp;&amp; r.bbr_state.state != BBRStateMachine::ProbeRTT
+    {
+        r.congestion_window
+    } <span class="kw">else </span>{
+        r.congestion_window.max(r.bbr_state.prior_cwnd)
+    }
+}
+
+<span class="kw">pub fn </span>bbr_restore_cwnd(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    r.congestion_window = r.congestion_window.max(r.bbr_state.prior_cwnd);
+}
+
+<span class="kw">fn </span>bbr_modulate_cwnd_for_recovery(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>acked_bytes = r.bbr_state.newly_acked_bytes;
+    <span class="kw">let </span>lost_bytes = r.bbr_state.newly_lost_bytes;
+
+    <span class="kw">if </span>lost_bytes &gt; <span class="number">0 </span>{
+        <span class="comment">// QUIC mininum cwnd is 2 x MSS.
+        </span>r.congestion_window = r
+            .congestion_window
+            .saturating_sub(lost_bytes)
+            .max(r.max_datagram_size * recovery::MINIMUM_WINDOW_PACKETS);
+    }
+
+    <span class="kw">if </span>r.bbr_state.packet_conservation {
+        r.congestion_window =
+            r.congestion_window.max(r.bytes_in_flight + acked_bytes);
+    }
+}
+
+<span class="comment">// 4.2.3.5 Modulating cwnd in ProbeRTT
+</span><span class="kw">fn </span>bbr_modulate_cwnd_for_probe_rtt(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">if </span>r.bbr_state.state == BBRStateMachine::ProbeRTT {
+        r.congestion_window = r.congestion_window.min(bbr_min_pipe_cwnd(r))
+    }
+}
+
+<span class="comment">// 4.2.3.6 Core cwnd Adjustment Mechanism
+</span><span class="kw">fn </span>bbr_set_cwnd(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>acked_bytes = r.bbr_state.newly_acked_bytes;
+
+    bbr_update_target_cwnd(r);
+    bbr_modulate_cwnd_for_recovery(r);
+
+    <span class="kw">if </span>!r.bbr_state.packet_conservation {
+        <span class="kw">if </span>r.bbr_state.filled_pipe {
+            r.congestion_window = cmp::min(
+                r.congestion_window + acked_bytes,
+                r.bbr_state.target_cwnd,
+            )
+        } <span class="kw">else if </span>r.congestion_window &lt; r.bbr_state.target_cwnd ||
+            r.delivery_rate.delivered() &lt;
+                r.max_datagram_size * r.initial_congestion_window_packets
+        {
+            r.congestion_window += acked_bytes;
+        }
+
+        r.congestion_window = r.congestion_window.max(bbr_min_pipe_cwnd(r))
+    }
+
+    bbr_modulate_cwnd_for_probe_rtt(r);
+}
+
+<span class="comment">// 4.3.2.2.  Estimating When Startup has Filled the Pipe
+</span><span class="kw">fn </span>bbr_check_full_pipe(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="comment">// No need to check for a full pipe now.
+    </span><span class="kw">if </span>r.bbr_state.filled_pipe ||
+        !r.bbr_state.round_start ||
+        r.delivery_rate.sample_is_app_limited()
+    {
+        <span class="kw">return</span>;
+    }
+
+    <span class="comment">// BBR.BtlBw still growing?
+    </span><span class="kw">if </span>r.bbr_state.btlbw &gt;=
+        (r.bbr_state.full_bw <span class="kw">as </span>f64 * BTLBW_GROWTH_TARGET) <span class="kw">as </span>u64
+    {
+        <span class="comment">// record new baseline level
+        </span>r.bbr_state.full_bw = r.bbr_state.btlbw;
+        r.bbr_state.full_bw_count = <span class="number">0</span>;
+        <span class="kw">return</span>;
+    }
+
+    <span class="comment">// another round w/o much growth
+    </span>r.bbr_state.full_bw_count += <span class="number">1</span>;
+
+    <span class="kw">if </span>r.bbr_state.full_bw_count &gt;= <span class="number">3 </span>{
+        r.bbr_state.filled_pipe = <span class="bool-val">true</span>;
+    }
+}
+
+<span class="comment">// 4.3.3.  Drain
+</span><span class="kw">fn </span>bbr_enter_drain(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr_state;
+
+    bbr.state = BBRStateMachine::Drain;
+
+    <span class="comment">// pace slowly
+    </span>bbr.pacing_gain = <span class="number">1.0 </span>/ BBR_HIGH_GAIN;
+
+    <span class="comment">// maintain cwnd
+    </span>bbr.cwnd_gain = BBR_HIGH_GAIN;
+}
+
+<span class="kw">fn </span>bbr_check_drain(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    <span class="kw">if </span>r.bbr_state.state == BBRStateMachine::Startup &amp;&amp; r.bbr_state.filled_pipe {
+        bbr_enter_drain(r);
+    }
+
+    <span class="kw">if </span>r.bbr_state.state == BBRStateMachine::Drain &amp;&amp;
+        r.bytes_in_flight &lt;= bbr_inflight(r, <span class="number">1.0</span>)
+    {
+        <span class="comment">// we estimate queue is drained
+        </span>bbr_enter_probe_bw(r, now);
+    }
+}
+
+<span class="comment">// 4.3.4.3.  Gain Cycling Algorithm
+</span><span class="kw">fn </span>bbr_enter_probe_bw(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr_state;
+
+    bbr.state = BBRStateMachine::ProbeBW;
+    bbr.pacing_gain = <span class="number">1.0</span>;
+    bbr.cwnd_gain = <span class="number">2.0</span>;
+
+    <span class="comment">// cycle_index will be one of (1, 2, 3, 4, 5, 6, 7). Since
+    // bbr_advance_cycle_phase() is called right next and it will
+    // increase cycle_index by 1, the actual cycle_index in the
+    // beginning of ProbeBW will be one of (2, 3, 4, 5, 6, 7, 0)
+    // to avoid index 1 (pacing_gain=3/4). See 4.3.4.2 for details.
+    </span>bbr.cycle_index = BBR_GAIN_CYCLE_LEN -
+        <span class="number">1 </span>-
+        (rand::rand_u64_uniform(BBR_GAIN_CYCLE_LEN <span class="kw">as </span>u64 - <span class="number">1</span>) <span class="kw">as </span>usize);
+
+    bbr_advance_cycle_phase(r, now);
+}
+
+<span class="kw">fn </span>bbr_check_cycle_phase(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr_state;
+
+    <span class="kw">if </span>bbr.state == BBRStateMachine::ProbeBW &amp;&amp; bbr_is_next_cycle_phase(r, now) {
+        bbr_advance_cycle_phase(r, now);
+    }
+}
+
+<span class="kw">fn </span>bbr_advance_cycle_phase(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr_state;
+
+    bbr.cycle_stamp = now;
+    bbr.cycle_index = (bbr.cycle_index + <span class="number">1</span>) % BBR_GAIN_CYCLE_LEN;
+    bbr.pacing_gain = PACING_GAIN_CYCLE[bbr.cycle_index];
+}
+
+<span class="kw">fn </span>bbr_is_next_cycle_phase(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) -&gt; bool {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr_state;
+    <span class="kw">let </span>lost_bytes = bbr.newly_lost_bytes;
+    <span class="kw">let </span>pacing_gain = bbr.pacing_gain;
+    <span class="kw">let </span>prior_in_flight = bbr.prior_bytes_in_flight;
+
+    <span class="kw">let </span>is_full_length = (now - bbr.cycle_stamp) &gt; bbr.rtprop;
+
+    <span class="comment">// pacing_gain == 1.0
+    </span><span class="kw">if </span>(pacing_gain - <span class="number">1.0</span>).abs() &lt; f64::EPSILON {
+        <span class="kw">return </span>is_full_length;
+    }
+
+    <span class="kw">if </span>pacing_gain &gt; <span class="number">1.0 </span>{
+        <span class="kw">return </span>is_full_length &amp;&amp;
+            (lost_bytes &gt; <span class="number">0 </span>||
+                prior_in_flight &gt;= bbr_inflight(r, pacing_gain));
+    }
+
+    is_full_length || prior_in_flight &lt;= bbr_inflight(r, <span class="number">1.0</span>)
+}
+
+<span class="comment">// 4.3.5.  ProbeRTT
+</span><span class="kw">fn </span>bbr_check_probe_rtt(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    <span class="kw">if </span>r.bbr_state.state != BBRStateMachine::ProbeRTT &amp;&amp;
+        r.bbr_state.rtprop_expired &amp;&amp;
+        !r.bbr_state.idle_restart
+    {
+        bbr_enter_probe_rtt(r);
+
+        r.bbr_state.prior_cwnd = bbr_save_cwnd(r);
+        r.bbr_state.probe_rtt_done_stamp = <span class="prelude-val">None</span>;
+    }
+
+    <span class="kw">if </span>r.bbr_state.state == BBRStateMachine::ProbeRTT {
+        bbr_handle_probe_rtt(r, now);
+    }
+
+    r.bbr_state.idle_restart = <span class="bool-val">false</span>;
+}
+
+<span class="kw">fn </span>bbr_enter_probe_rtt(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr_state;
+
+    bbr.state = BBRStateMachine::ProbeRTT;
+    bbr.pacing_gain = <span class="number">1.0</span>;
+    bbr.cwnd_gain = <span class="number">1.0</span>;
+}
+
+<span class="kw">fn </span>bbr_handle_probe_rtt(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    <span class="comment">// Ignore low rate samples during ProbeRTT.
+    </span>r.delivery_rate.update_app_limited(<span class="bool-val">true</span>);
+
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(probe_rtt_done_stamp) = r.bbr_state.probe_rtt_done_stamp {
+        <span class="kw">if </span>r.bbr_state.round_start {
+            r.bbr_state.probe_rtt_round_done = <span class="bool-val">true</span>;
+        }
+
+        <span class="kw">if </span>r.bbr_state.probe_rtt_round_done &amp;&amp; now &gt; probe_rtt_done_stamp {
+            r.bbr_state.rtprop_stamp = now;
+
+            bbr_restore_cwnd(r);
+            bbr_exit_probe_rtt(r, now);
+        }
+    } <span class="kw">else if </span>r.bytes_in_flight &lt;= bbr_min_pipe_cwnd(r) {
+        r.bbr_state.probe_rtt_done_stamp = <span class="prelude-val">Some</span>(now + PROBE_RTT_DURATION);
+        r.bbr_state.probe_rtt_round_done = <span class="bool-val">false</span>;
+        r.bbr_state.next_round_delivered = r.delivery_rate.delivered();
+    }
+}
+
+<span class="kw">fn </span>bbr_exit_probe_rtt(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    <span class="kw">if </span>r.bbr_state.filled_pipe {
+        bbr_enter_probe_bw(r, now);
+    } <span class="kw">else </span>{
+        init::bbr_enter_startup(r);
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/recovery/bbr/per_transmit.rs.html b/src/quiche/recovery/bbr/per_transmit.rs.html
new file mode 100644
index 0000000..6257cbd
--- /dev/null
+++ b/src/quiche/recovery/bbr/per_transmit.rs.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/recovery/bbr/per_transmit.rs`."><title>per_transmit.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../../src-files.js"></script><script defer src="../../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2022, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+<span class="comment">// BBR Functions when trasmitting packets.
+//
+</span><span class="kw">pub fn </span>bbr_on_transmit(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    bbr_handle_restart_from_idle(r);
+}
+
+<span class="comment">// 4.3.4.4.  Restarting From Idle
+</span><span class="kw">fn </span>bbr_handle_restart_from_idle(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">if </span>r.bytes_in_flight == <span class="number">0 </span>&amp;&amp; r.delivery_rate.app_limited() {
+        r.bbr_state.idle_restart = <span class="bool-val">true</span>;
+
+        <span class="kw">if </span>r.bbr_state.state == BBRStateMachine::ProbeBW {
+            pacing::bbr_set_pacing_rate_with_gain(r, <span class="number">1.0</span>);
+        }
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/recovery/bbr2/init.rs.html b/src/quiche/recovery/bbr2/init.rs.html
new file mode 100644
index 0000000..1092321
--- /dev/null
+++ b/src/quiche/recovery/bbr2/init.rs.html
@@ -0,0 +1,175 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/recovery/bbr2/init.rs`."><title>init.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../../src-files.js"></script><script defer src="../../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2022, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+<span class="comment">// BBR2 Functions at Initialization.
+//
+
+// 4.2.1.  Initialization
+</span><span class="kw">pub fn </span>bbr2_init(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>rtt = r.rtt();
+    <span class="kw">let </span>now = Instant::now();
+
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+    bbr.min_rtt = rtt;
+    bbr.min_rtt_stamp = now;
+    bbr.probe_rtt_done_stamp = <span class="prelude-val">None</span>;
+    bbr.probe_rtt_round_done = <span class="bool-val">false</span>;
+    bbr.prior_cwnd = <span class="number">0</span>;
+    bbr.idle_restart = <span class="bool-val">false</span>;
+    bbr.extra_acked_interval_start = now;
+    bbr.extra_acked_delivered = <span class="number">0</span>;
+    bbr.bw_lo = u64::MAX;
+    bbr.bw_hi = u64::MAX;
+    bbr.inflight_lo = usize::MAX;
+    bbr.inflight_hi = usize::MAX;
+    bbr.probe_up_cnt = usize::MAX;
+
+    r.send_quantum = r.max_datagram_size;
+
+    per_loss::bbr2_reset_congestion_signals(r);
+    per_loss::bbr2_reset_lower_bounds(r);
+    bbr2_init_round_counting(r);
+    bbr2_init_full_pipe(r);
+    pacing::bbr2_init_pacing_rate(r);
+    bbr2_enter_startup(r);
+}
+
+<span class="comment">// 4.5.1.  BBR.round_count: Tracking Packet-Timed Round Trips
+</span><span class="kw">fn </span>bbr2_init_round_counting(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    bbr.next_round_delivered = <span class="number">0</span>;
+    bbr.round_start = <span class="bool-val">false</span>;
+    bbr.round_count = <span class="number">0</span>;
+}
+
+<span class="comment">// 4.3.1.1.  Startup Dynamics
+</span><span class="kw">pub fn </span>bbr2_enter_startup(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    bbr.state = BBR2StateMachine::Startup;
+    bbr.pacing_gain = STARTUP_PACING_GAIN;
+    bbr.cwnd_gain = STARTUP_CWND_GAIN;
+}
+
+<span class="comment">// 4.3.1.2.  Exiting Startup Based on Bandwidth Plateau
+</span><span class="kw">fn </span>bbr2_init_full_pipe(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    bbr.filled_pipe = <span class="bool-val">false</span>;
+    bbr.full_bw = <span class="number">0</span>;
+    bbr.full_bw_count = <span class="number">0</span>;
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/recovery/bbr2/mod.rs.html b/src/quiche/recovery/bbr2/mod.rs.html
new file mode 100644
index 0000000..138438d
--- /dev/null
+++ b/src/quiche/recovery/bbr2/mod.rs.html
@@ -0,0 +1,2219 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/recovery/bbr2/mod.rs`."><title>mod.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../../src-files.js"></script><script defer src="../../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2022, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="doccomment">//! BBR v2 Congestion Control
+//!
+//! This implementation is based on the following draft:
+//! &lt;https://tools.ietf.org/html/draft-cardwell-iccrg-bbr-congestion-control-02&gt;
+
+</span><span class="kw">use </span><span class="kw">crate</span>::minmax::Minmax;
+<span class="kw">use </span><span class="kw">crate</span>::recovery::<span class="kw-2">*</span>;
+
+<span class="kw">use </span>std::time::Duration;
+<span class="kw">use </span>std::time::Instant;
+
+<span class="kw">pub static </span>BBR2: CongestionControlOps = CongestionControlOps {
+    on_init,
+    reset,
+    on_packet_sent,
+    on_packets_acked,
+    congestion_event,
+    collapse_cwnd,
+    checkpoint,
+    rollback,
+    has_custom_pacing,
+    debug_fmt,
+};
+
+<span class="doccomment">/// The static discount factor of 1% used to scale BBR.bw to produce
+/// BBR.pacing_rate.
+</span><span class="kw">const </span>PACING_MARGIN_PERCENT: f64 = <span class="number">0.01</span>;
+
+<span class="doccomment">/// A constant specifying the minimum gain value
+/// for calculating the pacing rate that will allow the sending rate to
+/// double each round (4*ln(2) ~=2.77 ) BBRStartupPacingGain; used in
+/// Startup mode for BBR.pacing_gain.
+</span><span class="kw">const </span>STARTUP_PACING_GAIN: f64 = <span class="number">2.77</span>;
+
+<span class="doccomment">/// A constant specifying the pacing gain value for Probe Down mode.
+</span><span class="kw">const </span>PROBE_DOWN_PACING_GAIN: f64 = <span class="number">3_f64 </span>/ <span class="number">4_f64</span>;
+
+<span class="doccomment">/// A constant specifying the pacing gain value for Probe Up mode.
+</span><span class="kw">const </span>PROBE_UP_PACING_GAIN: f64 = <span class="number">5_f64 </span>/ <span class="number">4_f64</span>;
+
+<span class="doccomment">/// A constant specifying the pacing gain value for Probe Refill, Probe RTT,
+/// Cruise mode.
+</span><span class="kw">const </span>PACING_GAIN: f64 = <span class="number">1.0</span>;
+
+<span class="doccomment">/// A constant specifying the minimum gain value for the cwnd in the Startup
+/// phase
+</span><span class="kw">const </span>STARTUP_CWND_GAIN: f64 = <span class="number">2.77</span>;
+
+<span class="doccomment">/// A constant specifying the minimum gain value for
+/// calculating the cwnd that will allow the sending rate to double each
+/// round (2.0); used in Probe and Drain mode for BBR.cwnd_gain.
+</span><span class="kw">const </span>CWND_GAIN: f64 = <span class="number">2.0</span>;
+
+<span class="doccomment">/// The maximum tolerated per-round-trip packet loss rate
+/// when probing for bandwidth (the default is 2%).
+</span><span class="kw">const </span>LOSS_THRESH: f64 = <span class="number">0.02</span>;
+
+<span class="doccomment">/// Exit startup if the number of loss marking events is &gt;=FULL_LOSS_COUNT
+</span><span class="kw">const </span>FULL_LOSS_COUNT: u32 = <span class="number">8</span>;
+
+<span class="doccomment">/// The default multiplicative decrease to make upon each round
+/// trip during which the connection detects packet loss (the value is
+/// 0.7).
+</span><span class="kw">const </span>BETA: f64 = <span class="number">0.7</span>;
+
+<span class="doccomment">/// The multiplicative factor to apply to BBR.inflight_hi
+/// when attempting to leave free headroom in the path (e.g. free space
+/// in the bottleneck buffer or free time slots in the bottleneck link)
+/// that can be used by cross traffic (the value is 0.85).
+</span><span class="kw">const </span>HEADROOM: f64 = <span class="number">0.85</span>;
+
+<span class="doccomment">/// The minimal cwnd value BBR targets, to allow
+/// pipelining with TCP endpoints that follow an "ACK every other packet"
+/// delayed-ACK policy: 4 * SMSS.
+</span><span class="kw">const </span>MIN_PIPE_CWND_PKTS: usize = <span class="number">4</span>;
+
+<span class="comment">// To do: Tune window for expiry of Max BW measurement
+// The filter window length for BBR.MaxBwFilter = 2 (representing up to 2
+// ProbeBW cycles, the current cycle and the previous full cycle).
+// const MAX_BW_FILTER_LEN: Duration = Duration::from_secs(2);
+
+// To do: Tune window for expiry of ACK aggregation measurement
+// The window length of the BBR.ExtraACKedFilter max filter window: 10 (in
+// units of packet-timed round trips).
+// const EXTRA_ACKED_FILTER_LEN: Duration = Duration::from_secs(10);
+
+</span><span class="doccomment">/// A constant specifying the length of the BBR.min_rtt min filter window,
+/// MinRTTFilterLen is 10 secs.
+</span><span class="kw">const </span>MIN_RTT_FILTER_LEN: u32 = <span class="number">1</span>;
+
+<span class="doccomment">/// A constant specifying the gain value for calculating the cwnd during
+/// ProbeRTT: 0.5 (meaning that ProbeRTT attempts to reduce in-flight data to
+/// 50% of the estimated BDP).
+</span><span class="kw">const </span>PROBE_RTT_CWND_GAIN: f64 = <span class="number">0.5</span>;
+
+<span class="doccomment">/// A constant specifying the minimum duration for which ProbeRTT state holds
+/// inflight to BBRMinPipeCwnd or fewer packets: 200 ms.
+</span><span class="kw">const </span>PROBE_RTT_DURATION: Duration = Duration::from_millis(<span class="number">200</span>);
+
+<span class="doccomment">/// ProbeRTTInterval: A constant specifying the minimum time interval between
+/// ProbeRTT states. To do: investigate probe duration. Set arbitrarily high for
+/// now.
+</span><span class="kw">const </span>PROBE_RTT_INTERVAL: Duration = Duration::from_secs(<span class="number">86400</span>);
+
+<span class="doccomment">/// Threshold for checking a full bandwidth growth during Startup.
+</span><span class="kw">const </span>MAX_BW_GROWTH_THRESHOLD: f64 = <span class="number">1.25</span>;
+
+<span class="doccomment">/// Threshold for determining maximum bandwidth of network during Startup.
+</span><span class="kw">const </span>MAX_BW_COUNT: usize = <span class="number">3</span>;
+
+<span class="doccomment">/// BBR2 Internal State Machine.
+</span><span class="attr">#[derive(Debug, PartialEq, Eq, Copy, Clone)]
+</span><span class="kw">enum </span>BBR2StateMachine {
+    Startup,
+    Drain,
+    ProbeBWDOWN,
+    ProbeBWCRUISE,
+    ProbeBWREFILL,
+    ProbeBWUP,
+    ProbeRTT,
+}
+
+<span class="doccomment">/// BBR2 Ack Phases.
+</span><span class="attr">#[derive(Debug, PartialEq, Eq)]
+</span><span class="kw">enum </span>BBR2AckPhase {
+    Init,
+    ProbeFeedback,
+    ProbeStarting,
+    ProbeStopping,
+    Refilling,
+}
+
+<span class="doccomment">/// BBR2 Specific State Variables.
+</span><span class="kw">pub struct </span>State {
+    <span class="comment">// 2.3.  Per-ACK Rate Sample State
+    // It's stored in rate sample but we keep in BBR state here.
+
+    // The volume of data that was estimated to be in
+    // flight at the time of the transmission of the packet that has just
+    // been ACKed.
+    </span>tx_in_flight: usize,
+
+    <span class="comment">// The volume of data that was declared lost between the
+    // transmission and acknowledgement of the packet that has just been
+    // ACKed.
+    </span>lost: usize,
+
+    <span class="comment">// The volume of data cumulatively or selectively acknowledged upon the ACK
+    // that was just received.  (This quantity is referred to as "DeliveredData"
+    // in [RFC6937].)
+    </span>newly_acked_bytes: usize,
+
+    <span class="comment">// The volume of data newly marked lost upon the ACK that was just received.
+    </span>newly_lost_bytes: usize,
+
+    <span class="comment">// 2.4.  Output Control Parameters
+    // The current pacing rate for a BBR2 flow, which controls inter-packet
+    // spacing.
+    </span>pacing_rate: u64,
+
+    <span class="comment">// Save initial pacing rate so we can update when more reliable bytes
+    // delivered and RTT samples are available
+    </span>init_pacing_rate: u64,
+
+    <span class="comment">// 2.5.  Pacing State and Parameters
+    // The dynamic gain factor used to scale BBR.bw to
+    // produce BBR.pacing_rate.
+    </span>pacing_gain: f64,
+
+    <span class="comment">// 2.6.  cwnd State and Parameters
+    // The dynamic gain factor used to scale the estimated BDP to produce a
+    // congestion window (cwnd).
+    </span>cwnd_gain: f64,
+
+    <span class="comment">// A boolean indicating whether BBR is currently using packet conservation
+    // dynamics to bound cwnd.
+    </span>packet_conservation: bool,
+
+    <span class="comment">// 2.7.  General Algorithm State
+    // The current state of a BBR2 flow in the BBR2 state machine.
+    </span>state: BBR2StateMachine,
+
+    <span class="comment">// Count of packet-timed round trips elapsed so far.
+    </span>round_count: u64,
+
+    <span class="comment">// A boolean that BBR2 sets to true once per packet-timed round trip,
+    // on ACKs that advance BBR2.round_count.
+    </span>round_start: bool,
+
+    <span class="comment">// packet.delivered value denoting the end of a packet-timed round trip.
+    </span>next_round_delivered: usize,
+
+    <span class="comment">// A boolean that is true if and only if a connection is restarting after
+    // being idle.
+    </span>idle_restart: bool,
+
+    <span class="comment">// 2.9.1.  Data Rate Network Path Model Parameters
+    // The windowed maximum recent bandwidth sample - obtained using the BBR
+    // delivery rate sampling algorithm
+    // [draft-cheng-iccrg-delivery-rate-estimation] - measured during the current
+    // or previous bandwidth probing cycle (or during Startup, if the flow is
+    // still in that state).  (Part of the long-term model.)
+    </span>max_bw: u64,
+
+    <span class="comment">// The long-term maximum sending bandwidth that the algorithm estimates will
+    // produce acceptable queue pressure, based on signals in the current or
+    // previous bandwidth probing cycle, as measured by loss.  (Part of the
+    // long-term model.)
+    </span>bw_hi: u64,
+
+    <span class="comment">// The short-term maximum sending bandwidth that the algorithm estimates is
+    // safe for matching the current network path delivery rate, based on any
+    // loss signals in the current bandwidth probing cycle.  This is generally
+    // lower than max_bw or bw_hi (thus the name).  (Part of the short-term
+    // model.)
+    </span>bw_lo: u64,
+
+    <span class="comment">// The maximum sending bandwidth that the algorithm estimates is appropriate
+    // for matching the current network path delivery rate, given all available
+    // signals in the model, at any time scale.  It is the min() of max_bw,
+    // bw_hi, and bw_lo.
+    </span>bw: u64,
+
+    <span class="comment">// 2.9.2.  Data Volume Network Path Model Parameters
+    // The windowed minimum round-trip time sample measured over the last
+    // MinRTTFilterLen = 10 seconds.  This attempts to estimate the two-way
+    // propagation delay of the network path when all connections sharing a
+    // bottleneck are using BBR, but also allows BBR to estimate the value
+    // required for a bdp estimate that allows full throughput if there are
+    // legacy loss-based Reno or CUBIC flows sharing the bottleneck.
+    </span>min_rtt: Duration,
+
+    <span class="comment">// The estimate of the network path's BDP (Bandwidth-Delay Product), computed
+    // as: BBR.bdp = BBR.bw * BBR.min_rtt.
+    </span>bdp: usize,
+
+    <span class="comment">// A volume of data that is the estimate of the recent degree of aggregation
+    // in the network path.
+    </span>extra_acked: usize,
+
+    <span class="comment">// The estimate of the minimum volume of data necessary to achieve full
+    // throughput when using sender (TSO/GSO) and receiver (LRO, GRO) host
+    // offload mechanisms.
+    </span>offload_budget: usize,
+
+    <span class="comment">// The estimate of the volume of in-flight data required to fully utilize the
+    // bottleneck bandwidth available to the flow, based on the BDP estimate
+    // (BBR.bdp), the aggregation estimate (BBR.extra_acked), the offload budget
+    // (BBR.offload_budget), and BBRMinPipeCwnd.
+    </span>max_inflight: usize,
+
+    <span class="comment">// Analogous to BBR.bw_hi, the long-term maximum volume of in-flight data
+    // that the algorithm estimates will produce acceptable queue pressure, based
+    // on signals in the current or previous bandwidth probing cycle, as measured
+    // by loss.  That is, if a flow is probing for bandwidth, and observes that
+    // sending a particular volume of in-flight data causes a loss rate higher
+    // than the loss rate objective, it sets inflight_hi to that volume of data.
+    // (Part of the long-term model.)
+    </span>inflight_hi: usize,
+
+    <span class="comment">// Analogous to BBR.bw_lo, the short-term maximum volume of in-flight data
+    // that the algorithm estimates is safe for matching the current network path
+    // delivery process, based on any loss signals in the current bandwidth
+    // probing cycle.  This is generally lower than max_inflight or inflight_hi
+    // (thus the name).  (Part of the short-term model.)
+    </span>inflight_lo: usize,
+
+    <span class="comment">// 2.10.  State for Responding to Congestion
+    // a 1-round-trip max of delivered bandwidth (rs.delivery_rate).
+    </span>bw_latest: u64,
+
+    <span class="comment">// a 1-round-trip max of delivered volume of data (rs.delivered).
+    </span>inflight_latest: usize,
+
+    <span class="comment">// 2.11.  Estimating BBR.max_bw
+    // The filter for tracking the maximum recent rs.delivery_rate sample, for
+    // estimating BBR.max_bw.
+    </span>max_bw_filter: Minmax&lt;u64&gt;,
+
+    <span class="comment">// The virtual time used by the BBR.max_bw filter window.  Note that
+    // BBR.cycle_count only needs to be tracked with a single bit, since the
+    // BBR.MaxBwFilter only needs to track samples from two time slots: the
+    // previous ProbeBW cycle and the current ProbeBW cycle.
+    </span>cycle_count: u64,
+
+    <span class="comment">// 2.12.  Estimating BBR.extra_acked
+    // the start of the time interval for estimating the excess amount of data
+    // acknowledged due to aggregation effects.
+    </span>extra_acked_interval_start: Instant,
+
+    <span class="comment">// the volume of data marked as delivered since
+    // BBR.extra_acked_interval_start.
+    </span>extra_acked_delivered: usize,
+
+    <span class="comment">// BBR.ExtraACKedFilter: the max filter tracking the recent maximum degree of
+    // aggregation in the path.
+    </span>extra_acked_filter: Minmax&lt;usize&gt;,
+
+    <span class="comment">// 2.13.  Startup Parameters and State
+    // A boolean that records whether BBR estimates that it has ever fully
+    // utilized its available bandwidth ("filled the pipe").
+    </span>filled_pipe: bool,
+
+    <span class="comment">// A recent baseline BBR.max_bw to estimate if BBR has "filled the pipe" in
+    // Startup.
+    </span>full_bw: u64,
+
+    <span class="comment">// The number of non-app-limited round trips without large increases in
+    // BBR.full_bw.
+    </span>full_bw_count: usize,
+
+    <span class="comment">// 2.14.1.  Parameters for Estimating BBR.min_rtt
+    // The wall clock time at which the current BBR.min_rtt sample was obtained.
+    </span>min_rtt_stamp: Instant,
+
+    <span class="comment">// 2.14.2.  Parameters for Scheduling ProbeRTT
+    // The minimum RTT sample recorded in the last ProbeRTTInterval.
+    </span>probe_rtt_min_delay: Duration,
+
+    <span class="comment">// The wall clock time at which the current BBR.probe_rtt_min_delay sample
+    // was obtained.
+    </span>probe_rtt_min_stamp: Instant,
+
+    <span class="comment">// A boolean recording whether the BBR.probe_rtt_min_delay has expired and is
+    // due for a refresh with an application idle period or a transition into
+    // ProbeRTT state.
+    </span>probe_rtt_expired: bool,
+
+    <span class="comment">// Others
+    // A state indicating we are in the recovery.
+    </span>in_recovery: bool,
+
+    <span class="comment">// Start time of the connection.
+    </span>start_time: Instant,
+
+    <span class="comment">// Saved cwnd before loss recovery.
+    </span>prior_cwnd: usize,
+
+    <span class="comment">// Whether we have a bandwidth probe samples.
+    </span>bw_probe_samples: bool,
+
+    <span class="comment">// Others
+    </span>probe_up_cnt: usize,
+
+    prior_bytes_in_flight: usize,
+
+    probe_rtt_done_stamp: <span class="prelude-ty">Option</span>&lt;Instant&gt;,
+
+    probe_rtt_round_done: bool,
+
+    bw_probe_wait: Duration,
+
+    rounds_since_probe: usize,
+
+    cycle_stamp: Instant,
+
+    ack_phase: BBR2AckPhase,
+
+    bw_probe_up_rounds: usize,
+
+    bw_probe_up_acks: usize,
+
+    loss_round_start: bool,
+
+    loss_round_delivered: usize,
+
+    loss_in_round: bool,
+
+    loss_events_in_round: usize,
+}
+
+<span class="kw">impl </span>State {
+    <span class="kw">pub fn </span>new() -&gt; <span class="self">Self </span>{
+        <span class="kw">let </span>now = Instant::now();
+
+        State {
+            tx_in_flight: <span class="number">0</span>,
+
+            lost: <span class="number">0</span>,
+
+            newly_acked_bytes: <span class="number">0</span>,
+
+            newly_lost_bytes: <span class="number">0</span>,
+
+            pacing_rate: <span class="number">0</span>,
+
+            init_pacing_rate: <span class="number">0</span>,
+
+            pacing_gain: <span class="number">0.0</span>,
+
+            cwnd_gain: <span class="number">0.0</span>,
+
+            packet_conservation: <span class="bool-val">false</span>,
+
+            state: BBR2StateMachine::Startup,
+
+            round_count: <span class="number">0</span>,
+
+            round_start: <span class="bool-val">false</span>,
+
+            next_round_delivered: <span class="number">0</span>,
+
+            idle_restart: <span class="bool-val">false</span>,
+
+            max_bw: <span class="number">0</span>,
+
+            bw_hi: u64::MAX,
+
+            bw_lo: u64::MAX,
+
+            bw: <span class="number">0</span>,
+
+            min_rtt: Duration::MAX,
+
+            bdp: <span class="number">0</span>,
+
+            extra_acked: <span class="number">0</span>,
+
+            offload_budget: <span class="number">0</span>,
+
+            max_inflight: <span class="number">0</span>,
+
+            inflight_hi: usize::MAX,
+
+            inflight_lo: usize::MAX,
+
+            bw_latest: <span class="number">0</span>,
+
+            inflight_latest: <span class="number">0</span>,
+
+            max_bw_filter: Minmax::new(<span class="number">0</span>),
+
+            cycle_count: <span class="number">0</span>,
+
+            extra_acked_interval_start: now,
+
+            extra_acked_delivered: <span class="number">0</span>,
+
+            extra_acked_filter: Minmax::new(<span class="number">0</span>),
+
+            filled_pipe: <span class="bool-val">false</span>,
+
+            full_bw: <span class="number">0</span>,
+
+            full_bw_count: <span class="number">0</span>,
+
+            min_rtt_stamp: now,
+
+            probe_rtt_min_delay: Duration::MAX,
+
+            probe_rtt_min_stamp: now,
+
+            probe_rtt_expired: <span class="bool-val">false</span>,
+
+            in_recovery: <span class="bool-val">false</span>,
+
+            start_time: now,
+
+            prior_cwnd: <span class="number">0</span>,
+
+            bw_probe_samples: <span class="bool-val">false</span>,
+
+            probe_up_cnt: <span class="number">0</span>,
+
+            prior_bytes_in_flight: <span class="number">0</span>,
+
+            probe_rtt_done_stamp: <span class="prelude-val">None</span>,
+
+            probe_rtt_round_done: <span class="bool-val">false</span>,
+
+            bw_probe_wait: Duration::ZERO,
+
+            rounds_since_probe: <span class="number">0</span>,
+
+            cycle_stamp: now,
+
+            ack_phase: BBR2AckPhase::Init,
+
+            bw_probe_up_rounds: <span class="number">0</span>,
+
+            bw_probe_up_acks: <span class="number">0</span>,
+
+            loss_round_start: <span class="bool-val">false</span>,
+
+            loss_round_delivered: <span class="number">0</span>,
+
+            loss_in_round: <span class="bool-val">false</span>,
+
+            loss_events_in_round: <span class="number">0</span>,
+        }
+    }
+}
+
+<span class="comment">// When entering the recovery episode.
+</span><span class="kw">fn </span>bbr2_enter_recovery(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    r.bbr2_state.prior_cwnd = per_ack::bbr2_save_cwnd(r);
+
+    r.congestion_window = r.bytes_in_flight +
+        r.bbr2_state.newly_acked_bytes.max(r.max_datagram_size);
+    r.congestion_recovery_start_time = <span class="prelude-val">Some</span>(now);
+
+    r.bbr2_state.packet_conservation = <span class="bool-val">true</span>;
+    r.bbr2_state.in_recovery = <span class="bool-val">true</span>;
+
+    <span class="comment">// Start round now.
+    </span>r.bbr2_state.next_round_delivered = r.delivery_rate.delivered();
+}
+
+<span class="comment">// When exiting the recovery episode.
+</span><span class="kw">fn </span>bbr2_exit_recovery(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    r.congestion_recovery_start_time = <span class="prelude-val">None</span>;
+
+    r.bbr2_state.packet_conservation = <span class="bool-val">false</span>;
+    r.bbr2_state.in_recovery = <span class="bool-val">false</span>;
+
+    per_ack::bbr2_restore_cwnd(r);
+}
+
+<span class="comment">// Congestion Control Hooks.
+//
+</span><span class="kw">fn </span>on_init(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    init::bbr2_init(r);
+}
+
+<span class="kw">fn </span>reset(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    r.bbr2_state = State::new();
+
+    init::bbr2_init(r);
+}
+
+<span class="kw">fn </span>on_packet_sent(r: <span class="kw-2">&amp;mut </span>Recovery, sent_bytes: usize, now: Instant) {
+    r.bytes_in_flight += sent_bytes;
+
+    per_transmit::bbr2_on_transmit(r, now);
+}
+
+<span class="kw">fn </span>on_packets_acked(
+    r: <span class="kw-2">&amp;mut </span>Recovery, packets: <span class="kw-2">&amp;mut </span>Vec&lt;Acked&gt;, _epoch: packet::Epoch,
+    now: Instant,
+) {
+    r.bbr2_state.newly_acked_bytes = <span class="number">0</span>;
+
+    <span class="kw">let </span>time_sent = packets.last().map(|pkt| pkt.time_sent);
+
+    <span class="kw">for </span>p <span class="kw">in </span>packets.drain(..) {
+        r.bbr2_state.prior_bytes_in_flight = r.bytes_in_flight;
+
+        per_ack::bbr2_update_model_and_state(r, <span class="kw-2">&amp;</span>p, now);
+
+        <span class="kw">if </span>r.bytes_in_flight &lt; p.size {
+            <span class="macro">trace!</span>(<span class="string">"BBR2 on_packets_acked subtraction overflow"</span>);
+            r.bytes_in_flight = <span class="number">0</span>;
+        } <span class="kw">else </span>{
+            r.bytes_in_flight -= p.size
+        }
+        r.bbr2_state.newly_acked_bytes += p.size;
+    }
+
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(ts) = time_sent {
+        <span class="kw">if </span>!r.in_congestion_recovery(ts) {
+            <span class="comment">// Upon exiting loss recovery.
+            </span>bbr2_exit_recovery(r);
+        }
+    }
+
+    per_ack::bbr2_update_control_parameters(r, now);
+
+    r.bbr2_state.newly_lost_bytes = <span class="number">0</span>;
+}
+
+<span class="kw">fn </span>congestion_event(
+    r: <span class="kw-2">&amp;mut </span>Recovery, lost_bytes: usize, largest_lost_pkt: <span class="kw-2">&amp;</span>Sent,
+    _epoch: packet::Epoch, now: Instant,
+) {
+    r.bbr2_state.newly_lost_bytes = lost_bytes;
+
+    per_loss::bbr2_update_on_loss(r, largest_lost_pkt, now);
+
+    <span class="comment">// Upon entering Fast Recovery.
+    </span><span class="kw">if </span>!r.in_congestion_recovery(largest_lost_pkt.time_sent) {
+        <span class="comment">// Upon entering Fast Recovery.
+        </span>bbr2_enter_recovery(r, now);
+    }
+}
+
+<span class="kw">fn </span>collapse_cwnd(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="comment">// BBROnEnterRTO()
+    </span>r.bbr2_state.prior_cwnd = per_ack::bbr2_save_cwnd(r);
+
+    r.congestion_window = r.bytes_in_flight + r.max_datagram_size;
+}
+
+<span class="kw">fn </span>checkpoint(_r: <span class="kw-2">&amp;mut </span>Recovery) {}
+
+<span class="kw">fn </span>rollback(_r: <span class="kw-2">&amp;mut </span>Recovery) -&gt; bool {
+    <span class="bool-val">false
+</span>}
+
+<span class="kw">fn </span>has_custom_pacing() -&gt; bool {
+    <span class="bool-val">true
+</span>}
+
+<span class="comment">// rate -&gt; kbit/sec. if inf, return -1
+</span><span class="kw">fn </span>rate_kbps(rate: u64) -&gt; isize {
+    <span class="kw">if </span>rate == u64::MAX {
+        -<span class="number">1
+    </span>} <span class="kw">else </span>{
+        (rate * <span class="number">8 </span>/ <span class="number">1000</span>) <span class="kw">as </span>isize
+    }
+}
+
+<span class="kw">fn </span>debug_fmt(r: <span class="kw-2">&amp;</span>Recovery, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;</span>r.bbr2_state;
+
+    <span class="macro">write!</span>(f, <span class="string">"bbr2={{ "</span>)<span class="question-mark">?</span>;
+    <span class="macro">write!</span>(
+        f,
+        <span class="string">"state={:?} in_recovery={} ack_phase={:?} filled_pipe={} full_bw_count={} loss_events_in_round={} "</span>,
+        bbr.state, bbr.in_recovery, bbr.ack_phase, bbr.filled_pipe, bbr.full_bw_count, bbr.loss_events_in_round
+    )<span class="question-mark">?</span>;
+    <span class="macro">write!</span>(
+        f,
+        <span class="string">"send_quantum={} extra_acked={} min_rtt={:?} round_start={} "</span>,
+        r.send_quantum, bbr.extra_acked, bbr.min_rtt, bbr.round_start
+    )<span class="question-mark">?</span>;
+    <span class="macro">write!</span>(
+        f,
+        <span class="string">"max_bw={}kbps bw_lo={}kbps bw={}kbps bw_hi={}kbps full_bw={}kbps "</span>,
+        rate_kbps(bbr.max_bw),
+        rate_kbps(bbr.bw_lo),
+        rate_kbps(bbr.bw),
+        rate_kbps(bbr.bw_hi),
+        rate_kbps(bbr.full_bw)
+    )<span class="question-mark">?</span>;
+    <span class="macro">write!</span>(
+        f,
+        <span class="string">"inflight_lo={} inflight_hi={} max_inflight={} "</span>,
+        bbr.inflight_lo, bbr.inflight_hi, bbr.max_inflight
+    )<span class="question-mark">?</span>;
+    <span class="macro">write!</span>(
+        f,
+        <span class="string">"probe_up_cnt={} bw_probe_samples={} "</span>,
+        bbr.probe_up_cnt, bbr.bw_probe_samples
+    )<span class="question-mark">?</span>;
+    <span class="macro">write!</span>(f, <span class="string">"}}"</span>)
+}
+
+<span class="comment">// TODO: write more tests
+</span><span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="kw">use </span>smallvec::smallvec;
+
+    <span class="kw">use </span><span class="kw">crate</span>::recovery;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>bbr_init() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::BBR2);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+
+        <span class="comment">// on_init() is called in Connection::new(), so it need to be
+        // called manually here.
+        </span>r.on_init();
+
+        <span class="macro">assert_eq!</span>(
+            r.cwnd(),
+            r.max_datagram_size * r.initial_congestion_window_packets
+        );
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(r.bbr2_state.state, BBR2StateMachine::Startup);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>bbr2_send() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::BBR2);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span>now = Instant::now();
+
+        r.on_init();
+        r.on_packet_sent_cc(<span class="number">1000</span>, now);
+
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">1000</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>bbr2_startup() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::BBR2);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span>now = Instant::now();
+        <span class="kw">let </span>mss = r.max_datagram_size;
+
+        r.on_init();
+
+        <span class="comment">// Send 5 packets.
+        </span><span class="kw">for </span>pn <span class="kw">in </span><span class="number">0</span>..<span class="number">5 </span>{
+            <span class="kw">let </span>pkt = Sent {
+                pkt_num: pn,
+                frames: <span class="macro">smallvec!</span>[],
+                time_sent: now,
+                time_acked: <span class="prelude-val">None</span>,
+                time_lost: <span class="prelude-val">None</span>,
+                size: mss,
+                ack_eliciting: <span class="bool-val">true</span>,
+                in_flight: <span class="bool-val">true</span>,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                has_data: <span class="bool-val">false</span>,
+                pmtud: <span class="bool-val">false</span>,
+            };
+
+            r.on_packet_sent(
+                pkt,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+            );
+        }
+
+        <span class="kw">let </span>rtt = Duration::from_millis(<span class="number">50</span>);
+        <span class="kw">let </span>now = now + rtt;
+        <span class="kw">let </span>cwnd_prev = r.cwnd();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+        acked.insert(<span class="number">0</span>..<span class="number">5</span>);
+
+        <span class="macro">assert!</span>(r
+            .on_ack_received(
+                <span class="kw-2">&amp;</span>acked,
+                <span class="number">25</span>,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+                <span class="kw-2">&amp;mut </span>Vec::new(),
+            )
+            .is_ok());
+
+        <span class="macro">assert_eq!</span>(r.bbr2_state.state, BBR2StateMachine::Startup);
+        <span class="macro">assert_eq!</span>(r.cwnd(), cwnd_prev + mss * <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(
+            r.delivery_rate(),
+            ((mss * <span class="number">5</span>) <span class="kw">as </span>f64 / rtt.as_secs_f64()) <span class="kw">as </span>u64
+        );
+        <span class="macro">assert_eq!</span>(r.bbr2_state.full_bw, r.delivery_rate());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>bbr2_congestion_event() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::BBR2);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span>now = Instant::now();
+        <span class="kw">let </span>mss = r.max_datagram_size;
+
+        r.on_init();
+
+        <span class="comment">// Send 5 packets.
+        </span><span class="kw">for </span>pn <span class="kw">in </span><span class="number">0</span>..<span class="number">5 </span>{
+            <span class="kw">let </span>pkt = Sent {
+                pkt_num: pn,
+                frames: <span class="macro">smallvec!</span>[],
+                time_sent: now,
+                time_acked: <span class="prelude-val">None</span>,
+                time_lost: <span class="prelude-val">None</span>,
+                size: mss,
+                ack_eliciting: <span class="bool-val">true</span>,
+                in_flight: <span class="bool-val">true</span>,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                has_data: <span class="bool-val">false</span>,
+                pmtud: <span class="bool-val">false</span>,
+            };
+
+            r.on_packet_sent(
+                pkt,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+            );
+        }
+
+        <span class="kw">let </span>rtt = Duration::from_millis(<span class="number">50</span>);
+        <span class="kw">let </span>now = now + rtt;
+
+        <span class="comment">// Make a packet loss to trigger a congestion event.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+        acked.insert(<span class="number">4</span>..<span class="number">5</span>);
+
+        <span class="comment">// 2 acked, 2 x MSS lost.
+        </span><span class="macro">assert!</span>(r
+            .on_ack_received(
+                <span class="kw-2">&amp;</span>acked,
+                <span class="number">25</span>,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+                <span class="kw-2">&amp;mut </span>Vec::new(),
+            )
+            .is_ok());
+
+        <span class="macro">assert!</span>(r.bbr2_state.in_recovery);
+
+        <span class="comment">// Still in flight: 2, 3.
+        </span><span class="macro">assert_eq!</span>(r.bytes_in_flight, mss * <span class="number">2</span>);
+
+        <span class="macro">assert_eq!</span>(r.bbr2_state.newly_acked_bytes, mss);
+
+        <span class="macro">assert_eq!</span>(r.cwnd(), mss * <span class="number">3</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>bbr2_probe_bw() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::BBR2);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span>now = Instant::now();
+        <span class="kw">let </span>mss = r.max_datagram_size;
+
+        r.on_init();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pn = <span class="number">0</span>;
+
+        <span class="comment">// Stop right before filled_pipe=true.
+        </span><span class="kw">for _ in </span><span class="number">0</span>..<span class="number">3 </span>{
+            <span class="kw">let </span>pkt = Sent {
+                pkt_num: pn,
+                frames: <span class="macro">smallvec!</span>[],
+                time_sent: now,
+                time_acked: <span class="prelude-val">None</span>,
+                time_lost: <span class="prelude-val">None</span>,
+                size: mss,
+                ack_eliciting: <span class="bool-val">true</span>,
+                in_flight: <span class="bool-val">true</span>,
+                delivered: r.delivery_rate.delivered(),
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                has_data: <span class="bool-val">false</span>,
+                pmtud: <span class="bool-val">false</span>,
+            };
+
+            r.on_packet_sent(
+                pkt,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+            );
+
+            pn += <span class="number">1</span>;
+
+            <span class="kw">let </span>rtt = Duration::from_millis(<span class="number">50</span>);
+
+            <span class="kw">let </span>now = now + rtt;
+
+            <span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+            acked.insert(<span class="number">0</span>..pn);
+
+            <span class="macro">assert!</span>(r
+                .on_ack_received(
+                    <span class="kw-2">&amp;</span>acked,
+                    <span class="number">25</span>,
+                    packet::Epoch::Application,
+                    HandshakeStatus::default(),
+                    now,
+                    <span class="string">""</span>,
+                    <span class="kw-2">&amp;mut </span>Vec::new(),
+                )
+                .is_ok());
+        }
+
+        <span class="comment">// Stop at right before filled_pipe=true.
+        </span><span class="kw">for _ in </span><span class="number">0</span>..<span class="number">5 </span>{
+            <span class="kw">let </span>pkt = Sent {
+                pkt_num: pn,
+                frames: <span class="macro">smallvec!</span>[],
+                time_sent: now,
+                time_acked: <span class="prelude-val">None</span>,
+                time_lost: <span class="prelude-val">None</span>,
+                size: mss,
+                ack_eliciting: <span class="bool-val">true</span>,
+                in_flight: <span class="bool-val">true</span>,
+                delivered: r.delivery_rate.delivered(),
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                has_data: <span class="bool-val">false</span>,
+                pmtud: <span class="bool-val">false</span>,
+            };
+
+            r.on_packet_sent(
+                pkt,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+            );
+
+            pn += <span class="number">1</span>;
+        }
+
+        <span class="kw">let </span>rtt = Duration::from_millis(<span class="number">50</span>);
+        <span class="kw">let </span>now = now + rtt;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+
+        <span class="comment">// We sent 5 packets, but ack only one, to stay
+        // in Drain state.
+        </span>acked.insert(<span class="number">0</span>..pn - <span class="number">4</span>);
+
+        <span class="macro">assert!</span>(r
+            .on_ack_received(
+                <span class="kw-2">&amp;</span>acked,
+                <span class="number">25</span>,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+                <span class="kw-2">&amp;mut </span>Vec::new(),
+            )
+            .is_ok());
+
+        <span class="macro">assert_eq!</span>(r.bbr2_state.state, BBR2StateMachine::Drain);
+        <span class="macro">assert!</span>(r.bbr2_state.filled_pipe);
+        <span class="macro">assert!</span>(r.bbr2_state.pacing_gain &lt; <span class="number">1.0</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>bbr2_probe_rtt() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::BBR2);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span>now = Instant::now();
+        <span class="kw">let </span>mss = r.max_datagram_size;
+
+        r.on_init();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pn = <span class="number">0</span>;
+
+        <span class="comment">// At 4th roundtrip, filled_pipe=true and switch to Drain,
+        // but move to ProbeBW immediately because bytes_in_flight is
+        // smaller than BBRInFlight(1).
+        </span><span class="kw">for _ in </span><span class="number">0</span>..<span class="number">4 </span>{
+            <span class="kw">let </span>pkt = Sent {
+                pkt_num: pn,
+                frames: <span class="macro">smallvec!</span>[],
+                time_sent: now,
+                time_acked: <span class="prelude-val">None</span>,
+                time_lost: <span class="prelude-val">None</span>,
+                size: mss,
+                ack_eliciting: <span class="bool-val">true</span>,
+                in_flight: <span class="bool-val">true</span>,
+                delivered: r.delivery_rate.delivered(),
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                has_data: <span class="bool-val">false</span>,
+                pmtud: <span class="bool-val">false</span>,
+            };
+
+            r.on_packet_sent(
+                pkt,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+            );
+
+            pn += <span class="number">1</span>;
+
+            <span class="kw">let </span>rtt = Duration::from_millis(<span class="number">50</span>);
+            <span class="kw">let </span>now = now + rtt;
+
+            <span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+            acked.insert(<span class="number">0</span>..pn);
+
+            <span class="macro">assert!</span>(r
+                .on_ack_received(
+                    <span class="kw-2">&amp;</span>acked,
+                    <span class="number">25</span>,
+                    packet::Epoch::Application,
+                    HandshakeStatus::default(),
+                    now,
+                    <span class="string">""</span>,
+                    <span class="kw-2">&amp;mut </span>Vec::new(),
+                )
+                .is_ok());
+        }
+
+        <span class="comment">// Now we are in ProbeBW state.
+        </span><span class="macro">assert_eq!</span>(r.bbr2_state.state, BBR2StateMachine::ProbeBWCRUISE);
+
+        <span class="comment">// After RTPROP_FILTER_LEN (10s), switch to ProbeRTT.
+        </span><span class="kw">let </span>now = now + PROBE_RTT_INTERVAL;
+
+        <span class="kw">let </span>pkt = Sent {
+            pkt_num: pn,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: mss,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: r.delivery_rate.delivered(),
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            pkt,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+
+        pn += <span class="number">1</span>;
+
+        <span class="comment">// Don't update rtprop by giving larger rtt than before.
+        // If rtprop is updated, rtprop expiry check is reset.
+        </span><span class="kw">let </span>rtt = Duration::from_millis(<span class="number">100</span>);
+        <span class="kw">let </span>now = now + rtt;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+        acked.insert(<span class="number">0</span>..pn);
+
+        <span class="macro">assert!</span>(r
+            .on_ack_received(
+                <span class="kw-2">&amp;</span>acked,
+                <span class="number">25</span>,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+                <span class="kw-2">&amp;mut </span>Vec::new(),
+            )
+            .is_ok());
+
+        <span class="macro">assert_eq!</span>(r.bbr2_state.state, BBR2StateMachine::ProbeRTT);
+        <span class="macro">assert_eq!</span>(r.bbr2_state.pacing_gain, <span class="number">1.0</span>);
+    }
+}
+
+<span class="kw">mod </span>init;
+<span class="kw">mod </span>pacing;
+<span class="kw">mod </span>per_ack;
+<span class="kw">mod </span>per_loss;
+<span class="kw">mod </span>per_transmit;
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/recovery/bbr2/pacing.rs.html b/src/quiche/recovery/bbr2/pacing.rs.html
new file mode 100644
index 0000000..57bf724
--- /dev/null
+++ b/src/quiche/recovery/bbr2/pacing.rs.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/recovery/bbr2/pacing.rs`."><title>pacing.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../../src-files.js"></script><script defer src="../../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2022, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+<span class="comment">// BBR2 Transmit Packet Pacing Functions
+//
+
+// 4.6.2.  Pacing Rate: BBR.pacing_rate
+</span><span class="kw">pub fn </span>bbr2_init_pacing_rate(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    <span class="kw">let </span>srtt = r
+        .smoothed_rtt
+        .unwrap_or_else(|| Duration::from_millis(<span class="number">1</span>))
+        .as_secs_f64();
+
+    <span class="comment">// At init, cwnd is initcwnd.
+    </span><span class="kw">let </span>nominal_bandwidth = r.congestion_window <span class="kw">as </span>f64 / srtt;
+
+    bbr.pacing_rate = (STARTUP_PACING_GAIN * nominal_bandwidth) <span class="kw">as </span>u64;
+    bbr.init_pacing_rate = (STARTUP_PACING_GAIN * nominal_bandwidth) <span class="kw">as </span>u64;
+}
+
+<span class="kw">pub fn </span>bbr2_set_pacing_rate_with_gain(r: <span class="kw-2">&amp;mut </span>Recovery, pacing_gain: f64) {
+    <span class="kw">let </span>rate = (pacing_gain *
+        r.bbr2_state.bw <span class="kw">as </span>f64 *
+        (<span class="number">1.0 </span>- PACING_MARGIN_PERCENT)) <span class="kw">as </span>u64;
+
+    <span class="kw">if </span>r.bbr2_state.filled_pipe ||
+        rate &gt; r.bbr2_state.pacing_rate ||
+        r.bbr2_state.pacing_rate == r.bbr2_state.init_pacing_rate
+    {
+        r.bbr2_state.pacing_rate = rate;
+    }
+}
+
+<span class="kw">pub fn </span>bbr2_set_pacing_rate(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    bbr2_set_pacing_rate_with_gain(r, r.bbr2_state.pacing_gain);
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/recovery/bbr2/per_ack.rs.html b/src/quiche/recovery/bbr2/per_ack.rs.html
new file mode 100644
index 0000000..0dbdaf5
--- /dev/null
+++ b/src/quiche/recovery/bbr2/per_ack.rs.html
@@ -0,0 +1,1561 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/recovery/bbr2/per_ack.rs`."><title>per_ack.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../../src-files.js"></script><script defer src="../../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2022, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use super</span>::<span class="kw-2">*</span>;
+<span class="kw">use </span><span class="kw">crate</span>::rand;
+<span class="kw">use </span><span class="kw">crate</span>::recovery;
+
+<span class="doccomment">/// 1.2Mbps in bytes/sec
+</span><span class="kw">const </span>PACING_RATE_1_2MBPS: u64 = <span class="number">1200 </span>* <span class="number">1000 </span>/ <span class="number">8</span>;
+
+<span class="doccomment">/// The minimal cwnd value BBR2 tries to target, in bytes
+</span><span class="attr">#[inline]
+</span><span class="kw">fn </span>bbr2_min_pipe_cwnd(r: <span class="kw-2">&amp;mut </span>Recovery) -&gt; usize {
+    MIN_PIPE_CWND_PKTS * r.max_datagram_size
+}
+
+<span class="comment">// BBR2 Functions when ACK is received.
+//
+</span><span class="kw">pub fn </span>bbr2_update_model_and_state(
+    r: <span class="kw-2">&amp;mut </span>Recovery, packet: <span class="kw-2">&amp;</span>Acked, now: Instant,
+) {
+    per_loss::bbr2_update_latest_delivery_signals(r);
+    per_loss::bbr2_update_congestion_signals(r, packet);
+    bbr2_update_ack_aggregation(r, packet, now);
+    bbr2_check_startup_done(r);
+    bbr2_check_drain(r, now);
+    bbr2_update_probe_bw_cycle_phase(r, now);
+    bbr2_update_min_rtt(r, now);
+    bbr2_check_probe_rtt(r, now);
+    per_loss::bbr2_advance_latest_delivery_signals(r);
+    per_loss::bbr2_bound_bw_for_model(r);
+}
+
+<span class="kw">pub fn </span>bbr2_update_control_parameters(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    pacing::bbr2_set_pacing_rate(r);
+    bbr2_set_send_quantum(r);
+
+    <span class="comment">// Set outgoing packet pacing rate
+    // It is called here because send_quantum may be updated too.
+    </span>r.set_pacing_rate(r.bbr2_state.pacing_rate, now);
+
+    bbr2_set_cwnd(r);
+}
+
+<span class="comment">// BBR2 Functions while processing ACKs.
+//
+
+// 4.3.1.1.  Startup Dynamics
+</span><span class="kw">fn </span>bbr2_check_startup_done(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    bbr2_check_startup_full_bandwidth(r);
+    bbr2_check_startup_high_loss(r);
+
+    <span class="kw">if </span>r.bbr2_state.state == BBR2StateMachine::Startup &amp;&amp; r.bbr2_state.filled_pipe
+    {
+        bbr2_enter_drain(r);
+    }
+}
+
+<span class="comment">// 4.3.1.2.  Exiting Startup Based on Bandwidth Plateau
+</span><span class="kw">fn </span>bbr2_check_startup_full_bandwidth(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">if </span>r.bbr2_state.filled_pipe ||
+        !r.bbr2_state.round_start ||
+        r.delivery_rate.sample_is_app_limited()
+    {
+        <span class="comment">// No need to check for a full pipe now.
+        </span><span class="kw">return</span>;
+    }
+
+    <span class="comment">// Still growing?
+    </span><span class="kw">if </span>r.bbr2_state.max_bw &gt;=
+        (r.bbr2_state.full_bw <span class="kw">as </span>f64 * MAX_BW_GROWTH_THRESHOLD) <span class="kw">as </span>u64
+    {
+        <span class="comment">// Record new baseline level
+        </span>r.bbr2_state.full_bw = r.bbr2_state.max_bw;
+        r.bbr2_state.full_bw_count = <span class="number">0</span>;
+        <span class="kw">return</span>;
+    }
+
+    <span class="comment">// Another round w/o much growth
+    </span>r.bbr2_state.full_bw_count += <span class="number">1</span>;
+
+    <span class="kw">if </span>r.bbr2_state.full_bw_count &gt;= MAX_BW_COUNT {
+        r.bbr2_state.filled_pipe = <span class="bool-val">true</span>;
+    }
+}
+
+<span class="comment">// 4.3.1.3.  Exiting Startup Based on Packet Loss
+</span><span class="kw">fn </span>bbr2_check_startup_high_loss(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="comment">// TODO: this is not implemented (not in the draft)
+    </span><span class="kw">if </span>r.bbr2_state.loss_round_start &amp;&amp;
+        r.bbr2_state.in_recovery &amp;&amp;
+        r.bbr2_state.loss_events_in_round &gt;= FULL_LOSS_COUNT <span class="kw">as </span>usize &amp;&amp;
+        per_loss::bbr2_is_inflight_too_high(r)
+    {
+        bbr2_handle_queue_too_high_in_startup(r);
+    }
+    <span class="kw">if </span>r.bbr2_state.loss_round_start {
+        r.bbr2_state.loss_events_in_round = <span class="number">0
+    </span>}
+}
+
+<span class="kw">fn </span>bbr2_handle_queue_too_high_in_startup(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    r.bbr2_state.filled_pipe = <span class="bool-val">true</span>;
+    r.bbr2_state.inflight_hi = bbr2_inflight(r, r.bbr2_state.max_bw, <span class="number">1.0</span>);
+}
+
+<span class="comment">// 4.3.2.  Drain
+</span><span class="kw">fn </span>bbr2_enter_drain(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    bbr.state = BBR2StateMachine::Drain;
+
+    <span class="comment">// pace slowly
+    </span>bbr.pacing_gain = PACING_GAIN / STARTUP_CWND_GAIN;
+
+    <span class="comment">// maintain cwnd
+    </span>bbr.cwnd_gain = STARTUP_CWND_GAIN;
+}
+
+<span class="kw">fn </span>bbr2_check_drain(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    <span class="kw">if </span>r.bbr2_state.state == BBR2StateMachine::Drain &amp;&amp;
+        r.bytes_in_flight &lt;= bbr2_inflight(r, r.bbr2_state.max_bw, <span class="number">1.0</span>)
+    {
+        <span class="comment">// BBR estimates the queue was drained
+        </span>bbr2_enter_probe_bw(r, now);
+    }
+}
+
+<span class="comment">// 4.3.3.  ProbeBW
+// 4.3.3.5.3.  Design Considerations for Choosing Constant Parameters
+</span><span class="kw">fn </span>bbr2_check_time_to_probe_bw(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) -&gt; bool {
+    <span class="comment">// Is it time to transition from DOWN or CRUISE to REFILL?
+    </span><span class="kw">if </span>bbr2_has_elapsed_in_phase(r, r.bbr2_state.bw_probe_wait, now) ||
+        bbr2_is_reno_coexistence_probe_time(r)
+    {
+        bbr2_start_probe_bw_refill(r);
+
+        <span class="kw">return </span><span class="bool-val">true</span>;
+    }
+
+    <span class="bool-val">false
+</span>}
+
+<span class="comment">// Randomized decision about how long to wait until
+// probing for bandwidth, using round count and wall clock.
+</span><span class="kw">fn </span>bbr2_pick_probe_wait(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    <span class="comment">// Decide random round-trip bound for wait
+    </span>bbr.rounds_since_probe = rand::rand_u8() <span class="kw">as </span>usize % <span class="number">2</span>;
+
+    <span class="comment">// Decide the random wall clock bound for wait
+    </span>bbr.bw_probe_wait = Duration::from_secs_f64(
+        <span class="number">2.0 </span>+ rand::rand_u64_uniform(<span class="number">1000000</span>) <span class="kw">as </span>f64 / <span class="number">1000000.0</span>,
+    );
+}
+
+<span class="kw">fn </span>bbr2_is_reno_coexistence_probe_time(r: <span class="kw-2">&amp;mut </span>Recovery) -&gt; bool {
+    <span class="kw">let </span>reno_rounds = bbr2_target_inflight(r);
+    <span class="kw">let </span>rounds = reno_rounds.min(<span class="number">63</span>);
+
+    r.bbr2_state.rounds_since_probe &gt;= rounds
+}
+
+<span class="comment">// How much data do we want in flight?
+// Our estimated BDP, unless congestion cut cwnd.
+</span><span class="kw">pub fn </span>bbr2_target_inflight(r: <span class="kw-2">&amp;mut </span>Recovery) -&gt; usize {
+    r.bbr2_state.bdp.min(r.congestion_window)
+}
+
+<span class="comment">// 4.3.3.6.  ProbeBW Algorithm Details
+</span><span class="kw">fn </span>bbr2_enter_probe_bw(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    bbr2_start_probe_bw_down(r, now);
+}
+
+<span class="kw">pub fn </span>bbr2_start_probe_bw_down(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    per_loss::bbr2_reset_congestion_signals(r);
+
+    <span class="comment">// not growing inflight_hi
+    </span>r.bbr2_state.probe_up_cnt = usize::MAX;
+
+    bbr2_pick_probe_wait(r);
+
+    <span class="comment">// start wall clock
+    </span>r.bbr2_state.cycle_stamp = now;
+    r.bbr2_state.ack_phase = BBR2AckPhase::ProbeStopping;
+
+    bbr2_start_round(r);
+
+    r.bbr2_state.state = BBR2StateMachine::ProbeBWDOWN;
+    r.bbr2_state.pacing_gain = PROBE_DOWN_PACING_GAIN;
+    r.bbr2_state.cwnd_gain = CWND_GAIN
+}
+
+<span class="kw">fn </span>bbr2_start_probe_bw_cruise(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    bbr.state = BBR2StateMachine::ProbeBWCRUISE;
+    bbr.pacing_gain = PACING_GAIN;
+    bbr.cwnd_gain = CWND_GAIN;
+}
+
+<span class="kw">fn </span>bbr2_start_probe_bw_refill(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    per_loss::bbr2_reset_lower_bounds(r);
+
+    r.bbr2_state.bw_probe_up_rounds = <span class="number">0</span>;
+    r.bbr2_state.bw_probe_up_acks = <span class="number">0</span>;
+    r.bbr2_state.ack_phase = BBR2AckPhase::Refilling;
+
+    bbr2_start_round(r);
+
+    r.bbr2_state.state = BBR2StateMachine::ProbeBWREFILL;
+    r.bbr2_state.pacing_gain = PACING_GAIN;
+    r.bbr2_state.cwnd_gain = CWND_GAIN;
+}
+
+<span class="kw">fn </span>bbr2_start_probe_bw_up(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    r.bbr2_state.ack_phase = BBR2AckPhase::ProbeStarting;
+
+    bbr2_start_round(r);
+
+    <span class="comment">// Start wall clock.
+    </span>r.bbr2_state.cycle_stamp = now;
+    r.bbr2_state.state = BBR2StateMachine::ProbeBWUP;
+    r.bbr2_state.pacing_gain = PROBE_UP_PACING_GAIN;
+    r.bbr2_state.cwnd_gain = CWND_GAIN;
+
+    bbr2_raise_inflight_hi_slope(r);
+}
+
+<span class="comment">// The core state machine logic for ProbeBW
+</span><span class="kw">fn </span>bbr2_update_probe_bw_cycle_phase(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    <span class="kw">if </span>!r.bbr2_state.filled_pipe {
+        <span class="comment">// only handling steady-state behavior here
+        </span><span class="kw">return</span>;
+    }
+
+    bbr2_adapt_upper_bounds(r, now);
+
+    <span class="kw">if </span>!bbr2_is_in_a_probe_bw_state(r) {
+        <span class="comment">// only handling ProbeBW states here
+        </span><span class="kw">return</span>;
+    }
+
+    <span class="kw">match </span>r.bbr2_state.state {
+        BBR2StateMachine::ProbeBWDOWN =&gt; {
+            <span class="kw">if </span>bbr2_check_time_to_probe_bw(r, now) {
+                <span class="comment">// Already decided state transition.
+                </span><span class="kw">return</span>;
+            }
+
+            <span class="kw">if </span>bbr2_check_time_to_cruise(r) {
+                bbr2_start_probe_bw_cruise(r);
+            }
+        },
+
+        BBR2StateMachine::ProbeBWCRUISE =&gt; {
+            bbr2_check_time_to_probe_bw(r, now);
+        },
+
+        BBR2StateMachine::ProbeBWREFILL =&gt; {
+            <span class="comment">// After one round of REFILL, start UP.
+            </span><span class="kw">if </span>r.bbr2_state.round_start {
+                r.bbr2_state.bw_probe_samples = <span class="bool-val">true</span>;
+
+                bbr2_start_probe_bw_up(r, now);
+            }
+        },
+
+        BBR2StateMachine::ProbeBWUP =&gt; {
+            <span class="kw">if </span>bbr2_has_elapsed_in_phase(r, r.bbr2_state.min_rtt, now) &amp;&amp;
+                r.bytes_in_flight &gt; bbr2_inflight(r, r.bbr2_state.max_bw, <span class="number">1.25</span>)
+            {
+                bbr2_start_probe_bw_down(r, now);
+            }
+        },
+
+        <span class="kw">_ </span>=&gt; (),
+    }
+}
+
+<span class="kw">pub fn </span>bbr2_is_in_a_probe_bw_state(r: <span class="kw-2">&amp;mut </span>Recovery) -&gt; bool {
+    <span class="kw">let </span>state = r.bbr2_state.state;
+
+    state == BBR2StateMachine::ProbeBWDOWN ||
+        state == BBR2StateMachine::ProbeBWCRUISE ||
+        state == BBR2StateMachine::ProbeBWREFILL ||
+        state == BBR2StateMachine::ProbeBWUP
+}
+
+<span class="kw">fn </span>bbr2_check_time_to_cruise(r: <span class="kw-2">&amp;mut </span>Recovery) -&gt; bool {
+    <span class="kw">if </span>r.bytes_in_flight &gt; bbr2_inflight_with_headroom(r) {
+        <span class="comment">// Not enough headroom.
+        </span><span class="kw">return </span><span class="bool-val">false</span>;
+    }
+
+    <span class="kw">if </span>r.bytes_in_flight &lt;= bbr2_inflight(r, r.bbr2_state.max_bw, <span class="number">1.0</span>) {
+        <span class="comment">// inflight &lt;= estimated BDP
+        </span><span class="kw">return </span><span class="bool-val">true</span>;
+    }
+
+    <span class="bool-val">false
+</span>}
+
+<span class="kw">fn </span>bbr2_has_elapsed_in_phase(
+    r: <span class="kw-2">&amp;mut </span>Recovery, interval: Duration, now: Instant,
+) -&gt; bool {
+    now &gt; r.bbr2_state.cycle_stamp + interval
+}
+
+<span class="comment">// Return a volume of data that tries to leave free
+// headroom in the bottleneck buffer or link for
+// other flows, for fairness convergence and lower
+// RTTs and loss
+</span><span class="kw">fn </span>bbr2_inflight_with_headroom(r: <span class="kw-2">&amp;mut </span>Recovery) -&gt; usize {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    <span class="kw">if </span>bbr.inflight_hi == usize::MAX {
+        <span class="kw">return </span>usize::MAX;
+    }
+
+    <span class="kw">let </span>headroom = ((HEADROOM * bbr.inflight_hi <span class="kw">as </span>f64) <span class="kw">as </span>usize).max(<span class="number">1</span>);
+
+    bbr.inflight_hi
+        .saturating_sub(headroom)
+        .max(bbr2_min_pipe_cwnd(r))
+}
+
+<span class="comment">// Raise inflight_hi slope if appropriate.
+</span><span class="kw">fn </span>bbr2_raise_inflight_hi_slope(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    <span class="kw">let </span>growth_this_round = (<span class="number">1 </span>&lt;&lt; bbr.bw_probe_up_rounds) * r.max_datagram_size;
+
+    bbr.bw_probe_up_rounds = (bbr.bw_probe_up_rounds + <span class="number">1</span>).min(<span class="number">30</span>);
+    bbr.probe_up_cnt = (r.congestion_window / growth_this_round).max(<span class="number">1</span>);
+}
+
+<span class="comment">// Increase inflight_hi if appropriate.
+</span><span class="kw">fn </span>bbr2_probe_inflight_hi_upward(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">if </span>r.app_limited() || r.congestion_window &lt; r.bbr2_state.inflight_hi {
+        <span class="comment">// Not fully using inflight_hi, so don't grow it.
+        </span><span class="kw">return</span>;
+    }
+
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    <span class="comment">// bw_probe_up_acks is a packet count.
+    </span>bbr.bw_probe_up_acks += <span class="number">1</span>;
+
+    <span class="kw">if </span>bbr.bw_probe_up_acks &gt;= bbr.probe_up_cnt {
+        <span class="kw">let </span>delta = bbr.bw_probe_up_acks / bbr.probe_up_cnt;
+
+        bbr.bw_probe_up_acks -= delta * bbr.probe_up_cnt;
+
+        bbr.inflight_hi += delta * r.max_datagram_size;
+    }
+
+    <span class="kw">if </span>bbr.round_start {
+        bbr2_raise_inflight_hi_slope(r);
+    }
+}
+
+<span class="comment">// Track ACK state and update bbr.max_bw window and
+// bbr.inflight_hi and bbr.bw_hi.
+</span><span class="kw">fn </span>bbr2_adapt_upper_bounds(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    <span class="kw">if </span>r.bbr2_state.ack_phase == BBR2AckPhase::ProbeStarting &amp;&amp;
+        r.bbr2_state.round_start
+    {
+        <span class="comment">// Starting to get bw probing samples.
+        </span>r.bbr2_state.ack_phase = BBR2AckPhase::ProbeFeedback;
+    }
+
+    <span class="kw">if </span>r.bbr2_state.ack_phase == BBR2AckPhase::ProbeStopping &amp;&amp;
+        r.bbr2_state.round_start
+    {
+        r.bbr2_state.bw_probe_samples = <span class="bool-val">false</span>;
+        r.bbr2_state.ack_phase = BBR2AckPhase::Init;
+
+        <span class="comment">// End of samples from bw probing phase.
+        </span><span class="kw">if </span>bbr2_is_in_a_probe_bw_state(r) &amp;&amp;
+            !r.delivery_rate.sample_is_app_limited()
+        {
+            bbr2_advance_max_bw_filter(r);
+        }
+    }
+
+    <span class="kw">if </span>!per_loss::bbr2_check_inflight_too_high(r, now) {
+        <span class="comment">// Loss rate is safe. Adjust upper bounds upward.
+        </span><span class="kw">if </span>r.bbr2_state.inflight_hi == usize::MAX ||
+            r.bbr2_state.bw_hi == u64::MAX
+        {
+            <span class="comment">// No upper bounds to raise.
+            </span><span class="kw">return</span>;
+        }
+
+        <span class="kw">if </span>r.bbr2_state.tx_in_flight &gt; r.bbr2_state.inflight_hi {
+            r.bbr2_state.inflight_hi = r.bbr2_state.tx_in_flight;
+        }
+
+        <span class="comment">// TODO: what's rs.bw???
+        </span><span class="kw">if </span>r.delivery_rate() &gt; r.bbr2_state.bw_hi {
+            r.bbr2_state.bw_hi = r.delivery_rate();
+        }
+
+        <span class="kw">if </span>r.bbr2_state.state == BBR2StateMachine::ProbeBWUP {
+            bbr2_probe_inflight_hi_upward(r);
+        }
+    }
+}
+
+<span class="comment">// 4.3.4. ProbeRTT
+// 4.3.4.4.  ProbeRTT Logic
+</span><span class="kw">fn </span>bbr2_update_min_rtt(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    bbr.probe_rtt_expired = now &gt; bbr.probe_rtt_min_stamp + PROBE_RTT_INTERVAL;
+
+    <span class="kw">let </span>rs_rtt = r.delivery_rate.sample_rtt();
+
+    <span class="kw">if </span>!rs_rtt.is_zero() &amp;&amp;
+        (rs_rtt &lt; bbr.probe_rtt_min_delay || bbr.probe_rtt_expired)
+    {
+        bbr.probe_rtt_min_delay = rs_rtt;
+        bbr.probe_rtt_min_stamp = now;
+    }
+
+    <span class="kw">let </span>min_rtt_expired =
+        now &gt; bbr.min_rtt_stamp + rs_rtt.saturating_mul(MIN_RTT_FILTER_LEN);
+
+    <span class="comment">// To do: Figure out Probe RTT logic
+    // if bbr.probe_rtt_min_delay &lt; bbr.min_rtt ||  bbr.min_rtt == INITIAL_RTT ||
+    // min_rtt_expired {
+    </span><span class="kw">if </span>bbr.min_rtt == INITIAL_RTT || min_rtt_expired {
+        <span class="comment">// bbr.min_rtt = bbr.probe_rtt_min_delay;
+        // bbr.min_rtt_stamp = bbr.probe_rtt_min_stamp;
+        </span>bbr.min_rtt = rs_rtt;
+        bbr.min_rtt_stamp = now;
+    }
+}
+
+<span class="kw">fn </span>bbr2_check_probe_rtt(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    <span class="kw">if </span>r.bbr2_state.state != BBR2StateMachine::ProbeRTT &amp;&amp;
+        r.bbr2_state.probe_rtt_expired &amp;&amp;
+        !r.bbr2_state.idle_restart
+    {
+        bbr2_enter_probe_rtt(r);
+
+        r.bbr2_state.prior_cwnd = per_ack::bbr2_save_cwnd(r);
+        r.bbr2_state.probe_rtt_done_stamp = <span class="prelude-val">None</span>;
+        r.bbr2_state.ack_phase = BBR2AckPhase::ProbeStopping;
+
+        bbr2_start_round(r);
+    }
+
+    <span class="kw">if </span>r.bbr2_state.state == BBR2StateMachine::ProbeRTT {
+        bbr2_handle_probe_rtt(r, now);
+    }
+
+    <span class="kw">if </span>r.delivery_rate.sample_delivered() &gt; <span class="number">0 </span>{
+        r.bbr2_state.idle_restart = <span class="bool-val">false</span>;
+    }
+}
+
+<span class="kw">fn </span>bbr2_enter_probe_rtt(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    bbr.state = BBR2StateMachine::ProbeRTT;
+    bbr.pacing_gain = PACING_GAIN;
+    bbr.cwnd_gain = PROBE_RTT_CWND_GAIN;
+}
+
+<span class="kw">fn </span>bbr2_handle_probe_rtt(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    <span class="comment">// Ignore low rate samples during ProbeRTT.
+    </span>r.delivery_rate.update_app_limited(<span class="bool-val">true</span>);
+
+    <span class="kw">if </span>r.bbr2_state.probe_rtt_done_stamp.is_some() {
+        <span class="kw">if </span>r.bbr2_state.round_start {
+            r.bbr2_state.probe_rtt_round_done = <span class="bool-val">true</span>;
+        }
+
+        <span class="kw">if </span>r.bbr2_state.probe_rtt_round_done {
+            bbr2_check_probe_rtt_done(r, now);
+        }
+    } <span class="kw">else if </span>r.bytes_in_flight &lt;= bbr2_probe_rtt_cwnd(r) {
+        <span class="comment">// Wait for at least ProbeRTTDuration to elapse.
+        </span>r.bbr2_state.probe_rtt_done_stamp = <span class="prelude-val">Some</span>(now + PROBE_RTT_DURATION);
+
+        <span class="comment">// Wait for at lease one round to elapse.
+        </span>r.bbr2_state.probe_rtt_round_done = <span class="bool-val">false</span>;
+
+        bbr2_start_round(r);
+    }
+}
+
+<span class="kw">pub fn </span>bbr2_check_probe_rtt_done(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(probe_rtt_done_stamp) = bbr.probe_rtt_done_stamp {
+        <span class="kw">if </span>now &gt; probe_rtt_done_stamp {
+            <span class="comment">// Schedule next ProbeRTT.
+            </span>bbr.probe_rtt_min_stamp = now;
+
+            bbr2_restore_cwnd(r);
+            bbr2_exit_probe_rtt(r, now);
+        }
+    }
+}
+
+<span class="comment">// 4.3.4.5.  Exiting ProbeRTT
+</span><span class="kw">fn </span>bbr2_exit_probe_rtt(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    per_loss::bbr2_reset_lower_bounds(r);
+
+    <span class="kw">if </span>r.bbr2_state.filled_pipe {
+        bbr2_start_probe_bw_down(r, now);
+        bbr2_start_probe_bw_cruise(r);
+    } <span class="kw">else </span>{
+        init::bbr2_enter_startup(r);
+    }
+}
+
+<span class="comment">// 4.5.1.  BBR.round_count: Tracking Packet-Timed Round Trips
+</span><span class="kw">fn </span>bbr2_update_round(r: <span class="kw-2">&amp;mut </span>Recovery, packet: <span class="kw-2">&amp;</span>Acked) {
+    <span class="kw">if </span>packet.delivered &gt;= r.bbr2_state.next_round_delivered {
+        bbr2_start_round(r);
+
+        r.bbr2_state.round_count += <span class="number">1</span>;
+        r.bbr2_state.rounds_since_probe += <span class="number">1</span>;
+        r.bbr2_state.round_start = <span class="bool-val">true</span>;
+    } <span class="kw">else </span>{
+        r.bbr2_state.round_start = <span class="bool-val">false</span>;
+    }
+}
+
+<span class="kw">fn </span>bbr2_start_round(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    r.bbr2_state.next_round_delivered = r.delivery_rate.delivered();
+}
+
+<span class="comment">// 4.5.2.4.  Updating the BBR.max_bw Max Filter
+</span><span class="kw">pub fn </span>bbr2_update_max_bw(r: <span class="kw-2">&amp;mut </span>Recovery, packet: <span class="kw-2">&amp;</span>Acked) {
+    bbr2_update_round(r, packet);
+
+    <span class="kw">if </span>r.delivery_rate() &gt;= r.bbr2_state.max_bw ||
+        !r.delivery_rate.sample_is_app_limited()
+    {
+        <span class="kw">let </span>max_bw_filter_len = r
+            .delivery_rate
+            .sample_rtt()
+            .saturating_mul(MIN_RTT_FILTER_LEN);
+
+        r.bbr2_state.max_bw = r.bbr2_state.max_bw_filter.running_max(
+            max_bw_filter_len,
+            r.bbr2_state.start_time +
+                Duration::from_secs(r.bbr2_state.cycle_count),
+            r.delivery_rate(),
+        );
+    }
+}
+
+<span class="comment">// 4.5.2.5.  Tracking Time for the BBR.max_bw Max Filter
+</span><span class="kw">fn </span>bbr2_advance_max_bw_filter(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    r.bbr2_state.cycle_count += <span class="number">1</span>;
+}
+
+<span class="comment">// 4.5.4.  BBR.offload_budget
+</span><span class="kw">fn </span>bbr2_update_offload_budget(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    r.bbr2_state.offload_budget = <span class="number">3 </span>* r.send_quantum;
+}
+
+<span class="comment">// 4.5.5.  BBR.extra_acked
+</span><span class="kw">fn </span>bbr2_update_ack_aggregation(r: <span class="kw-2">&amp;mut </span>Recovery, packet: <span class="kw-2">&amp;</span>Acked, now: Instant) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    <span class="comment">// Find excess ACKed beyond expected amount over this interval.
+    </span><span class="kw">let </span>interval = now - bbr.extra_acked_interval_start;
+    <span class="kw">let </span><span class="kw-2">mut </span>expected_delivered =
+        (bbr.bw <span class="kw">as </span>f64 * interval.as_secs_f64()) <span class="kw">as </span>usize;
+
+    <span class="comment">// Reset interval if ACK rate is below expected rate.
+    </span><span class="kw">if </span>bbr.extra_acked_delivered &lt;= expected_delivered {
+        bbr.extra_acked_delivered = <span class="number">0</span>;
+        bbr.extra_acked_interval_start = now;
+        expected_delivered = <span class="number">0</span>;
+    }
+
+    bbr.extra_acked_delivered += packet.size;
+
+    <span class="kw">let </span>extra = bbr.extra_acked_delivered.saturating_sub(expected_delivered);
+    <span class="kw">let </span>extra = extra.min(r.congestion_window);
+
+    <span class="kw">let </span>extra_acked_filter_len = r
+        .delivery_rate
+        .sample_rtt()
+        .saturating_mul(MIN_RTT_FILTER_LEN);
+
+    bbr.extra_acked = bbr.extra_acked_filter.running_max(
+        extra_acked_filter_len,
+        bbr.start_time + Duration::from_secs(bbr.round_count),
+        extra,
+    );
+}
+
+<span class="comment">// 4.6.3.  Send Quantum: BBR.send_quantum
+</span><span class="kw">fn </span>bbr2_set_send_quantum(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    <span class="kw">let </span>rate = bbr.pacing_rate;
+    <span class="kw">let </span>floor = <span class="kw">if </span>rate &lt; PACING_RATE_1_2MBPS {
+        r.max_datagram_size
+    } <span class="kw">else </span>{
+        <span class="number">2 </span>* r.max_datagram_size
+    };
+
+    r.send_quantum = cmp::min((rate / <span class="number">1000_u64</span>) <span class="kw">as </span>usize, <span class="number">64 </span>* <span class="number">1024</span>); <span class="comment">// Assumes send buffer is limited to 64KB
+    </span>r.send_quantum = r.send_quantum.max(floor);
+}
+
+<span class="comment">// 4.6.4.1.  Initial cwnd
+// 4.6.4.2.  Computing BBR.max_inflight
+</span><span class="kw">fn </span>bbr2_bdp_multiple(r: <span class="kw-2">&amp;mut </span>Recovery, bw: u64, gain: f64) -&gt; usize {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    <span class="kw">if </span>bbr.min_rtt == Duration::MAX {
+        <span class="comment">// No valid RTT samples yet.
+        </span><span class="kw">return </span>r.max_datagram_size * r.initial_congestion_window_packets;
+    }
+
+    bbr.bdp = (bw <span class="kw">as </span>f64 * bbr.min_rtt.as_secs_f64()) <span class="kw">as </span>usize;
+
+    (gain * bbr.bdp <span class="kw">as </span>f64) <span class="kw">as </span>usize
+}
+
+<span class="kw">fn </span>bbr2_quantization_budget(r: <span class="kw-2">&amp;mut </span>Recovery, inflight: usize) -&gt; usize {
+    bbr2_update_offload_budget(r);
+
+    <span class="kw">let </span>inflight = inflight.max(r.bbr2_state.offload_budget);
+    <span class="kw">let </span>inflight = inflight.max(bbr2_min_pipe_cwnd(r));
+
+    <span class="comment">// TODO: cycle_idx is unused
+    </span><span class="kw">if </span>r.bbr2_state.state == BBR2StateMachine::ProbeBWUP {
+        <span class="kw">return </span>inflight + <span class="number">2 </span>* r.max_datagram_size;
+    }
+
+    inflight
+}
+
+<span class="kw">fn </span>bbr2_inflight(r: <span class="kw-2">&amp;mut </span>Recovery, bw: u64, gain: f64) -&gt; usize {
+    <span class="kw">let </span>inflight = bbr2_bdp_multiple(r, bw, gain);
+
+    bbr2_quantization_budget(r, inflight)
+}
+
+<span class="kw">fn </span>bbr2_update_max_inflight(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="comment">// TODO: not implemented (not in the draft)
+    // bbr2_update_aggregation_budget(r);
+
+    </span><span class="kw">let </span>inflight =
+        bbr2_bdp_multiple(r, r.bbr2_state.max_bw, r.bbr2_state.cwnd_gain);
+    <span class="kw">let </span>inflight = inflight + r.bbr2_state.extra_acked;
+
+    r.bbr2_state.max_inflight = bbr2_quantization_budget(r, inflight);
+}
+
+<span class="comment">// 4.6.4.4.  Modulating cwnd in Loss Recovery
+</span><span class="kw">pub fn </span>bbr2_save_cwnd(r: <span class="kw-2">&amp;mut </span>Recovery) -&gt; usize {
+    <span class="kw">if </span>!r.bbr2_state.in_recovery &amp;&amp;
+        r.bbr2_state.state != BBR2StateMachine::ProbeRTT
+    {
+        r.congestion_window
+    } <span class="kw">else </span>{
+        r.congestion_window.max(r.bbr2_state.prior_cwnd)
+    }
+}
+
+<span class="kw">pub fn </span>bbr2_restore_cwnd(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    r.congestion_window = r.congestion_window.max(r.bbr2_state.prior_cwnd);
+}
+
+<span class="kw">fn </span>bbr2_modulate_cwnd_for_recovery(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>acked_bytes = r.bbr2_state.newly_acked_bytes;
+    <span class="kw">let </span>lost_bytes = r.bbr2_state.newly_lost_bytes;
+
+    <span class="kw">if </span>lost_bytes &gt; <span class="number">0 </span>{
+        <span class="comment">// QUIC mininum cwnd is 2 x MSS.
+        </span>r.congestion_window = r
+            .congestion_window
+            .saturating_sub(lost_bytes)
+            .max(r.max_datagram_size * recovery::MINIMUM_WINDOW_PACKETS);
+    }
+
+    <span class="kw">if </span>r.bbr2_state.packet_conservation {
+        r.congestion_window =
+            r.congestion_window.max(r.bytes_in_flight + acked_bytes);
+    }
+}
+
+<span class="comment">// 4.6.4.5.  Modulating cwnd in ProbeRTT
+</span><span class="kw">fn </span>bbr2_probe_rtt_cwnd(r: <span class="kw-2">&amp;mut </span>Recovery) -&gt; usize {
+    <span class="kw">let </span>probe_rtt_cwnd =
+        bbr2_bdp_multiple(r, r.bbr2_state.bw, PROBE_RTT_CWND_GAIN);
+
+    probe_rtt_cwnd.max(bbr2_min_pipe_cwnd(r))
+}
+
+<span class="kw">fn </span>bbr2_bound_cwnd_for_probe_rtt(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">if </span>r.bbr2_state.state == BBR2StateMachine::ProbeRTT {
+        r.congestion_window = r.congestion_window.min(bbr2_probe_rtt_cwnd(r));
+    }
+}
+
+<span class="comment">// 4.6.4.6.  Core cwnd Adjustment Mechanism
+</span><span class="kw">fn </span>bbr2_set_cwnd(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>acked_bytes = r.bbr2_state.newly_acked_bytes;
+
+    bbr2_update_max_inflight(r);
+    bbr2_modulate_cwnd_for_recovery(r);
+
+    <span class="kw">if </span>!r.bbr2_state.packet_conservation {
+        <span class="kw">if </span>r.bbr2_state.filled_pipe {
+            r.congestion_window = cmp::min(
+                r.congestion_window + acked_bytes,
+                r.bbr2_state.max_inflight,
+            )
+        } <span class="kw">else if </span>r.congestion_window &lt; r.bbr2_state.max_inflight ||
+            r.delivery_rate.delivered() &lt;
+                r.max_datagram_size * r.initial_congestion_window_packets
+        {
+            r.congestion_window += acked_bytes;
+        }
+
+        r.congestion_window = r.congestion_window.max(bbr2_min_pipe_cwnd(r))
+    }
+
+    bbr2_bound_cwnd_for_probe_rtt(r);
+    bbr2_bound_cwnd_for_model(r);
+}
+
+<span class="comment">// 4.6.4.7.  Bounding cwnd Based on Recent Congestion
+</span><span class="kw">fn </span>bbr2_bound_cwnd_for_model(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span><span class="kw-2">mut </span>cap = usize::MAX;
+
+    <span class="kw">if </span>bbr2_is_in_a_probe_bw_state(r) &amp;&amp;
+        r.bbr2_state.state != BBR2StateMachine::ProbeBWCRUISE
+    {
+        cap = r.bbr2_state.inflight_hi;
+    } <span class="kw">else if </span>r.bbr2_state.state == BBR2StateMachine::ProbeRTT ||
+        r.bbr2_state.state == BBR2StateMachine::ProbeBWCRUISE
+    {
+        cap = bbr2_inflight_with_headroom(r);
+    }
+
+    <span class="comment">// Apply inflight_lo (possibly infinite).
+    </span>cap = cap.min(r.bbr2_state.inflight_lo);
+    cap = cap.max(bbr2_min_pipe_cwnd(r));
+
+    r.congestion_window = r.congestion_window.min(cap);
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/recovery/bbr2/per_loss.rs.html b/src/quiche/recovery/bbr2/per_loss.rs.html
new file mode 100644
index 0000000..9afbea5
--- /dev/null
+++ b/src/quiche/recovery/bbr2/per_loss.rs.html
@@ -0,0 +1,419 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/recovery/bbr2/per_loss.rs`."><title>per_loss.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../../src-files.js"></script><script defer src="../../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2022, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+<span class="comment">// BBR2 Functions on every packet loss event.
+//
+// 4.2.4.  Per-Loss Steps
+</span><span class="kw">pub fn </span>bbr2_update_on_loss(r: <span class="kw-2">&amp;mut </span>Recovery, packet: <span class="kw-2">&amp;</span>Sent, now: Instant) {
+    bbr2_handle_lost_packet(r, packet, now);
+}
+
+<span class="comment">// 4.5.6.  Updating the Model Upon Packet Loss
+// 4.5.6.2.  Probing for Bandwidth In ProbeBW
+</span><span class="kw">pub fn </span>bbr2_check_inflight_too_high(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) -&gt; bool {
+    <span class="kw">if </span>bbr2_is_inflight_too_high(r) {
+        <span class="kw">if </span>r.bbr2_state.bw_probe_samples {
+            bbr2_handle_inflight_too_high(r, now);
+        }
+
+        <span class="comment">// inflight too high.
+        </span><span class="kw">return </span><span class="bool-val">true</span>;
+    }
+
+    <span class="comment">// inflight not too high.
+    </span><span class="bool-val">false
+</span>}
+
+<span class="kw">pub fn </span>bbr2_is_inflight_too_high(r: <span class="kw-2">&amp;mut </span>Recovery) -&gt; bool {
+    r.bbr2_state.lost &gt; (r.bbr2_state.tx_in_flight <span class="kw">as </span>f64 * LOSS_THRESH) <span class="kw">as </span>usize
+}
+
+<span class="kw">fn </span>bbr2_handle_inflight_too_high(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    <span class="comment">// Only react once per bw probe.
+    </span>r.bbr2_state.bw_probe_samples = <span class="bool-val">false</span>;
+
+    <span class="kw">if </span>!r.delivery_rate.sample_is_app_limited() {
+        r.bbr2_state.inflight_hi = r
+            .bbr2_state
+            .tx_in_flight
+            .max((per_ack::bbr2_target_inflight(r) <span class="kw">as </span>f64 * BETA) <span class="kw">as </span>usize);
+    }
+
+    <span class="kw">if </span>r.bbr2_state.state == BBR2StateMachine::ProbeBWUP {
+        per_ack::bbr2_start_probe_bw_down(r, now);
+    }
+}
+
+<span class="kw">fn </span>bbr2_handle_lost_packet(r: <span class="kw-2">&amp;mut </span>Recovery, packet: <span class="kw-2">&amp;</span>Sent, now: Instant) {
+    <span class="kw">if </span>!r.bbr2_state.bw_probe_samples {
+        <span class="kw">return</span>;
+    }
+
+    r.bbr2_state.tx_in_flight = packet.tx_in_flight;
+    r.bbr2_state.lost = (r.bytes_lost - packet.lost) <span class="kw">as </span>usize;
+
+    r.delivery_rate_update_app_limited(packet.is_app_limited);
+
+    <span class="kw">if </span>bbr2_is_inflight_too_high(r) {
+        r.bbr2_state.tx_in_flight = bbr2_inflight_hi_from_lost_packet(r, packet);
+
+        bbr2_handle_inflight_too_high(r, now);
+    }
+}
+
+<span class="kw">fn </span>bbr2_inflight_hi_from_lost_packet(r: <span class="kw-2">&amp;mut </span>Recovery, packet: <span class="kw-2">&amp;</span>Sent) -&gt; usize {
+    <span class="kw">let </span>size = packet.size;
+    <span class="kw">let </span>inflight_prev = r.bbr2_state.tx_in_flight - size;
+    <span class="kw">let </span>lost_prev = r.bbr2_state.lost - size;
+    <span class="kw">let </span>lost_prefix = (LOSS_THRESH * inflight_prev <span class="kw">as </span>f64 - lost_prev <span class="kw">as </span>f64) /
+        (<span class="number">1.0 </span>- LOSS_THRESH);
+
+    inflight_prev + lost_prefix <span class="kw">as </span>usize
+}
+
+<span class="comment">// 4.5.6.3.  When not Probing for Bandwidth
+</span><span class="kw">pub fn </span>bbr2_update_latest_delivery_signals(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    <span class="comment">// Near start of ACK processing.
+    </span>bbr.loss_round_start = <span class="bool-val">false</span>;
+    bbr.bw_latest = bbr.bw_latest.max(r.delivery_rate.sample_delivery_rate());
+    bbr.inflight_latest =
+        bbr.inflight_latest.max(r.delivery_rate.sample_delivered());
+
+    <span class="kw">if </span>r.delivery_rate.sample_prior_delivered() &gt;= bbr.loss_round_delivered {
+        bbr.loss_round_delivered = r.delivery_rate.delivered();
+        bbr.loss_round_start = <span class="bool-val">true</span>;
+    }
+}
+
+<span class="kw">pub fn </span>bbr2_advance_latest_delivery_signals(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    <span class="comment">// Near end of ACK processing.
+    </span><span class="kw">if </span>bbr.loss_round_start {
+        bbr.bw_latest = r.delivery_rate.sample_delivery_rate();
+        bbr.inflight_latest = r.delivery_rate.sample_delivered();
+    }
+}
+
+<span class="kw">pub fn </span>bbr2_reset_congestion_signals(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    bbr.loss_in_round = <span class="bool-val">false</span>;
+    bbr.loss_events_in_round = <span class="number">0</span>;
+    bbr.bw_latest = <span class="number">0</span>;
+    bbr.inflight_latest = <span class="number">0</span>;
+}
+
+<span class="kw">pub fn </span>bbr2_update_congestion_signals(r: <span class="kw-2">&amp;mut </span>Recovery, packet: <span class="kw-2">&amp;</span>Acked) {
+    <span class="comment">// Update congestion state on every ACK.
+    </span>per_ack::bbr2_update_max_bw(r, packet);
+
+    <span class="kw">if </span>r.bbr2_state.lost &gt; <span class="number">0 </span>{
+        r.bbr2_state.loss_in_round = <span class="bool-val">true</span>;
+        r.bbr2_state.loss_events_in_round += <span class="number">1</span>;
+    }
+
+    <span class="kw">if </span>!r.bbr2_state.loss_round_start {
+        <span class="comment">// Wait until end of round trip.
+        </span><span class="kw">return</span>;
+    }
+
+    bbr2_adapt_lower_bounds_from_congestion(r);
+
+    r.bbr2_state.loss_in_round = <span class="bool-val">false</span>;
+    r.bbr2_state.loss_events_in_round = <span class="number">0</span>;
+}
+
+<span class="kw">fn </span>bbr2_adapt_lower_bounds_from_congestion(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="comment">// Once per round-trip respond to congestion.
+    </span><span class="kw">if </span>bbr2_is_probing_bw(r) {
+        <span class="kw">return</span>;
+    }
+
+    <span class="kw">if </span>r.bbr2_state.loss_in_round {
+        bbr2_init_lower_bounds(r);
+        bbr2_loss_lower_bounds(r);
+    }
+}
+
+<span class="kw">fn </span>bbr2_init_lower_bounds(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    <span class="comment">// Handle the first congestion episode in this cycle.
+    </span><span class="kw">if </span>bbr.bw_lo == u64::MAX {
+        bbr.bw_lo = bbr.max_bw;
+    }
+
+    <span class="kw">if </span>bbr.inflight_lo == usize::MAX {
+        bbr.inflight_lo = r.congestion_window;
+    }
+}
+
+<span class="kw">fn </span>bbr2_loss_lower_bounds(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    <span class="comment">// Adjust model once per round based on loss.
+    </span>bbr.bw_lo = bbr.bw_latest.max((bbr.bw_lo <span class="kw">as </span>f64 * BETA) <span class="kw">as </span>u64);
+    bbr.inflight_lo = bbr
+        .inflight_latest
+        .max((bbr.inflight_lo <span class="kw">as </span>f64 * BETA) <span class="kw">as </span>usize);
+}
+
+<span class="kw">pub fn </span>bbr2_reset_lower_bounds(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    bbr.bw_lo = u64::MAX;
+    bbr.inflight_lo = usize::MAX;
+}
+
+<span class="kw">pub fn </span>bbr2_bound_bw_for_model(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>bbr = <span class="kw-2">&amp;mut </span>r.bbr2_state;
+
+    bbr.bw = bbr.max_bw.min(bbr.bw_lo.min(bbr.bw_hi));
+}
+
+<span class="comment">// This function is not defined in the draft but used.
+</span><span class="kw">fn </span>bbr2_is_probing_bw(r: <span class="kw-2">&amp;mut </span>Recovery) -&gt; bool {
+    <span class="kw">let </span>state = r.bbr2_state.state;
+
+    state == BBR2StateMachine::Startup ||
+        state == BBR2StateMachine::ProbeBWREFILL ||
+        state == BBR2StateMachine::ProbeBWUP
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/recovery/bbr2/per_transmit.rs.html b/src/quiche/recovery/bbr2/per_transmit.rs.html
new file mode 100644
index 0000000..1337f99
--- /dev/null
+++ b/src/quiche/recovery/bbr2/per_transmit.rs.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/recovery/bbr2/per_transmit.rs`."><title>per_transmit.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../../src-files.js"></script><script defer src="../../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2022, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+<span class="comment">// BBR2 Functions when trasmitting packets.
+//
+// 4.2.2.  Per-Transmit Steps
+</span><span class="kw">pub fn </span>bbr2_on_transmit(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    bbr2_handle_restart_from_idle(r, now);
+}
+
+<span class="comment">// 4.4.3.  Logic
+</span><span class="kw">fn </span>bbr2_handle_restart_from_idle(r: <span class="kw-2">&amp;mut </span>Recovery, now: Instant) {
+    <span class="kw">if </span>r.bytes_in_flight == <span class="number">0 </span>&amp;&amp; r.delivery_rate.app_limited() {
+        r.bbr2_state.idle_restart = <span class="bool-val">true</span>;
+        r.bbr2_state.extra_acked_interval_start = now;
+
+        <span class="kw">if </span>per_ack::bbr2_is_in_a_probe_bw_state(r) {
+            pacing::bbr2_set_pacing_rate_with_gain(r, <span class="number">1.0</span>);
+        } <span class="kw">else if </span>r.bbr2_state.state == BBR2StateMachine::ProbeRTT {
+            per_ack::bbr2_check_probe_rtt_done(r, now);
+        }
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/recovery/cubic.rs.html b/src/quiche/recovery/cubic.rs.html
new file mode 100644
index 0000000..4826d30
--- /dev/null
+++ b/src/quiche/recovery/cubic.rs.html
@@ -0,0 +1,2703 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/recovery/cubic.rs`."><title>cubic.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+<a href="#1217" id="1217">1217</a>
+<a href="#1218" id="1218">1218</a>
+<a href="#1219" id="1219">1219</a>
+<a href="#1220" id="1220">1220</a>
+<a href="#1221" id="1221">1221</a>
+<a href="#1222" id="1222">1222</a>
+<a href="#1223" id="1223">1223</a>
+<a href="#1224" id="1224">1224</a>
+<a href="#1225" id="1225">1225</a>
+<a href="#1226" id="1226">1226</a>
+<a href="#1227" id="1227">1227</a>
+<a href="#1228" id="1228">1228</a>
+<a href="#1229" id="1229">1229</a>
+<a href="#1230" id="1230">1230</a>
+<a href="#1231" id="1231">1231</a>
+<a href="#1232" id="1232">1232</a>
+<a href="#1233" id="1233">1233</a>
+<a href="#1234" id="1234">1234</a>
+<a href="#1235" id="1235">1235</a>
+<a href="#1236" id="1236">1236</a>
+<a href="#1237" id="1237">1237</a>
+<a href="#1238" id="1238">1238</a>
+<a href="#1239" id="1239">1239</a>
+<a href="#1240" id="1240">1240</a>
+<a href="#1241" id="1241">1241</a>
+<a href="#1242" id="1242">1242</a>
+<a href="#1243" id="1243">1243</a>
+<a href="#1244" id="1244">1244</a>
+<a href="#1245" id="1245">1245</a>
+<a href="#1246" id="1246">1246</a>
+<a href="#1247" id="1247">1247</a>
+<a href="#1248" id="1248">1248</a>
+<a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</a>
+<a href="#1259" id="1259">1259</a>
+<a href="#1260" id="1260">1260</a>
+<a href="#1261" id="1261">1261</a>
+<a href="#1262" id="1262">1262</a>
+<a href="#1263" id="1263">1263</a>
+<a href="#1264" id="1264">1264</a>
+<a href="#1265" id="1265">1265</a>
+<a href="#1266" id="1266">1266</a>
+<a href="#1267" id="1267">1267</a>
+<a href="#1268" id="1268">1268</a>
+<a href="#1269" id="1269">1269</a>
+<a href="#1270" id="1270">1270</a>
+<a href="#1271" id="1271">1271</a>
+<a href="#1272" id="1272">1272</a>
+<a href="#1273" id="1273">1273</a>
+<a href="#1274" id="1274">1274</a>
+<a href="#1275" id="1275">1275</a>
+<a href="#1276" id="1276">1276</a>
+<a href="#1277" id="1277">1277</a>
+<a href="#1278" id="1278">1278</a>
+<a href="#1279" id="1279">1279</a>
+<a href="#1280" id="1280">1280</a>
+<a href="#1281" id="1281">1281</a>
+<a href="#1282" id="1282">1282</a>
+<a href="#1283" id="1283">1283</a>
+<a href="#1284" id="1284">1284</a>
+<a href="#1285" id="1285">1285</a>
+<a href="#1286" id="1286">1286</a>
+<a href="#1287" id="1287">1287</a>
+<a href="#1288" id="1288">1288</a>
+<a href="#1289" id="1289">1289</a>
+<a href="#1290" id="1290">1290</a>
+<a href="#1291" id="1291">1291</a>
+<a href="#1292" id="1292">1292</a>
+<a href="#1293" id="1293">1293</a>
+<a href="#1294" id="1294">1294</a>
+<a href="#1295" id="1295">1295</a>
+<a href="#1296" id="1296">1296</a>
+<a href="#1297" id="1297">1297</a>
+<a href="#1298" id="1298">1298</a>
+<a href="#1299" id="1299">1299</a>
+<a href="#1300" id="1300">1300</a>
+<a href="#1301" id="1301">1301</a>
+<a href="#1302" id="1302">1302</a>
+<a href="#1303" id="1303">1303</a>
+<a href="#1304" id="1304">1304</a>
+<a href="#1305" id="1305">1305</a>
+<a href="#1306" id="1306">1306</a>
+<a href="#1307" id="1307">1307</a>
+<a href="#1308" id="1308">1308</a>
+<a href="#1309" id="1309">1309</a>
+<a href="#1310" id="1310">1310</a>
+<a href="#1311" id="1311">1311</a>
+<a href="#1312" id="1312">1312</a>
+<a href="#1313" id="1313">1313</a>
+<a href="#1314" id="1314">1314</a>
+<a href="#1315" id="1315">1315</a>
+<a href="#1316" id="1316">1316</a>
+<a href="#1317" id="1317">1317</a>
+<a href="#1318" id="1318">1318</a>
+<a href="#1319" id="1319">1319</a>
+<a href="#1320" id="1320">1320</a>
+<a href="#1321" id="1321">1321</a>
+<a href="#1322" id="1322">1322</a>
+<a href="#1323" id="1323">1323</a>
+<a href="#1324" id="1324">1324</a>
+<a href="#1325" id="1325">1325</a>
+<a href="#1326" id="1326">1326</a>
+<a href="#1327" id="1327">1327</a>
+<a href="#1328" id="1328">1328</a>
+<a href="#1329" id="1329">1329</a>
+<a href="#1330" id="1330">1330</a>
+<a href="#1331" id="1331">1331</a>
+<a href="#1332" id="1332">1332</a>
+<a href="#1333" id="1333">1333</a>
+<a href="#1334" id="1334">1334</a>
+<a href="#1335" id="1335">1335</a>
+<a href="#1336" id="1336">1336</a>
+<a href="#1337" id="1337">1337</a>
+<a href="#1338" id="1338">1338</a>
+<a href="#1339" id="1339">1339</a>
+<a href="#1340" id="1340">1340</a>
+<a href="#1341" id="1341">1341</a>
+<a href="#1342" id="1342">1342</a>
+<a href="#1343" id="1343">1343</a>
+<a href="#1344" id="1344">1344</a>
+<a href="#1345" id="1345">1345</a>
+<a href="#1346" id="1346">1346</a>
+<a href="#1347" id="1347">1347</a>
+<a href="#1348" id="1348">1348</a>
+<a href="#1349" id="1349">1349</a>
+<a href="#1350" id="1350">1350</a>
+<a href="#1351" id="1351">1351</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="doccomment">//! CUBIC Congestion Control
+//!
+//! This implementation is based on the following draft:
+//! &lt;https://tools.ietf.org/html/draft-ietf-tcpm-rfc8312bis-02&gt;
+//!
+//! Note that Slow Start can use HyStart++ when enabled.
+
+</span><span class="kw">use </span>std::cmp;
+
+<span class="kw">use </span>std::time::Duration;
+<span class="kw">use </span>std::time::Instant;
+
+<span class="kw">use </span><span class="kw">crate</span>::packet;
+<span class="kw">use </span><span class="kw">crate</span>::recovery;
+<span class="kw">use </span><span class="kw">crate</span>::recovery::reno;
+
+<span class="kw">use </span><span class="kw">crate</span>::recovery::Acked;
+<span class="kw">use </span><span class="kw">crate</span>::recovery::CongestionControlOps;
+<span class="kw">use </span><span class="kw">crate</span>::recovery::Recovery;
+<span class="kw">use </span><span class="kw">crate</span>::recovery::Sent;
+
+<span class="kw">pub static </span>CUBIC: CongestionControlOps = CongestionControlOps {
+    on_init,
+    reset,
+    on_packet_sent,
+    on_packets_acked,
+    congestion_event,
+    collapse_cwnd,
+    checkpoint,
+    rollback,
+    has_custom_pacing,
+    debug_fmt,
+};
+
+<span class="doccomment">/// CUBIC Constants.
+///
+/// These are recommended value in RFC8312.
+</span><span class="kw">const </span>BETA_CUBIC: f64 = <span class="number">0.7</span>;
+
+<span class="kw">const </span>C: f64 = <span class="number">0.4</span>;
+
+<span class="doccomment">/// Threshold for rolling back state, as percentage of lost packets relative to
+/// cwnd.
+</span><span class="kw">const </span>ROLLBACK_THRESHOLD_PERCENT: usize = <span class="number">20</span>;
+
+<span class="doccomment">/// Minimum threshold for rolling back state, as number of packets.
+</span><span class="kw">const </span>MIN_ROLLBACK_THRESHOLD: usize = <span class="number">2</span>;
+
+<span class="doccomment">/// Default value of alpha_aimd in the beginning of congestion avoidance.
+</span><span class="kw">const </span>ALPHA_AIMD: f64 = <span class="number">3.0 </span>* (<span class="number">1.0 </span>- BETA_CUBIC) / (<span class="number">1.0 </span>+ BETA_CUBIC);
+
+<span class="doccomment">/// CUBIC State Variables.
+///
+/// We need to keep those variables across the connection.
+/// k, w_max, w_est are described in the RFC.
+</span><span class="attr">#[derive(Debug, Default)]
+</span><span class="kw">pub struct </span>State {
+    k: f64,
+
+    w_max: f64,
+
+    w_est: f64,
+
+    alpha_aimd: f64,
+
+    <span class="comment">// Used in CUBIC fix (see on_packet_sent())
+    </span>last_sent_time: <span class="prelude-ty">Option</span>&lt;Instant&gt;,
+
+    <span class="comment">// Store cwnd increment during congestion avoidance.
+    </span>cwnd_inc: usize,
+
+    <span class="comment">// CUBIC state checkpoint preceding the last congestion event.
+    </span>prior: PriorState,
+}
+
+<span class="doccomment">/// Stores the CUBIC state from before the last congestion event.
+///
+/// &lt;https://tools.ietf.org/id/draft-ietf-tcpm-rfc8312bis-00.html#section-4.9&gt;
+</span><span class="attr">#[derive(Debug, Default)]
+</span><span class="kw">struct </span>PriorState {
+    congestion_window: usize,
+
+    ssthresh: usize,
+
+    w_max: f64,
+
+    k: f64,
+
+    epoch_start: <span class="prelude-ty">Option</span>&lt;Instant&gt;,
+
+    lost_count: usize,
+}
+
+<span class="doccomment">/// CUBIC Functions.
+///
+/// Note that these calculations are based on a count of cwnd as bytes,
+/// not packets.
+/// Unit of t (duration) and RTT are based on seconds (f64).
+</span><span class="kw">impl </span>State {
+    <span class="comment">// K = cubic_root ((w_max - cwnd) / C) (Eq. 2)
+    </span><span class="kw">fn </span>cubic_k(<span class="kw-2">&amp;</span><span class="self">self</span>, cwnd: usize, max_datagram_size: usize) -&gt; f64 {
+        <span class="kw">let </span>w_max = <span class="self">self</span>.w_max / max_datagram_size <span class="kw">as </span>f64;
+        <span class="kw">let </span>cwnd = cwnd <span class="kw">as </span>f64 / max_datagram_size <span class="kw">as </span>f64;
+
+        libm::cbrt((w_max - cwnd) / C)
+    }
+
+    <span class="comment">// W_cubic(t) = C * (t - K)^3 + w_max (Eq. 1)
+    </span><span class="kw">fn </span>w_cubic(<span class="kw-2">&amp;</span><span class="self">self</span>, t: Duration, max_datagram_size: usize) -&gt; f64 {
+        <span class="kw">let </span>w_max = <span class="self">self</span>.w_max / max_datagram_size <span class="kw">as </span>f64;
+
+        (C * (t.as_secs_f64() - <span class="self">self</span>.k).powi(<span class="number">3</span>) + w_max) *
+            max_datagram_size <span class="kw">as </span>f64
+    }
+
+    <span class="comment">// W_est = W_est + alpha_aimd * (segments_acked / cwnd)  (Eq. 4)
+    </span><span class="kw">fn </span>w_est_inc(
+        <span class="kw-2">&amp;</span><span class="self">self</span>, acked: usize, cwnd: usize, max_datagram_size: usize,
+    ) -&gt; f64 {
+        <span class="self">self</span>.alpha_aimd * (acked <span class="kw">as </span>f64 / cwnd <span class="kw">as </span>f64) * max_datagram_size <span class="kw">as </span>f64
+    }
+}
+
+<span class="kw">fn </span>on_init(_r: <span class="kw-2">&amp;mut </span>Recovery) {}
+
+<span class="kw">fn </span>reset(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    r.cubic_state = State::default();
+}
+
+<span class="kw">fn </span>collapse_cwnd(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    <span class="kw">let </span>cubic = <span class="kw-2">&amp;mut </span>r.cubic_state;
+
+    r.congestion_recovery_start_time = <span class="prelude-val">None</span>;
+
+    cubic.w_max = r.congestion_window <span class="kw">as </span>f64;
+
+    <span class="comment">// 4.7 Timeout - reduce ssthresh based on BETA_CUBIC
+    </span>r.ssthresh = (r.congestion_window <span class="kw">as </span>f64 * BETA_CUBIC) <span class="kw">as </span>usize;
+    r.ssthresh = cmp::max(
+        r.ssthresh,
+        r.max_datagram_size * recovery::MINIMUM_WINDOW_PACKETS,
+    );
+
+    cubic.cwnd_inc = <span class="number">0</span>;
+
+    reno::collapse_cwnd(r);
+}
+
+<span class="kw">fn </span>on_packet_sent(r: <span class="kw-2">&amp;mut </span>Recovery, sent_bytes: usize, now: Instant) {
+    <span class="comment">// See https://github.com/torvalds/linux/commit/30927520dbae297182990bb21d08762bcc35ce1d
+    // First transmit when no packets in flight
+    </span><span class="kw">let </span>cubic = <span class="kw-2">&amp;mut </span>r.cubic_state;
+
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(last_sent_time) = cubic.last_sent_time {
+        <span class="kw">if </span>r.bytes_in_flight == <span class="number">0 </span>{
+            <span class="kw">let </span>delta = now - last_sent_time;
+
+            <span class="comment">// We were application limited (idle) for a while.
+            // Shift epoch start to keep cwnd growth to cubic curve.
+            </span><span class="kw">if let </span><span class="prelude-val">Some</span>(recovery_start_time) = r.congestion_recovery_start_time {
+                <span class="kw">if </span>delta.as_nanos() &gt; <span class="number">0 </span>{
+                    r.congestion_recovery_start_time =
+                        <span class="prelude-val">Some</span>(recovery_start_time + delta);
+                }
+            }
+        }
+    }
+
+    cubic.last_sent_time = <span class="prelude-val">Some</span>(now);
+
+    reno::on_packet_sent(r, sent_bytes, now);
+}
+
+<span class="kw">fn </span>on_packets_acked(
+    r: <span class="kw-2">&amp;mut </span>Recovery, packets: <span class="kw-2">&amp;mut </span>Vec&lt;Acked&gt;, epoch: packet::Epoch,
+    now: Instant,
+) {
+    <span class="kw">for </span>pkt <span class="kw">in </span>packets.drain(..) {
+        on_packet_acked(r, <span class="kw-2">&amp;</span>pkt, epoch, now);
+    }
+}
+
+<span class="kw">fn </span>on_packet_acked(
+    r: <span class="kw-2">&amp;mut </span>Recovery, packet: <span class="kw-2">&amp;</span>Acked, epoch: packet::Epoch, now: Instant,
+) {
+    <span class="kw">let </span>in_congestion_recovery = r.in_congestion_recovery(packet.time_sent);
+
+    r.bytes_in_flight = r.bytes_in_flight.saturating_sub(packet.size);
+
+    <span class="kw">if </span>in_congestion_recovery {
+        r.prr.on_packet_acked(
+            packet.size,
+            r.bytes_in_flight,
+            r.ssthresh,
+            r.max_datagram_size,
+        );
+
+        <span class="kw">return</span>;
+    }
+
+    <span class="kw">if </span>r.app_limited {
+        <span class="kw">return</span>;
+    }
+
+    <span class="comment">// Detecting spurious congestion events.
+    // &lt;https://tools.ietf.org/id/draft-ietf-tcpm-rfc8312bis-00.html#section-4.9&gt;
+    //
+    // When the recovery episode ends with recovering
+    // a few packets (less than cwnd / mss * ROLLBACK_THRESHOLD_PERCENT(%)), it's
+    // considered as spurious and restore to the previous state.
+    </span><span class="kw">if </span>r.congestion_recovery_start_time.is_some() {
+        <span class="kw">let </span>new_lost = r.lost_count - r.cubic_state.prior.lost_count;
+        <span class="kw">let </span>rollback_threshold = (r.congestion_window / r.max_datagram_size) *
+            ROLLBACK_THRESHOLD_PERCENT /
+            <span class="number">100</span>;
+        <span class="kw">let </span>rollback_threshold = rollback_threshold.max(MIN_ROLLBACK_THRESHOLD);
+
+        <span class="kw">if </span>new_lost &lt; rollback_threshold {
+            <span class="kw">let </span>did_rollback = rollback(r);
+
+            <span class="kw">if </span>did_rollback {
+                <span class="kw">return</span>;
+            }
+        }
+    }
+
+    <span class="kw">if </span>r.congestion_window &lt; r.ssthresh {
+        <span class="comment">// In Slow slart, bytes_acked_sl is used for counting
+        // acknowledged bytes.
+        </span>r.bytes_acked_sl += packet.size;
+
+        <span class="kw">if </span>r.bytes_acked_sl &gt;= r.max_datagram_size {
+            <span class="kw">if </span>r.hystart.in_css(epoch) {
+                r.congestion_window +=
+                    r.hystart.css_cwnd_inc(r.max_datagram_size);
+            } <span class="kw">else </span>{
+                r.congestion_window += r.max_datagram_size;
+            }
+
+            r.bytes_acked_sl -= r.max_datagram_size;
+        }
+
+        <span class="kw">if </span>r.hystart.on_packet_acked(epoch, packet, r.latest_rtt, now) {
+            <span class="comment">// Exit to congestion avoidance if CSS ends.
+            </span>r.ssthresh = r.congestion_window;
+        }
+    } <span class="kw">else </span>{
+        <span class="comment">// Congestion avoidance.
+        </span><span class="kw">let </span>ca_start_time;
+
+        <span class="comment">// In CSS, use css_start_time instead of congestion_recovery_start_time.
+        </span><span class="kw">if </span>r.hystart.in_css(epoch) {
+            ca_start_time = r.hystart.css_start_time().unwrap();
+
+            <span class="comment">// Reset w_max and k when CSS started.
+            </span><span class="kw">if </span>r.cubic_state.w_max == <span class="number">0.0 </span>{
+                r.cubic_state.w_max = r.congestion_window <span class="kw">as </span>f64;
+                r.cubic_state.k = <span class="number">0.0</span>;
+
+                r.cubic_state.w_est = r.congestion_window <span class="kw">as </span>f64;
+                r.cubic_state.alpha_aimd = ALPHA_AIMD;
+            }
+        } <span class="kw">else </span>{
+            <span class="kw">match </span>r.congestion_recovery_start_time {
+                <span class="prelude-val">Some</span>(t) =&gt; ca_start_time = t,
+                <span class="prelude-val">None </span>=&gt; {
+                    <span class="comment">// When we come here without congestion_event() triggered,
+                    // initialize congestion_recovery_start_time, w_max and k.
+                    </span>ca_start_time = now;
+                    r.congestion_recovery_start_time = <span class="prelude-val">Some</span>(now);
+
+                    r.cubic_state.w_max = r.congestion_window <span class="kw">as </span>f64;
+                    r.cubic_state.k = <span class="number">0.0</span>;
+
+                    r.cubic_state.w_est = r.congestion_window <span class="kw">as </span>f64;
+                    r.cubic_state.alpha_aimd = ALPHA_AIMD;
+                },
+            }
+        }
+
+        <span class="kw">let </span>t = now.saturating_duration_since(ca_start_time);
+
+        <span class="comment">// target = w_cubic(t + rtt)
+        </span><span class="kw">let </span>target = r.cubic_state.w_cubic(t + r.min_rtt, r.max_datagram_size);
+
+        <span class="comment">// Clipping target to [cwnd, 1.5 x cwnd]
+        </span><span class="kw">let </span>target = f64::max(target, r.congestion_window <span class="kw">as </span>f64);
+        <span class="kw">let </span>target = f64::min(target, r.congestion_window <span class="kw">as </span>f64 * <span class="number">1.5</span>);
+
+        <span class="comment">// Update w_est.
+        </span><span class="kw">let </span>w_est_inc = r.cubic_state.w_est_inc(
+            packet.size,
+            r.congestion_window,
+            r.max_datagram_size,
+        );
+        r.cubic_state.w_est += w_est_inc;
+
+        <span class="kw">if </span>r.cubic_state.w_est &gt;= r.cubic_state.w_max {
+            r.cubic_state.alpha_aimd = <span class="number">1.0</span>;
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>cubic_cwnd = r.congestion_window;
+
+        <span class="kw">if </span>r.cubic_state.w_cubic(t, r.max_datagram_size) &lt; r.cubic_state.w_est {
+            <span class="comment">// AIMD friendly region (W_cubic(t) &lt; W_est)
+            </span>cubic_cwnd = cmp::max(cubic_cwnd, r.cubic_state.w_est <span class="kw">as </span>usize);
+        } <span class="kw">else </span>{
+            <span class="comment">// Concave region or convex region use same increment.
+            </span><span class="kw">let </span>cubic_inc =
+                r.max_datagram_size * (target <span class="kw">as </span>usize - cubic_cwnd) / cubic_cwnd;
+
+            cubic_cwnd += cubic_inc;
+        }
+
+        <span class="comment">// Update the increment and increase cwnd by MSS.
+        </span>r.cubic_state.cwnd_inc += cubic_cwnd - r.congestion_window;
+
+        <span class="kw">if </span>r.cubic_state.cwnd_inc &gt;= r.max_datagram_size {
+            r.congestion_window += r.max_datagram_size;
+            r.cubic_state.cwnd_inc -= r.max_datagram_size;
+        }
+    }
+}
+
+<span class="kw">fn </span>congestion_event(
+    r: <span class="kw-2">&amp;mut </span>Recovery, _lost_bytes: usize, largest_lost_pkt: <span class="kw-2">&amp;</span>Sent,
+    epoch: packet::Epoch, now: Instant,
+) {
+    <span class="kw">let </span>time_sent = largest_lost_pkt.time_sent;
+    <span class="kw">let </span>in_congestion_recovery = r.in_congestion_recovery(time_sent);
+
+    <span class="comment">// Start a new congestion event if packet was sent after the
+    // start of the previous congestion recovery period.
+    </span><span class="kw">if </span>!in_congestion_recovery {
+        r.congestion_recovery_start_time = <span class="prelude-val">Some</span>(now);
+
+        <span class="comment">// Fast convergence
+        </span><span class="kw">if </span>(r.congestion_window <span class="kw">as </span>f64) &lt; r.cubic_state.w_max {
+            r.cubic_state.w_max =
+                r.congestion_window <span class="kw">as </span>f64 * (<span class="number">1.0 </span>+ BETA_CUBIC) / <span class="number">2.0</span>;
+        } <span class="kw">else </span>{
+            r.cubic_state.w_max = r.congestion_window <span class="kw">as </span>f64;
+        }
+
+        r.ssthresh = (r.congestion_window <span class="kw">as </span>f64 * BETA_CUBIC) <span class="kw">as </span>usize;
+        r.ssthresh = cmp::max(
+            r.ssthresh,
+            r.max_datagram_size * recovery::MINIMUM_WINDOW_PACKETS,
+        );
+        r.congestion_window = r.ssthresh;
+
+        r.cubic_state.k = <span class="kw">if </span>r.cubic_state.w_max &lt; r.congestion_window <span class="kw">as </span>f64 {
+            <span class="number">0.0
+        </span>} <span class="kw">else </span>{
+            r.cubic_state
+                .cubic_k(r.congestion_window, r.max_datagram_size)
+        };
+
+        r.cubic_state.cwnd_inc =
+            (r.cubic_state.cwnd_inc <span class="kw">as </span>f64 * BETA_CUBIC) <span class="kw">as </span>usize;
+
+        r.cubic_state.w_est = r.congestion_window <span class="kw">as </span>f64;
+        r.cubic_state.alpha_aimd = ALPHA_AIMD;
+
+        <span class="kw">if </span>r.hystart.in_css(epoch) {
+            r.hystart.congestion_event();
+        }
+
+        r.prr.congestion_event(r.bytes_in_flight);
+    }
+}
+
+<span class="kw">fn </span>checkpoint(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    r.cubic_state.prior.congestion_window = r.congestion_window;
+    r.cubic_state.prior.ssthresh = r.ssthresh;
+    r.cubic_state.prior.w_max = r.cubic_state.w_max;
+    r.cubic_state.prior.k = r.cubic_state.k;
+    r.cubic_state.prior.epoch_start = r.congestion_recovery_start_time;
+    r.cubic_state.prior.lost_count = r.lost_count;
+}
+
+<span class="kw">fn </span>rollback(r: <span class="kw-2">&amp;mut </span>Recovery) -&gt; bool {
+    <span class="comment">// Don't go back to slow start.
+    </span><span class="kw">if </span>r.cubic_state.prior.congestion_window &lt; r.cubic_state.prior.ssthresh {
+        <span class="kw">return </span><span class="bool-val">false</span>;
+    }
+
+    <span class="kw">if </span>r.congestion_window &gt;= r.cubic_state.prior.congestion_window {
+        <span class="kw">return </span><span class="bool-val">false</span>;
+    }
+
+    r.congestion_window = r.cubic_state.prior.congestion_window;
+    r.ssthresh = r.cubic_state.prior.ssthresh;
+    r.cubic_state.w_max = r.cubic_state.prior.w_max;
+    r.cubic_state.k = r.cubic_state.prior.k;
+    r.congestion_recovery_start_time = r.cubic_state.prior.epoch_start;
+
+    <span class="bool-val">true
+</span>}
+
+<span class="kw">fn </span>has_custom_pacing() -&gt; bool {
+    <span class="bool-val">false
+</span>}
+
+<span class="kw">fn </span>debug_fmt(r: <span class="kw-2">&amp;</span>Recovery, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+    <span class="macro">write!</span>(
+        f,
+        <span class="string">"cubic={{ k={} w_max={} }} "</span>,
+        r.cubic_state.k, r.cubic_state.w_max
+    )
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+    <span class="kw">use </span><span class="kw">crate</span>::recovery::hystart;
+
+    <span class="kw">use </span>smallvec::smallvec;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>cubic_init() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::CUBIC);
+
+        <span class="kw">let </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+
+        <span class="macro">assert!</span>(r.cwnd() &gt; <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">0</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>cubic_send() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::CUBIC);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+
+        r.on_packet_sent_cc(<span class="number">1000</span>, Instant::now());
+
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">1000</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>cubic_slow_start() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::CUBIC);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span>now = Instant::now();
+
+        <span class="kw">let </span>p = recovery::Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: r.max_datagram_size,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        <span class="comment">// Send initcwnd full MSS packets to become no longer app limited
+        </span><span class="kw">for _ in </span><span class="number">0</span>..r.initial_congestion_window_packets {
+            r.on_packet_sent_cc(p.size, now);
+        }
+
+        <span class="kw">let </span>cwnd_prev = r.cwnd();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>acked = <span class="macro">vec!</span>[Acked {
+            pkt_num: p.pkt_num,
+            time_sent: p.time_sent,
+            size: p.size,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            rtt: Duration::ZERO,
+        }];
+
+        r.on_packets_acked(<span class="kw-2">&amp;mut </span>acked, packet::Epoch::Application, now);
+
+        <span class="comment">// Check if cwnd increased by packet size (slow start)
+        </span><span class="macro">assert_eq!</span>(r.cwnd(), cwnd_prev + p.size);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>cubic_slow_start_multi_acks() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::CUBIC);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span>now = Instant::now();
+
+        <span class="kw">let </span>p = recovery::Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: r.max_datagram_size,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        <span class="comment">// Send initcwnd full MSS packets to become no longer app limited
+        </span><span class="kw">for _ in </span><span class="number">0</span>..r.initial_congestion_window_packets {
+            r.on_packet_sent_cc(p.size, now);
+        }
+
+        <span class="kw">let </span>cwnd_prev = r.cwnd();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>acked = <span class="macro">vec!</span>[
+            Acked {
+                pkt_num: p.pkt_num,
+                time_sent: p.time_sent,
+                size: p.size,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                rtt: Duration::ZERO,
+            },
+            Acked {
+                pkt_num: p.pkt_num,
+                time_sent: p.time_sent,
+                size: p.size,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                rtt: Duration::ZERO,
+            },
+            Acked {
+                pkt_num: p.pkt_num,
+                time_sent: p.time_sent,
+                size: p.size,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                rtt: Duration::ZERO,
+            },
+        ];
+
+        r.on_packets_acked(<span class="kw-2">&amp;mut </span>acked, packet::Epoch::Application, now);
+
+        <span class="comment">// Acked 3 packets.
+        </span><span class="macro">assert_eq!</span>(r.cwnd(), cwnd_prev + p.size * <span class="number">3</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>cubic_congestion_event() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::CUBIC);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span>now = Instant::now();
+        <span class="kw">let </span>prev_cwnd = r.cwnd();
+
+        <span class="kw">let </span>p = recovery::Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: r.max_datagram_size,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            has_data: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.congestion_event(
+            r.max_datagram_size,
+            <span class="kw-2">&amp;</span>p,
+            packet::Epoch::Application,
+            now,
+        );
+
+        <span class="comment">// In CUBIC, after congestion event, cwnd will be reduced by (1 -
+        // CUBIC_BETA)
+        </span><span class="macro">assert_eq!</span>(prev_cwnd <span class="kw">as </span>f64 * BETA_CUBIC, r.cwnd() <span class="kw">as </span>f64);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>cubic_congestion_avoidance() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::CUBIC);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span><span class="kw-2">mut </span>now = Instant::now();
+        <span class="kw">let </span>prev_cwnd = r.cwnd();
+
+        <span class="comment">// Send initcwnd full MSS packets to become no longer app limited
+        </span><span class="kw">for _ in </span><span class="number">0</span>..r.initial_congestion_window_packets {
+            r.on_packet_sent_cc(r.max_datagram_size, now);
+        }
+
+        <span class="kw">let </span>p = recovery::Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: r.max_datagram_size,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            has_data: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        <span class="comment">// Trigger congestion event to update ssthresh
+        </span>r.congestion_event(
+            r.max_datagram_size,
+            <span class="kw-2">&amp;</span>p,
+            packet::Epoch::Application,
+            now,
+        );
+
+        <span class="comment">// After congestion event, cwnd will be reduced.
+        </span><span class="kw">let </span>cur_cwnd = (prev_cwnd <span class="kw">as </span>f64 * BETA_CUBIC) <span class="kw">as </span>usize;
+        <span class="macro">assert_eq!</span>(r.cwnd(), cur_cwnd);
+
+        <span class="comment">// Shift current time by 1 RTT.
+        </span><span class="kw">let </span>rtt = Duration::from_millis(<span class="number">100</span>);
+
+        r.update_rtt(rtt, Duration::from_millis(<span class="number">0</span>), now);
+
+        <span class="comment">// Exit from the recovery.
+        </span>now += rtt;
+
+        <span class="comment">// To avoid rollback
+        </span>r.lost_count += MIN_ROLLBACK_THRESHOLD;
+
+        <span class="comment">// During Congestion Avoidance, it will take
+        // 5 ACKs to increase cwnd by 1 MSS.
+        </span><span class="kw">for _ in </span><span class="number">0</span>..<span class="number">5 </span>{
+            <span class="kw">let </span><span class="kw-2">mut </span>acked = <span class="macro">vec!</span>[Acked {
+                pkt_num: <span class="number">0</span>,
+                time_sent: now,
+                size: r.max_datagram_size,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                rtt: Duration::ZERO,
+            }];
+
+            r.on_packets_acked(<span class="kw-2">&amp;mut </span>acked, packet::Epoch::Application, now);
+            now += rtt;
+        }
+
+        <span class="macro">assert_eq!</span>(r.cwnd(), cur_cwnd + r.max_datagram_size);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>cubic_collapse_cwnd_and_restart() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::CUBIC);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span>now = Instant::now();
+
+        <span class="comment">// Fill up bytes_in_flight to avoid app_limited=true
+        </span>r.on_packet_sent_cc(<span class="number">30000</span>, now);
+
+        <span class="comment">// Trigger congestion event to update ssthresh
+        </span><span class="kw">let </span>p = recovery::Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: r.max_datagram_size,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            has_data: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.congestion_event(
+            r.max_datagram_size,
+            <span class="kw-2">&amp;</span>p,
+            packet::Epoch::Application,
+            now,
+        );
+
+        <span class="comment">// After persistent congestion, cwnd should be the minimum window
+        </span>r.collapse_cwnd();
+        <span class="macro">assert_eq!</span>(
+            r.cwnd(),
+            r.max_datagram_size * recovery::MINIMUM_WINDOW_PACKETS
+        );
+
+        <span class="kw">let </span><span class="kw-2">mut </span>acked = <span class="macro">vec!</span>[Acked {
+            pkt_num: <span class="number">0</span>,
+            <span class="comment">// To exit from recovery
+            </span>time_sent: now + Duration::from_millis(<span class="number">1</span>),
+            size: r.max_datagram_size,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            rtt: Duration::ZERO,
+        }];
+
+        r.on_packets_acked(<span class="kw-2">&amp;mut </span>acked, packet::Epoch::Application, now);
+
+        <span class="comment">// Slow start again - cwnd will be increased by 1 MSS
+        </span><span class="macro">assert_eq!</span>(
+            r.cwnd(),
+            r.max_datagram_size * (recovery::MINIMUM_WINDOW_PACKETS + <span class="number">1</span>)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>cubic_hystart_css_to_ss() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::CUBIC);
+        cfg.enable_hystart(<span class="bool-val">true</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span>now = Instant::now();
+        <span class="kw">let </span>epoch = packet::Epoch::Application;
+
+        <span class="kw">let </span>p = recovery::Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: r.max_datagram_size,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        <span class="comment">// 1st round.
+        </span><span class="kw">let </span>n_rtt_sample = hystart::N_RTT_SAMPLE;
+        <span class="kw">let </span><span class="kw-2">mut </span>send_pn = <span class="number">0</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>ack_pn = <span class="number">0</span>;
+
+        <span class="kw">let </span>rtt_1st = Duration::from_millis(<span class="number">50</span>);
+
+        <span class="comment">// Send 1st round packets.
+        </span><span class="kw">for _ in </span><span class="number">0</span>..n_rtt_sample {
+            r.on_packet_sent_cc(p.size, now);
+            send_pn += <span class="number">1</span>;
+        }
+
+        r.hystart.start_round(send_pn - <span class="number">1</span>);
+
+        <span class="comment">// Receiving Acks.
+        </span><span class="kw">let </span>now = now + rtt_1st;
+        <span class="kw">for _ in </span><span class="number">0</span>..n_rtt_sample {
+            r.update_rtt(rtt_1st, Duration::from_millis(<span class="number">0</span>), now);
+
+            <span class="kw">let </span><span class="kw-2">mut </span>acked = <span class="macro">vec!</span>[Acked {
+                pkt_num: ack_pn,
+                time_sent: p.time_sent,
+                size: p.size,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                rtt: Duration::ZERO,
+            }];
+
+            r.on_packets_acked(<span class="kw-2">&amp;mut </span>acked, epoch, now);
+            ack_pn += <span class="number">1</span>;
+        }
+
+        <span class="comment">// Not in CSS yet.
+        </span><span class="macro">assert!</span>(r.hystart.css_start_time().is_none());
+
+        <span class="comment">// 2nd round.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>rtt_2nd = Duration::from_millis(<span class="number">100</span>);
+        <span class="kw">let </span>now = now + rtt_2nd;
+
+        <span class="comment">// Send 2nd round packets.
+        </span><span class="kw">for _ in </span><span class="number">0</span>..n_rtt_sample {
+            r.on_packet_sent_cc(p.size, now);
+            send_pn += <span class="number">1</span>;
+        }
+        r.hystart.start_round(send_pn - <span class="number">1</span>);
+
+        <span class="comment">// Receiving Acks.
+        // Last ack will cause to exit to CSS.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>cwnd_prev = r.cwnd();
+
+        <span class="kw">for _ in </span><span class="number">0</span>..n_rtt_sample {
+            cwnd_prev = r.cwnd();
+            r.update_rtt(rtt_2nd, Duration::from_millis(<span class="number">0</span>), now);
+
+            <span class="kw">let </span><span class="kw-2">mut </span>acked = <span class="macro">vec!</span>[Acked {
+                pkt_num: ack_pn,
+                time_sent: p.time_sent,
+                size: p.size,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                rtt: Duration::ZERO,
+            }];
+
+            r.on_packets_acked(<span class="kw-2">&amp;mut </span>acked, epoch, now);
+            ack_pn += <span class="number">1</span>;
+
+            <span class="comment">// Keep increasing RTT so that hystart exits to CSS.
+            </span>rtt_2nd += rtt_2nd.saturating_add(Duration::from_millis(<span class="number">4</span>));
+        }
+
+        <span class="comment">// Now we are in CSS.
+        </span><span class="macro">assert!</span>(r.hystart.css_start_time().is_some());
+        <span class="macro">assert_eq!</span>(r.cwnd(), cwnd_prev + r.max_datagram_size);
+
+        <span class="comment">// 3rd round, which RTT is less than previous round to
+        // trigger back to Slow Start.
+        </span><span class="kw">let </span>rtt_3rd = Duration::from_millis(<span class="number">80</span>);
+        <span class="kw">let </span>now = now + rtt_3rd;
+        cwnd_prev = r.cwnd();
+
+        <span class="comment">// Send 3nd round packets.
+        </span><span class="kw">for _ in </span><span class="number">0</span>..n_rtt_sample {
+            r.on_packet_sent_cc(p.size, now);
+            send_pn += <span class="number">1</span>;
+        }
+        r.hystart.start_round(send_pn - <span class="number">1</span>);
+
+        <span class="comment">// Receiving Acks.
+        // Last ack will cause to exit to SS.
+        </span><span class="kw">for _ in </span><span class="number">0</span>..n_rtt_sample {
+            r.update_rtt(rtt_3rd, Duration::from_millis(<span class="number">0</span>), now);
+
+            <span class="kw">let </span><span class="kw-2">mut </span>acked = <span class="macro">vec!</span>[Acked {
+                pkt_num: ack_pn,
+                time_sent: p.time_sent,
+                size: p.size,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                rtt: Duration::ZERO,
+            }];
+
+            r.on_packets_acked(<span class="kw-2">&amp;mut </span>acked, epoch, now);
+            ack_pn += <span class="number">1</span>;
+        }
+
+        <span class="comment">// Now we are back in Slow Start.
+        </span><span class="macro">assert!</span>(r.hystart.css_start_time().is_none());
+        <span class="macro">assert_eq!</span>(
+            r.cwnd(),
+            cwnd_prev +
+                r.max_datagram_size / hystart::CSS_GROWTH_DIVISOR *
+                    hystart::N_RTT_SAMPLE
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>cubic_hystart_css_to_ca() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::CUBIC);
+        cfg.enable_hystart(<span class="bool-val">true</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span>now = Instant::now();
+        <span class="kw">let </span>epoch = packet::Epoch::Application;
+
+        <span class="kw">let </span>p = recovery::Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: r.max_datagram_size,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        <span class="comment">// 1st round.
+        </span><span class="kw">let </span>n_rtt_sample = hystart::N_RTT_SAMPLE;
+        <span class="kw">let </span><span class="kw-2">mut </span>send_pn = <span class="number">0</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>ack_pn = <span class="number">0</span>;
+
+        <span class="kw">let </span>rtt_1st = Duration::from_millis(<span class="number">50</span>);
+
+        <span class="comment">// Send 1st round packets.
+        </span><span class="kw">for _ in </span><span class="number">0</span>..n_rtt_sample {
+            r.on_packet_sent_cc(p.size, now);
+            send_pn += <span class="number">1</span>;
+        }
+
+        r.hystart.start_round(send_pn - <span class="number">1</span>);
+
+        <span class="comment">// Receiving Acks.
+        </span><span class="kw">let </span>now = now + rtt_1st;
+        <span class="kw">for _ in </span><span class="number">0</span>..n_rtt_sample {
+            r.update_rtt(rtt_1st, Duration::from_millis(<span class="number">0</span>), now);
+
+            <span class="kw">let </span><span class="kw-2">mut </span>acked = <span class="macro">vec!</span>[Acked {
+                pkt_num: ack_pn,
+                time_sent: p.time_sent,
+                size: p.size,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                rtt: Duration::ZERO,
+            }];
+
+            r.on_packets_acked(<span class="kw-2">&amp;mut </span>acked, epoch, now);
+            ack_pn += <span class="number">1</span>;
+        }
+
+        <span class="comment">// Not in CSS yet.
+        </span><span class="macro">assert!</span>(r.hystart.css_start_time().is_none());
+
+        <span class="comment">// 2nd round.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>rtt_2nd = Duration::from_millis(<span class="number">100</span>);
+        <span class="kw">let </span>now = now + rtt_2nd;
+
+        <span class="comment">// Send 2nd round packets.
+        </span><span class="kw">for _ in </span><span class="number">0</span>..n_rtt_sample {
+            r.on_packet_sent_cc(p.size, now);
+            send_pn += <span class="number">1</span>;
+        }
+        r.hystart.start_round(send_pn - <span class="number">1</span>);
+
+        <span class="comment">// Receiving Acks.
+        // Last ack will cause to exit to CSS.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>cwnd_prev = r.cwnd();
+
+        <span class="kw">for _ in </span><span class="number">0</span>..n_rtt_sample {
+            cwnd_prev = r.cwnd();
+            r.update_rtt(rtt_2nd, Duration::from_millis(<span class="number">0</span>), now);
+
+            <span class="kw">let </span><span class="kw-2">mut </span>acked = <span class="macro">vec!</span>[Acked {
+                pkt_num: ack_pn,
+                time_sent: p.time_sent,
+                size: p.size,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                rtt: Duration::ZERO,
+            }];
+
+            r.on_packets_acked(<span class="kw-2">&amp;mut </span>acked, epoch, now);
+            ack_pn += <span class="number">1</span>;
+
+            <span class="comment">// Keep increasing RTT so that hystart exits to CSS.
+            </span>rtt_2nd += rtt_2nd.saturating_add(Duration::from_millis(<span class="number">4</span>));
+        }
+
+        <span class="comment">// Now we are in CSS.
+        </span><span class="macro">assert!</span>(r.hystart.css_start_time().is_some());
+        <span class="macro">assert_eq!</span>(r.cwnd(), cwnd_prev + r.max_datagram_size);
+
+        <span class="comment">// Run 5 (CSS_ROUNDS) in CSS, to exit to congestion avoidance.
+        </span><span class="kw">let </span>rtt_css = Duration::from_millis(<span class="number">100</span>);
+        <span class="kw">let </span>now = now + rtt_css;
+
+        <span class="kw">for _ in </span><span class="number">0</span>..hystart::CSS_ROUNDS {
+            <span class="comment">// Send a round of packets.
+            </span><span class="kw">for _ in </span><span class="number">0</span>..n_rtt_sample {
+                r.on_packet_sent_cc(p.size, now);
+                send_pn += <span class="number">1</span>;
+            }
+            r.hystart.start_round(send_pn - <span class="number">1</span>);
+
+            <span class="comment">// Receiving Acks.
+            </span><span class="kw">for _ in </span><span class="number">0</span>..n_rtt_sample {
+                r.update_rtt(rtt_css, Duration::from_millis(<span class="number">0</span>), now);
+
+                <span class="kw">let </span><span class="kw-2">mut </span>acked = <span class="macro">vec!</span>[Acked {
+                    pkt_num: ack_pn,
+                    time_sent: p.time_sent,
+                    size: p.size,
+                    delivered: <span class="number">0</span>,
+                    delivered_time: now,
+                    first_sent_time: now,
+                    is_app_limited: <span class="bool-val">false</span>,
+                    tx_in_flight: <span class="number">0</span>,
+                    lost: <span class="number">0</span>,
+                    rtt: Duration::ZERO,
+                }];
+
+                r.on_packets_acked(<span class="kw-2">&amp;mut </span>acked, epoch, now);
+                ack_pn += <span class="number">1</span>;
+            }
+        }
+
+        <span class="comment">// Now we are in congestion avoidance.
+        </span><span class="macro">assert_eq!</span>(r.cwnd(), r.ssthresh);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>cubic_spurious_congestion_event() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::CUBIC);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span>now = Instant::now();
+        <span class="kw">let </span>prev_cwnd = r.cwnd();
+
+        <span class="comment">// Send initcwnd full MSS packets to become no longer app limited
+        </span><span class="kw">for _ in </span><span class="number">0</span>..r.initial_congestion_window_packets {
+            r.on_packet_sent_cc(r.max_datagram_size, now);
+        }
+
+        <span class="comment">// Trigger congestion event to update ssthresh
+        </span><span class="kw">let </span>p = recovery::Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: r.max_datagram_size,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            has_data: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.congestion_event(
+            r.max_datagram_size,
+            <span class="kw-2">&amp;</span>p,
+            packet::Epoch::Application,
+            now,
+        );
+
+        <span class="comment">// After congestion event, cwnd will be reduced.
+        </span><span class="kw">let </span>cur_cwnd = (prev_cwnd <span class="kw">as </span>f64 * BETA_CUBIC) <span class="kw">as </span>usize;
+        <span class="macro">assert_eq!</span>(r.cwnd(), cur_cwnd);
+
+        <span class="kw">let </span>rtt = Duration::from_millis(<span class="number">100</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>acked = <span class="macro">vec!</span>[Acked {
+            pkt_num: <span class="number">0</span>,
+            <span class="comment">// To exit from recovery
+            </span>time_sent: now + rtt,
+            size: r.max_datagram_size,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            rtt: Duration::ZERO,
+        }];
+
+        <span class="comment">// Ack more than cwnd bytes with rtt=100ms
+        </span>r.update_rtt(rtt, Duration::from_millis(<span class="number">0</span>), now);
+
+        <span class="comment">// Trigger detecting spurious congestion event
+        </span>r.on_packets_acked(
+            <span class="kw-2">&amp;mut </span>acked,
+            packet::Epoch::Application,
+            now + rtt + Duration::from_millis(<span class="number">5</span>),
+        );
+
+        <span class="comment">// This is from slow start, no rollback.
+        </span><span class="macro">assert_eq!</span>(r.cwnd(), cur_cwnd);
+
+        <span class="kw">let </span>now = now + rtt;
+
+        <span class="comment">// Trigger another congestion event.
+        </span><span class="kw">let </span>p = recovery::Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: r.max_datagram_size,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            has_data: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        <span class="kw">let </span>prev_cwnd = r.cwnd();
+        r.congestion_event(
+            r.max_datagram_size,
+            <span class="kw-2">&amp;</span>p,
+            packet::Epoch::Application,
+            now,
+        );
+
+        <span class="comment">// After congestion event, cwnd will be reduced.
+        </span><span class="kw">let </span>cur_cwnd = (cur_cwnd <span class="kw">as </span>f64 * BETA_CUBIC) <span class="kw">as </span>usize;
+        <span class="macro">assert_eq!</span>(r.cwnd(), cur_cwnd);
+
+        <span class="kw">let </span>rtt = Duration::from_millis(<span class="number">100</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>acked = <span class="macro">vec!</span>[Acked {
+            pkt_num: <span class="number">0</span>,
+            <span class="comment">// To exit from recovery
+            </span>time_sent: now + rtt,
+            size: r.max_datagram_size,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            rtt: Duration::ZERO,
+        }];
+
+        <span class="comment">// Ack more than cwnd bytes with rtt=100ms.
+        </span>r.update_rtt(rtt, Duration::from_millis(<span class="number">0</span>), now);
+
+        <span class="comment">// Trigger detecting spurious congestion event.
+        </span>r.on_packets_acked(
+            <span class="kw-2">&amp;mut </span>acked,
+            packet::Epoch::Application,
+            now + rtt + Duration::from_millis(<span class="number">5</span>),
+        );
+
+        <span class="comment">// cwnd is rolled back to the previous one.
+        </span><span class="macro">assert_eq!</span>(r.cwnd(), prev_cwnd);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>cubic_fast_convergence() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::CUBIC);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span><span class="kw-2">mut </span>now = Instant::now();
+        <span class="kw">let </span>prev_cwnd = r.cwnd();
+
+        <span class="comment">// Send initcwnd full MSS packets to become no longer app limited
+        </span><span class="kw">for _ in </span><span class="number">0</span>..r.initial_congestion_window_packets {
+            r.on_packet_sent_cc(r.max_datagram_size, now);
+        }
+
+        <span class="comment">// Trigger congestion event to update ssthresh
+        </span><span class="kw">let </span>p = recovery::Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: r.max_datagram_size,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            has_data: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.congestion_event(
+            r.max_datagram_size,
+            <span class="kw-2">&amp;</span>p,
+            packet::Epoch::Application,
+            now,
+        );
+
+        <span class="comment">// After 1st congestion event, cwnd will be reduced.
+        </span><span class="kw">let </span>cur_cwnd = (prev_cwnd <span class="kw">as </span>f64 * BETA_CUBIC) <span class="kw">as </span>usize;
+        <span class="macro">assert_eq!</span>(r.cwnd(), cur_cwnd);
+
+        <span class="comment">// Shift current time by 1 RTT.
+        </span><span class="kw">let </span>rtt = Duration::from_millis(<span class="number">100</span>);
+        r.update_rtt(rtt, Duration::from_millis(<span class="number">0</span>), now);
+
+        <span class="comment">// Exit from the recovery.
+        </span>now += rtt;
+
+        <span class="comment">// To avoid rollback
+        </span>r.lost_count += MIN_ROLLBACK_THRESHOLD;
+
+        <span class="comment">// During Congestion Avoidance, it will take
+        // 5 ACKs to increase cwnd by 1 MSS.
+        </span><span class="kw">for _ in </span><span class="number">0</span>..<span class="number">5 </span>{
+            <span class="kw">let </span><span class="kw-2">mut </span>acked = <span class="macro">vec!</span>[Acked {
+                pkt_num: <span class="number">0</span>,
+                time_sent: now,
+                size: r.max_datagram_size,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                rtt: Duration::ZERO,
+            }];
+
+            r.on_packets_acked(<span class="kw-2">&amp;mut </span>acked, packet::Epoch::Application, now);
+            now += rtt;
+        }
+
+        <span class="macro">assert_eq!</span>(r.cwnd(), cur_cwnd + r.max_datagram_size);
+
+        <span class="kw">let </span>prev_cwnd = r.cwnd();
+
+        <span class="comment">// Fast convergence: now there is 2nd congestion event and
+        // cwnd is not fully recovered to w_max, w_max will be
+        // further reduced.
+        </span><span class="kw">let </span>p = recovery::Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: r.max_datagram_size,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            has_data: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.congestion_event(
+            r.max_datagram_size,
+            <span class="kw-2">&amp;</span>p,
+            packet::Epoch::Application,
+            now,
+        );
+
+        <span class="comment">// After 2nd congestion event, cwnd will be reduced.
+        </span><span class="kw">let </span>cur_cwnd = (prev_cwnd <span class="kw">as </span>f64 * BETA_CUBIC) <span class="kw">as </span>usize;
+        <span class="macro">assert_eq!</span>(r.cwnd(), cur_cwnd);
+
+        <span class="comment">// w_max will be further reduced, not prev_cwnd
+        </span><span class="macro">assert_eq!</span>(
+            r.cubic_state.w_max,
+            prev_cwnd <span class="kw">as </span>f64 * (<span class="number">1.0 </span>+ BETA_CUBIC) / <span class="number">2.0
+        </span>);
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/recovery/delivery_rate.rs.html b/src/quiche/recovery/delivery_rate.rs.html
new file mode 100644
index 0000000..ae3283a
--- /dev/null
+++ b/src/quiche/recovery/delivery_rate.rs.html
@@ -0,0 +1,789 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/recovery/delivery_rate.rs`."><title>delivery_rate.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2020-2022, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="doccomment">//! Delivery rate estimation.
+//!
+//! This implements the algorithm for estimating delivery rate as described in
+//! &lt;https://tools.ietf.org/html/draft-cheng-iccrg-delivery-rate-estimation-01&gt;
+
+</span><span class="kw">use </span>std::time::Duration;
+<span class="kw">use </span>std::time::Instant;
+
+<span class="kw">use </span><span class="kw">crate</span>::recovery::Acked;
+<span class="kw">use </span><span class="kw">crate</span>::recovery::Sent;
+
+<span class="attr">#[derive(Debug)]
+</span><span class="kw">pub struct </span>Rate {
+    delivered: usize,
+
+    delivered_time: Instant,
+
+    first_sent_time: Instant,
+
+    <span class="comment">// Packet number of the last sent packet with app limited.
+    </span>end_of_app_limited: u64,
+
+    <span class="comment">// Packet number of the last sent packet.
+    </span>last_sent_packet: u64,
+
+    <span class="comment">// Packet number of the largest acked packet.
+    </span>largest_acked: u64,
+
+    <span class="comment">// Sample of rate estimation.
+    </span>rate_sample: RateSample,
+}
+
+<span class="kw">impl </span>Default <span class="kw">for </span>Rate {
+    <span class="kw">fn </span>default() -&gt; <span class="self">Self </span>{
+        <span class="kw">let </span>now = Instant::now();
+
+        Rate {
+            delivered: <span class="number">0</span>,
+
+            delivered_time: now,
+
+            first_sent_time: now,
+
+            end_of_app_limited: <span class="number">0</span>,
+
+            last_sent_packet: <span class="number">0</span>,
+
+            largest_acked: <span class="number">0</span>,
+
+            rate_sample: RateSample::default(),
+        }
+    }
+}
+
+<span class="kw">impl </span>Rate {
+    <span class="kw">pub fn </span>on_packet_sent(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, pkt: <span class="kw-2">&amp;mut </span>Sent, bytes_in_flight: usize, bytes_lost: u64,
+    ) {
+        <span class="comment">// No packets in flight.
+        </span><span class="kw">if </span>bytes_in_flight == <span class="number">0 </span>{
+            <span class="self">self</span>.first_sent_time = pkt.time_sent;
+            <span class="self">self</span>.delivered_time = pkt.time_sent;
+        }
+
+        pkt.first_sent_time = <span class="self">self</span>.first_sent_time;
+        pkt.delivered_time = <span class="self">self</span>.delivered_time;
+        pkt.delivered = <span class="self">self</span>.delivered;
+        pkt.is_app_limited = <span class="self">self</span>.app_limited();
+        pkt.tx_in_flight = bytes_in_flight;
+        pkt.lost = bytes_lost;
+
+        <span class="self">self</span>.last_sent_packet = pkt.pkt_num;
+    }
+
+    <span class="comment">// Update the delivery rate sample when a packet is acked.
+    </span><span class="kw">pub fn </span>update_rate_sample(<span class="kw-2">&amp;mut </span><span class="self">self</span>, pkt: <span class="kw-2">&amp;</span>Acked, now: Instant) {
+        <span class="self">self</span>.delivered += pkt.size;
+        <span class="self">self</span>.delivered_time = now;
+
+        <span class="comment">// Update info using the newest packet. If rate_sample is not yet
+        // initialized, initialize with the first packet.
+        </span><span class="kw">if </span><span class="self">self</span>.rate_sample.prior_time.is_none() ||
+            pkt.delivered &gt; <span class="self">self</span>.rate_sample.prior_delivered
+        {
+            <span class="self">self</span>.rate_sample.prior_delivered = pkt.delivered;
+            <span class="self">self</span>.rate_sample.prior_time = <span class="prelude-val">Some</span>(pkt.delivered_time);
+            <span class="self">self</span>.rate_sample.is_app_limited = pkt.is_app_limited;
+            <span class="self">self</span>.rate_sample.send_elapsed =
+                pkt.time_sent.saturating_duration_since(pkt.first_sent_time);
+            <span class="self">self</span>.rate_sample.rtt = pkt.rtt;
+            <span class="self">self</span>.rate_sample.ack_elapsed = <span class="self">self
+                </span>.delivered_time
+                .saturating_duration_since(pkt.delivered_time);
+
+            <span class="self">self</span>.first_sent_time = pkt.time_sent;
+        }
+
+        <span class="self">self</span>.largest_acked = <span class="self">self</span>.largest_acked.max(pkt.pkt_num);
+    }
+
+    <span class="kw">pub fn </span>generate_rate_sample(<span class="kw-2">&amp;mut </span><span class="self">self</span>, min_rtt: Duration) {
+        <span class="comment">// End app-limited phase if bubble is ACKed and gone.
+        </span><span class="kw">if </span><span class="self">self</span>.app_limited() &amp;&amp; <span class="self">self</span>.largest_acked &gt; <span class="self">self</span>.end_of_app_limited {
+            <span class="self">self</span>.update_app_limited(<span class="bool-val">false</span>);
+        }
+
+        <span class="kw">if </span><span class="self">self</span>.rate_sample.prior_time.is_some() {
+            <span class="kw">let </span>interval = <span class="self">self
+                </span>.rate_sample
+                .send_elapsed
+                .max(<span class="self">self</span>.rate_sample.ack_elapsed);
+
+            <span class="self">self</span>.rate_sample.delivered =
+                <span class="self">self</span>.delivered - <span class="self">self</span>.rate_sample.prior_delivered;
+            <span class="self">self</span>.rate_sample.interval = interval;
+
+            <span class="kw">if </span>interval &lt; min_rtt {
+                <span class="self">self</span>.rate_sample.interval = Duration::ZERO;
+
+                <span class="comment">// No reliable sample.
+                </span><span class="kw">return</span>;
+            }
+
+            <span class="kw">if </span>!interval.is_zero() {
+                <span class="comment">// Fill in rate_sample with a rate sample.
+                </span><span class="self">self</span>.rate_sample.delivery_rate =
+                    (<span class="self">self</span>.rate_sample.delivered <span class="kw">as </span>f64 / interval.as_secs_f64())
+                        <span class="kw">as </span>u64;
+            }
+        }
+    }
+
+    <span class="kw">pub fn </span>update_app_limited(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: bool) {
+        <span class="self">self</span>.end_of_app_limited = <span class="kw">if </span>v { <span class="self">self</span>.last_sent_packet.max(<span class="number">1</span>) } <span class="kw">else </span>{ <span class="number">0 </span>}
+    }
+
+    <span class="kw">pub fn </span>app_limited(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.end_of_app_limited != <span class="number">0
+    </span>}
+
+    <span class="kw">pub fn </span>delivered(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.delivered
+    }
+
+    <span class="kw">pub fn </span>sample_delivery_rate(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.rate_sample.delivery_rate
+    }
+
+    <span class="kw">pub fn </span>sample_rtt(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; Duration {
+        <span class="self">self</span>.rate_sample.rtt
+    }
+
+    <span class="kw">pub fn </span>sample_is_app_limited(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.rate_sample.is_app_limited
+    }
+
+    <span class="kw">pub fn </span>sample_delivered(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.rate_sample.delivered
+    }
+
+    <span class="kw">pub fn </span>sample_prior_delivered(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.rate_sample.prior_delivered
+    }
+}
+
+<span class="attr">#[derive(Default, Debug)]
+</span><span class="kw">struct </span>RateSample {
+    delivery_rate: u64,
+
+    is_app_limited: bool,
+
+    interval: Duration,
+
+    delivered: usize,
+
+    prior_delivered: usize,
+
+    prior_time: <span class="prelude-ty">Option</span>&lt;Instant&gt;,
+
+    send_elapsed: Duration,
+
+    ack_elapsed: Duration,
+
+    rtt: Duration,
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="kw">use </span><span class="kw">crate</span>::recovery::<span class="kw-2">*</span>;
+
+    <span class="kw">use </span>smallvec::smallvec;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>rate_check() {
+        <span class="kw">let </span>config = Config::new(<span class="number">0xbabababa</span>).unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>config);
+
+        <span class="kw">let </span>now = Instant::now();
+        <span class="kw">let </span>mss = r.max_datagram_size();
+
+        <span class="comment">// Send 2 packets.
+        </span><span class="kw">for </span>pn <span class="kw">in </span><span class="number">0</span>..<span class="number">2 </span>{
+            <span class="kw">let </span>pkt = Sent {
+                pkt_num: pn,
+                frames: <span class="macro">smallvec!</span>[],
+                time_sent: now,
+                time_acked: <span class="prelude-val">None</span>,
+                time_lost: <span class="prelude-val">None</span>,
+                size: mss,
+                ack_eliciting: <span class="bool-val">true</span>,
+                in_flight: <span class="bool-val">true</span>,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                has_data: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                pmtud: <span class="bool-val">false</span>,
+            };
+
+            r.on_packet_sent(
+                pkt,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+            );
+        }
+
+        <span class="kw">let </span>rtt = Duration::from_millis(<span class="number">50</span>);
+        <span class="kw">let </span>now = now + rtt;
+
+        <span class="comment">// Ack 2 packets.
+        </span><span class="kw">for </span>pn <span class="kw">in </span><span class="number">0</span>..<span class="number">2 </span>{
+            <span class="kw">let </span>acked = Acked {
+                pkt_num: pn,
+                time_sent: now,
+                size: mss,
+                rtt,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now.checked_sub(rtt).unwrap(),
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+            };
+
+            r.delivery_rate.update_rate_sample(<span class="kw-2">&amp;</span>acked, now);
+        }
+
+        <span class="comment">// Update rate sample after 1 rtt.
+        </span>r.delivery_rate.generate_rate_sample(rtt);
+
+        <span class="comment">// Bytes acked so far.
+        </span><span class="macro">assert_eq!</span>(r.delivery_rate.delivered(), <span class="number">2400</span>);
+
+        <span class="comment">// Estimated delivery rate = (1200 x 2) / 0.05s = 48000.
+        </span><span class="macro">assert_eq!</span>(r.delivery_rate(), <span class="number">48000</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>app_limited_cwnd_full() {
+        <span class="kw">let </span>config = Config::new(<span class="number">0xbabababa</span>).unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>config);
+
+        <span class="kw">let </span>now = Instant::now();
+        <span class="kw">let </span>mss = r.max_datagram_size();
+
+        <span class="comment">// Send 10 packets to fill cwnd.
+        </span><span class="kw">for </span>pn <span class="kw">in </span><span class="number">0</span>..<span class="number">10 </span>{
+            <span class="kw">let </span>pkt = Sent {
+                pkt_num: pn,
+                frames: <span class="macro">smallvec!</span>[],
+                time_sent: now,
+                time_acked: <span class="prelude-val">None</span>,
+                time_lost: <span class="prelude-val">None</span>,
+                size: mss,
+                ack_eliciting: <span class="bool-val">true</span>,
+                in_flight: <span class="bool-val">true</span>,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                has_data: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                pmtud: <span class="bool-val">false</span>,
+            };
+
+            r.on_packet_sent(
+                pkt,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+            );
+        }
+
+        <span class="macro">assert!</span>(!r.app_limited());
+        <span class="macro">assert!</span>(!r.delivery_rate.sample_is_app_limited());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>app_limited_check() {
+        <span class="kw">let </span>config = Config::new(<span class="number">0xbabababa</span>).unwrap();
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>config);
+
+        <span class="kw">let </span>now = Instant::now();
+        <span class="kw">let </span>mss = r.max_datagram_size();
+
+        <span class="comment">// Send 5 packets.
+        </span><span class="kw">for </span>pn <span class="kw">in </span><span class="number">0</span>..<span class="number">5 </span>{
+            <span class="kw">let </span>pkt = Sent {
+                pkt_num: pn,
+                frames: <span class="macro">smallvec!</span>[],
+                time_sent: now,
+                time_acked: <span class="prelude-val">None</span>,
+                time_lost: <span class="prelude-val">None</span>,
+                size: mss,
+                ack_eliciting: <span class="bool-val">true</span>,
+                in_flight: <span class="bool-val">true</span>,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                has_data: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                pmtud: <span class="bool-val">false</span>,
+            };
+
+            r.on_packet_sent(
+                pkt,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+            );
+        }
+
+        <span class="kw">let </span>rtt = Duration::from_millis(<span class="number">50</span>);
+        <span class="kw">let </span>now = now + rtt;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+        acked.insert(<span class="number">0</span>..<span class="number">5</span>);
+
+        <span class="macro">assert_eq!</span>(
+            r.on_ack_received(
+                <span class="kw-2">&amp;</span>acked,
+                <span class="number">25</span>,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+                <span class="kw-2">&amp;mut </span>Vec::new(),
+            ),
+            <span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="number">0</span>)),
+        );
+
+        <span class="macro">assert!</span>(r.app_limited());
+        <span class="comment">// Rate sample is not app limited (all acked).
+        </span><span class="macro">assert!</span>(!r.delivery_rate.sample_is_app_limited());
+        <span class="macro">assert_eq!</span>(r.delivery_rate.sample_rtt(), rtt);
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/recovery/hystart.rs.html b/src/quiche/recovery/hystart.rs.html
new file mode 100644
index 0000000..32b8bdd
--- /dev/null
+++ b/src/quiche/recovery/hystart.rs.html
@@ -0,0 +1,499 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/recovery/hystart.rs`."><title>hystart.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2020, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="doccomment">//! HyStart++
+//!
+//! This implementation is based on the following I-D:
+//!
+//! &lt;https://datatracker.ietf.org/doc/html/draft-ietf-tcpm-hystartplusplus-04&gt;
+
+</span><span class="kw">use </span>std::cmp;
+<span class="kw">use </span>std::time::Duration;
+<span class="kw">use </span>std::time::Instant;
+
+<span class="kw">use </span><span class="kw">crate</span>::packet;
+<span class="kw">use </span><span class="kw">crate</span>::recovery;
+
+<span class="doccomment">/// Constants from I-D.
+</span><span class="kw">const </span>MIN_RTT_THRESH: Duration = Duration::from_millis(<span class="number">4</span>);
+
+<span class="kw">const </span>MAX_RTT_THRESH: Duration = Duration::from_millis(<span class="number">16</span>);
+
+<span class="kw">pub const </span>N_RTT_SAMPLE: usize = <span class="number">8</span>;
+
+<span class="kw">pub const </span>CSS_GROWTH_DIVISOR: usize = <span class="number">4</span>;
+
+<span class="kw">pub const </span>CSS_ROUNDS: usize = <span class="number">5</span>;
+
+<span class="attr">#[derive(Default)]
+</span><span class="kw">pub struct </span>Hystart {
+    enabled: bool,
+
+    window_end: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    last_round_min_rtt: Duration,
+
+    current_round_min_rtt: Duration,
+
+    css_baseline_min_rtt: Duration,
+
+    rtt_sample_count: usize,
+
+    css_start_time: <span class="prelude-ty">Option</span>&lt;Instant&gt;,
+
+    css_round_count: usize,
+}
+
+<span class="kw">impl </span>std::fmt::Debug <span class="kw">for </span>Hystart {
+    <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+        <span class="macro">write!</span>(f, <span class="string">"window_end={:?} "</span>, <span class="self">self</span>.window_end)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"last_round_min_rtt={:?} "</span>, <span class="self">self</span>.last_round_min_rtt)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"current_round_min_rtt={:?} "</span>, <span class="self">self</span>.current_round_min_rtt)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"css_baseline_min_rtt={:?} "</span>, <span class="self">self</span>.css_baseline_min_rtt)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"rtt_sample_count={:?} "</span>, <span class="self">self</span>.rtt_sample_count)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"css_start_time={:?} "</span>, <span class="self">self</span>.css_start_time)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"css_round_count={:?}"</span>, <span class="self">self</span>.css_round_count)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+}
+
+<span class="kw">impl </span>Hystart {
+    <span class="kw">pub fn </span>new(enabled: bool) -&gt; <span class="self">Self </span>{
+        <span class="self">Self </span>{
+            enabled,
+
+            last_round_min_rtt: Duration::MAX,
+
+            current_round_min_rtt: Duration::MAX,
+
+            css_baseline_min_rtt: Duration::MAX,
+
+            ..Default::default()
+        }
+    }
+
+    <span class="kw">pub fn </span>reset(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="kw-2">*</span><span class="self">self </span>= <span class="self">Self</span>::new(<span class="self">self</span>.enabled);
+    }
+
+    <span class="kw">pub fn </span>enabled(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.enabled
+    }
+
+    <span class="kw">pub fn </span>css_start_time(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;Instant&gt; {
+        <span class="self">self</span>.css_start_time
+    }
+
+    <span class="kw">pub fn </span>in_css(<span class="kw-2">&amp;</span><span class="self">self</span>, epoch: packet::Epoch) -&gt; bool {
+        <span class="self">self</span>.enabled &amp;&amp;
+            epoch == packet::Epoch::Application &amp;&amp;
+            <span class="self">self</span>.css_start_time().is_some()
+    }
+
+    <span class="kw">pub fn </span>start_round(<span class="kw-2">&amp;mut </span><span class="self">self</span>, pkt_num: u64) {
+        <span class="kw">if </span><span class="self">self</span>.window_end.is_none() {
+            <span class="self">self</span>.window_end = <span class="prelude-val">Some</span>(pkt_num);
+
+            <span class="self">self</span>.last_round_min_rtt = <span class="self">self</span>.current_round_min_rtt;
+
+            <span class="self">self</span>.current_round_min_rtt = Duration::MAX;
+
+            <span class="self">self</span>.rtt_sample_count = <span class="number">0</span>;
+        }
+    }
+
+    <span class="comment">// On receiving ACK. Returns true if need to enter Congestion Avoidance.
+    </span><span class="kw">pub fn </span>on_packet_acked(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, epoch: packet::Epoch, packet: <span class="kw-2">&amp;</span>recovery::Acked, rtt: Duration,
+        now: Instant,
+    ) -&gt; bool {
+        <span class="kw">if </span>!(<span class="self">self</span>.enabled &amp;&amp; epoch == packet::Epoch::Application) {
+            <span class="kw">return </span><span class="bool-val">false</span>;
+        }
+
+        <span class="self">self</span>.current_round_min_rtt = cmp::min(<span class="self">self</span>.current_round_min_rtt, rtt);
+
+        <span class="self">self</span>.rtt_sample_count += <span class="number">1</span>;
+
+        <span class="comment">// Slow Start.
+        </span><span class="kw">if </span><span class="self">self</span>.css_start_time().is_none() {
+            <span class="kw">if </span><span class="self">self</span>.rtt_sample_count &gt;= N_RTT_SAMPLE &amp;&amp;
+                <span class="self">self</span>.current_round_min_rtt != Duration::MAX &amp;&amp;
+                <span class="self">self</span>.last_round_min_rtt != Duration::MAX
+            {
+                <span class="comment">// clamp(min_rtt_thresh, last_round_min_rtt/8,
+                // max_rtt_thresh)
+                </span><span class="kw">let </span>rtt_thresh =
+                    cmp::max(<span class="self">self</span>.last_round_min_rtt / <span class="number">8</span>, MIN_RTT_THRESH);
+                <span class="kw">let </span>rtt_thresh = cmp::min(rtt_thresh, MAX_RTT_THRESH);
+
+                <span class="comment">// Check if we can exit to CSS.
+                </span><span class="kw">if </span><span class="self">self</span>.current_round_min_rtt &gt;=
+                    <span class="self">self</span>.last_round_min_rtt.saturating_add(rtt_thresh)
+                {
+                    <span class="self">self</span>.css_baseline_min_rtt = <span class="self">self</span>.current_round_min_rtt;
+                    <span class="self">self</span>.css_start_time = <span class="prelude-val">Some</span>(now);
+                }
+            }
+        } <span class="kw">else </span>{
+            <span class="comment">// Conservative Slow Start.
+            </span><span class="kw">if </span><span class="self">self</span>.rtt_sample_count &gt;= N_RTT_SAMPLE {
+                <span class="self">self</span>.rtt_sample_count = <span class="number">0</span>;
+
+                <span class="kw">if </span><span class="self">self</span>.current_round_min_rtt &lt; <span class="self">self</span>.css_baseline_min_rtt {
+                    <span class="self">self</span>.css_baseline_min_rtt = Duration::MAX;
+
+                    <span class="comment">// Back to Slow Start.
+                    </span><span class="self">self</span>.css_start_time = <span class="prelude-val">None</span>;
+                    <span class="self">self</span>.css_round_count = <span class="number">0</span>;
+                }
+            }
+        }
+
+        <span class="comment">// Check if we reached the end of the round.
+        </span><span class="kw">if let </span><span class="prelude-val">Some</span>(end_pkt_num) = <span class="self">self</span>.window_end {
+            <span class="kw">if </span>packet.pkt_num &gt;= end_pkt_num {
+                <span class="comment">// Start of a new round.
+                </span><span class="self">self</span>.window_end = <span class="prelude-val">None</span>;
+
+                <span class="kw">if </span><span class="self">self</span>.css_start_time().is_some() {
+                    <span class="self">self</span>.css_round_count += <span class="number">1</span>;
+
+                    <span class="comment">// End of CSS - exit to congestion avoidance.
+                    </span><span class="kw">if </span><span class="self">self</span>.css_round_count &gt;= CSS_ROUNDS {
+                        <span class="self">self</span>.css_round_count = <span class="number">0</span>;
+                        <span class="kw">return </span><span class="bool-val">true</span>;
+                    }
+                }
+            }
+        }
+
+        <span class="bool-val">false
+    </span>}
+
+    <span class="comment">// Return a cwnd increment during CSS (Conservative Slow Start).
+    </span><span class="kw">pub fn </span>css_cwnd_inc(<span class="kw-2">&amp;</span><span class="self">self</span>, pkt_size: usize) -&gt; usize {
+        pkt_size / CSS_GROWTH_DIVISOR
+    }
+
+    <span class="comment">// Exit HyStart++ when entering congestion avoidance.
+    </span><span class="kw">pub fn </span>congestion_event(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="self">self</span>.window_end = <span class="prelude-val">None</span>;
+        <span class="self">self</span>.css_start_time = <span class="prelude-val">None</span>;
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>start_round() {
+        <span class="kw">let </span><span class="kw-2">mut </span>hspp = Hystart::default();
+        <span class="kw">let </span>pkt_num = <span class="number">100</span>;
+
+        hspp.start_round(pkt_num);
+
+        <span class="macro">assert_eq!</span>(hspp.window_end, <span class="prelude-val">Some</span>(pkt_num));
+        <span class="macro">assert_eq!</span>(hspp.current_round_min_rtt, Duration::MAX);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>css_cwnd_inc() {
+        <span class="kw">let </span>hspp = Hystart::default();
+        <span class="kw">let </span>datagram_size = <span class="number">1200</span>;
+
+        <span class="kw">let </span>css_cwnd_inc = hspp.css_cwnd_inc(datagram_size);
+
+        <span class="macro">assert_eq!</span>(datagram_size / CSS_GROWTH_DIVISOR, css_cwnd_inc);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>congestion_event() {
+        <span class="kw">let </span><span class="kw-2">mut </span>hspp = Hystart::default();
+        <span class="kw">let </span>pkt_num = <span class="number">100</span>;
+
+        hspp.start_round(pkt_num);
+
+        <span class="macro">assert_eq!</span>(hspp.window_end, <span class="prelude-val">Some</span>(pkt_num));
+
+        <span class="comment">// When moving into CA mode, window_end should be cleared.
+        </span>hspp.congestion_event();
+
+        <span class="macro">assert_eq!</span>(hspp.window_end, <span class="prelude-val">None</span>);
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/recovery/mod.rs.html b/src/quiche/recovery/mod.rs.html
new file mode 100644
index 0000000..14c3074
--- /dev/null
+++ b/src/quiche/recovery/mod.rs.html
@@ -0,0 +1,4955 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/recovery/mod.rs`."><title>mod.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+<a href="#1217" id="1217">1217</a>
+<a href="#1218" id="1218">1218</a>
+<a href="#1219" id="1219">1219</a>
+<a href="#1220" id="1220">1220</a>
+<a href="#1221" id="1221">1221</a>
+<a href="#1222" id="1222">1222</a>
+<a href="#1223" id="1223">1223</a>
+<a href="#1224" id="1224">1224</a>
+<a href="#1225" id="1225">1225</a>
+<a href="#1226" id="1226">1226</a>
+<a href="#1227" id="1227">1227</a>
+<a href="#1228" id="1228">1228</a>
+<a href="#1229" id="1229">1229</a>
+<a href="#1230" id="1230">1230</a>
+<a href="#1231" id="1231">1231</a>
+<a href="#1232" id="1232">1232</a>
+<a href="#1233" id="1233">1233</a>
+<a href="#1234" id="1234">1234</a>
+<a href="#1235" id="1235">1235</a>
+<a href="#1236" id="1236">1236</a>
+<a href="#1237" id="1237">1237</a>
+<a href="#1238" id="1238">1238</a>
+<a href="#1239" id="1239">1239</a>
+<a href="#1240" id="1240">1240</a>
+<a href="#1241" id="1241">1241</a>
+<a href="#1242" id="1242">1242</a>
+<a href="#1243" id="1243">1243</a>
+<a href="#1244" id="1244">1244</a>
+<a href="#1245" id="1245">1245</a>
+<a href="#1246" id="1246">1246</a>
+<a href="#1247" id="1247">1247</a>
+<a href="#1248" id="1248">1248</a>
+<a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</a>
+<a href="#1259" id="1259">1259</a>
+<a href="#1260" id="1260">1260</a>
+<a href="#1261" id="1261">1261</a>
+<a href="#1262" id="1262">1262</a>
+<a href="#1263" id="1263">1263</a>
+<a href="#1264" id="1264">1264</a>
+<a href="#1265" id="1265">1265</a>
+<a href="#1266" id="1266">1266</a>
+<a href="#1267" id="1267">1267</a>
+<a href="#1268" id="1268">1268</a>
+<a href="#1269" id="1269">1269</a>
+<a href="#1270" id="1270">1270</a>
+<a href="#1271" id="1271">1271</a>
+<a href="#1272" id="1272">1272</a>
+<a href="#1273" id="1273">1273</a>
+<a href="#1274" id="1274">1274</a>
+<a href="#1275" id="1275">1275</a>
+<a href="#1276" id="1276">1276</a>
+<a href="#1277" id="1277">1277</a>
+<a href="#1278" id="1278">1278</a>
+<a href="#1279" id="1279">1279</a>
+<a href="#1280" id="1280">1280</a>
+<a href="#1281" id="1281">1281</a>
+<a href="#1282" id="1282">1282</a>
+<a href="#1283" id="1283">1283</a>
+<a href="#1284" id="1284">1284</a>
+<a href="#1285" id="1285">1285</a>
+<a href="#1286" id="1286">1286</a>
+<a href="#1287" id="1287">1287</a>
+<a href="#1288" id="1288">1288</a>
+<a href="#1289" id="1289">1289</a>
+<a href="#1290" id="1290">1290</a>
+<a href="#1291" id="1291">1291</a>
+<a href="#1292" id="1292">1292</a>
+<a href="#1293" id="1293">1293</a>
+<a href="#1294" id="1294">1294</a>
+<a href="#1295" id="1295">1295</a>
+<a href="#1296" id="1296">1296</a>
+<a href="#1297" id="1297">1297</a>
+<a href="#1298" id="1298">1298</a>
+<a href="#1299" id="1299">1299</a>
+<a href="#1300" id="1300">1300</a>
+<a href="#1301" id="1301">1301</a>
+<a href="#1302" id="1302">1302</a>
+<a href="#1303" id="1303">1303</a>
+<a href="#1304" id="1304">1304</a>
+<a href="#1305" id="1305">1305</a>
+<a href="#1306" id="1306">1306</a>
+<a href="#1307" id="1307">1307</a>
+<a href="#1308" id="1308">1308</a>
+<a href="#1309" id="1309">1309</a>
+<a href="#1310" id="1310">1310</a>
+<a href="#1311" id="1311">1311</a>
+<a href="#1312" id="1312">1312</a>
+<a href="#1313" id="1313">1313</a>
+<a href="#1314" id="1314">1314</a>
+<a href="#1315" id="1315">1315</a>
+<a href="#1316" id="1316">1316</a>
+<a href="#1317" id="1317">1317</a>
+<a href="#1318" id="1318">1318</a>
+<a href="#1319" id="1319">1319</a>
+<a href="#1320" id="1320">1320</a>
+<a href="#1321" id="1321">1321</a>
+<a href="#1322" id="1322">1322</a>
+<a href="#1323" id="1323">1323</a>
+<a href="#1324" id="1324">1324</a>
+<a href="#1325" id="1325">1325</a>
+<a href="#1326" id="1326">1326</a>
+<a href="#1327" id="1327">1327</a>
+<a href="#1328" id="1328">1328</a>
+<a href="#1329" id="1329">1329</a>
+<a href="#1330" id="1330">1330</a>
+<a href="#1331" id="1331">1331</a>
+<a href="#1332" id="1332">1332</a>
+<a href="#1333" id="1333">1333</a>
+<a href="#1334" id="1334">1334</a>
+<a href="#1335" id="1335">1335</a>
+<a href="#1336" id="1336">1336</a>
+<a href="#1337" id="1337">1337</a>
+<a href="#1338" id="1338">1338</a>
+<a href="#1339" id="1339">1339</a>
+<a href="#1340" id="1340">1340</a>
+<a href="#1341" id="1341">1341</a>
+<a href="#1342" id="1342">1342</a>
+<a href="#1343" id="1343">1343</a>
+<a href="#1344" id="1344">1344</a>
+<a href="#1345" id="1345">1345</a>
+<a href="#1346" id="1346">1346</a>
+<a href="#1347" id="1347">1347</a>
+<a href="#1348" id="1348">1348</a>
+<a href="#1349" id="1349">1349</a>
+<a href="#1350" id="1350">1350</a>
+<a href="#1351" id="1351">1351</a>
+<a href="#1352" id="1352">1352</a>
+<a href="#1353" id="1353">1353</a>
+<a href="#1354" id="1354">1354</a>
+<a href="#1355" id="1355">1355</a>
+<a href="#1356" id="1356">1356</a>
+<a href="#1357" id="1357">1357</a>
+<a href="#1358" id="1358">1358</a>
+<a href="#1359" id="1359">1359</a>
+<a href="#1360" id="1360">1360</a>
+<a href="#1361" id="1361">1361</a>
+<a href="#1362" id="1362">1362</a>
+<a href="#1363" id="1363">1363</a>
+<a href="#1364" id="1364">1364</a>
+<a href="#1365" id="1365">1365</a>
+<a href="#1366" id="1366">1366</a>
+<a href="#1367" id="1367">1367</a>
+<a href="#1368" id="1368">1368</a>
+<a href="#1369" id="1369">1369</a>
+<a href="#1370" id="1370">1370</a>
+<a href="#1371" id="1371">1371</a>
+<a href="#1372" id="1372">1372</a>
+<a href="#1373" id="1373">1373</a>
+<a href="#1374" id="1374">1374</a>
+<a href="#1375" id="1375">1375</a>
+<a href="#1376" id="1376">1376</a>
+<a href="#1377" id="1377">1377</a>
+<a href="#1378" id="1378">1378</a>
+<a href="#1379" id="1379">1379</a>
+<a href="#1380" id="1380">1380</a>
+<a href="#1381" id="1381">1381</a>
+<a href="#1382" id="1382">1382</a>
+<a href="#1383" id="1383">1383</a>
+<a href="#1384" id="1384">1384</a>
+<a href="#1385" id="1385">1385</a>
+<a href="#1386" id="1386">1386</a>
+<a href="#1387" id="1387">1387</a>
+<a href="#1388" id="1388">1388</a>
+<a href="#1389" id="1389">1389</a>
+<a href="#1390" id="1390">1390</a>
+<a href="#1391" id="1391">1391</a>
+<a href="#1392" id="1392">1392</a>
+<a href="#1393" id="1393">1393</a>
+<a href="#1394" id="1394">1394</a>
+<a href="#1395" id="1395">1395</a>
+<a href="#1396" id="1396">1396</a>
+<a href="#1397" id="1397">1397</a>
+<a href="#1398" id="1398">1398</a>
+<a href="#1399" id="1399">1399</a>
+<a href="#1400" id="1400">1400</a>
+<a href="#1401" id="1401">1401</a>
+<a href="#1402" id="1402">1402</a>
+<a href="#1403" id="1403">1403</a>
+<a href="#1404" id="1404">1404</a>
+<a href="#1405" id="1405">1405</a>
+<a href="#1406" id="1406">1406</a>
+<a href="#1407" id="1407">1407</a>
+<a href="#1408" id="1408">1408</a>
+<a href="#1409" id="1409">1409</a>
+<a href="#1410" id="1410">1410</a>
+<a href="#1411" id="1411">1411</a>
+<a href="#1412" id="1412">1412</a>
+<a href="#1413" id="1413">1413</a>
+<a href="#1414" id="1414">1414</a>
+<a href="#1415" id="1415">1415</a>
+<a href="#1416" id="1416">1416</a>
+<a href="#1417" id="1417">1417</a>
+<a href="#1418" id="1418">1418</a>
+<a href="#1419" id="1419">1419</a>
+<a href="#1420" id="1420">1420</a>
+<a href="#1421" id="1421">1421</a>
+<a href="#1422" id="1422">1422</a>
+<a href="#1423" id="1423">1423</a>
+<a href="#1424" id="1424">1424</a>
+<a href="#1425" id="1425">1425</a>
+<a href="#1426" id="1426">1426</a>
+<a href="#1427" id="1427">1427</a>
+<a href="#1428" id="1428">1428</a>
+<a href="#1429" id="1429">1429</a>
+<a href="#1430" id="1430">1430</a>
+<a href="#1431" id="1431">1431</a>
+<a href="#1432" id="1432">1432</a>
+<a href="#1433" id="1433">1433</a>
+<a href="#1434" id="1434">1434</a>
+<a href="#1435" id="1435">1435</a>
+<a href="#1436" id="1436">1436</a>
+<a href="#1437" id="1437">1437</a>
+<a href="#1438" id="1438">1438</a>
+<a href="#1439" id="1439">1439</a>
+<a href="#1440" id="1440">1440</a>
+<a href="#1441" id="1441">1441</a>
+<a href="#1442" id="1442">1442</a>
+<a href="#1443" id="1443">1443</a>
+<a href="#1444" id="1444">1444</a>
+<a href="#1445" id="1445">1445</a>
+<a href="#1446" id="1446">1446</a>
+<a href="#1447" id="1447">1447</a>
+<a href="#1448" id="1448">1448</a>
+<a href="#1449" id="1449">1449</a>
+<a href="#1450" id="1450">1450</a>
+<a href="#1451" id="1451">1451</a>
+<a href="#1452" id="1452">1452</a>
+<a href="#1453" id="1453">1453</a>
+<a href="#1454" id="1454">1454</a>
+<a href="#1455" id="1455">1455</a>
+<a href="#1456" id="1456">1456</a>
+<a href="#1457" id="1457">1457</a>
+<a href="#1458" id="1458">1458</a>
+<a href="#1459" id="1459">1459</a>
+<a href="#1460" id="1460">1460</a>
+<a href="#1461" id="1461">1461</a>
+<a href="#1462" id="1462">1462</a>
+<a href="#1463" id="1463">1463</a>
+<a href="#1464" id="1464">1464</a>
+<a href="#1465" id="1465">1465</a>
+<a href="#1466" id="1466">1466</a>
+<a href="#1467" id="1467">1467</a>
+<a href="#1468" id="1468">1468</a>
+<a href="#1469" id="1469">1469</a>
+<a href="#1470" id="1470">1470</a>
+<a href="#1471" id="1471">1471</a>
+<a href="#1472" id="1472">1472</a>
+<a href="#1473" id="1473">1473</a>
+<a href="#1474" id="1474">1474</a>
+<a href="#1475" id="1475">1475</a>
+<a href="#1476" id="1476">1476</a>
+<a href="#1477" id="1477">1477</a>
+<a href="#1478" id="1478">1478</a>
+<a href="#1479" id="1479">1479</a>
+<a href="#1480" id="1480">1480</a>
+<a href="#1481" id="1481">1481</a>
+<a href="#1482" id="1482">1482</a>
+<a href="#1483" id="1483">1483</a>
+<a href="#1484" id="1484">1484</a>
+<a href="#1485" id="1485">1485</a>
+<a href="#1486" id="1486">1486</a>
+<a href="#1487" id="1487">1487</a>
+<a href="#1488" id="1488">1488</a>
+<a href="#1489" id="1489">1489</a>
+<a href="#1490" id="1490">1490</a>
+<a href="#1491" id="1491">1491</a>
+<a href="#1492" id="1492">1492</a>
+<a href="#1493" id="1493">1493</a>
+<a href="#1494" id="1494">1494</a>
+<a href="#1495" id="1495">1495</a>
+<a href="#1496" id="1496">1496</a>
+<a href="#1497" id="1497">1497</a>
+<a href="#1498" id="1498">1498</a>
+<a href="#1499" id="1499">1499</a>
+<a href="#1500" id="1500">1500</a>
+<a href="#1501" id="1501">1501</a>
+<a href="#1502" id="1502">1502</a>
+<a href="#1503" id="1503">1503</a>
+<a href="#1504" id="1504">1504</a>
+<a href="#1505" id="1505">1505</a>
+<a href="#1506" id="1506">1506</a>
+<a href="#1507" id="1507">1507</a>
+<a href="#1508" id="1508">1508</a>
+<a href="#1509" id="1509">1509</a>
+<a href="#1510" id="1510">1510</a>
+<a href="#1511" id="1511">1511</a>
+<a href="#1512" id="1512">1512</a>
+<a href="#1513" id="1513">1513</a>
+<a href="#1514" id="1514">1514</a>
+<a href="#1515" id="1515">1515</a>
+<a href="#1516" id="1516">1516</a>
+<a href="#1517" id="1517">1517</a>
+<a href="#1518" id="1518">1518</a>
+<a href="#1519" id="1519">1519</a>
+<a href="#1520" id="1520">1520</a>
+<a href="#1521" id="1521">1521</a>
+<a href="#1522" id="1522">1522</a>
+<a href="#1523" id="1523">1523</a>
+<a href="#1524" id="1524">1524</a>
+<a href="#1525" id="1525">1525</a>
+<a href="#1526" id="1526">1526</a>
+<a href="#1527" id="1527">1527</a>
+<a href="#1528" id="1528">1528</a>
+<a href="#1529" id="1529">1529</a>
+<a href="#1530" id="1530">1530</a>
+<a href="#1531" id="1531">1531</a>
+<a href="#1532" id="1532">1532</a>
+<a href="#1533" id="1533">1533</a>
+<a href="#1534" id="1534">1534</a>
+<a href="#1535" id="1535">1535</a>
+<a href="#1536" id="1536">1536</a>
+<a href="#1537" id="1537">1537</a>
+<a href="#1538" id="1538">1538</a>
+<a href="#1539" id="1539">1539</a>
+<a href="#1540" id="1540">1540</a>
+<a href="#1541" id="1541">1541</a>
+<a href="#1542" id="1542">1542</a>
+<a href="#1543" id="1543">1543</a>
+<a href="#1544" id="1544">1544</a>
+<a href="#1545" id="1545">1545</a>
+<a href="#1546" id="1546">1546</a>
+<a href="#1547" id="1547">1547</a>
+<a href="#1548" id="1548">1548</a>
+<a href="#1549" id="1549">1549</a>
+<a href="#1550" id="1550">1550</a>
+<a href="#1551" id="1551">1551</a>
+<a href="#1552" id="1552">1552</a>
+<a href="#1553" id="1553">1553</a>
+<a href="#1554" id="1554">1554</a>
+<a href="#1555" id="1555">1555</a>
+<a href="#1556" id="1556">1556</a>
+<a href="#1557" id="1557">1557</a>
+<a href="#1558" id="1558">1558</a>
+<a href="#1559" id="1559">1559</a>
+<a href="#1560" id="1560">1560</a>
+<a href="#1561" id="1561">1561</a>
+<a href="#1562" id="1562">1562</a>
+<a href="#1563" id="1563">1563</a>
+<a href="#1564" id="1564">1564</a>
+<a href="#1565" id="1565">1565</a>
+<a href="#1566" id="1566">1566</a>
+<a href="#1567" id="1567">1567</a>
+<a href="#1568" id="1568">1568</a>
+<a href="#1569" id="1569">1569</a>
+<a href="#1570" id="1570">1570</a>
+<a href="#1571" id="1571">1571</a>
+<a href="#1572" id="1572">1572</a>
+<a href="#1573" id="1573">1573</a>
+<a href="#1574" id="1574">1574</a>
+<a href="#1575" id="1575">1575</a>
+<a href="#1576" id="1576">1576</a>
+<a href="#1577" id="1577">1577</a>
+<a href="#1578" id="1578">1578</a>
+<a href="#1579" id="1579">1579</a>
+<a href="#1580" id="1580">1580</a>
+<a href="#1581" id="1581">1581</a>
+<a href="#1582" id="1582">1582</a>
+<a href="#1583" id="1583">1583</a>
+<a href="#1584" id="1584">1584</a>
+<a href="#1585" id="1585">1585</a>
+<a href="#1586" id="1586">1586</a>
+<a href="#1587" id="1587">1587</a>
+<a href="#1588" id="1588">1588</a>
+<a href="#1589" id="1589">1589</a>
+<a href="#1590" id="1590">1590</a>
+<a href="#1591" id="1591">1591</a>
+<a href="#1592" id="1592">1592</a>
+<a href="#1593" id="1593">1593</a>
+<a href="#1594" id="1594">1594</a>
+<a href="#1595" id="1595">1595</a>
+<a href="#1596" id="1596">1596</a>
+<a href="#1597" id="1597">1597</a>
+<a href="#1598" id="1598">1598</a>
+<a href="#1599" id="1599">1599</a>
+<a href="#1600" id="1600">1600</a>
+<a href="#1601" id="1601">1601</a>
+<a href="#1602" id="1602">1602</a>
+<a href="#1603" id="1603">1603</a>
+<a href="#1604" id="1604">1604</a>
+<a href="#1605" id="1605">1605</a>
+<a href="#1606" id="1606">1606</a>
+<a href="#1607" id="1607">1607</a>
+<a href="#1608" id="1608">1608</a>
+<a href="#1609" id="1609">1609</a>
+<a href="#1610" id="1610">1610</a>
+<a href="#1611" id="1611">1611</a>
+<a href="#1612" id="1612">1612</a>
+<a href="#1613" id="1613">1613</a>
+<a href="#1614" id="1614">1614</a>
+<a href="#1615" id="1615">1615</a>
+<a href="#1616" id="1616">1616</a>
+<a href="#1617" id="1617">1617</a>
+<a href="#1618" id="1618">1618</a>
+<a href="#1619" id="1619">1619</a>
+<a href="#1620" id="1620">1620</a>
+<a href="#1621" id="1621">1621</a>
+<a href="#1622" id="1622">1622</a>
+<a href="#1623" id="1623">1623</a>
+<a href="#1624" id="1624">1624</a>
+<a href="#1625" id="1625">1625</a>
+<a href="#1626" id="1626">1626</a>
+<a href="#1627" id="1627">1627</a>
+<a href="#1628" id="1628">1628</a>
+<a href="#1629" id="1629">1629</a>
+<a href="#1630" id="1630">1630</a>
+<a href="#1631" id="1631">1631</a>
+<a href="#1632" id="1632">1632</a>
+<a href="#1633" id="1633">1633</a>
+<a href="#1634" id="1634">1634</a>
+<a href="#1635" id="1635">1635</a>
+<a href="#1636" id="1636">1636</a>
+<a href="#1637" id="1637">1637</a>
+<a href="#1638" id="1638">1638</a>
+<a href="#1639" id="1639">1639</a>
+<a href="#1640" id="1640">1640</a>
+<a href="#1641" id="1641">1641</a>
+<a href="#1642" id="1642">1642</a>
+<a href="#1643" id="1643">1643</a>
+<a href="#1644" id="1644">1644</a>
+<a href="#1645" id="1645">1645</a>
+<a href="#1646" id="1646">1646</a>
+<a href="#1647" id="1647">1647</a>
+<a href="#1648" id="1648">1648</a>
+<a href="#1649" id="1649">1649</a>
+<a href="#1650" id="1650">1650</a>
+<a href="#1651" id="1651">1651</a>
+<a href="#1652" id="1652">1652</a>
+<a href="#1653" id="1653">1653</a>
+<a href="#1654" id="1654">1654</a>
+<a href="#1655" id="1655">1655</a>
+<a href="#1656" id="1656">1656</a>
+<a href="#1657" id="1657">1657</a>
+<a href="#1658" id="1658">1658</a>
+<a href="#1659" id="1659">1659</a>
+<a href="#1660" id="1660">1660</a>
+<a href="#1661" id="1661">1661</a>
+<a href="#1662" id="1662">1662</a>
+<a href="#1663" id="1663">1663</a>
+<a href="#1664" id="1664">1664</a>
+<a href="#1665" id="1665">1665</a>
+<a href="#1666" id="1666">1666</a>
+<a href="#1667" id="1667">1667</a>
+<a href="#1668" id="1668">1668</a>
+<a href="#1669" id="1669">1669</a>
+<a href="#1670" id="1670">1670</a>
+<a href="#1671" id="1671">1671</a>
+<a href="#1672" id="1672">1672</a>
+<a href="#1673" id="1673">1673</a>
+<a href="#1674" id="1674">1674</a>
+<a href="#1675" id="1675">1675</a>
+<a href="#1676" id="1676">1676</a>
+<a href="#1677" id="1677">1677</a>
+<a href="#1678" id="1678">1678</a>
+<a href="#1679" id="1679">1679</a>
+<a href="#1680" id="1680">1680</a>
+<a href="#1681" id="1681">1681</a>
+<a href="#1682" id="1682">1682</a>
+<a href="#1683" id="1683">1683</a>
+<a href="#1684" id="1684">1684</a>
+<a href="#1685" id="1685">1685</a>
+<a href="#1686" id="1686">1686</a>
+<a href="#1687" id="1687">1687</a>
+<a href="#1688" id="1688">1688</a>
+<a href="#1689" id="1689">1689</a>
+<a href="#1690" id="1690">1690</a>
+<a href="#1691" id="1691">1691</a>
+<a href="#1692" id="1692">1692</a>
+<a href="#1693" id="1693">1693</a>
+<a href="#1694" id="1694">1694</a>
+<a href="#1695" id="1695">1695</a>
+<a href="#1696" id="1696">1696</a>
+<a href="#1697" id="1697">1697</a>
+<a href="#1698" id="1698">1698</a>
+<a href="#1699" id="1699">1699</a>
+<a href="#1700" id="1700">1700</a>
+<a href="#1701" id="1701">1701</a>
+<a href="#1702" id="1702">1702</a>
+<a href="#1703" id="1703">1703</a>
+<a href="#1704" id="1704">1704</a>
+<a href="#1705" id="1705">1705</a>
+<a href="#1706" id="1706">1706</a>
+<a href="#1707" id="1707">1707</a>
+<a href="#1708" id="1708">1708</a>
+<a href="#1709" id="1709">1709</a>
+<a href="#1710" id="1710">1710</a>
+<a href="#1711" id="1711">1711</a>
+<a href="#1712" id="1712">1712</a>
+<a href="#1713" id="1713">1713</a>
+<a href="#1714" id="1714">1714</a>
+<a href="#1715" id="1715">1715</a>
+<a href="#1716" id="1716">1716</a>
+<a href="#1717" id="1717">1717</a>
+<a href="#1718" id="1718">1718</a>
+<a href="#1719" id="1719">1719</a>
+<a href="#1720" id="1720">1720</a>
+<a href="#1721" id="1721">1721</a>
+<a href="#1722" id="1722">1722</a>
+<a href="#1723" id="1723">1723</a>
+<a href="#1724" id="1724">1724</a>
+<a href="#1725" id="1725">1725</a>
+<a href="#1726" id="1726">1726</a>
+<a href="#1727" id="1727">1727</a>
+<a href="#1728" id="1728">1728</a>
+<a href="#1729" id="1729">1729</a>
+<a href="#1730" id="1730">1730</a>
+<a href="#1731" id="1731">1731</a>
+<a href="#1732" id="1732">1732</a>
+<a href="#1733" id="1733">1733</a>
+<a href="#1734" id="1734">1734</a>
+<a href="#1735" id="1735">1735</a>
+<a href="#1736" id="1736">1736</a>
+<a href="#1737" id="1737">1737</a>
+<a href="#1738" id="1738">1738</a>
+<a href="#1739" id="1739">1739</a>
+<a href="#1740" id="1740">1740</a>
+<a href="#1741" id="1741">1741</a>
+<a href="#1742" id="1742">1742</a>
+<a href="#1743" id="1743">1743</a>
+<a href="#1744" id="1744">1744</a>
+<a href="#1745" id="1745">1745</a>
+<a href="#1746" id="1746">1746</a>
+<a href="#1747" id="1747">1747</a>
+<a href="#1748" id="1748">1748</a>
+<a href="#1749" id="1749">1749</a>
+<a href="#1750" id="1750">1750</a>
+<a href="#1751" id="1751">1751</a>
+<a href="#1752" id="1752">1752</a>
+<a href="#1753" id="1753">1753</a>
+<a href="#1754" id="1754">1754</a>
+<a href="#1755" id="1755">1755</a>
+<a href="#1756" id="1756">1756</a>
+<a href="#1757" id="1757">1757</a>
+<a href="#1758" id="1758">1758</a>
+<a href="#1759" id="1759">1759</a>
+<a href="#1760" id="1760">1760</a>
+<a href="#1761" id="1761">1761</a>
+<a href="#1762" id="1762">1762</a>
+<a href="#1763" id="1763">1763</a>
+<a href="#1764" id="1764">1764</a>
+<a href="#1765" id="1765">1765</a>
+<a href="#1766" id="1766">1766</a>
+<a href="#1767" id="1767">1767</a>
+<a href="#1768" id="1768">1768</a>
+<a href="#1769" id="1769">1769</a>
+<a href="#1770" id="1770">1770</a>
+<a href="#1771" id="1771">1771</a>
+<a href="#1772" id="1772">1772</a>
+<a href="#1773" id="1773">1773</a>
+<a href="#1774" id="1774">1774</a>
+<a href="#1775" id="1775">1775</a>
+<a href="#1776" id="1776">1776</a>
+<a href="#1777" id="1777">1777</a>
+<a href="#1778" id="1778">1778</a>
+<a href="#1779" id="1779">1779</a>
+<a href="#1780" id="1780">1780</a>
+<a href="#1781" id="1781">1781</a>
+<a href="#1782" id="1782">1782</a>
+<a href="#1783" id="1783">1783</a>
+<a href="#1784" id="1784">1784</a>
+<a href="#1785" id="1785">1785</a>
+<a href="#1786" id="1786">1786</a>
+<a href="#1787" id="1787">1787</a>
+<a href="#1788" id="1788">1788</a>
+<a href="#1789" id="1789">1789</a>
+<a href="#1790" id="1790">1790</a>
+<a href="#1791" id="1791">1791</a>
+<a href="#1792" id="1792">1792</a>
+<a href="#1793" id="1793">1793</a>
+<a href="#1794" id="1794">1794</a>
+<a href="#1795" id="1795">1795</a>
+<a href="#1796" id="1796">1796</a>
+<a href="#1797" id="1797">1797</a>
+<a href="#1798" id="1798">1798</a>
+<a href="#1799" id="1799">1799</a>
+<a href="#1800" id="1800">1800</a>
+<a href="#1801" id="1801">1801</a>
+<a href="#1802" id="1802">1802</a>
+<a href="#1803" id="1803">1803</a>
+<a href="#1804" id="1804">1804</a>
+<a href="#1805" id="1805">1805</a>
+<a href="#1806" id="1806">1806</a>
+<a href="#1807" id="1807">1807</a>
+<a href="#1808" id="1808">1808</a>
+<a href="#1809" id="1809">1809</a>
+<a href="#1810" id="1810">1810</a>
+<a href="#1811" id="1811">1811</a>
+<a href="#1812" id="1812">1812</a>
+<a href="#1813" id="1813">1813</a>
+<a href="#1814" id="1814">1814</a>
+<a href="#1815" id="1815">1815</a>
+<a href="#1816" id="1816">1816</a>
+<a href="#1817" id="1817">1817</a>
+<a href="#1818" id="1818">1818</a>
+<a href="#1819" id="1819">1819</a>
+<a href="#1820" id="1820">1820</a>
+<a href="#1821" id="1821">1821</a>
+<a href="#1822" id="1822">1822</a>
+<a href="#1823" id="1823">1823</a>
+<a href="#1824" id="1824">1824</a>
+<a href="#1825" id="1825">1825</a>
+<a href="#1826" id="1826">1826</a>
+<a href="#1827" id="1827">1827</a>
+<a href="#1828" id="1828">1828</a>
+<a href="#1829" id="1829">1829</a>
+<a href="#1830" id="1830">1830</a>
+<a href="#1831" id="1831">1831</a>
+<a href="#1832" id="1832">1832</a>
+<a href="#1833" id="1833">1833</a>
+<a href="#1834" id="1834">1834</a>
+<a href="#1835" id="1835">1835</a>
+<a href="#1836" id="1836">1836</a>
+<a href="#1837" id="1837">1837</a>
+<a href="#1838" id="1838">1838</a>
+<a href="#1839" id="1839">1839</a>
+<a href="#1840" id="1840">1840</a>
+<a href="#1841" id="1841">1841</a>
+<a href="#1842" id="1842">1842</a>
+<a href="#1843" id="1843">1843</a>
+<a href="#1844" id="1844">1844</a>
+<a href="#1845" id="1845">1845</a>
+<a href="#1846" id="1846">1846</a>
+<a href="#1847" id="1847">1847</a>
+<a href="#1848" id="1848">1848</a>
+<a href="#1849" id="1849">1849</a>
+<a href="#1850" id="1850">1850</a>
+<a href="#1851" id="1851">1851</a>
+<a href="#1852" id="1852">1852</a>
+<a href="#1853" id="1853">1853</a>
+<a href="#1854" id="1854">1854</a>
+<a href="#1855" id="1855">1855</a>
+<a href="#1856" id="1856">1856</a>
+<a href="#1857" id="1857">1857</a>
+<a href="#1858" id="1858">1858</a>
+<a href="#1859" id="1859">1859</a>
+<a href="#1860" id="1860">1860</a>
+<a href="#1861" id="1861">1861</a>
+<a href="#1862" id="1862">1862</a>
+<a href="#1863" id="1863">1863</a>
+<a href="#1864" id="1864">1864</a>
+<a href="#1865" id="1865">1865</a>
+<a href="#1866" id="1866">1866</a>
+<a href="#1867" id="1867">1867</a>
+<a href="#1868" id="1868">1868</a>
+<a href="#1869" id="1869">1869</a>
+<a href="#1870" id="1870">1870</a>
+<a href="#1871" id="1871">1871</a>
+<a href="#1872" id="1872">1872</a>
+<a href="#1873" id="1873">1873</a>
+<a href="#1874" id="1874">1874</a>
+<a href="#1875" id="1875">1875</a>
+<a href="#1876" id="1876">1876</a>
+<a href="#1877" id="1877">1877</a>
+<a href="#1878" id="1878">1878</a>
+<a href="#1879" id="1879">1879</a>
+<a href="#1880" id="1880">1880</a>
+<a href="#1881" id="1881">1881</a>
+<a href="#1882" id="1882">1882</a>
+<a href="#1883" id="1883">1883</a>
+<a href="#1884" id="1884">1884</a>
+<a href="#1885" id="1885">1885</a>
+<a href="#1886" id="1886">1886</a>
+<a href="#1887" id="1887">1887</a>
+<a href="#1888" id="1888">1888</a>
+<a href="#1889" id="1889">1889</a>
+<a href="#1890" id="1890">1890</a>
+<a href="#1891" id="1891">1891</a>
+<a href="#1892" id="1892">1892</a>
+<a href="#1893" id="1893">1893</a>
+<a href="#1894" id="1894">1894</a>
+<a href="#1895" id="1895">1895</a>
+<a href="#1896" id="1896">1896</a>
+<a href="#1897" id="1897">1897</a>
+<a href="#1898" id="1898">1898</a>
+<a href="#1899" id="1899">1899</a>
+<a href="#1900" id="1900">1900</a>
+<a href="#1901" id="1901">1901</a>
+<a href="#1902" id="1902">1902</a>
+<a href="#1903" id="1903">1903</a>
+<a href="#1904" id="1904">1904</a>
+<a href="#1905" id="1905">1905</a>
+<a href="#1906" id="1906">1906</a>
+<a href="#1907" id="1907">1907</a>
+<a href="#1908" id="1908">1908</a>
+<a href="#1909" id="1909">1909</a>
+<a href="#1910" id="1910">1910</a>
+<a href="#1911" id="1911">1911</a>
+<a href="#1912" id="1912">1912</a>
+<a href="#1913" id="1913">1913</a>
+<a href="#1914" id="1914">1914</a>
+<a href="#1915" id="1915">1915</a>
+<a href="#1916" id="1916">1916</a>
+<a href="#1917" id="1917">1917</a>
+<a href="#1918" id="1918">1918</a>
+<a href="#1919" id="1919">1919</a>
+<a href="#1920" id="1920">1920</a>
+<a href="#1921" id="1921">1921</a>
+<a href="#1922" id="1922">1922</a>
+<a href="#1923" id="1923">1923</a>
+<a href="#1924" id="1924">1924</a>
+<a href="#1925" id="1925">1925</a>
+<a href="#1926" id="1926">1926</a>
+<a href="#1927" id="1927">1927</a>
+<a href="#1928" id="1928">1928</a>
+<a href="#1929" id="1929">1929</a>
+<a href="#1930" id="1930">1930</a>
+<a href="#1931" id="1931">1931</a>
+<a href="#1932" id="1932">1932</a>
+<a href="#1933" id="1933">1933</a>
+<a href="#1934" id="1934">1934</a>
+<a href="#1935" id="1935">1935</a>
+<a href="#1936" id="1936">1936</a>
+<a href="#1937" id="1937">1937</a>
+<a href="#1938" id="1938">1938</a>
+<a href="#1939" id="1939">1939</a>
+<a href="#1940" id="1940">1940</a>
+<a href="#1941" id="1941">1941</a>
+<a href="#1942" id="1942">1942</a>
+<a href="#1943" id="1943">1943</a>
+<a href="#1944" id="1944">1944</a>
+<a href="#1945" id="1945">1945</a>
+<a href="#1946" id="1946">1946</a>
+<a href="#1947" id="1947">1947</a>
+<a href="#1948" id="1948">1948</a>
+<a href="#1949" id="1949">1949</a>
+<a href="#1950" id="1950">1950</a>
+<a href="#1951" id="1951">1951</a>
+<a href="#1952" id="1952">1952</a>
+<a href="#1953" id="1953">1953</a>
+<a href="#1954" id="1954">1954</a>
+<a href="#1955" id="1955">1955</a>
+<a href="#1956" id="1956">1956</a>
+<a href="#1957" id="1957">1957</a>
+<a href="#1958" id="1958">1958</a>
+<a href="#1959" id="1959">1959</a>
+<a href="#1960" id="1960">1960</a>
+<a href="#1961" id="1961">1961</a>
+<a href="#1962" id="1962">1962</a>
+<a href="#1963" id="1963">1963</a>
+<a href="#1964" id="1964">1964</a>
+<a href="#1965" id="1965">1965</a>
+<a href="#1966" id="1966">1966</a>
+<a href="#1967" id="1967">1967</a>
+<a href="#1968" id="1968">1968</a>
+<a href="#1969" id="1969">1969</a>
+<a href="#1970" id="1970">1970</a>
+<a href="#1971" id="1971">1971</a>
+<a href="#1972" id="1972">1972</a>
+<a href="#1973" id="1973">1973</a>
+<a href="#1974" id="1974">1974</a>
+<a href="#1975" id="1975">1975</a>
+<a href="#1976" id="1976">1976</a>
+<a href="#1977" id="1977">1977</a>
+<a href="#1978" id="1978">1978</a>
+<a href="#1979" id="1979">1979</a>
+<a href="#1980" id="1980">1980</a>
+<a href="#1981" id="1981">1981</a>
+<a href="#1982" id="1982">1982</a>
+<a href="#1983" id="1983">1983</a>
+<a href="#1984" id="1984">1984</a>
+<a href="#1985" id="1985">1985</a>
+<a href="#1986" id="1986">1986</a>
+<a href="#1987" id="1987">1987</a>
+<a href="#1988" id="1988">1988</a>
+<a href="#1989" id="1989">1989</a>
+<a href="#1990" id="1990">1990</a>
+<a href="#1991" id="1991">1991</a>
+<a href="#1992" id="1992">1992</a>
+<a href="#1993" id="1993">1993</a>
+<a href="#1994" id="1994">1994</a>
+<a href="#1995" id="1995">1995</a>
+<a href="#1996" id="1996">1996</a>
+<a href="#1997" id="1997">1997</a>
+<a href="#1998" id="1998">1998</a>
+<a href="#1999" id="1999">1999</a>
+<a href="#2000" id="2000">2000</a>
+<a href="#2001" id="2001">2001</a>
+<a href="#2002" id="2002">2002</a>
+<a href="#2003" id="2003">2003</a>
+<a href="#2004" id="2004">2004</a>
+<a href="#2005" id="2005">2005</a>
+<a href="#2006" id="2006">2006</a>
+<a href="#2007" id="2007">2007</a>
+<a href="#2008" id="2008">2008</a>
+<a href="#2009" id="2009">2009</a>
+<a href="#2010" id="2010">2010</a>
+<a href="#2011" id="2011">2011</a>
+<a href="#2012" id="2012">2012</a>
+<a href="#2013" id="2013">2013</a>
+<a href="#2014" id="2014">2014</a>
+<a href="#2015" id="2015">2015</a>
+<a href="#2016" id="2016">2016</a>
+<a href="#2017" id="2017">2017</a>
+<a href="#2018" id="2018">2018</a>
+<a href="#2019" id="2019">2019</a>
+<a href="#2020" id="2020">2020</a>
+<a href="#2021" id="2021">2021</a>
+<a href="#2022" id="2022">2022</a>
+<a href="#2023" id="2023">2023</a>
+<a href="#2024" id="2024">2024</a>
+<a href="#2025" id="2025">2025</a>
+<a href="#2026" id="2026">2026</a>
+<a href="#2027" id="2027">2027</a>
+<a href="#2028" id="2028">2028</a>
+<a href="#2029" id="2029">2029</a>
+<a href="#2030" id="2030">2030</a>
+<a href="#2031" id="2031">2031</a>
+<a href="#2032" id="2032">2032</a>
+<a href="#2033" id="2033">2033</a>
+<a href="#2034" id="2034">2034</a>
+<a href="#2035" id="2035">2035</a>
+<a href="#2036" id="2036">2036</a>
+<a href="#2037" id="2037">2037</a>
+<a href="#2038" id="2038">2038</a>
+<a href="#2039" id="2039">2039</a>
+<a href="#2040" id="2040">2040</a>
+<a href="#2041" id="2041">2041</a>
+<a href="#2042" id="2042">2042</a>
+<a href="#2043" id="2043">2043</a>
+<a href="#2044" id="2044">2044</a>
+<a href="#2045" id="2045">2045</a>
+<a href="#2046" id="2046">2046</a>
+<a href="#2047" id="2047">2047</a>
+<a href="#2048" id="2048">2048</a>
+<a href="#2049" id="2049">2049</a>
+<a href="#2050" id="2050">2050</a>
+<a href="#2051" id="2051">2051</a>
+<a href="#2052" id="2052">2052</a>
+<a href="#2053" id="2053">2053</a>
+<a href="#2054" id="2054">2054</a>
+<a href="#2055" id="2055">2055</a>
+<a href="#2056" id="2056">2056</a>
+<a href="#2057" id="2057">2057</a>
+<a href="#2058" id="2058">2058</a>
+<a href="#2059" id="2059">2059</a>
+<a href="#2060" id="2060">2060</a>
+<a href="#2061" id="2061">2061</a>
+<a href="#2062" id="2062">2062</a>
+<a href="#2063" id="2063">2063</a>
+<a href="#2064" id="2064">2064</a>
+<a href="#2065" id="2065">2065</a>
+<a href="#2066" id="2066">2066</a>
+<a href="#2067" id="2067">2067</a>
+<a href="#2068" id="2068">2068</a>
+<a href="#2069" id="2069">2069</a>
+<a href="#2070" id="2070">2070</a>
+<a href="#2071" id="2071">2071</a>
+<a href="#2072" id="2072">2072</a>
+<a href="#2073" id="2073">2073</a>
+<a href="#2074" id="2074">2074</a>
+<a href="#2075" id="2075">2075</a>
+<a href="#2076" id="2076">2076</a>
+<a href="#2077" id="2077">2077</a>
+<a href="#2078" id="2078">2078</a>
+<a href="#2079" id="2079">2079</a>
+<a href="#2080" id="2080">2080</a>
+<a href="#2081" id="2081">2081</a>
+<a href="#2082" id="2082">2082</a>
+<a href="#2083" id="2083">2083</a>
+<a href="#2084" id="2084">2084</a>
+<a href="#2085" id="2085">2085</a>
+<a href="#2086" id="2086">2086</a>
+<a href="#2087" id="2087">2087</a>
+<a href="#2088" id="2088">2088</a>
+<a href="#2089" id="2089">2089</a>
+<a href="#2090" id="2090">2090</a>
+<a href="#2091" id="2091">2091</a>
+<a href="#2092" id="2092">2092</a>
+<a href="#2093" id="2093">2093</a>
+<a href="#2094" id="2094">2094</a>
+<a href="#2095" id="2095">2095</a>
+<a href="#2096" id="2096">2096</a>
+<a href="#2097" id="2097">2097</a>
+<a href="#2098" id="2098">2098</a>
+<a href="#2099" id="2099">2099</a>
+<a href="#2100" id="2100">2100</a>
+<a href="#2101" id="2101">2101</a>
+<a href="#2102" id="2102">2102</a>
+<a href="#2103" id="2103">2103</a>
+<a href="#2104" id="2104">2104</a>
+<a href="#2105" id="2105">2105</a>
+<a href="#2106" id="2106">2106</a>
+<a href="#2107" id="2107">2107</a>
+<a href="#2108" id="2108">2108</a>
+<a href="#2109" id="2109">2109</a>
+<a href="#2110" id="2110">2110</a>
+<a href="#2111" id="2111">2111</a>
+<a href="#2112" id="2112">2112</a>
+<a href="#2113" id="2113">2113</a>
+<a href="#2114" id="2114">2114</a>
+<a href="#2115" id="2115">2115</a>
+<a href="#2116" id="2116">2116</a>
+<a href="#2117" id="2117">2117</a>
+<a href="#2118" id="2118">2118</a>
+<a href="#2119" id="2119">2119</a>
+<a href="#2120" id="2120">2120</a>
+<a href="#2121" id="2121">2121</a>
+<a href="#2122" id="2122">2122</a>
+<a href="#2123" id="2123">2123</a>
+<a href="#2124" id="2124">2124</a>
+<a href="#2125" id="2125">2125</a>
+<a href="#2126" id="2126">2126</a>
+<a href="#2127" id="2127">2127</a>
+<a href="#2128" id="2128">2128</a>
+<a href="#2129" id="2129">2129</a>
+<a href="#2130" id="2130">2130</a>
+<a href="#2131" id="2131">2131</a>
+<a href="#2132" id="2132">2132</a>
+<a href="#2133" id="2133">2133</a>
+<a href="#2134" id="2134">2134</a>
+<a href="#2135" id="2135">2135</a>
+<a href="#2136" id="2136">2136</a>
+<a href="#2137" id="2137">2137</a>
+<a href="#2138" id="2138">2138</a>
+<a href="#2139" id="2139">2139</a>
+<a href="#2140" id="2140">2140</a>
+<a href="#2141" id="2141">2141</a>
+<a href="#2142" id="2142">2142</a>
+<a href="#2143" id="2143">2143</a>
+<a href="#2144" id="2144">2144</a>
+<a href="#2145" id="2145">2145</a>
+<a href="#2146" id="2146">2146</a>
+<a href="#2147" id="2147">2147</a>
+<a href="#2148" id="2148">2148</a>
+<a href="#2149" id="2149">2149</a>
+<a href="#2150" id="2150">2150</a>
+<a href="#2151" id="2151">2151</a>
+<a href="#2152" id="2152">2152</a>
+<a href="#2153" id="2153">2153</a>
+<a href="#2154" id="2154">2154</a>
+<a href="#2155" id="2155">2155</a>
+<a href="#2156" id="2156">2156</a>
+<a href="#2157" id="2157">2157</a>
+<a href="#2158" id="2158">2158</a>
+<a href="#2159" id="2159">2159</a>
+<a href="#2160" id="2160">2160</a>
+<a href="#2161" id="2161">2161</a>
+<a href="#2162" id="2162">2162</a>
+<a href="#2163" id="2163">2163</a>
+<a href="#2164" id="2164">2164</a>
+<a href="#2165" id="2165">2165</a>
+<a href="#2166" id="2166">2166</a>
+<a href="#2167" id="2167">2167</a>
+<a href="#2168" id="2168">2168</a>
+<a href="#2169" id="2169">2169</a>
+<a href="#2170" id="2170">2170</a>
+<a href="#2171" id="2171">2171</a>
+<a href="#2172" id="2172">2172</a>
+<a href="#2173" id="2173">2173</a>
+<a href="#2174" id="2174">2174</a>
+<a href="#2175" id="2175">2175</a>
+<a href="#2176" id="2176">2176</a>
+<a href="#2177" id="2177">2177</a>
+<a href="#2178" id="2178">2178</a>
+<a href="#2179" id="2179">2179</a>
+<a href="#2180" id="2180">2180</a>
+<a href="#2181" id="2181">2181</a>
+<a href="#2182" id="2182">2182</a>
+<a href="#2183" id="2183">2183</a>
+<a href="#2184" id="2184">2184</a>
+<a href="#2185" id="2185">2185</a>
+<a href="#2186" id="2186">2186</a>
+<a href="#2187" id="2187">2187</a>
+<a href="#2188" id="2188">2188</a>
+<a href="#2189" id="2189">2189</a>
+<a href="#2190" id="2190">2190</a>
+<a href="#2191" id="2191">2191</a>
+<a href="#2192" id="2192">2192</a>
+<a href="#2193" id="2193">2193</a>
+<a href="#2194" id="2194">2194</a>
+<a href="#2195" id="2195">2195</a>
+<a href="#2196" id="2196">2196</a>
+<a href="#2197" id="2197">2197</a>
+<a href="#2198" id="2198">2198</a>
+<a href="#2199" id="2199">2199</a>
+<a href="#2200" id="2200">2200</a>
+<a href="#2201" id="2201">2201</a>
+<a href="#2202" id="2202">2202</a>
+<a href="#2203" id="2203">2203</a>
+<a href="#2204" id="2204">2204</a>
+<a href="#2205" id="2205">2205</a>
+<a href="#2206" id="2206">2206</a>
+<a href="#2207" id="2207">2207</a>
+<a href="#2208" id="2208">2208</a>
+<a href="#2209" id="2209">2209</a>
+<a href="#2210" id="2210">2210</a>
+<a href="#2211" id="2211">2211</a>
+<a href="#2212" id="2212">2212</a>
+<a href="#2213" id="2213">2213</a>
+<a href="#2214" id="2214">2214</a>
+<a href="#2215" id="2215">2215</a>
+<a href="#2216" id="2216">2216</a>
+<a href="#2217" id="2217">2217</a>
+<a href="#2218" id="2218">2218</a>
+<a href="#2219" id="2219">2219</a>
+<a href="#2220" id="2220">2220</a>
+<a href="#2221" id="2221">2221</a>
+<a href="#2222" id="2222">2222</a>
+<a href="#2223" id="2223">2223</a>
+<a href="#2224" id="2224">2224</a>
+<a href="#2225" id="2225">2225</a>
+<a href="#2226" id="2226">2226</a>
+<a href="#2227" id="2227">2227</a>
+<a href="#2228" id="2228">2228</a>
+<a href="#2229" id="2229">2229</a>
+<a href="#2230" id="2230">2230</a>
+<a href="#2231" id="2231">2231</a>
+<a href="#2232" id="2232">2232</a>
+<a href="#2233" id="2233">2233</a>
+<a href="#2234" id="2234">2234</a>
+<a href="#2235" id="2235">2235</a>
+<a href="#2236" id="2236">2236</a>
+<a href="#2237" id="2237">2237</a>
+<a href="#2238" id="2238">2238</a>
+<a href="#2239" id="2239">2239</a>
+<a href="#2240" id="2240">2240</a>
+<a href="#2241" id="2241">2241</a>
+<a href="#2242" id="2242">2242</a>
+<a href="#2243" id="2243">2243</a>
+<a href="#2244" id="2244">2244</a>
+<a href="#2245" id="2245">2245</a>
+<a href="#2246" id="2246">2246</a>
+<a href="#2247" id="2247">2247</a>
+<a href="#2248" id="2248">2248</a>
+<a href="#2249" id="2249">2249</a>
+<a href="#2250" id="2250">2250</a>
+<a href="#2251" id="2251">2251</a>
+<a href="#2252" id="2252">2252</a>
+<a href="#2253" id="2253">2253</a>
+<a href="#2254" id="2254">2254</a>
+<a href="#2255" id="2255">2255</a>
+<a href="#2256" id="2256">2256</a>
+<a href="#2257" id="2257">2257</a>
+<a href="#2258" id="2258">2258</a>
+<a href="#2259" id="2259">2259</a>
+<a href="#2260" id="2260">2260</a>
+<a href="#2261" id="2261">2261</a>
+<a href="#2262" id="2262">2262</a>
+<a href="#2263" id="2263">2263</a>
+<a href="#2264" id="2264">2264</a>
+<a href="#2265" id="2265">2265</a>
+<a href="#2266" id="2266">2266</a>
+<a href="#2267" id="2267">2267</a>
+<a href="#2268" id="2268">2268</a>
+<a href="#2269" id="2269">2269</a>
+<a href="#2270" id="2270">2270</a>
+<a href="#2271" id="2271">2271</a>
+<a href="#2272" id="2272">2272</a>
+<a href="#2273" id="2273">2273</a>
+<a href="#2274" id="2274">2274</a>
+<a href="#2275" id="2275">2275</a>
+<a href="#2276" id="2276">2276</a>
+<a href="#2277" id="2277">2277</a>
+<a href="#2278" id="2278">2278</a>
+<a href="#2279" id="2279">2279</a>
+<a href="#2280" id="2280">2280</a>
+<a href="#2281" id="2281">2281</a>
+<a href="#2282" id="2282">2282</a>
+<a href="#2283" id="2283">2283</a>
+<a href="#2284" id="2284">2284</a>
+<a href="#2285" id="2285">2285</a>
+<a href="#2286" id="2286">2286</a>
+<a href="#2287" id="2287">2287</a>
+<a href="#2288" id="2288">2288</a>
+<a href="#2289" id="2289">2289</a>
+<a href="#2290" id="2290">2290</a>
+<a href="#2291" id="2291">2291</a>
+<a href="#2292" id="2292">2292</a>
+<a href="#2293" id="2293">2293</a>
+<a href="#2294" id="2294">2294</a>
+<a href="#2295" id="2295">2295</a>
+<a href="#2296" id="2296">2296</a>
+<a href="#2297" id="2297">2297</a>
+<a href="#2298" id="2298">2298</a>
+<a href="#2299" id="2299">2299</a>
+<a href="#2300" id="2300">2300</a>
+<a href="#2301" id="2301">2301</a>
+<a href="#2302" id="2302">2302</a>
+<a href="#2303" id="2303">2303</a>
+<a href="#2304" id="2304">2304</a>
+<a href="#2305" id="2305">2305</a>
+<a href="#2306" id="2306">2306</a>
+<a href="#2307" id="2307">2307</a>
+<a href="#2308" id="2308">2308</a>
+<a href="#2309" id="2309">2309</a>
+<a href="#2310" id="2310">2310</a>
+<a href="#2311" id="2311">2311</a>
+<a href="#2312" id="2312">2312</a>
+<a href="#2313" id="2313">2313</a>
+<a href="#2314" id="2314">2314</a>
+<a href="#2315" id="2315">2315</a>
+<a href="#2316" id="2316">2316</a>
+<a href="#2317" id="2317">2317</a>
+<a href="#2318" id="2318">2318</a>
+<a href="#2319" id="2319">2319</a>
+<a href="#2320" id="2320">2320</a>
+<a href="#2321" id="2321">2321</a>
+<a href="#2322" id="2322">2322</a>
+<a href="#2323" id="2323">2323</a>
+<a href="#2324" id="2324">2324</a>
+<a href="#2325" id="2325">2325</a>
+<a href="#2326" id="2326">2326</a>
+<a href="#2327" id="2327">2327</a>
+<a href="#2328" id="2328">2328</a>
+<a href="#2329" id="2329">2329</a>
+<a href="#2330" id="2330">2330</a>
+<a href="#2331" id="2331">2331</a>
+<a href="#2332" id="2332">2332</a>
+<a href="#2333" id="2333">2333</a>
+<a href="#2334" id="2334">2334</a>
+<a href="#2335" id="2335">2335</a>
+<a href="#2336" id="2336">2336</a>
+<a href="#2337" id="2337">2337</a>
+<a href="#2338" id="2338">2338</a>
+<a href="#2339" id="2339">2339</a>
+<a href="#2340" id="2340">2340</a>
+<a href="#2341" id="2341">2341</a>
+<a href="#2342" id="2342">2342</a>
+<a href="#2343" id="2343">2343</a>
+<a href="#2344" id="2344">2344</a>
+<a href="#2345" id="2345">2345</a>
+<a href="#2346" id="2346">2346</a>
+<a href="#2347" id="2347">2347</a>
+<a href="#2348" id="2348">2348</a>
+<a href="#2349" id="2349">2349</a>
+<a href="#2350" id="2350">2350</a>
+<a href="#2351" id="2351">2351</a>
+<a href="#2352" id="2352">2352</a>
+<a href="#2353" id="2353">2353</a>
+<a href="#2354" id="2354">2354</a>
+<a href="#2355" id="2355">2355</a>
+<a href="#2356" id="2356">2356</a>
+<a href="#2357" id="2357">2357</a>
+<a href="#2358" id="2358">2358</a>
+<a href="#2359" id="2359">2359</a>
+<a href="#2360" id="2360">2360</a>
+<a href="#2361" id="2361">2361</a>
+<a href="#2362" id="2362">2362</a>
+<a href="#2363" id="2363">2363</a>
+<a href="#2364" id="2364">2364</a>
+<a href="#2365" id="2365">2365</a>
+<a href="#2366" id="2366">2366</a>
+<a href="#2367" id="2367">2367</a>
+<a href="#2368" id="2368">2368</a>
+<a href="#2369" id="2369">2369</a>
+<a href="#2370" id="2370">2370</a>
+<a href="#2371" id="2371">2371</a>
+<a href="#2372" id="2372">2372</a>
+<a href="#2373" id="2373">2373</a>
+<a href="#2374" id="2374">2374</a>
+<a href="#2375" id="2375">2375</a>
+<a href="#2376" id="2376">2376</a>
+<a href="#2377" id="2377">2377</a>
+<a href="#2378" id="2378">2378</a>
+<a href="#2379" id="2379">2379</a>
+<a href="#2380" id="2380">2380</a>
+<a href="#2381" id="2381">2381</a>
+<a href="#2382" id="2382">2382</a>
+<a href="#2383" id="2383">2383</a>
+<a href="#2384" id="2384">2384</a>
+<a href="#2385" id="2385">2385</a>
+<a href="#2386" id="2386">2386</a>
+<a href="#2387" id="2387">2387</a>
+<a href="#2388" id="2388">2388</a>
+<a href="#2389" id="2389">2389</a>
+<a href="#2390" id="2390">2390</a>
+<a href="#2391" id="2391">2391</a>
+<a href="#2392" id="2392">2392</a>
+<a href="#2393" id="2393">2393</a>
+<a href="#2394" id="2394">2394</a>
+<a href="#2395" id="2395">2395</a>
+<a href="#2396" id="2396">2396</a>
+<a href="#2397" id="2397">2397</a>
+<a href="#2398" id="2398">2398</a>
+<a href="#2399" id="2399">2399</a>
+<a href="#2400" id="2400">2400</a>
+<a href="#2401" id="2401">2401</a>
+<a href="#2402" id="2402">2402</a>
+<a href="#2403" id="2403">2403</a>
+<a href="#2404" id="2404">2404</a>
+<a href="#2405" id="2405">2405</a>
+<a href="#2406" id="2406">2406</a>
+<a href="#2407" id="2407">2407</a>
+<a href="#2408" id="2408">2408</a>
+<a href="#2409" id="2409">2409</a>
+<a href="#2410" id="2410">2410</a>
+<a href="#2411" id="2411">2411</a>
+<a href="#2412" id="2412">2412</a>
+<a href="#2413" id="2413">2413</a>
+<a href="#2414" id="2414">2414</a>
+<a href="#2415" id="2415">2415</a>
+<a href="#2416" id="2416">2416</a>
+<a href="#2417" id="2417">2417</a>
+<a href="#2418" id="2418">2418</a>
+<a href="#2419" id="2419">2419</a>
+<a href="#2420" id="2420">2420</a>
+<a href="#2421" id="2421">2421</a>
+<a href="#2422" id="2422">2422</a>
+<a href="#2423" id="2423">2423</a>
+<a href="#2424" id="2424">2424</a>
+<a href="#2425" id="2425">2425</a>
+<a href="#2426" id="2426">2426</a>
+<a href="#2427" id="2427">2427</a>
+<a href="#2428" id="2428">2428</a>
+<a href="#2429" id="2429">2429</a>
+<a href="#2430" id="2430">2430</a>
+<a href="#2431" id="2431">2431</a>
+<a href="#2432" id="2432">2432</a>
+<a href="#2433" id="2433">2433</a>
+<a href="#2434" id="2434">2434</a>
+<a href="#2435" id="2435">2435</a>
+<a href="#2436" id="2436">2436</a>
+<a href="#2437" id="2437">2437</a>
+<a href="#2438" id="2438">2438</a>
+<a href="#2439" id="2439">2439</a>
+<a href="#2440" id="2440">2440</a>
+<a href="#2441" id="2441">2441</a>
+<a href="#2442" id="2442">2442</a>
+<a href="#2443" id="2443">2443</a>
+<a href="#2444" id="2444">2444</a>
+<a href="#2445" id="2445">2445</a>
+<a href="#2446" id="2446">2446</a>
+<a href="#2447" id="2447">2447</a>
+<a href="#2448" id="2448">2448</a>
+<a href="#2449" id="2449">2449</a>
+<a href="#2450" id="2450">2450</a>
+<a href="#2451" id="2451">2451</a>
+<a href="#2452" id="2452">2452</a>
+<a href="#2453" id="2453">2453</a>
+<a href="#2454" id="2454">2454</a>
+<a href="#2455" id="2455">2455</a>
+<a href="#2456" id="2456">2456</a>
+<a href="#2457" id="2457">2457</a>
+<a href="#2458" id="2458">2458</a>
+<a href="#2459" id="2459">2459</a>
+<a href="#2460" id="2460">2460</a>
+<a href="#2461" id="2461">2461</a>
+<a href="#2462" id="2462">2462</a>
+<a href="#2463" id="2463">2463</a>
+<a href="#2464" id="2464">2464</a>
+<a href="#2465" id="2465">2465</a>
+<a href="#2466" id="2466">2466</a>
+<a href="#2467" id="2467">2467</a>
+<a href="#2468" id="2468">2468</a>
+<a href="#2469" id="2469">2469</a>
+<a href="#2470" id="2470">2470</a>
+<a href="#2471" id="2471">2471</a>
+<a href="#2472" id="2472">2472</a>
+<a href="#2473" id="2473">2473</a>
+<a href="#2474" id="2474">2474</a>
+<a href="#2475" id="2475">2475</a>
+<a href="#2476" id="2476">2476</a>
+<a href="#2477" id="2477">2477</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2018-2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span>std::cmp;
+
+<span class="kw">use </span>std::str::FromStr;
+
+<span class="kw">use </span>std::time::Duration;
+<span class="kw">use </span>std::time::Instant;
+
+<span class="kw">use </span>std::collections::VecDeque;
+
+<span class="kw">use </span><span class="kw">crate</span>::Config;
+<span class="kw">use </span><span class="kw">crate</span>::Result;
+
+<span class="kw">use </span><span class="kw">crate</span>::frame;
+<span class="kw">use </span><span class="kw">crate</span>::minmax;
+<span class="kw">use </span><span class="kw">crate</span>::packet;
+<span class="kw">use </span><span class="kw">crate</span>::ranges;
+
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">use </span>qlog::events::EventData;
+
+<span class="kw">use </span>smallvec::SmallVec;
+
+<span class="comment">// Loss Recovery
+</span><span class="kw">const </span>INITIAL_PACKET_THRESHOLD: u64 = <span class="number">3</span>;
+
+<span class="kw">const </span>MAX_PACKET_THRESHOLD: u64 = <span class="number">20</span>;
+
+<span class="kw">const </span>INITIAL_TIME_THRESHOLD: f64 = <span class="number">9.0 </span>/ <span class="number">8.0</span>;
+
+<span class="kw">const </span>GRANULARITY: Duration = Duration::from_millis(<span class="number">1</span>);
+
+<span class="kw">const </span>INITIAL_RTT: Duration = Duration::from_millis(<span class="number">333</span>);
+
+<span class="kw">const </span>PERSISTENT_CONGESTION_THRESHOLD: u32 = <span class="number">3</span>;
+
+<span class="kw">const </span>RTT_WINDOW: Duration = Duration::from_secs(<span class="number">300</span>);
+
+<span class="kw">const </span>MAX_PTO_PROBES_COUNT: usize = <span class="number">2</span>;
+
+<span class="kw">const </span>MINIMUM_WINDOW_PACKETS: usize = <span class="number">2</span>;
+
+<span class="kw">const </span>LOSS_REDUCTION_FACTOR: f64 = <span class="number">0.5</span>;
+
+<span class="kw">const </span>PACING_MULTIPLIER: f64 = <span class="number">1.25</span>;
+
+<span class="comment">// How many non ACK eliciting packets we send before including a PING to solicit
+// an ACK.
+</span><span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">const </span>MAX_OUTSTANDING_NON_ACK_ELICITING: usize = <span class="number">24</span>;
+
+<span class="kw">pub struct </span>Recovery {
+    loss_detection_timer: <span class="prelude-ty">Option</span>&lt;Instant&gt;,
+
+    pto_count: u32,
+
+    time_of_last_sent_ack_eliciting_pkt:
+        [<span class="prelude-ty">Option</span>&lt;Instant&gt;; packet::Epoch::count()],
+
+    largest_acked_pkt: [u64; packet::Epoch::count()],
+
+    largest_sent_pkt: [u64; packet::Epoch::count()],
+
+    latest_rtt: Duration,
+
+    smoothed_rtt: <span class="prelude-ty">Option</span>&lt;Duration&gt;,
+
+    rttvar: Duration,
+
+    minmax_filter: minmax::Minmax&lt;Duration&gt;,
+
+    min_rtt: Duration,
+
+    <span class="kw">pub </span>max_ack_delay: Duration,
+
+    loss_time: [<span class="prelude-ty">Option</span>&lt;Instant&gt;; packet::Epoch::count()],
+
+    sent: [VecDeque&lt;Sent&gt;; packet::Epoch::count()],
+
+    <span class="kw">pub </span>lost: [Vec&lt;frame::Frame&gt;; packet::Epoch::count()],
+
+    <span class="kw">pub </span>acked: [Vec&lt;frame::Frame&gt;; packet::Epoch::count()],
+
+    <span class="kw">pub </span>lost_count: usize,
+
+    <span class="kw">pub </span>lost_spurious_count: usize,
+
+    <span class="kw">pub </span>loss_probes: [usize; packet::Epoch::count()],
+
+    in_flight_count: [usize; packet::Epoch::count()],
+
+    app_limited: bool,
+
+    delivery_rate: delivery_rate::Rate,
+
+    pkt_thresh: u64,
+
+    time_thresh: f64,
+
+    <span class="comment">// Congestion control.
+    </span>cc_ops: <span class="kw-2">&amp;</span><span class="lifetime">'static </span>CongestionControlOps,
+
+    congestion_window: usize,
+
+    bytes_in_flight: usize,
+
+    ssthresh: usize,
+
+    bytes_acked_sl: usize,
+
+    bytes_acked_ca: usize,
+
+    bytes_sent: usize,
+
+    <span class="kw">pub </span>bytes_lost: u64,
+
+    congestion_recovery_start_time: <span class="prelude-ty">Option</span>&lt;Instant&gt;,
+
+    max_datagram_size: usize,
+
+    cubic_state: cubic::State,
+
+    <span class="comment">// HyStart++.
+    </span>hystart: hystart::Hystart,
+
+    <span class="comment">// Pacing.
+    </span><span class="kw">pub </span>pacer: pacer::Pacer,
+
+    <span class="comment">// RFC6937 PRR.
+    </span>prr: prr::PRR,
+
+    <span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+    </span>qlog_metrics: QlogMetrics,
+
+    <span class="comment">// The maximum size of a data aggregate scheduled and
+    // transmitted together.
+    </span>send_quantum: usize,
+
+    <span class="comment">// BBR state.
+    </span>bbr_state: bbr::State,
+
+    <span class="comment">// BBRv2 state.
+    </span>bbr2_state: bbr2::State,
+
+    <span class="doccomment">/// How many non-ack-eliciting packets have been sent.
+    </span>outstanding_non_ack_eliciting: usize,
+
+    <span class="doccomment">/// Initial congestion window size in terms of packet count.
+    </span>initial_congestion_window_packets: usize,
+}
+
+<span class="kw">pub struct </span>RecoveryConfig {
+    max_send_udp_payload_size: usize,
+    <span class="kw">pub </span>max_ack_delay: Duration,
+    cc_ops: <span class="kw-2">&amp;</span><span class="lifetime">'static </span>CongestionControlOps,
+    hystart: bool,
+    pacing: bool,
+    max_pacing_rate: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    initial_congestion_window_packets: usize,
+}
+
+<span class="kw">impl </span>RecoveryConfig {
+    <span class="kw">pub fn </span>from_config(config: <span class="kw-2">&amp;</span>Config) -&gt; <span class="self">Self </span>{
+        <span class="self">Self </span>{
+            max_send_udp_payload_size: config.max_send_udp_payload_size,
+            max_ack_delay: Duration::ZERO,
+            cc_ops: config.cc_algorithm.into(),
+            hystart: config.hystart,
+            pacing: config.pacing,
+            max_pacing_rate: config.max_pacing_rate,
+            initial_congestion_window_packets: config
+                .initial_congestion_window_packets,
+        }
+    }
+}
+
+<span class="kw">impl </span>Recovery {
+    <span class="kw">pub fn </span>new_with_config(recovery_config: <span class="kw-2">&amp;</span>RecoveryConfig) -&gt; <span class="self">Self </span>{
+        <span class="kw">let </span>initial_congestion_window = recovery_config.max_send_udp_payload_size *
+            recovery_config.initial_congestion_window_packets;
+
+        Recovery {
+            loss_detection_timer: <span class="prelude-val">None</span>,
+
+            pto_count: <span class="number">0</span>,
+
+            time_of_last_sent_ack_eliciting_pkt: [<span class="prelude-val">None</span>; packet::Epoch::count()],
+
+            largest_acked_pkt: [u64::MAX; packet::Epoch::count()],
+
+            largest_sent_pkt: [<span class="number">0</span>; packet::Epoch::count()],
+
+            latest_rtt: Duration::ZERO,
+
+            <span class="comment">// This field should be initialized to `INITIAL_RTT` for the initial
+            // PTO calculation, but it also needs to be an `Option` to track
+            // whether any RTT sample was received, so the initial value is
+            // handled by the `rtt()` method instead.
+            </span>smoothed_rtt: <span class="prelude-val">None</span>,
+
+            minmax_filter: minmax::Minmax::new(Duration::ZERO),
+
+            min_rtt: Duration::ZERO,
+
+            rttvar: INITIAL_RTT / <span class="number">2</span>,
+
+            max_ack_delay: recovery_config.max_ack_delay,
+
+            loss_time: [<span class="prelude-val">None</span>; packet::Epoch::count()],
+
+            sent: [VecDeque::new(), VecDeque::new(), VecDeque::new()],
+
+            lost: [Vec::new(), Vec::new(), Vec::new()],
+
+            acked: [Vec::new(), Vec::new(), Vec::new()],
+
+            lost_count: <span class="number">0</span>,
+            lost_spurious_count: <span class="number">0</span>,
+
+            loss_probes: [<span class="number">0</span>; packet::Epoch::count()],
+
+            in_flight_count: [<span class="number">0</span>; packet::Epoch::count()],
+
+            congestion_window: initial_congestion_window,
+
+            pkt_thresh: INITIAL_PACKET_THRESHOLD,
+
+            time_thresh: INITIAL_TIME_THRESHOLD,
+
+            bytes_in_flight: <span class="number">0</span>,
+
+            ssthresh: usize::MAX,
+
+            bytes_acked_sl: <span class="number">0</span>,
+
+            bytes_acked_ca: <span class="number">0</span>,
+
+            bytes_sent: <span class="number">0</span>,
+
+            bytes_lost: <span class="number">0</span>,
+
+            congestion_recovery_start_time: <span class="prelude-val">None</span>,
+
+            max_datagram_size: recovery_config.max_send_udp_payload_size,
+
+            cc_ops: recovery_config.cc_ops,
+
+            delivery_rate: delivery_rate::Rate::default(),
+
+            cubic_state: cubic::State::default(),
+
+            app_limited: <span class="bool-val">false</span>,
+
+            hystart: hystart::Hystart::new(recovery_config.hystart),
+
+            pacer: pacer::Pacer::new(
+                recovery_config.pacing,
+                initial_congestion_window,
+                <span class="number">0</span>,
+                recovery_config.max_send_udp_payload_size,
+                recovery_config.max_pacing_rate,
+            ),
+
+            prr: prr::PRR::default(),
+
+            send_quantum: initial_congestion_window,
+
+            <span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+            </span>qlog_metrics: QlogMetrics::default(),
+
+            bbr_state: bbr::State::new(),
+
+            bbr2_state: bbr2::State::new(),
+
+            outstanding_non_ack_eliciting: <span class="number">0</span>,
+
+            initial_congestion_window_packets: recovery_config
+                .initial_congestion_window_packets,
+        }
+    }
+
+    <span class="kw">pub fn </span>new(config: <span class="kw-2">&amp;</span>Config) -&gt; <span class="self">Self </span>{
+        <span class="self">Self</span>::new_with_config(<span class="kw-2">&amp;</span>RecoveryConfig::from_config(config))
+    }
+
+    <span class="kw">pub fn </span>on_init(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        (<span class="self">self</span>.cc_ops.on_init)(<span class="self">self</span>);
+    }
+
+    <span class="kw">pub fn </span>reset(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="self">self</span>.congestion_window =
+            <span class="self">self</span>.max_datagram_size * <span class="self">self</span>.initial_congestion_window_packets;
+        <span class="self">self</span>.in_flight_count = [<span class="number">0</span>; packet::Epoch::count()];
+        <span class="self">self</span>.congestion_recovery_start_time = <span class="prelude-val">None</span>;
+        <span class="self">self</span>.ssthresh = usize::MAX;
+        (<span class="self">self</span>.cc_ops.reset)(<span class="self">self</span>);
+        <span class="self">self</span>.hystart.reset();
+        <span class="self">self</span>.prr = prr::PRR::default();
+    }
+
+    <span class="doccomment">/// Returns whether or not we should elicit an ACK even if we wouldn't
+    /// otherwise have constructed an ACK eliciting packet.
+    </span><span class="kw">pub fn </span>should_elicit_ack(<span class="kw-2">&amp;</span><span class="self">self</span>, epoch: packet::Epoch) -&gt; bool {
+        <span class="self">self</span>.loss_probes[epoch] &gt; <span class="number">0 </span>||
+            <span class="self">self</span>.outstanding_non_ack_eliciting &gt;=
+                MAX_OUTSTANDING_NON_ACK_ELICITING
+    }
+
+    <span class="kw">pub fn </span>on_packet_sent(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, <span class="kw-2">mut </span>pkt: Sent, epoch: packet::Epoch,
+        handshake_status: HandshakeStatus, now: Instant, trace_id: <span class="kw-2">&amp;</span>str,
+    ) {
+        <span class="kw">let </span>ack_eliciting = pkt.ack_eliciting;
+        <span class="kw">let </span>in_flight = pkt.in_flight;
+        <span class="kw">let </span>sent_bytes = pkt.size;
+        <span class="kw">let </span>pkt_num = pkt.pkt_num;
+
+        <span class="kw">if </span>ack_eliciting {
+            <span class="self">self</span>.outstanding_non_ack_eliciting = <span class="number">0</span>;
+        } <span class="kw">else </span>{
+            <span class="self">self</span>.outstanding_non_ack_eliciting += <span class="number">1</span>;
+        }
+
+        <span class="self">self</span>.largest_sent_pkt[epoch] =
+            cmp::max(<span class="self">self</span>.largest_sent_pkt[epoch], pkt_num);
+
+        <span class="kw">if </span>in_flight {
+            <span class="kw">if </span>ack_eliciting {
+                <span class="self">self</span>.time_of_last_sent_ack_eliciting_pkt[epoch] = <span class="prelude-val">Some</span>(now);
+            }
+
+            <span class="self">self</span>.in_flight_count[epoch] += <span class="number">1</span>;
+
+            <span class="self">self</span>.update_app_limited(
+                (<span class="self">self</span>.bytes_in_flight + sent_bytes) &lt; <span class="self">self</span>.congestion_window,
+            );
+
+            <span class="self">self</span>.on_packet_sent_cc(sent_bytes, now);
+
+            <span class="self">self</span>.prr.on_packet_sent(sent_bytes);
+
+            <span class="self">self</span>.set_loss_detection_timer(handshake_status, now);
+        }
+
+        <span class="comment">// HyStart++: Start of the round in a slow start.
+        </span><span class="kw">if </span><span class="self">self</span>.hystart.enabled() &amp;&amp;
+            epoch == packet::Epoch::Application &amp;&amp;
+            <span class="self">self</span>.congestion_window &lt; <span class="self">self</span>.ssthresh
+        {
+            <span class="self">self</span>.hystart.start_round(pkt_num);
+        }
+
+        <span class="comment">// Pacing: Set the pacing rate if CC doesn't do its own.
+        </span><span class="kw">if </span>!(<span class="self">self</span>.cc_ops.has_custom_pacing)() {
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(srtt) = <span class="self">self</span>.smoothed_rtt {
+                <span class="kw">let </span>rate = PACING_MULTIPLIER * <span class="self">self</span>.congestion_window <span class="kw">as </span>f64 /
+                    srtt.as_secs_f64();
+                <span class="self">self</span>.set_pacing_rate(rate <span class="kw">as </span>u64, now);
+            }
+        }
+
+        <span class="self">self</span>.schedule_next_packet(epoch, now, sent_bytes);
+
+        pkt.time_sent = <span class="self">self</span>.get_packet_send_time();
+
+        <span class="comment">// bytes_in_flight is already updated. Use previous value.
+        </span><span class="self">self</span>.delivery_rate.on_packet_sent(
+            <span class="kw-2">&amp;mut </span>pkt,
+            <span class="self">self</span>.bytes_in_flight - sent_bytes,
+            <span class="self">self</span>.bytes_lost,
+        );
+
+        <span class="self">self</span>.sent[epoch].push_back(pkt);
+
+        <span class="self">self</span>.bytes_sent += sent_bytes;
+        <span class="macro">trace!</span>(<span class="string">"{} {:?}"</span>, trace_id, <span class="self">self</span>);
+    }
+
+    <span class="kw">fn </span>on_packet_sent_cc(<span class="kw-2">&amp;mut </span><span class="self">self</span>, sent_bytes: usize, now: Instant) {
+        (<span class="self">self</span>.cc_ops.on_packet_sent)(<span class="self">self</span>, sent_bytes, now);
+    }
+
+    <span class="kw">pub fn </span>set_pacing_rate(<span class="kw-2">&amp;mut </span><span class="self">self</span>, rate: u64, now: Instant) {
+        <span class="self">self</span>.pacer.update(<span class="self">self</span>.send_quantum, rate, now);
+    }
+
+    <span class="kw">pub fn </span>get_packet_send_time(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; Instant {
+        <span class="self">self</span>.pacer.next_time()
+    }
+
+    <span class="kw">fn </span>schedule_next_packet(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, epoch: packet::Epoch, now: Instant, packet_size: usize,
+    ) {
+        <span class="comment">// Don't pace in any of these cases:
+        //   * Packet contains no data.
+        //   * Packet epoch is not Epoch::Application.
+        //   * The congestion window is within initcwnd.
+
+        </span><span class="kw">let </span>is_app = epoch == packet::Epoch::Application;
+
+        <span class="kw">let </span>in_initcwnd = <span class="self">self</span>.bytes_sent &lt;
+            <span class="self">self</span>.max_datagram_size * <span class="self">self</span>.initial_congestion_window_packets;
+
+        <span class="kw">let </span>sent_bytes = <span class="kw">if </span>!<span class="self">self</span>.pacer.enabled() || !is_app || in_initcwnd {
+            <span class="number">0
+        </span>} <span class="kw">else </span>{
+            packet_size
+        };
+
+        <span class="self">self</span>.pacer.send(sent_bytes, now);
+    }
+
+    <span class="attr">#[allow(clippy::too_many_arguments)]
+    </span><span class="kw">pub fn </span>on_ack_received(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, ranges: <span class="kw-2">&amp;</span>ranges::RangeSet, ack_delay: u64,
+        epoch: packet::Epoch, handshake_status: HandshakeStatus, now: Instant,
+        trace_id: <span class="kw-2">&amp;</span>str, newly_acked: <span class="kw-2">&amp;mut </span>Vec&lt;Acked&gt;,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;(usize, usize)&gt; {
+        <span class="kw">let </span>largest_acked = ranges.last().unwrap();
+
+        <span class="comment">// While quiche used to consider ACK frames acknowledging packet numbers
+        // larger than the largest sent one as invalid, this is not true anymore
+        // if we consider a single packet number space and multiple paths. The
+        // simplest example is the case where the host sends a probing packet on
+        // a validating path, then receives an acknowledgment for that packet on
+        // the active one.
+
+        </span><span class="kw">if </span><span class="self">self</span>.largest_acked_pkt[epoch] == u64::MAX {
+            <span class="self">self</span>.largest_acked_pkt[epoch] = largest_acked;
+        } <span class="kw">else </span>{
+            <span class="self">self</span>.largest_acked_pkt[epoch] =
+                cmp::max(<span class="self">self</span>.largest_acked_pkt[epoch], largest_acked);
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>has_ack_eliciting = <span class="bool-val">false</span>;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>largest_newly_acked_pkt_num = <span class="number">0</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>largest_newly_acked_sent_time = now;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>undo_cwnd = <span class="bool-val">false</span>;
+
+        <span class="kw">let </span>max_rtt = cmp::max(<span class="self">self</span>.latest_rtt, <span class="self">self</span>.rtt());
+
+        <span class="kw">let </span>sent = <span class="kw-2">&amp;mut </span><span class="self">self</span>.sent[epoch];
+
+        <span class="comment">// Detect and mark acked packets, without removing them from the sent
+        // packets list.
+        </span><span class="kw">for </span>r <span class="kw">in </span>ranges.iter() {
+            <span class="kw">let </span>lowest_acked_in_block = r.start;
+            <span class="kw">let </span>largest_acked_in_block = r.end - <span class="number">1</span>;
+
+            <span class="kw">let </span>first_unacked = <span class="kw">if </span>sent
+                .front()
+                .map(|p| p.pkt_num &gt;= lowest_acked_in_block)
+                .unwrap_or(<span class="bool-val">true</span>)
+            {
+                <span class="comment">// In the happy case the first sent packet is the first to be
+                // acked, so optimize for that case.
+                </span><span class="number">0
+            </span>} <span class="kw">else </span>{
+                <span class="comment">// If it is not the first packet, try to find it using binary
+                // search.
+                </span>sent.binary_search_by_key(<span class="kw-2">&amp;</span>lowest_acked_in_block, |e| e.pkt_num)
+                    .unwrap_or_else(|i| i)
+            };
+
+            <span class="kw">let </span>unacked_iter = sent.range_mut(first_unacked..)
+                <span class="comment">// Skip packets that follow the largest acked packet in the block.
+                </span>.take_while(|p| p.pkt_num &lt;= largest_acked_in_block)
+                <span class="comment">// Skip packets that have already been acked or lost.
+                </span>.filter(|p| p.time_acked.is_none());
+
+            <span class="kw">for </span>unacked <span class="kw">in </span>unacked_iter {
+                unacked.time_acked = <span class="prelude-val">Some</span>(now);
+
+                <span class="comment">// Check if acked packet was already declared lost.
+                </span><span class="kw">if </span>unacked.time_lost.is_some() {
+                    <span class="comment">// Calculate new packet reordering threshold.
+                    </span><span class="kw">let </span>pkt_thresh =
+                        <span class="self">self</span>.largest_acked_pkt[epoch] - unacked.pkt_num + <span class="number">1</span>;
+                    <span class="kw">let </span>pkt_thresh = cmp::min(MAX_PACKET_THRESHOLD, pkt_thresh);
+
+                    <span class="self">self</span>.pkt_thresh = cmp::max(<span class="self">self</span>.pkt_thresh, pkt_thresh);
+
+                    <span class="comment">// Calculate new time reordering threshold.
+                    </span><span class="kw">let </span>loss_delay = max_rtt.mul_f64(<span class="self">self</span>.time_thresh);
+
+                    <span class="comment">// unacked.time_sent can be in the future due to
+                    // pacing.
+                    </span><span class="kw">if </span>now.saturating_duration_since(unacked.time_sent) &gt;
+                        loss_delay
+                    {
+                        <span class="comment">// TODO: do time threshold update
+                        </span><span class="self">self</span>.time_thresh = <span class="number">5_f64 </span>/ <span class="number">4_f64</span>;
+                    }
+
+                    <span class="kw">if </span>unacked.in_flight {
+                        undo_cwnd = <span class="bool-val">true</span>;
+                    }
+
+                    <span class="self">self</span>.lost_spurious_count += <span class="number">1</span>;
+                    <span class="kw">continue</span>;
+                }
+
+                <span class="kw">if </span>unacked.ack_eliciting {
+                    has_ack_eliciting = <span class="bool-val">true</span>;
+                }
+
+                largest_newly_acked_pkt_num = unacked.pkt_num;
+                largest_newly_acked_sent_time = unacked.time_sent;
+
+                <span class="self">self</span>.acked[epoch].extend(unacked.frames.drain(..));
+
+                <span class="kw">if </span>unacked.in_flight {
+                    <span class="self">self</span>.in_flight_count[epoch] =
+                        <span class="self">self</span>.in_flight_count[epoch].saturating_sub(<span class="number">1</span>);
+                }
+
+                newly_acked.push(Acked {
+                    pkt_num: unacked.pkt_num,
+
+                    time_sent: unacked.time_sent,
+
+                    size: unacked.size,
+
+                    rtt: now.saturating_duration_since(unacked.time_sent),
+
+                    delivered: unacked.delivered,
+
+                    delivered_time: unacked.delivered_time,
+
+                    first_sent_time: unacked.first_sent_time,
+
+                    is_app_limited: unacked.is_app_limited,
+
+                    tx_in_flight: unacked.tx_in_flight,
+
+                    lost: unacked.lost,
+                });
+
+                <span class="macro">trace!</span>(<span class="string">"{} packet newly acked {}"</span>, trace_id, unacked.pkt_num);
+            }
+        }
+
+        <span class="comment">// Undo congestion window update.
+        </span><span class="kw">if </span>undo_cwnd {
+            (<span class="self">self</span>.cc_ops.rollback)(<span class="self">self</span>);
+        }
+
+        <span class="kw">if </span>newly_acked.is_empty() {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="number">0</span>));
+        }
+
+        <span class="kw">if </span>largest_newly_acked_pkt_num == largest_acked &amp;&amp; has_ack_eliciting {
+            <span class="comment">// The packet's sent time could be in the future if pacing is used
+            // and the network has a very short RTT.
+            </span><span class="kw">let </span>latest_rtt =
+                now.saturating_duration_since(largest_newly_acked_sent_time);
+
+            <span class="kw">let </span>ack_delay = <span class="kw">if </span>epoch == packet::Epoch::Application {
+                Duration::from_micros(ack_delay)
+            } <span class="kw">else </span>{
+                Duration::from_micros(<span class="number">0</span>)
+            };
+
+            <span class="comment">// Don't update srtt if rtt is zero.
+            </span><span class="kw">if </span>!latest_rtt.is_zero() {
+                <span class="self">self</span>.update_rtt(latest_rtt, ack_delay, now);
+            }
+        }
+
+        <span class="comment">// Detect and mark lost packets without removing them from the sent
+        // packets list.
+        </span><span class="kw">let </span>(lost_packets, lost_bytes) =
+            <span class="self">self</span>.detect_lost_packets(epoch, now, trace_id);
+
+        <span class="self">self</span>.on_packets_acked(newly_acked, epoch, now);
+
+        <span class="self">self</span>.pto_count = <span class="number">0</span>;
+
+        <span class="self">self</span>.set_loss_detection_timer(handshake_status, now);
+
+        <span class="self">self</span>.drain_packets(epoch, now);
+
+        <span class="prelude-val">Ok</span>((lost_packets, lost_bytes))
+    }
+
+    <span class="kw">pub fn </span>on_loss_detection_timeout(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, handshake_status: HandshakeStatus, now: Instant,
+        trace_id: <span class="kw-2">&amp;</span>str,
+    ) -&gt; (usize, usize) {
+        <span class="kw">let </span>(earliest_loss_time, epoch) = <span class="self">self</span>.loss_time_and_space();
+
+        <span class="kw">if </span>earliest_loss_time.is_some() {
+            <span class="comment">// Time threshold loss detection.
+            </span><span class="kw">let </span>(lost_packets, lost_bytes) =
+                <span class="self">self</span>.detect_lost_packets(epoch, now, trace_id);
+
+            <span class="self">self</span>.set_loss_detection_timer(handshake_status, now);
+
+            <span class="macro">trace!</span>(<span class="string">"{} {:?}"</span>, trace_id, <span class="self">self</span>);
+            <span class="kw">return </span>(lost_packets, lost_bytes);
+        }
+
+        <span class="kw">let </span>epoch = <span class="kw">if </span><span class="self">self</span>.bytes_in_flight &gt; <span class="number">0 </span>{
+            <span class="comment">// Send new data if available, else retransmit old data. If neither
+            // is available, send a single PING frame.
+            </span><span class="kw">let </span>(<span class="kw">_</span>, e) = <span class="self">self</span>.pto_time_and_space(handshake_status, now);
+
+            e
+        } <span class="kw">else </span>{
+            <span class="comment">// Client sends an anti-deadlock packet: Initial is padded to earn
+            // more anti-amplification credit, a Handshake packet proves address
+            // ownership.
+            </span><span class="kw">if </span>handshake_status.has_handshake_keys {
+                packet::Epoch::Handshake
+            } <span class="kw">else </span>{
+                packet::Epoch::Initial
+            }
+        };
+
+        <span class="self">self</span>.pto_count += <span class="number">1</span>;
+
+        <span class="self">self</span>.loss_probes[epoch] =
+            cmp::min(<span class="self">self</span>.pto_count <span class="kw">as </span>usize, MAX_PTO_PROBES_COUNT);
+
+        <span class="kw">let </span>unacked_iter = <span class="self">self</span>.sent[epoch]
+            .iter_mut()
+            <span class="comment">// Skip packets that have already been acked or lost, and packets
+            // that don't contain either CRYPTO or STREAM frames.
+            </span>.filter(|p| p.has_data &amp;&amp; p.time_acked.is_none() &amp;&amp; p.time_lost.is_none())
+            <span class="comment">// Only return as many packets as the number of probe packets that
+            // will be sent.
+            </span>.take(<span class="self">self</span>.loss_probes[epoch]);
+
+        <span class="comment">// Retransmit the frames from the oldest sent packets on PTO. However
+        // the packets are not actually declared lost (so there is no effect to
+        // congestion control), we just reschedule the data they carried.
+        //
+        // This will also trigger sending an ACK and retransmitting frames like
+        // HANDSHAKE_DONE and MAX_DATA / MAX_STREAM_DATA as well, in addition
+        // to CRYPTO and STREAM, if the original packet carried them.
+        </span><span class="kw">for </span>unacked <span class="kw">in </span>unacked_iter {
+            <span class="self">self</span>.lost[epoch].extend_from_slice(<span class="kw-2">&amp;</span>unacked.frames);
+        }
+
+        <span class="self">self</span>.set_loss_detection_timer(handshake_status, now);
+
+        <span class="macro">trace!</span>(<span class="string">"{} {:?}"</span>, trace_id, <span class="self">self</span>);
+
+        (<span class="number">0</span>, <span class="number">0</span>)
+    }
+
+    <span class="kw">pub fn </span>on_pkt_num_space_discarded(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, epoch: packet::Epoch, handshake_status: HandshakeStatus,
+        now: Instant,
+    ) {
+        <span class="kw">let </span>unacked_bytes = <span class="self">self</span>.sent[epoch]
+            .iter()
+            .filter(|p| {
+                p.in_flight &amp;&amp; p.time_acked.is_none() &amp;&amp; p.time_lost.is_none()
+            })
+            .fold(<span class="number">0</span>, |acc, p| acc + p.size);
+
+        <span class="self">self</span>.bytes_in_flight = <span class="self">self</span>.bytes_in_flight.saturating_sub(unacked_bytes);
+
+        <span class="self">self</span>.sent[epoch].clear();
+        <span class="self">self</span>.lost[epoch].clear();
+        <span class="self">self</span>.acked[epoch].clear();
+
+        <span class="self">self</span>.time_of_last_sent_ack_eliciting_pkt[epoch] = <span class="prelude-val">None</span>;
+        <span class="self">self</span>.loss_time[epoch] = <span class="prelude-val">None</span>;
+        <span class="self">self</span>.loss_probes[epoch] = <span class="number">0</span>;
+        <span class="self">self</span>.in_flight_count[epoch] = <span class="number">0</span>;
+
+        <span class="self">self</span>.set_loss_detection_timer(handshake_status, now);
+    }
+
+    <span class="kw">pub fn </span>on_path_change(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, epoch: packet::Epoch, now: Instant, trace_id: <span class="kw-2">&amp;</span>str,
+    ) -&gt; (usize, usize) {
+        <span class="self">self</span>.detect_lost_packets(epoch, now, trace_id)
+    }
+
+    <span class="kw">pub fn </span>loss_detection_timer(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;Instant&gt; {
+        <span class="self">self</span>.loss_detection_timer
+    }
+
+    <span class="kw">pub fn </span>cwnd(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.congestion_window
+    }
+
+    <span class="kw">pub fn </span>cwnd_available(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="comment">// Ignore cwnd when sending probe packets.
+        </span><span class="kw">if </span><span class="self">self</span>.loss_probes.iter().any(|<span class="kw-2">&amp;</span>x| x &gt; <span class="number">0</span>) {
+            <span class="kw">return </span>usize::MAX;
+        }
+
+        <span class="comment">// Open more space (snd_cnt) for PRR when allowed.
+        </span><span class="self">self</span>.congestion_window.saturating_sub(<span class="self">self</span>.bytes_in_flight) +
+            <span class="self">self</span>.prr.snd_cnt
+    }
+
+    <span class="kw">pub fn </span>rtt(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; Duration {
+        <span class="self">self</span>.smoothed_rtt.unwrap_or(INITIAL_RTT)
+    }
+
+    <span class="kw">pub fn </span>min_rtt(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;Duration&gt; {
+        <span class="kw">if </span><span class="self">self</span>.min_rtt == Duration::ZERO {
+            <span class="kw">return </span><span class="prelude-val">None</span>;
+        }
+
+        <span class="prelude-val">Some</span>(<span class="self">self</span>.min_rtt)
+    }
+
+    <span class="kw">pub fn </span>rttvar(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; Duration {
+        <span class="self">self</span>.rttvar
+    }
+
+    <span class="kw">pub fn </span>pto(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; Duration {
+        <span class="self">self</span>.rtt() + cmp::max(<span class="self">self</span>.rttvar * <span class="number">4</span>, GRANULARITY)
+    }
+
+    <span class="kw">pub fn </span>delivery_rate(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.delivery_rate.sample_delivery_rate()
+    }
+
+    <span class="kw">pub fn </span>max_datagram_size(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.max_datagram_size
+    }
+
+    <span class="kw">pub fn </span>pmtud_update_max_datagram_size(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, new_max_datagram_size: usize,
+    ) {
+        <span class="comment">// Congestion Window is updated only when it's not updated already.
+        </span><span class="kw">if </span><span class="self">self</span>.congestion_window ==
+            <span class="self">self</span>.max_datagram_size * <span class="self">self</span>.initial_congestion_window_packets
+        {
+            <span class="self">self</span>.congestion_window =
+                new_max_datagram_size * <span class="self">self</span>.initial_congestion_window_packets;
+        }
+
+        <span class="self">self</span>.pacer = pacer::Pacer::new(
+            <span class="self">self</span>.pacer.enabled(),
+            <span class="self">self</span>.congestion_window,
+            <span class="number">0</span>,
+            new_max_datagram_size,
+            <span class="self">self</span>.pacer.max_pacing_rate(),
+        );
+        <span class="self">self</span>.max_datagram_size = new_max_datagram_size;
+    }
+
+    <span class="kw">pub fn </span>update_max_datagram_size(<span class="kw-2">&amp;mut </span><span class="self">self</span>, new_max_datagram_size: usize) {
+        <span class="kw">let </span>max_datagram_size =
+            cmp::min(<span class="self">self</span>.max_datagram_size, new_max_datagram_size);
+
+        <span class="comment">// Update cwnd if it hasn't been updated yet.
+        </span><span class="kw">if </span><span class="self">self</span>.congestion_window ==
+            <span class="self">self</span>.max_datagram_size * <span class="self">self</span>.initial_congestion_window_packets
+        {
+            <span class="self">self</span>.congestion_window =
+                max_datagram_size * <span class="self">self</span>.initial_congestion_window_packets;
+        }
+
+        <span class="self">self</span>.pacer = pacer::Pacer::new(
+            <span class="self">self</span>.pacer.enabled(),
+            <span class="self">self</span>.congestion_window,
+            <span class="number">0</span>,
+            max_datagram_size,
+            <span class="self">self</span>.pacer.max_pacing_rate(),
+        );
+
+        <span class="self">self</span>.max_datagram_size = max_datagram_size;
+    }
+
+    <span class="kw">fn </span>update_rtt(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, latest_rtt: Duration, ack_delay: Duration, now: Instant,
+    ) {
+        <span class="self">self</span>.latest_rtt = latest_rtt;
+
+        <span class="kw">match </span><span class="self">self</span>.smoothed_rtt {
+            <span class="comment">// First RTT sample.
+            </span><span class="prelude-val">None </span>=&gt; {
+                <span class="self">self</span>.min_rtt = <span class="self">self</span>.minmax_filter.reset(now, latest_rtt);
+
+                <span class="self">self</span>.smoothed_rtt = <span class="prelude-val">Some</span>(latest_rtt);
+
+                <span class="self">self</span>.rttvar = latest_rtt / <span class="number">2</span>;
+            },
+
+            <span class="prelude-val">Some</span>(srtt) =&gt; {
+                <span class="self">self</span>.min_rtt =
+                    <span class="self">self</span>.minmax_filter.running_min(RTT_WINDOW, now, latest_rtt);
+
+                <span class="kw">let </span>ack_delay = cmp::min(<span class="self">self</span>.max_ack_delay, ack_delay);
+
+                <span class="comment">// Adjust for ack delay if plausible.
+                </span><span class="kw">let </span>adjusted_rtt = <span class="kw">if </span>latest_rtt &gt; <span class="self">self</span>.min_rtt + ack_delay {
+                    latest_rtt - ack_delay
+                } <span class="kw">else </span>{
+                    latest_rtt
+                };
+
+                <span class="self">self</span>.rttvar = <span class="self">self</span>.rttvar.mul_f64(<span class="number">3.0 </span>/ <span class="number">4.0</span>) +
+                    sub_abs(srtt, adjusted_rtt).mul_f64(<span class="number">1.0 </span>/ <span class="number">4.0</span>);
+
+                <span class="self">self</span>.smoothed_rtt = <span class="prelude-val">Some</span>(
+                    srtt.mul_f64(<span class="number">7.0 </span>/ <span class="number">8.0</span>) + adjusted_rtt.mul_f64(<span class="number">1.0 </span>/ <span class="number">8.0</span>),
+                );
+            },
+        }
+    }
+
+    <span class="kw">fn </span>loss_time_and_space(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; (<span class="prelude-ty">Option</span>&lt;Instant&gt;, packet::Epoch) {
+        <span class="kw">let </span><span class="kw-2">mut </span>epoch = packet::Epoch::Initial;
+        <span class="kw">let </span><span class="kw-2">mut </span>time = <span class="self">self</span>.loss_time[epoch];
+
+        <span class="comment">// Iterate over all packet number spaces starting from Handshake.
+        </span><span class="kw">for </span><span class="kw-2">&amp;</span>e <span class="kw">in </span>packet::Epoch::epochs(
+            packet::Epoch::Handshake..=packet::Epoch::Application,
+        ) {
+            <span class="kw">let </span>new_time = <span class="self">self</span>.loss_time[e];
+
+            <span class="kw">if </span>time.is_none() || new_time &lt; time {
+                time = new_time;
+                epoch = e;
+            }
+        }
+
+        (time, epoch)
+    }
+
+    <span class="kw">fn </span>pto_time_and_space(
+        <span class="kw-2">&amp;</span><span class="self">self</span>, handshake_status: HandshakeStatus, now: Instant,
+    ) -&gt; (<span class="prelude-ty">Option</span>&lt;Instant&gt;, packet::Epoch) {
+        <span class="kw">let </span><span class="kw-2">mut </span>duration = <span class="self">self</span>.pto() * <span class="number">2_u32</span>.pow(<span class="self">self</span>.pto_count);
+
+        <span class="comment">// Arm PTO from now when there are no inflight packets.
+        </span><span class="kw">if </span><span class="self">self</span>.bytes_in_flight == <span class="number">0 </span>{
+            <span class="kw">if </span>handshake_status.has_handshake_keys {
+                <span class="kw">return </span>(<span class="prelude-val">Some</span>(now + duration), packet::Epoch::Handshake);
+            } <span class="kw">else </span>{
+                <span class="kw">return </span>(<span class="prelude-val">Some</span>(now + duration), packet::Epoch::Initial);
+            }
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>pto_timeout = <span class="prelude-val">None</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>pto_space = packet::Epoch::Initial;
+
+        <span class="comment">// Iterate over all packet number spaces.
+        </span><span class="kw">for </span><span class="kw-2">&amp;</span>e <span class="kw">in </span>packet::Epoch::epochs(
+            packet::Epoch::Initial..=packet::Epoch::Application,
+        ) {
+            <span class="kw">if </span><span class="self">self</span>.in_flight_count[e] == <span class="number">0 </span>{
+                <span class="kw">continue</span>;
+            }
+
+            <span class="kw">if </span>e == packet::Epoch::Application {
+                <span class="comment">// Skip Application Data until handshake completes.
+                </span><span class="kw">if </span>!handshake_status.completed {
+                    <span class="kw">return </span>(pto_timeout, pto_space);
+                }
+
+                <span class="comment">// Include max_ack_delay and backoff for Application Data.
+                </span>duration += <span class="self">self</span>.max_ack_delay * <span class="number">2_u32</span>.pow(<span class="self">self</span>.pto_count);
+            }
+
+            <span class="kw">let </span>new_time =
+                <span class="self">self</span>.time_of_last_sent_ack_eliciting_pkt[e].map(|t| t + duration);
+
+            <span class="kw">if </span>pto_timeout.is_none() || new_time &lt; pto_timeout {
+                pto_timeout = new_time;
+                pto_space = e;
+            }
+        }
+
+        (pto_timeout, pto_space)
+    }
+
+    <span class="kw">fn </span>set_loss_detection_timer(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, handshake_status: HandshakeStatus, now: Instant,
+    ) {
+        <span class="kw">let </span>(earliest_loss_time, <span class="kw">_</span>) = <span class="self">self</span>.loss_time_and_space();
+
+        <span class="kw">if </span>earliest_loss_time.is_some() {
+            <span class="comment">// Time threshold loss detection.
+            </span><span class="self">self</span>.loss_detection_timer = earliest_loss_time;
+            <span class="kw">return</span>;
+        }
+
+        <span class="kw">if </span><span class="self">self</span>.bytes_in_flight == <span class="number">0 </span>&amp;&amp; handshake_status.peer_verified_address {
+            <span class="self">self</span>.loss_detection_timer = <span class="prelude-val">None</span>;
+            <span class="kw">return</span>;
+        }
+
+        <span class="comment">// PTO timer.
+        </span><span class="kw">let </span>(timeout, <span class="kw">_</span>) = <span class="self">self</span>.pto_time_and_space(handshake_status, now);
+        <span class="self">self</span>.loss_detection_timer = timeout;
+    }
+
+    <span class="kw">fn </span>detect_lost_packets(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, epoch: packet::Epoch, now: Instant, trace_id: <span class="kw-2">&amp;</span>str,
+    ) -&gt; (usize, usize) {
+        <span class="kw">let </span>largest_acked = <span class="self">self</span>.largest_acked_pkt[epoch];
+
+        <span class="self">self</span>.loss_time[epoch] = <span class="prelude-val">None</span>;
+
+        <span class="kw">let </span>loss_delay =
+            cmp::max(<span class="self">self</span>.latest_rtt, <span class="self">self</span>.rtt()).mul_f64(<span class="self">self</span>.time_thresh);
+
+        <span class="comment">// Minimum time of kGranularity before packets are deemed lost.
+        </span><span class="kw">let </span>loss_delay = cmp::max(loss_delay, GRANULARITY);
+
+        <span class="comment">// Packets sent before this time are deemed lost.
+        </span><span class="kw">let </span>lost_send_time = now.checked_sub(loss_delay).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>lost_packets = <span class="number">0</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>lost_bytes = <span class="number">0</span>;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>largest_lost_pkt = <span class="prelude-val">None</span>;
+
+        <span class="kw">let </span>unacked_iter = <span class="self">self</span>.sent[epoch]
+            .iter_mut()
+            <span class="comment">// Skip packets that follow the largest acked packet.
+            </span>.take_while(|p| p.pkt_num &lt;= largest_acked)
+            <span class="comment">// Skip packets that have already been acked or lost.
+            </span>.filter(|p| p.time_acked.is_none() &amp;&amp; p.time_lost.is_none());
+
+        <span class="kw">for </span>unacked <span class="kw">in </span>unacked_iter {
+            <span class="comment">// Mark packet as lost, or set time when it should be marked.
+            </span><span class="kw">if </span>unacked.time_sent &lt;= lost_send_time ||
+                largest_acked &gt;= unacked.pkt_num + <span class="self">self</span>.pkt_thresh
+            {
+                <span class="self">self</span>.lost[epoch].extend(unacked.frames.drain(..));
+                unacked.time_lost = <span class="prelude-val">Some</span>(now);
+
+                <span class="kw">if </span>unacked.pmtud {
+                    <span class="self">self</span>.bytes_in_flight =
+                        <span class="self">self</span>.bytes_in_flight.saturating_sub(unacked.size);
+
+                    <span class="self">self</span>.in_flight_count[epoch] =
+                        <span class="self">self</span>.in_flight_count[epoch].saturating_sub(<span class="number">1</span>);
+
+                    <span class="comment">// Do not track PMTUD probes losses.
+                    </span><span class="kw">continue</span>;
+                }
+
+                <span class="kw">if </span>unacked.in_flight {
+                    lost_bytes += unacked.size;
+
+                    <span class="comment">// Frames have already been removed from the packet, so
+                    // cloning the whole packet should be relatively cheap.
+                    </span>largest_lost_pkt = <span class="prelude-val">Some</span>(unacked.clone());
+
+                    <span class="self">self</span>.in_flight_count[epoch] =
+                        <span class="self">self</span>.in_flight_count[epoch].saturating_sub(<span class="number">1</span>);
+
+                    <span class="macro">trace!</span>(
+                        <span class="string">"{} packet {} lost on epoch {}"</span>,
+                        trace_id,
+                        unacked.pkt_num,
+                        epoch
+                    );
+                }
+
+                lost_packets += <span class="number">1</span>;
+                <span class="self">self</span>.lost_count += <span class="number">1</span>;
+            } <span class="kw">else </span>{
+                <span class="kw">let </span>loss_time = <span class="kw">match </span><span class="self">self</span>.loss_time[epoch] {
+                    <span class="prelude-val">None </span>=&gt; unacked.time_sent + loss_delay,
+
+                    <span class="prelude-val">Some</span>(loss_time) =&gt;
+                        cmp::min(loss_time, unacked.time_sent + loss_delay),
+                };
+
+                <span class="self">self</span>.loss_time[epoch] = <span class="prelude-val">Some</span>(loss_time);
+                <span class="kw">break</span>;
+            }
+        }
+
+        <span class="self">self</span>.bytes_lost += lost_bytes <span class="kw">as </span>u64;
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(pkt) = largest_lost_pkt {
+            <span class="self">self</span>.on_packets_lost(lost_bytes, <span class="kw-2">&amp;</span>pkt, epoch, now);
+        }
+
+        <span class="self">self</span>.drain_packets(epoch, now);
+
+        (lost_packets, lost_bytes)
+    }
+
+    <span class="kw">fn </span>drain_packets(<span class="kw-2">&amp;mut </span><span class="self">self</span>, epoch: packet::Epoch, now: Instant) {
+        <span class="kw">let </span><span class="kw-2">mut </span>lowest_non_expired_pkt_index = <span class="self">self</span>.sent[epoch].len();
+
+        <span class="comment">// In order to avoid removing elements from the middle of the list
+        // (which would require copying other elements to compact the list),
+        // we only remove a contiguous range of elements from the start of the
+        // list.
+        //
+        // This means that acked or lost elements coming after this will not
+        // be removed at this point, but their removal is delayed for a later
+        // time, once the gaps have been filled.
+
+        // First, find the first element that is neither acked nor lost.
+        </span><span class="kw">for </span>(i, pkt) <span class="kw">in </span><span class="self">self</span>.sent[epoch].iter().enumerate() {
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(time_lost) = pkt.time_lost {
+                <span class="kw">if </span>time_lost + <span class="self">self</span>.rtt() &gt; now {
+                    lowest_non_expired_pkt_index = i;
+                    <span class="kw">break</span>;
+                }
+            }
+
+            <span class="kw">if </span>pkt.time_acked.is_none() &amp;&amp; pkt.time_lost.is_none() {
+                lowest_non_expired_pkt_index = i;
+                <span class="kw">break</span>;
+            }
+        }
+
+        <span class="comment">// Then remove elements up to the previously found index.
+        </span><span class="self">self</span>.sent[epoch].drain(..lowest_non_expired_pkt_index);
+    }
+
+    <span class="kw">fn </span>on_packets_acked(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, acked: <span class="kw-2">&amp;mut </span>Vec&lt;Acked&gt;, epoch: packet::Epoch, now: Instant,
+    ) {
+        <span class="comment">// Update delivery rate sample per acked packet.
+        </span><span class="kw">for </span>pkt <span class="kw">in </span>acked.iter() {
+            <span class="self">self</span>.delivery_rate.update_rate_sample(pkt, now);
+        }
+
+        <span class="comment">// Fill in a rate sample.
+        </span><span class="self">self</span>.delivery_rate.generate_rate_sample(<span class="self">self</span>.min_rtt);
+
+        <span class="comment">// Call congestion control hooks.
+        </span>(<span class="self">self</span>.cc_ops.on_packets_acked)(<span class="self">self</span>, acked, epoch, now);
+    }
+
+    <span class="kw">fn </span>in_congestion_recovery(<span class="kw-2">&amp;</span><span class="self">self</span>, sent_time: Instant) -&gt; bool {
+        <span class="kw">match </span><span class="self">self</span>.congestion_recovery_start_time {
+            <span class="prelude-val">Some</span>(congestion_recovery_start_time) =&gt;
+                sent_time &lt;= congestion_recovery_start_time,
+
+            <span class="prelude-val">None </span>=&gt; <span class="bool-val">false</span>,
+        }
+    }
+
+    <span class="kw">fn </span>in_persistent_congestion(<span class="kw-2">&amp;mut </span><span class="self">self</span>, _largest_lost_pkt_num: u64) -&gt; bool {
+        <span class="kw">let </span>_congestion_period = <span class="self">self</span>.pto() * PERSISTENT_CONGESTION_THRESHOLD;
+
+        <span class="comment">// TODO: properly detect persistent congestion
+        </span><span class="bool-val">false
+    </span>}
+
+    <span class="kw">fn </span>on_packets_lost(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, lost_bytes: usize, largest_lost_pkt: <span class="kw-2">&amp;</span>Sent,
+        epoch: packet::Epoch, now: Instant,
+    ) {
+        <span class="self">self</span>.bytes_in_flight = <span class="self">self</span>.bytes_in_flight.saturating_sub(lost_bytes);
+
+        <span class="self">self</span>.congestion_event(lost_bytes, largest_lost_pkt, epoch, now);
+
+        <span class="kw">if </span><span class="self">self</span>.in_persistent_congestion(largest_lost_pkt.pkt_num) {
+            <span class="self">self</span>.collapse_cwnd();
+        }
+    }
+
+    <span class="kw">fn </span>congestion_event(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, lost_bytes: usize, largest_lost_pkt: <span class="kw-2">&amp;</span>Sent,
+        epoch: packet::Epoch, now: Instant,
+    ) {
+        <span class="kw">let </span>time_sent = largest_lost_pkt.time_sent;
+
+        <span class="kw">if </span>!<span class="self">self</span>.in_congestion_recovery(time_sent) {
+            (<span class="self">self</span>.cc_ops.checkpoint)(<span class="self">self</span>);
+        }
+
+        (<span class="self">self</span>.cc_ops.congestion_event)(
+            <span class="self">self</span>,
+            lost_bytes,
+            largest_lost_pkt,
+            epoch,
+            now,
+        );
+    }
+
+    <span class="kw">fn </span>collapse_cwnd(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        (<span class="self">self</span>.cc_ops.collapse_cwnd)(<span class="self">self</span>);
+    }
+
+    <span class="kw">pub fn </span>update_app_limited(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: bool) {
+        <span class="self">self</span>.app_limited = v;
+    }
+
+    <span class="kw">pub fn </span>app_limited(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.app_limited
+    }
+
+    <span class="kw">pub fn </span>delivery_rate_update_app_limited(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: bool) {
+        <span class="self">self</span>.delivery_rate.update_app_limited(v);
+    }
+
+    <span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+    </span><span class="kw">pub fn </span>maybe_qlog(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;EventData&gt; {
+        <span class="kw">let </span>qlog_metrics = QlogMetrics {
+            min_rtt: <span class="self">self</span>.min_rtt,
+            smoothed_rtt: <span class="self">self</span>.rtt(),
+            latest_rtt: <span class="self">self</span>.latest_rtt,
+            rttvar: <span class="self">self</span>.rttvar,
+            cwnd: <span class="self">self</span>.cwnd() <span class="kw">as </span>u64,
+            bytes_in_flight: <span class="self">self</span>.bytes_in_flight <span class="kw">as </span>u64,
+            ssthresh: <span class="self">self</span>.ssthresh <span class="kw">as </span>u64,
+            pacing_rate: <span class="self">self</span>.pacer.rate(),
+        };
+
+        <span class="self">self</span>.qlog_metrics.maybe_update(qlog_metrics)
+    }
+
+    <span class="kw">pub fn </span>send_quantum(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.send_quantum
+    }
+}
+
+<span class="doccomment">/// Available congestion control algorithms.
+///
+/// This enum provides currently available list of congestion control
+/// algorithms.
+</span><span class="attr">#[derive(Debug, Copy, Clone, PartialEq, Eq)]
+#[repr(C)]
+</span><span class="kw">pub enum </span>CongestionControlAlgorithm {
+    <span class="doccomment">/// Reno congestion control algorithm. `reno` in a string form.
+    </span>Reno  = <span class="number">0</span>,
+    <span class="doccomment">/// CUBIC congestion control algorithm (default). `cubic` in a string form.
+    </span>CUBIC = <span class="number">1</span>,
+    <span class="doccomment">/// BBR congestion control algorithm. `bbr` in a string form.
+    </span>BBR   = <span class="number">2</span>,
+    <span class="doccomment">/// BBRv2 congestion control algorithm. `bbr2` in a string form.
+    </span>BBR2  = <span class="number">3</span>,
+}
+
+<span class="kw">impl </span>FromStr <span class="kw">for </span>CongestionControlAlgorithm {
+    <span class="kw">type </span><span class="prelude-val">Err </span>= <span class="kw">crate</span>::Error;
+
+    <span class="doccomment">/// Converts a string to `CongestionControlAlgorithm`.
+    ///
+    /// If `name` is not valid, `Error::CongestionControl` is returned.
+    </span><span class="kw">fn </span>from_str(name: <span class="kw-2">&amp;</span>str) -&gt; std::result::Result&lt;<span class="self">Self</span>, <span class="self">Self</span>::Err&gt; {
+        <span class="kw">match </span>name {
+            <span class="string">"reno" </span>=&gt; <span class="prelude-val">Ok</span>(CongestionControlAlgorithm::Reno),
+            <span class="string">"cubic" </span>=&gt; <span class="prelude-val">Ok</span>(CongestionControlAlgorithm::CUBIC),
+            <span class="string">"bbr" </span>=&gt; <span class="prelude-val">Ok</span>(CongestionControlAlgorithm::BBR),
+            <span class="string">"bbr2" </span>=&gt; <span class="prelude-val">Ok</span>(CongestionControlAlgorithm::BBR2),
+
+            <span class="kw">_ </span>=&gt; <span class="prelude-val">Err</span>(<span class="kw">crate</span>::Error::CongestionControl),
+        }
+    }
+}
+
+<span class="kw">pub struct </span>CongestionControlOps {
+    <span class="kw">pub </span>on_init: <span class="kw">fn</span>(r: <span class="kw-2">&amp;mut </span>Recovery),
+
+    <span class="kw">pub </span>reset: <span class="kw">fn</span>(r: <span class="kw-2">&amp;mut </span>Recovery),
+
+    <span class="kw">pub </span>on_packet_sent: <span class="kw">fn</span>(r: <span class="kw-2">&amp;mut </span>Recovery, sent_bytes: usize, now: Instant),
+
+    <span class="kw">pub </span>on_packets_acked: <span class="kw">fn</span>(
+        r: <span class="kw-2">&amp;mut </span>Recovery,
+        packets: <span class="kw-2">&amp;mut </span>Vec&lt;Acked&gt;,
+        epoch: packet::Epoch,
+        now: Instant,
+    ),
+
+    <span class="kw">pub </span>congestion_event: <span class="kw">fn</span>(
+        r: <span class="kw-2">&amp;mut </span>Recovery,
+        lost_bytes: usize,
+        largest_lost_packet: <span class="kw-2">&amp;</span>Sent,
+        epoch: packet::Epoch,
+        now: Instant,
+    ),
+
+    <span class="kw">pub </span>collapse_cwnd: <span class="kw">fn</span>(r: <span class="kw-2">&amp;mut </span>Recovery),
+
+    <span class="kw">pub </span>checkpoint: <span class="kw">fn</span>(r: <span class="kw-2">&amp;mut </span>Recovery),
+
+    <span class="kw">pub </span>rollback: <span class="kw">fn</span>(r: <span class="kw-2">&amp;mut </span>Recovery) -&gt; bool,
+
+    <span class="kw">pub </span>has_custom_pacing: <span class="kw">fn</span>() -&gt; bool,
+
+    <span class="kw">pub </span>debug_fmt:
+        <span class="kw">fn</span>(r: <span class="kw-2">&amp;</span>Recovery, formatter: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result,
+}
+
+<span class="kw">impl </span>From&lt;CongestionControlAlgorithm&gt; <span class="kw">for </span><span class="kw-2">&amp;</span><span class="lifetime">'static </span>CongestionControlOps {
+    <span class="kw">fn </span>from(algo: CongestionControlAlgorithm) -&gt; <span class="self">Self </span>{
+        <span class="kw">match </span>algo {
+            CongestionControlAlgorithm::Reno =&gt; <span class="kw-2">&amp;</span>reno::RENO,
+            CongestionControlAlgorithm::CUBIC =&gt; <span class="kw-2">&amp;</span>cubic::CUBIC,
+            CongestionControlAlgorithm::BBR =&gt; <span class="kw-2">&amp;</span>bbr::BBR,
+            CongestionControlAlgorithm::BBR2 =&gt; <span class="kw-2">&amp;</span>bbr2::BBR2,
+        }
+    }
+}
+
+<span class="kw">impl </span>std::fmt::Debug <span class="kw">for </span>Recovery {
+    <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+        <span class="kw">match </span><span class="self">self</span>.loss_detection_timer {
+            <span class="prelude-val">Some</span>(v) =&gt; {
+                <span class="kw">let </span>now = Instant::now();
+
+                <span class="kw">if </span>v &gt; now {
+                    <span class="kw">let </span>d = v.duration_since(now);
+                    <span class="macro">write!</span>(f, <span class="string">"timer={d:?} "</span>)<span class="question-mark">?</span>;
+                } <span class="kw">else </span>{
+                    <span class="macro">write!</span>(f, <span class="string">"timer=exp "</span>)<span class="question-mark">?</span>;
+                }
+            },
+
+            <span class="prelude-val">None </span>=&gt; {
+                <span class="macro">write!</span>(f, <span class="string">"timer=none "</span>)<span class="question-mark">?</span>;
+            },
+        };
+
+        <span class="macro">write!</span>(f, <span class="string">"latest_rtt={:?} "</span>, <span class="self">self</span>.latest_rtt)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"srtt={:?} "</span>, <span class="self">self</span>.smoothed_rtt)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"min_rtt={:?} "</span>, <span class="self">self</span>.min_rtt)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"rttvar={:?} "</span>, <span class="self">self</span>.rttvar)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"loss_time={:?} "</span>, <span class="self">self</span>.loss_time)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"loss_probes={:?} "</span>, <span class="self">self</span>.loss_probes)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"cwnd={} "</span>, <span class="self">self</span>.congestion_window)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"ssthresh={} "</span>, <span class="self">self</span>.ssthresh)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"bytes_in_flight={} "</span>, <span class="self">self</span>.bytes_in_flight)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"app_limited={} "</span>, <span class="self">self</span>.app_limited)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(
+            f,
+            <span class="string">"congestion_recovery_start_time={:?} "</span>,
+            <span class="self">self</span>.congestion_recovery_start_time
+        )<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"{:?} "</span>, <span class="self">self</span>.delivery_rate)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"pacer={:?} "</span>, <span class="self">self</span>.pacer)<span class="question-mark">?</span>;
+
+        <span class="kw">if </span><span class="self">self</span>.hystart.enabled() {
+            <span class="macro">write!</span>(f, <span class="string">"hystart={:?} "</span>, <span class="self">self</span>.hystart)<span class="question-mark">?</span>;
+        }
+
+        <span class="comment">// CC-specific debug info
+        </span>(<span class="self">self</span>.cc_ops.debug_fmt)(<span class="self">self</span>, f)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+}
+
+<span class="attr">#[derive(Clone)]
+</span><span class="kw">pub struct </span>Sent {
+    <span class="kw">pub </span>pkt_num: u64,
+
+    <span class="kw">pub </span>frames: SmallVec&lt;[frame::Frame; <span class="number">1</span>]&gt;,
+
+    <span class="kw">pub </span>time_sent: Instant,
+
+    <span class="kw">pub </span>time_acked: <span class="prelude-ty">Option</span>&lt;Instant&gt;,
+
+    <span class="kw">pub </span>time_lost: <span class="prelude-ty">Option</span>&lt;Instant&gt;,
+
+    <span class="kw">pub </span>size: usize,
+
+    <span class="kw">pub </span>ack_eliciting: bool,
+
+    <span class="kw">pub </span>in_flight: bool,
+
+    <span class="kw">pub </span>delivered: usize,
+
+    <span class="kw">pub </span>delivered_time: Instant,
+
+    <span class="kw">pub </span>first_sent_time: Instant,
+
+    <span class="kw">pub </span>is_app_limited: bool,
+
+    <span class="kw">pub </span>tx_in_flight: usize,
+
+    <span class="kw">pub </span>lost: u64,
+
+    <span class="kw">pub </span>has_data: bool,
+
+    <span class="kw">pub </span>pmtud: bool,
+}
+
+<span class="kw">impl </span>std::fmt::Debug <span class="kw">for </span>Sent {
+    <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+        <span class="macro">write!</span>(f, <span class="string">"pkt_num={:?} "</span>, <span class="self">self</span>.pkt_num)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"pkt_sent_time={:?} "</span>, <span class="self">self</span>.time_sent)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"pkt_size={:?} "</span>, <span class="self">self</span>.size)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"delivered={:?} "</span>, <span class="self">self</span>.delivered)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"delivered_time={:?} "</span>, <span class="self">self</span>.delivered_time)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"first_sent_time={:?} "</span>, <span class="self">self</span>.first_sent_time)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"is_app_limited={} "</span>, <span class="self">self</span>.is_app_limited)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"tx_in_flight={} "</span>, <span class="self">self</span>.tx_in_flight)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"lost={} "</span>, <span class="self">self</span>.lost)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"has_data={} "</span>, <span class="self">self</span>.has_data)<span class="question-mark">?</span>;
+        <span class="macro">write!</span>(f, <span class="string">"pmtud={}"</span>, <span class="self">self</span>.pmtud)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(())
+    }
+}
+
+<span class="attr">#[derive(Clone)]
+</span><span class="kw">pub struct </span>Acked {
+    <span class="kw">pub </span>pkt_num: u64,
+
+    <span class="kw">pub </span>time_sent: Instant,
+
+    <span class="kw">pub </span>size: usize,
+
+    <span class="kw">pub </span>rtt: Duration,
+
+    <span class="kw">pub </span>delivered: usize,
+
+    <span class="kw">pub </span>delivered_time: Instant,
+
+    <span class="kw">pub </span>first_sent_time: Instant,
+
+    <span class="kw">pub </span>is_app_limited: bool,
+
+    <span class="kw">pub </span>tx_in_flight: usize,
+
+    <span class="kw">pub </span>lost: u64,
+}
+
+<span class="attr">#[derive(Clone, Copy, Debug)]
+</span><span class="kw">pub struct </span>HandshakeStatus {
+    <span class="kw">pub </span>has_handshake_keys: bool,
+
+    <span class="kw">pub </span>peer_verified_address: bool,
+
+    <span class="kw">pub </span>completed: bool,
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">impl </span>Default <span class="kw">for </span>HandshakeStatus {
+    <span class="kw">fn </span>default() -&gt; HandshakeStatus {
+        HandshakeStatus {
+            has_handshake_keys: <span class="bool-val">true</span>,
+
+            peer_verified_address: <span class="bool-val">true</span>,
+
+            completed: <span class="bool-val">true</span>,
+        }
+    }
+}
+
+<span class="kw">fn </span>sub_abs(lhs: Duration, rhs: Duration) -&gt; Duration {
+    <span class="kw">if </span>lhs &gt; rhs {
+        lhs - rhs
+    } <span class="kw">else </span>{
+        rhs - lhs
+    }
+}
+
+<span class="comment">// We don't need to log all qlog metrics every time there is a recovery event.
+// Instead, we can log only the MetricsUpdated event data fields that we care
+// about, only when they change. To support this, the QLogMetrics structure
+// keeps a running picture of the fields.
+</span><span class="attr">#[derive(Default)]
+#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">struct </span>QlogMetrics {
+    min_rtt: Duration,
+    smoothed_rtt: Duration,
+    latest_rtt: Duration,
+    rttvar: Duration,
+    cwnd: u64,
+    bytes_in_flight: u64,
+    ssthresh: u64,
+    pacing_rate: u64,
+}
+
+<span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+</span><span class="kw">impl </span>QlogMetrics {
+    <span class="comment">// Make a qlog event if the latest instance of QlogMetrics is different.
+    //
+    // This function diffs each of the fields. A qlog MetricsUpdated event is
+    // only generated if at least one field is different. Where fields are
+    // different, the qlog event contains the latest value.
+    </span><span class="kw">fn </span>maybe_update(<span class="kw-2">&amp;mut </span><span class="self">self</span>, latest: <span class="self">Self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;EventData&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>emit_event = <span class="bool-val">false</span>;
+
+        <span class="kw">let </span>new_min_rtt = <span class="kw">if </span><span class="self">self</span>.min_rtt != latest.min_rtt {
+            <span class="self">self</span>.min_rtt = latest.min_rtt;
+            emit_event = <span class="bool-val">true</span>;
+            <span class="prelude-val">Some</span>(latest.min_rtt.as_secs_f32() * <span class="number">1000.0</span>)
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="kw">let </span>new_smoothed_rtt = <span class="kw">if </span><span class="self">self</span>.smoothed_rtt != latest.smoothed_rtt {
+            <span class="self">self</span>.smoothed_rtt = latest.smoothed_rtt;
+            emit_event = <span class="bool-val">true</span>;
+            <span class="prelude-val">Some</span>(latest.smoothed_rtt.as_secs_f32() * <span class="number">1000.0</span>)
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="kw">let </span>new_latest_rtt = <span class="kw">if </span><span class="self">self</span>.latest_rtt != latest.latest_rtt {
+            <span class="self">self</span>.latest_rtt = latest.latest_rtt;
+            emit_event = <span class="bool-val">true</span>;
+            <span class="prelude-val">Some</span>(latest.latest_rtt.as_secs_f32() * <span class="number">1000.0</span>)
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="kw">let </span>new_rttvar = <span class="kw">if </span><span class="self">self</span>.rttvar != latest.rttvar {
+            <span class="self">self</span>.rttvar = latest.rttvar;
+            emit_event = <span class="bool-val">true</span>;
+            <span class="prelude-val">Some</span>(latest.rttvar.as_secs_f32() * <span class="number">1000.0</span>)
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="kw">let </span>new_cwnd = <span class="kw">if </span><span class="self">self</span>.cwnd != latest.cwnd {
+            <span class="self">self</span>.cwnd = latest.cwnd;
+            emit_event = <span class="bool-val">true</span>;
+            <span class="prelude-val">Some</span>(latest.cwnd)
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="kw">let </span>new_bytes_in_flight =
+            <span class="kw">if </span><span class="self">self</span>.bytes_in_flight != latest.bytes_in_flight {
+                <span class="self">self</span>.bytes_in_flight = latest.bytes_in_flight;
+                emit_event = <span class="bool-val">true</span>;
+                <span class="prelude-val">Some</span>(latest.bytes_in_flight)
+            } <span class="kw">else </span>{
+                <span class="prelude-val">None
+            </span>};
+
+        <span class="kw">let </span>new_ssthresh = <span class="kw">if </span><span class="self">self</span>.ssthresh != latest.ssthresh {
+            <span class="self">self</span>.ssthresh = latest.ssthresh;
+            emit_event = <span class="bool-val">true</span>;
+            <span class="prelude-val">Some</span>(latest.ssthresh)
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="kw">let </span>new_pacing_rate = <span class="kw">if </span><span class="self">self</span>.pacing_rate != latest.pacing_rate {
+            <span class="self">self</span>.pacing_rate = latest.pacing_rate;
+            emit_event = <span class="bool-val">true</span>;
+            <span class="prelude-val">Some</span>(latest.pacing_rate)
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="kw">if </span>emit_event {
+            <span class="comment">// QVis can't use all these fields and they can be large.
+            </span><span class="kw">return </span><span class="prelude-val">Some</span>(EventData::MetricsUpdated(
+                qlog::events::quic::MetricsUpdated {
+                    min_rtt: new_min_rtt,
+                    smoothed_rtt: new_smoothed_rtt,
+                    latest_rtt: new_latest_rtt,
+                    rtt_variance: new_rttvar,
+                    pto_count: <span class="prelude-val">None</span>,
+                    congestion_window: new_cwnd,
+                    bytes_in_flight: new_bytes_in_flight,
+                    ssthresh: new_ssthresh,
+                    packets_in_flight: <span class="prelude-val">None</span>,
+                    pacing_rate: new_pacing_rate,
+                },
+            ));
+        }
+
+        <span class="prelude-val">None
+    </span>}
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+    <span class="kw">use </span>smallvec::smallvec;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>lookup_cc_algo_ok() {
+        <span class="kw">let </span>algo = CongestionControlAlgorithm::from_str(<span class="string">"reno"</span>).unwrap();
+        <span class="macro">assert_eq!</span>(algo, CongestionControlAlgorithm::Reno);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>lookup_cc_algo_bad() {
+        <span class="macro">assert_eq!</span>(
+            CongestionControlAlgorithm::from_str(<span class="string">"???"</span>),
+            <span class="prelude-val">Err</span>(<span class="kw">crate</span>::Error::CongestionControl)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>collapse_cwnd() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(CongestionControlAlgorithm::Reno);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+
+        <span class="comment">// cwnd will be reset.
+        </span>r.collapse_cwnd();
+        <span class="macro">assert_eq!</span>(r.cwnd(), r.max_datagram_size * MINIMUM_WINDOW_PACKETS);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>loss_on_pto() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(CongestionControlAlgorithm::Reno);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>now = Instant::now();
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">0</span>);
+
+        <span class="comment">// Start by sending a few packets.
+        </span><span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">1000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">1000</span>);
+
+        <span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">1</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">1000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">2000</span>);
+
+        <span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">2</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">1000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">3000</span>);
+
+        <span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">3</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">1000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">4</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">4000</span>);
+
+        <span class="comment">// Wait for 10ms.
+        </span>now += Duration::from_millis(<span class="number">10</span>);
+
+        <span class="comment">// Only the first 2 packets are acked.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+        acked.insert(<span class="number">0</span>..<span class="number">2</span>);
+
+        <span class="macro">assert_eq!</span>(
+            r.on_ack_received(
+                <span class="kw-2">&amp;</span>acked,
+                <span class="number">25</span>,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+                <span class="kw-2">&amp;mut </span>Vec::new(),
+            ),
+            <span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="number">0</span>))
+        );
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">2000</span>);
+        <span class="macro">assert_eq!</span>(r.lost_count, <span class="number">0</span>);
+
+        <span class="comment">// Wait until loss detection timer expires.
+        </span>now = r.loss_detection_timer().unwrap();
+
+        <span class="comment">// PTO.
+        </span>r.on_loss_detection_timeout(HandshakeStatus::default(), now, <span class="string">""</span>);
+        <span class="macro">assert_eq!</span>(r.loss_probes[packet::Epoch::Application], <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(r.lost_count, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(r.pto_count, <span class="number">1</span>);
+
+        <span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">4</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">1000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">3000</span>);
+
+        <span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">5</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">1000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">4</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">4000</span>);
+        <span class="macro">assert_eq!</span>(r.lost_count, <span class="number">0</span>);
+
+        <span class="comment">// Wait for 10ms.
+        </span>now += Duration::from_millis(<span class="number">10</span>);
+
+        <span class="comment">// PTO packets are acked.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+        acked.insert(<span class="number">4</span>..<span class="number">6</span>);
+
+        <span class="macro">assert_eq!</span>(
+            r.on_ack_received(
+                <span class="kw-2">&amp;</span>acked,
+                <span class="number">25</span>,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+                <span class="kw-2">&amp;mut </span>Vec::new(),
+            ),
+            <span class="prelude-val">Ok</span>((<span class="number">2</span>, <span class="number">2000</span>))
+        );
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">4</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(r.lost_count, <span class="number">2</span>);
+
+        <span class="comment">// Wait 1 RTT.
+        </span>now += r.rtt();
+
+        r.detect_lost_packets(packet::Epoch::Application, now, <span class="string">""</span>);
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">0</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>loss_on_timer() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(CongestionControlAlgorithm::Reno);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>now = Instant::now();
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">0</span>);
+
+        <span class="comment">// Start by sending a few packets.
+        </span><span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">1000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">1000</span>);
+
+        <span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">1</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">1000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">2000</span>);
+
+        <span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">2</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">1000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">3000</span>);
+
+        <span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">3</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">1000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">4</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">4000</span>);
+
+        <span class="comment">// Wait for 10ms.
+        </span>now += Duration::from_millis(<span class="number">10</span>);
+
+        <span class="comment">// Only the first 2 packets and the last one are acked.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+        acked.insert(<span class="number">0</span>..<span class="number">2</span>);
+        acked.insert(<span class="number">3</span>..<span class="number">4</span>);
+
+        <span class="macro">assert_eq!</span>(
+            r.on_ack_received(
+                <span class="kw-2">&amp;</span>acked,
+                <span class="number">25</span>,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+                <span class="kw-2">&amp;mut </span>Vec::new(),
+            ),
+            <span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="number">0</span>))
+        );
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">1000</span>);
+        <span class="macro">assert_eq!</span>(r.lost_count, <span class="number">0</span>);
+
+        <span class="comment">// Wait until loss detection timer expires.
+        </span>now = r.loss_detection_timer().unwrap();
+
+        <span class="comment">// Packet is declared lost.
+        </span>r.on_loss_detection_timeout(HandshakeStatus::default(), now, <span class="string">""</span>);
+        <span class="macro">assert_eq!</span>(r.loss_probes[packet::Epoch::Application], <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(r.lost_count, <span class="number">1</span>);
+
+        <span class="comment">// Wait 1 RTT.
+        </span>now += r.rtt();
+
+        r.detect_lost_packets(packet::Epoch::Application, now, <span class="string">""</span>);
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">0</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>loss_on_reordering() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(CongestionControlAlgorithm::Reno);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>now = Instant::now();
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">0</span>);
+
+        <span class="comment">// Start by sending a few packets.
+        </span><span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">1000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">1000</span>);
+
+        <span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">1</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">1000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">2000</span>);
+
+        <span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">2</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">1000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">3000</span>);
+
+        <span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">3</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">1000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">4</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">4000</span>);
+
+        <span class="comment">// Wait for 10ms.
+        </span>now += Duration::from_millis(<span class="number">10</span>);
+
+        <span class="comment">// ACKs are reordered.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+        acked.insert(<span class="number">2</span>..<span class="number">4</span>);
+
+        <span class="macro">assert_eq!</span>(
+            r.on_ack_received(
+                <span class="kw-2">&amp;</span>acked,
+                <span class="number">25</span>,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+                <span class="kw-2">&amp;mut </span>Vec::new(),
+            ),
+            <span class="prelude-val">Ok</span>((<span class="number">1</span>, <span class="number">1000</span>))
+        );
+
+        now += Duration::from_millis(<span class="number">10</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+        acked.insert(<span class="number">0</span>..<span class="number">2</span>);
+
+        <span class="macro">assert_eq!</span>(r.pkt_thresh, INITIAL_PACKET_THRESHOLD);
+
+        <span class="macro">assert_eq!</span>(
+            r.on_ack_received(
+                <span class="kw-2">&amp;</span>acked,
+                <span class="number">25</span>,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+                <span class="kw-2">&amp;mut </span>Vec::new(),
+            ),
+            <span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="number">0</span>))
+        );
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">4</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">0</span>);
+
+        <span class="comment">// Spurious loss.
+        </span><span class="macro">assert_eq!</span>(r.lost_count, <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(r.lost_spurious_count, <span class="number">1</span>);
+
+        <span class="comment">// Packet threshold was increased.
+        </span><span class="macro">assert_eq!</span>(r.pkt_thresh, <span class="number">4</span>);
+
+        <span class="comment">// Wait 1 RTT.
+        </span>now += r.rtt();
+
+        r.detect_lost_packets(packet::Epoch::Application, now, <span class="string">""</span>);
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">0</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>pacing() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(CongestionControlAlgorithm::CUBIC);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>now = Instant::now();
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">0</span>);
+
+        <span class="comment">// send out first packet (a full initcwnd).
+        </span><span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">12000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">12000</span>);
+
+        <span class="comment">// First packet will be sent out immediately.
+        </span><span class="macro">assert_eq!</span>(r.pacer.rate(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(r.get_packet_send_time(), now);
+
+        <span class="comment">// Wait 50ms for ACK.
+        </span>now += Duration::from_millis(<span class="number">50</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+        acked.insert(<span class="number">0</span>..<span class="number">1</span>);
+
+        <span class="macro">assert_eq!</span>(
+            r.on_ack_received(
+                <span class="kw-2">&amp;</span>acked,
+                <span class="number">10</span>,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+                <span class="kw-2">&amp;mut </span>Vec::new(),
+            ),
+            <span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="number">0</span>))
+        );
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(r.smoothed_rtt.unwrap(), Duration::from_millis(<span class="number">50</span>));
+
+        <span class="comment">// 1 MSS increased.
+        </span><span class="macro">assert_eq!</span>(r.congestion_window, <span class="number">12000 </span>+ <span class="number">1200</span>);
+
+        <span class="comment">// Send out second packet.
+        </span><span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">1</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">6000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">6000</span>);
+
+        <span class="comment">// Pacing is not done during initial phase of connection.
+        </span><span class="macro">assert_eq!</span>(r.get_packet_send_time(), now);
+
+        <span class="comment">// Send the third packet out.
+        </span><span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">2</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">6000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">12000</span>);
+
+        <span class="comment">// Send the third packet out.
+        </span><span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">3</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">1000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">13000</span>);
+
+        <span class="comment">// We pace this outgoing packet. as all conditions for pacing
+        // are passed.
+        </span><span class="kw">let </span>pacing_rate =
+            (r.congestion_window <span class="kw">as </span>f64 * PACING_MULTIPLIER / <span class="number">0.05</span>) <span class="kw">as </span>u64;
+        <span class="macro">assert_eq!</span>(r.pacer.rate(), pacing_rate);
+
+        <span class="macro">assert_eq!</span>(
+            r.get_packet_send_time(),
+            now + Duration::from_secs_f64(<span class="number">12000.0 </span>/ pacing_rate <span class="kw">as </span>f64)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>pmtud_loss_on_timer() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(CongestionControlAlgorithm::Reno);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>now = Instant::now();
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">0</span>);
+
+        <span class="comment">// Start by sending a few packets.
+        </span><span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">1000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+
+        <span class="macro">assert_eq!</span>(r.in_flight_count[packet::Epoch::Application], <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">1000</span>);
+
+        <span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">1</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">1000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">true</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+
+        <span class="macro">assert_eq!</span>(r.in_flight_count[packet::Epoch::Application], <span class="number">2</span>);
+
+        <span class="kw">let </span>p = Sent {
+            pkt_num: <span class="number">2</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: <span class="number">1000</span>,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.on_packet_sent(
+            p,
+            packet::Epoch::Application,
+            HandshakeStatus::default(),
+            now,
+            <span class="string">""</span>,
+        );
+
+        <span class="macro">assert_eq!</span>(r.in_flight_count[packet::Epoch::Application], <span class="number">3</span>);
+
+        <span class="comment">// Wait for 10ms.
+        </span>now += Duration::from_millis(<span class="number">10</span>);
+
+        <span class="comment">// Only the first  packets and the last one are acked.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>acked = ranges::RangeSet::default();
+        acked.insert(<span class="number">0</span>..<span class="number">1</span>);
+        acked.insert(<span class="number">2</span>..<span class="number">3</span>);
+
+        <span class="macro">assert_eq!</span>(
+            r.on_ack_received(
+                <span class="kw-2">&amp;</span>acked,
+                <span class="number">25</span>,
+                packet::Epoch::Application,
+                HandshakeStatus::default(),
+                now,
+                <span class="string">""</span>,
+                <span class="kw-2">&amp;mut </span>Vec::new(),
+            ),
+            <span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="number">0</span>))
+        );
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">1000</span>);
+        <span class="macro">assert_eq!</span>(r.lost_count, <span class="number">0</span>);
+
+        <span class="comment">// Wait until loss detection timer expires.
+        </span>now = r.loss_detection_timer().unwrap();
+
+        <span class="comment">// Packet is declared lost.
+        </span>r.on_loss_detection_timeout(HandshakeStatus::default(), now, <span class="string">""</span>);
+        <span class="macro">assert_eq!</span>(r.loss_probes[packet::Epoch::Application], <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(r.in_flight_count[packet::Epoch::Application], <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(r.congestion_window, <span class="number">12000</span>);
+
+        <span class="macro">assert_eq!</span>(r.lost_count, <span class="number">0</span>);
+
+        <span class="comment">// Wait 1 RTT.
+        </span>now += r.rtt();
+
+        r.detect_lost_packets(packet::Epoch::Application, now, <span class="string">""</span>);
+
+        <span class="macro">assert_eq!</span>(r.sent[packet::Epoch::Application].len(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(r.in_flight_count[packet::Epoch::Application], <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(r.lost_count, <span class="number">0</span>);
+    }
+}
+
+<span class="kw">mod </span>bbr;
+<span class="kw">mod </span>bbr2;
+<span class="kw">mod </span>cubic;
+<span class="kw">mod </span>delivery_rate;
+<span class="kw">mod </span>hystart;
+<span class="kw">mod </span>pacer;
+<span class="kw">mod </span>prr;
+<span class="kw">mod </span>reno;
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/recovery/pacer.rs.html b/src/quiche/recovery/pacer.rs.html
new file mode 100644
index 0000000..8243621
--- /dev/null
+++ b/src/quiche/recovery/pacer.rs.html
@@ -0,0 +1,655 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/recovery/pacer.rs`."><title>pacer.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2022, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="doccomment">//! Pacer provides the timestamp for the next packet to be sent based on the
+//! current send_quantum, pacing rate and last updated time.
+//!
+//! It's a kind of leaky bucket algorithm (RFC9002, 7.7 Pacing) but it considers
+//! max burst (send_quantum, in bytes) and provide the same timestamp for the
+//! same sized packets (except last one) to be GSO friendly, assuming we send
+//! packets using multiple sendmsg(), a sendmmsg(), or sendmsg() with GSO
+//! without waiting for new I/O events.
+//!
+//! After sending a burst of packets, the next timestamp will be updated based
+//! on the current pacing rate. It will make actual timestamp sent and recorded
+//! timestamp (Sent.time_sent) as close as possible. If GSO is not used, it will
+//! still try to provide close timestamp if the send burst is implemented.
+
+</span><span class="kw">use </span>std::time::Duration;
+<span class="kw">use </span>std::time::Instant;
+
+<span class="attr">#[derive(Debug)]
+</span><span class="kw">pub struct </span>Pacer {
+    <span class="doccomment">/// Whether pacing is enabled.
+    </span>enabled: bool,
+
+    <span class="doccomment">/// Bucket capacity (bytes).
+    </span>capacity: usize,
+
+    <span class="doccomment">/// Bucket used (bytes).
+    </span>used: usize,
+
+    <span class="doccomment">/// Sending pacing rate (bytes/sec).
+    </span>rate: u64,
+
+    <span class="doccomment">/// Timestamp of the last packet sent time update.
+    </span>last_update: Instant,
+
+    <span class="doccomment">/// Timestamp of the next packet to be sent.
+    </span>next_time: Instant,
+
+    <span class="doccomment">/// Current MSS.
+    </span>max_datagram_size: usize,
+
+    <span class="doccomment">/// Last packet size.
+    </span>last_packet_size: <span class="prelude-ty">Option</span>&lt;usize&gt;,
+
+    <span class="doccomment">/// Interval to be added in next burst.
+    </span>iv: Duration,
+
+    <span class="doccomment">/// Max pacing rate (bytes/sec).
+    </span>max_pacing_rate: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+}
+
+<span class="kw">impl </span>Pacer {
+    <span class="kw">pub fn </span>new(
+        enabled: bool, capacity: usize, rate: u64, max_datagram_size: usize,
+        max_pacing_rate: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    ) -&gt; <span class="self">Self </span>{
+        <span class="comment">// Round capacity to MSS.
+        </span><span class="kw">let </span>capacity = capacity / max_datagram_size * max_datagram_size;
+        <span class="kw">let </span>pacing_rate = <span class="kw">if let </span><span class="prelude-val">Some</span>(max_rate) = max_pacing_rate {
+            max_rate.min(rate)
+        } <span class="kw">else </span>{
+            rate
+        };
+
+        Pacer {
+            enabled,
+
+            capacity,
+
+            used: <span class="number">0</span>,
+
+            rate: pacing_rate,
+
+            last_update: Instant::now(),
+
+            next_time: Instant::now(),
+
+            max_datagram_size,
+
+            last_packet_size: <span class="prelude-val">None</span>,
+
+            iv: Duration::ZERO,
+
+            max_pacing_rate,
+        }
+    }
+
+    <span class="doccomment">/// Returns whether pacing is enabled.
+    </span><span class="kw">pub fn </span>enabled(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.enabled
+    }
+
+    <span class="doccomment">/// Returns the current pacing rate.
+    </span><span class="kw">pub fn </span>rate(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.rate
+    }
+
+    <span class="doccomment">/// Returns max pacing rate.
+    </span><span class="kw">pub fn </span>max_pacing_rate(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;u64&gt; {
+        <span class="self">self</span>.max_pacing_rate
+    }
+
+    <span class="doccomment">/// Updates the bucket capacity or pacing_rate.
+    </span><span class="kw">pub fn </span>update(<span class="kw-2">&amp;mut </span><span class="self">self</span>, capacity: usize, rate: u64, now: Instant) {
+        <span class="kw">let </span>capacity = capacity / <span class="self">self</span>.max_datagram_size * <span class="self">self</span>.max_datagram_size;
+
+        <span class="kw">if </span><span class="self">self</span>.capacity != capacity {
+            <span class="self">self</span>.reset(now);
+        }
+
+        <span class="self">self</span>.capacity = capacity;
+
+        <span class="self">self</span>.rate = <span class="kw">if let </span><span class="prelude-val">Some</span>(max_rate) = <span class="self">self</span>.max_pacing_rate {
+            max_rate.min(rate)
+        } <span class="kw">else </span>{
+            rate
+        };
+    }
+
+    <span class="doccomment">/// Resets the pacer for the next burst.
+    </span><span class="kw">fn </span>reset(<span class="kw-2">&amp;mut </span><span class="self">self</span>, now: Instant) {
+        <span class="self">self</span>.used = <span class="number">0</span>;
+
+        <span class="self">self</span>.last_update = now;
+
+        <span class="self">self</span>.next_time = <span class="self">self</span>.next_time.max(now);
+
+        <span class="self">self</span>.last_packet_size = <span class="prelude-val">None</span>;
+
+        <span class="self">self</span>.iv = Duration::ZERO;
+    }
+
+    <span class="doccomment">/// Updates the timestamp for the packet to send.
+    </span><span class="kw">pub fn </span>send(<span class="kw-2">&amp;mut </span><span class="self">self</span>, packet_size: usize, now: Instant) {
+        <span class="kw">if </span><span class="self">self</span>.rate == <span class="number">0 </span>{
+            <span class="self">self</span>.reset(now);
+
+            <span class="kw">return</span>;
+        }
+
+        <span class="kw">if </span>!<span class="self">self</span>.iv.is_zero() {
+            <span class="self">self</span>.next_time = <span class="self">self</span>.next_time.max(now) + <span class="self">self</span>.iv;
+
+            <span class="self">self</span>.iv = Duration::ZERO;
+        }
+
+        <span class="kw">let </span>interval =
+            Duration::from_secs_f64(<span class="self">self</span>.capacity <span class="kw">as </span>f64 / <span class="self">self</span>.rate <span class="kw">as </span>f64);
+
+        <span class="kw">let </span>elapsed = now.saturating_duration_since(<span class="self">self</span>.last_update);
+
+        <span class="comment">// If too old, reset it.
+        </span><span class="kw">if </span>elapsed &gt; interval {
+            <span class="self">self</span>.reset(now);
+        }
+
+        <span class="self">self</span>.used += packet_size;
+
+        <span class="kw">let </span>same_size = <span class="kw">if let </span><span class="prelude-val">Some</span>(last_packet_size) = <span class="self">self</span>.last_packet_size {
+            last_packet_size == packet_size
+        } <span class="kw">else </span>{
+            <span class="bool-val">true
+        </span>};
+
+        <span class="self">self</span>.last_packet_size = <span class="prelude-val">Some</span>(packet_size);
+
+        <span class="kw">if </span><span class="self">self</span>.used &gt;= <span class="self">self</span>.capacity || !same_size {
+            <span class="self">self</span>.iv =
+                Duration::from_secs_f64(<span class="self">self</span>.used <span class="kw">as </span>f64 / <span class="self">self</span>.rate <span class="kw">as </span>f64);
+
+            <span class="self">self</span>.used = <span class="number">0</span>;
+
+            <span class="self">self</span>.last_update = now;
+
+            <span class="self">self</span>.last_packet_size = <span class="prelude-val">None</span>;
+        };
+    }
+
+    <span class="doccomment">/// Returns the timestamp for the next packet.
+    </span><span class="kw">pub fn </span>next_time(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; Instant {
+        <span class="self">self</span>.next_time
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>pacer_update() {
+        <span class="kw">let </span>datagram_size = <span class="number">1200</span>;
+        <span class="kw">let </span>max_burst = datagram_size * <span class="number">10</span>;
+        <span class="kw">let </span>pacing_rate = <span class="number">100_000</span>;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>p = Pacer::new(<span class="bool-val">true</span>, max_burst, pacing_rate, datagram_size, <span class="prelude-val">None</span>);
+
+        <span class="kw">let </span>now = Instant::now();
+
+        <span class="comment">// Send 6000 (half of max_burst) -&gt; no timestamp change yet.
+        </span>p.send(<span class="number">6000</span>, now);
+
+        <span class="macro">assert!</span>(now.duration_since(p.next_time()) &lt; Duration::from_millis(<span class="number">1</span>));
+
+        <span class="comment">// Send 6000 bytes -&gt; max_burst filled.
+        </span>p.send(<span class="number">6000</span>, now);
+
+        <span class="macro">assert!</span>(now.duration_since(p.next_time()) &lt; Duration::from_millis(<span class="number">1</span>));
+
+        <span class="comment">// Start of a new burst.
+        </span><span class="kw">let </span>now = now + Duration::from_millis(<span class="number">5</span>);
+
+        <span class="comment">// Send 1000 bytes and next_time is updated.
+        </span>p.send(<span class="number">1000</span>, now);
+
+        <span class="kw">let </span>interval = max_burst <span class="kw">as </span>f64 / pacing_rate <span class="kw">as </span>f64;
+
+        <span class="macro">assert_eq!</span>(p.next_time() - now, Duration::from_secs_f64(interval));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="doccomment">/// Same as pacer_update() but adds some idle time between transfers to
+    /// trigger a reset.
+    </span><span class="kw">fn </span>pacer_idle() {
+        <span class="kw">let </span>datagram_size = <span class="number">1200</span>;
+        <span class="kw">let </span>max_burst = datagram_size * <span class="number">10</span>;
+        <span class="kw">let </span>pacing_rate = <span class="number">100_000</span>;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>p = Pacer::new(<span class="bool-val">true</span>, max_burst, pacing_rate, datagram_size, <span class="prelude-val">None</span>);
+
+        <span class="kw">let </span>now = Instant::now();
+
+        <span class="comment">// Send 6000 (half of max_burst) -&gt; no timestamp change yet.
+        </span>p.send(<span class="number">6000</span>, now);
+
+        <span class="macro">assert!</span>(now.duration_since(p.next_time()) &lt; Duration::from_millis(<span class="number">1</span>));
+
+        <span class="comment">// Sleep 200ms to reset the idle pacer (at least 120ms).
+        </span><span class="kw">let </span>now = now + Duration::from_millis(<span class="number">200</span>);
+
+        <span class="comment">// Send 6000 bytes -&gt; idle reset and a new burst  isstarted.
+        </span>p.send(<span class="number">6000</span>, now);
+
+        <span class="macro">assert_eq!</span>(p.next_time(), now);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>pacer_set_max_pacing_rate() {
+        <span class="kw">let </span>datagram_size = <span class="number">1200</span>;
+        <span class="kw">let </span>max_burst = datagram_size * <span class="number">10</span>;
+        <span class="kw">let </span>pacing_rate = <span class="number">100_000</span>;
+        <span class="kw">let </span>max_pacing_rate = <span class="number">50_000</span>;
+
+        <span class="comment">// Use the max_pacing_rate.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>p = Pacer::new(
+            <span class="bool-val">true</span>,
+            max_burst,
+            pacing_rate,
+            datagram_size,
+            <span class="prelude-val">Some</span>(max_pacing_rate),
+        );
+
+        <span class="kw">let </span>now = Instant::now();
+
+        <span class="comment">// Send 6000 (half of max_burst) -&gt; no timestamp change yet.
+        </span>p.send(<span class="number">6000</span>, now);
+
+        <span class="macro">assert!</span>(now.duration_since(p.next_time()) &lt; Duration::from_millis(<span class="number">1</span>));
+
+        <span class="comment">// Send 6000 bytes -&gt; max_burst filled.
+        </span>p.send(<span class="number">6000</span>, now);
+
+        <span class="macro">assert!</span>(now.duration_since(p.next_time()) &lt; Duration::from_millis(<span class="number">1</span>));
+
+        <span class="comment">// Start of a second burst.
+        </span><span class="kw">let </span>now = now + Duration::from_millis(<span class="number">5</span>);
+        p.send(<span class="number">12000</span>, now);
+
+        <span class="kw">let </span>second_burst_send_time = p.next_time();
+
+        <span class="kw">let </span>interval = max_burst <span class="kw">as </span>f64 / max_pacing_rate <span class="kw">as </span>f64;
+
+        <span class="macro">assert_eq!</span>(
+            second_burst_send_time - now,
+            Duration::from_secs_f64(interval)
+        );
+
+        <span class="comment">// Start of third burst
+        </span><span class="kw">let </span>now = now + Duration::from_millis(<span class="number">5</span>);
+
+        <span class="comment">// Update pacer rate.
+        </span>p.update(max_burst, <span class="number">75_000</span>, now);
+
+        p.send(<span class="number">12000</span>, now);
+
+        <span class="kw">let </span>third_burst_send_time = p.next_time();
+
+        <span class="macro">assert_eq!</span>(
+            third_burst_send_time - second_burst_send_time,
+            Duration::from_secs_f64(interval)
+        );
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/recovery/prr.rs.html b/src/quiche/recovery/prr.rs.html
new file mode 100644
index 0000000..c667f76
--- /dev/null
+++ b/src/quiche/recovery/prr.rs.html
@@ -0,0 +1,477 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/recovery/prr.rs`."><title>prr.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2021, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="doccomment">//! Proportional Rate Reduction
+//!
+//! This implementation is based on the following RFC:
+//!
+//! &lt;https://datatracker.ietf.org/doc/html/rfc6937&gt;
+
+</span><span class="kw">use </span>std::cmp;
+
+<span class="attr">#[derive(Default, Debug)]
+</span><span class="kw">pub struct </span>PRR {
+    <span class="comment">// Total bytes delivered during recovery.
+    </span>prr_delivered: usize,
+
+    <span class="comment">// FlightSize at the start of recovery.
+    </span>recoverfs: usize,
+
+    <span class="comment">// Total bytes sent during recovery.
+    </span>prr_out: usize,
+
+    <span class="comment">// Total additional bytes can be sent for retransmit during recovery.
+    </span><span class="kw">pub </span>snd_cnt: usize,
+}
+
+<span class="kw">impl </span>PRR {
+    <span class="kw">pub fn </span>on_packet_sent(<span class="kw-2">&amp;mut </span><span class="self">self</span>, sent_bytes: usize) {
+        <span class="self">self</span>.prr_out += sent_bytes;
+
+        <span class="self">self</span>.snd_cnt = <span class="self">self</span>.snd_cnt.saturating_sub(sent_bytes);
+    }
+
+    <span class="kw">pub fn </span>congestion_event(<span class="kw-2">&amp;mut </span><span class="self">self</span>, bytes_in_flight: usize) {
+        <span class="self">self</span>.prr_delivered = <span class="number">0</span>;
+
+        <span class="self">self</span>.recoverfs = bytes_in_flight;
+
+        <span class="self">self</span>.prr_out = <span class="number">0</span>;
+
+        <span class="self">self</span>.snd_cnt = <span class="number">0</span>;
+    }
+
+    <span class="kw">pub fn </span>on_packet_acked(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, delivered_data: usize, pipe: usize, ssthresh: usize,
+        max_datagram_size: usize,
+    ) {
+        <span class="self">self</span>.prr_delivered += delivered_data;
+
+        <span class="self">self</span>.snd_cnt = <span class="kw">if </span>pipe &gt; ssthresh {
+            <span class="comment">// Proportional Rate Reduction.
+            </span><span class="kw">if </span><span class="self">self</span>.recoverfs &gt; <span class="number">0 </span>{
+                ((<span class="self">self</span>.prr_delivered * ssthresh + <span class="self">self</span>.recoverfs - <span class="number">1</span>) /
+                    <span class="self">self</span>.recoverfs)
+                    .saturating_sub(<span class="self">self</span>.prr_out)
+            } <span class="kw">else </span>{
+                <span class="number">0
+            </span>}
+        } <span class="kw">else </span>{
+            <span class="comment">// PRR-SSRB.
+            </span><span class="kw">let </span>limit = cmp::max(
+                <span class="self">self</span>.prr_delivered.saturating_sub(<span class="self">self</span>.prr_out),
+                delivered_data,
+            ) + max_datagram_size;
+
+            <span class="comment">// Attempt to catch up, as permitted by limit
+            </span>cmp::min(ssthresh - pipe, limit)
+        };
+
+        <span class="comment">// snd_cnt should be a positive number.
+        </span><span class="self">self</span>.snd_cnt = cmp::max(<span class="self">self</span>.snd_cnt, <span class="number">0</span>);
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>congestion_event() {
+        <span class="kw">let </span><span class="kw-2">mut </span>prr = PRR::default();
+        <span class="kw">let </span>bytes_in_flight = <span class="number">1000</span>;
+
+        prr.congestion_event(bytes_in_flight);
+
+        <span class="macro">assert_eq!</span>(prr.recoverfs, bytes_in_flight);
+        <span class="macro">assert_eq!</span>(prr.snd_cnt, <span class="number">0</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>on_packet_sent() {
+        <span class="kw">let </span><span class="kw-2">mut </span>prr = PRR::default();
+        <span class="kw">let </span>bytes_in_flight = <span class="number">1000</span>;
+        <span class="kw">let </span>bytes_sent = <span class="number">500</span>;
+
+        prr.congestion_event(bytes_in_flight);
+
+        prr.on_packet_sent(bytes_sent);
+
+        <span class="macro">assert_eq!</span>(prr.prr_out, bytes_sent);
+        <span class="macro">assert_eq!</span>(prr.snd_cnt, <span class="number">0</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>on_packet_acked_prr() {
+        <span class="kw">let </span><span class="kw-2">mut </span>prr = PRR::default();
+        <span class="kw">let </span>max_datagram_size = <span class="number">1000</span>;
+        <span class="kw">let </span>bytes_in_flight = max_datagram_size * <span class="number">10</span>;
+        <span class="kw">let </span>ssthresh = bytes_in_flight / <span class="number">2</span>;
+        <span class="kw">let </span>acked = <span class="number">1000</span>;
+
+        prr.congestion_event(bytes_in_flight);
+
+        <span class="comment">// pipe &gt; ssthresh uses PRR algorithm.
+        </span><span class="kw">let </span>pipe = bytes_in_flight;
+
+        prr.on_packet_acked(acked, pipe, ssthresh, max_datagram_size);
+
+        <span class="macro">assert_eq!</span>(prr.snd_cnt, <span class="number">500</span>);
+
+        <span class="kw">let </span>snd_cnt = prr.snd_cnt;
+
+        <span class="comment">// send one more allowed by snd_cnt
+        </span>prr.on_packet_sent(snd_cnt);
+
+        prr.on_packet_acked(acked, pipe, ssthresh, max_datagram_size);
+
+        <span class="macro">assert_eq!</span>(prr.snd_cnt, <span class="number">500</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>on_packet_acked_prr_overflow() {
+        <span class="kw">let </span><span class="kw-2">mut </span>prr = PRR::default();
+        <span class="kw">let </span>max_datagram_size = <span class="number">1000</span>;
+        <span class="kw">let </span>bytes_in_flight = max_datagram_size * <span class="number">10</span>;
+        <span class="kw">let </span>ssthresh = bytes_in_flight / <span class="number">2</span>;
+        <span class="kw">let </span>acked = <span class="number">1000</span>;
+
+        prr.congestion_event(bytes_in_flight);
+
+        prr.on_packet_sent(max_datagram_size);
+
+        <span class="comment">// pipe &gt; ssthresh uses PRR algorithm.
+        </span><span class="kw">let </span>pipe = bytes_in_flight + max_datagram_size;
+
+        prr.on_packet_acked(acked, pipe, ssthresh, max_datagram_size);
+
+        <span class="macro">assert_eq!</span>(prr.snd_cnt, <span class="number">0</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>on_packet_acked_prr_zero_in_flight() {
+        <span class="kw">let </span><span class="kw-2">mut </span>prr = PRR::default();
+        <span class="kw">let </span>max_datagram_size = <span class="number">1000</span>;
+        <span class="kw">let </span>bytes_in_flight = <span class="number">0</span>;
+        <span class="kw">let </span>ssthresh = <span class="number">3000</span>;
+        <span class="kw">let </span>acked = <span class="number">1000</span>;
+
+        prr.congestion_event(bytes_in_flight);
+
+        <span class="comment">// pipe &gt; ssthresh uses PRR algorithm.
+        </span><span class="kw">let </span>pipe = ssthresh + <span class="number">1000</span>;
+
+        prr.on_packet_acked(acked, pipe, ssthresh, max_datagram_size);
+
+        <span class="macro">assert_eq!</span>(prr.snd_cnt, <span class="number">0</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>on_packet_acked_prr_ssrb() {
+        <span class="kw">let </span><span class="kw-2">mut </span>prr = PRR::default();
+        <span class="kw">let </span>max_datagram_size = <span class="number">1000</span>;
+        <span class="kw">let </span>bytes_in_flight = max_datagram_size * <span class="number">10</span>;
+        <span class="kw">let </span>ssthresh = bytes_in_flight / <span class="number">2</span>;
+        <span class="kw">let </span>acked = <span class="number">1000</span>;
+
+        prr.congestion_event(bytes_in_flight);
+
+        <span class="comment">// pipe &lt;= ssthresh uses PRR-SSRB algorithm.
+        </span><span class="kw">let </span>pipe = max_datagram_size;
+
+        prr.on_packet_acked(acked, pipe, ssthresh, max_datagram_size);
+
+        <span class="macro">assert_eq!</span>(prr.snd_cnt, <span class="number">2000</span>);
+
+        <span class="kw">let </span>snd_cnt = prr.snd_cnt;
+
+        <span class="comment">// send one more allowed by snd_cnt
+        </span>prr.on_packet_sent(snd_cnt);
+
+        prr.on_packet_acked(acked, pipe, ssthresh, max_datagram_size);
+
+        <span class="macro">assert_eq!</span>(prr.snd_cnt, <span class="number">2000</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>on_packet_acked_prr_ssrb_overflow() {
+        <span class="kw">let </span><span class="kw-2">mut </span>prr = PRR::default();
+        <span class="kw">let </span>max_datagram_size = <span class="number">1000</span>;
+        <span class="kw">let </span>bytes_in_flight = max_datagram_size * <span class="number">10</span>;
+        <span class="kw">let </span>ssthresh = bytes_in_flight / <span class="number">2</span>;
+        <span class="kw">let </span>acked = <span class="number">500</span>;
+
+        prr.congestion_event(bytes_in_flight);
+
+        <span class="comment">// pipe &lt;= ssthresh uses PRR-SSRB algorithm.
+        </span><span class="kw">let </span>pipe = max_datagram_size;
+
+        prr.on_packet_sent(max_datagram_size);
+
+        prr.on_packet_acked(acked, pipe, ssthresh, max_datagram_size);
+
+        <span class="macro">assert_eq!</span>(prr.snd_cnt, <span class="number">1500</span>);
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/recovery/reno.rs.html b/src/quiche/recovery/reno.rs.html
new file mode 100644
index 0000000..73ca6fb
--- /dev/null
+++ b/src/quiche/recovery/reno.rs.html
@@ -0,0 +1,883 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/recovery/reno.rs`."><title>reno.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="doccomment">//! Reno Congestion Control
+//!
+//! Note that Slow Start can use HyStart++ when enabled.
+
+</span><span class="kw">use </span>std::cmp;
+<span class="kw">use </span>std::time::Instant;
+
+<span class="kw">use </span><span class="kw">crate</span>::packet;
+<span class="kw">use </span><span class="kw">crate</span>::recovery;
+
+<span class="kw">use </span><span class="kw">crate</span>::recovery::Acked;
+<span class="kw">use </span><span class="kw">crate</span>::recovery::CongestionControlOps;
+<span class="kw">use </span><span class="kw">crate</span>::recovery::Recovery;
+<span class="kw">use </span><span class="kw">crate</span>::recovery::Sent;
+
+<span class="kw">pub static </span>RENO: CongestionControlOps = CongestionControlOps {
+    on_init,
+    reset,
+    on_packet_sent,
+    on_packets_acked,
+    congestion_event,
+    collapse_cwnd,
+    checkpoint,
+    rollback,
+    has_custom_pacing,
+    debug_fmt,
+};
+
+<span class="kw">pub fn </span>on_init(_r: <span class="kw-2">&amp;mut </span>Recovery) {}
+
+<span class="kw">pub fn </span>reset(_r: <span class="kw-2">&amp;mut </span>Recovery) {}
+
+<span class="kw">pub fn </span>on_packet_sent(r: <span class="kw-2">&amp;mut </span>Recovery, sent_bytes: usize, _now: Instant) {
+    r.bytes_in_flight += sent_bytes;
+}
+
+<span class="kw">fn </span>on_packets_acked(
+    r: <span class="kw-2">&amp;mut </span>Recovery, packets: <span class="kw-2">&amp;mut </span>Vec&lt;Acked&gt;, epoch: packet::Epoch,
+    now: Instant,
+) {
+    <span class="kw">for </span>pkt <span class="kw">in </span>packets.drain(..) {
+        on_packet_acked(r, <span class="kw-2">&amp;</span>pkt, epoch, now);
+    }
+}
+
+<span class="kw">fn </span>on_packet_acked(
+    r: <span class="kw-2">&amp;mut </span>Recovery, packet: <span class="kw-2">&amp;</span>Acked, epoch: packet::Epoch, now: Instant,
+) {
+    r.bytes_in_flight = r.bytes_in_flight.saturating_sub(packet.size);
+
+    <span class="kw">if </span>r.in_congestion_recovery(packet.time_sent) {
+        <span class="kw">return</span>;
+    }
+
+    <span class="kw">if </span>r.app_limited {
+        <span class="kw">return</span>;
+    }
+
+    <span class="kw">if </span>r.congestion_window &lt; r.ssthresh {
+        <span class="comment">// In Slow slart, bytes_acked_sl is used for counting
+        // acknowledged bytes.
+        </span>r.bytes_acked_sl += packet.size;
+
+        <span class="kw">if </span>r.hystart.in_css(epoch) {
+            r.congestion_window += r.hystart.css_cwnd_inc(r.max_datagram_size);
+        } <span class="kw">else </span>{
+            r.congestion_window += r.max_datagram_size;
+        }
+
+        <span class="kw">if </span>r.hystart.on_packet_acked(epoch, packet, r.latest_rtt, now) {
+            <span class="comment">// Exit to congestion avoidance if CSS ends.
+            </span>r.ssthresh = r.congestion_window;
+        }
+    } <span class="kw">else </span>{
+        <span class="comment">// Congestion avoidance.
+        </span>r.bytes_acked_ca += packet.size;
+
+        <span class="kw">if </span>r.bytes_acked_ca &gt;= r.congestion_window {
+            r.bytes_acked_ca -= r.congestion_window;
+            r.congestion_window += r.max_datagram_size;
+        }
+    }
+}
+
+<span class="kw">fn </span>congestion_event(
+    r: <span class="kw-2">&amp;mut </span>Recovery, _lost_bytes: usize, largest_lost_pkt: <span class="kw-2">&amp;</span>Sent,
+    epoch: packet::Epoch, now: Instant,
+) {
+    <span class="comment">// Start a new congestion event if packet was sent after the
+    // start of the previous congestion recovery period.
+    </span><span class="kw">let </span>time_sent = largest_lost_pkt.time_sent;
+
+    <span class="kw">if </span>!r.in_congestion_recovery(time_sent) {
+        r.congestion_recovery_start_time = <span class="prelude-val">Some</span>(now);
+
+        r.congestion_window = (r.congestion_window <span class="kw">as </span>f64 *
+            recovery::LOSS_REDUCTION_FACTOR)
+            <span class="kw">as </span>usize;
+
+        r.congestion_window = cmp::max(
+            r.congestion_window,
+            r.max_datagram_size * recovery::MINIMUM_WINDOW_PACKETS,
+        );
+
+        r.bytes_acked_ca = (r.congestion_window <span class="kw">as </span>f64 *
+            recovery::LOSS_REDUCTION_FACTOR) <span class="kw">as </span>usize;
+
+        r.ssthresh = r.congestion_window;
+
+        <span class="kw">if </span>r.hystart.in_css(epoch) {
+            r.hystart.congestion_event();
+        }
+    }
+}
+
+<span class="kw">pub fn </span>collapse_cwnd(r: <span class="kw-2">&amp;mut </span>Recovery) {
+    r.congestion_window = r.max_datagram_size * recovery::MINIMUM_WINDOW_PACKETS;
+    r.bytes_acked_sl = <span class="number">0</span>;
+    r.bytes_acked_ca = <span class="number">0</span>;
+
+    <span class="kw">if </span>r.hystart.enabled() {
+        r.hystart.reset();
+    }
+}
+
+<span class="kw">fn </span>checkpoint(_r: <span class="kw-2">&amp;mut </span>Recovery) {}
+
+<span class="kw">fn </span>rollback(_r: <span class="kw-2">&amp;mut </span>Recovery) -&gt; bool {
+    <span class="bool-val">true
+</span>}
+
+<span class="kw">fn </span>has_custom_pacing() -&gt; bool {
+    <span class="bool-val">false
+</span>}
+
+<span class="kw">fn </span>debug_fmt(_r: <span class="kw-2">&amp;</span>Recovery, _f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter) -&gt; std::fmt::Result {
+    <span class="prelude-val">Ok</span>(())
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="kw">use </span>smallvec::smallvec;
+    <span class="kw">use </span>std::time::Duration;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>reno_init() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::Reno);
+
+        <span class="kw">let </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+
+        <span class="macro">assert!</span>(r.cwnd() &gt; <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">0</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>reno_send() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::Reno);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+
+        <span class="kw">let </span>now = Instant::now();
+
+        r.on_packet_sent_cc(<span class="number">1000</span>, now);
+
+        <span class="macro">assert_eq!</span>(r.bytes_in_flight, <span class="number">1000</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>reno_slow_start() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::Reno);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+
+        <span class="kw">let </span>now = Instant::now();
+
+        <span class="kw">let </span>p = recovery::Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: r.max_datagram_size,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: std::time::Instant::now(),
+            first_sent_time: std::time::Instant::now(),
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        <span class="comment">// Send initcwnd full MSS packets to become no longer app limited
+        </span><span class="kw">for _ in </span><span class="number">0</span>..r.initial_congestion_window_packets {
+            r.on_packet_sent_cc(p.size, now);
+        }
+
+        <span class="kw">let </span>cwnd_prev = r.cwnd();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>acked = <span class="macro">vec!</span>[Acked {
+            pkt_num: p.pkt_num,
+            time_sent: p.time_sent,
+            size: p.size,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            rtt: Duration::ZERO,
+        }];
+
+        r.on_packets_acked(<span class="kw-2">&amp;mut </span>acked, packet::Epoch::Application, now);
+
+        <span class="comment">// Check if cwnd increased by packet size (slow start).
+        </span><span class="macro">assert_eq!</span>(r.cwnd(), cwnd_prev + p.size);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>reno_slow_start_multi_acks() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::Reno);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+
+        <span class="kw">let </span>now = Instant::now();
+
+        <span class="kw">let </span>p = recovery::Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: r.max_datagram_size,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: std::time::Instant::now(),
+            first_sent_time: std::time::Instant::now(),
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            has_data: <span class="bool-val">false</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        <span class="comment">// Send initcwnd full MSS packets to become no longer app limited
+        </span><span class="kw">for _ in </span><span class="number">0</span>..r.initial_congestion_window_packets {
+            r.on_packet_sent_cc(p.size, now);
+        }
+
+        <span class="kw">let </span>cwnd_prev = r.cwnd();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>acked = <span class="macro">vec!</span>[
+            Acked {
+                pkt_num: p.pkt_num,
+                time_sent: p.time_sent,
+                size: p.size,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                rtt: Duration::ZERO,
+            },
+            Acked {
+                pkt_num: p.pkt_num,
+                time_sent: p.time_sent,
+                size: p.size,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                rtt: Duration::ZERO,
+            },
+            Acked {
+                pkt_num: p.pkt_num,
+                time_sent: p.time_sent,
+                size: p.size,
+                delivered: <span class="number">0</span>,
+                delivered_time: now,
+                first_sent_time: now,
+                is_app_limited: <span class="bool-val">false</span>,
+                tx_in_flight: <span class="number">0</span>,
+                lost: <span class="number">0</span>,
+                rtt: Duration::ZERO,
+            },
+        ];
+
+        r.on_packets_acked(<span class="kw-2">&amp;mut </span>acked, packet::Epoch::Application, now);
+
+        <span class="comment">// Acked 3 packets.
+        </span><span class="macro">assert_eq!</span>(r.cwnd(), cwnd_prev + p.size * <span class="number">3</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>reno_congestion_event() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::Reno);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+
+        <span class="kw">let </span>prev_cwnd = r.cwnd();
+
+        <span class="kw">let </span>now = Instant::now();
+
+        <span class="kw">let </span>p = recovery::Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: r.max_datagram_size,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: std::time::Instant::now(),
+            first_sent_time: std::time::Instant::now(),
+            is_app_limited: <span class="bool-val">false</span>,
+            has_data: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        r.congestion_event(
+            r.max_datagram_size,
+            <span class="kw-2">&amp;</span>p,
+            packet::Epoch::Application,
+            now,
+        );
+
+        <span class="comment">// In Reno, after congestion event, cwnd will be cut in half.
+        </span><span class="macro">assert_eq!</span>(prev_cwnd / <span class="number">2</span>, r.cwnd());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>reno_congestion_avoidance() {
+        <span class="kw">let </span><span class="kw-2">mut </span>cfg = <span class="kw">crate</span>::Config::new(<span class="kw">crate</span>::PROTOCOL_VERSION).unwrap();
+        cfg.set_cc_algorithm(recovery::CongestionControlAlgorithm::Reno);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>r = Recovery::new(<span class="kw-2">&amp;</span>cfg);
+        <span class="kw">let </span>now = Instant::now();
+        <span class="kw">let </span>prev_cwnd = r.cwnd();
+
+        <span class="comment">// Fill up bytes_in_flight to avoid app_limited=true
+        </span>r.on_packet_sent_cc(<span class="number">20000</span>, now);
+
+        <span class="kw">let </span>p = recovery::Sent {
+            pkt_num: <span class="number">0</span>,
+            frames: <span class="macro">smallvec!</span>[],
+            time_sent: now,
+            time_acked: <span class="prelude-val">None</span>,
+            time_lost: <span class="prelude-val">None</span>,
+            size: r.max_datagram_size,
+            ack_eliciting: <span class="bool-val">true</span>,
+            in_flight: <span class="bool-val">true</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: std::time::Instant::now(),
+            first_sent_time: std::time::Instant::now(),
+            is_app_limited: <span class="bool-val">false</span>,
+            has_data: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            pmtud: <span class="bool-val">false</span>,
+        };
+
+        <span class="comment">// Trigger congestion event to update ssthresh
+        </span>r.congestion_event(
+            r.max_datagram_size,
+            <span class="kw-2">&amp;</span>p,
+            packet::Epoch::Application,
+            now,
+        );
+
+        <span class="comment">// After congestion event, cwnd will be reduced.
+        </span><span class="kw">let </span>cur_cwnd =
+            (prev_cwnd <span class="kw">as </span>f64 * recovery::LOSS_REDUCTION_FACTOR) <span class="kw">as </span>usize;
+        <span class="macro">assert_eq!</span>(r.cwnd(), cur_cwnd);
+
+        <span class="kw">let </span>rtt = Duration::from_millis(<span class="number">100</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>acked = <span class="macro">vec!</span>[Acked {
+            pkt_num: <span class="number">0</span>,
+            <span class="comment">// To exit from recovery
+            </span>time_sent: now + rtt,
+            <span class="comment">// More than cur_cwnd to increase cwnd
+            </span>size: <span class="number">8000</span>,
+            delivered: <span class="number">0</span>,
+            delivered_time: now,
+            first_sent_time: now,
+            is_app_limited: <span class="bool-val">false</span>,
+            tx_in_flight: <span class="number">0</span>,
+            lost: <span class="number">0</span>,
+            rtt: Duration::ZERO,
+        }];
+
+        <span class="comment">// Ack more than cwnd bytes with rtt=100ms
+        </span>r.update_rtt(rtt, Duration::from_millis(<span class="number">0</span>), now);
+        r.on_packets_acked(<span class="kw-2">&amp;mut </span>acked, packet::Epoch::Application, now + rtt * <span class="number">2</span>);
+
+        <span class="comment">// After acking more than cwnd, expect cwnd increased by MSS
+        </span><span class="macro">assert_eq!</span>(r.cwnd(), cur_cwnd + r.max_datagram_size);
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/stream/mod.rs.html b/src/quiche/stream/mod.rs.html
new file mode 100644
index 0000000..a59f9a1
--- /dev/null
+++ b/src/quiche/stream/mod.rs.html
@@ -0,0 +1,4443 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/stream/mod.rs`."><title>mod.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+<a href="#1217" id="1217">1217</a>
+<a href="#1218" id="1218">1218</a>
+<a href="#1219" id="1219">1219</a>
+<a href="#1220" id="1220">1220</a>
+<a href="#1221" id="1221">1221</a>
+<a href="#1222" id="1222">1222</a>
+<a href="#1223" id="1223">1223</a>
+<a href="#1224" id="1224">1224</a>
+<a href="#1225" id="1225">1225</a>
+<a href="#1226" id="1226">1226</a>
+<a href="#1227" id="1227">1227</a>
+<a href="#1228" id="1228">1228</a>
+<a href="#1229" id="1229">1229</a>
+<a href="#1230" id="1230">1230</a>
+<a href="#1231" id="1231">1231</a>
+<a href="#1232" id="1232">1232</a>
+<a href="#1233" id="1233">1233</a>
+<a href="#1234" id="1234">1234</a>
+<a href="#1235" id="1235">1235</a>
+<a href="#1236" id="1236">1236</a>
+<a href="#1237" id="1237">1237</a>
+<a href="#1238" id="1238">1238</a>
+<a href="#1239" id="1239">1239</a>
+<a href="#1240" id="1240">1240</a>
+<a href="#1241" id="1241">1241</a>
+<a href="#1242" id="1242">1242</a>
+<a href="#1243" id="1243">1243</a>
+<a href="#1244" id="1244">1244</a>
+<a href="#1245" id="1245">1245</a>
+<a href="#1246" id="1246">1246</a>
+<a href="#1247" id="1247">1247</a>
+<a href="#1248" id="1248">1248</a>
+<a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</a>
+<a href="#1259" id="1259">1259</a>
+<a href="#1260" id="1260">1260</a>
+<a href="#1261" id="1261">1261</a>
+<a href="#1262" id="1262">1262</a>
+<a href="#1263" id="1263">1263</a>
+<a href="#1264" id="1264">1264</a>
+<a href="#1265" id="1265">1265</a>
+<a href="#1266" id="1266">1266</a>
+<a href="#1267" id="1267">1267</a>
+<a href="#1268" id="1268">1268</a>
+<a href="#1269" id="1269">1269</a>
+<a href="#1270" id="1270">1270</a>
+<a href="#1271" id="1271">1271</a>
+<a href="#1272" id="1272">1272</a>
+<a href="#1273" id="1273">1273</a>
+<a href="#1274" id="1274">1274</a>
+<a href="#1275" id="1275">1275</a>
+<a href="#1276" id="1276">1276</a>
+<a href="#1277" id="1277">1277</a>
+<a href="#1278" id="1278">1278</a>
+<a href="#1279" id="1279">1279</a>
+<a href="#1280" id="1280">1280</a>
+<a href="#1281" id="1281">1281</a>
+<a href="#1282" id="1282">1282</a>
+<a href="#1283" id="1283">1283</a>
+<a href="#1284" id="1284">1284</a>
+<a href="#1285" id="1285">1285</a>
+<a href="#1286" id="1286">1286</a>
+<a href="#1287" id="1287">1287</a>
+<a href="#1288" id="1288">1288</a>
+<a href="#1289" id="1289">1289</a>
+<a href="#1290" id="1290">1290</a>
+<a href="#1291" id="1291">1291</a>
+<a href="#1292" id="1292">1292</a>
+<a href="#1293" id="1293">1293</a>
+<a href="#1294" id="1294">1294</a>
+<a href="#1295" id="1295">1295</a>
+<a href="#1296" id="1296">1296</a>
+<a href="#1297" id="1297">1297</a>
+<a href="#1298" id="1298">1298</a>
+<a href="#1299" id="1299">1299</a>
+<a href="#1300" id="1300">1300</a>
+<a href="#1301" id="1301">1301</a>
+<a href="#1302" id="1302">1302</a>
+<a href="#1303" id="1303">1303</a>
+<a href="#1304" id="1304">1304</a>
+<a href="#1305" id="1305">1305</a>
+<a href="#1306" id="1306">1306</a>
+<a href="#1307" id="1307">1307</a>
+<a href="#1308" id="1308">1308</a>
+<a href="#1309" id="1309">1309</a>
+<a href="#1310" id="1310">1310</a>
+<a href="#1311" id="1311">1311</a>
+<a href="#1312" id="1312">1312</a>
+<a href="#1313" id="1313">1313</a>
+<a href="#1314" id="1314">1314</a>
+<a href="#1315" id="1315">1315</a>
+<a href="#1316" id="1316">1316</a>
+<a href="#1317" id="1317">1317</a>
+<a href="#1318" id="1318">1318</a>
+<a href="#1319" id="1319">1319</a>
+<a href="#1320" id="1320">1320</a>
+<a href="#1321" id="1321">1321</a>
+<a href="#1322" id="1322">1322</a>
+<a href="#1323" id="1323">1323</a>
+<a href="#1324" id="1324">1324</a>
+<a href="#1325" id="1325">1325</a>
+<a href="#1326" id="1326">1326</a>
+<a href="#1327" id="1327">1327</a>
+<a href="#1328" id="1328">1328</a>
+<a href="#1329" id="1329">1329</a>
+<a href="#1330" id="1330">1330</a>
+<a href="#1331" id="1331">1331</a>
+<a href="#1332" id="1332">1332</a>
+<a href="#1333" id="1333">1333</a>
+<a href="#1334" id="1334">1334</a>
+<a href="#1335" id="1335">1335</a>
+<a href="#1336" id="1336">1336</a>
+<a href="#1337" id="1337">1337</a>
+<a href="#1338" id="1338">1338</a>
+<a href="#1339" id="1339">1339</a>
+<a href="#1340" id="1340">1340</a>
+<a href="#1341" id="1341">1341</a>
+<a href="#1342" id="1342">1342</a>
+<a href="#1343" id="1343">1343</a>
+<a href="#1344" id="1344">1344</a>
+<a href="#1345" id="1345">1345</a>
+<a href="#1346" id="1346">1346</a>
+<a href="#1347" id="1347">1347</a>
+<a href="#1348" id="1348">1348</a>
+<a href="#1349" id="1349">1349</a>
+<a href="#1350" id="1350">1350</a>
+<a href="#1351" id="1351">1351</a>
+<a href="#1352" id="1352">1352</a>
+<a href="#1353" id="1353">1353</a>
+<a href="#1354" id="1354">1354</a>
+<a href="#1355" id="1355">1355</a>
+<a href="#1356" id="1356">1356</a>
+<a href="#1357" id="1357">1357</a>
+<a href="#1358" id="1358">1358</a>
+<a href="#1359" id="1359">1359</a>
+<a href="#1360" id="1360">1360</a>
+<a href="#1361" id="1361">1361</a>
+<a href="#1362" id="1362">1362</a>
+<a href="#1363" id="1363">1363</a>
+<a href="#1364" id="1364">1364</a>
+<a href="#1365" id="1365">1365</a>
+<a href="#1366" id="1366">1366</a>
+<a href="#1367" id="1367">1367</a>
+<a href="#1368" id="1368">1368</a>
+<a href="#1369" id="1369">1369</a>
+<a href="#1370" id="1370">1370</a>
+<a href="#1371" id="1371">1371</a>
+<a href="#1372" id="1372">1372</a>
+<a href="#1373" id="1373">1373</a>
+<a href="#1374" id="1374">1374</a>
+<a href="#1375" id="1375">1375</a>
+<a href="#1376" id="1376">1376</a>
+<a href="#1377" id="1377">1377</a>
+<a href="#1378" id="1378">1378</a>
+<a href="#1379" id="1379">1379</a>
+<a href="#1380" id="1380">1380</a>
+<a href="#1381" id="1381">1381</a>
+<a href="#1382" id="1382">1382</a>
+<a href="#1383" id="1383">1383</a>
+<a href="#1384" id="1384">1384</a>
+<a href="#1385" id="1385">1385</a>
+<a href="#1386" id="1386">1386</a>
+<a href="#1387" id="1387">1387</a>
+<a href="#1388" id="1388">1388</a>
+<a href="#1389" id="1389">1389</a>
+<a href="#1390" id="1390">1390</a>
+<a href="#1391" id="1391">1391</a>
+<a href="#1392" id="1392">1392</a>
+<a href="#1393" id="1393">1393</a>
+<a href="#1394" id="1394">1394</a>
+<a href="#1395" id="1395">1395</a>
+<a href="#1396" id="1396">1396</a>
+<a href="#1397" id="1397">1397</a>
+<a href="#1398" id="1398">1398</a>
+<a href="#1399" id="1399">1399</a>
+<a href="#1400" id="1400">1400</a>
+<a href="#1401" id="1401">1401</a>
+<a href="#1402" id="1402">1402</a>
+<a href="#1403" id="1403">1403</a>
+<a href="#1404" id="1404">1404</a>
+<a href="#1405" id="1405">1405</a>
+<a href="#1406" id="1406">1406</a>
+<a href="#1407" id="1407">1407</a>
+<a href="#1408" id="1408">1408</a>
+<a href="#1409" id="1409">1409</a>
+<a href="#1410" id="1410">1410</a>
+<a href="#1411" id="1411">1411</a>
+<a href="#1412" id="1412">1412</a>
+<a href="#1413" id="1413">1413</a>
+<a href="#1414" id="1414">1414</a>
+<a href="#1415" id="1415">1415</a>
+<a href="#1416" id="1416">1416</a>
+<a href="#1417" id="1417">1417</a>
+<a href="#1418" id="1418">1418</a>
+<a href="#1419" id="1419">1419</a>
+<a href="#1420" id="1420">1420</a>
+<a href="#1421" id="1421">1421</a>
+<a href="#1422" id="1422">1422</a>
+<a href="#1423" id="1423">1423</a>
+<a href="#1424" id="1424">1424</a>
+<a href="#1425" id="1425">1425</a>
+<a href="#1426" id="1426">1426</a>
+<a href="#1427" id="1427">1427</a>
+<a href="#1428" id="1428">1428</a>
+<a href="#1429" id="1429">1429</a>
+<a href="#1430" id="1430">1430</a>
+<a href="#1431" id="1431">1431</a>
+<a href="#1432" id="1432">1432</a>
+<a href="#1433" id="1433">1433</a>
+<a href="#1434" id="1434">1434</a>
+<a href="#1435" id="1435">1435</a>
+<a href="#1436" id="1436">1436</a>
+<a href="#1437" id="1437">1437</a>
+<a href="#1438" id="1438">1438</a>
+<a href="#1439" id="1439">1439</a>
+<a href="#1440" id="1440">1440</a>
+<a href="#1441" id="1441">1441</a>
+<a href="#1442" id="1442">1442</a>
+<a href="#1443" id="1443">1443</a>
+<a href="#1444" id="1444">1444</a>
+<a href="#1445" id="1445">1445</a>
+<a href="#1446" id="1446">1446</a>
+<a href="#1447" id="1447">1447</a>
+<a href="#1448" id="1448">1448</a>
+<a href="#1449" id="1449">1449</a>
+<a href="#1450" id="1450">1450</a>
+<a href="#1451" id="1451">1451</a>
+<a href="#1452" id="1452">1452</a>
+<a href="#1453" id="1453">1453</a>
+<a href="#1454" id="1454">1454</a>
+<a href="#1455" id="1455">1455</a>
+<a href="#1456" id="1456">1456</a>
+<a href="#1457" id="1457">1457</a>
+<a href="#1458" id="1458">1458</a>
+<a href="#1459" id="1459">1459</a>
+<a href="#1460" id="1460">1460</a>
+<a href="#1461" id="1461">1461</a>
+<a href="#1462" id="1462">1462</a>
+<a href="#1463" id="1463">1463</a>
+<a href="#1464" id="1464">1464</a>
+<a href="#1465" id="1465">1465</a>
+<a href="#1466" id="1466">1466</a>
+<a href="#1467" id="1467">1467</a>
+<a href="#1468" id="1468">1468</a>
+<a href="#1469" id="1469">1469</a>
+<a href="#1470" id="1470">1470</a>
+<a href="#1471" id="1471">1471</a>
+<a href="#1472" id="1472">1472</a>
+<a href="#1473" id="1473">1473</a>
+<a href="#1474" id="1474">1474</a>
+<a href="#1475" id="1475">1475</a>
+<a href="#1476" id="1476">1476</a>
+<a href="#1477" id="1477">1477</a>
+<a href="#1478" id="1478">1478</a>
+<a href="#1479" id="1479">1479</a>
+<a href="#1480" id="1480">1480</a>
+<a href="#1481" id="1481">1481</a>
+<a href="#1482" id="1482">1482</a>
+<a href="#1483" id="1483">1483</a>
+<a href="#1484" id="1484">1484</a>
+<a href="#1485" id="1485">1485</a>
+<a href="#1486" id="1486">1486</a>
+<a href="#1487" id="1487">1487</a>
+<a href="#1488" id="1488">1488</a>
+<a href="#1489" id="1489">1489</a>
+<a href="#1490" id="1490">1490</a>
+<a href="#1491" id="1491">1491</a>
+<a href="#1492" id="1492">1492</a>
+<a href="#1493" id="1493">1493</a>
+<a href="#1494" id="1494">1494</a>
+<a href="#1495" id="1495">1495</a>
+<a href="#1496" id="1496">1496</a>
+<a href="#1497" id="1497">1497</a>
+<a href="#1498" id="1498">1498</a>
+<a href="#1499" id="1499">1499</a>
+<a href="#1500" id="1500">1500</a>
+<a href="#1501" id="1501">1501</a>
+<a href="#1502" id="1502">1502</a>
+<a href="#1503" id="1503">1503</a>
+<a href="#1504" id="1504">1504</a>
+<a href="#1505" id="1505">1505</a>
+<a href="#1506" id="1506">1506</a>
+<a href="#1507" id="1507">1507</a>
+<a href="#1508" id="1508">1508</a>
+<a href="#1509" id="1509">1509</a>
+<a href="#1510" id="1510">1510</a>
+<a href="#1511" id="1511">1511</a>
+<a href="#1512" id="1512">1512</a>
+<a href="#1513" id="1513">1513</a>
+<a href="#1514" id="1514">1514</a>
+<a href="#1515" id="1515">1515</a>
+<a href="#1516" id="1516">1516</a>
+<a href="#1517" id="1517">1517</a>
+<a href="#1518" id="1518">1518</a>
+<a href="#1519" id="1519">1519</a>
+<a href="#1520" id="1520">1520</a>
+<a href="#1521" id="1521">1521</a>
+<a href="#1522" id="1522">1522</a>
+<a href="#1523" id="1523">1523</a>
+<a href="#1524" id="1524">1524</a>
+<a href="#1525" id="1525">1525</a>
+<a href="#1526" id="1526">1526</a>
+<a href="#1527" id="1527">1527</a>
+<a href="#1528" id="1528">1528</a>
+<a href="#1529" id="1529">1529</a>
+<a href="#1530" id="1530">1530</a>
+<a href="#1531" id="1531">1531</a>
+<a href="#1532" id="1532">1532</a>
+<a href="#1533" id="1533">1533</a>
+<a href="#1534" id="1534">1534</a>
+<a href="#1535" id="1535">1535</a>
+<a href="#1536" id="1536">1536</a>
+<a href="#1537" id="1537">1537</a>
+<a href="#1538" id="1538">1538</a>
+<a href="#1539" id="1539">1539</a>
+<a href="#1540" id="1540">1540</a>
+<a href="#1541" id="1541">1541</a>
+<a href="#1542" id="1542">1542</a>
+<a href="#1543" id="1543">1543</a>
+<a href="#1544" id="1544">1544</a>
+<a href="#1545" id="1545">1545</a>
+<a href="#1546" id="1546">1546</a>
+<a href="#1547" id="1547">1547</a>
+<a href="#1548" id="1548">1548</a>
+<a href="#1549" id="1549">1549</a>
+<a href="#1550" id="1550">1550</a>
+<a href="#1551" id="1551">1551</a>
+<a href="#1552" id="1552">1552</a>
+<a href="#1553" id="1553">1553</a>
+<a href="#1554" id="1554">1554</a>
+<a href="#1555" id="1555">1555</a>
+<a href="#1556" id="1556">1556</a>
+<a href="#1557" id="1557">1557</a>
+<a href="#1558" id="1558">1558</a>
+<a href="#1559" id="1559">1559</a>
+<a href="#1560" id="1560">1560</a>
+<a href="#1561" id="1561">1561</a>
+<a href="#1562" id="1562">1562</a>
+<a href="#1563" id="1563">1563</a>
+<a href="#1564" id="1564">1564</a>
+<a href="#1565" id="1565">1565</a>
+<a href="#1566" id="1566">1566</a>
+<a href="#1567" id="1567">1567</a>
+<a href="#1568" id="1568">1568</a>
+<a href="#1569" id="1569">1569</a>
+<a href="#1570" id="1570">1570</a>
+<a href="#1571" id="1571">1571</a>
+<a href="#1572" id="1572">1572</a>
+<a href="#1573" id="1573">1573</a>
+<a href="#1574" id="1574">1574</a>
+<a href="#1575" id="1575">1575</a>
+<a href="#1576" id="1576">1576</a>
+<a href="#1577" id="1577">1577</a>
+<a href="#1578" id="1578">1578</a>
+<a href="#1579" id="1579">1579</a>
+<a href="#1580" id="1580">1580</a>
+<a href="#1581" id="1581">1581</a>
+<a href="#1582" id="1582">1582</a>
+<a href="#1583" id="1583">1583</a>
+<a href="#1584" id="1584">1584</a>
+<a href="#1585" id="1585">1585</a>
+<a href="#1586" id="1586">1586</a>
+<a href="#1587" id="1587">1587</a>
+<a href="#1588" id="1588">1588</a>
+<a href="#1589" id="1589">1589</a>
+<a href="#1590" id="1590">1590</a>
+<a href="#1591" id="1591">1591</a>
+<a href="#1592" id="1592">1592</a>
+<a href="#1593" id="1593">1593</a>
+<a href="#1594" id="1594">1594</a>
+<a href="#1595" id="1595">1595</a>
+<a href="#1596" id="1596">1596</a>
+<a href="#1597" id="1597">1597</a>
+<a href="#1598" id="1598">1598</a>
+<a href="#1599" id="1599">1599</a>
+<a href="#1600" id="1600">1600</a>
+<a href="#1601" id="1601">1601</a>
+<a href="#1602" id="1602">1602</a>
+<a href="#1603" id="1603">1603</a>
+<a href="#1604" id="1604">1604</a>
+<a href="#1605" id="1605">1605</a>
+<a href="#1606" id="1606">1606</a>
+<a href="#1607" id="1607">1607</a>
+<a href="#1608" id="1608">1608</a>
+<a href="#1609" id="1609">1609</a>
+<a href="#1610" id="1610">1610</a>
+<a href="#1611" id="1611">1611</a>
+<a href="#1612" id="1612">1612</a>
+<a href="#1613" id="1613">1613</a>
+<a href="#1614" id="1614">1614</a>
+<a href="#1615" id="1615">1615</a>
+<a href="#1616" id="1616">1616</a>
+<a href="#1617" id="1617">1617</a>
+<a href="#1618" id="1618">1618</a>
+<a href="#1619" id="1619">1619</a>
+<a href="#1620" id="1620">1620</a>
+<a href="#1621" id="1621">1621</a>
+<a href="#1622" id="1622">1622</a>
+<a href="#1623" id="1623">1623</a>
+<a href="#1624" id="1624">1624</a>
+<a href="#1625" id="1625">1625</a>
+<a href="#1626" id="1626">1626</a>
+<a href="#1627" id="1627">1627</a>
+<a href="#1628" id="1628">1628</a>
+<a href="#1629" id="1629">1629</a>
+<a href="#1630" id="1630">1630</a>
+<a href="#1631" id="1631">1631</a>
+<a href="#1632" id="1632">1632</a>
+<a href="#1633" id="1633">1633</a>
+<a href="#1634" id="1634">1634</a>
+<a href="#1635" id="1635">1635</a>
+<a href="#1636" id="1636">1636</a>
+<a href="#1637" id="1637">1637</a>
+<a href="#1638" id="1638">1638</a>
+<a href="#1639" id="1639">1639</a>
+<a href="#1640" id="1640">1640</a>
+<a href="#1641" id="1641">1641</a>
+<a href="#1642" id="1642">1642</a>
+<a href="#1643" id="1643">1643</a>
+<a href="#1644" id="1644">1644</a>
+<a href="#1645" id="1645">1645</a>
+<a href="#1646" id="1646">1646</a>
+<a href="#1647" id="1647">1647</a>
+<a href="#1648" id="1648">1648</a>
+<a href="#1649" id="1649">1649</a>
+<a href="#1650" id="1650">1650</a>
+<a href="#1651" id="1651">1651</a>
+<a href="#1652" id="1652">1652</a>
+<a href="#1653" id="1653">1653</a>
+<a href="#1654" id="1654">1654</a>
+<a href="#1655" id="1655">1655</a>
+<a href="#1656" id="1656">1656</a>
+<a href="#1657" id="1657">1657</a>
+<a href="#1658" id="1658">1658</a>
+<a href="#1659" id="1659">1659</a>
+<a href="#1660" id="1660">1660</a>
+<a href="#1661" id="1661">1661</a>
+<a href="#1662" id="1662">1662</a>
+<a href="#1663" id="1663">1663</a>
+<a href="#1664" id="1664">1664</a>
+<a href="#1665" id="1665">1665</a>
+<a href="#1666" id="1666">1666</a>
+<a href="#1667" id="1667">1667</a>
+<a href="#1668" id="1668">1668</a>
+<a href="#1669" id="1669">1669</a>
+<a href="#1670" id="1670">1670</a>
+<a href="#1671" id="1671">1671</a>
+<a href="#1672" id="1672">1672</a>
+<a href="#1673" id="1673">1673</a>
+<a href="#1674" id="1674">1674</a>
+<a href="#1675" id="1675">1675</a>
+<a href="#1676" id="1676">1676</a>
+<a href="#1677" id="1677">1677</a>
+<a href="#1678" id="1678">1678</a>
+<a href="#1679" id="1679">1679</a>
+<a href="#1680" id="1680">1680</a>
+<a href="#1681" id="1681">1681</a>
+<a href="#1682" id="1682">1682</a>
+<a href="#1683" id="1683">1683</a>
+<a href="#1684" id="1684">1684</a>
+<a href="#1685" id="1685">1685</a>
+<a href="#1686" id="1686">1686</a>
+<a href="#1687" id="1687">1687</a>
+<a href="#1688" id="1688">1688</a>
+<a href="#1689" id="1689">1689</a>
+<a href="#1690" id="1690">1690</a>
+<a href="#1691" id="1691">1691</a>
+<a href="#1692" id="1692">1692</a>
+<a href="#1693" id="1693">1693</a>
+<a href="#1694" id="1694">1694</a>
+<a href="#1695" id="1695">1695</a>
+<a href="#1696" id="1696">1696</a>
+<a href="#1697" id="1697">1697</a>
+<a href="#1698" id="1698">1698</a>
+<a href="#1699" id="1699">1699</a>
+<a href="#1700" id="1700">1700</a>
+<a href="#1701" id="1701">1701</a>
+<a href="#1702" id="1702">1702</a>
+<a href="#1703" id="1703">1703</a>
+<a href="#1704" id="1704">1704</a>
+<a href="#1705" id="1705">1705</a>
+<a href="#1706" id="1706">1706</a>
+<a href="#1707" id="1707">1707</a>
+<a href="#1708" id="1708">1708</a>
+<a href="#1709" id="1709">1709</a>
+<a href="#1710" id="1710">1710</a>
+<a href="#1711" id="1711">1711</a>
+<a href="#1712" id="1712">1712</a>
+<a href="#1713" id="1713">1713</a>
+<a href="#1714" id="1714">1714</a>
+<a href="#1715" id="1715">1715</a>
+<a href="#1716" id="1716">1716</a>
+<a href="#1717" id="1717">1717</a>
+<a href="#1718" id="1718">1718</a>
+<a href="#1719" id="1719">1719</a>
+<a href="#1720" id="1720">1720</a>
+<a href="#1721" id="1721">1721</a>
+<a href="#1722" id="1722">1722</a>
+<a href="#1723" id="1723">1723</a>
+<a href="#1724" id="1724">1724</a>
+<a href="#1725" id="1725">1725</a>
+<a href="#1726" id="1726">1726</a>
+<a href="#1727" id="1727">1727</a>
+<a href="#1728" id="1728">1728</a>
+<a href="#1729" id="1729">1729</a>
+<a href="#1730" id="1730">1730</a>
+<a href="#1731" id="1731">1731</a>
+<a href="#1732" id="1732">1732</a>
+<a href="#1733" id="1733">1733</a>
+<a href="#1734" id="1734">1734</a>
+<a href="#1735" id="1735">1735</a>
+<a href="#1736" id="1736">1736</a>
+<a href="#1737" id="1737">1737</a>
+<a href="#1738" id="1738">1738</a>
+<a href="#1739" id="1739">1739</a>
+<a href="#1740" id="1740">1740</a>
+<a href="#1741" id="1741">1741</a>
+<a href="#1742" id="1742">1742</a>
+<a href="#1743" id="1743">1743</a>
+<a href="#1744" id="1744">1744</a>
+<a href="#1745" id="1745">1745</a>
+<a href="#1746" id="1746">1746</a>
+<a href="#1747" id="1747">1747</a>
+<a href="#1748" id="1748">1748</a>
+<a href="#1749" id="1749">1749</a>
+<a href="#1750" id="1750">1750</a>
+<a href="#1751" id="1751">1751</a>
+<a href="#1752" id="1752">1752</a>
+<a href="#1753" id="1753">1753</a>
+<a href="#1754" id="1754">1754</a>
+<a href="#1755" id="1755">1755</a>
+<a href="#1756" id="1756">1756</a>
+<a href="#1757" id="1757">1757</a>
+<a href="#1758" id="1758">1758</a>
+<a href="#1759" id="1759">1759</a>
+<a href="#1760" id="1760">1760</a>
+<a href="#1761" id="1761">1761</a>
+<a href="#1762" id="1762">1762</a>
+<a href="#1763" id="1763">1763</a>
+<a href="#1764" id="1764">1764</a>
+<a href="#1765" id="1765">1765</a>
+<a href="#1766" id="1766">1766</a>
+<a href="#1767" id="1767">1767</a>
+<a href="#1768" id="1768">1768</a>
+<a href="#1769" id="1769">1769</a>
+<a href="#1770" id="1770">1770</a>
+<a href="#1771" id="1771">1771</a>
+<a href="#1772" id="1772">1772</a>
+<a href="#1773" id="1773">1773</a>
+<a href="#1774" id="1774">1774</a>
+<a href="#1775" id="1775">1775</a>
+<a href="#1776" id="1776">1776</a>
+<a href="#1777" id="1777">1777</a>
+<a href="#1778" id="1778">1778</a>
+<a href="#1779" id="1779">1779</a>
+<a href="#1780" id="1780">1780</a>
+<a href="#1781" id="1781">1781</a>
+<a href="#1782" id="1782">1782</a>
+<a href="#1783" id="1783">1783</a>
+<a href="#1784" id="1784">1784</a>
+<a href="#1785" id="1785">1785</a>
+<a href="#1786" id="1786">1786</a>
+<a href="#1787" id="1787">1787</a>
+<a href="#1788" id="1788">1788</a>
+<a href="#1789" id="1789">1789</a>
+<a href="#1790" id="1790">1790</a>
+<a href="#1791" id="1791">1791</a>
+<a href="#1792" id="1792">1792</a>
+<a href="#1793" id="1793">1793</a>
+<a href="#1794" id="1794">1794</a>
+<a href="#1795" id="1795">1795</a>
+<a href="#1796" id="1796">1796</a>
+<a href="#1797" id="1797">1797</a>
+<a href="#1798" id="1798">1798</a>
+<a href="#1799" id="1799">1799</a>
+<a href="#1800" id="1800">1800</a>
+<a href="#1801" id="1801">1801</a>
+<a href="#1802" id="1802">1802</a>
+<a href="#1803" id="1803">1803</a>
+<a href="#1804" id="1804">1804</a>
+<a href="#1805" id="1805">1805</a>
+<a href="#1806" id="1806">1806</a>
+<a href="#1807" id="1807">1807</a>
+<a href="#1808" id="1808">1808</a>
+<a href="#1809" id="1809">1809</a>
+<a href="#1810" id="1810">1810</a>
+<a href="#1811" id="1811">1811</a>
+<a href="#1812" id="1812">1812</a>
+<a href="#1813" id="1813">1813</a>
+<a href="#1814" id="1814">1814</a>
+<a href="#1815" id="1815">1815</a>
+<a href="#1816" id="1816">1816</a>
+<a href="#1817" id="1817">1817</a>
+<a href="#1818" id="1818">1818</a>
+<a href="#1819" id="1819">1819</a>
+<a href="#1820" id="1820">1820</a>
+<a href="#1821" id="1821">1821</a>
+<a href="#1822" id="1822">1822</a>
+<a href="#1823" id="1823">1823</a>
+<a href="#1824" id="1824">1824</a>
+<a href="#1825" id="1825">1825</a>
+<a href="#1826" id="1826">1826</a>
+<a href="#1827" id="1827">1827</a>
+<a href="#1828" id="1828">1828</a>
+<a href="#1829" id="1829">1829</a>
+<a href="#1830" id="1830">1830</a>
+<a href="#1831" id="1831">1831</a>
+<a href="#1832" id="1832">1832</a>
+<a href="#1833" id="1833">1833</a>
+<a href="#1834" id="1834">1834</a>
+<a href="#1835" id="1835">1835</a>
+<a href="#1836" id="1836">1836</a>
+<a href="#1837" id="1837">1837</a>
+<a href="#1838" id="1838">1838</a>
+<a href="#1839" id="1839">1839</a>
+<a href="#1840" id="1840">1840</a>
+<a href="#1841" id="1841">1841</a>
+<a href="#1842" id="1842">1842</a>
+<a href="#1843" id="1843">1843</a>
+<a href="#1844" id="1844">1844</a>
+<a href="#1845" id="1845">1845</a>
+<a href="#1846" id="1846">1846</a>
+<a href="#1847" id="1847">1847</a>
+<a href="#1848" id="1848">1848</a>
+<a href="#1849" id="1849">1849</a>
+<a href="#1850" id="1850">1850</a>
+<a href="#1851" id="1851">1851</a>
+<a href="#1852" id="1852">1852</a>
+<a href="#1853" id="1853">1853</a>
+<a href="#1854" id="1854">1854</a>
+<a href="#1855" id="1855">1855</a>
+<a href="#1856" id="1856">1856</a>
+<a href="#1857" id="1857">1857</a>
+<a href="#1858" id="1858">1858</a>
+<a href="#1859" id="1859">1859</a>
+<a href="#1860" id="1860">1860</a>
+<a href="#1861" id="1861">1861</a>
+<a href="#1862" id="1862">1862</a>
+<a href="#1863" id="1863">1863</a>
+<a href="#1864" id="1864">1864</a>
+<a href="#1865" id="1865">1865</a>
+<a href="#1866" id="1866">1866</a>
+<a href="#1867" id="1867">1867</a>
+<a href="#1868" id="1868">1868</a>
+<a href="#1869" id="1869">1869</a>
+<a href="#1870" id="1870">1870</a>
+<a href="#1871" id="1871">1871</a>
+<a href="#1872" id="1872">1872</a>
+<a href="#1873" id="1873">1873</a>
+<a href="#1874" id="1874">1874</a>
+<a href="#1875" id="1875">1875</a>
+<a href="#1876" id="1876">1876</a>
+<a href="#1877" id="1877">1877</a>
+<a href="#1878" id="1878">1878</a>
+<a href="#1879" id="1879">1879</a>
+<a href="#1880" id="1880">1880</a>
+<a href="#1881" id="1881">1881</a>
+<a href="#1882" id="1882">1882</a>
+<a href="#1883" id="1883">1883</a>
+<a href="#1884" id="1884">1884</a>
+<a href="#1885" id="1885">1885</a>
+<a href="#1886" id="1886">1886</a>
+<a href="#1887" id="1887">1887</a>
+<a href="#1888" id="1888">1888</a>
+<a href="#1889" id="1889">1889</a>
+<a href="#1890" id="1890">1890</a>
+<a href="#1891" id="1891">1891</a>
+<a href="#1892" id="1892">1892</a>
+<a href="#1893" id="1893">1893</a>
+<a href="#1894" id="1894">1894</a>
+<a href="#1895" id="1895">1895</a>
+<a href="#1896" id="1896">1896</a>
+<a href="#1897" id="1897">1897</a>
+<a href="#1898" id="1898">1898</a>
+<a href="#1899" id="1899">1899</a>
+<a href="#1900" id="1900">1900</a>
+<a href="#1901" id="1901">1901</a>
+<a href="#1902" id="1902">1902</a>
+<a href="#1903" id="1903">1903</a>
+<a href="#1904" id="1904">1904</a>
+<a href="#1905" id="1905">1905</a>
+<a href="#1906" id="1906">1906</a>
+<a href="#1907" id="1907">1907</a>
+<a href="#1908" id="1908">1908</a>
+<a href="#1909" id="1909">1909</a>
+<a href="#1910" id="1910">1910</a>
+<a href="#1911" id="1911">1911</a>
+<a href="#1912" id="1912">1912</a>
+<a href="#1913" id="1913">1913</a>
+<a href="#1914" id="1914">1914</a>
+<a href="#1915" id="1915">1915</a>
+<a href="#1916" id="1916">1916</a>
+<a href="#1917" id="1917">1917</a>
+<a href="#1918" id="1918">1918</a>
+<a href="#1919" id="1919">1919</a>
+<a href="#1920" id="1920">1920</a>
+<a href="#1921" id="1921">1921</a>
+<a href="#1922" id="1922">1922</a>
+<a href="#1923" id="1923">1923</a>
+<a href="#1924" id="1924">1924</a>
+<a href="#1925" id="1925">1925</a>
+<a href="#1926" id="1926">1926</a>
+<a href="#1927" id="1927">1927</a>
+<a href="#1928" id="1928">1928</a>
+<a href="#1929" id="1929">1929</a>
+<a href="#1930" id="1930">1930</a>
+<a href="#1931" id="1931">1931</a>
+<a href="#1932" id="1932">1932</a>
+<a href="#1933" id="1933">1933</a>
+<a href="#1934" id="1934">1934</a>
+<a href="#1935" id="1935">1935</a>
+<a href="#1936" id="1936">1936</a>
+<a href="#1937" id="1937">1937</a>
+<a href="#1938" id="1938">1938</a>
+<a href="#1939" id="1939">1939</a>
+<a href="#1940" id="1940">1940</a>
+<a href="#1941" id="1941">1941</a>
+<a href="#1942" id="1942">1942</a>
+<a href="#1943" id="1943">1943</a>
+<a href="#1944" id="1944">1944</a>
+<a href="#1945" id="1945">1945</a>
+<a href="#1946" id="1946">1946</a>
+<a href="#1947" id="1947">1947</a>
+<a href="#1948" id="1948">1948</a>
+<a href="#1949" id="1949">1949</a>
+<a href="#1950" id="1950">1950</a>
+<a href="#1951" id="1951">1951</a>
+<a href="#1952" id="1952">1952</a>
+<a href="#1953" id="1953">1953</a>
+<a href="#1954" id="1954">1954</a>
+<a href="#1955" id="1955">1955</a>
+<a href="#1956" id="1956">1956</a>
+<a href="#1957" id="1957">1957</a>
+<a href="#1958" id="1958">1958</a>
+<a href="#1959" id="1959">1959</a>
+<a href="#1960" id="1960">1960</a>
+<a href="#1961" id="1961">1961</a>
+<a href="#1962" id="1962">1962</a>
+<a href="#1963" id="1963">1963</a>
+<a href="#1964" id="1964">1964</a>
+<a href="#1965" id="1965">1965</a>
+<a href="#1966" id="1966">1966</a>
+<a href="#1967" id="1967">1967</a>
+<a href="#1968" id="1968">1968</a>
+<a href="#1969" id="1969">1969</a>
+<a href="#1970" id="1970">1970</a>
+<a href="#1971" id="1971">1971</a>
+<a href="#1972" id="1972">1972</a>
+<a href="#1973" id="1973">1973</a>
+<a href="#1974" id="1974">1974</a>
+<a href="#1975" id="1975">1975</a>
+<a href="#1976" id="1976">1976</a>
+<a href="#1977" id="1977">1977</a>
+<a href="#1978" id="1978">1978</a>
+<a href="#1979" id="1979">1979</a>
+<a href="#1980" id="1980">1980</a>
+<a href="#1981" id="1981">1981</a>
+<a href="#1982" id="1982">1982</a>
+<a href="#1983" id="1983">1983</a>
+<a href="#1984" id="1984">1984</a>
+<a href="#1985" id="1985">1985</a>
+<a href="#1986" id="1986">1986</a>
+<a href="#1987" id="1987">1987</a>
+<a href="#1988" id="1988">1988</a>
+<a href="#1989" id="1989">1989</a>
+<a href="#1990" id="1990">1990</a>
+<a href="#1991" id="1991">1991</a>
+<a href="#1992" id="1992">1992</a>
+<a href="#1993" id="1993">1993</a>
+<a href="#1994" id="1994">1994</a>
+<a href="#1995" id="1995">1995</a>
+<a href="#1996" id="1996">1996</a>
+<a href="#1997" id="1997">1997</a>
+<a href="#1998" id="1998">1998</a>
+<a href="#1999" id="1999">1999</a>
+<a href="#2000" id="2000">2000</a>
+<a href="#2001" id="2001">2001</a>
+<a href="#2002" id="2002">2002</a>
+<a href="#2003" id="2003">2003</a>
+<a href="#2004" id="2004">2004</a>
+<a href="#2005" id="2005">2005</a>
+<a href="#2006" id="2006">2006</a>
+<a href="#2007" id="2007">2007</a>
+<a href="#2008" id="2008">2008</a>
+<a href="#2009" id="2009">2009</a>
+<a href="#2010" id="2010">2010</a>
+<a href="#2011" id="2011">2011</a>
+<a href="#2012" id="2012">2012</a>
+<a href="#2013" id="2013">2013</a>
+<a href="#2014" id="2014">2014</a>
+<a href="#2015" id="2015">2015</a>
+<a href="#2016" id="2016">2016</a>
+<a href="#2017" id="2017">2017</a>
+<a href="#2018" id="2018">2018</a>
+<a href="#2019" id="2019">2019</a>
+<a href="#2020" id="2020">2020</a>
+<a href="#2021" id="2021">2021</a>
+<a href="#2022" id="2022">2022</a>
+<a href="#2023" id="2023">2023</a>
+<a href="#2024" id="2024">2024</a>
+<a href="#2025" id="2025">2025</a>
+<a href="#2026" id="2026">2026</a>
+<a href="#2027" id="2027">2027</a>
+<a href="#2028" id="2028">2028</a>
+<a href="#2029" id="2029">2029</a>
+<a href="#2030" id="2030">2030</a>
+<a href="#2031" id="2031">2031</a>
+<a href="#2032" id="2032">2032</a>
+<a href="#2033" id="2033">2033</a>
+<a href="#2034" id="2034">2034</a>
+<a href="#2035" id="2035">2035</a>
+<a href="#2036" id="2036">2036</a>
+<a href="#2037" id="2037">2037</a>
+<a href="#2038" id="2038">2038</a>
+<a href="#2039" id="2039">2039</a>
+<a href="#2040" id="2040">2040</a>
+<a href="#2041" id="2041">2041</a>
+<a href="#2042" id="2042">2042</a>
+<a href="#2043" id="2043">2043</a>
+<a href="#2044" id="2044">2044</a>
+<a href="#2045" id="2045">2045</a>
+<a href="#2046" id="2046">2046</a>
+<a href="#2047" id="2047">2047</a>
+<a href="#2048" id="2048">2048</a>
+<a href="#2049" id="2049">2049</a>
+<a href="#2050" id="2050">2050</a>
+<a href="#2051" id="2051">2051</a>
+<a href="#2052" id="2052">2052</a>
+<a href="#2053" id="2053">2053</a>
+<a href="#2054" id="2054">2054</a>
+<a href="#2055" id="2055">2055</a>
+<a href="#2056" id="2056">2056</a>
+<a href="#2057" id="2057">2057</a>
+<a href="#2058" id="2058">2058</a>
+<a href="#2059" id="2059">2059</a>
+<a href="#2060" id="2060">2060</a>
+<a href="#2061" id="2061">2061</a>
+<a href="#2062" id="2062">2062</a>
+<a href="#2063" id="2063">2063</a>
+<a href="#2064" id="2064">2064</a>
+<a href="#2065" id="2065">2065</a>
+<a href="#2066" id="2066">2066</a>
+<a href="#2067" id="2067">2067</a>
+<a href="#2068" id="2068">2068</a>
+<a href="#2069" id="2069">2069</a>
+<a href="#2070" id="2070">2070</a>
+<a href="#2071" id="2071">2071</a>
+<a href="#2072" id="2072">2072</a>
+<a href="#2073" id="2073">2073</a>
+<a href="#2074" id="2074">2074</a>
+<a href="#2075" id="2075">2075</a>
+<a href="#2076" id="2076">2076</a>
+<a href="#2077" id="2077">2077</a>
+<a href="#2078" id="2078">2078</a>
+<a href="#2079" id="2079">2079</a>
+<a href="#2080" id="2080">2080</a>
+<a href="#2081" id="2081">2081</a>
+<a href="#2082" id="2082">2082</a>
+<a href="#2083" id="2083">2083</a>
+<a href="#2084" id="2084">2084</a>
+<a href="#2085" id="2085">2085</a>
+<a href="#2086" id="2086">2086</a>
+<a href="#2087" id="2087">2087</a>
+<a href="#2088" id="2088">2088</a>
+<a href="#2089" id="2089">2089</a>
+<a href="#2090" id="2090">2090</a>
+<a href="#2091" id="2091">2091</a>
+<a href="#2092" id="2092">2092</a>
+<a href="#2093" id="2093">2093</a>
+<a href="#2094" id="2094">2094</a>
+<a href="#2095" id="2095">2095</a>
+<a href="#2096" id="2096">2096</a>
+<a href="#2097" id="2097">2097</a>
+<a href="#2098" id="2098">2098</a>
+<a href="#2099" id="2099">2099</a>
+<a href="#2100" id="2100">2100</a>
+<a href="#2101" id="2101">2101</a>
+<a href="#2102" id="2102">2102</a>
+<a href="#2103" id="2103">2103</a>
+<a href="#2104" id="2104">2104</a>
+<a href="#2105" id="2105">2105</a>
+<a href="#2106" id="2106">2106</a>
+<a href="#2107" id="2107">2107</a>
+<a href="#2108" id="2108">2108</a>
+<a href="#2109" id="2109">2109</a>
+<a href="#2110" id="2110">2110</a>
+<a href="#2111" id="2111">2111</a>
+<a href="#2112" id="2112">2112</a>
+<a href="#2113" id="2113">2113</a>
+<a href="#2114" id="2114">2114</a>
+<a href="#2115" id="2115">2115</a>
+<a href="#2116" id="2116">2116</a>
+<a href="#2117" id="2117">2117</a>
+<a href="#2118" id="2118">2118</a>
+<a href="#2119" id="2119">2119</a>
+<a href="#2120" id="2120">2120</a>
+<a href="#2121" id="2121">2121</a>
+<a href="#2122" id="2122">2122</a>
+<a href="#2123" id="2123">2123</a>
+<a href="#2124" id="2124">2124</a>
+<a href="#2125" id="2125">2125</a>
+<a href="#2126" id="2126">2126</a>
+<a href="#2127" id="2127">2127</a>
+<a href="#2128" id="2128">2128</a>
+<a href="#2129" id="2129">2129</a>
+<a href="#2130" id="2130">2130</a>
+<a href="#2131" id="2131">2131</a>
+<a href="#2132" id="2132">2132</a>
+<a href="#2133" id="2133">2133</a>
+<a href="#2134" id="2134">2134</a>
+<a href="#2135" id="2135">2135</a>
+<a href="#2136" id="2136">2136</a>
+<a href="#2137" id="2137">2137</a>
+<a href="#2138" id="2138">2138</a>
+<a href="#2139" id="2139">2139</a>
+<a href="#2140" id="2140">2140</a>
+<a href="#2141" id="2141">2141</a>
+<a href="#2142" id="2142">2142</a>
+<a href="#2143" id="2143">2143</a>
+<a href="#2144" id="2144">2144</a>
+<a href="#2145" id="2145">2145</a>
+<a href="#2146" id="2146">2146</a>
+<a href="#2147" id="2147">2147</a>
+<a href="#2148" id="2148">2148</a>
+<a href="#2149" id="2149">2149</a>
+<a href="#2150" id="2150">2150</a>
+<a href="#2151" id="2151">2151</a>
+<a href="#2152" id="2152">2152</a>
+<a href="#2153" id="2153">2153</a>
+<a href="#2154" id="2154">2154</a>
+<a href="#2155" id="2155">2155</a>
+<a href="#2156" id="2156">2156</a>
+<a href="#2157" id="2157">2157</a>
+<a href="#2158" id="2158">2158</a>
+<a href="#2159" id="2159">2159</a>
+<a href="#2160" id="2160">2160</a>
+<a href="#2161" id="2161">2161</a>
+<a href="#2162" id="2162">2162</a>
+<a href="#2163" id="2163">2163</a>
+<a href="#2164" id="2164">2164</a>
+<a href="#2165" id="2165">2165</a>
+<a href="#2166" id="2166">2166</a>
+<a href="#2167" id="2167">2167</a>
+<a href="#2168" id="2168">2168</a>
+<a href="#2169" id="2169">2169</a>
+<a href="#2170" id="2170">2170</a>
+<a href="#2171" id="2171">2171</a>
+<a href="#2172" id="2172">2172</a>
+<a href="#2173" id="2173">2173</a>
+<a href="#2174" id="2174">2174</a>
+<a href="#2175" id="2175">2175</a>
+<a href="#2176" id="2176">2176</a>
+<a href="#2177" id="2177">2177</a>
+<a href="#2178" id="2178">2178</a>
+<a href="#2179" id="2179">2179</a>
+<a href="#2180" id="2180">2180</a>
+<a href="#2181" id="2181">2181</a>
+<a href="#2182" id="2182">2182</a>
+<a href="#2183" id="2183">2183</a>
+<a href="#2184" id="2184">2184</a>
+<a href="#2185" id="2185">2185</a>
+<a href="#2186" id="2186">2186</a>
+<a href="#2187" id="2187">2187</a>
+<a href="#2188" id="2188">2188</a>
+<a href="#2189" id="2189">2189</a>
+<a href="#2190" id="2190">2190</a>
+<a href="#2191" id="2191">2191</a>
+<a href="#2192" id="2192">2192</a>
+<a href="#2193" id="2193">2193</a>
+<a href="#2194" id="2194">2194</a>
+<a href="#2195" id="2195">2195</a>
+<a href="#2196" id="2196">2196</a>
+<a href="#2197" id="2197">2197</a>
+<a href="#2198" id="2198">2198</a>
+<a href="#2199" id="2199">2199</a>
+<a href="#2200" id="2200">2200</a>
+<a href="#2201" id="2201">2201</a>
+<a href="#2202" id="2202">2202</a>
+<a href="#2203" id="2203">2203</a>
+<a href="#2204" id="2204">2204</a>
+<a href="#2205" id="2205">2205</a>
+<a href="#2206" id="2206">2206</a>
+<a href="#2207" id="2207">2207</a>
+<a href="#2208" id="2208">2208</a>
+<a href="#2209" id="2209">2209</a>
+<a href="#2210" id="2210">2210</a>
+<a href="#2211" id="2211">2211</a>
+<a href="#2212" id="2212">2212</a>
+<a href="#2213" id="2213">2213</a>
+<a href="#2214" id="2214">2214</a>
+<a href="#2215" id="2215">2215</a>
+<a href="#2216" id="2216">2216</a>
+<a href="#2217" id="2217">2217</a>
+<a href="#2218" id="2218">2218</a>
+<a href="#2219" id="2219">2219</a>
+<a href="#2220" id="2220">2220</a>
+<a href="#2221" id="2221">2221</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2018-2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span>std::cmp;
+
+<span class="kw">use </span>std::sync::Arc;
+
+<span class="kw">use </span>std::collections::hash_map;
+<span class="kw">use </span>std::collections::HashMap;
+<span class="kw">use </span>std::collections::HashSet;
+
+<span class="kw">use </span>intrusive_collections::intrusive_adapter;
+<span class="kw">use </span>intrusive_collections::KeyAdapter;
+<span class="kw">use </span>intrusive_collections::RBTree;
+<span class="kw">use </span>intrusive_collections::RBTreeAtomicLink;
+
+<span class="kw">use </span>smallvec::SmallVec;
+
+<span class="kw">use </span><span class="kw">crate</span>::Error;
+<span class="kw">use </span><span class="kw">crate</span>::Result;
+
+<span class="kw">const </span>DEFAULT_URGENCY: u8 = <span class="number">127</span>;
+
+<span class="comment">// The default size of the receiver stream flow control window.
+</span><span class="kw">const </span>DEFAULT_STREAM_WINDOW: u64 = <span class="number">32 </span>* <span class="number">1024</span>;
+
+<span class="doccomment">/// The maximum size of the receiver stream flow control window.
+</span><span class="kw">pub const </span>MAX_STREAM_WINDOW: u64 = <span class="number">16 </span>* <span class="number">1024 </span>* <span class="number">1024</span>;
+
+<span class="doccomment">/// A simple no-op hasher for Stream IDs.
+///
+/// The QUIC protocol and quiche library guarantees stream ID uniqueness, so
+/// we can save effort by avoiding using a more complicated algorithm.
+</span><span class="attr">#[derive(Default)]
+</span><span class="kw">pub struct </span>StreamIdHasher {
+    id: u64,
+}
+
+<span class="kw">impl </span>std::hash::Hasher <span class="kw">for </span>StreamIdHasher {
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>finish(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.id
+    }
+
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>write_u64(<span class="kw-2">&amp;mut </span><span class="self">self</span>, id: u64) {
+        <span class="self">self</span>.id = id;
+    }
+
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>write(<span class="kw-2">&amp;mut </span><span class="self">self</span>, <span class="kw">_</span>: <span class="kw-2">&amp;</span>[u8]) {
+        <span class="comment">// We need a default write() for the trait but stream IDs will always
+        // be a u64 so we just delegate to write_u64.
+        </span><span class="macro">unimplemented!</span>()
+    }
+}
+
+<span class="kw">type </span>BuildStreamIdHasher = std::hash::BuildHasherDefault&lt;StreamIdHasher&gt;;
+
+<span class="kw">pub type </span>StreamIdHashMap&lt;V&gt; = HashMap&lt;u64, V, BuildStreamIdHasher&gt;;
+<span class="kw">pub type </span>StreamIdHashSet = HashSet&lt;u64, BuildStreamIdHasher&gt;;
+
+<span class="doccomment">/// Keeps track of QUIC streams and enforces stream limits.
+</span><span class="attr">#[derive(Default)]
+</span><span class="kw">pub struct </span>StreamMap {
+    <span class="doccomment">/// Map of streams indexed by stream ID.
+    </span>streams: StreamIdHashMap&lt;Stream&gt;,
+
+    <span class="doccomment">/// Set of streams that were completed and garbage collected.
+    ///
+    /// Instead of keeping the full stream state forever, we collect completed
+    /// streams to save memory, but we still need to keep track of previously
+    /// created streams, to prevent peers from re-creating them.
+    </span>collected: StreamIdHashSet,
+
+    <span class="doccomment">/// Peer's maximum bidirectional stream count limit.
+    </span>peer_max_streams_bidi: u64,
+
+    <span class="doccomment">/// Peer's maximum unidirectional stream count limit.
+    </span>peer_max_streams_uni: u64,
+
+    <span class="doccomment">/// The total number of bidirectional streams opened by the peer.
+    </span>peer_opened_streams_bidi: u64,
+
+    <span class="doccomment">/// The total number of unidirectional streams opened by the peer.
+    </span>peer_opened_streams_uni: u64,
+
+    <span class="doccomment">/// Local maximum bidirectional stream count limit.
+    </span>local_max_streams_bidi: u64,
+    local_max_streams_bidi_next: u64,
+
+    <span class="doccomment">/// Local maximum unidirectional stream count limit.
+    </span>local_max_streams_uni: u64,
+    local_max_streams_uni_next: u64,
+
+    <span class="doccomment">/// The total number of bidirectional streams opened by the local endpoint.
+    </span>local_opened_streams_bidi: u64,
+
+    <span class="doccomment">/// The total number of unidirectional streams opened by the local endpoint.
+    </span>local_opened_streams_uni: u64,
+
+    <span class="doccomment">/// Queue of stream IDs corresponding to streams that have buffered data
+    /// ready to be sent to the peer. This also implies that the stream has
+    /// enough flow control credits to send at least some of that data.
+    </span>flushable: RBTree&lt;StreamFlushablePriorityAdapter&gt;,
+
+    <span class="doccomment">/// Set of stream IDs corresponding to streams that have outstanding data
+    /// to read. This is used to generate a `StreamIter` of streams without
+    /// having to iterate over the full list of streams.
+    </span><span class="kw">pub </span>readable: RBTree&lt;StreamReadablePriorityAdapter&gt;,
+
+    <span class="doccomment">/// Set of stream IDs corresponding to streams that have enough flow control
+    /// capacity to be written to, and is not finished. This is used to generate
+    /// a `StreamIter` of streams without having to iterate over the full list
+    /// of streams.
+    </span><span class="kw">pub </span>writable: RBTree&lt;StreamWritablePriorityAdapter&gt;,
+
+    <span class="doccomment">/// Set of stream IDs corresponding to streams that are almost out of flow
+    /// control credit and need to send MAX_STREAM_DATA. This is used to
+    /// generate a `StreamIter` of streams without having to iterate over the
+    /// full list of streams.
+    </span>almost_full: StreamIdHashSet,
+
+    <span class="doccomment">/// Set of stream IDs corresponding to streams that are blocked. The value
+    /// of the map elements represents the offset of the stream at which the
+    /// blocking occurred.
+    </span>blocked: StreamIdHashMap&lt;u64&gt;,
+
+    <span class="doccomment">/// Set of stream IDs corresponding to streams that are reset. The value
+    /// of the map elements is a tuple of the error code and final size values
+    /// to include in the RESET_STREAM frame.
+    </span>reset: StreamIdHashMap&lt;(u64, u64)&gt;,
+
+    <span class="doccomment">/// Set of stream IDs corresponding to streams that are shutdown on the
+    /// receive side, and need to send a STOP_SENDING frame. The value of the
+    /// map elements is the error code to include in the STOP_SENDING frame.
+    </span>stopped: StreamIdHashMap&lt;u64&gt;,
+
+    <span class="doccomment">/// The maximum size of a stream window.
+    </span>max_stream_window: u64,
+}
+
+<span class="kw">impl </span>StreamMap {
+    <span class="kw">pub fn </span>new(
+        max_streams_bidi: u64, max_streams_uni: u64, max_stream_window: u64,
+    ) -&gt; StreamMap {
+        StreamMap {
+            local_max_streams_bidi: max_streams_bidi,
+            local_max_streams_bidi_next: max_streams_bidi,
+
+            local_max_streams_uni: max_streams_uni,
+            local_max_streams_uni_next: max_streams_uni,
+
+            max_stream_window,
+
+            ..StreamMap::default()
+        }
+    }
+
+    <span class="doccomment">/// Returns the stream with the given ID if it exists.
+    </span><span class="kw">pub fn </span>get(<span class="kw-2">&amp;</span><span class="self">self</span>, id: u64) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>Stream&gt; {
+        <span class="self">self</span>.streams.get(<span class="kw-2">&amp;</span>id)
+    }
+
+    <span class="doccomment">/// Returns the mutable stream with the given ID if it exists.
+    </span><span class="kw">pub fn </span>get_mut(<span class="kw-2">&amp;mut </span><span class="self">self</span>, id: u64) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;mut </span>Stream&gt; {
+        <span class="self">self</span>.streams.get_mut(<span class="kw-2">&amp;</span>id)
+    }
+
+    <span class="doccomment">/// Returns the mutable stream with the given ID if it exists, or creates
+    /// a new one otherwise.
+    ///
+    /// The `local` parameter indicates whether the stream's creation was
+    /// requested by the local application rather than the peer, and is
+    /// used to validate the requested stream ID, and to select the initial
+    /// flow control values from the local and remote transport parameters
+    /// (also passed as arguments).
+    ///
+    /// This also takes care of enforcing both local and the peer's stream
+    /// count limits. If one of these limits is violated, the `StreamLimit`
+    /// error is returned.
+    </span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>get_or_create(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, id: u64, local_params: <span class="kw-2">&amp;</span><span class="kw">crate</span>::TransportParams,
+        peer_params: <span class="kw-2">&amp;</span><span class="kw">crate</span>::TransportParams, local: bool, is_server: bool,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;mut </span>Stream&gt; {
+        <span class="kw">let </span>(stream, is_new_and_writable) = <span class="kw">match </span><span class="self">self</span>.streams.entry(id) {
+            hash_map::Entry::Vacant(v) =&gt; {
+                <span class="comment">// Stream has already been closed and garbage collected.
+                </span><span class="kw">if </span><span class="self">self</span>.collected.contains(<span class="kw-2">&amp;</span>id) {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+                }
+
+                <span class="kw">if </span>local != is_local(id, is_server) {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(Error::InvalidStreamState(id));
+                }
+
+                <span class="kw">let </span>(max_rx_data, max_tx_data) = <span class="kw">match </span>(local, is_bidi(id)) {
+                    <span class="comment">// Locally-initiated bidirectional stream.
+                    </span>(<span class="bool-val">true</span>, <span class="bool-val">true</span>) =&gt; (
+                        local_params.initial_max_stream_data_bidi_local,
+                        peer_params.initial_max_stream_data_bidi_remote,
+                    ),
+
+                    <span class="comment">// Locally-initiated unidirectional stream.
+                    </span>(<span class="bool-val">true</span>, <span class="bool-val">false</span>) =&gt; (<span class="number">0</span>, peer_params.initial_max_stream_data_uni),
+
+                    <span class="comment">// Remotely-initiated bidirectional stream.
+                    </span>(<span class="bool-val">false</span>, <span class="bool-val">true</span>) =&gt; (
+                        local_params.initial_max_stream_data_bidi_remote,
+                        peer_params.initial_max_stream_data_bidi_local,
+                    ),
+
+                    <span class="comment">// Remotely-initiated unidirectional stream.
+                    </span>(<span class="bool-val">false</span>, <span class="bool-val">false</span>) =&gt;
+                        (local_params.initial_max_stream_data_uni, <span class="number">0</span>),
+                };
+
+                <span class="comment">// The two least significant bits from a stream id identify the
+                // type of stream. Truncate those bits to get the sequence for
+                // that stream type.
+                </span><span class="kw">let </span>stream_sequence = id &gt;&gt; <span class="number">2</span>;
+
+                <span class="comment">// Enforce stream count limits.
+                </span><span class="kw">match </span>(is_local(id, is_server), is_bidi(id)) {
+                    (<span class="bool-val">true</span>, <span class="bool-val">true</span>) =&gt; {
+                        <span class="kw">let </span>n = std::cmp::max(
+                            <span class="self">self</span>.local_opened_streams_bidi,
+                            stream_sequence + <span class="number">1</span>,
+                        );
+
+                        <span class="kw">if </span>n &gt; <span class="self">self</span>.peer_max_streams_bidi {
+                            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::StreamLimit);
+                        }
+
+                        <span class="self">self</span>.local_opened_streams_bidi = n;
+                    },
+
+                    (<span class="bool-val">true</span>, <span class="bool-val">false</span>) =&gt; {
+                        <span class="kw">let </span>n = std::cmp::max(
+                            <span class="self">self</span>.local_opened_streams_uni,
+                            stream_sequence + <span class="number">1</span>,
+                        );
+
+                        <span class="kw">if </span>n &gt; <span class="self">self</span>.peer_max_streams_uni {
+                            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::StreamLimit);
+                        }
+
+                        <span class="self">self</span>.local_opened_streams_uni = n;
+                    },
+
+                    (<span class="bool-val">false</span>, <span class="bool-val">true</span>) =&gt; {
+                        <span class="kw">let </span>n = std::cmp::max(
+                            <span class="self">self</span>.peer_opened_streams_bidi,
+                            stream_sequence + <span class="number">1</span>,
+                        );
+
+                        <span class="kw">if </span>n &gt; <span class="self">self</span>.local_max_streams_bidi {
+                            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::StreamLimit);
+                        }
+
+                        <span class="self">self</span>.peer_opened_streams_bidi = n;
+                    },
+
+                    (<span class="bool-val">false</span>, <span class="bool-val">false</span>) =&gt; {
+                        <span class="kw">let </span>n = std::cmp::max(
+                            <span class="self">self</span>.peer_opened_streams_uni,
+                            stream_sequence + <span class="number">1</span>,
+                        );
+
+                        <span class="kw">if </span>n &gt; <span class="self">self</span>.local_max_streams_uni {
+                            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::StreamLimit);
+                        }
+
+                        <span class="self">self</span>.peer_opened_streams_uni = n;
+                    },
+                };
+
+                <span class="kw">let </span>s = Stream::new(
+                    id,
+                    max_rx_data,
+                    max_tx_data,
+                    is_bidi(id),
+                    local,
+                    <span class="self">self</span>.max_stream_window,
+                );
+
+                <span class="kw">let </span>is_writable = s.is_writable();
+
+                (v.insert(s), is_writable)
+            },
+
+            hash_map::Entry::Occupied(v) =&gt; (v.into_mut(), <span class="bool-val">false</span>),
+        };
+
+        <span class="comment">// Newly created stream might already be writable due to initial flow
+        // control limits.
+        </span><span class="kw">if </span>is_new_and_writable {
+            <span class="self">self</span>.writable.insert(Arc::clone(<span class="kw-2">&amp;</span>stream.priority_key));
+        }
+
+        <span class="prelude-val">Ok</span>(stream)
+    }
+
+    <span class="doccomment">/// Adds the stream ID to the readable streams set.
+    ///
+    /// If the stream was already in the list, this does nothing.
+    </span><span class="kw">pub fn </span>insert_readable(<span class="kw-2">&amp;mut </span><span class="self">self</span>, priority_key: <span class="kw-2">&amp;</span>Arc&lt;StreamPriorityKey&gt;) {
+        <span class="kw">if </span>!priority_key.readable.is_linked() {
+            <span class="self">self</span>.readable.insert(Arc::clone(priority_key));
+        }
+    }
+
+    <span class="doccomment">/// Removes the stream ID from the readable streams set.
+    </span><span class="kw">pub fn </span>remove_readable(<span class="kw-2">&amp;mut </span><span class="self">self</span>, priority_key: <span class="kw-2">&amp;</span>Arc&lt;StreamPriorityKey&gt;) {
+        <span class="kw">if </span>!priority_key.readable.is_linked() {
+            <span class="kw">return</span>;
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>c = {
+            <span class="kw">let </span>ptr = Arc::as_ptr(priority_key);
+            <span class="kw">unsafe </span>{ <span class="self">self</span>.readable.cursor_mut_from_ptr(ptr) }
+        };
+
+        c.remove();
+    }
+
+    <span class="doccomment">/// Adds the stream ID to the writable streams set.
+    ///
+    /// This should also be called anytime a new stream is created, in addition
+    /// to when an existing stream becomes writable.
+    ///
+    /// If the stream was already in the list, this does nothing.
+    </span><span class="kw">pub fn </span>insert_writable(<span class="kw-2">&amp;mut </span><span class="self">self</span>, priority_key: <span class="kw-2">&amp;</span>Arc&lt;StreamPriorityKey&gt;) {
+        <span class="kw">if </span>!priority_key.writable.is_linked() {
+            <span class="self">self</span>.writable.insert(Arc::clone(priority_key));
+        }
+    }
+
+    <span class="doccomment">/// Removes the stream ID from the writable streams set.
+    ///
+    /// This should also be called anytime an existing stream stops being
+    /// writable.
+    </span><span class="kw">pub fn </span>remove_writable(<span class="kw-2">&amp;mut </span><span class="self">self</span>, priority_key: <span class="kw-2">&amp;</span>Arc&lt;StreamPriorityKey&gt;) {
+        <span class="kw">if </span>!priority_key.writable.is_linked() {
+            <span class="kw">return</span>;
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>c = {
+            <span class="kw">let </span>ptr = Arc::as_ptr(priority_key);
+            <span class="kw">unsafe </span>{ <span class="self">self</span>.writable.cursor_mut_from_ptr(ptr) }
+        };
+
+        c.remove();
+    }
+
+    <span class="doccomment">/// Adds the stream ID to the flushable streams set.
+    ///
+    /// If the stream was already in the list, this does nothing.
+    </span><span class="kw">pub fn </span>insert_flushable(<span class="kw-2">&amp;mut </span><span class="self">self</span>, priority_key: <span class="kw-2">&amp;</span>Arc&lt;StreamPriorityKey&gt;) {
+        <span class="kw">if </span>!priority_key.flushable.is_linked() {
+            <span class="self">self</span>.flushable.insert(Arc::clone(priority_key));
+        }
+    }
+
+    <span class="doccomment">/// Removes the stream ID from the flushable streams set.
+    </span><span class="kw">pub fn </span>remove_flushable(<span class="kw-2">&amp;mut </span><span class="self">self</span>, priority_key: <span class="kw-2">&amp;</span>Arc&lt;StreamPriorityKey&gt;) {
+        <span class="kw">if </span>!priority_key.flushable.is_linked() {
+            <span class="kw">return</span>;
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>c = {
+            <span class="kw">let </span>ptr = Arc::as_ptr(priority_key);
+            <span class="kw">unsafe </span>{ <span class="self">self</span>.flushable.cursor_mut_from_ptr(ptr) }
+        };
+
+        c.remove();
+    }
+
+    <span class="kw">pub fn </span>peek_flushable(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;Arc&lt;StreamPriorityKey&gt;&gt; {
+        <span class="self">self</span>.flushable.front().clone_pointer()
+    }
+
+    <span class="doccomment">/// Updates the priorities of a stream.
+    </span><span class="kw">pub fn </span>update_priority(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, old: <span class="kw-2">&amp;</span>Arc&lt;StreamPriorityKey&gt;, new: <span class="kw-2">&amp;</span>Arc&lt;StreamPriorityKey&gt;,
+    ) {
+        <span class="kw">if </span>old.readable.is_linked() {
+            <span class="self">self</span>.remove_readable(old);
+            <span class="self">self</span>.readable.insert(Arc::clone(new));
+        }
+
+        <span class="kw">if </span>old.writable.is_linked() {
+            <span class="self">self</span>.remove_writable(old);
+            <span class="self">self</span>.writable.insert(Arc::clone(new));
+        }
+
+        <span class="kw">if </span>old.flushable.is_linked() {
+            <span class="self">self</span>.remove_flushable(old);
+            <span class="self">self</span>.flushable.insert(Arc::clone(new));
+        }
+    }
+
+    <span class="doccomment">/// Adds the stream ID to the almost full streams set.
+    ///
+    /// If the stream was already in the list, this does nothing.
+    </span><span class="kw">pub fn </span>insert_almost_full(<span class="kw-2">&amp;mut </span><span class="self">self</span>, stream_id: u64) {
+        <span class="self">self</span>.almost_full.insert(stream_id);
+    }
+
+    <span class="doccomment">/// Removes the stream ID from the almost full streams set.
+    </span><span class="kw">pub fn </span>remove_almost_full(<span class="kw-2">&amp;mut </span><span class="self">self</span>, stream_id: u64) {
+        <span class="self">self</span>.almost_full.remove(<span class="kw-2">&amp;</span>stream_id);
+    }
+
+    <span class="doccomment">/// Adds the stream ID to the blocked streams set with the
+    /// given offset value.
+    ///
+    /// If the stream was already in the list, this does nothing.
+    </span><span class="kw">pub fn </span>insert_blocked(<span class="kw-2">&amp;mut </span><span class="self">self</span>, stream_id: u64, off: u64) {
+        <span class="self">self</span>.blocked.insert(stream_id, off);
+    }
+
+    <span class="doccomment">/// Removes the stream ID from the blocked streams set.
+    </span><span class="kw">pub fn </span>remove_blocked(<span class="kw-2">&amp;mut </span><span class="self">self</span>, stream_id: u64) {
+        <span class="self">self</span>.blocked.remove(<span class="kw-2">&amp;</span>stream_id);
+    }
+
+    <span class="doccomment">/// Adds the stream ID to the reset streams set with the
+    /// given error code and final size values.
+    ///
+    /// If the stream was already in the list, this does nothing.
+    </span><span class="kw">pub fn </span>insert_reset(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, stream_id: u64, error_code: u64, final_size: u64,
+    ) {
+        <span class="self">self</span>.reset.insert(stream_id, (error_code, final_size));
+    }
+
+    <span class="doccomment">/// Removes the stream ID from the reset streams set.
+    </span><span class="kw">pub fn </span>remove_reset(<span class="kw-2">&amp;mut </span><span class="self">self</span>, stream_id: u64) {
+        <span class="self">self</span>.reset.remove(<span class="kw-2">&amp;</span>stream_id);
+    }
+
+    <span class="doccomment">/// Adds the stream ID to the stopped streams set with the
+    /// given error code.
+    ///
+    /// If the stream was already in the list, this does nothing.
+    </span><span class="kw">pub fn </span>insert_stopped(<span class="kw-2">&amp;mut </span><span class="self">self</span>, stream_id: u64, error_code: u64) {
+        <span class="self">self</span>.stopped.insert(stream_id, error_code);
+    }
+
+    <span class="doccomment">/// Removes the stream ID from the stopped streams set.
+    </span><span class="kw">pub fn </span>remove_stopped(<span class="kw-2">&amp;mut </span><span class="self">self</span>, stream_id: u64) {
+        <span class="self">self</span>.stopped.remove(<span class="kw-2">&amp;</span>stream_id);
+    }
+
+    <span class="doccomment">/// Updates the peer's maximum bidirectional stream count limit.
+    </span><span class="kw">pub fn </span>update_peer_max_streams_bidi(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) {
+        <span class="self">self</span>.peer_max_streams_bidi = cmp::max(<span class="self">self</span>.peer_max_streams_bidi, v);
+    }
+
+    <span class="doccomment">/// Updates the peer's maximum unidirectional stream count limit.
+    </span><span class="kw">pub fn </span>update_peer_max_streams_uni(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: u64) {
+        <span class="self">self</span>.peer_max_streams_uni = cmp::max(<span class="self">self</span>.peer_max_streams_uni, v);
+    }
+
+    <span class="doccomment">/// Commits the new max_streams_bidi limit.
+    </span><span class="kw">pub fn </span>update_max_streams_bidi(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="self">self</span>.local_max_streams_bidi = <span class="self">self</span>.local_max_streams_bidi_next;
+    }
+
+    <span class="doccomment">/// Returns the current max_streams_bidi limit.
+    </span><span class="kw">pub fn </span>max_streams_bidi(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.local_max_streams_bidi
+    }
+
+    <span class="doccomment">/// Returns the new max_streams_bidi limit.
+    </span><span class="kw">pub fn </span>max_streams_bidi_next(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.local_max_streams_bidi_next
+    }
+
+    <span class="doccomment">/// Commits the new max_streams_uni limit.
+    </span><span class="kw">pub fn </span>update_max_streams_uni(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="self">self</span>.local_max_streams_uni = <span class="self">self</span>.local_max_streams_uni_next;
+    }
+
+    <span class="doccomment">/// Returns the new max_streams_uni limit.
+    </span><span class="kw">pub fn </span>max_streams_uni_next(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.local_max_streams_uni_next
+    }
+
+    <span class="doccomment">/// Returns the number of bidirectional streams that can be created
+    /// before the peer's stream count limit is reached.
+    </span><span class="kw">pub fn </span>peer_streams_left_bidi(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.peer_max_streams_bidi - <span class="self">self</span>.local_opened_streams_bidi
+    }
+
+    <span class="doccomment">/// Returns the number of unidirectional streams that can be created
+    /// before the peer's stream count limit is reached.
+    </span><span class="kw">pub fn </span>peer_streams_left_uni(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.peer_max_streams_uni - <span class="self">self</span>.local_opened_streams_uni
+    }
+
+    <span class="doccomment">/// Drops completed stream.
+    ///
+    /// This should only be called when Stream::is_complete() returns true for
+    /// the given stream.
+    </span><span class="kw">pub fn </span>collect(<span class="kw-2">&amp;mut </span><span class="self">self</span>, stream_id: u64, local: bool) {
+        <span class="kw">if </span>!local {
+            <span class="comment">// If the stream was created by the peer, give back a max streams
+            // credit.
+            </span><span class="kw">if </span>is_bidi(stream_id) {
+                <span class="self">self</span>.local_max_streams_bidi_next =
+                    <span class="self">self</span>.local_max_streams_bidi_next.saturating_add(<span class="number">1</span>);
+            } <span class="kw">else </span>{
+                <span class="self">self</span>.local_max_streams_uni_next =
+                    <span class="self">self</span>.local_max_streams_uni_next.saturating_add(<span class="number">1</span>);
+            }
+        }
+
+        <span class="kw">let </span>s = <span class="self">self</span>.streams.remove(<span class="kw-2">&amp;</span>stream_id).unwrap();
+
+        <span class="self">self</span>.remove_readable(<span class="kw-2">&amp;</span>s.priority_key);
+
+        <span class="self">self</span>.remove_writable(<span class="kw-2">&amp;</span>s.priority_key);
+
+        <span class="self">self</span>.remove_flushable(<span class="kw-2">&amp;</span>s.priority_key);
+
+        <span class="self">self</span>.collected.insert(stream_id);
+    }
+
+    <span class="doccomment">/// Creates an iterator over streams that have outstanding data to read.
+    </span><span class="kw">pub fn </span>readable(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; StreamIter {
+        StreamIter {
+            streams: <span class="self">self</span>.readable.iter().map(|s| s.id).collect(),
+            index: <span class="number">0</span>,
+        }
+    }
+
+    <span class="doccomment">/// Creates an iterator over streams that can be written to.
+    </span><span class="kw">pub fn </span>writable(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; StreamIter {
+        StreamIter {
+            streams: <span class="self">self</span>.writable.iter().map(|s| s.id).collect(),
+            index: <span class="number">0</span>,
+        }
+    }
+
+    <span class="doccomment">/// Creates an iterator over streams that need to send MAX_STREAM_DATA.
+    </span><span class="kw">pub fn </span>almost_full(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; StreamIter {
+        StreamIter::from(<span class="kw-2">&amp;</span><span class="self">self</span>.almost_full)
+    }
+
+    <span class="doccomment">/// Creates an iterator over streams that need to send STREAM_DATA_BLOCKED.
+    </span><span class="kw">pub fn </span>blocked(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; hash_map::Iter&lt;u64, u64&gt; {
+        <span class="self">self</span>.blocked.iter()
+    }
+
+    <span class="doccomment">/// Creates an iterator over streams that need to send RESET_STREAM.
+    </span><span class="kw">pub fn </span>reset(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; hash_map::Iter&lt;u64, (u64, u64)&gt; {
+        <span class="self">self</span>.reset.iter()
+    }
+
+    <span class="doccomment">/// Creates an iterator over streams that need to send STOP_SENDING.
+    </span><span class="kw">pub fn </span>stopped(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; hash_map::Iter&lt;u64, u64&gt; {
+        <span class="self">self</span>.stopped.iter()
+    }
+
+    <span class="doccomment">/// Returns true if the stream has been collected.
+    </span><span class="kw">pub fn </span>is_collected(<span class="kw-2">&amp;</span><span class="self">self</span>, stream_id: u64) -&gt; bool {
+        <span class="self">self</span>.collected.contains(<span class="kw-2">&amp;</span>stream_id)
+    }
+
+    <span class="doccomment">/// Returns true if there are any streams that have data to write.
+    </span><span class="kw">pub fn </span>has_flushable(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        !<span class="self">self</span>.flushable.is_empty()
+    }
+
+    <span class="doccomment">/// Returns true if there are any streams that have data to read.
+    </span><span class="kw">pub fn </span>has_readable(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        !<span class="self">self</span>.readable.is_empty()
+    }
+
+    <span class="doccomment">/// Returns true if there are any streams that need to update the local
+    /// flow control limit.
+    </span><span class="kw">pub fn </span>has_almost_full(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        !<span class="self">self</span>.almost_full.is_empty()
+    }
+
+    <span class="doccomment">/// Returns true if there are any streams that are blocked.
+    </span><span class="kw">pub fn </span>has_blocked(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        !<span class="self">self</span>.blocked.is_empty()
+    }
+
+    <span class="doccomment">/// Returns true if there are any streams that are reset.
+    </span><span class="kw">pub fn </span>has_reset(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        !<span class="self">self</span>.reset.is_empty()
+    }
+
+    <span class="doccomment">/// Returns true if there are any streams that need to send STOP_SENDING.
+    </span><span class="kw">pub fn </span>has_stopped(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        !<span class="self">self</span>.stopped.is_empty()
+    }
+
+    <span class="doccomment">/// Returns true if the max bidirectional streams count needs to be updated
+    /// by sending a MAX_STREAMS frame to the peer.
+    </span><span class="kw">pub fn </span>should_update_max_streams_bidi(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.local_max_streams_bidi_next != <span class="self">self</span>.local_max_streams_bidi &amp;&amp;
+            <span class="self">self</span>.local_max_streams_bidi_next / <span class="number">2 </span>&gt;
+                <span class="self">self</span>.local_max_streams_bidi - <span class="self">self</span>.peer_opened_streams_bidi
+    }
+
+    <span class="doccomment">/// Returns true if the max unidirectional streams count needs to be updated
+    /// by sending a MAX_STREAMS frame to the peer.
+    </span><span class="kw">pub fn </span>should_update_max_streams_uni(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.local_max_streams_uni_next != <span class="self">self</span>.local_max_streams_uni &amp;&amp;
+            <span class="self">self</span>.local_max_streams_uni_next / <span class="number">2 </span>&gt;
+                <span class="self">self</span>.local_max_streams_uni - <span class="self">self</span>.peer_opened_streams_uni
+    }
+
+    <span class="doccomment">/// Returns the number of active streams in the map.
+    </span><span class="attr">#[cfg(test)]
+    </span><span class="kw">pub fn </span>len(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.streams.len()
+    }
+}
+
+<span class="doccomment">/// A QUIC stream.
+</span><span class="kw">pub struct </span>Stream {
+    <span class="doccomment">/// Receive-side stream buffer.
+    </span><span class="kw">pub </span>recv: recv_buf::RecvBuf,
+
+    <span class="doccomment">/// Send-side stream buffer.
+    </span><span class="kw">pub </span>send: send_buf::SendBuf,
+
+    <span class="kw">pub </span>send_lowat: usize,
+
+    <span class="doccomment">/// Whether the stream is bidirectional.
+    </span><span class="kw">pub </span>bidi: bool,
+
+    <span class="doccomment">/// Whether the stream was created by the local endpoint.
+    </span><span class="kw">pub </span>local: bool,
+
+    <span class="doccomment">/// The stream's urgency (lower is better). Default is `DEFAULT_URGENCY`.
+    </span><span class="kw">pub </span>urgency: u8,
+
+    <span class="doccomment">/// Whether the stream can be flushed incrementally. Default is `true`.
+    </span><span class="kw">pub </span>incremental: bool,
+
+    <span class="kw">pub </span>priority_key: Arc&lt;StreamPriorityKey&gt;,
+}
+
+<span class="kw">impl </span>Stream {
+    <span class="doccomment">/// Creates a new stream with the given flow control limits.
+    </span><span class="kw">pub fn </span>new(
+        id: u64, max_rx_data: u64, max_tx_data: u64, bidi: bool, local: bool,
+        max_window: u64,
+    ) -&gt; Stream {
+        <span class="kw">let </span>priority_key = Arc::new(StreamPriorityKey {
+            id,
+            ..Default::default()
+        });
+
+        Stream {
+            recv: recv_buf::RecvBuf::new(max_rx_data, max_window),
+            send: send_buf::SendBuf::new(max_tx_data),
+            send_lowat: <span class="number">1</span>,
+            bidi,
+            local,
+            urgency: priority_key.urgency,
+            incremental: priority_key.incremental,
+            priority_key,
+        }
+    }
+
+    <span class="doccomment">/// Returns true if the stream has data to read.
+    </span><span class="kw">pub fn </span>is_readable(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.recv.ready()
+    }
+
+    <span class="doccomment">/// Returns true if the stream has enough flow control capacity to be
+    /// written to, and is not finished.
+    </span><span class="kw">pub fn </span>is_writable(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        !<span class="self">self</span>.send.is_shutdown() &amp;&amp;
+            !<span class="self">self</span>.send.is_fin() &amp;&amp;
+            (<span class="self">self</span>.send.off_back() + <span class="self">self</span>.send_lowat <span class="kw">as </span>u64) &lt;
+                <span class="self">self</span>.send.max_off()
+    }
+
+    <span class="doccomment">/// Returns true if the stream has data to send and is allowed to send at
+    /// least some of it.
+    </span><span class="kw">pub fn </span>is_flushable(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="kw">let </span>off_front = <span class="self">self</span>.send.off_front();
+
+        !<span class="self">self</span>.send.is_empty() &amp;&amp;
+            off_front &lt; <span class="self">self</span>.send.off_back() &amp;&amp;
+            off_front &lt; <span class="self">self</span>.send.max_off()
+    }
+
+    <span class="doccomment">/// Returns true if the stream is complete.
+    ///
+    /// For bidirectional streams this happens when both the receive and send
+    /// sides are complete. That is when all incoming data has been read by the
+    /// application, and when all outgoing data has been acked by the peer.
+    ///
+    /// For unidirectional streams this happens when either the receive or send
+    /// side is complete, depending on whether the stream was created locally
+    /// or not.
+    </span><span class="kw">pub fn </span>is_complete(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="kw">match </span>(<span class="self">self</span>.bidi, <span class="self">self</span>.local) {
+            <span class="comment">// For bidirectional streams we need to check both receive and send
+            // sides for completion.
+            </span>(<span class="bool-val">true</span>, <span class="kw">_</span>) =&gt; <span class="self">self</span>.recv.is_fin() &amp;&amp; <span class="self">self</span>.send.is_complete(),
+
+            <span class="comment">// For unidirectional streams generated locally, we only need to
+            // check the send side for completion.
+            </span>(<span class="bool-val">false</span>, <span class="bool-val">true</span>) =&gt; <span class="self">self</span>.send.is_complete(),
+
+            <span class="comment">// For unidirectional streams generated by the peer, we only need
+            // to check the receive side for completion.
+            </span>(<span class="bool-val">false</span>, <span class="bool-val">false</span>) =&gt; <span class="self">self</span>.recv.is_fin(),
+        }
+    }
+}
+
+<span class="doccomment">/// Returns true if the stream was created locally.
+</span><span class="kw">pub fn </span>is_local(stream_id: u64, is_server: bool) -&gt; bool {
+    (stream_id &amp; <span class="number">0x1</span>) == (is_server <span class="kw">as </span>u64)
+}
+
+<span class="doccomment">/// Returns true if the stream is bidirectional.
+</span><span class="kw">pub fn </span>is_bidi(stream_id: u64) -&gt; bool {
+    (stream_id &amp; <span class="number">0x2</span>) == <span class="number">0
+</span>}
+
+<span class="attr">#[derive(Clone, Debug)]
+</span><span class="kw">pub struct </span>StreamPriorityKey {
+    <span class="kw">pub </span>urgency: u8,
+    <span class="kw">pub </span>incremental: bool,
+    <span class="kw">pub </span>id: u64,
+
+    <span class="kw">pub </span>readable: RBTreeAtomicLink,
+    <span class="kw">pub </span>writable: RBTreeAtomicLink,
+    <span class="kw">pub </span>flushable: RBTreeAtomicLink,
+}
+
+<span class="kw">impl </span>Default <span class="kw">for </span>StreamPriorityKey {
+    <span class="kw">fn </span>default() -&gt; <span class="self">Self </span>{
+        <span class="self">Self </span>{
+            urgency: DEFAULT_URGENCY,
+            incremental: <span class="bool-val">true</span>,
+            id: Default::default(),
+            readable: Default::default(),
+            writable: Default::default(),
+            flushable: Default::default(),
+        }
+    }
+}
+
+<span class="kw">impl </span>PartialEq <span class="kw">for </span>StreamPriorityKey {
+    <span class="kw">fn </span>eq(<span class="kw-2">&amp;</span><span class="self">self</span>, other: <span class="kw-2">&amp;</span><span class="self">Self</span>) -&gt; bool {
+        <span class="self">self</span>.id == other.id
+    }
+}
+
+<span class="kw">impl </span>Eq <span class="kw">for </span>StreamPriorityKey {}
+
+<span class="kw">impl </span>PartialOrd <span class="kw">for </span>StreamPriorityKey {
+    <span class="comment">// Priority ordering is complex, disable Clippy warning.
+    </span><span class="attr">#[allow(clippy::non_canonical_partial_ord_impl)]
+    </span><span class="kw">fn </span>partial_cmp(<span class="kw-2">&amp;</span><span class="self">self</span>, other: <span class="kw-2">&amp;</span><span class="self">Self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;std::cmp::Ordering&gt; {
+        <span class="comment">// Ignore priority if ID matches.
+        </span><span class="kw">if </span><span class="self">self</span>.id == other.id {
+            <span class="kw">return </span><span class="prelude-val">Some</span>(std::cmp::Ordering::Equal);
+        }
+
+        <span class="comment">// First, order by urgency...
+        </span><span class="kw">if </span><span class="self">self</span>.urgency != other.urgency {
+            <span class="kw">return </span><span class="self">self</span>.urgency.partial_cmp(<span class="kw-2">&amp;</span>other.urgency);
+        }
+
+        <span class="comment">// ...when the urgency is the same, and both are not incremental, order
+        // by stream ID...
+        </span><span class="kw">if </span>!<span class="self">self</span>.incremental &amp;&amp; !other.incremental {
+            <span class="kw">return </span><span class="self">self</span>.id.partial_cmp(<span class="kw-2">&amp;</span>other.id);
+        }
+
+        <span class="comment">// ...non-incremental takes priority over incremental...
+        </span><span class="kw">if </span><span class="self">self</span>.incremental &amp;&amp; !other.incremental {
+            <span class="kw">return </span><span class="prelude-val">Some</span>(std::cmp::Ordering::Greater);
+        }
+        <span class="kw">if </span>!<span class="self">self</span>.incremental &amp;&amp; other.incremental {
+            <span class="kw">return </span><span class="prelude-val">Some</span>(std::cmp::Ordering::Less);
+        }
+
+        <span class="comment">// ...finally, when both are incremental, `other` takes precedence (so
+        // `self` is always sorted after other same-urgency incremental
+        // entries).
+        </span><span class="prelude-val">Some</span>(std::cmp::Ordering::Greater)
+    }
+}
+
+<span class="kw">impl </span>Ord <span class="kw">for </span>StreamPriorityKey {
+    <span class="kw">fn </span>cmp(<span class="kw-2">&amp;</span><span class="self">self</span>, other: <span class="kw-2">&amp;</span><span class="self">Self</span>) -&gt; std::cmp::Ordering {
+        <span class="comment">// `partial_cmp()` never returns `None`, so this should be safe.
+        </span><span class="self">self</span>.partial_cmp(other).unwrap()
+    }
+}
+
+<span class="macro">intrusive_adapter!</span>(<span class="kw">pub </span>StreamWritablePriorityAdapter = Arc&lt;StreamPriorityKey&gt;: StreamPriorityKey { writable: RBTreeAtomicLink });
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; KeyAdapter&lt;<span class="lifetime">'a</span>&gt; <span class="kw">for </span>StreamWritablePriorityAdapter {
+    <span class="kw">type </span>Key = StreamPriorityKey;
+
+    <span class="kw">fn </span>get_key(<span class="kw-2">&amp;</span><span class="self">self</span>, s: <span class="kw-2">&amp;</span>StreamPriorityKey) -&gt; <span class="self">Self</span>::Key {
+        s.clone()
+    }
+}
+
+<span class="macro">intrusive_adapter!</span>(<span class="kw">pub </span>StreamReadablePriorityAdapter = Arc&lt;StreamPriorityKey&gt;: StreamPriorityKey { readable: RBTreeAtomicLink });
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; KeyAdapter&lt;<span class="lifetime">'a</span>&gt; <span class="kw">for </span>StreamReadablePriorityAdapter {
+    <span class="kw">type </span>Key = StreamPriorityKey;
+
+    <span class="kw">fn </span>get_key(<span class="kw-2">&amp;</span><span class="self">self</span>, s: <span class="kw-2">&amp;</span>StreamPriorityKey) -&gt; <span class="self">Self</span>::Key {
+        s.clone()
+    }
+}
+
+<span class="macro">intrusive_adapter!</span>(<span class="kw">pub </span>StreamFlushablePriorityAdapter = Arc&lt;StreamPriorityKey&gt;: StreamPriorityKey { flushable: RBTreeAtomicLink });
+
+<span class="kw">impl</span>&lt;<span class="lifetime">'a</span>&gt; KeyAdapter&lt;<span class="lifetime">'a</span>&gt; <span class="kw">for </span>StreamFlushablePriorityAdapter {
+    <span class="kw">type </span>Key = StreamPriorityKey;
+
+    <span class="kw">fn </span>get_key(<span class="kw-2">&amp;</span><span class="self">self</span>, s: <span class="kw-2">&amp;</span>StreamPriorityKey) -&gt; <span class="self">Self</span>::Key {
+        s.clone()
+    }
+}
+
+<span class="doccomment">/// An iterator over QUIC streams.
+</span><span class="attr">#[derive(Default)]
+</span><span class="kw">pub struct </span>StreamIter {
+    streams: SmallVec&lt;[u64; <span class="number">8</span>]&gt;,
+    index: usize,
+}
+
+<span class="kw">impl </span>StreamIter {
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>from(streams: <span class="kw-2">&amp;</span>StreamIdHashSet) -&gt; <span class="self">Self </span>{
+        StreamIter {
+            streams: streams.iter().copied().collect(),
+            index: <span class="number">0</span>,
+        }
+    }
+}
+
+<span class="kw">impl </span>Iterator <span class="kw">for </span>StreamIter {
+    <span class="kw">type </span>Item = u64;
+
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>next(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="self">Self</span>::Item&gt; {
+        <span class="kw">let </span>v = <span class="self">self</span>.streams.get(<span class="self">self</span>.index)<span class="question-mark">?</span>;
+        <span class="self">self</span>.index += <span class="number">1</span>;
+        <span class="prelude-val">Some</span>(<span class="kw-2">*</span>v)
+    }
+}
+
+<span class="kw">impl </span>ExactSizeIterator <span class="kw">for </span>StreamIter {
+    <span class="attr">#[inline]
+    </span><span class="kw">fn </span>len(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.streams.len() - <span class="self">self</span>.index
+    }
+}
+
+<span class="doccomment">/// Buffer holding data at a specific offset.
+///
+/// The data is stored in a `Vec&lt;u8&gt;` in such a way that it can be shared
+/// between multiple `RangeBuf` objects.
+///
+/// Each `RangeBuf` will have its own view of that buffer, where the `start`
+/// value indicates the initial offset within the `Vec`, and `len` indicates the
+/// number of bytes, starting from `start` that are included.
+///
+/// In addition, `pos` indicates the current offset within the `Vec`, starting
+/// from the very beginning of the `Vec`.
+///
+/// Finally, `off` is the starting offset for the specific `RangeBuf` within the
+/// stream the buffer belongs to.
+</span><span class="attr">#[derive(Clone, Debug, Default, Eq)]
+</span><span class="kw">pub struct </span>RangeBuf {
+    <span class="doccomment">/// The internal buffer holding the data.
+    ///
+    /// To avoid needless allocations when a RangeBuf is split, this field is
+    /// reference-counted and can be shared between multiple RangeBuf objects,
+    /// and sliced using the `start` and `len` values.
+    </span>data: Arc&lt;Vec&lt;u8&gt;&gt;,
+
+    <span class="doccomment">/// The initial offset within the internal buffer.
+    </span>start: usize,
+
+    <span class="doccomment">/// The current offset within the internal buffer.
+    </span>pos: usize,
+
+    <span class="doccomment">/// The number of bytes in the buffer, from the initial offset.
+    </span>len: usize,
+
+    <span class="doccomment">/// The offset of the buffer within a stream.
+    </span>off: u64,
+
+    <span class="doccomment">/// Whether this contains the final byte in the stream.
+    </span>fin: bool,
+}
+
+<span class="kw">impl </span>RangeBuf {
+    <span class="doccomment">/// Creates a new `RangeBuf` from the given slice.
+    </span><span class="kw">pub fn </span>from(buf: <span class="kw-2">&amp;</span>[u8], off: u64, fin: bool) -&gt; RangeBuf {
+        RangeBuf {
+            data: Arc::new(Vec::from(buf)),
+            start: <span class="number">0</span>,
+            pos: <span class="number">0</span>,
+            len: buf.len(),
+            off,
+            fin,
+        }
+    }
+
+    <span class="doccomment">/// Returns whether `self` holds the final offset in the stream.
+    </span><span class="kw">pub fn </span>fin(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.fin
+    }
+
+    <span class="doccomment">/// Returns the starting offset of `self`.
+    </span><span class="kw">pub fn </span>off(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        (<span class="self">self</span>.off - <span class="self">self</span>.start <span class="kw">as </span>u64) + <span class="self">self</span>.pos <span class="kw">as </span>u64
+    }
+
+    <span class="doccomment">/// Returns the final offset of `self`.
+    </span><span class="kw">pub fn </span>max_off(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.off() + <span class="self">self</span>.len() <span class="kw">as </span>u64
+    }
+
+    <span class="doccomment">/// Returns the length of `self`.
+    </span><span class="kw">pub fn </span>len(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.len - (<span class="self">self</span>.pos - <span class="self">self</span>.start)
+    }
+
+    <span class="doccomment">/// Returns true if `self` has a length of zero bytes.
+    </span><span class="kw">pub fn </span>is_empty(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.len() == <span class="number">0
+    </span>}
+
+    <span class="doccomment">/// Consumes the starting `count` bytes of `self`.
+    </span><span class="kw">pub fn </span>consume(<span class="kw-2">&amp;mut </span><span class="self">self</span>, count: usize) {
+        <span class="self">self</span>.pos += count;
+    }
+
+    <span class="doccomment">/// Splits the buffer into two at the given index.
+    </span><span class="kw">pub fn </span>split_off(<span class="kw-2">&amp;mut </span><span class="self">self</span>, at: usize) -&gt; RangeBuf {
+        <span class="macro">assert!</span>(
+            at &lt;= <span class="self">self</span>.len,
+            <span class="string">"`at` split index (is {}) should be &lt;= len (is {})"</span>,
+            at,
+            <span class="self">self</span>.len
+        );
+
+        <span class="kw">let </span>buf = RangeBuf {
+            data: <span class="self">self</span>.data.clone(),
+            start: <span class="self">self</span>.start + at,
+            pos: cmp::max(<span class="self">self</span>.pos, <span class="self">self</span>.start + at),
+            len: <span class="self">self</span>.len - at,
+            off: <span class="self">self</span>.off + at <span class="kw">as </span>u64,
+            fin: <span class="self">self</span>.fin,
+        };
+
+        <span class="self">self</span>.pos = cmp::min(<span class="self">self</span>.pos, <span class="self">self</span>.start + at);
+        <span class="self">self</span>.len = at;
+        <span class="self">self</span>.fin = <span class="bool-val">false</span>;
+
+        buf
+    }
+}
+
+<span class="kw">impl </span>std::ops::Deref <span class="kw">for </span>RangeBuf {
+    <span class="kw">type </span>Target = [u8];
+
+    <span class="kw">fn </span>deref(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>[u8] {
+        <span class="kw-2">&amp;</span><span class="self">self</span>.data[<span class="self">self</span>.pos..<span class="self">self</span>.start + <span class="self">self</span>.len]
+    }
+}
+
+<span class="kw">impl </span>Ord <span class="kw">for </span>RangeBuf {
+    <span class="kw">fn </span>cmp(<span class="kw-2">&amp;</span><span class="self">self</span>, other: <span class="kw-2">&amp;</span>RangeBuf) -&gt; cmp::Ordering {
+        <span class="comment">// Invert ordering to implement min-heap.
+        </span><span class="self">self</span>.off.cmp(<span class="kw-2">&amp;</span>other.off).reverse()
+    }
+}
+
+<span class="kw">impl </span>PartialOrd <span class="kw">for </span>RangeBuf {
+    <span class="kw">fn </span>partial_cmp(<span class="kw-2">&amp;</span><span class="self">self</span>, other: <span class="kw-2">&amp;</span>RangeBuf) -&gt; <span class="prelude-ty">Option</span>&lt;cmp::Ordering&gt; {
+        <span class="prelude-val">Some</span>(<span class="self">self</span>.cmp(other))
+    }
+}
+
+<span class="kw">impl </span>PartialEq <span class="kw">for </span>RangeBuf {
+    <span class="kw">fn </span>eq(<span class="kw-2">&amp;</span><span class="self">self</span>, other: <span class="kw-2">&amp;</span>RangeBuf) -&gt; bool {
+        <span class="self">self</span>.off == other.off
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>recv_flow_control() {
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">15</span>, <span class="number">0</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert!</span>(!stream.recv.almost_full());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"world"</span>, <span class="number">5</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>third = RangeBuf::from(<span class="string">b"something"</span>, <span class="number">10</span>, <span class="bool-val">false</span>);
+
+        <span class="macro">assert_eq!</span>(stream.recv.write(second), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(stream.recv.write(first), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert!</span>(!stream.recv.almost_full());
+
+        <span class="macro">assert_eq!</span>(stream.recv.write(third), <span class="prelude-val">Err</span>(Error::FlowControl));
+
+        <span class="kw">let </span>(len, fin) = stream.recv.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"helloworld"</span>);
+        <span class="macro">assert!</span>(!fin);
+
+        <span class="macro">assert!</span>(stream.recv.almost_full());
+
+        stream.recv.update_max_data(std::time::Instant::now());
+        <span class="macro">assert_eq!</span>(stream.recv.max_data_next(), <span class="number">25</span>);
+        <span class="macro">assert!</span>(!stream.recv.almost_full());
+
+        <span class="kw">let </span>third = RangeBuf::from(<span class="string">b"something"</span>, <span class="number">10</span>, <span class="bool-val">false</span>);
+        <span class="macro">assert_eq!</span>(stream.recv.write(third), <span class="prelude-val">Ok</span>(()));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>recv_past_fin() {
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">15</span>, <span class="number">0</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert!</span>(!stream.recv.almost_full());
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">0</span>, <span class="bool-val">true</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"world"</span>, <span class="number">5</span>, <span class="bool-val">false</span>);
+
+        <span class="macro">assert_eq!</span>(stream.recv.write(first), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(stream.recv.write(second), <span class="prelude-val">Err</span>(Error::FinalSize));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>recv_fin_dup() {
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">15</span>, <span class="number">0</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert!</span>(!stream.recv.almost_full());
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">0</span>, <span class="bool-val">true</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">0</span>, <span class="bool-val">true</span>);
+
+        <span class="macro">assert_eq!</span>(stream.recv.write(first), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(stream.recv.write(second), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="kw">let </span>(len, fin) = stream.recv.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"hello"</span>);
+        <span class="macro">assert!</span>(fin);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>recv_fin_change() {
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">15</span>, <span class="number">0</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert!</span>(!stream.recv.almost_full());
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">0</span>, <span class="bool-val">true</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"world"</span>, <span class="number">5</span>, <span class="bool-val">true</span>);
+
+        <span class="macro">assert_eq!</span>(stream.recv.write(second), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(stream.recv.write(first), <span class="prelude-val">Err</span>(Error::FinalSize));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>recv_fin_lower_than_received() {
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">15</span>, <span class="number">0</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert!</span>(!stream.recv.almost_full());
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">0</span>, <span class="bool-val">true</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"world"</span>, <span class="number">5</span>, <span class="bool-val">false</span>);
+
+        <span class="macro">assert_eq!</span>(stream.recv.write(second), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(stream.recv.write(first), <span class="prelude-val">Err</span>(Error::FinalSize));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>recv_fin_flow_control() {
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">15</span>, <span class="number">0</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert!</span>(!stream.recv.almost_full());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"world"</span>, <span class="number">5</span>, <span class="bool-val">true</span>);
+
+        <span class="macro">assert_eq!</span>(stream.recv.write(first), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(stream.recv.write(second), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>(len, fin) = stream.recv.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"helloworld"</span>);
+        <span class="macro">assert!</span>(fin);
+
+        <span class="macro">assert!</span>(!stream.recv.almost_full());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>recv_fin_reset_mismatch() {
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">15</span>, <span class="number">0</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert!</span>(!stream.recv.almost_full());
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">0</span>, <span class="bool-val">true</span>);
+
+        <span class="macro">assert_eq!</span>(stream.recv.write(first), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(stream.recv.reset(<span class="number">0</span>, <span class="number">10</span>), <span class="prelude-val">Err</span>(Error::FinalSize));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>recv_reset_dup() {
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">15</span>, <span class="number">0</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert!</span>(!stream.recv.almost_full());
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+
+        <span class="macro">assert_eq!</span>(stream.recv.write(first), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(stream.recv.reset(<span class="number">0</span>, <span class="number">5</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(stream.recv.reset(<span class="number">0</span>, <span class="number">5</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>recv_reset_change() {
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">15</span>, <span class="number">0</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert!</span>(!stream.recv.almost_full());
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+
+        <span class="macro">assert_eq!</span>(stream.recv.write(first), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(stream.recv.reset(<span class="number">0</span>, <span class="number">5</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(stream.recv.reset(<span class="number">0</span>, <span class="number">10</span>), <span class="prelude-val">Err</span>(Error::FinalSize));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>recv_reset_lower_than_received() {
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">15</span>, <span class="number">0</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert!</span>(!stream.recv.almost_full());
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+
+        <span class="macro">assert_eq!</span>(stream.recv.write(first), <span class="prelude-val">Ok</span>(()));
+        <span class="macro">assert_eq!</span>(stream.recv.reset(<span class="number">0</span>, <span class="number">4</span>), <span class="prelude-val">Err</span>(Error::FinalSize));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>send_flow_control() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">25</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">0</span>, <span class="number">15</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+
+        <span class="kw">let </span>first = <span class="string">b"hello"</span>;
+        <span class="kw">let </span>second = <span class="string">b"world"</span>;
+        <span class="kw">let </span>third = <span class="string">b"something"</span>;
+
+        <span class="macro">assert!</span>(stream.send.write(first, <span class="bool-val">false</span>).is_ok());
+        <span class="macro">assert!</span>(stream.send.write(second, <span class="bool-val">false</span>).is_ok());
+        <span class="macro">assert!</span>(stream.send.write(third, <span class="bool-val">false</span>).is_ok());
+
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">0</span>);
+
+        <span class="kw">let </span>(written, fin) = stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">25</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">15</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"helloworldsomet"</span>);
+
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">15</span>);
+
+        <span class="kw">let </span>(written, fin) = stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">25</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">0</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b""</span>);
+
+        stream.send.retransmit(<span class="number">0</span>, <span class="number">15</span>);
+
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">0</span>);
+
+        <span class="kw">let </span>(written, fin) = stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">10</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">10</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"helloworld"</span>);
+
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">10</span>);
+
+        <span class="kw">let </span>(written, fin) = stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">10</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">5</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"somet"</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>send_past_fin() {
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">0</span>, <span class="number">15</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+
+        <span class="kw">let </span>first = <span class="string">b"hello"</span>;
+        <span class="kw">let </span>second = <span class="string">b"world"</span>;
+        <span class="kw">let </span>third = <span class="string">b"third"</span>;
+
+        <span class="macro">assert_eq!</span>(stream.send.write(first, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+
+        <span class="macro">assert_eq!</span>(stream.send.write(second, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert!</span>(stream.send.is_fin());
+
+        <span class="macro">assert_eq!</span>(stream.send.write(third, <span class="bool-val">false</span>), <span class="prelude-val">Err</span>(Error::FinalSize));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>send_fin_dup() {
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">0</span>, <span class="number">15</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"hello"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert!</span>(stream.send.is_fin());
+
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b""</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+        <span class="macro">assert!</span>(stream.send.is_fin());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>send_undo_fin() {
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">0</span>, <span class="number">15</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"hello"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert!</span>(stream.send.is_fin());
+
+        <span class="macro">assert_eq!</span>(
+            stream.send.write(<span class="string">b"helloworld"</span>, <span class="bool-val">true</span>),
+            <span class="prelude-val">Err</span>(Error::FinalSize)
+        );
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>send_fin_max_data_match() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">15</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">0</span>, <span class="number">15</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+
+        <span class="kw">let </span>slice = <span class="string">b"hellohellohello"</span>;
+
+        <span class="macro">assert!</span>(stream.send.write(slice, <span class="bool-val">true</span>).is_ok());
+
+        <span class="kw">let </span>(written, fin) = stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">15</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">15</span>);
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], slice);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>send_fin_zero_length() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">5</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">0</span>, <span class="number">15</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b""</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+        <span class="macro">assert!</span>(stream.send.is_fin());
+
+        <span class="kw">let </span>(written, fin) = stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">5</span>);
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"hello"</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>send_ack() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">5</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">0</span>, <span class="number">15</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"world"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b""</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+        <span class="macro">assert!</span>(stream.send.is_fin());
+
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">0</span>);
+
+        <span class="kw">let </span>(written, fin) = stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">5</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"hello"</span>);
+
+        stream.send.ack_and_drop(<span class="number">0</span>, <span class="number">5</span>);
+
+        stream.send.retransmit(<span class="number">0</span>, <span class="number">5</span>);
+
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">5</span>);
+
+        <span class="kw">let </span>(written, fin) = stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">5</span>);
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"world"</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>send_ack_reordering() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">5</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">0</span>, <span class="number">15</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"world"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b""</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+        <span class="macro">assert!</span>(stream.send.is_fin());
+
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">0</span>);
+
+        <span class="kw">let </span>(written, fin) = stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">5</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"hello"</span>);
+
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">5</span>);
+
+        <span class="kw">let </span>(written, fin) = stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">1</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">1</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"w"</span>);
+
+        stream.send.ack_and_drop(<span class="number">5</span>, <span class="number">1</span>);
+        stream.send.ack_and_drop(<span class="number">0</span>, <span class="number">5</span>);
+
+        stream.send.retransmit(<span class="number">0</span>, <span class="number">5</span>);
+        stream.send.retransmit(<span class="number">5</span>, <span class="number">1</span>);
+
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">6</span>);
+
+        <span class="kw">let </span>(written, fin) = stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">4</span>);
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"orld"</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>recv_data_below_off() {
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">15</span>, <span class="number">0</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+
+        <span class="macro">assert_eq!</span>(stream.recv.write(first), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">10</span>];
+
+        <span class="kw">let </span>(len, fin) = stream.recv.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"hello"</span>);
+        <span class="macro">assert!</span>(!fin);
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"elloworld"</span>, <span class="number">1</span>, <span class="bool-val">true</span>);
+        <span class="macro">assert_eq!</span>(stream.recv.write(first), <span class="prelude-val">Ok</span>(()));
+
+        <span class="kw">let </span>(len, fin) = stream.recv.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"world"</span>);
+        <span class="macro">assert!</span>(fin);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_complete() {
+        <span class="kw">let </span><span class="kw-2">mut </span>stream =
+            Stream::new(<span class="number">0</span>, <span class="number">30</span>, <span class="number">30</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"world"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+
+        <span class="macro">assert!</span>(!stream.send.is_complete());
+        <span class="macro">assert!</span>(!stream.send.is_fin());
+
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b""</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+
+        <span class="macro">assert!</span>(!stream.send.is_complete());
+        <span class="macro">assert!</span>(stream.send.is_fin());
+
+        <span class="kw">let </span>buf = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">0</span>, <span class="bool-val">true</span>);
+        <span class="macro">assert!</span>(stream.recv.write(buf).is_ok());
+        <span class="macro">assert!</span>(!stream.recv.is_fin());
+
+        stream.send.ack(<span class="number">6</span>, <span class="number">4</span>);
+        <span class="macro">assert!</span>(!stream.send.is_complete());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">2</span>];
+        <span class="macro">assert_eq!</span>(stream.recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>((<span class="number">2</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert!</span>(!stream.recv.is_fin());
+
+        stream.send.ack(<span class="number">1</span>, <span class="number">5</span>);
+        <span class="macro">assert!</span>(!stream.send.is_complete());
+
+        stream.send.ack(<span class="number">0</span>, <span class="number">1</span>);
+        <span class="macro">assert!</span>(stream.send.is_complete());
+
+        <span class="macro">assert!</span>(!stream.is_complete());
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">3</span>];
+        <span class="macro">assert_eq!</span>(stream.recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>((<span class="number">3</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert!</span>(stream.recv.is_fin());
+
+        <span class="macro">assert!</span>(stream.is_complete());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>send_fin_zero_length_output() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">5</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">0</span>, <span class="number">15</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">0</span>);
+        <span class="macro">assert!</span>(!stream.send.is_fin());
+
+        <span class="kw">let </span>(written, fin) = stream.send.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">5</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"hello"</span>);
+
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b""</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+        <span class="macro">assert!</span>(stream.send.is_fin());
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">5</span>);
+
+        <span class="kw">let </span>(written, fin) = stream.send.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">0</span>);
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b""</span>);
+    }
+
+    <span class="kw">fn </span>stream_send_ready(stream: <span class="kw-2">&amp;</span>Stream) -&gt; bool {
+        !stream.send.is_empty() &amp;&amp;
+            stream.send.off_front() &lt; stream.send.off_back()
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>send_emit() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">5</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">0</span>, <span class="number">20</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"world"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"olleh"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"dlrow"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(stream.send.bufs_count(), <span class="number">4</span>);
+
+        <span class="macro">assert!</span>(stream.is_flushable());
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">4</span>]), <span class="prelude-val">Ok</span>((<span class="number">4</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">4</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">4</span>], <span class="string">b"hell"</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">4</span>]), <span class="prelude-val">Ok</span>((<span class="number">4</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">8</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">4</span>], <span class="string">b"owor"</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">2</span>]), <span class="prelude-val">Ok</span>((<span class="number">2</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">2</span>], <span class="string">b"ld"</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">1</span>]), <span class="prelude-val">Ok</span>((<span class="number">1</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">11</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">1</span>], <span class="string">b"o"</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">16</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">5</span>], <span class="string">b"llehd"</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]), <span class="prelude-val">Ok</span>((<span class="number">4</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">20</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">4</span>], <span class="string">b"lrow"</span>);
+
+        <span class="macro">assert!</span>(!stream.is_flushable());
+
+        <span class="macro">assert!</span>(!stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]), <span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">20</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>send_emit_ack() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">5</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">0</span>, <span class="number">20</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"world"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"olleh"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"dlrow"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(stream.send.bufs_count(), <span class="number">4</span>);
+
+        <span class="macro">assert!</span>(stream.is_flushable());
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">4</span>]), <span class="prelude-val">Ok</span>((<span class="number">4</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">4</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">4</span>], <span class="string">b"hell"</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">4</span>]), <span class="prelude-val">Ok</span>((<span class="number">4</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">8</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">4</span>], <span class="string">b"owor"</span>);
+
+        stream.send.ack_and_drop(<span class="number">0</span>, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(stream.send.bufs_count(), <span class="number">3</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">2</span>]), <span class="prelude-val">Ok</span>((<span class="number">2</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">2</span>], <span class="string">b"ld"</span>);
+
+        stream.send.ack_and_drop(<span class="number">7</span>, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(stream.send.bufs_count(), <span class="number">3</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">1</span>]), <span class="prelude-val">Ok</span>((<span class="number">1</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">11</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">1</span>], <span class="string">b"o"</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">16</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">5</span>], <span class="string">b"llehd"</span>);
+
+        stream.send.ack_and_drop(<span class="number">5</span>, <span class="number">7</span>);
+        <span class="macro">assert_eq!</span>(stream.send.bufs_count(), <span class="number">2</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]), <span class="prelude-val">Ok</span>((<span class="number">4</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">20</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">4</span>], <span class="string">b"lrow"</span>);
+
+        <span class="macro">assert!</span>(!stream.is_flushable());
+
+        <span class="macro">assert!</span>(!stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]), <span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">20</span>);
+
+        stream.send.ack_and_drop(<span class="number">22</span>, <span class="number">4</span>);
+        <span class="macro">assert_eq!</span>(stream.send.bufs_count(), <span class="number">2</span>);
+
+        stream.send.ack_and_drop(<span class="number">20</span>, <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(stream.send.bufs_count(), <span class="number">2</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>send_emit_retransmit() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">5</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>stream = Stream::new(<span class="number">0</span>, <span class="number">0</span>, <span class="number">20</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>, DEFAULT_STREAM_WINDOW);
+
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"hello"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"world"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"olleh"</span>, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(stream.send.write(<span class="string">b"dlrow"</span>, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(stream.send.bufs_count(), <span class="number">4</span>);
+
+        <span class="macro">assert!</span>(stream.is_flushable());
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">4</span>]), <span class="prelude-val">Ok</span>((<span class="number">4</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">4</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">4</span>], <span class="string">b"hell"</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">4</span>]), <span class="prelude-val">Ok</span>((<span class="number">4</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">8</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">4</span>], <span class="string">b"owor"</span>);
+
+        stream.send.retransmit(<span class="number">3</span>, <span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">3</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">3</span>]), <span class="prelude-val">Ok</span>((<span class="number">3</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">8</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">3</span>], <span class="string">b"low"</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">2</span>]), <span class="prelude-val">Ok</span>((<span class="number">2</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">2</span>], <span class="string">b"ld"</span>);
+
+        stream.send.ack_and_drop(<span class="number">7</span>, <span class="number">2</span>);
+
+        stream.send.retransmit(<span class="number">8</span>, <span class="number">2</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">2</span>]), <span class="prelude-val">Ok</span>((<span class="number">2</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">2</span>], <span class="string">b"ld"</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">1</span>]), <span class="prelude-val">Ok</span>((<span class="number">1</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">11</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">1</span>], <span class="string">b"o"</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">16</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">5</span>], <span class="string">b"llehd"</span>);
+
+        stream.send.retransmit(<span class="number">12</span>, <span class="number">2</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">2</span>]), <span class="prelude-val">Ok</span>((<span class="number">2</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">16</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">2</span>], <span class="string">b"le"</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]), <span class="prelude-val">Ok</span>((<span class="number">4</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">20</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">4</span>], <span class="string">b"lrow"</span>);
+
+        <span class="macro">assert!</span>(!stream.is_flushable());
+
+        <span class="macro">assert!</span>(!stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]), <span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="bool-val">true</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">20</span>);
+
+        stream.send.retransmit(<span class="number">7</span>, <span class="number">12</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">12</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">5</span>], <span class="string">b"rldol"</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">17</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">5</span>], <span class="string">b"lehdl"</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]), <span class="prelude-val">Ok</span>((<span class="number">2</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">20</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">2</span>], <span class="string">b"ro"</span>);
+
+        stream.send.ack_and_drop(<span class="number">12</span>, <span class="number">7</span>);
+
+        stream.send.retransmit(<span class="number">7</span>, <span class="number">12</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">12</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">5</span>], <span class="string">b"rldol"</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">17</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">5</span>], <span class="string">b"lehdl"</span>);
+
+        <span class="macro">assert!</span>(stream_send_ready(<span class="kw-2">&amp;</span>stream));
+        <span class="macro">assert_eq!</span>(stream.send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]), <span class="prelude-val">Ok</span>((<span class="number">2</span>, <span class="bool-val">false</span>)));
+        <span class="macro">assert_eq!</span>(stream.send.off_front(), <span class="number">20</span>);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">2</span>], <span class="string">b"ro"</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>rangebuf_split_off() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = RangeBuf::from(<span class="string">b"helloworld"</span>, <span class="number">5</span>, <span class="bool-val">true</span>);
+        <span class="macro">assert_eq!</span>(buf.start, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(buf.pos, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(buf.len, <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(buf.off, <span class="number">5</span>);
+        <span class="macro">assert!</span>(buf.fin);
+
+        <span class="macro">assert_eq!</span>(buf.len(), <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(buf.off(), <span class="number">5</span>);
+        <span class="macro">assert!</span>(buf.fin());
+
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..], <span class="string">b"helloworld"</span>);
+
+        <span class="comment">// Advance buffer.
+        </span>buf.consume(<span class="number">5</span>);
+
+        <span class="macro">assert_eq!</span>(buf.start, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(buf.pos, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(buf.len, <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(buf.off, <span class="number">5</span>);
+        <span class="macro">assert!</span>(buf.fin);
+
+        <span class="macro">assert_eq!</span>(buf.len(), <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(buf.off(), <span class="number">10</span>);
+        <span class="macro">assert!</span>(buf.fin());
+
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..], <span class="string">b"world"</span>);
+
+        <span class="comment">// Split buffer before position.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>new_buf = buf.split_off(<span class="number">3</span>);
+
+        <span class="macro">assert_eq!</span>(buf.start, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(buf.pos, <span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(buf.len, <span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(buf.off, <span class="number">5</span>);
+        <span class="macro">assert!</span>(!buf.fin);
+
+        <span class="macro">assert_eq!</span>(buf.len(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(buf.off(), <span class="number">8</span>);
+        <span class="macro">assert!</span>(!buf.fin());
+
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..], <span class="string">b""</span>);
+
+        <span class="macro">assert_eq!</span>(new_buf.start, <span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(new_buf.pos, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(new_buf.len, <span class="number">7</span>);
+        <span class="macro">assert_eq!</span>(new_buf.off, <span class="number">8</span>);
+        <span class="macro">assert!</span>(new_buf.fin);
+
+        <span class="macro">assert_eq!</span>(new_buf.len(), <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(new_buf.off(), <span class="number">10</span>);
+        <span class="macro">assert!</span>(new_buf.fin());
+
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>new_buf[..], <span class="string">b"world"</span>);
+
+        <span class="comment">// Advance buffer.
+        </span>new_buf.consume(<span class="number">2</span>);
+
+        <span class="macro">assert_eq!</span>(new_buf.start, <span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(new_buf.pos, <span class="number">7</span>);
+        <span class="macro">assert_eq!</span>(new_buf.len, <span class="number">7</span>);
+        <span class="macro">assert_eq!</span>(new_buf.off, <span class="number">8</span>);
+        <span class="macro">assert!</span>(new_buf.fin);
+
+        <span class="macro">assert_eq!</span>(new_buf.len(), <span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(new_buf.off(), <span class="number">12</span>);
+        <span class="macro">assert!</span>(new_buf.fin());
+
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>new_buf[..], <span class="string">b"rld"</span>);
+
+        <span class="comment">// Split buffer after position.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>new_new_buf = new_buf.split_off(<span class="number">5</span>);
+
+        <span class="macro">assert_eq!</span>(new_buf.start, <span class="number">3</span>);
+        <span class="macro">assert_eq!</span>(new_buf.pos, <span class="number">7</span>);
+        <span class="macro">assert_eq!</span>(new_buf.len, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(new_buf.off, <span class="number">8</span>);
+        <span class="macro">assert!</span>(!new_buf.fin);
+
+        <span class="macro">assert_eq!</span>(new_buf.len(), <span class="number">1</span>);
+        <span class="macro">assert_eq!</span>(new_buf.off(), <span class="number">12</span>);
+        <span class="macro">assert!</span>(!new_buf.fin());
+
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>new_buf[..], <span class="string">b"r"</span>);
+
+        <span class="macro">assert_eq!</span>(new_new_buf.start, <span class="number">8</span>);
+        <span class="macro">assert_eq!</span>(new_new_buf.pos, <span class="number">8</span>);
+        <span class="macro">assert_eq!</span>(new_new_buf.len, <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(new_new_buf.off, <span class="number">13</span>);
+        <span class="macro">assert!</span>(new_new_buf.fin);
+
+        <span class="macro">assert_eq!</span>(new_new_buf.len(), <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(new_new_buf.off(), <span class="number">13</span>);
+        <span class="macro">assert!</span>(new_new_buf.fin());
+
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>new_new_buf[..], <span class="string">b"ld"</span>);
+
+        <span class="comment">// Advance buffer.
+        </span>new_new_buf.consume(<span class="number">2</span>);
+
+        <span class="macro">assert_eq!</span>(new_new_buf.start, <span class="number">8</span>);
+        <span class="macro">assert_eq!</span>(new_new_buf.pos, <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(new_new_buf.len, <span class="number">2</span>);
+        <span class="macro">assert_eq!</span>(new_new_buf.off, <span class="number">13</span>);
+        <span class="macro">assert!</span>(new_new_buf.fin);
+
+        <span class="macro">assert_eq!</span>(new_new_buf.len(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(new_new_buf.off(), <span class="number">15</span>);
+        <span class="macro">assert!</span>(new_new_buf.fin());
+
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>new_new_buf[..], <span class="string">b""</span>);
+    }
+
+    <span class="doccomment">/// RFC9000 2.1: A stream ID that is used out of order results in all
+    /// streams of that type with lower-numbered stream IDs also being opened.
+    </span><span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_limit_auto_open() {
+        <span class="kw">let </span>local_tp = <span class="kw">crate</span>::TransportParams::default();
+        <span class="kw">let </span>peer_tp = <span class="kw">crate</span>::TransportParams::default();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>streams = StreamMap::new(<span class="number">5</span>, <span class="number">5</span>, <span class="number">5</span>);
+
+        <span class="kw">let </span>stream_id = <span class="number">500</span>;
+        <span class="macro">assert!</span>(!is_local(stream_id, <span class="bool-val">true</span>), <span class="string">"stream id is peer initiated"</span>);
+        <span class="macro">assert!</span>(is_bidi(stream_id), <span class="string">"stream id is bidirectional"</span>);
+        <span class="macro">assert_eq!</span>(
+            streams
+                .get_or_create(stream_id, <span class="kw-2">&amp;</span>local_tp, <span class="kw-2">&amp;</span>peer_tp, <span class="bool-val">false</span>, <span class="bool-val">true</span>)
+                .err(),
+            <span class="prelude-val">Some</span>(Error::StreamLimit),
+            <span class="string">"stream limit should be exceeded"
+        </span>);
+    }
+
+    <span class="doccomment">/// Stream limit should be satisfied regardless of what order we open
+    /// streams
+    </span><span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_create_out_of_order() {
+        <span class="kw">let </span>local_tp = <span class="kw">crate</span>::TransportParams::default();
+        <span class="kw">let </span>peer_tp = <span class="kw">crate</span>::TransportParams::default();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>streams = StreamMap::new(<span class="number">5</span>, <span class="number">5</span>, <span class="number">5</span>);
+
+        <span class="kw">for </span>stream_id <span class="kw">in </span>[<span class="number">8</span>, <span class="number">12</span>, <span class="number">4</span>] {
+            <span class="macro">assert!</span>(is_local(stream_id, <span class="bool-val">false</span>), <span class="string">"stream id is client initiated"</span>);
+            <span class="macro">assert!</span>(is_bidi(stream_id), <span class="string">"stream id is bidirectional"</span>);
+            <span class="macro">assert!</span>(streams
+                .get_or_create(stream_id, <span class="kw-2">&amp;</span>local_tp, <span class="kw-2">&amp;</span>peer_tp, <span class="bool-val">false</span>, <span class="bool-val">true</span>)
+                .is_ok());
+        }
+    }
+
+    <span class="doccomment">/// Check stream limit boundary cases
+    </span><span class="attr">#[test]
+    </span><span class="kw">fn </span>stream_limit_edge() {
+        <span class="kw">let </span>local_tp = <span class="kw">crate</span>::TransportParams::default();
+        <span class="kw">let </span>peer_tp = <span class="kw">crate</span>::TransportParams::default();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>streams = StreamMap::new(<span class="number">3</span>, <span class="number">3</span>, <span class="number">3</span>);
+
+        <span class="comment">// Highest permitted
+        </span><span class="kw">let </span>stream_id = <span class="number">8</span>;
+        <span class="macro">assert!</span>(streams
+            .get_or_create(stream_id, <span class="kw-2">&amp;</span>local_tp, <span class="kw-2">&amp;</span>peer_tp, <span class="bool-val">false</span>, <span class="bool-val">true</span>)
+            .is_ok());
+
+        <span class="comment">// One more than highest permitted
+        </span><span class="kw">let </span>stream_id = <span class="number">12</span>;
+        <span class="macro">assert_eq!</span>(
+            streams
+                .get_or_create(stream_id, <span class="kw-2">&amp;</span>local_tp, <span class="kw-2">&amp;</span>peer_tp, <span class="bool-val">false</span>, <span class="bool-val">true</span>)
+                .err(),
+            <span class="prelude-val">Some</span>(Error::StreamLimit)
+        );
+    }
+
+    <span class="kw">fn </span>cycle_stream_priority(stream_id: u64, streams: <span class="kw-2">&amp;mut </span>StreamMap) {
+        <span class="kw">let </span>key = streams.get(stream_id).unwrap().priority_key.clone();
+        streams.update_priority(<span class="kw-2">&amp;</span>key.clone(), <span class="kw-2">&amp;</span>key);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>writable_prioritized_default_priority() {
+        <span class="kw">let </span>local_tp = <span class="kw">crate</span>::TransportParams::default();
+        <span class="kw">let </span>peer_tp = <span class="kw">crate</span>::TransportParams {
+            initial_max_stream_data_bidi_local: <span class="number">100</span>,
+            initial_max_stream_data_uni: <span class="number">100</span>,
+            ..Default::default()
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>streams = StreamMap::new(<span class="number">100</span>, <span class="number">100</span>, <span class="number">100</span>);
+
+        <span class="kw">for </span>id <span class="kw">in </span>[<span class="number">0</span>, <span class="number">4</span>, <span class="number">8</span>, <span class="number">12</span>] {
+            <span class="macro">assert!</span>(streams
+                .get_or_create(id, <span class="kw-2">&amp;</span>local_tp, <span class="kw-2">&amp;</span>peer_tp, <span class="bool-val">false</span>, <span class="bool-val">true</span>)
+                .is_ok());
+        }
+
+        <span class="kw">let </span>walk_1: Vec&lt;u64&gt; = streams.writable().collect();
+        cycle_stream_priority(<span class="kw-2">*</span>walk_1.first().unwrap(), <span class="kw-2">&amp;mut </span>streams);
+        <span class="kw">let </span>walk_2: Vec&lt;u64&gt; = streams.writable().collect();
+        cycle_stream_priority(<span class="kw-2">*</span>walk_2.first().unwrap(), <span class="kw-2">&amp;mut </span>streams);
+        <span class="kw">let </span>walk_3: Vec&lt;u64&gt; = streams.writable().collect();
+        cycle_stream_priority(<span class="kw-2">*</span>walk_3.first().unwrap(), <span class="kw-2">&amp;mut </span>streams);
+        <span class="kw">let </span>walk_4: Vec&lt;u64&gt; = streams.writable().collect();
+        cycle_stream_priority(<span class="kw-2">*</span>walk_4.first().unwrap(), <span class="kw-2">&amp;mut </span>streams);
+        <span class="kw">let </span>walk_5: Vec&lt;u64&gt; = streams.writable().collect();
+
+        <span class="comment">// All streams are non-incremental and same urgency by default. Multiple
+        // visits shuffle their order.
+        </span><span class="macro">assert_eq!</span>(walk_1, <span class="macro">vec!</span>[<span class="number">0</span>, <span class="number">4</span>, <span class="number">8</span>, <span class="number">12</span>]);
+        <span class="macro">assert_eq!</span>(walk_2, <span class="macro">vec!</span>[<span class="number">4</span>, <span class="number">8</span>, <span class="number">12</span>, <span class="number">0</span>]);
+        <span class="macro">assert_eq!</span>(walk_3, <span class="macro">vec!</span>[<span class="number">8</span>, <span class="number">12</span>, <span class="number">0</span>, <span class="number">4</span>]);
+        <span class="macro">assert_eq!</span>(walk_4, <span class="macro">vec!</span>[<span class="number">12</span>, <span class="number">0</span>, <span class="number">4</span>, <span class="number">8</span>,]);
+        <span class="macro">assert_eq!</span>(walk_5, <span class="macro">vec!</span>[<span class="number">0</span>, <span class="number">4</span>, <span class="number">8</span>, <span class="number">12</span>]);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>writable_prioritized_insert_order() {
+        <span class="kw">let </span>local_tp = <span class="kw">crate</span>::TransportParams::default();
+        <span class="kw">let </span>peer_tp = <span class="kw">crate</span>::TransportParams {
+            initial_max_stream_data_bidi_local: <span class="number">100</span>,
+            initial_max_stream_data_uni: <span class="number">100</span>,
+            ..Default::default()
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>streams = StreamMap::new(<span class="number">100</span>, <span class="number">100</span>, <span class="number">100</span>);
+
+        <span class="comment">// Inserting same-urgency incremental streams in a "random" order yields
+        // same order to start with.
+        </span><span class="kw">for </span>id <span class="kw">in </span>[<span class="number">12</span>, <span class="number">4</span>, <span class="number">8</span>, <span class="number">0</span>] {
+            <span class="macro">assert!</span>(streams
+                .get_or_create(id, <span class="kw-2">&amp;</span>local_tp, <span class="kw-2">&amp;</span>peer_tp, <span class="bool-val">false</span>, <span class="bool-val">true</span>)
+                .is_ok());
+        }
+
+        <span class="kw">let </span>walk_1: Vec&lt;u64&gt; = streams.writable().collect();
+        cycle_stream_priority(<span class="kw-2">*</span>walk_1.first().unwrap(), <span class="kw-2">&amp;mut </span>streams);
+        <span class="kw">let </span>walk_2: Vec&lt;u64&gt; = streams.writable().collect();
+        cycle_stream_priority(<span class="kw-2">*</span>walk_2.first().unwrap(), <span class="kw-2">&amp;mut </span>streams);
+        <span class="kw">let </span>walk_3: Vec&lt;u64&gt; = streams.writable().collect();
+        cycle_stream_priority(<span class="kw-2">*</span>walk_3.first().unwrap(), <span class="kw-2">&amp;mut </span>streams);
+        <span class="kw">let </span>walk_4: Vec&lt;u64&gt; = streams.writable().collect();
+        cycle_stream_priority(<span class="kw-2">*</span>walk_4.first().unwrap(), <span class="kw-2">&amp;mut </span>streams);
+        <span class="kw">let </span>walk_5: Vec&lt;u64&gt; = streams.writable().collect();
+        <span class="macro">assert_eq!</span>(walk_1, <span class="macro">vec!</span>[<span class="number">12</span>, <span class="number">4</span>, <span class="number">8</span>, <span class="number">0</span>]);
+        <span class="macro">assert_eq!</span>(walk_2, <span class="macro">vec!</span>[<span class="number">4</span>, <span class="number">8</span>, <span class="number">0</span>, <span class="number">12</span>]);
+        <span class="macro">assert_eq!</span>(walk_3, <span class="macro">vec!</span>[<span class="number">8</span>, <span class="number">0</span>, <span class="number">12</span>, <span class="number">4</span>,]);
+        <span class="macro">assert_eq!</span>(walk_4, <span class="macro">vec!</span>[<span class="number">0</span>, <span class="number">12</span>, <span class="number">4</span>, <span class="number">8</span>]);
+        <span class="macro">assert_eq!</span>(walk_5, <span class="macro">vec!</span>[<span class="number">12</span>, <span class="number">4</span>, <span class="number">8</span>, <span class="number">0</span>]);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>writable_prioritized_mixed_urgency() {
+        <span class="kw">let </span>local_tp = <span class="kw">crate</span>::TransportParams::default();
+        <span class="kw">let </span>peer_tp = <span class="kw">crate</span>::TransportParams {
+            initial_max_stream_data_bidi_local: <span class="number">100</span>,
+            initial_max_stream_data_uni: <span class="number">100</span>,
+            ..Default::default()
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>streams = StreamMap::new(<span class="number">100</span>, <span class="number">100</span>, <span class="number">100</span>);
+
+        <span class="comment">// Streams where the urgency descends (becomes more important). No stream
+        // shares an urgency.
+        </span><span class="kw">let </span>input = <span class="macro">vec!</span>[
+            (<span class="number">0</span>, <span class="number">100</span>),
+            (<span class="number">4</span>, <span class="number">90</span>),
+            (<span class="number">8</span>, <span class="number">80</span>),
+            (<span class="number">12</span>, <span class="number">70</span>),
+            (<span class="number">16</span>, <span class="number">60</span>),
+            (<span class="number">20</span>, <span class="number">50</span>),
+            (<span class="number">24</span>, <span class="number">40</span>),
+            (<span class="number">28</span>, <span class="number">30</span>),
+            (<span class="number">32</span>, <span class="number">20</span>),
+            (<span class="number">36</span>, <span class="number">10</span>),
+            (<span class="number">40</span>, <span class="number">0</span>),
+        ];
+
+        <span class="kw">for </span>(id, urgency) <span class="kw">in </span>input.clone() {
+            <span class="comment">// this duplicates some code from stream_priority in order to access
+            // streams and the collection they're in
+            </span><span class="kw">let </span>stream = streams
+                .get_or_create(id, <span class="kw-2">&amp;</span>local_tp, <span class="kw-2">&amp;</span>peer_tp, <span class="bool-val">false</span>, <span class="bool-val">true</span>)
+                .unwrap();
+
+            stream.urgency = urgency;
+
+            <span class="kw">let </span>new_priority_key = Arc::new(StreamPriorityKey {
+                urgency: stream.urgency,
+                incremental: stream.incremental,
+                id,
+                ..Default::default()
+            });
+
+            <span class="kw">let </span>old_priority_key = std::mem::replace(
+                <span class="kw-2">&amp;mut </span>stream.priority_key,
+                new_priority_key.clone(),
+            );
+
+            streams.update_priority(<span class="kw-2">&amp;</span>old_priority_key, <span class="kw-2">&amp;</span>new_priority_key);
+        }
+
+        <span class="kw">let </span>walk_1: Vec&lt;u64&gt; = streams.writable().collect();
+        <span class="macro">assert_eq!</span>(walk_1, <span class="macro">vec!</span>[<span class="number">40</span>, <span class="number">36</span>, <span class="number">32</span>, <span class="number">28</span>, <span class="number">24</span>, <span class="number">20</span>, <span class="number">16</span>, <span class="number">12</span>, <span class="number">8</span>, <span class="number">4</span>, <span class="number">0</span>]);
+
+        <span class="comment">// Re-applying priority to a stream does not cause duplication.
+        </span><span class="kw">for </span>(id, urgency) <span class="kw">in </span>input {
+            <span class="comment">// this duplicates some code from stream_priority in order to access
+            // streams and the collection they're in
+            </span><span class="kw">let </span>stream = streams
+                .get_or_create(id, <span class="kw-2">&amp;</span>local_tp, <span class="kw-2">&amp;</span>peer_tp, <span class="bool-val">false</span>, <span class="bool-val">true</span>)
+                .unwrap();
+
+            stream.urgency = urgency;
+
+            <span class="kw">let </span>new_priority_key = Arc::new(StreamPriorityKey {
+                urgency: stream.urgency,
+                incremental: stream.incremental,
+                id,
+                ..Default::default()
+            });
+
+            <span class="kw">let </span>old_priority_key = std::mem::replace(
+                <span class="kw-2">&amp;mut </span>stream.priority_key,
+                new_priority_key.clone(),
+            );
+
+            streams.update_priority(<span class="kw-2">&amp;</span>old_priority_key, <span class="kw-2">&amp;</span>new_priority_key);
+        }
+
+        <span class="kw">let </span>walk_2: Vec&lt;u64&gt; = streams.writable().collect();
+        <span class="macro">assert_eq!</span>(walk_2, <span class="macro">vec!</span>[<span class="number">40</span>, <span class="number">36</span>, <span class="number">32</span>, <span class="number">28</span>, <span class="number">24</span>, <span class="number">20</span>, <span class="number">16</span>, <span class="number">12</span>, <span class="number">8</span>, <span class="number">4</span>, <span class="number">0</span>]);
+
+        <span class="comment">// Removing streams doesn't break expected ordering.
+        </span>streams.collect(<span class="number">24</span>, <span class="bool-val">true</span>);
+
+        <span class="kw">let </span>walk_3: Vec&lt;u64&gt; = streams.writable().collect();
+        <span class="macro">assert_eq!</span>(walk_3, <span class="macro">vec!</span>[<span class="number">40</span>, <span class="number">36</span>, <span class="number">32</span>, <span class="number">28</span>, <span class="number">20</span>, <span class="number">16</span>, <span class="number">12</span>, <span class="number">8</span>, <span class="number">4</span>, <span class="number">0</span>]);
+
+        streams.collect(<span class="number">40</span>, <span class="bool-val">true</span>);
+        streams.collect(<span class="number">0</span>, <span class="bool-val">true</span>);
+
+        <span class="kw">let </span>walk_4: Vec&lt;u64&gt; = streams.writable().collect();
+        <span class="macro">assert_eq!</span>(walk_4, <span class="macro">vec!</span>[<span class="number">36</span>, <span class="number">32</span>, <span class="number">28</span>, <span class="number">20</span>, <span class="number">16</span>, <span class="number">12</span>, <span class="number">8</span>, <span class="number">4</span>]);
+
+        <span class="comment">// Adding streams doesn't break expected ordering.
+        </span>streams
+            .get_or_create(<span class="number">44</span>, <span class="kw-2">&amp;</span>local_tp, <span class="kw-2">&amp;</span>peer_tp, <span class="bool-val">false</span>, <span class="bool-val">true</span>)
+            .unwrap();
+
+        <span class="kw">let </span>walk_5: Vec&lt;u64&gt; = streams.writable().collect();
+        <span class="macro">assert_eq!</span>(walk_5, <span class="macro">vec!</span>[<span class="number">36</span>, <span class="number">32</span>, <span class="number">28</span>, <span class="number">20</span>, <span class="number">16</span>, <span class="number">12</span>, <span class="number">8</span>, <span class="number">4</span>, <span class="number">44</span>]);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>writable_prioritized_mixed_urgencies_incrementals() {
+        <span class="kw">let </span>local_tp = <span class="kw">crate</span>::TransportParams::default();
+        <span class="kw">let </span>peer_tp = <span class="kw">crate</span>::TransportParams {
+            initial_max_stream_data_bidi_local: <span class="number">100</span>,
+            initial_max_stream_data_uni: <span class="number">100</span>,
+            ..Default::default()
+        };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>streams = StreamMap::new(<span class="number">100</span>, <span class="number">100</span>, <span class="number">100</span>);
+
+        <span class="comment">// Streams that share some urgency level
+        </span><span class="kw">let </span>input = <span class="macro">vec!</span>[
+            (<span class="number">0</span>, <span class="number">100</span>),
+            (<span class="number">4</span>, <span class="number">20</span>),
+            (<span class="number">8</span>, <span class="number">100</span>),
+            (<span class="number">12</span>, <span class="number">20</span>),
+            (<span class="number">16</span>, <span class="number">90</span>),
+            (<span class="number">20</span>, <span class="number">25</span>),
+            (<span class="number">24</span>, <span class="number">90</span>),
+            (<span class="number">28</span>, <span class="number">30</span>),
+            (<span class="number">32</span>, <span class="number">80</span>),
+            (<span class="number">36</span>, <span class="number">20</span>),
+            (<span class="number">40</span>, <span class="number">0</span>),
+        ];
+
+        <span class="kw">for </span>(id, urgency) <span class="kw">in </span>input.clone() {
+            <span class="comment">// this duplicates some code from stream_priority in order to access
+            // streams and the collection they're in
+            </span><span class="kw">let </span>stream = streams
+                .get_or_create(id, <span class="kw-2">&amp;</span>local_tp, <span class="kw-2">&amp;</span>peer_tp, <span class="bool-val">false</span>, <span class="bool-val">true</span>)
+                .unwrap();
+
+            stream.urgency = urgency;
+
+            <span class="kw">let </span>new_priority_key = Arc::new(StreamPriorityKey {
+                urgency: stream.urgency,
+                incremental: stream.incremental,
+                id,
+                ..Default::default()
+            });
+
+            <span class="kw">let </span>old_priority_key = std::mem::replace(
+                <span class="kw-2">&amp;mut </span>stream.priority_key,
+                new_priority_key.clone(),
+            );
+
+            streams.update_priority(<span class="kw-2">&amp;</span>old_priority_key, <span class="kw-2">&amp;</span>new_priority_key);
+        }
+
+        <span class="kw">let </span>walk_1: Vec&lt;u64&gt; = streams.writable().collect();
+        cycle_stream_priority(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>streams);
+        cycle_stream_priority(<span class="number">16</span>, <span class="kw-2">&amp;mut </span>streams);
+        cycle_stream_priority(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>streams);
+        <span class="kw">let </span>walk_2: Vec&lt;u64&gt; = streams.writable().collect();
+        cycle_stream_priority(<span class="number">12</span>, <span class="kw-2">&amp;mut </span>streams);
+        cycle_stream_priority(<span class="number">24</span>, <span class="kw-2">&amp;mut </span>streams);
+        cycle_stream_priority(<span class="number">8</span>, <span class="kw-2">&amp;mut </span>streams);
+        <span class="kw">let </span>walk_3: Vec&lt;u64&gt; = streams.writable().collect();
+        cycle_stream_priority(<span class="number">36</span>, <span class="kw-2">&amp;mut </span>streams);
+        cycle_stream_priority(<span class="number">16</span>, <span class="kw-2">&amp;mut </span>streams);
+        cycle_stream_priority(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>streams);
+        <span class="kw">let </span>walk_4: Vec&lt;u64&gt; = streams.writable().collect();
+        cycle_stream_priority(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>streams);
+        cycle_stream_priority(<span class="number">24</span>, <span class="kw-2">&amp;mut </span>streams);
+        cycle_stream_priority(<span class="number">8</span>, <span class="kw-2">&amp;mut </span>streams);
+        <span class="kw">let </span>walk_5: Vec&lt;u64&gt; = streams.writable().collect();
+        cycle_stream_priority(<span class="number">12</span>, <span class="kw-2">&amp;mut </span>streams);
+        cycle_stream_priority(<span class="number">16</span>, <span class="kw-2">&amp;mut </span>streams);
+        cycle_stream_priority(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>streams);
+        <span class="kw">let </span>walk_6: Vec&lt;u64&gt; = streams.writable().collect();
+        cycle_stream_priority(<span class="number">36</span>, <span class="kw-2">&amp;mut </span>streams);
+        cycle_stream_priority(<span class="number">24</span>, <span class="kw-2">&amp;mut </span>streams);
+        cycle_stream_priority(<span class="number">8</span>, <span class="kw-2">&amp;mut </span>streams);
+        <span class="kw">let </span>walk_7: Vec&lt;u64&gt; = streams.writable().collect();
+        cycle_stream_priority(<span class="number">4</span>, <span class="kw-2">&amp;mut </span>streams);
+        cycle_stream_priority(<span class="number">16</span>, <span class="kw-2">&amp;mut </span>streams);
+        cycle_stream_priority(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>streams);
+        <span class="kw">let </span>walk_8: Vec&lt;u64&gt; = streams.writable().collect();
+        cycle_stream_priority(<span class="number">12</span>, <span class="kw-2">&amp;mut </span>streams);
+        cycle_stream_priority(<span class="number">24</span>, <span class="kw-2">&amp;mut </span>streams);
+        cycle_stream_priority(<span class="number">8</span>, <span class="kw-2">&amp;mut </span>streams);
+        <span class="kw">let </span>walk_9: Vec&lt;u64&gt; = streams.writable().collect();
+        cycle_stream_priority(<span class="number">36</span>, <span class="kw-2">&amp;mut </span>streams);
+        cycle_stream_priority(<span class="number">16</span>, <span class="kw-2">&amp;mut </span>streams);
+        cycle_stream_priority(<span class="number">0</span>, <span class="kw-2">&amp;mut </span>streams);
+
+        <span class="macro">assert_eq!</span>(walk_1, <span class="macro">vec!</span>[<span class="number">40</span>, <span class="number">4</span>, <span class="number">12</span>, <span class="number">36</span>, <span class="number">20</span>, <span class="number">28</span>, <span class="number">32</span>, <span class="number">16</span>, <span class="number">24</span>, <span class="number">0</span>, <span class="number">8</span>]);
+        <span class="macro">assert_eq!</span>(walk_2, <span class="macro">vec!</span>[<span class="number">40</span>, <span class="number">12</span>, <span class="number">36</span>, <span class="number">4</span>, <span class="number">20</span>, <span class="number">28</span>, <span class="number">32</span>, <span class="number">24</span>, <span class="number">16</span>, <span class="number">8</span>, <span class="number">0</span>]);
+        <span class="macro">assert_eq!</span>(walk_3, <span class="macro">vec!</span>[<span class="number">40</span>, <span class="number">36</span>, <span class="number">4</span>, <span class="number">12</span>, <span class="number">20</span>, <span class="number">28</span>, <span class="number">32</span>, <span class="number">16</span>, <span class="number">24</span>, <span class="number">0</span>, <span class="number">8</span>]);
+        <span class="macro">assert_eq!</span>(walk_4, <span class="macro">vec!</span>[<span class="number">40</span>, <span class="number">4</span>, <span class="number">12</span>, <span class="number">36</span>, <span class="number">20</span>, <span class="number">28</span>, <span class="number">32</span>, <span class="number">24</span>, <span class="number">16</span>, <span class="number">8</span>, <span class="number">0</span>]);
+        <span class="macro">assert_eq!</span>(walk_5, <span class="macro">vec!</span>[<span class="number">40</span>, <span class="number">12</span>, <span class="number">36</span>, <span class="number">4</span>, <span class="number">20</span>, <span class="number">28</span>, <span class="number">32</span>, <span class="number">16</span>, <span class="number">24</span>, <span class="number">0</span>, <span class="number">8</span>]);
+        <span class="macro">assert_eq!</span>(walk_6, <span class="macro">vec!</span>[<span class="number">40</span>, <span class="number">36</span>, <span class="number">4</span>, <span class="number">12</span>, <span class="number">20</span>, <span class="number">28</span>, <span class="number">32</span>, <span class="number">24</span>, <span class="number">16</span>, <span class="number">8</span>, <span class="number">0</span>]);
+        <span class="macro">assert_eq!</span>(walk_7, <span class="macro">vec!</span>[<span class="number">40</span>, <span class="number">4</span>, <span class="number">12</span>, <span class="number">36</span>, <span class="number">20</span>, <span class="number">28</span>, <span class="number">32</span>, <span class="number">16</span>, <span class="number">24</span>, <span class="number">0</span>, <span class="number">8</span>]);
+        <span class="macro">assert_eq!</span>(walk_8, <span class="macro">vec!</span>[<span class="number">40</span>, <span class="number">12</span>, <span class="number">36</span>, <span class="number">4</span>, <span class="number">20</span>, <span class="number">28</span>, <span class="number">32</span>, <span class="number">24</span>, <span class="number">16</span>, <span class="number">8</span>, <span class="number">0</span>]);
+        <span class="macro">assert_eq!</span>(walk_9, <span class="macro">vec!</span>[<span class="number">40</span>, <span class="number">36</span>, <span class="number">4</span>, <span class="number">12</span>, <span class="number">20</span>, <span class="number">28</span>, <span class="number">32</span>, <span class="number">16</span>, <span class="number">24</span>, <span class="number">0</span>, <span class="number">8</span>]);
+
+        <span class="comment">// Removing streams doesn't break expected ordering.
+        </span>streams.collect(<span class="number">20</span>, <span class="bool-val">true</span>);
+
+        <span class="kw">let </span>walk_10: Vec&lt;u64&gt; = streams.writable().collect();
+        <span class="macro">assert_eq!</span>(walk_10, <span class="macro">vec!</span>[<span class="number">40</span>, <span class="number">4</span>, <span class="number">12</span>, <span class="number">36</span>, <span class="number">28</span>, <span class="number">32</span>, <span class="number">24</span>, <span class="number">16</span>, <span class="number">8</span>, <span class="number">0</span>]);
+
+        <span class="comment">// Adding streams doesn't break expected ordering.
+        </span><span class="kw">let </span>stream = streams
+            .get_or_create(<span class="number">44</span>, <span class="kw-2">&amp;</span>local_tp, <span class="kw-2">&amp;</span>peer_tp, <span class="bool-val">false</span>, <span class="bool-val">true</span>)
+            .unwrap();
+
+        stream.urgency = <span class="number">20</span>;
+        stream.incremental = <span class="bool-val">true</span>;
+
+        <span class="kw">let </span>new_priority_key = Arc::new(StreamPriorityKey {
+            urgency: stream.urgency,
+            incremental: stream.incremental,
+            id: <span class="number">44</span>,
+            ..Default::default()
+        });
+
+        <span class="kw">let </span>old_priority_key =
+            std::mem::replace(<span class="kw-2">&amp;mut </span>stream.priority_key, new_priority_key.clone());
+
+        streams.update_priority(<span class="kw-2">&amp;</span>old_priority_key, <span class="kw-2">&amp;</span>new_priority_key);
+
+        <span class="kw">let </span>walk_11: Vec&lt;u64&gt; = streams.writable().collect();
+        <span class="macro">assert_eq!</span>(walk_11, <span class="macro">vec!</span>[<span class="number">40</span>, <span class="number">4</span>, <span class="number">12</span>, <span class="number">36</span>, <span class="number">44</span>, <span class="number">28</span>, <span class="number">32</span>, <span class="number">24</span>, <span class="number">16</span>, <span class="number">8</span>, <span class="number">0</span>]);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>priority_tree_dupes() {
+        <span class="kw">let </span><span class="kw-2">mut </span>prioritized_writable: RBTree&lt;StreamWritablePriorityAdapter&gt; =
+            Default::default();
+
+        <span class="kw">for </span>id <span class="kw">in </span>[<span class="number">0</span>, <span class="number">4</span>, <span class="number">8</span>, <span class="number">12</span>] {
+            <span class="kw">let </span>s = Arc::new(StreamPriorityKey {
+                urgency: <span class="number">0</span>,
+                incremental: <span class="bool-val">false</span>,
+                id,
+                ..Default::default()
+            });
+
+            prioritized_writable.insert(s);
+        }
+
+        <span class="kw">let </span>walk_1: Vec&lt;u64&gt; =
+            prioritized_writable.iter().map(|s| s.id).collect();
+        <span class="macro">assert_eq!</span>(walk_1, <span class="macro">vec!</span>[<span class="number">0</span>, <span class="number">4</span>, <span class="number">8</span>, <span class="number">12</span>]);
+
+        <span class="comment">// Default keys could cause duplicate entries, this is normally protected
+        // against via StreamMap.
+        </span><span class="kw">for </span>id <span class="kw">in </span>[<span class="number">0</span>, <span class="number">4</span>, <span class="number">8</span>, <span class="number">12</span>] {
+            <span class="kw">let </span>s = Arc::new(StreamPriorityKey {
+                urgency: <span class="number">0</span>,
+                incremental: <span class="bool-val">false</span>,
+                id,
+                ..Default::default()
+            });
+
+            prioritized_writable.insert(s);
+        }
+
+        <span class="kw">let </span>walk_2: Vec&lt;u64&gt; =
+            prioritized_writable.iter().map(|s| s.id).collect();
+        <span class="macro">assert_eq!</span>(walk_2, <span class="macro">vec!</span>[<span class="number">0</span>, <span class="number">0</span>, <span class="number">4</span>, <span class="number">4</span>, <span class="number">8</span>, <span class="number">8</span>, <span class="number">12</span>, <span class="number">12</span>]);
+    }
+}
+
+<span class="kw">mod </span>recv_buf;
+<span class="kw">mod </span>send_buf;
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/stream/recv_buf.rs.html b/src/quiche/stream/recv_buf.rs.html
new file mode 100644
index 0000000..3d35a97
--- /dev/null
+++ b/src/quiche/stream/recv_buf.rs.html
@@ -0,0 +1,1959 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/stream/recv_buf.rs`."><title>recv_buf.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2023, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span>std::cmp;
+<span class="kw">use </span>std::time;
+
+<span class="kw">use </span>std::collections::BTreeMap;
+<span class="kw">use </span>std::collections::VecDeque;
+
+<span class="kw">use </span><span class="kw">crate</span>::Error;
+<span class="kw">use </span><span class="kw">crate</span>::Result;
+
+<span class="kw">use </span><span class="kw">crate</span>::flowcontrol;
+
+<span class="kw">use </span><span class="kw">super</span>::RangeBuf;
+<span class="kw">use </span><span class="kw">super</span>::DEFAULT_STREAM_WINDOW;
+
+<span class="doccomment">/// Receive-side stream buffer.
+///
+/// Stream data received by the peer is buffered in a list of data chunks
+/// ordered by offset in ascending order. Contiguous data can then be read
+/// into a slice.
+</span><span class="attr">#[derive(Debug, Default)]
+</span><span class="kw">pub struct </span>RecvBuf {
+    <span class="doccomment">/// Chunks of data received from the peer that have not yet been read by
+    /// the application, ordered by offset.
+    </span>data: BTreeMap&lt;u64, RangeBuf&gt;,
+
+    <span class="doccomment">/// The lowest data offset that has yet to be read by the application.
+    </span>off: u64,
+
+    <span class="doccomment">/// The total length of data received on this stream.
+    </span>len: u64,
+
+    <span class="doccomment">/// Receiver flow controller.
+    </span>flow_control: flowcontrol::FlowControl,
+
+    <span class="doccomment">/// The final stream offset received from the peer, if any.
+    </span>fin_off: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    <span class="doccomment">/// The error code received via RESET_STREAM.
+    </span>error: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    <span class="doccomment">/// Whether incoming data is validated but not buffered.
+    </span>drain: bool,
+}
+
+<span class="kw">impl </span>RecvBuf {
+    <span class="doccomment">/// Creates a new receive buffer.
+    </span><span class="kw">pub fn </span>new(max_data: u64, max_window: u64) -&gt; RecvBuf {
+        RecvBuf {
+            flow_control: flowcontrol::FlowControl::new(
+                max_data,
+                cmp::min(max_data, DEFAULT_STREAM_WINDOW),
+                max_window,
+            ),
+            ..RecvBuf::default()
+        }
+    }
+
+    <span class="doccomment">/// Inserts the given chunk of data in the buffer.
+    ///
+    /// This also takes care of enforcing stream flow control limits, as well
+    /// as handling incoming data that overlaps data that is already in the
+    /// buffer.
+    </span><span class="kw">pub fn </span>write(<span class="kw-2">&amp;mut </span><span class="self">self</span>, buf: RangeBuf) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if </span>buf.max_off() &gt; <span class="self">self</span>.max_data() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FlowControl);
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(fin_off) = <span class="self">self</span>.fin_off {
+            <span class="comment">// Stream's size is known, forbid data beyond that point.
+            </span><span class="kw">if </span>buf.max_off() &gt; fin_off {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FinalSize);
+            }
+
+            <span class="comment">// Stream's size is already known, forbid changing it.
+            </span><span class="kw">if </span>buf.fin() &amp;&amp; fin_off != buf.max_off() {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FinalSize);
+            }
+        }
+
+        <span class="comment">// Stream's known size is lower than data already received.
+        </span><span class="kw">if </span>buf.fin() &amp;&amp; buf.max_off() &lt; <span class="self">self</span>.len {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FinalSize);
+        }
+
+        <span class="comment">// We already saved the final offset, so there's nothing else we
+        // need to keep from the RangeBuf if it's empty.
+        </span><span class="kw">if </span><span class="self">self</span>.fin_off.is_some() &amp;&amp; buf.is_empty() {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+        }
+
+        <span class="kw">if </span>buf.fin() {
+            <span class="self">self</span>.fin_off = <span class="prelude-val">Some</span>(buf.max_off());
+        }
+
+        <span class="comment">// No need to store empty buffer that doesn't carry the fin flag.
+        </span><span class="kw">if </span>!buf.fin() &amp;&amp; buf.is_empty() {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+        }
+
+        <span class="comment">// Check if data is fully duplicate, that is the buffer's max offset is
+        // lower or equal to the offset already stored in the recv buffer.
+        </span><span class="kw">if </span><span class="self">self</span>.off &gt;= buf.max_off() {
+            <span class="comment">// An exception is applied to empty range buffers, because an empty
+            // buffer's max offset matches the max offset of the recv buffer.
+            //
+            // By this point all spurious empty buffers should have already been
+            // discarded, so allowing empty buffers here should be safe.
+            </span><span class="kw">if </span>!buf.is_empty() {
+                <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+            }
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>tmp_bufs = VecDeque::with_capacity(<span class="number">2</span>);
+        tmp_bufs.push_back(buf);
+
+        <span class="lifetime">'tmp</span>: <span class="kw">while let </span><span class="prelude-val">Some</span>(<span class="kw-2">mut </span>buf) = tmp_bufs.pop_front() {
+            <span class="comment">// Discard incoming data below current stream offset. Bytes up to
+            // `self.off` have already been received so we should not buffer
+            // them again. This is also important to make sure `ready()` doesn't
+            // get stuck when a buffer with lower offset than the stream's is
+            // buffered.
+            </span><span class="kw">if </span><span class="self">self</span>.off_front() &gt; buf.off() {
+                buf = buf.split_off((<span class="self">self</span>.off_front() - buf.off()) <span class="kw">as </span>usize);
+            }
+
+            <span class="comment">// Handle overlapping data. If the incoming data's starting offset
+            // is above the previous maximum received offset, there is clearly
+            // no overlap so this logic can be skipped. However do still try to
+            // merge an empty final buffer (i.e. an empty buffer with the fin
+            // flag set, which is the only kind of empty buffer that should
+            // reach this point).
+            </span><span class="kw">if </span>buf.off() &lt; <span class="self">self</span>.max_off() || buf.is_empty() {
+                <span class="kw">for </span>(<span class="kw">_</span>, b) <span class="kw">in </span><span class="self">self</span>.data.range(buf.off()..) {
+                    <span class="kw">let </span>off = buf.off();
+
+                    <span class="comment">// We are past the current buffer.
+                    </span><span class="kw">if </span>b.off() &gt; buf.max_off() {
+                        <span class="kw">break</span>;
+                    }
+
+                    <span class="comment">// New buffer is fully contained in existing buffer.
+                    </span><span class="kw">if </span>off &gt;= b.off() &amp;&amp; buf.max_off() &lt;= b.max_off() {
+                        <span class="kw">continue </span><span class="lifetime">'tmp</span>;
+                    }
+
+                    <span class="comment">// New buffer's start overlaps existing buffer.
+                    </span><span class="kw">if </span>off &gt;= b.off() &amp;&amp; off &lt; b.max_off() {
+                        buf = buf.split_off((b.max_off() - off) <span class="kw">as </span>usize);
+                    }
+
+                    <span class="comment">// New buffer's end overlaps existing buffer.
+                    </span><span class="kw">if </span>off &lt; b.off() &amp;&amp; buf.max_off() &gt; b.off() {
+                        tmp_bufs
+                            .push_back(buf.split_off((b.off() - off) <span class="kw">as </span>usize));
+                    }
+                }
+            }
+
+            <span class="self">self</span>.len = cmp::max(<span class="self">self</span>.len, buf.max_off());
+
+            <span class="kw">if </span>!<span class="self">self</span>.drain {
+                <span class="self">self</span>.data.insert(buf.max_off(), buf);
+            }
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Writes data from the receive buffer into the given output buffer.
+    ///
+    /// Only contiguous data is written to the output buffer, starting from
+    /// offset 0. The offset is incremented as data is read out of the receive
+    /// buffer into the application buffer. If there is no data at the expected
+    /// read offset, the `Done` error is returned.
+    ///
+    /// On success the amount of data read, and a flag indicating if there is
+    /// no more data in the buffer, are returned as a tuple.
+    </span><span class="kw">pub fn </span>emit(<span class="kw-2">&amp;mut </span><span class="self">self</span>, out: <span class="kw-2">&amp;mut </span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;(usize, bool)&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>len = <span class="number">0</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>cap = out.len();
+
+        <span class="kw">if </span>!<span class="self">self</span>.ready() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="comment">// The stream was reset, so clear its data and return the error code
+        // instead.
+        </span><span class="kw">if let </span><span class="prelude-val">Some</span>(e) = <span class="self">self</span>.error {
+            <span class="self">self</span>.data.clear();
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::StreamReset(e));
+        }
+
+        <span class="kw">while </span>cap &gt; <span class="number">0 </span>&amp;&amp; <span class="self">self</span>.ready() {
+            <span class="kw">let </span><span class="kw-2">mut </span>entry = <span class="kw">match </span><span class="self">self</span>.data.first_entry() {
+                <span class="prelude-val">Some</span>(entry) =&gt; entry,
+                <span class="prelude-val">None </span>=&gt; <span class="kw">break</span>,
+            };
+
+            <span class="kw">let </span>buf = entry.get_mut();
+
+            <span class="kw">let </span>buf_len = cmp::min(buf.len(), cap);
+
+            out[len..len + buf_len].copy_from_slice(<span class="kw-2">&amp;</span>buf[..buf_len]);
+
+            <span class="self">self</span>.off += buf_len <span class="kw">as </span>u64;
+
+            len += buf_len;
+            cap -= buf_len;
+
+            <span class="kw">if </span>buf_len &lt; buf.len() {
+                buf.consume(buf_len);
+
+                <span class="comment">// We reached the maximum capacity, so end here.
+                </span><span class="kw">break</span>;
+            }
+
+            entry.remove();
+        }
+
+        <span class="comment">// Update consumed bytes for flow control.
+        </span><span class="self">self</span>.flow_control.add_consumed(len <span class="kw">as </span>u64);
+
+        <span class="prelude-val">Ok</span>((len, <span class="self">self</span>.is_fin()))
+    }
+
+    <span class="doccomment">/// Resets the stream at the given offset.
+    </span><span class="kw">pub fn </span>reset(<span class="kw-2">&amp;mut </span><span class="self">self</span>, error_code: u64, final_size: u64) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="comment">// Stream's size is already known, forbid changing it.
+        </span><span class="kw">if let </span><span class="prelude-val">Some</span>(fin_off) = <span class="self">self</span>.fin_off {
+            <span class="kw">if </span>fin_off != final_size {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FinalSize);
+            }
+        }
+
+        <span class="comment">// Stream's known size is lower than data already received.
+        </span><span class="kw">if </span>final_size &lt; <span class="self">self</span>.len {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FinalSize);
+        }
+
+        <span class="comment">// Calculate how many bytes need to be removed from the connection flow
+        // control.
+        </span><span class="kw">let </span>max_data_delta = final_size - <span class="self">self</span>.len;
+
+        <span class="kw">if </span><span class="self">self</span>.error.is_some() {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(max_data_delta <span class="kw">as </span>usize);
+        }
+
+        <span class="self">self</span>.error = <span class="prelude-val">Some</span>(error_code);
+
+        <span class="comment">// Clear all data already buffered.
+        </span><span class="self">self</span>.off = final_size;
+
+        <span class="self">self</span>.data.clear();
+
+        <span class="comment">// In order to ensure the application is notified when the stream is
+        // reset, enqueue a zero-length buffer at the final size offset.
+        </span><span class="kw">let </span>buf = RangeBuf::from(<span class="string">b""</span>, final_size, <span class="bool-val">true</span>);
+        <span class="self">self</span>.write(buf)<span class="question-mark">?</span>;
+
+        <span class="prelude-val">Ok</span>(max_data_delta <span class="kw">as </span>usize)
+    }
+
+    <span class="doccomment">/// Commits the new max_data limit.
+    </span><span class="kw">pub fn </span>update_max_data(<span class="kw-2">&amp;mut </span><span class="self">self</span>, now: time::Instant) {
+        <span class="self">self</span>.flow_control.update_max_data(now);
+    }
+
+    <span class="doccomment">/// Return the new max_data limit.
+    </span><span class="kw">pub fn </span>max_data_next(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.flow_control.max_data_next()
+    }
+
+    <span class="doccomment">/// Return the current flow control limit.
+    </span><span class="kw">pub fn </span>max_data(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.flow_control.max_data()
+    }
+
+    <span class="doccomment">/// Return the current window.
+    </span><span class="kw">pub fn </span>window(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.flow_control.window()
+    }
+
+    <span class="doccomment">/// Autotune the window size.
+    </span><span class="kw">pub fn </span>autotune_window(<span class="kw-2">&amp;mut </span><span class="self">self</span>, now: time::Instant, rtt: time::Duration) {
+        <span class="self">self</span>.flow_control.autotune_window(now, rtt);
+    }
+
+    <span class="doccomment">/// Shuts down receiving data.
+    </span><span class="kw">pub fn </span>shutdown(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">if </span><span class="self">self</span>.drain {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="self">self</span>.drain = <span class="bool-val">true</span>;
+
+        <span class="self">self</span>.data.clear();
+
+        <span class="self">self</span>.off = <span class="self">self</span>.max_off();
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="doccomment">/// Returns the lowest offset of data buffered.
+    </span><span class="kw">pub fn </span>off_front(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.off
+    }
+
+    <span class="doccomment">/// Returns true if we need to update the local flow control limit.
+    </span><span class="kw">pub fn </span>almost_full(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.fin_off.is_none() &amp;&amp; <span class="self">self</span>.flow_control.should_update_max_data()
+    }
+
+    <span class="doccomment">/// Returns the largest offset ever received.
+    </span><span class="kw">pub fn </span>max_off(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.len
+    }
+
+    <span class="doccomment">/// Returns true if the receive-side of the stream is complete.
+    ///
+    /// This happens when the stream's receive final size is known, and the
+    /// application has read all data from the stream.
+    </span><span class="kw">pub fn </span>is_fin(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="kw">if </span><span class="self">self</span>.fin_off == <span class="prelude-val">Some</span>(<span class="self">self</span>.off) {
+            <span class="kw">return </span><span class="bool-val">true</span>;
+        }
+
+        <span class="bool-val">false
+    </span>}
+
+    <span class="doccomment">/// Returns true if the stream is not storing incoming data.
+    </span><span class="kw">pub fn </span>is_draining(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.drain
+    }
+
+    <span class="doccomment">/// Returns true if the stream has data to be read.
+    </span><span class="kw">pub fn </span>ready(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="kw">let </span>(<span class="kw">_</span>, buf) = <span class="kw">match </span><span class="self">self</span>.data.first_key_value() {
+            <span class="prelude-val">Some</span>(v) =&gt; v,
+            <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="bool-val">false</span>,
+        };
+
+        buf.off() == <span class="self">self</span>.off
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>empty_read() {
+        <span class="kw">let </span><span class="kw-2">mut </span>recv = RecvBuf::new(u64::MAX, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">0</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="macro">assert_eq!</span>(recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>empty_stream_frame() {
+        <span class="kw">let </span><span class="kw-2">mut </span>recv = RecvBuf::new(<span class="number">15</span>, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">0</span>);
+
+        <span class="kw">let </span>buf = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+        <span class="macro">assert!</span>(recv.write(buf).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">1</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+        <span class="macro">assert_eq!</span>(recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>((<span class="number">5</span>, <span class="bool-val">false</span>)));
+
+        <span class="comment">// Don't store non-fin empty buffer.
+        </span><span class="kw">let </span>buf = RangeBuf::from(<span class="string">b""</span>, <span class="number">10</span>, <span class="bool-val">false</span>);
+        <span class="macro">assert!</span>(recv.write(buf).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">0</span>);
+
+        <span class="comment">// Check flow control for empty buffer.
+        </span><span class="kw">let </span>buf = RangeBuf::from(<span class="string">b""</span>, <span class="number">16</span>, <span class="bool-val">false</span>);
+        <span class="macro">assert_eq!</span>(recv.write(buf), <span class="prelude-val">Err</span>(Error::FlowControl));
+
+        <span class="comment">// Store fin empty buffer.
+        </span><span class="kw">let </span>buf = RangeBuf::from(<span class="string">b""</span>, <span class="number">5</span>, <span class="bool-val">true</span>);
+        <span class="macro">assert!</span>(recv.write(buf).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">1</span>);
+
+        <span class="comment">// Don't store additional fin empty buffers.
+        </span><span class="kw">let </span>buf = RangeBuf::from(<span class="string">b""</span>, <span class="number">5</span>, <span class="bool-val">true</span>);
+        <span class="macro">assert!</span>(recv.write(buf).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">1</span>);
+
+        <span class="comment">// Don't store additional fin non-empty buffers.
+        </span><span class="kw">let </span>buf = RangeBuf::from(<span class="string">b"aa"</span>, <span class="number">3</span>, <span class="bool-val">true</span>);
+        <span class="macro">assert!</span>(recv.write(buf).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">1</span>);
+
+        <span class="comment">// Validate final size with fin empty buffers.
+        </span><span class="kw">let </span>buf = RangeBuf::from(<span class="string">b""</span>, <span class="number">6</span>, <span class="bool-val">true</span>);
+        <span class="macro">assert_eq!</span>(recv.write(buf), <span class="prelude-val">Err</span>(Error::FinalSize));
+        <span class="kw">let </span>buf = RangeBuf::from(<span class="string">b""</span>, <span class="number">4</span>, <span class="bool-val">true</span>);
+        <span class="macro">assert_eq!</span>(recv.write(buf), <span class="prelude-val">Err</span>(Error::FinalSize));
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+        <span class="macro">assert_eq!</span>(recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Ok</span>((<span class="number">0</span>, <span class="bool-val">true</span>)));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>ordered_read() {
+        <span class="kw">let </span><span class="kw-2">mut </span>recv = RecvBuf::new(u64::MAX, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">0</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"world"</span>, <span class="number">5</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>third = RangeBuf::from(<span class="string">b"something"</span>, <span class="number">10</span>, <span class="bool-val">true</span>);
+
+        <span class="macro">assert!</span>(recv.write(second).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert!</span>(recv.write(third).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">19</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert!</span>(recv.write(first).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">19</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+
+        <span class="kw">let </span>(len, fin) = recv.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">19</span>);
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"helloworldsomething"</span>);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">19</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">19</span>);
+
+        <span class="macro">assert_eq!</span>(recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>split_read() {
+        <span class="kw">let </span><span class="kw-2">mut </span>recv = RecvBuf::new(u64::MAX, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">0</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"something"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"helloworld"</span>, <span class="number">9</span>, <span class="bool-val">true</span>);
+
+        <span class="macro">assert!</span>(recv.write(first).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+
+        <span class="macro">assert!</span>(recv.write(second).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">19</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+
+        <span class="kw">let </span>(len, fin) = recv.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">10</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">10</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"somethingh"</span>);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">19</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">10</span>);
+
+        <span class="kw">let </span>(len, fin) = recv.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">5</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"ellow"</span>);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">19</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">15</span>);
+
+        <span class="kw">let </span>(len, fin) = recv.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">10</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">4</span>);
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"orld"</span>);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">19</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">19</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>incomplete_read() {
+        <span class="kw">let </span><span class="kw-2">mut </span>recv = RecvBuf::new(u64::MAX, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">0</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"something"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"helloworld"</span>, <span class="number">9</span>, <span class="bool-val">true</span>);
+
+        <span class="macro">assert!</span>(recv.write(second).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">19</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+
+        <span class="macro">assert!</span>(recv.write(first).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">19</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+
+        <span class="kw">let </span>(len, fin) = recv.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">19</span>);
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"somethinghelloworld"</span>);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">19</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">19</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>zero_len_read() {
+        <span class="kw">let </span><span class="kw-2">mut </span>recv = RecvBuf::new(u64::MAX, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">0</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"something"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b""</span>, <span class="number">9</span>, <span class="bool-val">true</span>);
+
+        <span class="macro">assert!</span>(recv.write(first).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">1</span>);
+
+        <span class="macro">assert!</span>(recv.write(second).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">1</span>);
+
+        <span class="kw">let </span>(len, fin) = recv.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">9</span>);
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"something"</span>);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">9</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>past_read() {
+        <span class="kw">let </span><span class="kw-2">mut </span>recv = RecvBuf::new(u64::MAX, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">0</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"something"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">3</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>third = RangeBuf::from(<span class="string">b"ello"</span>, <span class="number">4</span>, <span class="bool-val">true</span>);
+        <span class="kw">let </span>fourth = RangeBuf::from(<span class="string">b"ello"</span>, <span class="number">5</span>, <span class="bool-val">true</span>);
+
+        <span class="macro">assert!</span>(recv.write(first).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">1</span>);
+
+        <span class="kw">let </span>(len, fin) = recv.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">9</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"something"</span>);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">9</span>);
+
+        <span class="macro">assert!</span>(recv.write(second).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(recv.write(third), <span class="prelude-val">Err</span>(Error::FinalSize));
+
+        <span class="macro">assert!</span>(recv.write(fourth).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>fully_overlapping_read() {
+        <span class="kw">let </span><span class="kw-2">mut </span>recv = RecvBuf::new(u64::MAX, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">0</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"something"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">4</span>, <span class="bool-val">false</span>);
+
+        <span class="macro">assert!</span>(recv.write(first).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">1</span>);
+
+        <span class="macro">assert!</span>(recv.write(second).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">1</span>);
+
+        <span class="kw">let </span>(len, fin) = recv.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">9</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"something"</span>);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>fully_overlapping_read2() {
+        <span class="kw">let </span><span class="kw-2">mut </span>recv = RecvBuf::new(u64::MAX, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">0</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"something"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">4</span>, <span class="bool-val">false</span>);
+
+        <span class="macro">assert!</span>(recv.write(second).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">1</span>);
+
+        <span class="macro">assert!</span>(recv.write(first).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">2</span>);
+
+        <span class="kw">let </span>(len, fin) = recv.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">9</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"somehello"</span>);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>fully_overlapping_read3() {
+        <span class="kw">let </span><span class="kw-2">mut </span>recv = RecvBuf::new(u64::MAX, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">0</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"something"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">3</span>, <span class="bool-val">false</span>);
+
+        <span class="macro">assert!</span>(recv.write(second).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">8</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">1</span>);
+
+        <span class="macro">assert!</span>(recv.write(first).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">3</span>);
+
+        <span class="kw">let </span>(len, fin) = recv.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">9</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"somhellog"</span>);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>fully_overlapping_read_multi() {
+        <span class="kw">let </span><span class="kw-2">mut </span>recv = RecvBuf::new(u64::MAX, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">0</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"somethingsomething"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">3</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>third = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">12</span>, <span class="bool-val">false</span>);
+
+        <span class="macro">assert!</span>(recv.write(second).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">8</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">1</span>);
+
+        <span class="macro">assert!</span>(recv.write(third).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">17</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">2</span>);
+
+        <span class="macro">assert!</span>(recv.write(first).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">18</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">5</span>);
+
+        <span class="kw">let </span>(len, fin) = recv.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">18</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"somhellogsomhellog"</span>);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">18</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">18</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>overlapping_start_read() {
+        <span class="kw">let </span><span class="kw-2">mut </span>recv = RecvBuf::new(u64::MAX, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">0</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"something"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">8</span>, <span class="bool-val">true</span>);
+
+        <span class="macro">assert!</span>(recv.write(first).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">1</span>);
+
+        <span class="macro">assert!</span>(recv.write(second).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">13</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">2</span>);
+
+        <span class="kw">let </span>(len, fin) = recv.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">13</span>);
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"somethingello"</span>);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">13</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">13</span>);
+
+        <span class="macro">assert_eq!</span>(recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>overlapping_end_read() {
+        <span class="kw">let </span><span class="kw-2">mut </span>recv = RecvBuf::new(u64::MAX, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">0</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"something"</span>, <span class="number">3</span>, <span class="bool-val">true</span>);
+
+        <span class="macro">assert!</span>(recv.write(second).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">12</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">1</span>);
+
+        <span class="macro">assert!</span>(recv.write(first).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">12</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">2</span>);
+
+        <span class="kw">let </span>(len, fin) = recv.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">12</span>);
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"helsomething"</span>);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">12</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">12</span>);
+
+        <span class="macro">assert_eq!</span>(recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>overlapping_end_twice_read() {
+        <span class="kw">let </span><span class="kw-2">mut </span>recv = RecvBuf::new(u64::MAX, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">0</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"he"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"ow"</span>, <span class="number">4</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>third = RangeBuf::from(<span class="string">b"rl"</span>, <span class="number">7</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>fourth = RangeBuf::from(<span class="string">b"helloworld"</span>, <span class="number">0</span>, <span class="bool-val">true</span>);
+
+        <span class="macro">assert!</span>(recv.write(third).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">1</span>);
+
+        <span class="macro">assert!</span>(recv.write(second).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">2</span>);
+
+        <span class="macro">assert!</span>(recv.write(first).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">3</span>);
+
+        <span class="macro">assert!</span>(recv.write(fourth).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">6</span>);
+
+        <span class="kw">let </span>(len, fin) = recv.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">10</span>);
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"helloworld"</span>);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">10</span>);
+
+        <span class="macro">assert_eq!</span>(recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>overlapping_end_twice_and_contained_read() {
+        <span class="kw">let </span><span class="kw-2">mut </span>recv = RecvBuf::new(u64::MAX, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">0</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"hellow"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"barfoo"</span>, <span class="number">10</span>, <span class="bool-val">true</span>);
+        <span class="kw">let </span>third = RangeBuf::from(<span class="string">b"rl"</span>, <span class="number">7</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>fourth = RangeBuf::from(<span class="string">b"elloworldbarfoo"</span>, <span class="number">1</span>, <span class="bool-val">true</span>);
+
+        <span class="macro">assert!</span>(recv.write(third).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">1</span>);
+
+        <span class="macro">assert!</span>(recv.write(second).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">16</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">2</span>);
+
+        <span class="macro">assert!</span>(recv.write(first).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">16</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">3</span>);
+
+        <span class="macro">assert!</span>(recv.write(fourth).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">16</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">5</span>);
+
+        <span class="kw">let </span>(len, fin) = recv.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">16</span>);
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"helloworldbarfoo"</span>);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">16</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">16</span>);
+
+        <span class="macro">assert_eq!</span>(recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>partially_multi_overlapping_reordered_read() {
+        <span class="kw">let </span><span class="kw-2">mut </span>recv = RecvBuf::new(u64::MAX, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">0</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"hello"</span>, <span class="number">8</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"something"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>third = RangeBuf::from(<span class="string">b"moar"</span>, <span class="number">11</span>, <span class="bool-val">true</span>);
+
+        <span class="macro">assert!</span>(recv.write(first).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">13</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">1</span>);
+
+        <span class="macro">assert!</span>(recv.write(second).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">13</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">2</span>);
+
+        <span class="macro">assert!</span>(recv.write(third).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">15</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">3</span>);
+
+        <span class="kw">let </span>(len, fin) = recv.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">15</span>);
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"somethinhelloar"</span>);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">15</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">15</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>partially_multi_overlapping_reordered_read2() {
+        <span class="kw">let </span><span class="kw-2">mut </span>recv = RecvBuf::new(u64::MAX, DEFAULT_STREAM_WINDOW);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">0</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">32</span>];
+
+        <span class="kw">let </span>first = RangeBuf::from(<span class="string">b"aaa"</span>, <span class="number">0</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>second = RangeBuf::from(<span class="string">b"bbb"</span>, <span class="number">2</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>third = RangeBuf::from(<span class="string">b"ccc"</span>, <span class="number">4</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>fourth = RangeBuf::from(<span class="string">b"ddd"</span>, <span class="number">6</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>fifth = RangeBuf::from(<span class="string">b"eee"</span>, <span class="number">9</span>, <span class="bool-val">false</span>);
+        <span class="kw">let </span>sixth = RangeBuf::from(<span class="string">b"fff"</span>, <span class="number">11</span>, <span class="bool-val">false</span>);
+
+        <span class="macro">assert!</span>(recv.write(second).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">1</span>);
+
+        <span class="macro">assert!</span>(recv.write(fourth).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">2</span>);
+
+        <span class="macro">assert!</span>(recv.write(third).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">3</span>);
+
+        <span class="macro">assert!</span>(recv.write(first).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">9</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">4</span>);
+
+        <span class="macro">assert!</span>(recv.write(sixth).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">14</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">5</span>);
+
+        <span class="macro">assert!</span>(recv.write(fifth).is_ok());
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">14</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">6</span>);
+
+        <span class="kw">let </span>(len, fin) = recv.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(len, <span class="number">14</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..len], <span class="string">b"aabbbcdddeefff"</span>);
+        <span class="macro">assert_eq!</span>(recv.len, <span class="number">14</span>);
+        <span class="macro">assert_eq!</span>(recv.off, <span class="number">14</span>);
+        <span class="macro">assert_eq!</span>(recv.data.len(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(recv.emit(<span class="kw-2">&amp;mut </span>buf), <span class="prelude-val">Err</span>(Error::Done));
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/stream/send_buf.rs.html b/src/quiche/stream/send_buf.rs.html
new file mode 100644
index 0000000..708e4d6
--- /dev/null
+++ b/src/quiche/stream/send_buf.rs.html
@@ -0,0 +1,1563 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/stream/send_buf.rs`."><title>send_buf.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2023, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span>std::cmp;
+
+<span class="kw">use </span>std::collections::VecDeque;
+
+<span class="kw">use </span><span class="kw">crate</span>::Error;
+<span class="kw">use </span><span class="kw">crate</span>::Result;
+
+<span class="kw">use </span><span class="kw">crate</span>::ranges;
+
+<span class="kw">use </span><span class="kw">super</span>::RangeBuf;
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">const </span>SEND_BUFFER_SIZE: usize = <span class="number">5</span>;
+
+<span class="attr">#[cfg(not(test))]
+</span><span class="kw">const </span>SEND_BUFFER_SIZE: usize = <span class="number">4096</span>;
+
+<span class="doccomment">/// Send-side stream buffer.
+///
+/// Stream data scheduled to be sent to the peer is buffered in a list of data
+/// chunks ordered by offset in ascending order. Contiguous data can then be
+/// read into a slice.
+///
+/// By default, new data is appended at the end of the stream, but data can be
+/// inserted at the start of the buffer (this is to allow data that needs to be
+/// retransmitted to be re-buffered).
+</span><span class="attr">#[derive(Debug, Default)]
+</span><span class="kw">pub struct </span>SendBuf {
+    <span class="doccomment">/// Chunks of data to be sent, ordered by offset.
+    </span>data: VecDeque&lt;RangeBuf&gt;,
+
+    <span class="doccomment">/// The index of the buffer that needs to be sent next.
+    </span>pos: usize,
+
+    <span class="doccomment">/// The maximum offset of data buffered in the stream.
+    </span>off: u64,
+
+    <span class="doccomment">/// The maximum offset of data sent to the peer, regardless of
+    /// retransmissions.
+    </span>emit_off: u64,
+
+    <span class="doccomment">/// The amount of data currently buffered.
+    </span>len: u64,
+
+    <span class="doccomment">/// The maximum offset we are allowed to send to the peer.
+    </span>max_data: u64,
+
+    <span class="doccomment">/// The last offset the stream was blocked at, if any.
+    </span>blocked_at: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    <span class="doccomment">/// The final stream offset written to the stream, if any.
+    </span>fin_off: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+
+    <span class="doccomment">/// Whether the stream's send-side has been shut down.
+    </span>shutdown: bool,
+
+    <span class="doccomment">/// Ranges of data offsets that have been acked.
+    </span>acked: ranges::RangeSet,
+
+    <span class="doccomment">/// The error code received via STOP_SENDING.
+    </span>error: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+}
+
+<span class="kw">impl </span>SendBuf {
+    <span class="doccomment">/// Creates a new send buffer.
+    </span><span class="kw">pub fn </span>new(max_data: u64) -&gt; SendBuf {
+        SendBuf {
+            max_data,
+            ..SendBuf::default()
+        }
+    }
+
+    <span class="doccomment">/// Inserts the given slice of data at the end of the buffer.
+    ///
+    /// The number of bytes that were actually stored in the buffer is returned
+    /// (this may be lower than the size of the input buffer, in case of partial
+    /// writes).
+    </span><span class="kw">pub fn </span>write(<span class="kw-2">&amp;mut </span><span class="self">self</span>, <span class="kw-2">mut </span>data: <span class="kw-2">&amp;</span>[u8], <span class="kw-2">mut </span>fin: bool) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="kw">let </span>max_off = <span class="self">self</span>.off + data.len() <span class="kw">as </span>u64;
+
+        <span class="comment">// Get the stream send capacity. This will return an error if the stream
+        // was stopped.
+        </span><span class="kw">let </span>capacity = <span class="self">self</span>.cap()<span class="question-mark">?</span>;
+
+        <span class="kw">if </span>data.len() &gt; capacity {
+            <span class="comment">// Truncate the input buffer according to the stream's capacity.
+            </span><span class="kw">let </span>len = capacity;
+            data = <span class="kw-2">&amp;</span>data[..len];
+
+            <span class="comment">// We are not buffering the full input, so clear the fin flag.
+            </span>fin = <span class="bool-val">false</span>;
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(fin_off) = <span class="self">self</span>.fin_off {
+            <span class="comment">// Can't write past final offset.
+            </span><span class="kw">if </span>max_off &gt; fin_off {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FinalSize);
+            }
+
+            <span class="comment">// Can't "undo" final offset.
+            </span><span class="kw">if </span>max_off == fin_off &amp;&amp; !fin {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::FinalSize);
+            }
+        }
+
+        <span class="kw">if </span>fin {
+            <span class="self">self</span>.fin_off = <span class="prelude-val">Some</span>(max_off);
+        }
+
+        <span class="comment">// Don't queue data that was already fully acked.
+        </span><span class="kw">if </span><span class="self">self</span>.ack_off() &gt;= max_off {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(data.len());
+        }
+
+        <span class="comment">// We already recorded the final offset, so we can just discard the
+        // empty buffer now.
+        </span><span class="kw">if </span>data.is_empty() {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(data.len());
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>len = <span class="number">0</span>;
+
+        <span class="comment">// Split the remaining input data into consistently-sized buffers to
+        // avoid fragmentation.
+        </span><span class="kw">for </span>chunk <span class="kw">in </span>data.chunks(SEND_BUFFER_SIZE) {
+            len += chunk.len();
+
+            <span class="kw">let </span>fin = len == data.len() &amp;&amp; fin;
+
+            <span class="kw">let </span>buf = RangeBuf::from(chunk, <span class="self">self</span>.off, fin);
+
+            <span class="comment">// The new data can simply be appended at the end of the send buffer.
+            </span><span class="self">self</span>.data.push_back(buf);
+
+            <span class="self">self</span>.off += chunk.len() <span class="kw">as </span>u64;
+            <span class="self">self</span>.len += chunk.len() <span class="kw">as </span>u64;
+        }
+
+        <span class="prelude-val">Ok</span>(len)
+    }
+
+    <span class="doccomment">/// Writes data from the send buffer into the given output buffer.
+    </span><span class="kw">pub fn </span>emit(<span class="kw-2">&amp;mut </span><span class="self">self</span>, out: <span class="kw-2">&amp;mut </span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;(usize, bool)&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>out_len = out.len();
+        <span class="kw">let </span>out_off = <span class="self">self</span>.off_front();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>next_off = out_off;
+
+        <span class="kw">while </span>out_len &gt; <span class="number">0 </span>{
+            <span class="kw">let </span>off_front = <span class="self">self</span>.off_front();
+
+            <span class="kw">if </span><span class="self">self</span>.is_empty() ||
+                off_front &gt;= <span class="self">self</span>.off ||
+                off_front != next_off ||
+                off_front &gt;= <span class="self">self</span>.max_data
+            {
+                <span class="kw">break</span>;
+            }
+
+            <span class="kw">let </span>buf = <span class="kw">match </span><span class="self">self</span>.data.get_mut(<span class="self">self</span>.pos) {
+                <span class="prelude-val">Some</span>(v) =&gt; v,
+
+                <span class="prelude-val">None </span>=&gt; <span class="kw">break</span>,
+            };
+
+            <span class="kw">if </span>buf.is_empty() {
+                <span class="self">self</span>.pos += <span class="number">1</span>;
+                <span class="kw">continue</span>;
+            }
+
+            <span class="kw">let </span>buf_len = cmp::min(buf.len(), out_len);
+            <span class="kw">let </span>partial = buf_len &lt; buf.len();
+
+            <span class="comment">// Copy data to the output buffer.
+            </span><span class="kw">let </span>out_pos = (next_off - out_off) <span class="kw">as </span>usize;
+            out[out_pos..out_pos + buf_len].copy_from_slice(<span class="kw-2">&amp;</span>buf[..buf_len]);
+
+            <span class="self">self</span>.len -= buf_len <span class="kw">as </span>u64;
+
+            out_len -= buf_len;
+
+            next_off = buf.off() + buf_len <span class="kw">as </span>u64;
+
+            buf.consume(buf_len);
+
+            <span class="kw">if </span>partial {
+                <span class="comment">// We reached the maximum capacity, so end here.
+                </span><span class="kw">break</span>;
+            }
+
+            <span class="self">self</span>.pos += <span class="number">1</span>;
+        }
+
+        <span class="comment">// Override the `fin` flag set for the output buffer by matching the
+        // buffer's maximum offset against the stream's final offset (if known).
+        //
+        // This is more efficient than tracking `fin` using the range buffers
+        // themselves, and lets us avoid queueing empty buffers just so we can
+        // propagate the final size.
+        </span><span class="kw">let </span>fin = <span class="self">self</span>.fin_off == <span class="prelude-val">Some</span>(next_off);
+
+        <span class="comment">// Record the largest offset that has been sent so we can accurately
+        // report final_size
+        </span><span class="self">self</span>.emit_off = cmp::max(<span class="self">self</span>.emit_off, next_off);
+
+        <span class="prelude-val">Ok</span>((out.len() - out_len, fin))
+    }
+
+    <span class="doccomment">/// Updates the max_data limit to the given value.
+    </span><span class="kw">pub fn </span>update_max_data(<span class="kw-2">&amp;mut </span><span class="self">self</span>, max_data: u64) {
+        <span class="self">self</span>.max_data = cmp::max(<span class="self">self</span>.max_data, max_data);
+    }
+
+    <span class="doccomment">/// Updates the last offset the stream was blocked at, if any.
+    </span><span class="kw">pub fn </span>update_blocked_at(<span class="kw-2">&amp;mut </span><span class="self">self</span>, blocked_at: <span class="prelude-ty">Option</span>&lt;u64&gt;) {
+        <span class="self">self</span>.blocked_at = blocked_at;
+    }
+
+    <span class="doccomment">/// The last offset the stream was blocked at, if any.
+    </span><span class="kw">pub fn </span>blocked_at(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;u64&gt; {
+        <span class="self">self</span>.blocked_at
+    }
+
+    <span class="doccomment">/// Increments the acked data offset.
+    </span><span class="kw">pub fn </span>ack(<span class="kw-2">&amp;mut </span><span class="self">self</span>, off: u64, len: usize) {
+        <span class="self">self</span>.acked.insert(off..off + len <span class="kw">as </span>u64);
+    }
+
+    <span class="kw">pub fn </span>ack_and_drop(<span class="kw-2">&amp;mut </span><span class="self">self</span>, off: u64, len: usize) {
+        <span class="self">self</span>.ack(off, len);
+
+        <span class="kw">let </span>ack_off = <span class="self">self</span>.ack_off();
+
+        <span class="kw">if </span><span class="self">self</span>.data.is_empty() {
+            <span class="kw">return</span>;
+        }
+
+        <span class="kw">if </span>off &gt; ack_off {
+            <span class="kw">return</span>;
+        }
+
+        <span class="kw">let </span><span class="kw-2">mut </span>drop_until = <span class="prelude-val">None</span>;
+
+        <span class="comment">// Drop contiguously acked data from the front of the buffer.
+        </span><span class="kw">for </span>(i, buf) <span class="kw">in </span><span class="self">self</span>.data.iter_mut().enumerate() {
+            <span class="comment">// Newly acked range is past highest contiguous acked range, so we
+            // can't drop it.
+            </span><span class="kw">if </span>buf.off &gt;= ack_off {
+                <span class="kw">break</span>;
+            }
+
+            <span class="comment">// Highest contiguous acked range falls within newly acked range,
+            // so we can't drop it.
+            </span><span class="kw">if </span>buf.off &lt; ack_off &amp;&amp; ack_off &lt; buf.max_off() {
+                <span class="kw">break</span>;
+            }
+
+            <span class="comment">// Newly acked range can be dropped.
+            </span>drop_until = <span class="prelude-val">Some</span>(i);
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(drop) = drop_until {
+            <span class="self">self</span>.data.drain(..=drop);
+
+            <span class="comment">// When a buffer is marked for retransmission, but then acked before
+            // it could be retransmitted, we might end up decreasing the SendBuf
+            // position too much, so make sure that doesn't happen.
+            </span><span class="self">self</span>.pos = <span class="self">self</span>.pos.saturating_sub(drop + <span class="number">1</span>);
+        }
+    }
+
+    <span class="kw">pub fn </span>retransmit(<span class="kw-2">&amp;mut </span><span class="self">self</span>, off: u64, len: usize) {
+        <span class="kw">let </span>max_off = off + len <span class="kw">as </span>u64;
+        <span class="kw">let </span>ack_off = <span class="self">self</span>.ack_off();
+
+        <span class="kw">if </span><span class="self">self</span>.data.is_empty() {
+            <span class="kw">return</span>;
+        }
+
+        <span class="kw">if </span>max_off &lt;= ack_off {
+            <span class="kw">return</span>;
+        }
+
+        <span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..<span class="self">self</span>.data.len() {
+            <span class="kw">let </span>buf = <span class="kw-2">&amp;mut </span><span class="self">self</span>.data[i];
+
+            <span class="kw">if </span>buf.off &gt;= max_off {
+                <span class="kw">break</span>;
+            }
+
+            <span class="kw">if </span>off &gt; buf.max_off() {
+                <span class="kw">continue</span>;
+            }
+
+            <span class="comment">// Split the buffer into 2 if the retransmit range ends before the
+            // buffer's final offset.
+            </span><span class="kw">let </span>new_buf = <span class="kw">if </span>buf.off &lt; max_off &amp;&amp; max_off &lt; buf.max_off() {
+                <span class="prelude-val">Some</span>(buf.split_off((max_off - buf.off) <span class="kw">as </span>usize))
+            } <span class="kw">else </span>{
+                <span class="prelude-val">None
+            </span>};
+
+            <span class="kw">let </span>prev_pos = buf.pos;
+
+            <span class="comment">// Reduce the buffer's position (expand the buffer) if the retransmit
+            // range is past the buffer's starting offset.
+            </span>buf.pos = <span class="kw">if </span>off &gt; buf.off &amp;&amp; off &lt;= buf.max_off() {
+                cmp::min(buf.pos, buf.start + (off - buf.off) <span class="kw">as </span>usize)
+            } <span class="kw">else </span>{
+                buf.start
+            };
+
+            <span class="self">self</span>.pos = cmp::min(<span class="self">self</span>.pos, i);
+
+            <span class="self">self</span>.len += (prev_pos - buf.pos) <span class="kw">as </span>u64;
+
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(b) = new_buf {
+                <span class="self">self</span>.data.insert(i + <span class="number">1</span>, b);
+            }
+        }
+    }
+
+    <span class="doccomment">/// Resets the stream at the current offset and clears all buffered data.
+    </span><span class="kw">pub fn </span>reset(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; (u64, u64) {
+        <span class="kw">let </span>unsent_off = cmp::max(<span class="self">self</span>.off_front(), <span class="self">self</span>.emit_off);
+        <span class="kw">let </span>unsent_len = <span class="self">self</span>.off_back().saturating_sub(unsent_off);
+
+        <span class="self">self</span>.fin_off = <span class="prelude-val">Some</span>(unsent_off);
+
+        <span class="comment">// Drop all buffered data.
+        </span><span class="self">self</span>.data.clear();
+
+        <span class="comment">// Mark all data as acked.
+        </span><span class="self">self</span>.ack(<span class="number">0</span>, <span class="self">self</span>.off <span class="kw">as </span>usize);
+
+        <span class="self">self</span>.pos = <span class="number">0</span>;
+        <span class="self">self</span>.len = <span class="number">0</span>;
+        <span class="self">self</span>.off = unsent_off;
+
+        (<span class="self">self</span>.emit_off, unsent_len)
+    }
+
+    <span class="doccomment">/// Resets the streams and records the received error code.
+    ///
+    /// Calling this again after the first time has no effect.
+    </span><span class="kw">pub fn </span>stop(<span class="kw-2">&amp;mut </span><span class="self">self</span>, error_code: u64) -&gt; <span class="prelude-ty">Result</span>&lt;(u64, u64)&gt; {
+        <span class="kw">if </span><span class="self">self</span>.error.is_some() {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="kw">let </span>(max_off, unsent) = <span class="self">self</span>.reset();
+
+        <span class="self">self</span>.error = <span class="prelude-val">Some</span>(error_code);
+
+        <span class="prelude-val">Ok</span>((max_off, unsent))
+    }
+
+    <span class="doccomment">/// Shuts down sending data.
+    </span><span class="kw">pub fn </span>shutdown(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;(u64, u64)&gt; {
+        <span class="kw">if </span><span class="self">self</span>.shutdown {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::Done);
+        }
+
+        <span class="self">self</span>.shutdown = <span class="bool-val">true</span>;
+
+        <span class="prelude-val">Ok</span>(<span class="self">self</span>.reset())
+    }
+
+    <span class="doccomment">/// Returns the largest offset of data buffered.
+    </span><span class="kw">pub fn </span>off_back(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.off
+    }
+
+    <span class="doccomment">/// Returns the lowest offset of data buffered.
+    </span><span class="kw">pub fn </span>off_front(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="kw">let </span><span class="kw-2">mut </span>pos = <span class="self">self</span>.pos;
+
+        <span class="comment">// Skip empty buffers from the start of the queue.
+        </span><span class="kw">while let </span><span class="prelude-val">Some</span>(b) = <span class="self">self</span>.data.get(pos) {
+            <span class="kw">if </span>!b.is_empty() {
+                <span class="kw">return </span>b.off();
+            }
+
+            pos += <span class="number">1</span>;
+        }
+
+        <span class="self">self</span>.off
+    }
+
+    <span class="doccomment">/// The maximum offset we are allowed to send to the peer.
+    </span><span class="kw">pub fn </span>max_off(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="self">self</span>.max_data
+    }
+
+    <span class="doccomment">/// Returns true if all data in the stream has been sent.
+    ///
+    /// This happens when the stream's send final size is known, and the
+    /// application has already written data up to that point.
+    </span><span class="kw">pub fn </span>is_fin(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="kw">if </span><span class="self">self</span>.fin_off == <span class="prelude-val">Some</span>(<span class="self">self</span>.off) {
+            <span class="kw">return </span><span class="bool-val">true</span>;
+        }
+
+        <span class="bool-val">false
+    </span>}
+
+    <span class="doccomment">/// Returns true if the send-side of the stream is complete.
+    ///
+    /// This happens when the stream's send final size is known, and the peer
+    /// has already acked all stream data up to that point.
+    </span><span class="kw">pub fn </span>is_complete(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(fin_off) = <span class="self">self</span>.fin_off {
+            <span class="kw">if </span><span class="self">self</span>.acked == (<span class="number">0</span>..fin_off) {
+                <span class="kw">return </span><span class="bool-val">true</span>;
+            }
+        }
+
+        <span class="bool-val">false
+    </span>}
+
+    <span class="doccomment">/// Returns true if the stream was stopped before completion.
+    </span><span class="kw">pub fn </span>is_stopped(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.error.is_some()
+    }
+
+    <span class="doccomment">/// Returns true if the stream was shut down.
+    </span><span class="kw">pub fn </span>is_shutdown(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.shutdown
+    }
+
+    <span class="doccomment">/// Returns true if there is no data.
+    </span><span class="kw">pub fn </span>is_empty(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="self">self</span>.data.is_empty()
+    }
+
+    <span class="doccomment">/// Returns the highest contiguously acked offset.
+    </span><span class="kw">pub fn </span>ack_off(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; u64 {
+        <span class="kw">match </span><span class="self">self</span>.acked.iter().next() {
+            <span class="comment">// Only consider the initial range if it contiguously covers the
+            // start of the stream (i.e. from offset 0).
+            </span><span class="prelude-val">Some</span>(std::ops::Range { start: <span class="number">0</span>, end }) =&gt; end,
+
+            <span class="prelude-val">Some</span>(<span class="kw">_</span>) | <span class="prelude-val">None </span>=&gt; <span class="number">0</span>,
+        }
+    }
+
+    <span class="doccomment">/// Returns the outgoing flow control capacity.
+    </span><span class="kw">pub fn </span>cap(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="comment">// The stream was stopped, so return the error code instead.
+        </span><span class="kw">if let </span><span class="prelude-val">Some</span>(e) = <span class="self">self</span>.error {
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::StreamStopped(e));
+        }
+
+        <span class="prelude-val">Ok</span>((<span class="self">self</span>.max_data - <span class="self">self</span>.off) <span class="kw">as </span>usize)
+    }
+
+    <span class="doccomment">/// Returns the number of separate buffers stored.
+    </span><span class="attr">#[allow(dead_code)]
+    </span><span class="kw">pub fn </span>bufs_count(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
+        <span class="self">self</span>.data.len()
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>empty_write() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">5</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>send = SendBuf::new(u64::MAX);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">0</span>);
+
+        <span class="kw">let </span>(written, fin) = send.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">0</span>);
+        <span class="macro">assert!</span>(!fin);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>multi_write() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">128</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>send = SendBuf::new(u64::MAX);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">0</span>);
+
+        <span class="kw">let </span>first = <span class="string">b"something"</span>;
+        <span class="kw">let </span>second = <span class="string">b"helloworld"</span>;
+
+        <span class="macro">assert!</span>(send.write(first, <span class="bool-val">false</span>).is_ok());
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">9</span>);
+
+        <span class="macro">assert!</span>(send.write(second, <span class="bool-val">true</span>).is_ok());
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">19</span>);
+
+        <span class="kw">let </span>(written, fin) = send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">128</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">19</span>);
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"somethinghelloworld"</span>);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">0</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>split_write() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">10</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>send = SendBuf::new(u64::MAX);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">0</span>);
+
+        <span class="kw">let </span>first = <span class="string">b"something"</span>;
+        <span class="kw">let </span>second = <span class="string">b"helloworld"</span>;
+
+        <span class="macro">assert!</span>(send.write(first, <span class="bool-val">false</span>).is_ok());
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">9</span>);
+
+        <span class="macro">assert!</span>(send.write(second, <span class="bool-val">true</span>).is_ok());
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">19</span>);
+
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">0</span>);
+
+        <span class="kw">let </span>(written, fin) = send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">10</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">10</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"somethingh"</span>);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">9</span>);
+
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">10</span>);
+
+        <span class="kw">let </span>(written, fin) = send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">5</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"ellow"</span>);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">4</span>);
+
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">15</span>);
+
+        <span class="kw">let </span>(written, fin) = send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">10</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">4</span>);
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"orld"</span>);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">19</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>resend() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">15</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>send = SendBuf::new(u64::MAX);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">0</span>);
+
+        <span class="kw">let </span>first = <span class="string">b"something"</span>;
+        <span class="kw">let </span>second = <span class="string">b"helloworld"</span>;
+
+        <span class="macro">assert!</span>(send.write(first, <span class="bool-val">false</span>).is_ok());
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">0</span>);
+
+        <span class="macro">assert!</span>(send.write(second, <span class="bool-val">true</span>).is_ok());
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">19</span>);
+
+        <span class="kw">let </span>(written, fin) = send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">4</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">4</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"some"</span>);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">15</span>);
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">4</span>);
+
+        <span class="kw">let </span>(written, fin) = send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">5</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"thing"</span>);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">9</span>);
+
+        <span class="kw">let </span>(written, fin) = send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">5</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">5</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"hello"</span>);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">14</span>);
+
+        send.retransmit(<span class="number">4</span>, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">10</span>);
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">4</span>);
+
+        send.retransmit(<span class="number">0</span>, <span class="number">4</span>);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">14</span>);
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">0</span>);
+
+        <span class="kw">let </span>(written, fin) = send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">11</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">9</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"something"</span>);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">14</span>);
+
+        <span class="kw">let </span>(written, fin) = send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">11</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">5</span>);
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"world"</span>);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">19</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>write_blocked_by_off() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">10</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>send = SendBuf::default();
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">0</span>);
+
+        <span class="kw">let </span>first = <span class="string">b"something"</span>;
+        <span class="kw">let </span>second = <span class="string">b"helloworld"</span>;
+
+        <span class="macro">assert_eq!</span>(send.write(first, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(send.write(second, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">0</span>);
+
+        send.update_max_data(<span class="number">5</span>);
+
+        <span class="macro">assert_eq!</span>(send.write(first, <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">5</span>));
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">5</span>);
+
+        <span class="macro">assert_eq!</span>(send.write(second, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">0</span>));
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">5</span>);
+
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">0</span>);
+
+        <span class="kw">let </span>(written, fin) = send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">10</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">5</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"somet"</span>);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">5</span>);
+
+        <span class="kw">let </span>(written, fin) = send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">10</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">0</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b""</span>);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">0</span>);
+
+        send.update_max_data(<span class="number">15</span>);
+
+        <span class="macro">assert_eq!</span>(send.write(<span class="kw-2">&amp;</span>first[<span class="number">5</span>..], <span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">4</span>);
+
+        <span class="macro">assert_eq!</span>(send.write(second, <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">6</span>));
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">10</span>);
+
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">5</span>);
+
+        <span class="kw">let </span>(written, fin) = send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">10</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">10</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..<span class="number">10</span>], <span class="string">b"hinghellow"</span>);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">0</span>);
+
+        send.update_max_data(<span class="number">25</span>);
+
+        <span class="macro">assert_eq!</span>(send.write(<span class="kw-2">&amp;</span>second[<span class="number">6</span>..], <span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">4</span>);
+
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">15</span>);
+
+        <span class="kw">let </span>(written, fin) = send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">10</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">4</span>);
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"orld"</span>);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">0</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>zero_len_write() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">10</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>send = SendBuf::new(u64::MAX);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">0</span>);
+
+        <span class="kw">let </span>first = <span class="string">b"something"</span>;
+
+        <span class="macro">assert!</span>(send.write(first, <span class="bool-val">false</span>).is_ok());
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">9</span>);
+
+        <span class="macro">assert!</span>(send.write(<span class="kw-2">&amp;</span>[], <span class="bool-val">true</span>).is_ok());
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">9</span>);
+
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">0</span>);
+
+        <span class="kw">let </span>(written, fin) = send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">10</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">9</span>);
+        <span class="macro">assert!</span>(fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"something"</span>);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">0</span>);
+    }
+
+    <span class="doccomment">/// Check SendBuf::len calculation on a retransmit case
+    </span><span class="attr">#[test]
+    </span><span class="kw">fn </span>send_buf_len_on_retransmit() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">15</span>];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>send = SendBuf::new(u64::MAX);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">0</span>);
+
+        <span class="kw">let </span>first = <span class="string">b"something"</span>;
+
+        <span class="macro">assert!</span>(send.write(first, <span class="bool-val">false</span>).is_ok());
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">0</span>);
+
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">9</span>);
+
+        <span class="kw">let </span>(written, fin) = send.emit(<span class="kw-2">&amp;mut </span>buf[..<span class="number">4</span>]).unwrap();
+        <span class="macro">assert_eq!</span>(written, <span class="number">4</span>);
+        <span class="macro">assert!</span>(!fin);
+        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>buf[..written], <span class="string">b"some"</span>);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">4</span>);
+
+        send.retransmit(<span class="number">3</span>, <span class="number">5</span>);
+        <span class="macro">assert_eq!</span>(send.len, <span class="number">6</span>);
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">3</span>);
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>send_buf_final_size_retransmit() {
+        <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">50</span>];
+        <span class="kw">let </span><span class="kw-2">mut </span>send = SendBuf::new(u64::MAX);
+
+        send.write(<span class="kw-2">&amp;</span>buf, <span class="bool-val">false</span>).unwrap();
+        <span class="macro">assert_eq!</span>(send.off_front(), <span class="number">0</span>);
+
+        <span class="comment">// Emit the whole buffer
+        </span><span class="kw">let </span>(written, _fin) = send.emit(<span class="kw-2">&amp;mut </span>buf).unwrap();
+        <span class="macro">assert_eq!</span>(written, buf.len());
+        <span class="macro">assert_eq!</span>(send.off_front(), buf.len() <span class="kw">as </span>u64);
+
+        <span class="comment">// Server decides to retransmit the last 10 bytes. It's possible
+        // it's not actually lost and that the client did receive it.
+        </span>send.retransmit(<span class="number">40</span>, <span class="number">10</span>);
+
+        <span class="comment">// Server receives STOP_SENDING from client. The final_size we
+        // send in the RESET_STREAM should be 50. If we send anything less,
+        // it's a FINAL_SIZE_ERROR.
+        </span><span class="kw">let </span>(fin_off, unsent) = send.stop(<span class="number">0</span>).unwrap();
+        <span class="macro">assert_eq!</span>(fin_off, <span class="number">50</span>);
+        <span class="macro">assert_eq!</span>(unsent, <span class="number">0</span>);
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/tls/mod.rs.html b/src/quiche/tls/mod.rs.html
new file mode 100644
index 0000000..274283f
--- /dev/null
+++ b/src/quiche/tls/mod.rs.html
@@ -0,0 +1,2433 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/tls/mod.rs`."><title>mod.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2018-2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span>std::ffi;
+<span class="kw">use </span>std::ptr;
+<span class="kw">use </span>std::slice;
+
+<span class="kw">use </span>std::io::Write;
+
+<span class="kw">use </span>once_cell::sync::Lazy;
+
+<span class="kw">use </span>libc::c_char;
+<span class="kw">use </span>libc::c_int;
+<span class="kw">use </span>libc::c_uint;
+<span class="kw">use </span>libc::c_void;
+
+<span class="kw">use </span><span class="kw">crate</span>::Error;
+<span class="kw">use </span><span class="kw">crate</span>::Result;
+
+<span class="kw">use </span><span class="kw">crate</span>::Connection;
+<span class="kw">use </span><span class="kw">crate</span>::ConnectionError;
+
+<span class="kw">use </span><span class="kw">crate</span>::crypto;
+<span class="kw">use </span><span class="kw">crate</span>::packet;
+
+<span class="kw">const </span>TLS1_3_VERSION: u16 = <span class="number">0x0304</span>;
+<span class="kw">const </span>TLS_ALERT_ERROR: u64 = <span class="number">0x100</span>;
+<span class="kw">const </span>INTERNAL_ERROR: u64 = <span class="number">0x01</span>;
+
+<span class="attr">#[allow(non_camel_case_types)]
+#[repr(transparent)]
+</span><span class="kw">struct </span>SSL_METHOD {
+    _unused: c_void,
+}
+
+<span class="attr">#[allow(non_camel_case_types)]
+#[repr(transparent)]
+</span><span class="kw">struct </span>SSL_CTX {
+    _unused: c_void,
+}
+
+<span class="attr">#[allow(non_camel_case_types)]
+#[repr(transparent)]
+</span><span class="kw">struct </span>SSL {
+    _unused: c_void,
+}
+
+<span class="attr">#[allow(non_camel_case_types)]
+#[repr(transparent)]
+</span><span class="kw">struct </span>SSL_CIPHER {
+    _unused: c_void,
+}
+
+<span class="attr">#[allow(non_camel_case_types)]
+#[repr(transparent)]
+</span><span class="kw">struct </span>SSL_SESSION {
+    _unused: c_void,
+}
+
+<span class="attr">#[allow(non_camel_case_types)]
+#[repr(transparent)]
+</span><span class="kw">struct </span>X509_VERIFY_PARAM {
+    _unused: c_void,
+}
+
+<span class="attr">#[allow(non_camel_case_types)]
+#[repr(transparent)]
+#[cfg(windows)]
+</span><span class="kw">struct </span>X509_STORE {
+    _unused: c_void,
+}
+
+<span class="attr">#[allow(non_camel_case_types)]
+#[repr(transparent)]
+</span><span class="kw">struct </span>X509_STORE_CTX {
+    _unused: c_void,
+}
+
+<span class="attr">#[allow(non_camel_case_types)]
+#[repr(transparent)]
+#[cfg(windows)]
+</span><span class="kw">struct </span>X509 {
+    _unused: c_void,
+}
+
+<span class="attr">#[allow(non_camel_case_types)]
+#[repr(transparent)]
+</span><span class="kw">struct </span>STACK_OF {
+    _unused: c_void,
+}
+
+<span class="attr">#[cfg(test)]
+#[repr(C)]
+#[allow(non_camel_case_types)]
+#[allow(dead_code)]
+</span><span class="kw">enum </span>ssl_private_key_result_t {
+    ssl_private_key_success,
+    ssl_private_key_retry,
+    ssl_private_key_failure,
+}
+
+<span class="doccomment">/// BoringSSL ex_data index for quiche connections.
+///
+/// TODO: replace with `std::sync::LazyLock` when stable.
+</span><span class="kw">pub static </span>QUICHE_EX_DATA_INDEX: Lazy&lt;c_int&gt; = Lazy::new(|| <span class="kw">unsafe </span>{
+    SSL_get_ex_new_index(<span class="number">0</span>, ptr::null(), ptr::null(), ptr::null(), ptr::null())
+});
+
+<span class="kw">pub struct </span>Context(<span class="kw-2">*mut </span>SSL_CTX);
+
+<span class="kw">impl </span>Context {
+    <span class="comment">// Note: some vendor-specific methods are implemented by each vendor's
+    // submodule (openssl-quictls / boringssl).
+    </span><span class="kw">pub fn </span>new() -&gt; <span class="prelude-ty">Result</span>&lt;Context&gt; {
+        <span class="kw">unsafe </span>{
+            <span class="kw">let </span>ctx_raw = SSL_CTX_new(TLS_method());
+
+            <span class="kw">let </span><span class="kw-2">mut </span>ctx = Context(ctx_raw);
+
+            ctx.set_session_callback();
+
+            ctx.load_ca_certs()<span class="question-mark">?</span>;
+
+            <span class="prelude-val">Ok</span>(ctx)
+        }
+    }
+
+    <span class="attr">#[cfg(feature = <span class="string">"boringssl-boring-crate"</span>)]
+    </span><span class="kw">pub fn </span>from_boring(
+        ssl_ctx_builder: boring::ssl::SslContextBuilder,
+    ) -&gt; Context {
+        <span class="kw">use </span>foreign_types_shared::ForeignType;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>ctx = Context(ssl_ctx_builder.build().into_ptr() <span class="kw">as _</span>);
+        ctx.set_session_callback();
+
+        ctx
+    }
+
+    <span class="kw">pub fn </span>new_handshake(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;Handshake&gt; {
+        <span class="kw">unsafe </span>{
+            <span class="kw">let </span>ssl = SSL_new(<span class="self">self</span>.as_mut_ptr());
+            <span class="prelude-val">Ok</span>(Handshake::new(ssl))
+        }
+    }
+
+    <span class="kw">pub fn </span>load_verify_locations_from_file(<span class="kw-2">&amp;mut </span><span class="self">self</span>, file: <span class="kw-2">&amp;</span>str) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>file = ffi::CString::new(file).map_err(|<span class="kw">_</span>| Error::TlsFail)<span class="question-mark">?</span>;
+        map_result(<span class="kw">unsafe </span>{
+            SSL_CTX_load_verify_locations(
+                <span class="self">self</span>.as_mut_ptr(),
+                file.as_ptr(),
+                std::ptr::null(),
+            )
+        })
+    }
+
+    <span class="kw">pub fn </span>load_verify_locations_from_directory(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, path: <span class="kw-2">&amp;</span>str,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>path = ffi::CString::new(path).map_err(|<span class="kw">_</span>| Error::TlsFail)<span class="question-mark">?</span>;
+        map_result(<span class="kw">unsafe </span>{
+            SSL_CTX_load_verify_locations(
+                <span class="self">self</span>.as_mut_ptr(),
+                std::ptr::null(),
+                path.as_ptr(),
+            )
+        })
+    }
+
+    <span class="kw">pub fn </span>use_certificate_chain_file(<span class="kw-2">&amp;mut </span><span class="self">self</span>, file: <span class="kw-2">&amp;</span>str) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>cstr = ffi::CString::new(file).map_err(|<span class="kw">_</span>| Error::TlsFail)<span class="question-mark">?</span>;
+        map_result(<span class="kw">unsafe </span>{
+            SSL_CTX_use_certificate_chain_file(<span class="self">self</span>.as_mut_ptr(), cstr.as_ptr())
+        })
+    }
+
+    <span class="kw">pub fn </span>use_privkey_file(<span class="kw-2">&amp;mut </span><span class="self">self</span>, file: <span class="kw-2">&amp;</span>str) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>cstr = ffi::CString::new(file).map_err(|<span class="kw">_</span>| Error::TlsFail)<span class="question-mark">?</span>;
+        map_result(<span class="kw">unsafe </span>{
+            SSL_CTX_use_PrivateKey_file(<span class="self">self</span>.as_mut_ptr(), cstr.as_ptr(), <span class="number">1</span>)
+        })
+    }
+
+    <span class="attr">#[cfg(not(windows))]
+    </span><span class="kw">fn </span>load_ca_certs(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">unsafe </span>{ map_result(SSL_CTX_set_default_verify_paths(<span class="self">self</span>.as_mut_ptr())) }
+    }
+
+    <span class="attr">#[cfg(windows)]
+    </span><span class="kw">fn </span>load_ca_certs(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">unsafe </span>{
+            <span class="kw">let </span>cstr = ffi::CString::new(<span class="string">"Root"</span>).map_err(|<span class="kw">_</span>| Error::TlsFail)<span class="question-mark">?</span>;
+            <span class="kw">let </span>sys_store = winapi::um::wincrypt::CertOpenSystemStoreA(
+                <span class="number">0</span>,
+                cstr.as_ptr() <span class="kw">as </span>winapi::um::winnt::LPCSTR,
+            );
+            <span class="kw">if </span>sys_store.is_null() {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::TlsFail);
+            }
+
+            <span class="kw">let </span>ctx_store = SSL_CTX_get_cert_store(<span class="self">self</span>.as_mut_ptr());
+            <span class="kw">if </span>ctx_store.is_null() {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::TlsFail);
+            }
+
+            <span class="kw">let </span><span class="kw-2">mut </span>ctx_p = winapi::um::wincrypt::CertEnumCertificatesInStore(
+                sys_store,
+                ptr::null(),
+            );
+
+            <span class="kw">while </span>!ctx_p.is_null() {
+                <span class="kw">let </span>in_p = (<span class="kw-2">*</span>ctx_p).pbCertEncoded <span class="kw">as </span><span class="kw-2">*const </span>u8;
+
+                <span class="kw">let </span>cert = d2i_X509(
+                    ptr::null_mut(),
+                    <span class="kw-2">&amp;</span>in_p,
+                    (<span class="kw-2">*</span>ctx_p).cbCertEncoded <span class="kw">as </span>i32,
+                );
+                <span class="kw">if </span>!cert.is_null() {
+                    X509_STORE_add_cert(ctx_store, cert);
+                }
+
+                X509_free(cert);
+
+                ctx_p = winapi::um::wincrypt::CertEnumCertificatesInStore(
+                    sys_store, ctx_p,
+                );
+            }
+
+            <span class="comment">// tidy up
+            </span>winapi::um::wincrypt::CertFreeCertificateContext(ctx_p);
+            winapi::um::wincrypt::CertCloseStore(sys_store, <span class="number">0</span>);
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="kw">fn </span>set_session_callback(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="kw">unsafe </span>{
+            <span class="comment">// This is needed to enable the session callback on the client. On
+            // the server it doesn't do anything.
+            </span>SSL_CTX_set_session_cache_mode(
+                <span class="self">self</span>.as_mut_ptr(),
+                <span class="number">0x0001</span>, <span class="comment">// SSL_SESS_CACHE_CLIENT
+            </span>);
+
+            SSL_CTX_sess_set_new_cb(<span class="self">self</span>.as_mut_ptr(), <span class="prelude-val">Some</span>(new_session));
+        };
+    }
+
+    <span class="kw">pub fn </span>set_verify(<span class="kw-2">&amp;mut </span><span class="self">self</span>, verify: bool) {
+        <span class="comment">// true  -&gt; 0x01 SSL_VERIFY_PEER
+        // false -&gt; 0x00 SSL_VERIFY_NONE
+        </span><span class="kw">let </span>mode = i32::from(verify);
+
+        <span class="comment">// Note: Base on two used modes(see above), it seems ok for both, bssl and
+        // ossl. If mode needs to be ored then it may need to be adjusted.
+        </span><span class="kw">unsafe </span>{
+            SSL_CTX_set_verify(<span class="self">self</span>.as_mut_ptr(), mode, <span class="prelude-val">None</span>);
+        }
+    }
+
+    <span class="kw">pub fn </span>enable_keylog(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="kw">unsafe </span>{
+            SSL_CTX_set_keylog_callback(<span class="self">self</span>.as_mut_ptr(), <span class="prelude-val">Some</span>(keylog));
+        }
+    }
+
+    <span class="kw">pub fn </span>set_alpn(<span class="kw-2">&amp;mut </span><span class="self">self</span>, v: <span class="kw-2">&amp;</span>[<span class="kw-2">&amp;</span>[u8]]) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>protos: Vec&lt;u8&gt; = Vec::new();
+
+        <span class="kw">for </span>proto <span class="kw">in </span>v {
+            protos.push(proto.len() <span class="kw">as </span>u8);
+            protos.extend_from_slice(proto);
+        }
+
+        <span class="comment">// Configure ALPN for servers.
+        </span><span class="kw">unsafe </span>{
+            SSL_CTX_set_alpn_select_cb(
+                <span class="self">self</span>.as_mut_ptr(),
+                <span class="prelude-val">Some</span>(select_alpn),
+                ptr::null_mut(),
+            );
+        }
+
+        <span class="comment">// Configure ALPN for clients.
+        </span>map_result_zero_is_success(<span class="kw">unsafe </span>{
+            SSL_CTX_set_alpn_protos(
+                <span class="self">self</span>.as_mut_ptr(),
+                protos.as_ptr(),
+                protos.len(),
+            )
+        })
+    }
+
+    <span class="kw">pub fn </span>set_ticket_key(<span class="kw-2">&amp;mut </span><span class="self">self</span>, key: <span class="kw-2">&amp;</span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        map_result(<span class="kw">unsafe </span>{
+            SSL_CTX_set_tlsext_ticket_keys(
+                <span class="self">self</span>.as_mut_ptr(),
+                key.as_ptr(),
+                key.len(),
+            )
+        })
+    }
+
+    <span class="kw">fn </span>as_mut_ptr(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="kw-2">*mut </span>SSL_CTX {
+        <span class="self">self</span>.<span class="number">0
+    </span>}
+}
+
+<span class="comment">// NOTE: These traits are not automatically implemented for Context due to the
+// raw pointer it wraps. However, the underlying data is not aliased (as Context
+// should be its only owner), and there is no interior mutability, as the
+// pointer is not accessed directly outside of this module, and the Context
+// object API should preserve Rust's borrowing guarantees.
+</span><span class="kw">unsafe impl </span>std::marker::Send <span class="kw">for </span>Context {}
+<span class="kw">unsafe impl </span>std::marker::Sync <span class="kw">for </span>Context {}
+
+<span class="kw">impl </span>Drop <span class="kw">for </span>Context {
+    <span class="kw">fn </span>drop(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="kw">unsafe </span>{ SSL_CTX_free(<span class="self">self</span>.as_mut_ptr()) }
+    }
+}
+
+<span class="kw">pub struct </span>Handshake {
+    <span class="doccomment">/// Raw pointer
+    </span>ptr: <span class="kw-2">*mut </span>SSL,
+    <span class="doccomment">/// SSL_process_quic_post_handshake should be called when whenever
+    /// SSL_provide_quic_data is called to process the provided data.
+    </span>provided_data_outstanding: bool,
+}
+
+<span class="kw">impl </span>Handshake {
+    <span class="comment">// Note: some vendor-specific methods are implemented by each vendor's
+    // submodule (openssl-quictls / boringssl).
+    </span><span class="attr">#[cfg(feature = <span class="string">"ffi"</span>)]
+    </span><span class="kw">pub unsafe fn </span>from_ptr(ssl: <span class="kw-2">*mut </span>c_void) -&gt; Handshake {
+        Handshake::new(ssl <span class="kw">as </span><span class="kw-2">*mut </span>SSL)
+    }
+
+    <span class="kw">fn </span>new(ptr: <span class="kw-2">*mut </span>SSL) -&gt; Handshake {
+        Handshake {
+            ptr,
+            provided_data_outstanding: <span class="bool-val">false</span>,
+        }
+    }
+
+    <span class="kw">pub fn </span>get_error(<span class="kw-2">&amp;</span><span class="self">self</span>, ret_code: c_int) -&gt; c_int {
+        <span class="kw">unsafe </span>{ SSL_get_error(<span class="self">self</span>.as_ptr(), ret_code) }
+    }
+
+    <span class="kw">pub fn </span>init(<span class="kw-2">&amp;mut </span><span class="self">self</span>, is_server: bool) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="self">self</span>.set_state(is_server);
+
+        <span class="self">self</span>.set_min_proto_version(TLS1_3_VERSION)<span class="question-mark">?</span>;
+        <span class="self">self</span>.set_max_proto_version(TLS1_3_VERSION)<span class="question-mark">?</span>;
+
+        <span class="self">self</span>.set_quic_method()<span class="question-mark">?</span>;
+
+        <span class="comment">// TODO: the early data context should include transport parameters and
+        // HTTP/3 SETTINGS in wire format.
+        </span><span class="self">self</span>.set_quic_early_data_context(<span class="string">b"quiche"</span>)<span class="question-mark">?</span>;
+
+        <span class="self">self</span>.set_quiet_shutdown(<span class="bool-val">true</span>);
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="kw">pub fn </span>use_legacy_codepoint(<span class="kw-2">&amp;mut </span><span class="self">self</span>, use_legacy: bool) {
+        <span class="kw">unsafe </span>{
+            SSL_set_quic_use_legacy_codepoint(
+                <span class="self">self</span>.as_mut_ptr(),
+                use_legacy <span class="kw">as </span>c_int,
+            );
+        }
+    }
+
+    <span class="kw">pub fn </span>set_state(<span class="kw-2">&amp;mut </span><span class="self">self</span>, is_server: bool) {
+        <span class="kw">unsafe </span>{
+            <span class="kw">if </span>is_server {
+                SSL_set_accept_state(<span class="self">self</span>.as_mut_ptr());
+            } <span class="kw">else </span>{
+                SSL_set_connect_state(<span class="self">self</span>.as_mut_ptr());
+            }
+        }
+    }
+
+    <span class="kw">pub fn </span>set_ex_data&lt;T&gt;(<span class="kw-2">&amp;mut </span><span class="self">self</span>, idx: c_int, data: <span class="kw-2">*const </span>T) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        map_result(<span class="kw">unsafe </span>{
+            <span class="kw">let </span>ptr = data <span class="kw">as </span><span class="kw-2">*mut </span>c_void;
+            SSL_set_ex_data(<span class="self">self</span>.as_mut_ptr(), idx, ptr)
+        })
+    }
+
+    <span class="kw">pub fn </span>set_quic_method(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        map_result(<span class="kw">unsafe </span>{
+            SSL_set_quic_method(<span class="self">self</span>.as_mut_ptr(), <span class="kw-2">&amp;</span>QUICHE_STREAM_METHOD)
+        })
+    }
+
+    <span class="kw">pub fn </span>set_min_proto_version(<span class="kw-2">&amp;mut </span><span class="self">self</span>, version: u16) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        map_result(<span class="kw">unsafe </span>{
+            SSL_set_min_proto_version(<span class="self">self</span>.as_mut_ptr(), version)
+        })
+    }
+
+    <span class="kw">pub fn </span>set_max_proto_version(<span class="kw-2">&amp;mut </span><span class="self">self</span>, version: u16) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        map_result(<span class="kw">unsafe </span>{
+            SSL_set_max_proto_version(<span class="self">self</span>.as_mut_ptr(), version)
+        })
+    }
+
+    <span class="kw">pub fn </span>set_quiet_shutdown(<span class="kw-2">&amp;mut </span><span class="self">self</span>, mode: bool) {
+        <span class="kw">unsafe </span>{ SSL_set_quiet_shutdown(<span class="self">self</span>.as_mut_ptr(), i32::from(mode)) }
+    }
+
+    <span class="kw">pub fn </span>set_host_name(<span class="kw-2">&amp;mut </span><span class="self">self</span>, name: <span class="kw-2">&amp;</span>str) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>cstr = ffi::CString::new(name).map_err(|<span class="kw">_</span>| Error::TlsFail)<span class="question-mark">?</span>;
+        <span class="kw">let </span>rc =
+            <span class="kw">unsafe </span>{ SSL_set_tlsext_host_name(<span class="self">self</span>.as_mut_ptr(), cstr.as_ptr()) };
+        <span class="self">self</span>.map_result_ssl(rc)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>param = <span class="kw">unsafe </span>{ SSL_get0_param(<span class="self">self</span>.as_mut_ptr()) };
+
+        map_result(<span class="kw">unsafe </span>{
+            X509_VERIFY_PARAM_set1_host(param, cstr.as_ptr(), name.len())
+        })
+    }
+
+    <span class="kw">pub fn </span>set_quic_transport_params(<span class="kw-2">&amp;mut </span><span class="self">self</span>, buf: <span class="kw-2">&amp;</span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>rc = <span class="kw">unsafe </span>{
+            SSL_set_quic_transport_params(
+                <span class="self">self</span>.as_mut_ptr(),
+                buf.as_ptr(),
+                buf.len(),
+            )
+        };
+        <span class="self">self</span>.map_result_ssl(rc)
+    }
+
+    <span class="kw">pub fn </span>quic_transport_params(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>[u8] {
+        <span class="kw">let </span><span class="kw-2">mut </span>ptr: <span class="kw-2">*const </span>u8 = ptr::null();
+        <span class="kw">let </span><span class="kw-2">mut </span>len: usize = <span class="number">0</span>;
+
+        <span class="kw">unsafe </span>{
+            SSL_get_peer_quic_transport_params(<span class="self">self</span>.as_ptr(), <span class="kw-2">&amp;mut </span>ptr, <span class="kw-2">&amp;mut </span>len);
+        }
+
+        <span class="kw">if </span>len == <span class="number">0 </span>{
+            <span class="kw">return </span><span class="kw-2">&amp;mut </span>[];
+        }
+
+        <span class="kw">unsafe </span>{ slice::from_raw_parts(ptr, len) }
+    }
+
+    <span class="kw">pub fn </span>alpn_protocol(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span>[u8] {
+        <span class="kw">let </span><span class="kw-2">mut </span>ptr: <span class="kw-2">*const </span>u8 = ptr::null();
+        <span class="kw">let </span><span class="kw-2">mut </span>len: u32 = <span class="number">0</span>;
+
+        <span class="kw">unsafe </span>{
+            SSL_get0_alpn_selected(<span class="self">self</span>.as_ptr(), <span class="kw-2">&amp;mut </span>ptr, <span class="kw-2">&amp;mut </span>len);
+        }
+
+        <span class="kw">if </span>len == <span class="number">0 </span>{
+            <span class="kw">return </span><span class="kw-2">&amp;mut </span>[];
+        }
+
+        <span class="kw">unsafe </span>{ slice::from_raw_parts(ptr, len <span class="kw">as </span>usize) }
+    }
+
+    <span class="kw">pub fn </span>server_name(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>str&gt; {
+        <span class="kw">let </span>s = <span class="kw">unsafe </span>{
+            <span class="kw">let </span>ptr = SSL_get_servername(
+                <span class="self">self</span>.as_ptr(),
+                <span class="number">0</span>, <span class="comment">// TLSEXT_NAMETYPE_host_name
+            </span>);
+
+            <span class="kw">if </span>ptr.is_null() {
+                <span class="kw">return </span><span class="prelude-val">None</span>;
+            }
+
+            ffi::CStr::from_ptr(ptr)
+        };
+
+        s.to_str().ok()
+    }
+
+    <span class="kw">pub fn </span>provide_data(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, level: crypto::Level, buf: <span class="kw-2">&amp;</span>[u8],
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="self">self</span>.provided_data_outstanding = <span class="bool-val">true</span>;
+        <span class="kw">let </span>rc = <span class="kw">unsafe </span>{
+            SSL_provide_quic_data(
+                <span class="self">self</span>.as_mut_ptr(),
+                level,
+                buf.as_ptr(),
+                buf.len(),
+            )
+        };
+        <span class="self">self</span>.map_result_ssl(rc)
+    }
+
+    <span class="kw">pub fn </span>do_handshake(<span class="kw-2">&amp;mut </span><span class="self">self</span>, ex_data: <span class="kw-2">&amp;mut </span>ExData) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="self">self</span>.set_ex_data(<span class="kw-2">*</span>QUICHE_EX_DATA_INDEX, ex_data)<span class="question-mark">?</span>;
+        <span class="kw">let </span>rc = <span class="kw">unsafe </span>{ SSL_do_handshake(<span class="self">self</span>.as_mut_ptr()) };
+        <span class="self">self</span>.set_ex_data::&lt;Connection&gt;(<span class="kw-2">*</span>QUICHE_EX_DATA_INDEX, std::ptr::null())<span class="question-mark">?</span>;
+
+        <span class="self">self</span>.set_transport_error(ex_data, rc);
+        <span class="self">self</span>.map_result_ssl(rc)
+    }
+
+    <span class="kw">pub fn </span>process_post_handshake(<span class="kw-2">&amp;mut </span><span class="self">self</span>, ex_data: <span class="kw-2">&amp;mut </span>ExData) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="comment">// If SSL_provide_quic_data hasn't been called since we last called
+        // SSL_process_quic_post_handshake, then there's nothing to do.
+        </span><span class="kw">if </span>!<span class="self">self</span>.provided_data_outstanding {
+            <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+        }
+        <span class="self">self</span>.provided_data_outstanding = <span class="bool-val">false</span>;
+
+        <span class="self">self</span>.set_ex_data(<span class="kw-2">*</span>QUICHE_EX_DATA_INDEX, ex_data)<span class="question-mark">?</span>;
+        <span class="kw">let </span>rc = <span class="kw">unsafe </span>{ SSL_process_quic_post_handshake(<span class="self">self</span>.as_mut_ptr()) };
+        <span class="self">self</span>.set_ex_data::&lt;Connection&gt;(<span class="kw-2">*</span>QUICHE_EX_DATA_INDEX, std::ptr::null())<span class="question-mark">?</span>;
+
+        <span class="self">self</span>.set_transport_error(ex_data, rc);
+        <span class="self">self</span>.map_result_ssl(rc)
+    }
+
+    <span class="kw">pub fn </span>write_level(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; crypto::Level {
+        <span class="kw">unsafe </span>{ SSL_quic_write_level(<span class="self">self</span>.as_ptr()) }
+    }
+
+    <span class="kw">pub fn </span>cipher(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;crypto::Algorithm&gt; {
+        <span class="kw">let </span>cipher =
+            map_result_ptr(<span class="kw">unsafe </span>{ SSL_get_current_cipher(<span class="self">self</span>.as_ptr()) });
+
+        get_cipher_from_ptr(cipher.ok()<span class="question-mark">?</span>).ok()
+    }
+
+    <span class="attr">#[cfg(test)]
+    </span><span class="kw">pub fn </span>set_options(<span class="kw-2">&amp;mut </span><span class="self">self</span>, opts: u32) {
+        <span class="kw">unsafe </span>{
+            SSL_set_options(<span class="self">self</span>.as_mut_ptr(), opts);
+        }
+    }
+
+    <span class="kw">pub fn </span>is_completed(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="kw">unsafe </span>{ SSL_in_init(<span class="self">self</span>.as_ptr()) == <span class="number">0 </span>}
+    }
+
+    <span class="kw">pub fn </span>is_resumed(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="kw">unsafe </span>{ SSL_session_reused(<span class="self">self</span>.as_ptr()) == <span class="number">1 </span>}
+    }
+
+    <span class="kw">pub fn </span>clear(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>rc = <span class="kw">unsafe </span>{ SSL_clear(<span class="self">self</span>.as_mut_ptr()) };
+        <span class="self">self</span>.map_result_ssl(rc)
+    }
+
+    <span class="kw">fn </span>as_ptr(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">*const </span>SSL {
+        <span class="self">self</span>.ptr
+    }
+
+    <span class="kw">fn </span>as_mut_ptr(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="kw-2">*mut </span>SSL {
+        <span class="self">self</span>.ptr
+    }
+
+    <span class="kw">fn </span>map_result_ssl(<span class="kw-2">&amp;mut </span><span class="self">self</span>, bssl_result: c_int) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">match </span>bssl_result {
+            <span class="number">1 </span>=&gt; <span class="prelude-val">Ok</span>(()),
+
+            <span class="kw">_ </span>=&gt; {
+                <span class="kw">let </span>ssl_err = <span class="self">self</span>.get_error(bssl_result);
+                <span class="kw">match </span>ssl_err {
+                    <span class="comment">// SSL_ERROR_SSL
+                    </span><span class="number">1 </span>=&gt; {
+                        log_ssl_error();
+
+                        <span class="prelude-val">Err</span>(Error::TlsFail)
+                    },
+
+                    <span class="comment">// SSL_ERROR_WANT_READ
+                    </span><span class="number">2 </span>=&gt; <span class="prelude-val">Err</span>(Error::Done),
+
+                    <span class="comment">// SSL_ERROR_WANT_WRITE
+                    </span><span class="number">3 </span>=&gt; <span class="prelude-val">Err</span>(Error::Done),
+
+                    <span class="comment">// SSL_ERROR_WANT_X509_LOOKUP
+                    </span><span class="number">4 </span>=&gt; <span class="prelude-val">Err</span>(Error::Done),
+
+                    <span class="comment">// SSL_ERROR_SYSCALL
+                    </span><span class="number">5 </span>=&gt; <span class="prelude-val">Err</span>(Error::TlsFail),
+
+                    <span class="comment">// SSL_ERROR_PENDING_SESSION
+                    </span><span class="number">11 </span>=&gt; <span class="prelude-val">Err</span>(Error::Done),
+
+                    <span class="comment">// SSL_ERROR_PENDING_CERTIFICATE
+                    </span><span class="number">12 </span>=&gt; <span class="prelude-val">Err</span>(Error::Done),
+
+                    <span class="comment">// SSL_ERROR_WANT_PRIVATE_KEY_OPERATION
+                    </span><span class="number">13 </span>=&gt; <span class="prelude-val">Err</span>(Error::Done),
+
+                    <span class="comment">// SSL_ERROR_PENDING_TICKET
+                    </span><span class="number">14 </span>=&gt; <span class="prelude-val">Err</span>(Error::Done),
+
+                    <span class="comment">// SSL_ERROR_EARLY_DATA_REJECTED
+                    </span><span class="number">15 </span>=&gt; {
+                        <span class="self">self</span>.reset_early_data_reject();
+                        <span class="prelude-val">Err</span>(Error::Done)
+                    },
+
+                    <span class="comment">// SSL_ERROR_WANT_CERTIFICATE_VERIFY
+                    </span><span class="number">16 </span>=&gt; <span class="prelude-val">Err</span>(Error::Done),
+
+                    <span class="kw">_ </span>=&gt; <span class="prelude-val">Err</span>(Error::TlsFail),
+                }
+            },
+        }
+    }
+
+    <span class="kw">fn </span>set_transport_error(<span class="kw-2">&amp;mut </span><span class="self">self</span>, ex_data: <span class="kw-2">&amp;mut </span>ExData, bssl_result: c_int) {
+        <span class="comment">// SSL_ERROR_SSL
+        </span><span class="kw">if </span><span class="self">self</span>.get_error(bssl_result) == <span class="number">1 </span>{
+            <span class="comment">// SSL_ERROR_SSL can't be recovered so ensure we set a
+            // local_error so the connection is closed.
+            // See https://www.openssl.org/docs/man1.1.1/man3/SSL_get_error.html
+            </span><span class="kw">if </span>ex_data.local_error.is_none() {
+                <span class="kw-2">*</span>ex_data.local_error = <span class="prelude-val">Some</span>(ConnectionError {
+                    is_app: <span class="bool-val">false</span>,
+                    error_code: INTERNAL_ERROR,
+                    reason: Vec::new(),
+                })
+            }
+        }
+    }
+
+    <span class="attr">#[cfg(feature = <span class="string">"boringssl-boring-crate"</span>)]
+    </span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>ssl_mut(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;mut </span>boring::ssl::SslRef {
+        <span class="kw">use </span>foreign_types_shared::ForeignTypeRef;
+
+        <span class="kw">unsafe </span>{ boring::ssl::SslRef::from_ptr_mut(<span class="self">self</span>.as_mut_ptr() <span class="kw">as _</span>) }
+    }
+}
+
+<span class="comment">// NOTE: These traits are not automatically implemented for Handshake due to the
+// raw pointer it wraps. However, the underlying data is not aliased (as
+// Handshake should be its only owner), and there is no interior mutability, as
+// the pointer is not accessed directly outside of this module, and the
+// Handshake object API should preserve Rust's borrowing guarantees.
+</span><span class="kw">unsafe impl </span>std::marker::Send <span class="kw">for </span>Handshake {}
+<span class="kw">unsafe impl </span>std::marker::Sync <span class="kw">for </span>Handshake {}
+
+<span class="kw">impl </span>Drop <span class="kw">for </span>Handshake {
+    <span class="kw">fn </span>drop(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="kw">unsafe </span>{ SSL_free(<span class="self">self</span>.as_mut_ptr()) }
+    }
+}
+
+<span class="kw">pub struct </span>ExData&lt;<span class="lifetime">'a</span>&gt; {
+    <span class="kw">pub </span>application_protos: <span class="kw-2">&amp;</span><span class="lifetime">'a </span>Vec&lt;Vec&lt;u8&gt;&gt;,
+
+    <span class="kw">pub </span>pkt_num_spaces: <span class="kw-2">&amp;</span><span class="lifetime">'a </span><span class="kw-2">mut </span>[packet::PktNumSpace; packet::Epoch::count()],
+
+    <span class="kw">pub </span>session: <span class="kw-2">&amp;</span><span class="lifetime">'a </span><span class="kw-2">mut </span><span class="prelude-ty">Option</span>&lt;Vec&lt;u8&gt;&gt;,
+
+    <span class="kw">pub </span>local_error: <span class="kw-2">&amp;</span><span class="lifetime">'a </span><span class="kw-2">mut </span><span class="prelude-ty">Option</span>&lt;<span class="kw">super</span>::ConnectionError&gt;,
+
+    <span class="kw">pub </span>keylog: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span><span class="lifetime">'a </span><span class="kw-2">mut </span>Box&lt;<span class="kw">dyn </span>std::io::Write + Send + Sync&gt;&gt;,
+
+    <span class="kw">pub </span>trace_id: <span class="kw-2">&amp;</span><span class="lifetime">'a </span>str,
+
+    <span class="kw">pub </span>is_server: bool,
+}
+
+<span class="kw">fn </span>get_ex_data_from_ptr&lt;<span class="lifetime">'a</span>, T&gt;(ptr: <span class="kw-2">*const </span>SSL, idx: c_int) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span><span class="lifetime">'a </span><span class="kw-2">mut </span>T&gt; {
+    <span class="kw">unsafe </span>{
+        <span class="kw">let </span>data = SSL_get_ex_data(ptr, idx) <span class="kw">as </span><span class="kw-2">*mut </span>T;
+        data.as_mut()
+    }
+}
+
+<span class="kw">fn </span>get_cipher_from_ptr(cipher: <span class="kw-2">*const </span>SSL_CIPHER) -&gt; <span class="prelude-ty">Result</span>&lt;crypto::Algorithm&gt; {
+    <span class="kw">let </span>cipher_id = <span class="kw">unsafe </span>{ SSL_CIPHER_get_id(cipher) };
+
+    <span class="kw">let </span>alg = <span class="kw">match </span>cipher_id {
+        <span class="number">0x0300_1301 </span>=&gt; crypto::Algorithm::AES128_GCM,
+        <span class="number">0x0300_1302 </span>=&gt; crypto::Algorithm::AES256_GCM,
+        <span class="number">0x0300_1303 </span>=&gt; crypto::Algorithm::ChaCha20_Poly1305,
+        <span class="kw">_ </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::TlsFail),
+    };
+
+    <span class="prelude-val">Ok</span>(alg)
+}
+
+<span class="kw">extern fn </span>set_read_secret(
+    ssl: <span class="kw-2">*mut </span>SSL, level: crypto::Level, cipher: <span class="kw-2">*const </span>SSL_CIPHER,
+    secret: <span class="kw-2">*const </span>u8, secret_len: usize,
+) -&gt; c_int {
+    <span class="kw">let </span>ex_data = <span class="kw">match </span>get_ex_data_from_ptr::&lt;ExData&gt;(ssl, <span class="kw-2">*</span>QUICHE_EX_DATA_INDEX)
+    {
+        <span class="prelude-val">Some</span>(v) =&gt; v,
+
+        <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="number">0</span>,
+    };
+
+    <span class="macro">trace!</span>(<span class="string">"{} set read secret lvl={:?}"</span>, ex_data.trace_id, level);
+
+    <span class="kw">let </span>space = <span class="kw">match </span>level {
+        crypto::Level::Initial =&gt;
+            <span class="kw-2">&amp;mut </span>ex_data.pkt_num_spaces[packet::Epoch::Initial],
+        crypto::Level::ZeroRTT =&gt;
+            <span class="kw-2">&amp;mut </span>ex_data.pkt_num_spaces[packet::Epoch::Application],
+        crypto::Level::Handshake =&gt;
+            <span class="kw-2">&amp;mut </span>ex_data.pkt_num_spaces[packet::Epoch::Handshake],
+        crypto::Level::OneRTT =&gt;
+            <span class="kw-2">&amp;mut </span>ex_data.pkt_num_spaces[packet::Epoch::Application],
+    };
+
+    <span class="kw">let </span>aead = <span class="kw">match </span>get_cipher_from_ptr(cipher) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="kw">return </span><span class="number">0</span>,
+    };
+
+    <span class="comment">// 0-RTT read secrets are present only on the server.
+    </span><span class="kw">if </span>level != crypto::Level::ZeroRTT || ex_data.is_server {
+        <span class="kw">let </span>secret = <span class="kw">unsafe </span>{ slice::from_raw_parts(secret, secret_len) };
+
+        <span class="kw">let </span>open = <span class="kw">match </span>crypto::Open::from_secret(aead, secret.to_vec()) {
+            <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+            <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="kw">return </span><span class="number">0</span>,
+        };
+
+        <span class="kw">if </span>level == crypto::Level::ZeroRTT {
+            space.crypto_0rtt_open = <span class="prelude-val">Some</span>(open);
+            <span class="kw">return </span><span class="number">1</span>;
+        }
+
+        space.crypto_open = <span class="prelude-val">Some</span>(open);
+    }
+
+    <span class="number">1
+</span>}
+
+<span class="kw">extern fn </span>set_write_secret(
+    ssl: <span class="kw-2">*mut </span>SSL, level: crypto::Level, cipher: <span class="kw-2">*const </span>SSL_CIPHER,
+    secret: <span class="kw-2">*const </span>u8, secret_len: usize,
+) -&gt; c_int {
+    <span class="kw">let </span>ex_data = <span class="kw">match </span>get_ex_data_from_ptr::&lt;ExData&gt;(ssl, <span class="kw-2">*</span>QUICHE_EX_DATA_INDEX)
+    {
+        <span class="prelude-val">Some</span>(v) =&gt; v,
+
+        <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="number">0</span>,
+    };
+
+    <span class="macro">trace!</span>(<span class="string">"{} set write secret lvl={:?}"</span>, ex_data.trace_id, level);
+
+    <span class="kw">let </span>space = <span class="kw">match </span>level {
+        crypto::Level::Initial =&gt;
+            <span class="kw-2">&amp;mut </span>ex_data.pkt_num_spaces[packet::Epoch::Initial],
+        crypto::Level::ZeroRTT =&gt;
+            <span class="kw-2">&amp;mut </span>ex_data.pkt_num_spaces[packet::Epoch::Application],
+        crypto::Level::Handshake =&gt;
+            <span class="kw-2">&amp;mut </span>ex_data.pkt_num_spaces[packet::Epoch::Handshake],
+        crypto::Level::OneRTT =&gt;
+            <span class="kw-2">&amp;mut </span>ex_data.pkt_num_spaces[packet::Epoch::Application],
+    };
+
+    <span class="kw">let </span>aead = <span class="kw">match </span>get_cipher_from_ptr(cipher) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="kw">return </span><span class="number">0</span>,
+    };
+
+    <span class="comment">// 0-RTT write secrets are present only on the client.
+    </span><span class="kw">if </span>level != crypto::Level::ZeroRTT || !ex_data.is_server {
+        <span class="kw">let </span>secret = <span class="kw">unsafe </span>{ slice::from_raw_parts(secret, secret_len) };
+
+        <span class="kw">let </span>seal = <span class="kw">match </span>crypto::Seal::from_secret(aead, secret.to_vec()) {
+            <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+            <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="kw">return </span><span class="number">0</span>,
+        };
+
+        space.crypto_seal = <span class="prelude-val">Some</span>(seal);
+    }
+
+    <span class="number">1
+</span>}
+
+<span class="kw">extern fn </span>add_handshake_data(
+    ssl: <span class="kw-2">*mut </span>SSL, level: crypto::Level, data: <span class="kw-2">*const </span>u8, len: usize,
+) -&gt; c_int {
+    <span class="kw">let </span>ex_data = <span class="kw">match </span>get_ex_data_from_ptr::&lt;ExData&gt;(ssl, <span class="kw-2">*</span>QUICHE_EX_DATA_INDEX)
+    {
+        <span class="prelude-val">Some</span>(v) =&gt; v,
+
+        <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="number">0</span>,
+    };
+
+    <span class="macro">trace!</span>(
+        <span class="string">"{} write message lvl={:?} len={}"</span>,
+        ex_data.trace_id,
+        level,
+        len
+    );
+
+    <span class="kw">let </span>buf = <span class="kw">unsafe </span>{ slice::from_raw_parts(data, len) };
+
+    <span class="kw">let </span>space = <span class="kw">match </span>level {
+        crypto::Level::Initial =&gt;
+            <span class="kw-2">&amp;mut </span>ex_data.pkt_num_spaces[packet::Epoch::Initial],
+        crypto::Level::ZeroRTT =&gt; <span class="macro">unreachable!</span>(),
+        crypto::Level::Handshake =&gt;
+            <span class="kw-2">&amp;mut </span>ex_data.pkt_num_spaces[packet::Epoch::Handshake],
+        crypto::Level::OneRTT =&gt;
+            <span class="kw-2">&amp;mut </span>ex_data.pkt_num_spaces[packet::Epoch::Application],
+    };
+
+    <span class="kw">if </span>space.crypto_stream.send.write(buf, <span class="bool-val">false</span>).is_err() {
+        <span class="kw">return </span><span class="number">0</span>;
+    }
+
+    <span class="number">1
+</span>}
+
+<span class="kw">extern fn </span>flush_flight(_ssl: <span class="kw-2">*mut </span>SSL) -&gt; c_int {
+    <span class="comment">// We don't really need to anything here since the output packets are
+    // generated separately, when conn.send() is called.
+
+    </span><span class="number">1
+</span>}
+
+<span class="kw">extern fn </span>send_alert(ssl: <span class="kw-2">*mut </span>SSL, level: crypto::Level, alert: u8) -&gt; c_int {
+    <span class="kw">let </span>ex_data = <span class="kw">match </span>get_ex_data_from_ptr::&lt;ExData&gt;(ssl, <span class="kw-2">*</span>QUICHE_EX_DATA_INDEX)
+    {
+        <span class="prelude-val">Some</span>(v) =&gt; v,
+
+        <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="number">0</span>,
+    };
+
+    <span class="macro">trace!</span>(
+        <span class="string">"{} send alert lvl={:?} alert={:x}"</span>,
+        ex_data.trace_id,
+        level,
+        alert
+    );
+
+    <span class="kw">let </span>error: u64 = TLS_ALERT_ERROR + u64::from(alert);
+    <span class="kw-2">*</span>ex_data.local_error = <span class="prelude-val">Some</span>(ConnectionError {
+        is_app: <span class="bool-val">false</span>,
+        error_code: error,
+        reason: Vec::new(),
+    });
+
+    <span class="number">1
+</span>}
+
+<span class="kw">extern fn </span>keylog(ssl: <span class="kw-2">*const </span>SSL, line: <span class="kw-2">*const </span>c_char) {
+    <span class="kw">let </span>ex_data = <span class="kw">match </span>get_ex_data_from_ptr::&lt;ExData&gt;(ssl, <span class="kw-2">*</span>QUICHE_EX_DATA_INDEX)
+    {
+        <span class="prelude-val">Some</span>(v) =&gt; v,
+
+        <span class="prelude-val">None </span>=&gt; <span class="kw">return</span>,
+    };
+
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(keylog) = <span class="kw-2">&amp;mut </span>ex_data.keylog {
+        <span class="kw">let </span>data = <span class="kw">unsafe </span>{ ffi::CStr::from_ptr(line).to_bytes() };
+
+        <span class="kw">let </span><span class="kw-2">mut </span>full_line = Vec::with_capacity(data.len() + <span class="number">1</span>);
+        full_line.extend_from_slice(data);
+        full_line.push(<span class="string">b'\n'</span>);
+
+        keylog.write_all(<span class="kw-2">&amp;</span>full_line[..]).ok();
+        keylog.flush().ok();
+    }
+}
+
+<span class="kw">extern fn </span>select_alpn(
+    ssl: <span class="kw-2">*mut </span>SSL, out: <span class="kw-2">*mut *const </span>u8, out_len: <span class="kw-2">*mut </span>u8, inp: <span class="kw-2">*mut </span>u8,
+    in_len: c_uint, _arg: <span class="kw-2">*mut </span>c_void,
+) -&gt; c_int {
+    <span class="comment">// SSL_TLSEXT_ERR_OK 0
+    // SSL_TLSEXT_ERR_ALERT_WARNING 1
+    // SSL_TLSEXT_ERR_ALERT_FATAL 2
+    // SSL_TLSEXT_ERR_NOACK 3
+
+    // Boringssl internally overwrite the return value from this callback, if the
+    // returned value is SSL_TLSEXT_ERR_NOACK and is quic, then the value gets
+    // overwritten to SSL_TLSEXT_ERR_ALERT_FATAL. In contrast openssl/quictls does
+    // not do that, so we need to explicitly respond with
+    // SSL_TLSEXT_ERR_ALERT_FATAL in case it is needed.
+    // TLS_ERROR is redefined for each vendor.
+    </span><span class="kw">let </span>ex_data = <span class="kw">match </span>get_ex_data_from_ptr::&lt;ExData&gt;(ssl, <span class="kw-2">*</span>QUICHE_EX_DATA_INDEX)
+    {
+        <span class="prelude-val">Some</span>(v) =&gt; v,
+
+        <span class="prelude-val">None </span>=&gt; <span class="kw">return </span>TLS_ERROR,
+    };
+
+    <span class="kw">if </span>ex_data.application_protos.is_empty() {
+        <span class="kw">return </span>TLS_ERROR;
+    }
+
+    <span class="kw">let </span><span class="kw-2">mut </span>protos = octets::Octets::with_slice(<span class="kw">unsafe </span>{
+        slice::from_raw_parts(inp, in_len <span class="kw">as </span>usize)
+    });
+
+    <span class="kw">while let </span><span class="prelude-val">Ok</span>(proto) = protos.get_bytes_with_u8_length() {
+        <span class="kw">let </span>found = ex_data.application_protos.iter().any(|expected| {
+            <span class="macro">trace!</span>(
+                <span class="string">"checking peer ALPN {:?} against {:?}"</span>,
+                std::str::from_utf8(proto.as_ref()),
+                std::str::from_utf8(expected.as_slice())
+            );
+
+            <span class="kw">if </span>expected.len() == proto.len() &amp;&amp;
+                expected.as_slice() == proto.as_ref()
+            {
+                <span class="kw">unsafe </span>{
+                    <span class="kw-2">*</span>out = expected.as_slice().as_ptr();
+                    <span class="kw-2">*</span>out_len = expected.len() <span class="kw">as </span>u8;
+                }
+
+                <span class="kw">return </span><span class="bool-val">true</span>;
+            }
+
+            <span class="bool-val">false
+        </span>});
+
+        <span class="kw">if </span>found {
+            <span class="kw">return </span><span class="number">0</span>; <span class="comment">// SSL_TLSEXT_ERR_OK
+        </span>}
+    }
+
+    TLS_ERROR
+}
+
+<span class="kw">extern fn </span>new_session(ssl: <span class="kw-2">*mut </span>SSL, session: <span class="kw-2">*mut </span>SSL_SESSION) -&gt; c_int {
+    <span class="kw">let </span>ex_data = <span class="kw">match </span>get_ex_data_from_ptr::&lt;ExData&gt;(ssl, <span class="kw-2">*</span>QUICHE_EX_DATA_INDEX)
+    {
+        <span class="prelude-val">Some</span>(v) =&gt; v,
+
+        <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="number">0</span>,
+    };
+
+    <span class="kw">let </span>handshake = Handshake::new(ssl);
+    <span class="kw">let </span>peer_params = handshake.quic_transport_params();
+
+    <span class="comment">// Serialize session object into buffer.
+    </span><span class="kw">let </span>session_bytes = <span class="kw">match </span>get_session_bytes(session) {
+        <span class="prelude-val">Ok</span>(v) =&gt; v,
+        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="kw">return </span><span class="number">0</span>,
+    };
+
+    <span class="kw">let </span><span class="kw-2">mut </span>buffer =
+        Vec::with_capacity(<span class="number">8 </span>+ peer_params.len() + <span class="number">8 </span>+ session_bytes.len());
+
+    <span class="kw">let </span>session_bytes_len = session_bytes.len() <span class="kw">as </span>u64;
+
+    <span class="kw">if </span>buffer.write(<span class="kw-2">&amp;</span>session_bytes_len.to_be_bytes()).is_err() {
+        std::mem::forget(handshake);
+        <span class="kw">return </span><span class="number">0</span>;
+    }
+
+    <span class="kw">if </span>buffer.write(<span class="kw-2">&amp;</span>session_bytes).is_err() {
+        std::mem::forget(handshake);
+        <span class="kw">return </span><span class="number">0</span>;
+    }
+
+    <span class="kw">let </span>peer_params_len = peer_params.len() <span class="kw">as </span>u64;
+
+    <span class="kw">if </span>buffer.write(<span class="kw-2">&amp;</span>peer_params_len.to_be_bytes()).is_err() {
+        std::mem::forget(handshake);
+        <span class="kw">return </span><span class="number">0</span>;
+    }
+
+    <span class="kw">if </span>buffer.write(peer_params).is_err() {
+        std::mem::forget(handshake);
+        <span class="kw">return </span><span class="number">0</span>;
+    }
+
+    <span class="kw-2">*</span>ex_data.session = <span class="prelude-val">Some</span>(buffer);
+
+    <span class="comment">// Prevent handshake from being freed, as we still need it.
+    </span>std::mem::forget(handshake);
+
+    <span class="number">0
+</span>}
+
+<span class="kw">pub fn </span>map_result(bssl_result: c_int) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+    <span class="kw">match </span>bssl_result {
+        <span class="number">1 </span>=&gt; <span class="prelude-val">Ok</span>(()),
+        <span class="kw">_ </span>=&gt; <span class="prelude-val">Err</span>(Error::TlsFail),
+    }
+}
+
+<span class="kw">pub fn </span>map_result_zero_is_success(bssl_result: c_int) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+    <span class="kw">match </span>bssl_result {
+        <span class="number">0 </span>=&gt; <span class="prelude-val">Ok</span>(()),
+        <span class="kw">_ </span>=&gt; <span class="prelude-val">Err</span>(Error::TlsFail),
+    }
+}
+
+<span class="kw">pub fn </span>map_result_ptr&lt;<span class="lifetime">'a</span>, T&gt;(bssl_result: <span class="kw-2">*const </span>T) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw-2">&amp;</span><span class="lifetime">'a </span>T&gt; {
+    <span class="kw">match unsafe </span>{ bssl_result.as_ref() } {
+        <span class="prelude-val">Some</span>(v) =&gt; <span class="prelude-val">Ok</span>(v),
+        <span class="prelude-val">None </span>=&gt; <span class="prelude-val">Err</span>(Error::TlsFail),
+    }
+}
+
+<span class="kw">fn </span>log_ssl_error() {
+    <span class="kw">let </span><span class="kw-2">mut </span>err = [<span class="number">0u8</span>; <span class="number">1024</span>];
+
+    <span class="kw">unsafe </span>{
+        <span class="kw">let </span>e = ERR_peek_error();
+        ERR_error_string_n(e, err.as_mut_ptr() <span class="kw">as </span><span class="kw-2">*mut </span>c_char, err.len());
+    }
+
+    <span class="macro">trace!</span>(<span class="string">"{}"</span>, std::str::from_utf8(<span class="kw-2">&amp;</span>err).unwrap());
+}
+
+<span class="kw">extern </span>{
+    <span class="comment">// Note: some vendor-specific methods are implemented by each vendor's
+    // submodule (openssl-quictls / boringssl).
+
+    // SSL_METHOD
+    </span><span class="kw">fn </span>TLS_method() -&gt; <span class="kw-2">*const </span>SSL_METHOD;
+
+    <span class="comment">// SSL_CTX
+    </span><span class="kw">fn </span>SSL_CTX_new(method: <span class="kw-2">*const </span>SSL_METHOD) -&gt; <span class="kw-2">*mut </span>SSL_CTX;
+    <span class="kw">fn </span>SSL_CTX_free(ctx: <span class="kw-2">*mut </span>SSL_CTX);
+
+    <span class="kw">fn </span>SSL_CTX_use_certificate_chain_file(
+        ctx: <span class="kw-2">*mut </span>SSL_CTX, file: <span class="kw-2">*const </span>c_char,
+    ) -&gt; c_int;
+
+    <span class="kw">fn </span>SSL_CTX_use_PrivateKey_file(
+        ctx: <span class="kw-2">*mut </span>SSL_CTX, file: <span class="kw-2">*const </span>c_char, ty: c_int,
+    ) -&gt; c_int;
+
+    <span class="kw">fn </span>SSL_CTX_load_verify_locations(
+        ctx: <span class="kw-2">*mut </span>SSL_CTX, file: <span class="kw-2">*const </span>c_char, path: <span class="kw-2">*const </span>c_char,
+    ) -&gt; c_int;
+
+    <span class="attr">#[cfg(not(windows))]
+    </span><span class="kw">fn </span>SSL_CTX_set_default_verify_paths(ctx: <span class="kw-2">*mut </span>SSL_CTX) -&gt; c_int;
+
+    <span class="attr">#[cfg(windows)]
+    </span><span class="kw">fn </span>SSL_CTX_get_cert_store(ctx: <span class="kw-2">*mut </span>SSL_CTX) -&gt; <span class="kw-2">*mut </span>X509_STORE;
+
+    <span class="kw">fn </span>SSL_CTX_set_verify(
+        ctx: <span class="kw-2">*mut </span>SSL_CTX, mode: c_int,
+        cb: <span class="prelude-ty">Option</span>&lt;
+            <span class="kw">unsafe extern fn</span>(ok: c_int, store_ctx: <span class="kw-2">*mut </span>X509_STORE_CTX) -&gt; c_int,
+        &gt;,
+    );
+
+    <span class="kw">fn </span>SSL_CTX_set_keylog_callback(
+        ctx: <span class="kw-2">*mut </span>SSL_CTX,
+        cb: <span class="prelude-ty">Option</span>&lt;<span class="kw">unsafe extern fn</span>(ssl: <span class="kw-2">*const </span>SSL, line: <span class="kw-2">*const </span>c_char)&gt;,
+    );
+
+    <span class="kw">fn </span>SSL_CTX_set_alpn_protos(
+        ctx: <span class="kw-2">*mut </span>SSL_CTX, protos: <span class="kw-2">*const </span>u8, protos_len: usize,
+    ) -&gt; c_int;
+
+    <span class="kw">fn </span>SSL_CTX_set_alpn_select_cb(
+        ctx: <span class="kw-2">*mut </span>SSL_CTX,
+        cb: <span class="prelude-ty">Option</span>&lt;
+            <span class="kw">unsafe extern fn</span>(
+                ssl: <span class="kw-2">*mut </span>SSL,
+                out: <span class="kw-2">*mut *const </span>u8,
+                out_len: <span class="kw-2">*mut </span>u8,
+                inp: <span class="kw-2">*mut </span>u8,
+                in_len: c_uint,
+                arg: <span class="kw-2">*mut </span>c_void,
+            ) -&gt; c_int,
+        &gt;,
+        arg: <span class="kw-2">*mut </span>c_void,
+    );
+
+    <span class="kw">fn </span>SSL_CTX_sess_set_new_cb(
+        ctx: <span class="kw-2">*mut </span>SSL_CTX,
+        cb: <span class="prelude-ty">Option</span>&lt;
+            <span class="kw">unsafe extern fn</span>(ssl: <span class="kw-2">*mut </span>SSL, session: <span class="kw-2">*mut </span>SSL_SESSION) -&gt; c_int,
+        &gt;,
+    );
+
+    <span class="kw">fn </span>SSL_new(ctx: <span class="kw-2">*mut </span>SSL_CTX) -&gt; <span class="kw-2">*mut </span>SSL;
+
+    <span class="kw">fn </span>SSL_get_error(ssl: <span class="kw-2">*const </span>SSL, ret_code: c_int) -&gt; c_int;
+
+    <span class="kw">fn </span>SSL_set_accept_state(ssl: <span class="kw-2">*mut </span>SSL);
+    <span class="kw">fn </span>SSL_set_connect_state(ssl: <span class="kw-2">*mut </span>SSL);
+
+    <span class="kw">fn </span>SSL_get0_param(ssl: <span class="kw-2">*mut </span>SSL) -&gt; <span class="kw-2">*mut </span>X509_VERIFY_PARAM;
+
+    <span class="kw">fn </span>SSL_set_ex_data(ssl: <span class="kw-2">*mut </span>SSL, idx: c_int, ptr: <span class="kw-2">*mut </span>c_void) -&gt; c_int;
+    <span class="kw">fn </span>SSL_get_ex_data(ssl: <span class="kw-2">*const </span>SSL, idx: c_int) -&gt; <span class="kw-2">*mut </span>c_void;
+
+    <span class="kw">fn </span>SSL_get_current_cipher(ssl: <span class="kw-2">*const </span>SSL) -&gt; <span class="kw-2">*const </span>SSL_CIPHER;
+
+    <span class="kw">fn </span>SSL_set_session(ssl: <span class="kw-2">*mut </span>SSL, session: <span class="kw-2">*mut </span>SSL_SESSION) -&gt; c_int;
+
+    <span class="kw">fn </span>SSL_get_SSL_CTX(ssl: <span class="kw-2">*const </span>SSL) -&gt; <span class="kw-2">*mut </span>SSL_CTX;
+
+    <span class="kw">fn </span>SSL_set_quiet_shutdown(ssl: <span class="kw-2">*mut </span>SSL, mode: c_int);
+
+    <span class="kw">fn </span>SSL_set_quic_transport_params(
+        ssl: <span class="kw-2">*mut </span>SSL, params: <span class="kw-2">*const </span>u8, params_len: usize,
+    ) -&gt; c_int;
+
+    <span class="kw">fn </span>SSL_set_quic_method(
+        ssl: <span class="kw-2">*mut </span>SSL, quic_method: <span class="kw-2">*const </span>SSL_QUIC_METHOD,
+    ) -&gt; c_int;
+
+    <span class="kw">fn </span>SSL_set_quic_use_legacy_codepoint(ssl: <span class="kw-2">*mut </span>SSL, use_legacy: c_int);
+
+    <span class="attr">#[cfg(test)]
+    </span><span class="kw">fn </span>SSL_set_options(ssl: <span class="kw-2">*mut </span>SSL, opts: u32) -&gt; u32;
+
+    <span class="kw">fn </span>SSL_get_peer_quic_transport_params(
+        ssl: <span class="kw-2">*const </span>SSL, out_params: <span class="kw-2">*mut *const </span>u8, out_params_len: <span class="kw-2">*mut </span>usize,
+    );
+
+    <span class="kw">fn </span>SSL_get0_alpn_selected(
+        ssl: <span class="kw-2">*const </span>SSL, out: <span class="kw-2">*mut *const </span>u8, out_len: <span class="kw-2">*mut </span>u32,
+    );
+
+    <span class="kw">fn </span>SSL_get_servername(ssl: <span class="kw-2">*const </span>SSL, ty: c_int) -&gt; <span class="kw-2">*const </span>c_char;
+
+    <span class="kw">fn </span>SSL_provide_quic_data(
+        ssl: <span class="kw-2">*mut </span>SSL, level: crypto::Level, data: <span class="kw-2">*const </span>u8, len: usize,
+    ) -&gt; c_int;
+
+    <span class="kw">fn </span>SSL_process_quic_post_handshake(ssl: <span class="kw-2">*mut </span>SSL) -&gt; c_int;
+
+    <span class="kw">fn </span>SSL_do_handshake(ssl: <span class="kw-2">*mut </span>SSL) -&gt; c_int;
+
+    <span class="kw">fn </span>SSL_quic_write_level(ssl: <span class="kw-2">*const </span>SSL) -&gt; crypto::Level;
+
+    <span class="kw">fn </span>SSL_session_reused(ssl: <span class="kw-2">*const </span>SSL) -&gt; c_int;
+
+    <span class="kw">fn </span>SSL_in_init(ssl: <span class="kw-2">*const </span>SSL) -&gt; c_int;
+
+    <span class="kw">fn </span>SSL_clear(ssl: <span class="kw-2">*mut </span>SSL) -&gt; c_int;
+
+    <span class="kw">fn </span>SSL_free(ssl: <span class="kw-2">*mut </span>SSL);
+
+    <span class="comment">// SSL_CIPHER
+    </span><span class="kw">fn </span>SSL_CIPHER_get_id(cipher: <span class="kw-2">*const </span>SSL_CIPHER) -&gt; c_uint;
+
+    <span class="comment">// SSL_SESSION
+
+    </span><span class="kw">fn </span>SSL_SESSION_free(session: <span class="kw-2">*mut </span>SSL_SESSION);
+
+    <span class="comment">// X509_VERIFY_PARAM
+    </span><span class="kw">fn </span>X509_VERIFY_PARAM_set1_host(
+        param: <span class="kw-2">*mut </span>X509_VERIFY_PARAM, name: <span class="kw-2">*const </span>c_char, namelen: usize,
+    ) -&gt; c_int;
+
+    <span class="comment">// X509_STORE
+    </span><span class="attr">#[cfg(windows)]
+    </span><span class="kw">fn </span>X509_STORE_add_cert(ctx: <span class="kw-2">*mut </span>X509_STORE, x: <span class="kw-2">*mut </span>X509) -&gt; c_int;
+
+    <span class="comment">// X509
+    </span><span class="attr">#[cfg(windows)]
+    </span><span class="kw">fn </span>X509_free(x: <span class="kw-2">*mut </span>X509);
+    <span class="attr">#[cfg(windows)]
+    </span><span class="kw">fn </span>d2i_X509(px: <span class="kw-2">*mut </span>X509, input: <span class="kw-2">*const *const </span>u8, len: c_int) -&gt; <span class="kw-2">*mut </span>X509;
+
+    <span class="comment">// ERR
+    </span><span class="kw">fn </span>ERR_peek_error() -&gt; c_uint;
+
+    <span class="kw">fn </span>ERR_error_string_n(err: c_uint, buf: <span class="kw-2">*mut </span>c_char, len: usize);
+
+    <span class="comment">// OPENSSL
+    </span><span class="attr">#[allow(dead_code)]
+    </span><span class="kw">fn </span>OPENSSL_free(ptr: <span class="kw-2">*mut </span>c_void);
+
+}
+
+<span class="attr">#[cfg(not(feature = <span class="string">"openssl"</span>))]
+</span><span class="kw">mod </span>boringssl;
+<span class="attr">#[cfg(not(feature = <span class="string">"openssl"</span>))]
+</span><span class="kw">use </span>boringssl::<span class="kw-2">*</span>;
+
+<span class="attr">#[cfg(feature = <span class="string">"openssl"</span>)]
+</span><span class="kw">mod </span>openssl_quictls;
+<span class="attr">#[cfg(feature = <span class="string">"openssl"</span>)]
+</span><span class="kw">use </span>openssl_quictls::<span class="kw-2">*</span>;
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche/tls/openssl_quictls.rs.html b/src/quiche/tls/openssl_quictls.rs.html
new file mode 100644
index 0000000..bfd2614
--- /dev/null
+++ b/src/quiche/tls/openssl_quictls.rs.html
@@ -0,0 +1,719 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `quiche/src/tls/openssl_quictls.rs`."><title>openssl_quictls.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="quiche" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../../src-files.js"></script><script defer src="../../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../quiche/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+</pre></div><pre class="rust"><code><span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+<span class="kw">use </span>libc::c_long;
+<span class="kw">use </span>libc::c_uchar;
+
+<span class="attr">#[allow(non_camel_case_types)]
+#[repr(transparent)]
+</span><span class="kw">struct </span>OPENSSL_STACK {
+    _unused: c_void,
+}
+
+<span class="attr">#[allow(non_camel_case_types)]
+#[repr(transparent)]
+</span><span class="kw">struct </span>X509 {
+    _unused: c_void,
+}
+
+<span class="attr">#[repr(C)]
+#[allow(non_camel_case_types)]
+</span><span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">struct </span>SSL_QUIC_METHOD {
+    set_encryption_secrets: <span class="prelude-ty">Option</span>&lt;
+        <span class="kw">extern fn</span>(
+            ssl: <span class="kw-2">*mut </span>SSL,
+            level: crypto::Level,
+            read_secret: <span class="kw-2">*const </span>u8,
+            write_secret: <span class="kw-2">*const </span>u8,
+            secret_len: usize,
+        ) -&gt; c_int,
+    &gt;,
+
+    add_handshake_data: <span class="prelude-ty">Option</span>&lt;
+        <span class="kw">unsafe extern fn</span>(
+            ssl: <span class="kw-2">*mut </span>SSL,
+            level: crypto::Level,
+            data: <span class="kw-2">*const </span>u8,
+            len: usize,
+        ) -&gt; c_int,
+    &gt;,
+
+    flush_flight: <span class="prelude-ty">Option</span>&lt;<span class="kw">extern fn</span>(ssl: <span class="kw-2">*mut </span>SSL) -&gt; c_int&gt;,
+
+    send_alert: <span class="prelude-ty">Option</span>&lt;
+        <span class="kw">extern fn</span>(ssl: <span class="kw-2">*mut </span>SSL, level: crypto::Level, alert: u8) -&gt; c_int,
+    &gt;,
+}
+
+<span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">static </span>QUICHE_STREAM_METHOD: SSL_QUIC_METHOD = SSL_QUIC_METHOD {
+    set_encryption_secrets: <span class="prelude-val">Some</span>(set_encryption_secrets),
+    add_handshake_data: <span class="prelude-val">Some</span>(<span class="kw">super</span>::add_handshake_data),
+    flush_flight: <span class="prelude-val">Some</span>(<span class="kw">super</span>::flush_flight),
+    send_alert: <span class="prelude-val">Some</span>(<span class="kw">super</span>::send_alert),
+};
+
+<span class="kw">impl </span>Context {
+    <span class="kw">pub fn </span>set_early_data_enabled(<span class="kw-2">&amp;mut </span><span class="self">self</span>, _enabled: bool) {
+        <span class="comment">// not yet supported
+    </span>}
+}
+
+<span class="kw">impl </span>Handshake {
+    <span class="kw">pub fn </span>set_quic_early_data_context(<span class="kw-2">&amp;mut </span><span class="self">self</span>, _context: <span class="kw-2">&amp;</span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="comment">// not supported for now.
+        </span>map_result(<span class="number">1</span>)
+    }
+
+    <span class="kw">pub fn </span>curve(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;String&gt; {
+        <span class="kw">let </span>curve = <span class="kw">unsafe </span>{
+            <span class="kw">let </span>curve_id = SSL_get_negotiated_group(<span class="self">self</span>.as_ptr());
+            <span class="kw">if </span>curve_id == <span class="number">0 </span>{
+                <span class="kw">return </span><span class="prelude-val">None</span>;
+            }
+
+            <span class="kw">let </span>curve_name = SSL_group_to_name(<span class="self">self</span>.as_ptr(), curve_id);
+
+            <span class="kw">match </span>ffi::CStr::from_ptr(curve_name).to_str() {
+                <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="kw">return </span><span class="prelude-val">None</span>,
+            }
+        };
+
+        <span class="prelude-val">Some</span>(curve.to_string())
+    }
+
+    <span class="kw">pub fn </span>peer_cert_chain(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;Vec&lt;<span class="kw-2">&amp;</span>[u8]&gt;&gt; {
+        <span class="comment">// If ssl is server then the leaf will not be included,
+        // SSL_get0_peer_certificate should be called.
+        </span><span class="kw">let </span>cert_chain = <span class="kw">unsafe </span>{
+            <span class="kw">let </span>chain =
+                map_result_ptr(SSL_get_peer_cert_chain(<span class="self">self</span>.as_ptr())).ok()<span class="question-mark">?</span>;
+
+            <span class="kw">let </span>num = sk_X509_num(chain);
+            <span class="kw">if </span>num == <span class="number">0 </span>{
+                <span class="kw">return </span><span class="prelude-val">None</span>;
+            }
+
+            <span class="kw">let </span><span class="kw-2">mut </span>cert_chain = <span class="macro">vec!</span>[];
+            <span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..num {
+                <span class="kw">let </span>cert =
+                    map_result_ptr(sk_X509_value(chain, i) <span class="kw">as </span><span class="kw-2">*mut </span>X509).ok()<span class="question-mark">?</span>;
+
+                <span class="kw">let </span><span class="kw-2">mut </span>out: <span class="kw-2">*mut </span>u8 = std::ptr::null_mut();
+                <span class="kw">let </span>len = i2d_X509(cert, <span class="kw-2">&amp;mut </span>out);
+                <span class="kw">if </span>len &lt; <span class="number">0 </span>{
+                    <span class="kw">return </span><span class="prelude-val">None</span>;
+                }
+                cert_chain.push(slice::from_raw_parts(out, len <span class="kw">as </span>usize));
+            }
+
+            cert_chain
+        };
+
+        <span class="prelude-val">Some</span>(cert_chain)
+    }
+
+    <span class="kw">pub fn </span>peer_cert(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>[u8]&gt; {
+        <span class="kw">let </span>peer_cert = <span class="kw">unsafe </span>{
+            <span class="comment">// Important: Unit tests is disabled on this method.
+            // Although the client calls SSL_CTX_set_verify,  for some reason
+            // SSL_get0_peer_certificate seems not to return the peer's
+            // certificate as in bssl. SSL_peer_certificate does
+            // returns the object representing a certificate used as
+            // the local peer's identity.
+            </span><span class="kw">let </span>cert =
+                map_result_ptr(SSL_get0_peer_certificate(<span class="self">self</span>.as_ptr())).ok()<span class="question-mark">?</span>;
+            <span class="kw">let </span><span class="kw-2">mut </span>out: <span class="kw-2">*mut </span>u8 = std::ptr::null_mut();
+            <span class="kw">let </span>len = i2d_X509(cert, <span class="kw-2">&amp;mut </span>out);
+            <span class="kw">if </span>len &lt; <span class="number">0 </span>{
+                <span class="kw">return </span><span class="prelude-val">None</span>;
+            }
+            slice::from_raw_parts(out, len <span class="kw">as </span>usize)
+        };
+        <span class="prelude-val">Some</span>(peer_cert)
+    }
+
+    <span class="attr">#[cfg(test)]
+    #[allow(dead_code)] </span><span class="comment">// for now, till we implement this using openssl
+    </span><span class="kw">pub fn </span>set_failing_private_key_method(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {}
+
+    <span class="kw">pub fn </span>is_in_early_data(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; bool {
+        <span class="bool-val">false
+    </span>}
+
+    <span class="kw">pub fn </span>set_session(<span class="kw-2">&amp;mut </span><span class="self">self</span>, session: <span class="kw-2">&amp;</span>[u8]) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">unsafe </span>{
+            <span class="kw">let </span>ctx = SSL_get_SSL_CTX(<span class="self">self</span>.as_ptr());
+
+            <span class="kw">if </span>ctx.is_null() {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::TlsFail);
+            }
+
+            <span class="kw">let </span>session = d2i_SSL_SESSION(
+                std::ptr::null_mut(),
+                <span class="kw-2">&amp;mut </span>session.as_ptr(),
+                session.len() <span class="kw">as </span>c_long,
+            );
+
+            <span class="kw">if </span>session.is_null() {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(Error::TlsFail);
+            }
+
+            <span class="kw">let </span>rc = SSL_set_session(<span class="self">self</span>.as_mut_ptr(), session);
+            SSL_SESSION_free(session);
+
+            map_result(rc)
+        }
+    }
+
+    <span class="kw">pub fn </span>reset_early_data_reject(<span class="kw-2">&amp;mut </span><span class="self">self</span>) {
+        <span class="comment">// not yet supported
+    </span>}
+
+    <span class="kw">pub fn </span>sigalg(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;String&gt; {
+        <span class="kw">let </span>sigalg = <span class="string">""</span>;
+
+        <span class="prelude-val">Some</span>(sigalg.to_string())
+    }
+}
+
+<span class="kw">extern fn </span>set_encryption_secrets(
+    ssl: <span class="kw-2">*mut </span>SSL, level: crypto::Level, read_secret: <span class="kw-2">*const </span>u8,
+    write_secret: <span class="kw-2">*const </span>u8, secret_len: usize,
+) -&gt; c_int {
+    <span class="kw">let </span>cipher = map_result_ptr(<span class="kw">unsafe </span>{ SSL_get_current_cipher(ssl) });
+    <span class="kw">let </span>_write_ret =
+        set_write_secret(ssl, level, cipher.unwrap(), write_secret, secret_len);
+    <span class="kw">let </span>_read_ret =
+        set_read_secret(ssl, level, cipher.unwrap(), read_secret, secret_len);
+
+    <span class="number">1
+</span>}
+
+<span class="comment">// OpenSSL compatibility functions.
+//
+// These don't 100% follow the OpenSSL API (e.g. some arguments have slightly
+// different types) in order to make them compatible with the BoringSSL API.
+
+</span><span class="attr">#[allow(non_snake_case)]
+</span><span class="kw">unsafe fn </span>sk_X509_num(stack: <span class="kw-2">*const </span>STACK_OF) -&gt; usize {
+    OPENSSL_sk_num(stack <span class="kw">as </span><span class="kw-2">*const </span>OPENSSL_STACK)
+}
+
+<span class="attr">#[allow(non_snake_case)]
+</span><span class="kw">unsafe fn </span>sk_X509_value(stack: <span class="kw-2">*const </span>STACK_OF, idx: usize) -&gt; <span class="kw-2">*mut </span>c_void {
+    OPENSSL_sk_value(stack <span class="kw">as </span><span class="kw-2">*const </span>OPENSSL_STACK, idx)
+}
+
+<span class="attr">#[allow(non_snake_case)]
+</span><span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">unsafe fn </span>SSL_CTX_set_session_cache_mode(
+    ctx: <span class="kw-2">*mut </span>SSL_CTX, mode: c_int,
+) -&gt; c_int {
+    <span class="kw">const </span>SSL_CTRL_SET_SESS_CACHE_MODE: c_int = <span class="number">44</span>;
+
+    SSL_CTX_ctrl(
+        ctx,
+        SSL_CTRL_SET_SESS_CACHE_MODE,
+        mode <span class="kw">as </span>c_long,
+        ptr::null_mut(),
+    ) <span class="kw">as </span>c_int
+}
+
+<span class="attr">#[allow(non_snake_case)]
+</span><span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">unsafe fn </span>SSL_CTX_set_tlsext_ticket_keys(
+    ctx: <span class="kw-2">*mut </span>SSL_CTX, key: <span class="kw-2">*const </span>u8, key_len: usize,
+) -&gt; c_int {
+    <span class="kw">const </span>SSL_CTRL_SET_TLSEXT_TICKET_KEYS: c_int = <span class="number">59</span>;
+
+    SSL_CTX_ctrl(
+        ctx,
+        SSL_CTRL_SET_TLSEXT_TICKET_KEYS,
+        key_len <span class="kw">as </span>c_long,
+        key <span class="kw">as </span><span class="kw-2">*mut </span>c_void,
+    ) <span class="kw">as </span>c_int
+}
+
+<span class="attr">#[allow(non_snake_case)]
+</span><span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">unsafe fn </span>SSL_set_min_proto_version(
+    s: <span class="kw-2">*mut </span>SSL, version: u16,
+) -&gt; c_int {
+    <span class="kw">const </span>SSL_CTRL_SET_MIN_PROTO_VERSION: c_int = <span class="number">123</span>;
+
+    SSL_ctrl(
+        s,
+        SSL_CTRL_SET_MIN_PROTO_VERSION,
+        version <span class="kw">as </span>c_long,
+        ptr::null_mut(),
+    ) <span class="kw">as </span>c_int
+}
+
+<span class="attr">#[allow(non_snake_case)]
+</span><span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">unsafe fn </span>SSL_set_max_proto_version(
+    s: <span class="kw-2">*mut </span>SSL, version: u16,
+) -&gt; c_int {
+    <span class="kw">const </span>SSL_CTRL_SET_MAX_PROTO_VERSION: c_int = <span class="number">124</span>;
+
+    SSL_ctrl(
+        s,
+        SSL_CTRL_SET_MAX_PROTO_VERSION,
+        version <span class="kw">as </span>c_long,
+        ptr::null_mut(),
+    ) <span class="kw">as </span>c_int
+}
+
+<span class="attr">#[allow(non_snake_case)]
+</span><span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">unsafe fn </span>SSL_set_tlsext_host_name(
+    s: <span class="kw-2">*mut </span>SSL, name: <span class="kw-2">*const </span>c_char,
+) -&gt; c_int {
+    <span class="kw">const </span>SSL_CTRL_SET_TLSEXT_HOSTNAME: c_int = <span class="number">55</span>;
+
+    <span class="attr">#[allow(non_upper_case_globals)]
+    </span><span class="kw">const </span>TLSEXT_NAMETYPE_host_name: c_long = <span class="number">0</span>;
+
+    SSL_ctrl(
+        s,
+        SSL_CTRL_SET_TLSEXT_HOSTNAME,
+        TLSEXT_NAMETYPE_host_name,
+        name <span class="kw">as </span><span class="kw-2">*mut </span>c_void,
+    ) <span class="kw">as </span>c_int
+}
+
+<span class="attr">#[allow(non_snake_case)]
+</span><span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">unsafe fn </span>SSL_get_ex_new_index(
+    argl: c_long, argp: <span class="kw-2">*const </span>c_void, newf: <span class="kw-2">*const </span>c_void, dupf: <span class="kw-2">*const </span>c_void,
+    freef: <span class="kw-2">*const </span>c_void,
+) -&gt; c_int {
+    <span class="kw">const </span>CRYPTO_EX_INDEX_SSL: c_int = <span class="number">0</span>;
+
+    CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, argl, argp, newf, dupf, freef)
+}
+
+<span class="attr">#[allow(non_snake_case)]
+</span><span class="kw">unsafe fn </span>SSL_get_negotiated_group(ssl: <span class="kw-2">*const </span>SSL) -&gt; c_int {
+    <span class="kw">const </span>SSL_CTRL_GET_NEGOTIATED_GROUP: c_int = <span class="number">134</span>;
+    SSL_ctrl(
+        ssl,
+        SSL_CTRL_GET_NEGOTIATED_GROUP,
+        <span class="number">0 </span><span class="kw">as </span>c_long,
+        ptr::null_mut(),
+    ) <span class="kw">as </span>c_int
+}
+
+<span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">fn </span>get_session_bytes(session: <span class="kw-2">*mut </span>SSL_SESSION) -&gt; <span class="prelude-ty">Result</span>&lt;Vec&lt;u8&gt;&gt; {
+    <span class="kw">let </span>session_bytes = <span class="kw">unsafe </span>{
+        <span class="comment">// get session encoding length
+        </span><span class="kw">let </span>out_len = i2d_SSL_SESSION(session, std::ptr::null_mut());
+        <span class="kw">if </span>out_len == <span class="number">0 </span>{
+            <span class="kw">return </span><span class="prelude-val">Err</span>(Error::TlsFail);
+        }
+        <span class="kw">let </span><span class="kw-2">mut </span>out: Vec&lt;c_uchar&gt; = Vec::with_capacity(out_len <span class="kw">as </span>usize);
+
+        <span class="kw">let </span>out_len = i2d_SSL_SESSION(session, <span class="kw-2">&amp;mut </span>out.as_mut_ptr());
+        <span class="kw">let </span>session_bytes =
+            std::slice::from_raw_parts(out.as_mut_ptr(), out_len <span class="kw">as </span>usize)
+                .to_vec();
+        session_bytes
+    };
+
+    <span class="prelude-val">Ok</span>(session_bytes)
+}
+<span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">const </span>TLS_ERROR: c_int = <span class="number">2</span>;
+
+<span class="kw">extern </span>{
+
+    <span class="kw">fn </span>SSL_CTX_ctrl(
+        ctx: <span class="kw-2">*mut </span>SSL_CTX, cmd: c_int, larg: c_long, parg: <span class="kw-2">*mut </span>c_void,
+    ) -&gt; c_long;
+
+    <span class="kw">fn </span>SSL_get_peer_cert_chain(ssl: <span class="kw-2">*const </span>SSL) -&gt; <span class="kw-2">*mut </span>STACK_OF;
+
+    <span class="kw">fn </span>SSL_get0_peer_certificate(ssl: <span class="kw-2">*const </span>SSL) -&gt; <span class="kw-2">*mut </span>X509;
+
+    <span class="kw">fn </span>SSL_ctrl(
+        ssl: <span class="kw-2">*const </span>SSL, cmd: c_int, larg: c_long, parg: <span class="kw-2">*mut </span>c_void,
+    ) -&gt; c_long;
+
+    <span class="kw">fn </span>i2d_X509(px: <span class="kw-2">*const </span>X509, out: <span class="kw-2">*mut *mut </span>c_uchar) -&gt; c_int;
+
+    <span class="kw">fn </span>OPENSSL_sk_num(stack: <span class="kw-2">*const </span>OPENSSL_STACK) -&gt; usize;
+
+    <span class="kw">fn </span>OPENSSL_sk_value(stack: <span class="kw-2">*const </span>OPENSSL_STACK, idx: usize) -&gt; <span class="kw-2">*mut </span>c_void;
+
+    <span class="comment">// CRYPTO
+
+    </span><span class="kw">fn </span>CRYPTO_get_ex_new_index(
+        class_index: c_int, argl: c_long, argp: <span class="kw-2">*const </span>c_void,
+        new_func: <span class="kw-2">*const </span>c_void, dup_func: <span class="kw-2">*const </span>c_void,
+        free_func: <span class="kw-2">*const </span>c_void,
+    ) -&gt; c_int;
+
+    <span class="kw">fn </span>d2i_SSL_SESSION(
+        a: <span class="kw-2">*mut *mut </span>SSL_SESSION, pp: <span class="kw-2">*mut *const </span>c_uchar, len: c_long,
+    ) -&gt; <span class="kw-2">*mut </span>SSL_SESSION;
+
+    <span class="kw">pub</span>(<span class="kw">super</span>) <span class="kw">fn </span>i2d_SSL_SESSION(
+        in_: <span class="kw-2">*mut </span>SSL_SESSION, pp: <span class="kw-2">*mut *mut </span>c_uchar,
+    ) -&gt; c_int;
+
+    <span class="kw">fn </span>SSL_group_to_name(ssl: <span class="kw-2">*const </span>SSL, id: c_int) -&gt; <span class="kw-2">*const </span>c_char;
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche_apps/args.rs.html b/src/quiche_apps/args.rs.html
new file mode 100644
index 0000000..5e3952e
--- /dev/null
+++ b/src/quiche_apps/args.rs.html
@@ -0,0 +1,1019 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `apps/src/args.rs`."><title>args.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2020, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span><span class="kw">super</span>::common::alpns;
+
+<span class="kw">pub trait </span>Args {
+    <span class="kw">fn </span>with_docopt(docopt: <span class="kw-2">&amp;</span>docopt::Docopt) -&gt; <span class="self">Self</span>;
+}
+
+<span class="doccomment">/// Contains commons arguments for creating a quiche QUIC connection.
+</span><span class="kw">pub struct </span>CommonArgs {
+    <span class="kw">pub </span>alpns: Vec&lt;<span class="kw-2">&amp;</span><span class="lifetime">'static </span>[u8]&gt;,
+    <span class="kw">pub </span>max_data: u64,
+    <span class="kw">pub </span>max_window: u64,
+    <span class="kw">pub </span>max_stream_data: u64,
+    <span class="kw">pub </span>max_stream_window: u64,
+    <span class="kw">pub </span>max_streams_bidi: u64,
+    <span class="kw">pub </span>max_streams_uni: u64,
+    <span class="kw">pub </span>idle_timeout: u64,
+    <span class="kw">pub </span>early_data: bool,
+    <span class="kw">pub </span>dump_packet_path: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    <span class="kw">pub </span>no_grease: bool,
+    <span class="kw">pub </span>cc_algorithm: String,
+    <span class="kw">pub </span>disable_hystart: bool,
+    <span class="kw">pub </span>dgrams_enabled: bool,
+    <span class="kw">pub </span>dgram_count: u64,
+    <span class="kw">pub </span>dgram_data: String,
+    <span class="kw">pub </span>max_active_cids: u64,
+    <span class="kw">pub </span>enable_active_migration: bool,
+    <span class="kw">pub </span>max_field_section_size: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>qpack_max_table_capacity: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>qpack_blocked_streams: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    <span class="kw">pub </span>initial_cwnd_packets: u64,
+}
+
+<span class="doccomment">/// Creates a new `CommonArgs` structure using the provided [`Docopt`].
+///
+/// The `Docopt` usage String needs to include the following:
+///
+/// --http-version VERSION      HTTP version to use.
+/// --max-data BYTES            Connection-wide flow control limit.
+/// --max-window BYTES          Connection-wide max receiver window.
+/// --max-stream-data BYTES     Per-stream flow control limit.
+/// --max-stream-window BYTES   Per-stream max receiver window.
+/// --max-streams-bidi STREAMS  Number of allowed concurrent streams.
+/// --max-streams-uni STREAMS   Number of allowed concurrent streams.
+/// --dump-packets PATH         Dump the incoming packets in PATH.
+/// --no-grease                 Don't send GREASE.
+/// --cc-algorithm NAME         Set a congestion control algorithm.
+/// --disable-hystart           Disable HyStart++.
+/// --dgram-proto PROTO         DATAGRAM application protocol.
+/// --dgram-count COUNT         Number of DATAGRAMs to send.
+/// --dgram-data DATA           DATAGRAM data to send.
+/// --max-active-cids NUM       Maximum number of active Connection IDs.
+/// --enable-active-migration   Enable active connection migration.
+/// --max-field-section-size BYTES  Max size of uncompressed field section.
+/// --qpack-max-table-capacity BYTES  Max capacity of dynamic QPACK decoding.
+/// --qpack-blocked-streams STREAMS  Limit of blocked streams while decoding.
+/// --initial-cwnd-packets      Size of initial congestion window, in packets.
+///
+/// [`Docopt`]: https://docs.rs/docopt/1.1.0/docopt/
+</span><span class="kw">impl </span>Args <span class="kw">for </span>CommonArgs {
+    <span class="kw">fn </span>with_docopt(docopt: <span class="kw-2">&amp;</span>docopt::Docopt) -&gt; <span class="self">Self </span>{
+        <span class="kw">let </span>args = docopt.parse().unwrap_or_else(|e| e.exit());
+
+        <span class="kw">let </span>http_version = args.get_str(<span class="string">"--http-version"</span>);
+        <span class="kw">let </span>dgram_proto = args.get_str(<span class="string">"--dgram-proto"</span>);
+        <span class="kw">let </span>(alpns, dgrams_enabled) = <span class="kw">match </span>(http_version, dgram_proto) {
+            (<span class="string">"HTTP/0.9"</span>, <span class="string">"none"</span>) =&gt; (alpns::HTTP_09.to_vec(), <span class="bool-val">false</span>),
+
+            (<span class="string">"HTTP/0.9"</span>, <span class="kw">_</span>) =&gt;
+                <span class="macro">panic!</span>(<span class="string">"Unsupported HTTP version and DATAGRAM protocol."</span>),
+
+            (<span class="string">"HTTP/3"</span>, <span class="string">"none"</span>) =&gt; (alpns::HTTP_3.to_vec(), <span class="bool-val">false</span>),
+
+            (<span class="string">"HTTP/3"</span>, <span class="string">"oneway"</span>) =&gt; (alpns::HTTP_3.to_vec(), <span class="bool-val">true</span>),
+
+            (<span class="string">"all"</span>, <span class="string">"none"</span>) =&gt; (
+                [alpns::HTTP_3.as_slice(), <span class="kw-2">&amp;</span>alpns::HTTP_09]
+                    .concat()
+                    .to_vec(),
+                <span class="bool-val">false</span>,
+            ),
+
+            (..) =&gt; <span class="macro">panic!</span>(<span class="string">"Unsupported HTTP version and DATAGRAM protocol."</span>),
+        };
+
+        <span class="kw">let </span>dgram_count = args.get_str(<span class="string">"--dgram-count"</span>);
+        <span class="kw">let </span>dgram_count = dgram_count.parse::&lt;u64&gt;().unwrap();
+
+        <span class="kw">let </span>dgram_data = args.get_str(<span class="string">"--dgram-data"</span>).to_string();
+
+        <span class="kw">let </span>max_data = args.get_str(<span class="string">"--max-data"</span>);
+        <span class="kw">let </span>max_data = max_data.parse::&lt;u64&gt;().unwrap();
+
+        <span class="kw">let </span>max_window = args.get_str(<span class="string">"--max-window"</span>);
+        <span class="kw">let </span>max_window = max_window.parse::&lt;u64&gt;().unwrap();
+
+        <span class="kw">let </span>max_stream_data = args.get_str(<span class="string">"--max-stream-data"</span>);
+        <span class="kw">let </span>max_stream_data = max_stream_data.parse::&lt;u64&gt;().unwrap();
+
+        <span class="kw">let </span>max_stream_window = args.get_str(<span class="string">"--max-stream-window"</span>);
+        <span class="kw">let </span>max_stream_window = max_stream_window.parse::&lt;u64&gt;().unwrap();
+
+        <span class="kw">let </span>max_streams_bidi = args.get_str(<span class="string">"--max-streams-bidi"</span>);
+        <span class="kw">let </span>max_streams_bidi = max_streams_bidi.parse::&lt;u64&gt;().unwrap();
+
+        <span class="kw">let </span>max_streams_uni = args.get_str(<span class="string">"--max-streams-uni"</span>);
+        <span class="kw">let </span>max_streams_uni = max_streams_uni.parse::&lt;u64&gt;().unwrap();
+
+        <span class="kw">let </span>idle_timeout = args.get_str(<span class="string">"--idle-timeout"</span>);
+        <span class="kw">let </span>idle_timeout = idle_timeout.parse::&lt;u64&gt;().unwrap();
+
+        <span class="kw">let </span>early_data = args.get_bool(<span class="string">"--early-data"</span>);
+
+        <span class="kw">let </span>dump_packet_path = <span class="kw">if </span>args.get_str(<span class="string">"--dump-packets"</span>) != <span class="string">"" </span>{
+            <span class="prelude-val">Some</span>(args.get_str(<span class="string">"--dump-packets"</span>).to_string())
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="kw">let </span>no_grease = args.get_bool(<span class="string">"--no-grease"</span>);
+
+        <span class="kw">let </span>cc_algorithm = args.get_str(<span class="string">"--cc-algorithm"</span>);
+
+        <span class="kw">let </span>disable_hystart = args.get_bool(<span class="string">"--disable-hystart"</span>);
+
+        <span class="kw">let </span>max_active_cids = args.get_str(<span class="string">"--max-active-cids"</span>);
+        <span class="kw">let </span>max_active_cids = max_active_cids.parse::&lt;u64&gt;().unwrap();
+
+        <span class="kw">let </span>enable_active_migration = args.get_bool(<span class="string">"--enable-active-migration"</span>);
+
+        <span class="kw">let </span>max_field_section_size =
+            <span class="kw">if </span>args.get_str(<span class="string">"--max-field-section-size"</span>) != <span class="string">"" </span>{
+                <span class="prelude-val">Some</span>(
+                    args.get_str(<span class="string">"--max-field-section-size"</span>)
+                        .parse::&lt;u64&gt;()
+                        .unwrap(),
+                )
+            } <span class="kw">else </span>{
+                <span class="prelude-val">None
+            </span>};
+
+        <span class="kw">let </span>qpack_max_table_capacity =
+            <span class="kw">if </span>args.get_str(<span class="string">"--qpack-max-table-capacity"</span>) != <span class="string">"" </span>{
+                <span class="prelude-val">Some</span>(
+                    args.get_str(<span class="string">"--qpack-max-table-capacity"</span>)
+                        .parse::&lt;u64&gt;()
+                        .unwrap(),
+                )
+            } <span class="kw">else </span>{
+                <span class="prelude-val">None
+            </span>};
+
+        <span class="kw">let </span>qpack_blocked_streams =
+            <span class="kw">if </span>args.get_str(<span class="string">"--qpack-blocked-streams"</span>) != <span class="string">"" </span>{
+                <span class="prelude-val">Some</span>(
+                    args.get_str(<span class="string">"--qpack-blocked-streams"</span>)
+                        .parse::&lt;u64&gt;()
+                        .unwrap(),
+                )
+            } <span class="kw">else </span>{
+                <span class="prelude-val">None
+            </span>};
+
+        <span class="kw">let </span>initial_cwnd_packets = args
+            .get_str(<span class="string">"--initial-cwnd-packets"</span>)
+            .parse::&lt;u64&gt;()
+            .unwrap();
+
+        CommonArgs {
+            alpns,
+            max_data,
+            max_window,
+            max_stream_data,
+            max_stream_window,
+            max_streams_bidi,
+            max_streams_uni,
+            idle_timeout,
+            early_data,
+            dump_packet_path,
+            no_grease,
+            cc_algorithm: cc_algorithm.to_string(),
+            disable_hystart,
+            dgrams_enabled,
+            dgram_count,
+            dgram_data,
+            max_active_cids,
+            enable_active_migration,
+            max_field_section_size,
+            qpack_max_table_capacity,
+            qpack_blocked_streams,
+            initial_cwnd_packets,
+        }
+    }
+}
+
+<span class="kw">impl </span>Default <span class="kw">for </span>CommonArgs {
+    <span class="kw">fn </span>default() -&gt; <span class="self">Self </span>{
+        CommonArgs {
+            alpns: alpns::HTTP_3.to_vec(),
+            max_data: <span class="number">10000000</span>,
+            max_window: <span class="number">25165824</span>,
+            max_stream_data: <span class="number">1000000</span>,
+            max_stream_window: <span class="number">16777216</span>,
+            max_streams_bidi: <span class="number">100</span>,
+            max_streams_uni: <span class="number">100</span>,
+            idle_timeout: <span class="number">30000</span>,
+            early_data: <span class="bool-val">false</span>,
+            dump_packet_path: <span class="prelude-val">None</span>,
+            no_grease: <span class="bool-val">false</span>,
+            cc_algorithm: <span class="string">"cubic"</span>.to_string(),
+            disable_hystart: <span class="bool-val">false</span>,
+            dgrams_enabled: <span class="bool-val">false</span>,
+            dgram_count: <span class="number">0</span>,
+            dgram_data: <span class="string">"quack"</span>.to_string(),
+            max_active_cids: <span class="number">2</span>,
+            enable_active_migration: <span class="bool-val">false</span>,
+            max_field_section_size: <span class="prelude-val">None</span>,
+            qpack_max_table_capacity: <span class="prelude-val">None</span>,
+            qpack_blocked_streams: <span class="prelude-val">None</span>,
+            initial_cwnd_packets: <span class="number">10</span>,
+        }
+    }
+}
+
+<span class="kw">pub const </span>CLIENT_USAGE: <span class="kw-2">&amp;</span>str = <span class="string">"Usage:
+  quiche-client [options] URL...
+  quiche-client -h | --help
+
+Options:
+  --method METHOD          Use the given HTTP request method [default: GET].
+  --body FILE              Send the given file as request body.
+  --max-data BYTES         Connection-wide flow control limit [default: 10000000].
+  --max-window BYTES       Connection-wide max receiver window [default: 25165824].
+  --max-stream-data BYTES  Per-stream flow control limit [default: 1000000].
+  --max-stream-window BYTES   Per-stream max receiver window [default: 16777216].
+  --max-streams-bidi STREAMS  Number of allowed concurrent streams [default: 100].
+  --max-streams-uni STREAMS   Number of allowed concurrent streams [default: 100].
+  --idle-timeout TIMEOUT   Idle timeout in milliseconds [default: 30000].
+  --wire-version VERSION   The version number to send to the server [default: babababa].
+  --http-version VERSION   HTTP version to use [default: all].
+  --early-data             Enable sending early data.
+  --dgram-proto PROTO      DATAGRAM application protocol to use [default: none].
+  --dgram-count COUNT      Number of DATAGRAMs to send [default: 0].
+  --dgram-data DATA        Data to send for certain types of DATAGRAM application protocol [default: quack].
+  --dump-packets PATH      Dump the incoming packets as files in the given directory.
+  --dump-responses PATH    Dump response payload as files in the given directory.
+  --dump-json              Dump response headers and payload to stdout in JSON format.
+  --max-json-payload BYTES  Per-response payload limit when dumping JSON [default: 10000].
+  --connect-to ADDRESS     Override the server's address.
+  --no-verify              Don't verify server's certificate.
+  --trust-origin-ca-pem &lt;file&gt;  Path to the pem file of the origin's CA, if not publicly trusted.
+  --no-grease              Don't send GREASE.
+  --cc-algorithm NAME      Specify which congestion control algorithm to use [default: cubic].
+  --disable-hystart        Disable HyStart++.
+  --max-active-cids NUM    The maximum number of active Connection IDs we can support [default: 2].
+  --enable-active-migration   Enable active connection migration.
+  --perform-migration      Perform connection migration on another source port.
+  -H --header HEADER ...   Add a request header.
+  -n --requests REQUESTS   Send the given number of identical requests [default: 1].
+  --send-priority-update   Send HTTP/3 priority updates if the query string params 'u' or 'i' are present in URLs
+  --max-field-section-size BYTES    Max size of uncompressed field section. Default is unlimited.
+  --qpack-max-table-capacity BYTES  Max capacity of dynamic QPACK decoding.. Any value other that 0 is currently unsupported.
+  --qpack-blocked-streams STREAMS   Limit of blocked streams while decoding. Any value other that 0 is currently unsupported.
+  --session-file PATH      File used to cache a TLS session for resumption.
+  --source-port PORT       Source port to use when connecting to the server [default: 0].
+  --initial-cwnd-packets PACKETS   The initial congestion window size in terms of packet count [default: 10].
+  -h --help                Show this screen.
+"</span>;
+
+<span class="doccomment">/// Application-specific arguments that compliment the `CommonArgs`.
+</span><span class="kw">pub struct </span>ClientArgs {
+    <span class="kw">pub </span>version: u32,
+    <span class="kw">pub </span>dump_response_path: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    <span class="kw">pub </span>dump_json: <span class="prelude-ty">Option</span>&lt;usize&gt;,
+    <span class="kw">pub </span>urls: Vec&lt;url::Url&gt;,
+    <span class="kw">pub </span>reqs_cardinal: u64,
+    <span class="kw">pub </span>req_headers: Vec&lt;String&gt;,
+    <span class="kw">pub </span>no_verify: bool,
+    <span class="kw">pub </span>trust_origin_ca_pem: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    <span class="kw">pub </span>body: <span class="prelude-ty">Option</span>&lt;Vec&lt;u8&gt;&gt;,
+    <span class="kw">pub </span>method: String,
+    <span class="kw">pub </span>connect_to: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    <span class="kw">pub </span>session_file: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    <span class="kw">pub </span>source_port: u16,
+    <span class="kw">pub </span>perform_migration: bool,
+    <span class="kw">pub </span>send_priority_update: bool,
+}
+
+<span class="kw">impl </span>Args <span class="kw">for </span>ClientArgs {
+    <span class="kw">fn </span>with_docopt(docopt: <span class="kw-2">&amp;</span>docopt::Docopt) -&gt; <span class="self">Self </span>{
+        <span class="kw">let </span>args = docopt.parse().unwrap_or_else(|e| e.exit());
+
+        <span class="kw">let </span>version = args.get_str(<span class="string">"--wire-version"</span>);
+        <span class="kw">let </span>version = u32::from_str_radix(version, <span class="number">16</span>).unwrap();
+
+        <span class="kw">let </span>dump_response_path = <span class="kw">if </span>args.get_str(<span class="string">"--dump-responses"</span>) != <span class="string">"" </span>{
+            <span class="prelude-val">Some</span>(args.get_str(<span class="string">"--dump-responses"</span>).to_string())
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="kw">let </span>dump_json = args.get_bool(<span class="string">"--dump-json"</span>);
+        <span class="kw">let </span>dump_json = <span class="kw">if </span>dump_json {
+            <span class="kw">let </span>max_payload = args.get_str(<span class="string">"--max-json-payload"</span>);
+            <span class="kw">let </span>max_payload = max_payload.parse::&lt;usize&gt;().unwrap();
+            <span class="prelude-val">Some</span>(max_payload)
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="comment">// URLs (can be multiple).
+        </span><span class="kw">let </span>urls: Vec&lt;url::Url&gt; = args
+            .get_vec(<span class="string">"URL"</span>)
+            .into_iter()
+            .map(|x| url::Url::parse(x).unwrap())
+            .collect();
+
+        <span class="comment">// Request headers (can be multiple).
+        </span><span class="kw">let </span>req_headers = args
+            .get_vec(<span class="string">"--header"</span>)
+            .into_iter()
+            .map(|x| x.to_string())
+            .collect();
+
+        <span class="kw">let </span>reqs_cardinal = args.get_str(<span class="string">"--requests"</span>);
+        <span class="kw">let </span>reqs_cardinal = reqs_cardinal.parse::&lt;u64&gt;().unwrap();
+
+        <span class="kw">let </span>no_verify = args.get_bool(<span class="string">"--no-verify"</span>);
+
+        <span class="kw">let </span>trust_origin_ca_pem = args.get_str(<span class="string">"--trust-origin-ca-pem"</span>);
+        <span class="kw">let </span>trust_origin_ca_pem = <span class="kw">if </span>!trust_origin_ca_pem.is_empty() {
+            <span class="prelude-val">Some</span>(trust_origin_ca_pem.to_string())
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="kw">let </span>body = <span class="kw">if </span>args.get_bool(<span class="string">"--body"</span>) {
+            std::fs::read(args.get_str(<span class="string">"--body"</span>)).ok()
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="kw">let </span>method = args.get_str(<span class="string">"--method"</span>).to_string();
+
+        <span class="kw">let </span>connect_to = <span class="kw">if </span>args.get_bool(<span class="string">"--connect-to"</span>) {
+            <span class="prelude-val">Some</span>(args.get_str(<span class="string">"--connect-to"</span>).to_string())
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="kw">let </span>session_file = <span class="kw">if </span>args.get_bool(<span class="string">"--session-file"</span>) {
+            <span class="prelude-val">Some</span>(args.get_str(<span class="string">"--session-file"</span>).to_string())
+        } <span class="kw">else </span>{
+            <span class="prelude-val">None
+        </span>};
+
+        <span class="kw">let </span>source_port = args.get_str(<span class="string">"--source-port"</span>);
+        <span class="kw">let </span>source_port = source_port.parse::&lt;u16&gt;().unwrap();
+
+        <span class="kw">let </span>perform_migration = args.get_bool(<span class="string">"--perform-migration"</span>);
+
+        <span class="kw">let </span>send_priority_update = args.get_bool(<span class="string">"--send-priority-update"</span>);
+
+        ClientArgs {
+            version,
+            dump_response_path,
+            dump_json,
+            urls,
+            reqs_cardinal,
+            req_headers,
+            no_verify,
+            trust_origin_ca_pem,
+            body,
+            method,
+            connect_to,
+            session_file,
+            source_port,
+            perform_migration,
+            send_priority_update,
+        }
+    }
+}
+
+<span class="kw">impl </span>Default <span class="kw">for </span>ClientArgs {
+    <span class="kw">fn </span>default() -&gt; <span class="self">Self </span>{
+        ClientArgs {
+            version: <span class="number">0xbabababa</span>,
+            dump_response_path: <span class="prelude-val">None</span>,
+            dump_json: <span class="prelude-val">None</span>,
+            urls: <span class="macro">vec!</span>[],
+            req_headers: <span class="macro">vec!</span>[],
+            reqs_cardinal: <span class="number">1</span>,
+            no_verify: <span class="bool-val">false</span>,
+            trust_origin_ca_pem: <span class="prelude-val">None</span>,
+            body: <span class="prelude-val">None</span>,
+            method: <span class="string">"GET"</span>.to_string(),
+            connect_to: <span class="prelude-val">None</span>,
+            session_file: <span class="prelude-val">None</span>,
+            source_port: <span class="number">0</span>,
+            perform_migration: <span class="bool-val">false</span>,
+            send_priority_update: <span class="bool-val">false</span>,
+        }
+    }
+}
+
+<span class="kw">pub const </span>SERVER_USAGE: <span class="kw-2">&amp;</span>str = <span class="string">"Usage:
+  quiche-server [options]
+  quiche-server -h | --help
+
+Options:
+  --listen &lt;addr&gt;             Listen on the given IP:port [default: 127.0.0.1:4433]
+  --cert &lt;file&gt;               TLS certificate path [default: src/bin/cert.crt]
+  --key &lt;file&gt;                TLS certificate key path [default: src/bin/cert.key]
+  --root &lt;dir&gt;                Root directory [default: src/bin/root/]
+  --index &lt;name&gt;              The file that will be used as index [default: index.html].
+  --name &lt;str&gt;                Name of the server [default: quic.tech]
+  --max-data BYTES            Connection-wide flow control limit [default: 10000000].
+  --max-window BYTES          Connection-wide max receiver window [default: 25165824].
+  --max-stream-data BYTES     Per-stream flow control limit [default: 1000000].
+  --max-stream-window BYTES   Per-stream max receiver window [default: 16777216].
+  --max-streams-bidi STREAMS  Number of allowed concurrent streams [default: 100].
+  --max-streams-uni STREAMS   Number of allowed concurrent streams [default: 100].
+  --idle-timeout TIMEOUT      Idle timeout in milliseconds [default: 30000].
+  --dump-packets PATH         Dump the incoming packets as files in the given directory.
+  --early-data                Enable receiving early data.
+  --no-retry                  Disable stateless retry.
+  --no-grease                 Don't send GREASE.
+  --http-version VERSION      HTTP version to use [default: all].
+  --dgram-proto PROTO         DATAGRAM application protocol to use [default: none].
+  --dgram-count COUNT         Number of DATAGRAMs to send [default: 0].
+  --dgram-data DATA           Data to send for certain types of DATAGRAM application protocol [default: brrr].
+  --cc-algorithm NAME         Specify which congestion control algorithm to use [default: cubic].
+  --disable-hystart           Disable HyStart++.
+  --max-active-cids NUM       The maximum number of active Connection IDs we can support [default: 2].
+  --enable-active-migration   Enable active connection migration.
+  --max-field-section-size BYTES    Max size of uncompressed HTTP/3 field section. Default is unlimited.
+  --qpack-max-table-capacity BYTES  Max capacity of QPACK dynamic table decoding. Any value other that 0 is currently unsupported.
+  --qpack-blocked-streams STREAMS   Limit of streams that can be blocked while decoding. Any value other that 0 is currently unsupported.
+  --disable-gso               Disable GSO (linux only).
+  --disable-pacing            Disable pacing (linux only).
+  --initial-cwnd-packets PACKETS      The initial congestion window size in terms of packet count [default: 10].
+  -h --help                   Show this screen.
+"</span>;
+
+<span class="comment">// Application-specific arguments that compliment the `CommonArgs`.
+</span><span class="kw">pub struct </span>ServerArgs {
+    <span class="kw">pub </span>listen: String,
+    <span class="kw">pub </span>no_retry: bool,
+    <span class="kw">pub </span>root: String,
+    <span class="kw">pub </span>index: String,
+    <span class="kw">pub </span>cert: String,
+    <span class="kw">pub </span>key: String,
+    <span class="kw">pub </span>disable_gso: bool,
+    <span class="kw">pub </span>disable_pacing: bool,
+    <span class="kw">pub </span>enable_pmtud: bool,
+}
+
+<span class="kw">impl </span>Args <span class="kw">for </span>ServerArgs {
+    <span class="kw">fn </span>with_docopt(docopt: <span class="kw-2">&amp;</span>docopt::Docopt) -&gt; <span class="self">Self </span>{
+        <span class="kw">let </span>args = docopt.parse().unwrap_or_else(|e| e.exit());
+
+        <span class="kw">let </span>listen = args.get_str(<span class="string">"--listen"</span>).to_string();
+        <span class="kw">let </span>no_retry = args.get_bool(<span class="string">"--no-retry"</span>);
+        <span class="kw">let </span>root = args.get_str(<span class="string">"--root"</span>).to_string();
+        <span class="kw">let </span>index = args.get_str(<span class="string">"--index"</span>).to_string();
+        <span class="kw">let </span>cert = args.get_str(<span class="string">"--cert"</span>).to_string();
+        <span class="kw">let </span>key = args.get_str(<span class="string">"--key"</span>).to_string();
+        <span class="kw">let </span>disable_gso = args.get_bool(<span class="string">"--disable-gso"</span>);
+        <span class="kw">let </span>disable_pacing = args.get_bool(<span class="string">"--disable-pacing"</span>);
+        <span class="kw">let </span>enable_pmtud = args.get_bool(<span class="string">"--enable-pmtud"</span>);
+
+        ServerArgs {
+            listen,
+            no_retry,
+            root,
+            index,
+            cert,
+            key,
+            disable_gso,
+            disable_pacing,
+            enable_pmtud,
+        }
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche_apps/client.rs.html b/src/quiche_apps/client.rs.html
new file mode 100644
index 0000000..a4bab6e
--- /dev/null
+++ b/src/quiche_apps/client.rs.html
@@ -0,0 +1,1197 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `apps/src/client.rs`."><title>client.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2020, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span><span class="kw">crate</span>::args::<span class="kw-2">*</span>;
+<span class="kw">use </span><span class="kw">crate</span>::common::<span class="kw-2">*</span>;
+
+<span class="kw">use </span>std::net::ToSocketAddrs;
+
+<span class="kw">use </span>std::io::prelude::<span class="kw-2">*</span>;
+
+<span class="kw">use </span>std::rc::Rc;
+
+<span class="kw">use </span>std::cell::RefCell;
+
+<span class="kw">use </span>ring::rand::<span class="kw-2">*</span>;
+
+<span class="kw">const </span>MAX_DATAGRAM_SIZE: usize = <span class="number">1350</span>;
+
+<span class="attr">#[derive(Debug)]
+</span><span class="kw">pub enum </span>ClientError {
+    HandshakeFail,
+    HttpFail,
+    Other(String),
+}
+
+<span class="kw">pub fn </span>connect(
+    args: ClientArgs, conn_args: CommonArgs,
+    output_sink: <span class="kw">impl </span>FnMut(String) + <span class="lifetime">'static</span>,
+) -&gt; <span class="prelude-ty">Result</span>&lt;(), ClientError&gt; {
+    <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">65535</span>];
+    <span class="kw">let </span><span class="kw-2">mut </span>out = [<span class="number">0</span>; MAX_DATAGRAM_SIZE];
+
+    <span class="kw">let </span>output_sink =
+        Rc::new(RefCell::new(output_sink)) <span class="kw">as </span>Rc&lt;RefCell&lt;<span class="kw">dyn </span>FnMut(<span class="kw">_</span>)&gt;&gt;;
+
+    <span class="comment">// Setup the event loop.
+    </span><span class="kw">let </span><span class="kw-2">mut </span>poll = mio::Poll::new().unwrap();
+    <span class="kw">let </span><span class="kw-2">mut </span>events = mio::Events::with_capacity(<span class="number">1024</span>);
+
+    <span class="comment">// We'll only connect to the first server provided in URL list.
+    </span><span class="kw">let </span>connect_url = <span class="kw-2">&amp;</span>args.urls[<span class="number">0</span>];
+
+    <span class="comment">// Resolve server address.
+    </span><span class="kw">let </span>peer_addr = <span class="kw">if let </span><span class="prelude-val">Some</span>(addr) = <span class="kw-2">&amp;</span>args.connect_to {
+        addr.parse().expect(<span class="string">"--connect-to is expected to be a string containing an IPv4 or IPv6 address with a port. E.g. 192.0.2.0:443"</span>)
+    } <span class="kw">else </span>{
+        connect_url.to_socket_addrs().unwrap().next().unwrap()
+    };
+
+    <span class="comment">// Bind to INADDR_ANY or IN6ADDR_ANY depending on the IP family of the
+    // server address. This is needed on macOS and BSD variants that don't
+    // support binding to IN6ADDR_ANY for both v4 and v6.
+    </span><span class="kw">let </span>bind_addr = <span class="kw">match </span>peer_addr {
+        std::net::SocketAddr::V4(<span class="kw">_</span>) =&gt; <span class="macro">format!</span>(<span class="string">"0.0.0.0:{}"</span>, args.source_port),
+        std::net::SocketAddr::V6(<span class="kw">_</span>) =&gt; <span class="macro">format!</span>(<span class="string">"[::]:{}"</span>, args.source_port),
+    };
+
+    <span class="comment">// Create the UDP socket backing the QUIC connection, and register it with
+    // the event loop.
+    </span><span class="kw">let </span><span class="kw-2">mut </span>socket =
+        mio::net::UdpSocket::bind(bind_addr.parse().unwrap()).unwrap();
+    poll.registry()
+        .register(<span class="kw-2">&amp;mut </span>socket, mio::Token(<span class="number">0</span>), mio::Interest::READABLE)
+        .unwrap();
+
+    <span class="kw">let </span>migrate_socket = <span class="kw">if </span>args.perform_migration {
+        <span class="kw">let </span><span class="kw-2">mut </span>socket =
+            mio::net::UdpSocket::bind(bind_addr.parse().unwrap()).unwrap();
+        poll.registry()
+            .register(<span class="kw-2">&amp;mut </span>socket, mio::Token(<span class="number">1</span>), mio::Interest::READABLE)
+            .unwrap();
+
+        <span class="prelude-val">Some</span>(socket)
+    } <span class="kw">else </span>{
+        <span class="prelude-val">None
+    </span>};
+
+    <span class="comment">// Create the configuration for the QUIC connection.
+    </span><span class="kw">let </span><span class="kw-2">mut </span>config = quiche::Config::new(args.version).unwrap();
+
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(<span class="kw-2">ref </span>trust_origin_ca_pem) = args.trust_origin_ca_pem {
+        config
+            .load_verify_locations_from_file(trust_origin_ca_pem)
+            .map_err(|e| {
+                ClientError::Other(<span class="macro">format!</span>(
+                    <span class="string">"error loading origin CA file : {}"</span>,
+                    e
+                ))
+            })<span class="question-mark">?</span>;
+    } <span class="kw">else </span>{
+        config.verify_peer(!args.no_verify);
+    }
+
+    config.set_application_protos(<span class="kw-2">&amp;</span>conn_args.alpns).unwrap();
+
+    config.set_max_idle_timeout(conn_args.idle_timeout);
+    config.set_max_recv_udp_payload_size(MAX_DATAGRAM_SIZE);
+    config.set_max_send_udp_payload_size(MAX_DATAGRAM_SIZE);
+    config.set_initial_max_data(conn_args.max_data);
+    config.set_initial_max_stream_data_bidi_local(conn_args.max_stream_data);
+    config.set_initial_max_stream_data_bidi_remote(conn_args.max_stream_data);
+    config.set_initial_max_stream_data_uni(conn_args.max_stream_data);
+    config.set_initial_max_streams_bidi(conn_args.max_streams_bidi);
+    config.set_initial_max_streams_uni(conn_args.max_streams_uni);
+    config.set_disable_active_migration(!conn_args.enable_active_migration);
+    config.set_active_connection_id_limit(conn_args.max_active_cids);
+
+    config.set_max_connection_window(conn_args.max_window);
+    config.set_max_stream_window(conn_args.max_stream_window);
+
+    <span class="kw">let </span><span class="kw-2">mut </span>keylog = <span class="prelude-val">None</span>;
+
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(keylog_path) = std::env::var_os(<span class="string">"SSLKEYLOGFILE"</span>) {
+        <span class="kw">let </span>file = std::fs::OpenOptions::new()
+            .create(<span class="bool-val">true</span>)
+            .append(<span class="bool-val">true</span>)
+            .open(keylog_path)
+            .unwrap();
+
+        keylog = <span class="prelude-val">Some</span>(file);
+
+        config.log_keys();
+    }
+
+    <span class="kw">if </span>conn_args.no_grease {
+        config.grease(<span class="bool-val">false</span>);
+    }
+
+    <span class="kw">if </span>conn_args.early_data {
+        config.enable_early_data();
+    }
+
+    config
+        .set_cc_algorithm_name(<span class="kw-2">&amp;</span>conn_args.cc_algorithm)
+        .unwrap();
+
+    <span class="kw">if </span>conn_args.disable_hystart {
+        config.enable_hystart(<span class="bool-val">false</span>);
+    }
+
+    <span class="kw">if </span>conn_args.dgrams_enabled {
+        config.enable_dgram(<span class="bool-val">true</span>, <span class="number">1000</span>, <span class="number">1000</span>);
+    }
+
+    <span class="kw">let </span><span class="kw-2">mut </span>http_conn: <span class="prelude-ty">Option</span>&lt;Box&lt;<span class="kw">dyn </span>HttpConn&gt;&gt; = <span class="prelude-val">None</span>;
+
+    <span class="kw">let </span><span class="kw-2">mut </span>app_proto_selected = <span class="bool-val">false</span>;
+
+    <span class="comment">// Generate a random source connection ID for the connection.
+    </span><span class="kw">let </span>rng = SystemRandom::new();
+
+    <span class="kw">let </span>scid = <span class="kw">if </span>!<span class="macro">cfg!</span>(feature = <span class="string">"fuzzing"</span>) {
+        <span class="kw">let </span><span class="kw-2">mut </span>conn_id = [<span class="number">0</span>; quiche::MAX_CONN_ID_LEN];
+        rng.fill(<span class="kw-2">&amp;mut </span>conn_id[..]).unwrap();
+
+        conn_id.to_vec()
+    } <span class="kw">else </span>{
+        <span class="comment">// When fuzzing use an all zero connection ID.
+        </span>[<span class="number">0</span>; quiche::MAX_CONN_ID_LEN].to_vec()
+    };
+
+    <span class="kw">let </span>scid = quiche::ConnectionId::from_ref(<span class="kw-2">&amp;</span>scid);
+
+    <span class="kw">let </span>local_addr = socket.local_addr().unwrap();
+
+    <span class="comment">// Create a QUIC connection and initiate handshake.
+    </span><span class="kw">let </span><span class="kw-2">mut </span>conn = quiche::connect(
+        connect_url.domain(),
+        <span class="kw-2">&amp;</span>scid,
+        local_addr,
+        peer_addr,
+        <span class="kw-2">&amp;mut </span>config,
+    )
+    .unwrap();
+
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(keylog) = <span class="kw-2">&amp;mut </span>keylog {
+        <span class="kw">if let </span><span class="prelude-val">Ok</span>(keylog) = keylog.try_clone() {
+            conn.set_keylog(Box::new(keylog));
+        }
+    }
+
+    <span class="comment">// Only bother with qlog if the user specified it.
+    </span><span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+    </span>{
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(dir) = std::env::var_os(<span class="string">"QLOGDIR"</span>) {
+            <span class="kw">let </span>id = <span class="macro">format!</span>(<span class="string">"{scid:?}"</span>);
+            <span class="kw">let </span>writer = make_qlog_writer(<span class="kw-2">&amp;</span>dir, <span class="string">"client"</span>, <span class="kw-2">&amp;</span>id);
+
+            conn.set_qlog(
+                std::boxed::Box::new(writer),
+                <span class="string">"quiche-client qlog"</span>.to_string(),
+                <span class="macro">format!</span>(<span class="string">"{} id={}"</span>, <span class="string">"quiche-client qlog"</span>, id),
+            );
+        }
+    }
+
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(session_file) = <span class="kw-2">&amp;</span>args.session_file {
+        <span class="kw">if let </span><span class="prelude-val">Ok</span>(session) = std::fs::read(session_file) {
+            conn.set_session(<span class="kw-2">&amp;</span>session).ok();
+        }
+    }
+
+    <span class="macro">info!</span>(
+        <span class="string">"connecting to {:} from {:} with scid {:?}"</span>,
+        peer_addr,
+        socket.local_addr().unwrap(),
+        scid,
+    );
+
+    <span class="kw">let </span>(write, send_info) = conn.send(<span class="kw-2">&amp;mut </span>out).expect(<span class="string">"initial send failed"</span>);
+
+    <span class="kw">while let </span><span class="prelude-val">Err</span>(e) = socket.send_to(<span class="kw-2">&amp;</span>out[..write], send_info.to) {
+        <span class="kw">if </span>e.kind() == std::io::ErrorKind::WouldBlock {
+            <span class="macro">trace!</span>(
+                <span class="string">"{} -&gt; {}: send() would block"</span>,
+                socket.local_addr().unwrap(),
+                send_info.to
+            );
+            <span class="kw">continue</span>;
+        }
+
+        <span class="kw">return </span><span class="prelude-val">Err</span>(ClientError::Other(<span class="macro">format!</span>(<span class="string">"send() failed: {e:?}"</span>)));
+    }
+
+    <span class="macro">trace!</span>(<span class="string">"written {}"</span>, write);
+
+    <span class="kw">let </span>app_data_start = std::time::Instant::now();
+
+    <span class="kw">let </span><span class="kw-2">mut </span>pkt_count = <span class="number">0</span>;
+
+    <span class="kw">let </span><span class="kw-2">mut </span>scid_sent = <span class="bool-val">false</span>;
+    <span class="kw">let </span><span class="kw-2">mut </span>new_path_probed = <span class="bool-val">false</span>;
+    <span class="kw">let </span><span class="kw-2">mut </span>migrated = <span class="bool-val">false</span>;
+
+    <span class="kw">loop </span>{
+        <span class="kw">if </span>!conn.is_in_early_data() || app_proto_selected {
+            poll.poll(<span class="kw-2">&amp;mut </span>events, conn.timeout()).unwrap();
+        }
+
+        <span class="comment">// If the event loop reported no events, it means that the timeout
+        // has expired, so handle it without attempting to read packets. We
+        // will then proceed with the send loop.
+        </span><span class="kw">if </span>events.is_empty() {
+            <span class="macro">trace!</span>(<span class="string">"timed out"</span>);
+
+            conn.on_timeout();
+        }
+
+        <span class="comment">// Read incoming UDP packets from the socket and feed them to quiche,
+        // until there are no more packets to read.
+        </span><span class="kw">for </span>event <span class="kw">in </span><span class="kw-2">&amp;</span>events {
+            <span class="kw">let </span>socket = <span class="kw">match </span>event.token() {
+                mio::Token(<span class="number">0</span>) =&gt; <span class="kw-2">&amp;</span>socket,
+
+                mio::Token(<span class="number">1</span>) =&gt; migrate_socket.as_ref().unwrap(),
+
+                <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
+            };
+
+            <span class="kw">let </span>local_addr = socket.local_addr().unwrap();
+            <span class="lifetime">'read</span>: <span class="kw">loop </span>{
+                <span class="kw">let </span>(len, from) = <span class="kw">match </span>socket.recv_from(<span class="kw-2">&amp;mut </span>buf) {
+                    <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                    <span class="prelude-val">Err</span>(e) =&gt; {
+                        <span class="comment">// There are no more UDP packets to read on this socket.
+                        // Process subsequent events.
+                        </span><span class="kw">if </span>e.kind() == std::io::ErrorKind::WouldBlock {
+                            <span class="macro">trace!</span>(<span class="string">"{}: recv() would block"</span>, local_addr);
+                            <span class="kw">break </span><span class="lifetime">'read</span>;
+                        }
+
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(ClientError::Other(<span class="macro">format!</span>(
+                            <span class="string">"{local_addr}: recv() failed: {e:?}"
+                        </span>)));
+                    },
+                };
+
+                <span class="macro">trace!</span>(<span class="string">"{}: got {} bytes"</span>, local_addr, len);
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(target_path) = conn_args.dump_packet_path.as_ref() {
+                    <span class="kw">let </span>path = <span class="macro">format!</span>(<span class="string">"{target_path}/{pkt_count}.pkt"</span>);
+
+                    <span class="kw">if let </span><span class="prelude-val">Ok</span>(f) = std::fs::File::create(path) {
+                        <span class="kw">let </span><span class="kw-2">mut </span>f = std::io::BufWriter::new(f);
+                        f.write_all(<span class="kw-2">&amp;</span>buf[..len]).ok();
+                    }
+                }
+
+                pkt_count += <span class="number">1</span>;
+
+                <span class="kw">let </span>recv_info = quiche::RecvInfo {
+                    to: local_addr,
+                    from,
+                };
+
+                <span class="comment">// Process potentially coalesced packets.
+                </span><span class="kw">let </span>read = <span class="kw">match </span>conn.recv(<span class="kw-2">&amp;mut </span>buf[..len], recv_info) {
+                    <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                    <span class="prelude-val">Err</span>(e) =&gt; {
+                        <span class="macro">error!</span>(<span class="string">"{}: recv failed: {:?}"</span>, local_addr, e);
+                        <span class="kw">continue </span><span class="lifetime">'read</span>;
+                    },
+                };
+
+                <span class="macro">trace!</span>(<span class="string">"{}: processed {} bytes"</span>, local_addr, read);
+            }
+        }
+
+        <span class="macro">trace!</span>(<span class="string">"done reading"</span>);
+
+        <span class="kw">if </span>conn.is_closed() {
+            <span class="macro">info!</span>(
+                <span class="string">"connection closed, {:?} {:?}"</span>,
+                conn.stats(),
+                conn.path_stats().collect::&lt;Vec&lt;quiche::PathStats&gt;&gt;()
+            );
+
+            <span class="kw">if </span>!conn.is_established() {
+                <span class="macro">error!</span>(
+                    <span class="string">"connection timed out after {:?}"</span>,
+                    app_data_start.elapsed(),
+                );
+
+                <span class="kw">return </span><span class="prelude-val">Err</span>(ClientError::HandshakeFail);
+            }
+
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(session_file) = <span class="kw-2">&amp;</span>args.session_file {
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(session) = conn.session() {
+                    std::fs::write(session_file, session).ok();
+                }
+            }
+
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(h_conn) = http_conn {
+                <span class="kw">if </span>h_conn.report_incomplete(<span class="kw-2">&amp;</span>app_data_start) {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(ClientError::HttpFail);
+                }
+            }
+
+            <span class="kw">break</span>;
+        }
+
+        <span class="comment">// Create a new application protocol session once the QUIC connection is
+        // established.
+        </span><span class="kw">if </span>(conn.is_established() || conn.is_in_early_data()) &amp;&amp;
+            (!args.perform_migration || migrated) &amp;&amp;
+            !app_proto_selected
+        {
+            <span class="comment">// At this stage the ALPN negotiation succeeded and selected a
+            // single application protocol name. We'll use this to construct
+            // the correct type of HttpConn but `application_proto()`
+            // returns a slice, so we have to convert it to a str in order
+            // to compare to our lists of protocols. We `unwrap()` because
+            // we need the value and if something fails at this stage, there
+            // is not much anyone can do to recover.
+
+            </span><span class="kw">let </span>app_proto = conn.application_proto();
+
+            <span class="kw">if </span>alpns::HTTP_09.contains(<span class="kw-2">&amp;</span>app_proto) {
+                http_conn = <span class="prelude-val">Some</span>(Http09Conn::with_urls(
+                    <span class="kw-2">&amp;</span>args.urls,
+                    args.reqs_cardinal,
+                    Rc::clone(<span class="kw-2">&amp;</span>output_sink),
+                ));
+
+                app_proto_selected = <span class="bool-val">true</span>;
+            } <span class="kw">else if </span>alpns::HTTP_3.contains(<span class="kw-2">&amp;</span>app_proto) {
+                <span class="kw">let </span>dgram_sender = <span class="kw">if </span>conn_args.dgrams_enabled {
+                    <span class="prelude-val">Some</span>(Http3DgramSender::new(
+                        conn_args.dgram_count,
+                        conn_args.dgram_data.clone(),
+                        <span class="number">0</span>,
+                    ))
+                } <span class="kw">else </span>{
+                    <span class="prelude-val">None
+                </span>};
+
+                http_conn = <span class="prelude-val">Some</span>(Http3Conn::with_urls(
+                    <span class="kw-2">&amp;mut </span>conn,
+                    <span class="kw-2">&amp;</span>args.urls,
+                    args.reqs_cardinal,
+                    <span class="kw-2">&amp;</span>args.req_headers,
+                    <span class="kw-2">&amp;</span>args.body,
+                    <span class="kw-2">&amp;</span>args.method,
+                    args.send_priority_update,
+                    conn_args.max_field_section_size,
+                    conn_args.qpack_max_table_capacity,
+                    conn_args.qpack_blocked_streams,
+                    args.dump_json,
+                    dgram_sender,
+                    Rc::clone(<span class="kw-2">&amp;</span>output_sink),
+                ));
+
+                app_proto_selected = <span class="bool-val">true</span>;
+            }
+        }
+
+        <span class="comment">// If we have an HTTP connection, first issue the requests then
+        // process received data.
+        </span><span class="kw">if let </span><span class="prelude-val">Some</span>(h_conn) = http_conn.as_mut() {
+            h_conn.send_requests(<span class="kw-2">&amp;mut </span>conn, <span class="kw-2">&amp;</span>args.dump_response_path);
+            h_conn.handle_responses(<span class="kw-2">&amp;mut </span>conn, <span class="kw-2">&amp;mut </span>buf, <span class="kw-2">&amp;</span>app_data_start);
+        }
+
+        <span class="comment">// Handle path events.
+        </span><span class="kw">while let </span><span class="prelude-val">Some</span>(qe) = conn.path_event_next() {
+            <span class="kw">match </span>qe {
+                quiche::PathEvent::New(..) =&gt; <span class="macro">unreachable!</span>(),
+
+                quiche::PathEvent::Validated(local_addr, peer_addr) =&gt; {
+                    <span class="macro">info!</span>(
+                        <span class="string">"Path ({}, {}) is now validated"</span>,
+                        local_addr, peer_addr
+                    );
+                    conn.migrate(local_addr, peer_addr).unwrap();
+                    migrated = <span class="bool-val">true</span>;
+                },
+
+                quiche::PathEvent::FailedValidation(local_addr, peer_addr) =&gt; {
+                    <span class="macro">info!</span>(
+                        <span class="string">"Path ({}, {}) failed validation"</span>,
+                        local_addr, peer_addr
+                    );
+                },
+
+                quiche::PathEvent::Closed(local_addr, peer_addr) =&gt; {
+                    <span class="macro">info!</span>(
+                        <span class="string">"Path ({}, {}) is now closed and unusable"</span>,
+                        local_addr, peer_addr
+                    );
+                },
+
+                quiche::PathEvent::ReusedSourceConnectionId(
+                    cid_seq,
+                    old,
+                    new,
+                ) =&gt; {
+                    <span class="macro">info!</span>(
+                        <span class="string">"Peer reused cid seq {} (initially {:?}) on {:?}"</span>,
+                        cid_seq, old, new
+                    );
+                },
+
+                quiche::PathEvent::PeerMigrated(..) =&gt; <span class="macro">unreachable!</span>(),
+            }
+        }
+
+        <span class="comment">// See whether source Connection IDs have been retired.
+        </span><span class="kw">while let </span><span class="prelude-val">Some</span>(retired_scid) = conn.retired_scid_next() {
+            <span class="macro">info!</span>(<span class="string">"Retiring source CID {:?}"</span>, retired_scid);
+        }
+
+        <span class="comment">// Provides as many CIDs as possible.
+        </span><span class="kw">while </span>conn.scids_left() &gt; <span class="number">0 </span>{
+            <span class="kw">let </span>(scid, reset_token) = generate_cid_and_reset_token(<span class="kw-2">&amp;</span>rng);
+
+            <span class="kw">if </span>conn.new_scid(<span class="kw-2">&amp;</span>scid, reset_token, <span class="bool-val">false</span>).is_err() {
+                <span class="kw">break</span>;
+            }
+
+            scid_sent = <span class="bool-val">true</span>;
+        }
+
+        <span class="kw">if </span>args.perform_migration &amp;&amp;
+            !new_path_probed &amp;&amp;
+            scid_sent &amp;&amp;
+            conn.available_dcids() &gt; <span class="number">0
+        </span>{
+            <span class="kw">let </span>additional_local_addr =
+                migrate_socket.as_ref().unwrap().local_addr().unwrap();
+            conn.probe_path(additional_local_addr, peer_addr).unwrap();
+
+            new_path_probed = <span class="bool-val">true</span>;
+        }
+
+        <span class="comment">// Generate outgoing QUIC packets and send them on the UDP socket, until
+        // quiche reports that there are no more packets to be sent.
+        </span><span class="kw">let </span><span class="kw-2">mut </span>sockets = <span class="macro">vec!</span>[<span class="kw-2">&amp;</span>socket];
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(migrate_socket) = migrate_socket.as_ref() {
+            sockets.push(migrate_socket);
+        }
+
+        <span class="kw">for </span>socket <span class="kw">in </span>sockets {
+            <span class="kw">let </span>local_addr = socket.local_addr().unwrap();
+
+            <span class="kw">for </span>peer_addr <span class="kw">in </span>conn.paths_iter(local_addr) {
+                <span class="kw">loop </span>{
+                    <span class="kw">let </span>(write, send_info) = <span class="kw">match </span>conn.send_on_path(
+                        <span class="kw-2">&amp;mut </span>out,
+                        <span class="prelude-val">Some</span>(local_addr),
+                        <span class="prelude-val">Some</span>(peer_addr),
+                    ) {
+                        <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                        <span class="prelude-val">Err</span>(quiche::Error::Done) =&gt; {
+                            <span class="macro">trace!</span>(
+                                <span class="string">"{} -&gt; {}: done writing"</span>,
+                                local_addr,
+                                peer_addr
+                            );
+                            <span class="kw">break</span>;
+                        },
+
+                        <span class="prelude-val">Err</span>(e) =&gt; {
+                            <span class="macro">error!</span>(
+                                <span class="string">"{} -&gt; {}: send failed: {:?}"</span>,
+                                local_addr, peer_addr, e
+                            );
+
+                            conn.close(<span class="bool-val">false</span>, <span class="number">0x1</span>, <span class="string">b"fail"</span>).ok();
+                            <span class="kw">break</span>;
+                        },
+                    };
+
+                    <span class="kw">if let </span><span class="prelude-val">Err</span>(e) = socket.send_to(<span class="kw-2">&amp;</span>out[..write], send_info.to) {
+                        <span class="kw">if </span>e.kind() == std::io::ErrorKind::WouldBlock {
+                            <span class="macro">trace!</span>(
+                                <span class="string">"{} -&gt; {}: send() would block"</span>,
+                                local_addr,
+                                send_info.to
+                            );
+                            <span class="kw">break</span>;
+                        }
+
+                        <span class="kw">return </span><span class="prelude-val">Err</span>(ClientError::Other(<span class="macro">format!</span>(
+                            <span class="string">"{} -&gt; {}: send() failed: {:?}"</span>,
+                            local_addr, send_info.to, e
+                        )));
+                    }
+
+                    <span class="macro">trace!</span>(
+                        <span class="string">"{} -&gt; {}: written {}"</span>,
+                        local_addr,
+                        send_info.to,
+                        write
+                    );
+                }
+            }
+        }
+
+        <span class="kw">if </span>conn.is_closed() {
+            <span class="macro">info!</span>(
+                <span class="string">"connection closed, {:?} {:?}"</span>,
+                conn.stats(),
+                conn.path_stats().collect::&lt;Vec&lt;quiche::PathStats&gt;&gt;()
+            );
+
+            <span class="kw">if </span>!conn.is_established() {
+                <span class="macro">error!</span>(
+                    <span class="string">"connection timed out after {:?}"</span>,
+                    app_data_start.elapsed(),
+                );
+
+                <span class="kw">return </span><span class="prelude-val">Err</span>(ClientError::HandshakeFail);
+            }
+
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(session_file) = <span class="kw-2">&amp;</span>args.session_file {
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(session) = conn.session() {
+                    std::fs::write(session_file, session).ok();
+                }
+            }
+
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(h_conn) = http_conn {
+                <span class="kw">if </span>h_conn.report_incomplete(<span class="kw-2">&amp;</span>app_data_start) {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(ClientError::HttpFail);
+                }
+            }
+
+            <span class="kw">break</span>;
+        }
+    }
+
+    <span class="prelude-val">Ok</span>(())
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche_apps/common.rs.html b/src/quiche_apps/common.rs.html
new file mode 100644
index 0000000..cade021
--- /dev/null
+++ b/src/quiche_apps/common.rs.html
@@ -0,0 +1,3285 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `apps/src/common.rs`."><title>common.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+<a href="#793" id="793">793</a>
+<a href="#794" id="794">794</a>
+<a href="#795" id="795">795</a>
+<a href="#796" id="796">796</a>
+<a href="#797" id="797">797</a>
+<a href="#798" id="798">798</a>
+<a href="#799" id="799">799</a>
+<a href="#800" id="800">800</a>
+<a href="#801" id="801">801</a>
+<a href="#802" id="802">802</a>
+<a href="#803" id="803">803</a>
+<a href="#804" id="804">804</a>
+<a href="#805" id="805">805</a>
+<a href="#806" id="806">806</a>
+<a href="#807" id="807">807</a>
+<a href="#808" id="808">808</a>
+<a href="#809" id="809">809</a>
+<a href="#810" id="810">810</a>
+<a href="#811" id="811">811</a>
+<a href="#812" id="812">812</a>
+<a href="#813" id="813">813</a>
+<a href="#814" id="814">814</a>
+<a href="#815" id="815">815</a>
+<a href="#816" id="816">816</a>
+<a href="#817" id="817">817</a>
+<a href="#818" id="818">818</a>
+<a href="#819" id="819">819</a>
+<a href="#820" id="820">820</a>
+<a href="#821" id="821">821</a>
+<a href="#822" id="822">822</a>
+<a href="#823" id="823">823</a>
+<a href="#824" id="824">824</a>
+<a href="#825" id="825">825</a>
+<a href="#826" id="826">826</a>
+<a href="#827" id="827">827</a>
+<a href="#828" id="828">828</a>
+<a href="#829" id="829">829</a>
+<a href="#830" id="830">830</a>
+<a href="#831" id="831">831</a>
+<a href="#832" id="832">832</a>
+<a href="#833" id="833">833</a>
+<a href="#834" id="834">834</a>
+<a href="#835" id="835">835</a>
+<a href="#836" id="836">836</a>
+<a href="#837" id="837">837</a>
+<a href="#838" id="838">838</a>
+<a href="#839" id="839">839</a>
+<a href="#840" id="840">840</a>
+<a href="#841" id="841">841</a>
+<a href="#842" id="842">842</a>
+<a href="#843" id="843">843</a>
+<a href="#844" id="844">844</a>
+<a href="#845" id="845">845</a>
+<a href="#846" id="846">846</a>
+<a href="#847" id="847">847</a>
+<a href="#848" id="848">848</a>
+<a href="#849" id="849">849</a>
+<a href="#850" id="850">850</a>
+<a href="#851" id="851">851</a>
+<a href="#852" id="852">852</a>
+<a href="#853" id="853">853</a>
+<a href="#854" id="854">854</a>
+<a href="#855" id="855">855</a>
+<a href="#856" id="856">856</a>
+<a href="#857" id="857">857</a>
+<a href="#858" id="858">858</a>
+<a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</a>
+<a href="#870" id="870">870</a>
+<a href="#871" id="871">871</a>
+<a href="#872" id="872">872</a>
+<a href="#873" id="873">873</a>
+<a href="#874" id="874">874</a>
+<a href="#875" id="875">875</a>
+<a href="#876" id="876">876</a>
+<a href="#877" id="877">877</a>
+<a href="#878" id="878">878</a>
+<a href="#879" id="879">879</a>
+<a href="#880" id="880">880</a>
+<a href="#881" id="881">881</a>
+<a href="#882" id="882">882</a>
+<a href="#883" id="883">883</a>
+<a href="#884" id="884">884</a>
+<a href="#885" id="885">885</a>
+<a href="#886" id="886">886</a>
+<a href="#887" id="887">887</a>
+<a href="#888" id="888">888</a>
+<a href="#889" id="889">889</a>
+<a href="#890" id="890">890</a>
+<a href="#891" id="891">891</a>
+<a href="#892" id="892">892</a>
+<a href="#893" id="893">893</a>
+<a href="#894" id="894">894</a>
+<a href="#895" id="895">895</a>
+<a href="#896" id="896">896</a>
+<a href="#897" id="897">897</a>
+<a href="#898" id="898">898</a>
+<a href="#899" id="899">899</a>
+<a href="#900" id="900">900</a>
+<a href="#901" id="901">901</a>
+<a href="#902" id="902">902</a>
+<a href="#903" id="903">903</a>
+<a href="#904" id="904">904</a>
+<a href="#905" id="905">905</a>
+<a href="#906" id="906">906</a>
+<a href="#907" id="907">907</a>
+<a href="#908" id="908">908</a>
+<a href="#909" id="909">909</a>
+<a href="#910" id="910">910</a>
+<a href="#911" id="911">911</a>
+<a href="#912" id="912">912</a>
+<a href="#913" id="913">913</a>
+<a href="#914" id="914">914</a>
+<a href="#915" id="915">915</a>
+<a href="#916" id="916">916</a>
+<a href="#917" id="917">917</a>
+<a href="#918" id="918">918</a>
+<a href="#919" id="919">919</a>
+<a href="#920" id="920">920</a>
+<a href="#921" id="921">921</a>
+<a href="#922" id="922">922</a>
+<a href="#923" id="923">923</a>
+<a href="#924" id="924">924</a>
+<a href="#925" id="925">925</a>
+<a href="#926" id="926">926</a>
+<a href="#927" id="927">927</a>
+<a href="#928" id="928">928</a>
+<a href="#929" id="929">929</a>
+<a href="#930" id="930">930</a>
+<a href="#931" id="931">931</a>
+<a href="#932" id="932">932</a>
+<a href="#933" id="933">933</a>
+<a href="#934" id="934">934</a>
+<a href="#935" id="935">935</a>
+<a href="#936" id="936">936</a>
+<a href="#937" id="937">937</a>
+<a href="#938" id="938">938</a>
+<a href="#939" id="939">939</a>
+<a href="#940" id="940">940</a>
+<a href="#941" id="941">941</a>
+<a href="#942" id="942">942</a>
+<a href="#943" id="943">943</a>
+<a href="#944" id="944">944</a>
+<a href="#945" id="945">945</a>
+<a href="#946" id="946">946</a>
+<a href="#947" id="947">947</a>
+<a href="#948" id="948">948</a>
+<a href="#949" id="949">949</a>
+<a href="#950" id="950">950</a>
+<a href="#951" id="951">951</a>
+<a href="#952" id="952">952</a>
+<a href="#953" id="953">953</a>
+<a href="#954" id="954">954</a>
+<a href="#955" id="955">955</a>
+<a href="#956" id="956">956</a>
+<a href="#957" id="957">957</a>
+<a href="#958" id="958">958</a>
+<a href="#959" id="959">959</a>
+<a href="#960" id="960">960</a>
+<a href="#961" id="961">961</a>
+<a href="#962" id="962">962</a>
+<a href="#963" id="963">963</a>
+<a href="#964" id="964">964</a>
+<a href="#965" id="965">965</a>
+<a href="#966" id="966">966</a>
+<a href="#967" id="967">967</a>
+<a href="#968" id="968">968</a>
+<a href="#969" id="969">969</a>
+<a href="#970" id="970">970</a>
+<a href="#971" id="971">971</a>
+<a href="#972" id="972">972</a>
+<a href="#973" id="973">973</a>
+<a href="#974" id="974">974</a>
+<a href="#975" id="975">975</a>
+<a href="#976" id="976">976</a>
+<a href="#977" id="977">977</a>
+<a href="#978" id="978">978</a>
+<a href="#979" id="979">979</a>
+<a href="#980" id="980">980</a>
+<a href="#981" id="981">981</a>
+<a href="#982" id="982">982</a>
+<a href="#983" id="983">983</a>
+<a href="#984" id="984">984</a>
+<a href="#985" id="985">985</a>
+<a href="#986" id="986">986</a>
+<a href="#987" id="987">987</a>
+<a href="#988" id="988">988</a>
+<a href="#989" id="989">989</a>
+<a href="#990" id="990">990</a>
+<a href="#991" id="991">991</a>
+<a href="#992" id="992">992</a>
+<a href="#993" id="993">993</a>
+<a href="#994" id="994">994</a>
+<a href="#995" id="995">995</a>
+<a href="#996" id="996">996</a>
+<a href="#997" id="997">997</a>
+<a href="#998" id="998">998</a>
+<a href="#999" id="999">999</a>
+<a href="#1000" id="1000">1000</a>
+<a href="#1001" id="1001">1001</a>
+<a href="#1002" id="1002">1002</a>
+<a href="#1003" id="1003">1003</a>
+<a href="#1004" id="1004">1004</a>
+<a href="#1005" id="1005">1005</a>
+<a href="#1006" id="1006">1006</a>
+<a href="#1007" id="1007">1007</a>
+<a href="#1008" id="1008">1008</a>
+<a href="#1009" id="1009">1009</a>
+<a href="#1010" id="1010">1010</a>
+<a href="#1011" id="1011">1011</a>
+<a href="#1012" id="1012">1012</a>
+<a href="#1013" id="1013">1013</a>
+<a href="#1014" id="1014">1014</a>
+<a href="#1015" id="1015">1015</a>
+<a href="#1016" id="1016">1016</a>
+<a href="#1017" id="1017">1017</a>
+<a href="#1018" id="1018">1018</a>
+<a href="#1019" id="1019">1019</a>
+<a href="#1020" id="1020">1020</a>
+<a href="#1021" id="1021">1021</a>
+<a href="#1022" id="1022">1022</a>
+<a href="#1023" id="1023">1023</a>
+<a href="#1024" id="1024">1024</a>
+<a href="#1025" id="1025">1025</a>
+<a href="#1026" id="1026">1026</a>
+<a href="#1027" id="1027">1027</a>
+<a href="#1028" id="1028">1028</a>
+<a href="#1029" id="1029">1029</a>
+<a href="#1030" id="1030">1030</a>
+<a href="#1031" id="1031">1031</a>
+<a href="#1032" id="1032">1032</a>
+<a href="#1033" id="1033">1033</a>
+<a href="#1034" id="1034">1034</a>
+<a href="#1035" id="1035">1035</a>
+<a href="#1036" id="1036">1036</a>
+<a href="#1037" id="1037">1037</a>
+<a href="#1038" id="1038">1038</a>
+<a href="#1039" id="1039">1039</a>
+<a href="#1040" id="1040">1040</a>
+<a href="#1041" id="1041">1041</a>
+<a href="#1042" id="1042">1042</a>
+<a href="#1043" id="1043">1043</a>
+<a href="#1044" id="1044">1044</a>
+<a href="#1045" id="1045">1045</a>
+<a href="#1046" id="1046">1046</a>
+<a href="#1047" id="1047">1047</a>
+<a href="#1048" id="1048">1048</a>
+<a href="#1049" id="1049">1049</a>
+<a href="#1050" id="1050">1050</a>
+<a href="#1051" id="1051">1051</a>
+<a href="#1052" id="1052">1052</a>
+<a href="#1053" id="1053">1053</a>
+<a href="#1054" id="1054">1054</a>
+<a href="#1055" id="1055">1055</a>
+<a href="#1056" id="1056">1056</a>
+<a href="#1057" id="1057">1057</a>
+<a href="#1058" id="1058">1058</a>
+<a href="#1059" id="1059">1059</a>
+<a href="#1060" id="1060">1060</a>
+<a href="#1061" id="1061">1061</a>
+<a href="#1062" id="1062">1062</a>
+<a href="#1063" id="1063">1063</a>
+<a href="#1064" id="1064">1064</a>
+<a href="#1065" id="1065">1065</a>
+<a href="#1066" id="1066">1066</a>
+<a href="#1067" id="1067">1067</a>
+<a href="#1068" id="1068">1068</a>
+<a href="#1069" id="1069">1069</a>
+<a href="#1070" id="1070">1070</a>
+<a href="#1071" id="1071">1071</a>
+<a href="#1072" id="1072">1072</a>
+<a href="#1073" id="1073">1073</a>
+<a href="#1074" id="1074">1074</a>
+<a href="#1075" id="1075">1075</a>
+<a href="#1076" id="1076">1076</a>
+<a href="#1077" id="1077">1077</a>
+<a href="#1078" id="1078">1078</a>
+<a href="#1079" id="1079">1079</a>
+<a href="#1080" id="1080">1080</a>
+<a href="#1081" id="1081">1081</a>
+<a href="#1082" id="1082">1082</a>
+<a href="#1083" id="1083">1083</a>
+<a href="#1084" id="1084">1084</a>
+<a href="#1085" id="1085">1085</a>
+<a href="#1086" id="1086">1086</a>
+<a href="#1087" id="1087">1087</a>
+<a href="#1088" id="1088">1088</a>
+<a href="#1089" id="1089">1089</a>
+<a href="#1090" id="1090">1090</a>
+<a href="#1091" id="1091">1091</a>
+<a href="#1092" id="1092">1092</a>
+<a href="#1093" id="1093">1093</a>
+<a href="#1094" id="1094">1094</a>
+<a href="#1095" id="1095">1095</a>
+<a href="#1096" id="1096">1096</a>
+<a href="#1097" id="1097">1097</a>
+<a href="#1098" id="1098">1098</a>
+<a href="#1099" id="1099">1099</a>
+<a href="#1100" id="1100">1100</a>
+<a href="#1101" id="1101">1101</a>
+<a href="#1102" id="1102">1102</a>
+<a href="#1103" id="1103">1103</a>
+<a href="#1104" id="1104">1104</a>
+<a href="#1105" id="1105">1105</a>
+<a href="#1106" id="1106">1106</a>
+<a href="#1107" id="1107">1107</a>
+<a href="#1108" id="1108">1108</a>
+<a href="#1109" id="1109">1109</a>
+<a href="#1110" id="1110">1110</a>
+<a href="#1111" id="1111">1111</a>
+<a href="#1112" id="1112">1112</a>
+<a href="#1113" id="1113">1113</a>
+<a href="#1114" id="1114">1114</a>
+<a href="#1115" id="1115">1115</a>
+<a href="#1116" id="1116">1116</a>
+<a href="#1117" id="1117">1117</a>
+<a href="#1118" id="1118">1118</a>
+<a href="#1119" id="1119">1119</a>
+<a href="#1120" id="1120">1120</a>
+<a href="#1121" id="1121">1121</a>
+<a href="#1122" id="1122">1122</a>
+<a href="#1123" id="1123">1123</a>
+<a href="#1124" id="1124">1124</a>
+<a href="#1125" id="1125">1125</a>
+<a href="#1126" id="1126">1126</a>
+<a href="#1127" id="1127">1127</a>
+<a href="#1128" id="1128">1128</a>
+<a href="#1129" id="1129">1129</a>
+<a href="#1130" id="1130">1130</a>
+<a href="#1131" id="1131">1131</a>
+<a href="#1132" id="1132">1132</a>
+<a href="#1133" id="1133">1133</a>
+<a href="#1134" id="1134">1134</a>
+<a href="#1135" id="1135">1135</a>
+<a href="#1136" id="1136">1136</a>
+<a href="#1137" id="1137">1137</a>
+<a href="#1138" id="1138">1138</a>
+<a href="#1139" id="1139">1139</a>
+<a href="#1140" id="1140">1140</a>
+<a href="#1141" id="1141">1141</a>
+<a href="#1142" id="1142">1142</a>
+<a href="#1143" id="1143">1143</a>
+<a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+<a href="#1217" id="1217">1217</a>
+<a href="#1218" id="1218">1218</a>
+<a href="#1219" id="1219">1219</a>
+<a href="#1220" id="1220">1220</a>
+<a href="#1221" id="1221">1221</a>
+<a href="#1222" id="1222">1222</a>
+<a href="#1223" id="1223">1223</a>
+<a href="#1224" id="1224">1224</a>
+<a href="#1225" id="1225">1225</a>
+<a href="#1226" id="1226">1226</a>
+<a href="#1227" id="1227">1227</a>
+<a href="#1228" id="1228">1228</a>
+<a href="#1229" id="1229">1229</a>
+<a href="#1230" id="1230">1230</a>
+<a href="#1231" id="1231">1231</a>
+<a href="#1232" id="1232">1232</a>
+<a href="#1233" id="1233">1233</a>
+<a href="#1234" id="1234">1234</a>
+<a href="#1235" id="1235">1235</a>
+<a href="#1236" id="1236">1236</a>
+<a href="#1237" id="1237">1237</a>
+<a href="#1238" id="1238">1238</a>
+<a href="#1239" id="1239">1239</a>
+<a href="#1240" id="1240">1240</a>
+<a href="#1241" id="1241">1241</a>
+<a href="#1242" id="1242">1242</a>
+<a href="#1243" id="1243">1243</a>
+<a href="#1244" id="1244">1244</a>
+<a href="#1245" id="1245">1245</a>
+<a href="#1246" id="1246">1246</a>
+<a href="#1247" id="1247">1247</a>
+<a href="#1248" id="1248">1248</a>
+<a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</a>
+<a href="#1259" id="1259">1259</a>
+<a href="#1260" id="1260">1260</a>
+<a href="#1261" id="1261">1261</a>
+<a href="#1262" id="1262">1262</a>
+<a href="#1263" id="1263">1263</a>
+<a href="#1264" id="1264">1264</a>
+<a href="#1265" id="1265">1265</a>
+<a href="#1266" id="1266">1266</a>
+<a href="#1267" id="1267">1267</a>
+<a href="#1268" id="1268">1268</a>
+<a href="#1269" id="1269">1269</a>
+<a href="#1270" id="1270">1270</a>
+<a href="#1271" id="1271">1271</a>
+<a href="#1272" id="1272">1272</a>
+<a href="#1273" id="1273">1273</a>
+<a href="#1274" id="1274">1274</a>
+<a href="#1275" id="1275">1275</a>
+<a href="#1276" id="1276">1276</a>
+<a href="#1277" id="1277">1277</a>
+<a href="#1278" id="1278">1278</a>
+<a href="#1279" id="1279">1279</a>
+<a href="#1280" id="1280">1280</a>
+<a href="#1281" id="1281">1281</a>
+<a href="#1282" id="1282">1282</a>
+<a href="#1283" id="1283">1283</a>
+<a href="#1284" id="1284">1284</a>
+<a href="#1285" id="1285">1285</a>
+<a href="#1286" id="1286">1286</a>
+<a href="#1287" id="1287">1287</a>
+<a href="#1288" id="1288">1288</a>
+<a href="#1289" id="1289">1289</a>
+<a href="#1290" id="1290">1290</a>
+<a href="#1291" id="1291">1291</a>
+<a href="#1292" id="1292">1292</a>
+<a href="#1293" id="1293">1293</a>
+<a href="#1294" id="1294">1294</a>
+<a href="#1295" id="1295">1295</a>
+<a href="#1296" id="1296">1296</a>
+<a href="#1297" id="1297">1297</a>
+<a href="#1298" id="1298">1298</a>
+<a href="#1299" id="1299">1299</a>
+<a href="#1300" id="1300">1300</a>
+<a href="#1301" id="1301">1301</a>
+<a href="#1302" id="1302">1302</a>
+<a href="#1303" id="1303">1303</a>
+<a href="#1304" id="1304">1304</a>
+<a href="#1305" id="1305">1305</a>
+<a href="#1306" id="1306">1306</a>
+<a href="#1307" id="1307">1307</a>
+<a href="#1308" id="1308">1308</a>
+<a href="#1309" id="1309">1309</a>
+<a href="#1310" id="1310">1310</a>
+<a href="#1311" id="1311">1311</a>
+<a href="#1312" id="1312">1312</a>
+<a href="#1313" id="1313">1313</a>
+<a href="#1314" id="1314">1314</a>
+<a href="#1315" id="1315">1315</a>
+<a href="#1316" id="1316">1316</a>
+<a href="#1317" id="1317">1317</a>
+<a href="#1318" id="1318">1318</a>
+<a href="#1319" id="1319">1319</a>
+<a href="#1320" id="1320">1320</a>
+<a href="#1321" id="1321">1321</a>
+<a href="#1322" id="1322">1322</a>
+<a href="#1323" id="1323">1323</a>
+<a href="#1324" id="1324">1324</a>
+<a href="#1325" id="1325">1325</a>
+<a href="#1326" id="1326">1326</a>
+<a href="#1327" id="1327">1327</a>
+<a href="#1328" id="1328">1328</a>
+<a href="#1329" id="1329">1329</a>
+<a href="#1330" id="1330">1330</a>
+<a href="#1331" id="1331">1331</a>
+<a href="#1332" id="1332">1332</a>
+<a href="#1333" id="1333">1333</a>
+<a href="#1334" id="1334">1334</a>
+<a href="#1335" id="1335">1335</a>
+<a href="#1336" id="1336">1336</a>
+<a href="#1337" id="1337">1337</a>
+<a href="#1338" id="1338">1338</a>
+<a href="#1339" id="1339">1339</a>
+<a href="#1340" id="1340">1340</a>
+<a href="#1341" id="1341">1341</a>
+<a href="#1342" id="1342">1342</a>
+<a href="#1343" id="1343">1343</a>
+<a href="#1344" id="1344">1344</a>
+<a href="#1345" id="1345">1345</a>
+<a href="#1346" id="1346">1346</a>
+<a href="#1347" id="1347">1347</a>
+<a href="#1348" id="1348">1348</a>
+<a href="#1349" id="1349">1349</a>
+<a href="#1350" id="1350">1350</a>
+<a href="#1351" id="1351">1351</a>
+<a href="#1352" id="1352">1352</a>
+<a href="#1353" id="1353">1353</a>
+<a href="#1354" id="1354">1354</a>
+<a href="#1355" id="1355">1355</a>
+<a href="#1356" id="1356">1356</a>
+<a href="#1357" id="1357">1357</a>
+<a href="#1358" id="1358">1358</a>
+<a href="#1359" id="1359">1359</a>
+<a href="#1360" id="1360">1360</a>
+<a href="#1361" id="1361">1361</a>
+<a href="#1362" id="1362">1362</a>
+<a href="#1363" id="1363">1363</a>
+<a href="#1364" id="1364">1364</a>
+<a href="#1365" id="1365">1365</a>
+<a href="#1366" id="1366">1366</a>
+<a href="#1367" id="1367">1367</a>
+<a href="#1368" id="1368">1368</a>
+<a href="#1369" id="1369">1369</a>
+<a href="#1370" id="1370">1370</a>
+<a href="#1371" id="1371">1371</a>
+<a href="#1372" id="1372">1372</a>
+<a href="#1373" id="1373">1373</a>
+<a href="#1374" id="1374">1374</a>
+<a href="#1375" id="1375">1375</a>
+<a href="#1376" id="1376">1376</a>
+<a href="#1377" id="1377">1377</a>
+<a href="#1378" id="1378">1378</a>
+<a href="#1379" id="1379">1379</a>
+<a href="#1380" id="1380">1380</a>
+<a href="#1381" id="1381">1381</a>
+<a href="#1382" id="1382">1382</a>
+<a href="#1383" id="1383">1383</a>
+<a href="#1384" id="1384">1384</a>
+<a href="#1385" id="1385">1385</a>
+<a href="#1386" id="1386">1386</a>
+<a href="#1387" id="1387">1387</a>
+<a href="#1388" id="1388">1388</a>
+<a href="#1389" id="1389">1389</a>
+<a href="#1390" id="1390">1390</a>
+<a href="#1391" id="1391">1391</a>
+<a href="#1392" id="1392">1392</a>
+<a href="#1393" id="1393">1393</a>
+<a href="#1394" id="1394">1394</a>
+<a href="#1395" id="1395">1395</a>
+<a href="#1396" id="1396">1396</a>
+<a href="#1397" id="1397">1397</a>
+<a href="#1398" id="1398">1398</a>
+<a href="#1399" id="1399">1399</a>
+<a href="#1400" id="1400">1400</a>
+<a href="#1401" id="1401">1401</a>
+<a href="#1402" id="1402">1402</a>
+<a href="#1403" id="1403">1403</a>
+<a href="#1404" id="1404">1404</a>
+<a href="#1405" id="1405">1405</a>
+<a href="#1406" id="1406">1406</a>
+<a href="#1407" id="1407">1407</a>
+<a href="#1408" id="1408">1408</a>
+<a href="#1409" id="1409">1409</a>
+<a href="#1410" id="1410">1410</a>
+<a href="#1411" id="1411">1411</a>
+<a href="#1412" id="1412">1412</a>
+<a href="#1413" id="1413">1413</a>
+<a href="#1414" id="1414">1414</a>
+<a href="#1415" id="1415">1415</a>
+<a href="#1416" id="1416">1416</a>
+<a href="#1417" id="1417">1417</a>
+<a href="#1418" id="1418">1418</a>
+<a href="#1419" id="1419">1419</a>
+<a href="#1420" id="1420">1420</a>
+<a href="#1421" id="1421">1421</a>
+<a href="#1422" id="1422">1422</a>
+<a href="#1423" id="1423">1423</a>
+<a href="#1424" id="1424">1424</a>
+<a href="#1425" id="1425">1425</a>
+<a href="#1426" id="1426">1426</a>
+<a href="#1427" id="1427">1427</a>
+<a href="#1428" id="1428">1428</a>
+<a href="#1429" id="1429">1429</a>
+<a href="#1430" id="1430">1430</a>
+<a href="#1431" id="1431">1431</a>
+<a href="#1432" id="1432">1432</a>
+<a href="#1433" id="1433">1433</a>
+<a href="#1434" id="1434">1434</a>
+<a href="#1435" id="1435">1435</a>
+<a href="#1436" id="1436">1436</a>
+<a href="#1437" id="1437">1437</a>
+<a href="#1438" id="1438">1438</a>
+<a href="#1439" id="1439">1439</a>
+<a href="#1440" id="1440">1440</a>
+<a href="#1441" id="1441">1441</a>
+<a href="#1442" id="1442">1442</a>
+<a href="#1443" id="1443">1443</a>
+<a href="#1444" id="1444">1444</a>
+<a href="#1445" id="1445">1445</a>
+<a href="#1446" id="1446">1446</a>
+<a href="#1447" id="1447">1447</a>
+<a href="#1448" id="1448">1448</a>
+<a href="#1449" id="1449">1449</a>
+<a href="#1450" id="1450">1450</a>
+<a href="#1451" id="1451">1451</a>
+<a href="#1452" id="1452">1452</a>
+<a href="#1453" id="1453">1453</a>
+<a href="#1454" id="1454">1454</a>
+<a href="#1455" id="1455">1455</a>
+<a href="#1456" id="1456">1456</a>
+<a href="#1457" id="1457">1457</a>
+<a href="#1458" id="1458">1458</a>
+<a href="#1459" id="1459">1459</a>
+<a href="#1460" id="1460">1460</a>
+<a href="#1461" id="1461">1461</a>
+<a href="#1462" id="1462">1462</a>
+<a href="#1463" id="1463">1463</a>
+<a href="#1464" id="1464">1464</a>
+<a href="#1465" id="1465">1465</a>
+<a href="#1466" id="1466">1466</a>
+<a href="#1467" id="1467">1467</a>
+<a href="#1468" id="1468">1468</a>
+<a href="#1469" id="1469">1469</a>
+<a href="#1470" id="1470">1470</a>
+<a href="#1471" id="1471">1471</a>
+<a href="#1472" id="1472">1472</a>
+<a href="#1473" id="1473">1473</a>
+<a href="#1474" id="1474">1474</a>
+<a href="#1475" id="1475">1475</a>
+<a href="#1476" id="1476">1476</a>
+<a href="#1477" id="1477">1477</a>
+<a href="#1478" id="1478">1478</a>
+<a href="#1479" id="1479">1479</a>
+<a href="#1480" id="1480">1480</a>
+<a href="#1481" id="1481">1481</a>
+<a href="#1482" id="1482">1482</a>
+<a href="#1483" id="1483">1483</a>
+<a href="#1484" id="1484">1484</a>
+<a href="#1485" id="1485">1485</a>
+<a href="#1486" id="1486">1486</a>
+<a href="#1487" id="1487">1487</a>
+<a href="#1488" id="1488">1488</a>
+<a href="#1489" id="1489">1489</a>
+<a href="#1490" id="1490">1490</a>
+<a href="#1491" id="1491">1491</a>
+<a href="#1492" id="1492">1492</a>
+<a href="#1493" id="1493">1493</a>
+<a href="#1494" id="1494">1494</a>
+<a href="#1495" id="1495">1495</a>
+<a href="#1496" id="1496">1496</a>
+<a href="#1497" id="1497">1497</a>
+<a href="#1498" id="1498">1498</a>
+<a href="#1499" id="1499">1499</a>
+<a href="#1500" id="1500">1500</a>
+<a href="#1501" id="1501">1501</a>
+<a href="#1502" id="1502">1502</a>
+<a href="#1503" id="1503">1503</a>
+<a href="#1504" id="1504">1504</a>
+<a href="#1505" id="1505">1505</a>
+<a href="#1506" id="1506">1506</a>
+<a href="#1507" id="1507">1507</a>
+<a href="#1508" id="1508">1508</a>
+<a href="#1509" id="1509">1509</a>
+<a href="#1510" id="1510">1510</a>
+<a href="#1511" id="1511">1511</a>
+<a href="#1512" id="1512">1512</a>
+<a href="#1513" id="1513">1513</a>
+<a href="#1514" id="1514">1514</a>
+<a href="#1515" id="1515">1515</a>
+<a href="#1516" id="1516">1516</a>
+<a href="#1517" id="1517">1517</a>
+<a href="#1518" id="1518">1518</a>
+<a href="#1519" id="1519">1519</a>
+<a href="#1520" id="1520">1520</a>
+<a href="#1521" id="1521">1521</a>
+<a href="#1522" id="1522">1522</a>
+<a href="#1523" id="1523">1523</a>
+<a href="#1524" id="1524">1524</a>
+<a href="#1525" id="1525">1525</a>
+<a href="#1526" id="1526">1526</a>
+<a href="#1527" id="1527">1527</a>
+<a href="#1528" id="1528">1528</a>
+<a href="#1529" id="1529">1529</a>
+<a href="#1530" id="1530">1530</a>
+<a href="#1531" id="1531">1531</a>
+<a href="#1532" id="1532">1532</a>
+<a href="#1533" id="1533">1533</a>
+<a href="#1534" id="1534">1534</a>
+<a href="#1535" id="1535">1535</a>
+<a href="#1536" id="1536">1536</a>
+<a href="#1537" id="1537">1537</a>
+<a href="#1538" id="1538">1538</a>
+<a href="#1539" id="1539">1539</a>
+<a href="#1540" id="1540">1540</a>
+<a href="#1541" id="1541">1541</a>
+<a href="#1542" id="1542">1542</a>
+<a href="#1543" id="1543">1543</a>
+<a href="#1544" id="1544">1544</a>
+<a href="#1545" id="1545">1545</a>
+<a href="#1546" id="1546">1546</a>
+<a href="#1547" id="1547">1547</a>
+<a href="#1548" id="1548">1548</a>
+<a href="#1549" id="1549">1549</a>
+<a href="#1550" id="1550">1550</a>
+<a href="#1551" id="1551">1551</a>
+<a href="#1552" id="1552">1552</a>
+<a href="#1553" id="1553">1553</a>
+<a href="#1554" id="1554">1554</a>
+<a href="#1555" id="1555">1555</a>
+<a href="#1556" id="1556">1556</a>
+<a href="#1557" id="1557">1557</a>
+<a href="#1558" id="1558">1558</a>
+<a href="#1559" id="1559">1559</a>
+<a href="#1560" id="1560">1560</a>
+<a href="#1561" id="1561">1561</a>
+<a href="#1562" id="1562">1562</a>
+<a href="#1563" id="1563">1563</a>
+<a href="#1564" id="1564">1564</a>
+<a href="#1565" id="1565">1565</a>
+<a href="#1566" id="1566">1566</a>
+<a href="#1567" id="1567">1567</a>
+<a href="#1568" id="1568">1568</a>
+<a href="#1569" id="1569">1569</a>
+<a href="#1570" id="1570">1570</a>
+<a href="#1571" id="1571">1571</a>
+<a href="#1572" id="1572">1572</a>
+<a href="#1573" id="1573">1573</a>
+<a href="#1574" id="1574">1574</a>
+<a href="#1575" id="1575">1575</a>
+<a href="#1576" id="1576">1576</a>
+<a href="#1577" id="1577">1577</a>
+<a href="#1578" id="1578">1578</a>
+<a href="#1579" id="1579">1579</a>
+<a href="#1580" id="1580">1580</a>
+<a href="#1581" id="1581">1581</a>
+<a href="#1582" id="1582">1582</a>
+<a href="#1583" id="1583">1583</a>
+<a href="#1584" id="1584">1584</a>
+<a href="#1585" id="1585">1585</a>
+<a href="#1586" id="1586">1586</a>
+<a href="#1587" id="1587">1587</a>
+<a href="#1588" id="1588">1588</a>
+<a href="#1589" id="1589">1589</a>
+<a href="#1590" id="1590">1590</a>
+<a href="#1591" id="1591">1591</a>
+<a href="#1592" id="1592">1592</a>
+<a href="#1593" id="1593">1593</a>
+<a href="#1594" id="1594">1594</a>
+<a href="#1595" id="1595">1595</a>
+<a href="#1596" id="1596">1596</a>
+<a href="#1597" id="1597">1597</a>
+<a href="#1598" id="1598">1598</a>
+<a href="#1599" id="1599">1599</a>
+<a href="#1600" id="1600">1600</a>
+<a href="#1601" id="1601">1601</a>
+<a href="#1602" id="1602">1602</a>
+<a href="#1603" id="1603">1603</a>
+<a href="#1604" id="1604">1604</a>
+<a href="#1605" id="1605">1605</a>
+<a href="#1606" id="1606">1606</a>
+<a href="#1607" id="1607">1607</a>
+<a href="#1608" id="1608">1608</a>
+<a href="#1609" id="1609">1609</a>
+<a href="#1610" id="1610">1610</a>
+<a href="#1611" id="1611">1611</a>
+<a href="#1612" id="1612">1612</a>
+<a href="#1613" id="1613">1613</a>
+<a href="#1614" id="1614">1614</a>
+<a href="#1615" id="1615">1615</a>
+<a href="#1616" id="1616">1616</a>
+<a href="#1617" id="1617">1617</a>
+<a href="#1618" id="1618">1618</a>
+<a href="#1619" id="1619">1619</a>
+<a href="#1620" id="1620">1620</a>
+<a href="#1621" id="1621">1621</a>
+<a href="#1622" id="1622">1622</a>
+<a href="#1623" id="1623">1623</a>
+<a href="#1624" id="1624">1624</a>
+<a href="#1625" id="1625">1625</a>
+<a href="#1626" id="1626">1626</a>
+<a href="#1627" id="1627">1627</a>
+<a href="#1628" id="1628">1628</a>
+<a href="#1629" id="1629">1629</a>
+<a href="#1630" id="1630">1630</a>
+<a href="#1631" id="1631">1631</a>
+<a href="#1632" id="1632">1632</a>
+<a href="#1633" id="1633">1633</a>
+<a href="#1634" id="1634">1634</a>
+<a href="#1635" id="1635">1635</a>
+<a href="#1636" id="1636">1636</a>
+<a href="#1637" id="1637">1637</a>
+<a href="#1638" id="1638">1638</a>
+<a href="#1639" id="1639">1639</a>
+<a href="#1640" id="1640">1640</a>
+<a href="#1641" id="1641">1641</a>
+<a href="#1642" id="1642">1642</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2020, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="doccomment">//! Quiche application utilities.
+//!
+//! This module provides some utility functions that are common to quiche
+//! applications.
+
+</span><span class="kw">use </span>std::io::prelude::<span class="kw-2">*</span>;
+
+<span class="kw">use </span>std::collections::HashMap;
+
+<span class="attr">#[cfg(feature = <span class="string">"sfv"</span>)]
+</span><span class="kw">use </span>std::convert::TryFrom;
+
+<span class="kw">use </span>std::fmt::Write <span class="kw">as _</span>;
+
+<span class="kw">use </span>std::rc::Rc;
+
+<span class="kw">use </span>std::cell::RefCell;
+
+<span class="kw">use </span>std::path;
+
+<span class="kw">use </span>ring::rand::SecureRandom;
+
+<span class="kw">use </span>quiche::ConnectionId;
+
+<span class="kw">use </span>quiche::h3::NameValue;
+<span class="kw">use </span>quiche::h3::Priority;
+
+<span class="kw">pub fn </span>stdout_sink(out: String) {
+    <span class="macro">print!</span>(<span class="string">"{out}"</span>);
+}
+
+<span class="kw">const </span>H3_MESSAGE_ERROR: u64 = <span class="number">0x10E</span>;
+
+<span class="doccomment">/// ALPN helpers.
+///
+/// This module contains constants and functions for working with ALPN.
+</span><span class="kw">pub mod </span>alpns {
+    <span class="kw">pub const </span>HTTP_09: [<span class="kw-2">&amp;</span>[u8]; <span class="number">2</span>] = [<span class="string">b"hq-interop"</span>, <span class="string">b"http/0.9"</span>];
+    <span class="kw">pub const </span>HTTP_3: [<span class="kw-2">&amp;</span>[u8]; <span class="number">1</span>] = [<span class="string">b"h3"</span>];
+}
+
+<span class="kw">pub struct </span>PartialRequest {
+    <span class="kw">pub </span>req: Vec&lt;u8&gt;,
+}
+
+<span class="kw">pub struct </span>PartialResponse {
+    <span class="kw">pub </span>headers: <span class="prelude-ty">Option</span>&lt;Vec&lt;quiche::h3::Header&gt;&gt;,
+    <span class="kw">pub </span>priority: <span class="prelude-ty">Option</span>&lt;quiche::h3::Priority&gt;,
+
+    <span class="kw">pub </span>body: Vec&lt;u8&gt;,
+
+    <span class="kw">pub </span>written: usize,
+}
+
+<span class="kw">pub type </span>ClientId = u64;
+
+<span class="kw">pub struct </span>Client {
+    <span class="kw">pub </span>conn: quiche::Connection,
+
+    <span class="kw">pub </span>http_conn: <span class="prelude-ty">Option</span>&lt;Box&lt;<span class="kw">dyn </span>HttpConn&gt;&gt;,
+
+    <span class="kw">pub </span>client_id: ClientId,
+
+    <span class="kw">pub </span>app_proto_selected: bool,
+
+    <span class="kw">pub </span>partial_requests: std::collections::HashMap&lt;u64, PartialRequest&gt;,
+
+    <span class="kw">pub </span>partial_responses: std::collections::HashMap&lt;u64, PartialResponse&gt;,
+
+    <span class="kw">pub </span>max_datagram_size: usize,
+
+    <span class="kw">pub </span>loss_rate: f64,
+
+    <span class="kw">pub </span>max_send_burst: usize,
+}
+
+<span class="kw">pub type </span>ClientIdMap = HashMap&lt;ConnectionId&lt;<span class="lifetime">'static</span>&gt;, ClientId&gt;;
+<span class="kw">pub type </span>ClientMap = HashMap&lt;ClientId, Client&gt;;
+
+<span class="doccomment">/// Makes a buffered writer for a resource with a target URL.
+///
+/// The file will have the same name as the resource's last path segment value.
+/// Multiple requests for the same URL are indicated by the value of `cardinal`,
+/// any value "N" greater than 1, will cause ".N" to be appended to the
+/// filename.
+</span><span class="kw">fn </span>make_resource_writer(
+    url: <span class="kw-2">&amp;</span>url::Url, target_path: <span class="kw-2">&amp;</span><span class="prelude-ty">Option</span>&lt;String&gt;, cardinal: u64,
+) -&gt; <span class="prelude-ty">Option</span>&lt;std::io::BufWriter&lt;std::fs::File&gt;&gt; {
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(tp) = target_path {
+        <span class="kw">let </span>resource =
+            url.path_segments().map(|c| c.collect::&lt;Vec&lt;<span class="kw">_</span>&gt;&gt;()).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>path = <span class="macro">format!</span>(<span class="string">"{}/{}"</span>, tp, resource.iter().last().unwrap());
+
+        <span class="kw">if </span>cardinal &gt; <span class="number">1 </span>{
+            path = <span class="macro">format!</span>(<span class="string">"{path}.{cardinal}"</span>);
+        }
+
+        <span class="kw">match </span>std::fs::File::create(<span class="kw-2">&amp;</span>path) {
+            <span class="prelude-val">Ok</span>(f) =&gt; <span class="kw">return </span><span class="prelude-val">Some</span>(std::io::BufWriter::new(f)),
+
+            <span class="prelude-val">Err</span>(e) =&gt; <span class="macro">panic!</span>(
+                <span class="string">"Error creating file for {}, attempted path was {}: {}"</span>,
+                url, path, e
+            ),
+        }
+    }
+
+    <span class="prelude-val">None
+</span>}
+
+<span class="kw">fn </span>autoindex(path: path::PathBuf, index: <span class="kw-2">&amp;</span>str) -&gt; path::PathBuf {
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(path_str) = path.to_str() {
+        <span class="kw">if </span>path_str.ends_with(<span class="string">'/'</span>) {
+            <span class="kw">let </span>path_str = <span class="macro">format!</span>(<span class="string">"{path_str}{index}"</span>);
+            <span class="kw">return </span>path::PathBuf::from(<span class="kw-2">&amp;</span>path_str);
+        }
+    }
+
+    path
+}
+
+<span class="doccomment">/// Makes a buffered writer for a qlog.
+</span><span class="kw">pub fn </span>make_qlog_writer(
+    dir: <span class="kw-2">&amp;</span>std::ffi::OsStr, role: <span class="kw-2">&amp;</span>str, id: <span class="kw-2">&amp;</span>str,
+) -&gt; std::io::BufWriter&lt;std::fs::File&gt; {
+    <span class="kw">let </span><span class="kw-2">mut </span>path = std::path::PathBuf::from(dir);
+    <span class="kw">let </span>filename = <span class="macro">format!</span>(<span class="string">"{role}-{id}.sqlog"</span>);
+    path.push(filename);
+
+    <span class="kw">match </span>std::fs::File::create(<span class="kw-2">&amp;</span>path) {
+        <span class="prelude-val">Ok</span>(f) =&gt; std::io::BufWriter::new(f),
+
+        <span class="prelude-val">Err</span>(e) =&gt; <span class="macro">panic!</span>(
+            <span class="string">"Error creating qlog file attempted path was {:?}: {}"</span>,
+            path, e
+        ),
+    }
+}
+
+<span class="kw">fn </span>dump_json(reqs: <span class="kw-2">&amp;</span>[Http3Request], output_sink: <span class="kw-2">&amp;mut </span><span class="kw">dyn </span>FnMut(String)) {
+    <span class="kw">let </span><span class="kw-2">mut </span>out = String::new();
+
+    <span class="macro">writeln!</span>(out, <span class="string">"{{"</span>).unwrap();
+    <span class="macro">writeln!</span>(out, <span class="string">"  \"entries\": ["</span>).unwrap();
+    <span class="kw">let </span><span class="kw-2">mut </span>reqs = reqs.iter().peekable();
+
+    <span class="kw">while let </span><span class="prelude-val">Some</span>(req) = reqs.next() {
+        <span class="macro">writeln!</span>(out, <span class="string">"  {{"</span>).unwrap();
+        <span class="macro">writeln!</span>(out, <span class="string">"    \"request\":{{"</span>).unwrap();
+        <span class="macro">writeln!</span>(out, <span class="string">"      \"headers\":["</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>req_hdrs = req.hdrs.iter().peekable();
+        <span class="kw">while let </span><span class="prelude-val">Some</span>(h) = req_hdrs.next() {
+            <span class="macro">writeln!</span>(out, <span class="string">"        {{"</span>).unwrap();
+            <span class="macro">writeln!</span>(
+                out,
+                <span class="string">"          \"name\": \"{}\","</span>,
+                std::str::from_utf8(h.name()).unwrap()
+            )
+            .unwrap();
+            <span class="macro">writeln!</span>(
+                out,
+                <span class="string">"          \"value\": \"{}\""</span>,
+                std::str::from_utf8(h.value()).unwrap().replace(<span class="string">'"'</span>, <span class="string">"\\\""</span>)
+            )
+            .unwrap();
+
+            <span class="kw">if </span>req_hdrs.peek().is_some() {
+                <span class="macro">writeln!</span>(out, <span class="string">"        }},"</span>).unwrap();
+            } <span class="kw">else </span>{
+                <span class="macro">writeln!</span>(out, <span class="string">"        }}"</span>).unwrap();
+            }
+        }
+        <span class="macro">writeln!</span>(out, <span class="string">"      ]}},"</span>).unwrap();
+
+        <span class="macro">writeln!</span>(out, <span class="string">"    \"response\":{{"</span>).unwrap();
+        <span class="macro">writeln!</span>(out, <span class="string">"      \"headers\":["</span>).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>response_hdrs = req.response_hdrs.iter().peekable();
+        <span class="kw">while let </span><span class="prelude-val">Some</span>(h) = response_hdrs.next() {
+            <span class="macro">writeln!</span>(out, <span class="string">"        {{"</span>).unwrap();
+            <span class="macro">writeln!</span>(
+                out,
+                <span class="string">"          \"name\": \"{}\","</span>,
+                std::str::from_utf8(h.name()).unwrap()
+            )
+            .unwrap();
+            <span class="macro">writeln!</span>(
+                out,
+                <span class="string">"          \"value\": \"{}\""</span>,
+                std::str::from_utf8(h.value()).unwrap().replace(<span class="string">'"'</span>, <span class="string">"\\\""</span>)
+            )
+            .unwrap();
+
+            <span class="kw">if </span>response_hdrs.peek().is_some() {
+                <span class="macro">writeln!</span>(out, <span class="string">"        }},"</span>).unwrap();
+            } <span class="kw">else </span>{
+                <span class="macro">writeln!</span>(out, <span class="string">"        }}"</span>).unwrap();
+            }
+        }
+        <span class="macro">writeln!</span>(out, <span class="string">"      ],"</span>).unwrap();
+        <span class="macro">writeln!</span>(out, <span class="string">"      \"body\": {:?}"</span>, req.response_body).unwrap();
+        <span class="macro">writeln!</span>(out, <span class="string">"    }}"</span>).unwrap();
+
+        <span class="kw">if </span>reqs.peek().is_some() {
+            <span class="macro">writeln!</span>(out, <span class="string">"}},"</span>).unwrap();
+        } <span class="kw">else </span>{
+            <span class="macro">writeln!</span>(out, <span class="string">"}}"</span>).unwrap();
+        }
+    }
+    <span class="macro">writeln!</span>(out, <span class="string">"]"</span>).unwrap();
+    <span class="macro">writeln!</span>(out, <span class="string">"}}"</span>).unwrap();
+
+    output_sink(out);
+}
+
+<span class="kw">pub fn </span>hdrs_to_strings(hdrs: <span class="kw-2">&amp;</span>[quiche::h3::Header]) -&gt; Vec&lt;(String, String)&gt; {
+    hdrs.iter()
+        .map(|h| {
+            <span class="kw">let </span>name = String::from_utf8_lossy(h.name()).to_string();
+            <span class="kw">let </span>value = String::from_utf8_lossy(h.value()).to_string();
+
+            (name, value)
+        })
+        .collect()
+}
+
+<span class="doccomment">/// Generate a new pair of Source Connection ID and reset token.
+</span><span class="kw">pub fn </span>generate_cid_and_reset_token&lt;T: SecureRandom&gt;(
+    rng: <span class="kw-2">&amp;</span>T,
+) -&gt; (quiche::ConnectionId&lt;<span class="lifetime">'static</span>&gt;, u128) {
+    <span class="kw">let </span><span class="kw-2">mut </span>scid = [<span class="number">0</span>; quiche::MAX_CONN_ID_LEN];
+    rng.fill(<span class="kw-2">&amp;mut </span>scid).unwrap();
+    <span class="kw">let </span>scid = scid.to_vec().into();
+    <span class="kw">let </span><span class="kw-2">mut </span>reset_token = [<span class="number">0</span>; <span class="number">16</span>];
+    rng.fill(<span class="kw-2">&amp;mut </span>reset_token).unwrap();
+    <span class="kw">let </span>reset_token = u128::from_be_bytes(reset_token);
+    (scid, reset_token)
+}
+
+<span class="doccomment">/// Construct a priority field value from quiche apps custom query string.
+</span><span class="kw">pub fn </span>priority_field_value_from_query_string(url: <span class="kw-2">&amp;</span>url::Url) -&gt; <span class="prelude-ty">Option</span>&lt;String&gt; {
+    <span class="kw">let </span><span class="kw-2">mut </span>priority = <span class="string">""</span>.to_string();
+    <span class="kw">for </span>param <span class="kw">in </span>url.query_pairs() {
+        <span class="kw">if </span>param.<span class="number">0 </span>== <span class="string">"u" </span>{
+            <span class="macro">write!</span>(priority, <span class="string">"{}={},"</span>, param.<span class="number">0</span>, param.<span class="number">1</span>).ok();
+        }
+
+        <span class="kw">if </span>param.<span class="number">0 </span>== <span class="string">"i" </span>&amp;&amp; param.<span class="number">1 </span>== <span class="string">"1" </span>{
+            priority.push_str(<span class="string">"i,"</span>);
+        }
+    }
+
+    <span class="kw">if </span>!priority.is_empty() {
+        <span class="comment">// remove trailing comma
+        </span>priority.pop();
+
+        <span class="prelude-val">Some</span>(priority)
+    } <span class="kw">else </span>{
+        <span class="prelude-val">None
+    </span>}
+}
+
+<span class="doccomment">/// Construct a Priority from quiche apps custom query string.
+</span><span class="kw">pub fn </span>priority_from_query_string(url: <span class="kw-2">&amp;</span>url::Url) -&gt; <span class="prelude-ty">Option</span>&lt;Priority&gt; {
+    <span class="kw">let </span><span class="kw-2">mut </span>urgency = <span class="prelude-val">None</span>;
+    <span class="kw">let </span><span class="kw-2">mut </span>incremental = <span class="prelude-val">None</span>;
+    <span class="kw">for </span>param <span class="kw">in </span>url.query_pairs() {
+        <span class="kw">if </span>param.<span class="number">0 </span>== <span class="string">"u" </span>{
+            urgency = <span class="prelude-val">Some</span>(param.<span class="number">1</span>.parse::&lt;u8&gt;().unwrap());
+        }
+
+        <span class="kw">if </span>param.<span class="number">0 </span>== <span class="string">"i" </span>&amp;&amp; param.<span class="number">1 </span>== <span class="string">"1" </span>{
+            incremental = <span class="prelude-val">Some</span>(<span class="bool-val">true</span>);
+        }
+    }
+
+    <span class="kw">match </span>(urgency, incremental) {
+        (<span class="prelude-val">Some</span>(u), <span class="prelude-val">Some</span>(i)) =&gt; <span class="prelude-val">Some</span>(Priority::new(u, i)),
+
+        (<span class="prelude-val">Some</span>(u), <span class="prelude-val">None</span>) =&gt; <span class="prelude-val">Some</span>(Priority::new(u, <span class="bool-val">false</span>)),
+
+        (<span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(i)) =&gt; <span class="prelude-val">Some</span>(Priority::new(<span class="number">3</span>, i)),
+
+        (<span class="prelude-val">None</span>, <span class="prelude-val">None</span>) =&gt; <span class="prelude-val">None</span>,
+    }
+}
+
+<span class="kw">fn </span>send_h3_dgram(
+    conn: <span class="kw-2">&amp;mut </span>quiche::Connection, flow_id: u64, dgram_content: <span class="kw-2">&amp;</span>[u8],
+) -&gt; quiche::Result&lt;()&gt; {
+    <span class="macro">info!</span>(
+        <span class="string">"sending HTTP/3 DATAGRAM on flow_id={} with data {:?}"</span>,
+        flow_id, dgram_content
+    );
+
+    <span class="kw">let </span>len = octets::varint_len(flow_id) + dgram_content.len();
+    <span class="kw">let </span><span class="kw-2">mut </span>d = <span class="macro">vec!</span>[<span class="number">0</span>; len];
+    <span class="kw">let </span><span class="kw-2">mut </span>b = octets::OctetsMut::with_slice(<span class="kw-2">&amp;mut </span>d);
+
+    b.put_varint(flow_id)
+        .map_err(|<span class="kw">_</span>| quiche::Error::BufferTooShort)<span class="question-mark">?</span>;
+    b.put_bytes(dgram_content)
+        .map_err(|<span class="kw">_</span>| quiche::Error::BufferTooShort)<span class="question-mark">?</span>;
+
+    conn.dgram_send(<span class="kw-2">&amp;</span>d)
+}
+
+<span class="kw">pub trait </span>HttpConn {
+    <span class="kw">fn </span>send_requests(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span>quiche::Connection, target_path: <span class="kw-2">&amp;</span><span class="prelude-ty">Option</span>&lt;String&gt;,
+    );
+
+    <span class="kw">fn </span>handle_responses(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span>quiche::Connection, buf: <span class="kw-2">&amp;mut </span>[u8],
+        req_start: <span class="kw-2">&amp;</span>std::time::Instant,
+    );
+
+    <span class="kw">fn </span>report_incomplete(<span class="kw-2">&amp;</span><span class="self">self</span>, start: <span class="kw-2">&amp;</span>std::time::Instant) -&gt; bool;
+
+    <span class="kw">fn </span>handle_requests(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span>quiche::Connection,
+        partial_requests: <span class="kw-2">&amp;mut </span>HashMap&lt;u64, PartialRequest&gt;,
+        partial_responses: <span class="kw-2">&amp;mut </span>HashMap&lt;u64, PartialResponse&gt;, root: <span class="kw-2">&amp;</span>str,
+        index: <span class="kw-2">&amp;</span>str, buf: <span class="kw-2">&amp;mut </span>[u8],
+    ) -&gt; quiche::h3::Result&lt;()&gt;;
+
+    <span class="kw">fn </span>handle_writable(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span>quiche::Connection,
+        partial_responses: <span class="kw-2">&amp;mut </span>HashMap&lt;u64, PartialResponse&gt;, stream_id: u64,
+    );
+}
+
+<span class="doccomment">/// Represents an HTTP/0.9 formatted request.
+</span><span class="kw">pub struct </span>Http09Request {
+    url: url::Url,
+    cardinal: u64,
+    request_line: String,
+    stream_id: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    response_writer: <span class="prelude-ty">Option</span>&lt;std::io::BufWriter&lt;std::fs::File&gt;&gt;,
+}
+
+<span class="doccomment">/// Represents an HTTP/3 formatted request.
+</span><span class="kw">struct </span>Http3Request {
+    url: url::Url,
+    cardinal: u64,
+    stream_id: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    hdrs: Vec&lt;quiche::h3::Header&gt;,
+    priority: <span class="prelude-ty">Option</span>&lt;Priority&gt;,
+    response_hdrs: Vec&lt;quiche::h3::Header&gt;,
+    response_body: Vec&lt;u8&gt;,
+    response_body_max: usize,
+    response_writer: <span class="prelude-ty">Option</span>&lt;std::io::BufWriter&lt;std::fs::File&gt;&gt;,
+}
+
+<span class="kw">type </span>Http3ResponseBuilderResult = std::result::Result&lt;
+    (Vec&lt;quiche::h3::Header&gt;, Vec&lt;u8&gt;, Vec&lt;u8&gt;),
+    (u64, String),
+&gt;;
+
+<span class="kw">pub struct </span>Http09Conn {
+    stream_id: u64,
+    reqs_sent: usize,
+    reqs_complete: usize,
+    reqs: Vec&lt;Http09Request&gt;,
+    output_sink: Rc&lt;RefCell&lt;<span class="kw">dyn </span>FnMut(String)&gt;&gt;,
+}
+
+<span class="kw">impl </span>Default <span class="kw">for </span>Http09Conn {
+    <span class="kw">fn </span>default() -&gt; <span class="self">Self </span>{
+        Http09Conn {
+            stream_id: Default::default(),
+            reqs_sent: Default::default(),
+            reqs_complete: Default::default(),
+            reqs: Default::default(),
+            output_sink: Rc::new(RefCell::new(stdout_sink)),
+        }
+    }
+}
+
+<span class="kw">impl </span>Http09Conn {
+    <span class="kw">pub fn </span>with_urls(
+        urls: <span class="kw-2">&amp;</span>[url::Url], reqs_cardinal: u64,
+        output_sink: Rc&lt;RefCell&lt;<span class="kw">dyn </span>FnMut(String)&gt;&gt;,
+    ) -&gt; Box&lt;<span class="kw">dyn </span>HttpConn&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>reqs = Vec::new();
+        <span class="kw">for </span>url <span class="kw">in </span>urls {
+            <span class="kw">for </span>i <span class="kw">in </span><span class="number">1</span>..=reqs_cardinal {
+                <span class="kw">let </span>request_line = <span class="macro">format!</span>(<span class="string">"GET {}\r\n"</span>, url.path());
+                reqs.push(Http09Request {
+                    url: url.clone(),
+                    cardinal: i,
+                    request_line,
+                    stream_id: <span class="prelude-val">None</span>,
+                    response_writer: <span class="prelude-val">None</span>,
+                });
+            }
+        }
+
+        <span class="kw">let </span>h_conn = Http09Conn {
+            stream_id: <span class="number">0</span>,
+            reqs_sent: <span class="number">0</span>,
+            reqs_complete: <span class="number">0</span>,
+            reqs,
+            output_sink,
+        };
+
+        Box::new(h_conn)
+    }
+}
+
+<span class="kw">impl </span>HttpConn <span class="kw">for </span>Http09Conn {
+    <span class="kw">fn </span>send_requests(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span>quiche::Connection, target_path: <span class="kw-2">&amp;</span><span class="prelude-ty">Option</span>&lt;String&gt;,
+    ) {
+        <span class="kw">let </span><span class="kw-2">mut </span>reqs_done = <span class="number">0</span>;
+
+        <span class="kw">for </span>req <span class="kw">in </span><span class="self">self</span>.reqs.iter_mut().skip(<span class="self">self</span>.reqs_sent) {
+            <span class="kw">match </span>conn.stream_send(
+                <span class="self">self</span>.stream_id,
+                req.request_line.as_bytes(),
+                <span class="bool-val">true</span>,
+            ) {
+                <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                <span class="prelude-val">Err</span>(quiche::Error::StreamLimit) =&gt; {
+                    <span class="macro">debug!</span>(<span class="string">"not enough stream credits, retry later..."</span>);
+                    <span class="kw">break</span>;
+                },
+
+                <span class="prelude-val">Err</span>(e) =&gt; {
+                    <span class="macro">error!</span>(<span class="string">"failed to send request {:?}"</span>, e);
+                    <span class="kw">break</span>;
+                },
+            };
+
+            <span class="macro">debug!</span>(<span class="string">"sending HTTP request {:?}"</span>, req.request_line);
+
+            req.stream_id = <span class="prelude-val">Some</span>(<span class="self">self</span>.stream_id);
+            req.response_writer =
+                make_resource_writer(<span class="kw-2">&amp;</span>req.url, target_path, req.cardinal);
+
+            <span class="self">self</span>.stream_id += <span class="number">4</span>;
+
+            reqs_done += <span class="number">1</span>;
+        }
+
+        <span class="self">self</span>.reqs_sent += reqs_done;
+    }
+
+    <span class="kw">fn </span>handle_responses(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span>quiche::Connection, buf: <span class="kw-2">&amp;mut </span>[u8],
+        req_start: <span class="kw-2">&amp;</span>std::time::Instant,
+    ) {
+        <span class="comment">// Process all readable streams.
+        </span><span class="kw">for </span>s <span class="kw">in </span>conn.readable() {
+            <span class="kw">while let </span><span class="prelude-val">Ok</span>((read, fin)) = conn.stream_recv(s, buf) {
+                <span class="macro">trace!</span>(<span class="string">"received {} bytes"</span>, read);
+
+                <span class="kw">let </span>stream_buf = <span class="kw-2">&amp;</span>buf[..read];
+
+                <span class="macro">trace!</span>(
+                    <span class="string">"stream {} has {} bytes (fin? {})"</span>,
+                    s,
+                    stream_buf.len(),
+                    fin
+                );
+
+                <span class="kw">let </span>req = <span class="self">self
+                    </span>.reqs
+                    .iter_mut()
+                    .find(|r| r.stream_id == <span class="prelude-val">Some</span>(s))
+                    .unwrap();
+
+                <span class="kw">match </span><span class="kw-2">&amp;mut </span>req.response_writer {
+                    <span class="prelude-val">Some</span>(rw) =&gt; {
+                        rw.write_all(<span class="kw-2">&amp;</span>buf[..read]).ok();
+                    },
+
+                    <span class="prelude-val">None </span>=&gt; {
+                        <span class="self">self</span>.output_sink.borrow_mut()(<span class="kw">unsafe </span>{
+                            String::from_utf8_unchecked(stream_buf.to_vec())
+                        });
+                    },
+                }
+
+                <span class="comment">// The server reported that it has no more data to send on
+                // a client-initiated
+                // bidirectional stream, which means
+                // we got the full response. If all responses are received
+                // then close the connection.
+                </span><span class="kw">if </span><span class="kw-2">&amp;</span>s % <span class="number">4 </span>== <span class="number">0 </span>&amp;&amp; fin {
+                    <span class="self">self</span>.reqs_complete += <span class="number">1</span>;
+                    <span class="kw">let </span>reqs_count = <span class="self">self</span>.reqs.len();
+
+                    <span class="macro">debug!</span>(
+                        <span class="string">"{}/{} responses received"</span>,
+                        <span class="self">self</span>.reqs_complete, reqs_count
+                    );
+
+                    <span class="kw">if </span><span class="self">self</span>.reqs_complete == reqs_count {
+                        <span class="macro">info!</span>(
+                            <span class="string">"{}/{} response(s) received in {:?}, closing..."</span>,
+                            <span class="self">self</span>.reqs_complete,
+                            reqs_count,
+                            req_start.elapsed()
+                        );
+
+                        <span class="kw">match </span>conn.close(<span class="bool-val">true</span>, <span class="number">0x00</span>, <span class="string">b"kthxbye"</span>) {
+                            <span class="comment">// Already closed.
+                            </span><span class="prelude-val">Ok</span>(<span class="kw">_</span>) | <span class="prelude-val">Err</span>(quiche::Error::Done) =&gt; (),
+
+                            <span class="prelude-val">Err</span>(e) =&gt; <span class="macro">panic!</span>(<span class="string">"error closing conn: {:?}"</span>, e),
+                        }
+
+                        <span class="kw">break</span>;
+                    }
+                }
+            }
+        }
+    }
+
+    <span class="kw">fn </span>report_incomplete(<span class="kw-2">&amp;</span><span class="self">self</span>, start: <span class="kw-2">&amp;</span>std::time::Instant) -&gt; bool {
+        <span class="kw">if </span><span class="self">self</span>.reqs_complete != <span class="self">self</span>.reqs.len() {
+            <span class="macro">error!</span>(
+                <span class="string">"connection timed out after {:?} and only completed {}/{} requests"</span>,
+                start.elapsed(),
+                <span class="self">self</span>.reqs_complete,
+                <span class="self">self</span>.reqs.len()
+            );
+
+            <span class="kw">return </span><span class="bool-val">true</span>;
+        }
+
+        <span class="bool-val">false
+    </span>}
+
+    <span class="kw">fn </span>handle_requests(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span>quiche::Connection,
+        partial_requests: <span class="kw-2">&amp;mut </span>HashMap&lt;u64, PartialRequest&gt;,
+        partial_responses: <span class="kw-2">&amp;mut </span>HashMap&lt;u64, PartialResponse&gt;, root: <span class="kw-2">&amp;</span>str,
+        index: <span class="kw-2">&amp;</span>str, buf: <span class="kw-2">&amp;mut </span>[u8],
+    ) -&gt; quiche::h3::Result&lt;()&gt; {
+        <span class="comment">// Process all readable streams.
+        </span><span class="kw">for </span>s <span class="kw">in </span>conn.readable() {
+            <span class="kw">while let </span><span class="prelude-val">Ok</span>((read, fin)) = conn.stream_recv(s, buf) {
+                <span class="macro">trace!</span>(<span class="string">"{} received {} bytes"</span>, conn.trace_id(), read);
+
+                <span class="kw">let </span>stream_buf = <span class="kw-2">&amp;</span>buf[..read];
+
+                <span class="macro">trace!</span>(
+                    <span class="string">"{} stream {} has {} bytes (fin? {})"</span>,
+                    conn.trace_id(),
+                    s,
+                    stream_buf.len(),
+                    fin
+                );
+
+                <span class="kw">let </span>stream_buf =
+                    <span class="kw">if let </span><span class="prelude-val">Some</span>(partial) = partial_requests.get_mut(<span class="kw-2">&amp;</span>s) {
+                        partial.req.extend_from_slice(stream_buf);
+
+                        <span class="kw">if </span>!partial.req.ends_with(<span class="string">b"\r\n"</span>) {
+                            <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+                        }
+
+                        <span class="kw-2">&amp;</span>partial.req
+                    } <span class="kw">else </span>{
+                        <span class="kw">if </span>!stream_buf.ends_with(<span class="string">b"\r\n"</span>) {
+                            <span class="kw">let </span>request = PartialRequest {
+                                req: stream_buf.to_vec(),
+                            };
+
+                            partial_requests.insert(s, request);
+                            <span class="kw">return </span><span class="prelude-val">Ok</span>(());
+                        }
+
+                        stream_buf
+                    };
+
+                <span class="kw">if </span>stream_buf.starts_with(<span class="string">b"GET "</span>) {
+                    <span class="kw">let </span>uri = <span class="kw-2">&amp;</span>stream_buf[<span class="number">4</span>..stream_buf.len() - <span class="number">2</span>];
+                    <span class="kw">let </span>uri = String::from_utf8(uri.to_vec()).unwrap();
+                    <span class="kw">let </span>uri = String::from(uri.lines().next().unwrap());
+                    <span class="kw">let </span>uri = path::Path::new(<span class="kw-2">&amp;</span>uri);
+                    <span class="kw">let </span><span class="kw-2">mut </span>path = path::PathBuf::from(root);
+
+                    partial_requests.remove(<span class="kw-2">&amp;</span>s);
+
+                    <span class="kw">for </span>c <span class="kw">in </span>uri.components() {
+                        <span class="kw">if let </span>path::Component::Normal(v) = c {
+                            path.push(v)
+                        }
+                    }
+
+                    path = autoindex(path, index);
+
+                    <span class="macro">info!</span>(
+                        <span class="string">"{} got GET request for {:?} on stream {}"</span>,
+                        conn.trace_id(),
+                        path,
+                        s
+                    );
+
+                    <span class="kw">let </span>body = std::fs::read(path.as_path())
+                        .unwrap_or_else(|<span class="kw">_</span>| <span class="string">b"Not Found!\r\n"</span>.to_vec());
+
+                    <span class="macro">info!</span>(
+                        <span class="string">"{} sending response of size {} on stream {}"</span>,
+                        conn.trace_id(),
+                        body.len(),
+                        s
+                    );
+
+                    <span class="kw">let </span>written = <span class="kw">match </span>conn.stream_send(s, <span class="kw-2">&amp;</span>body, <span class="bool-val">true</span>) {
+                        <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                        <span class="prelude-val">Err</span>(quiche::Error::Done) =&gt; <span class="number">0</span>,
+
+                        <span class="prelude-val">Err</span>(e) =&gt; {
+                            <span class="macro">error!</span>(
+                                <span class="string">"{} stream send failed {:?}"</span>,
+                                conn.trace_id(),
+                                e
+                            );
+                            <span class="kw">return </span><span class="prelude-val">Err</span>(From::from(e));
+                        },
+                    };
+
+                    <span class="kw">if </span>written &lt; body.len() {
+                        <span class="kw">let </span>response = PartialResponse {
+                            headers: <span class="prelude-val">None</span>,
+                            priority: <span class="prelude-val">None</span>,
+                            body,
+                            written,
+                        };
+
+                        partial_responses.insert(s, response);
+                    }
+                }
+            }
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="kw">fn </span>handle_writable(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span>quiche::Connection,
+        partial_responses: <span class="kw-2">&amp;mut </span>HashMap&lt;u64, PartialResponse&gt;, stream_id: u64,
+    ) {
+        <span class="macro">trace!</span>(<span class="string">"{} stream {} is writable"</span>, conn.trace_id(), stream_id);
+
+        <span class="kw">if </span>!partial_responses.contains_key(<span class="kw-2">&amp;</span>stream_id) {
+            <span class="kw">return</span>;
+        }
+
+        <span class="kw">let </span>resp = partial_responses.get_mut(<span class="kw-2">&amp;</span>stream_id).unwrap();
+        <span class="kw">let </span>body = <span class="kw-2">&amp;</span>resp.body[resp.written..];
+
+        <span class="kw">let </span>written = <span class="kw">match </span>conn.stream_send(stream_id, body, <span class="bool-val">true</span>) {
+            <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+            <span class="prelude-val">Err</span>(quiche::Error::Done) =&gt; <span class="number">0</span>,
+
+            <span class="prelude-val">Err</span>(e) =&gt; {
+                partial_responses.remove(<span class="kw-2">&amp;</span>stream_id);
+
+                <span class="macro">error!</span>(<span class="string">"{} stream send failed {:?}"</span>, conn.trace_id(), e);
+                <span class="kw">return</span>;
+            },
+        };
+
+        resp.written += written;
+
+        <span class="kw">if </span>resp.written == resp.body.len() {
+            partial_responses.remove(<span class="kw-2">&amp;</span>stream_id);
+        }
+    }
+}
+
+<span class="kw">pub struct </span>Http3DgramSender {
+    dgram_count: u64,
+    <span class="kw">pub </span>dgram_content: String,
+    <span class="kw">pub </span>flow_id: u64,
+    <span class="kw">pub </span>dgrams_sent: u64,
+}
+
+<span class="kw">impl </span>Http3DgramSender {
+    <span class="kw">pub fn </span>new(dgram_count: u64, dgram_content: String, flow_id: u64) -&gt; <span class="self">Self </span>{
+        <span class="self">Self </span>{
+            dgram_count,
+            dgram_content,
+            flow_id,
+            dgrams_sent: <span class="number">0</span>,
+        }
+    }
+}
+
+<span class="kw">fn </span>make_h3_config(
+    max_field_section_size: <span class="prelude-ty">Option</span>&lt;u64&gt;, qpack_max_table_capacity: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+    qpack_blocked_streams: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+) -&gt; quiche::h3::Config {
+    <span class="kw">let </span><span class="kw-2">mut </span>config = quiche::h3::Config::new().unwrap();
+
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(v) = max_field_section_size {
+        config.set_max_field_section_size(v);
+    }
+
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(v) = qpack_max_table_capacity {
+        <span class="comment">// quiche doesn't support dynamic QPACK, so clamp to 0 for now.
+        </span>config.set_qpack_max_table_capacity(v.clamp(<span class="number">0</span>, <span class="number">0</span>));
+    }
+
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(v) = qpack_blocked_streams {
+        <span class="comment">// quiche doesn't support dynamic QPACK, so clamp to 0 for now.
+        </span>config.set_qpack_blocked_streams(v.clamp(<span class="number">0</span>, <span class="number">0</span>));
+    }
+
+    config
+}
+
+<span class="kw">pub struct </span>Http3Conn {
+    h3_conn: quiche::h3::Connection,
+    reqs_hdrs_sent: usize,
+    reqs_complete: usize,
+    largest_processed_request: u64,
+    reqs: Vec&lt;Http3Request&gt;,
+    body: <span class="prelude-ty">Option</span>&lt;Vec&lt;u8&gt;&gt;,
+    sent_body_bytes: HashMap&lt;u64, usize&gt;,
+    dump_json: bool,
+    dgram_sender: <span class="prelude-ty">Option</span>&lt;Http3DgramSender&gt;,
+    output_sink: Rc&lt;RefCell&lt;<span class="kw">dyn </span>FnMut(String)&gt;&gt;,
+}
+
+<span class="kw">impl </span>Http3Conn {
+    <span class="attr">#[allow(clippy::too_many_arguments)]
+    </span><span class="kw">pub fn </span>with_urls(
+        conn: <span class="kw-2">&amp;mut </span>quiche::Connection, urls: <span class="kw-2">&amp;</span>[url::Url], reqs_cardinal: u64,
+        req_headers: <span class="kw-2">&amp;</span>[String], body: <span class="kw-2">&amp;</span><span class="prelude-ty">Option</span>&lt;Vec&lt;u8&gt;&gt;, method: <span class="kw-2">&amp;</span>str,
+        send_priority_update: bool, max_field_section_size: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+        qpack_max_table_capacity: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+        qpack_blocked_streams: <span class="prelude-ty">Option</span>&lt;u64&gt;, dump_json: <span class="prelude-ty">Option</span>&lt;usize&gt;,
+        dgram_sender: <span class="prelude-ty">Option</span>&lt;Http3DgramSender&gt;,
+        output_sink: Rc&lt;RefCell&lt;<span class="kw">dyn </span>FnMut(String)&gt;&gt;,
+    ) -&gt; Box&lt;<span class="kw">dyn </span>HttpConn&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>reqs = Vec::new();
+        <span class="kw">for </span>url <span class="kw">in </span>urls {
+            <span class="kw">for </span>i <span class="kw">in </span><span class="number">1</span>..=reqs_cardinal {
+                <span class="kw">let </span>authority = <span class="kw">match </span>url.port() {
+                    <span class="prelude-val">Some</span>(port) =&gt; <span class="macro">format!</span>(<span class="string">"{}:{}"</span>, url.host_str().unwrap(), port),
+
+                    <span class="prelude-val">None </span>=&gt; url.host_str().unwrap().to_string(),
+                };
+
+                <span class="kw">let </span><span class="kw-2">mut </span>hdrs = <span class="macro">vec!</span>[
+                    quiche::h3::Header::new(<span class="string">b":method"</span>, method.as_bytes()),
+                    quiche::h3::Header::new(<span class="string">b":scheme"</span>, url.scheme().as_bytes()),
+                    quiche::h3::Header::new(<span class="string">b":authority"</span>, authority.as_bytes()),
+                    quiche::h3::Header::new(
+                        <span class="string">b":path"</span>,
+                        url[url::Position::BeforePath..].as_bytes(),
+                    ),
+                    quiche::h3::Header::new(<span class="string">b"user-agent"</span>, <span class="string">b"quiche"</span>),
+                ];
+
+                <span class="kw">let </span>priority = <span class="kw">if </span>send_priority_update {
+                    priority_from_query_string(url)
+                } <span class="kw">else </span>{
+                    <span class="prelude-val">None
+                </span>};
+
+                <span class="comment">// Add custom headers to the request.
+                </span><span class="kw">for </span>header <span class="kw">in </span>req_headers {
+                    <span class="kw">let </span>header_split: Vec&lt;<span class="kw-2">&amp;</span>str&gt; =
+                        header.splitn(<span class="number">2</span>, <span class="string">": "</span>).collect();
+
+                    <span class="kw">if </span>header_split.len() != <span class="number">2 </span>{
+                        <span class="macro">panic!</span>(<span class="string">"malformed header provided - \"{}\""</span>, header);
+                    }
+
+                    hdrs.push(quiche::h3::Header::new(
+                        header_split[<span class="number">0</span>].as_bytes(),
+                        header_split[<span class="number">1</span>].as_bytes(),
+                    ));
+                }
+
+                <span class="kw">if </span>body.is_some() {
+                    hdrs.push(quiche::h3::Header::new(
+                        <span class="string">b"content-length"</span>,
+                        body.as_ref().unwrap().len().to_string().as_bytes(),
+                    ));
+                }
+
+                reqs.push(Http3Request {
+                    url: url.clone(),
+                    cardinal: i,
+                    hdrs,
+                    priority,
+                    response_hdrs: Vec::new(),
+                    response_body: Vec::new(),
+                    response_body_max: dump_json.unwrap_or_default(),
+                    stream_id: <span class="prelude-val">None</span>,
+                    response_writer: <span class="prelude-val">None</span>,
+                });
+            }
+        }
+
+        <span class="kw">let </span>h_conn = Http3Conn {
+            h3_conn: quiche::h3::Connection::with_transport(
+                conn,
+                <span class="kw-2">&amp;</span>make_h3_config(
+                    max_field_section_size,
+                    qpack_max_table_capacity,
+                    qpack_blocked_streams,
+                ),
+            ).expect(<span class="string">"Unable to create HTTP/3 connection, check the server's uni stream limit and window size"</span>),
+            reqs_hdrs_sent: <span class="number">0</span>,
+            reqs_complete: <span class="number">0</span>,
+            largest_processed_request: <span class="number">0</span>,
+            reqs,
+            body: body.as_ref().map(|b| b.to_vec()),
+            sent_body_bytes: HashMap::new(),
+            dump_json: dump_json.is_some(),
+            dgram_sender,
+            output_sink,
+        };
+
+        Box::new(h_conn)
+    }
+
+    <span class="kw">pub fn </span>with_conn(
+        conn: <span class="kw-2">&amp;mut </span>quiche::Connection, max_field_section_size: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+        qpack_max_table_capacity: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+        qpack_blocked_streams: <span class="prelude-ty">Option</span>&lt;u64&gt;,
+        dgram_sender: <span class="prelude-ty">Option</span>&lt;Http3DgramSender&gt;,
+        output_sink: Rc&lt;RefCell&lt;<span class="kw">dyn </span>FnMut(String)&gt;&gt;,
+    ) -&gt; std::result::Result&lt;Box&lt;<span class="kw">dyn </span>HttpConn&gt;, String&gt; {
+        <span class="kw">let </span>h3_conn = quiche::h3::Connection::with_transport(
+            conn,
+            <span class="kw-2">&amp;</span>make_h3_config(
+                max_field_section_size,
+                qpack_max_table_capacity,
+                qpack_blocked_streams,
+            ),
+        ).map_err(|<span class="kw">_</span>| <span class="string">"Unable to create HTTP/3 connection, check the client's uni stream limit and window size"</span>)<span class="question-mark">?</span>;
+
+        <span class="kw">let </span>h_conn = Http3Conn {
+            h3_conn,
+            reqs_hdrs_sent: <span class="number">0</span>,
+            reqs_complete: <span class="number">0</span>,
+            largest_processed_request: <span class="number">0</span>,
+            reqs: Vec::new(),
+            body: <span class="prelude-val">None</span>,
+            sent_body_bytes: HashMap::new(),
+            dump_json: <span class="bool-val">false</span>,
+            dgram_sender,
+            output_sink,
+        };
+
+        <span class="prelude-val">Ok</span>(Box::new(h_conn))
+    }
+
+    <span class="doccomment">/// Builds an HTTP/3 response given a request.
+    </span><span class="kw">fn </span>build_h3_response(
+        root: <span class="kw-2">&amp;</span>str, index: <span class="kw-2">&amp;</span>str, request: <span class="kw-2">&amp;</span>[quiche::h3::Header],
+    ) -&gt; Http3ResponseBuilderResult {
+        <span class="kw">let </span><span class="kw-2">mut </span>file_path = path::PathBuf::from(root);
+        <span class="kw">let </span><span class="kw-2">mut </span>scheme = <span class="prelude-val">None</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>authority = <span class="prelude-val">None</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>host = <span class="prelude-val">None</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>path = <span class="prelude-val">None</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>method = <span class="prelude-val">None</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>priority = <span class="macro">vec!</span>[];
+
+        <span class="comment">// Parse some of the request headers.
+        </span><span class="kw">for </span>hdr <span class="kw">in </span>request {
+            <span class="kw">match </span>hdr.name() {
+                <span class="string">b":scheme" </span>=&gt; {
+                    <span class="kw">if </span>scheme.is_some() {
+                        <span class="kw">return </span><span class="prelude-val">Err</span>((
+                            H3_MESSAGE_ERROR,
+                            <span class="string">":scheme cannot be duplicated"</span>.to_string(),
+                        ));
+                    }
+
+                    scheme = <span class="prelude-val">Some</span>(std::str::from_utf8(hdr.value()).unwrap());
+                },
+
+                <span class="string">b":authority" </span>=&gt; {
+                    <span class="kw">if </span>authority.is_some() {
+                        <span class="kw">return </span><span class="prelude-val">Err</span>((
+                            H3_MESSAGE_ERROR,
+                            <span class="string">":authority cannot be duplicated"</span>.to_string(),
+                        ));
+                    }
+
+                    authority = <span class="prelude-val">Some</span>(std::str::from_utf8(hdr.value()).unwrap());
+                },
+
+                <span class="string">b":path" </span>=&gt; {
+                    <span class="kw">if </span>path.is_some() {
+                        <span class="kw">return </span><span class="prelude-val">Err</span>((
+                            H3_MESSAGE_ERROR,
+                            <span class="string">":path cannot be duplicated"</span>.to_string(),
+                        ));
+                    }
+
+                    path = <span class="prelude-val">Some</span>(std::str::from_utf8(hdr.value()).unwrap())
+                },
+
+                <span class="string">b":method" </span>=&gt; {
+                    <span class="kw">if </span>method.is_some() {
+                        <span class="kw">return </span><span class="prelude-val">Err</span>((
+                            H3_MESSAGE_ERROR,
+                            <span class="string">":method cannot be duplicated"</span>.to_string(),
+                        ));
+                    }
+
+                    method = <span class="prelude-val">Some</span>(std::str::from_utf8(hdr.value()).unwrap())
+                },
+
+                <span class="string">b":protocol" </span>=&gt; {
+                    <span class="kw">return </span><span class="prelude-val">Err</span>((
+                        H3_MESSAGE_ERROR,
+                        <span class="string">":protocol not supported"</span>.to_string(),
+                    ));
+                },
+
+                <span class="string">b"priority" </span>=&gt; priority = hdr.value().to_vec(),
+
+                <span class="string">b"host" </span>=&gt; host = <span class="prelude-val">Some</span>(std::str::from_utf8(hdr.value()).unwrap()),
+
+                <span class="kw">_ </span>=&gt; (),
+            }
+        }
+
+        <span class="kw">let </span>decided_method = <span class="kw">match </span>method {
+            <span class="prelude-val">Some</span>(method) =&gt; {
+                <span class="kw">match </span>method {
+                    <span class="string">"" </span>=&gt;
+                        <span class="kw">return </span><span class="prelude-val">Err</span>((
+                            H3_MESSAGE_ERROR,
+                            <span class="string">":method value cannot be empty"</span>.to_string(),
+                        )),
+
+                    <span class="string">"CONNECT" </span>=&gt; {
+                        <span class="comment">// not allowed
+                        </span><span class="kw">let </span>headers = <span class="macro">vec!</span>[
+                            quiche::h3::Header::new(
+                                <span class="string">b":status"</span>,
+                                <span class="string">"405"</span>.to_string().as_bytes(),
+                            ),
+                            quiche::h3::Header::new(<span class="string">b"server"</span>, <span class="string">b"quiche"</span>),
+                        ];
+
+                        <span class="kw">return </span><span class="prelude-val">Ok</span>((headers, <span class="string">b""</span>.to_vec(), Default::default()));
+                    },
+
+                    <span class="kw">_ </span>=&gt; method,
+                }
+            },
+
+            <span class="prelude-val">None </span>=&gt;
+                <span class="kw">return </span><span class="prelude-val">Err</span>((
+                    H3_MESSAGE_ERROR,
+                    <span class="string">":method cannot be missing"</span>.to_string(),
+                )),
+        };
+
+        <span class="kw">let </span>decided_scheme = <span class="kw">match </span>scheme {
+            <span class="prelude-val">Some</span>(scheme) =&gt; {
+                <span class="kw">if </span>scheme != <span class="string">"http" </span>&amp;&amp; scheme != <span class="string">"https" </span>{
+                    <span class="kw">let </span>headers = <span class="macro">vec!</span>[
+                        quiche::h3::Header::new(
+                            <span class="string">b":status"</span>,
+                            <span class="string">"400"</span>.to_string().as_bytes(),
+                        ),
+                        quiche::h3::Header::new(<span class="string">b"server"</span>, <span class="string">b"quiche"</span>),
+                    ];
+
+                    <span class="kw">return </span><span class="prelude-val">Ok</span>((
+                        headers,
+                        <span class="string">b"Invalid scheme"</span>.to_vec(),
+                        Default::default(),
+                    ));
+                }
+
+                scheme
+            },
+
+            <span class="prelude-val">None </span>=&gt;
+                <span class="kw">return </span><span class="prelude-val">Err</span>((
+                    H3_MESSAGE_ERROR,
+                    <span class="string">":scheme cannot be missing"</span>.to_string(),
+                )),
+        };
+
+        <span class="kw">let </span>decided_host = <span class="kw">match </span>(authority, host) {
+            (<span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(<span class="string">""</span>)) =&gt;
+                <span class="kw">return </span><span class="prelude-val">Err</span>((
+                    H3_MESSAGE_ERROR,
+                    <span class="string">"host value cannot be empty"</span>.to_string(),
+                )),
+
+            (<span class="prelude-val">Some</span>(<span class="string">""</span>), <span class="prelude-val">None</span>) =&gt;
+                <span class="kw">return </span><span class="prelude-val">Err</span>((
+                    H3_MESSAGE_ERROR,
+                    <span class="string">":authority value cannot be empty"</span>.to_string(),
+                )),
+
+            (<span class="prelude-val">Some</span>(<span class="string">""</span>), <span class="prelude-val">Some</span>(<span class="string">""</span>)) =&gt;
+                <span class="kw">return </span><span class="prelude-val">Err</span>((
+                    H3_MESSAGE_ERROR,
+                    <span class="string">":authority and host value cannot be empty"</span>.to_string(),
+                )),
+
+            (<span class="prelude-val">None</span>, <span class="prelude-val">None</span>) =&gt;
+                <span class="kw">return </span><span class="prelude-val">Err</span>((
+                    H3_MESSAGE_ERROR,
+                    <span class="string">":authority and host missing"</span>.to_string(),
+                )),
+
+            <span class="comment">// Any other combo, prefer :authority
+            </span>(..) =&gt; authority.unwrap(),
+        };
+
+        <span class="kw">let </span>decided_path = <span class="kw">match </span>path {
+            <span class="prelude-val">Some</span>(<span class="string">""</span>) =&gt;
+                <span class="kw">return </span><span class="prelude-val">Err</span>((
+                    H3_MESSAGE_ERROR,
+                    <span class="string">":path value cannot be empty"</span>.to_string(),
+                )),
+
+            <span class="prelude-val">None </span>=&gt;
+                <span class="kw">return </span><span class="prelude-val">Err</span>((
+                    H3_MESSAGE_ERROR,
+                    <span class="string">":path cannot be missing"</span>.to_string(),
+                )),
+
+            <span class="prelude-val">Some</span>(path) =&gt; path,
+        };
+
+        <span class="kw">let </span>url = <span class="macro">format!</span>(<span class="string">"{decided_scheme}://{decided_host}{decided_path}"</span>);
+        <span class="kw">let </span>url = url::Url::parse(<span class="kw-2">&amp;</span>url).unwrap();
+
+        <span class="kw">let </span>pathbuf = path::PathBuf::from(url.path());
+        <span class="kw">let </span>pathbuf = autoindex(pathbuf, index);
+
+        <span class="comment">// Priority query string takes precedence over the header.
+        // So replace the header with one built here.
+        </span><span class="kw">let </span>query_priority = priority_field_value_from_query_string(<span class="kw-2">&amp;</span>url);
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(p) = query_priority {
+            priority = p.as_bytes().to_vec();
+        }
+
+        <span class="kw">let </span>(status, body) = <span class="kw">match </span>decided_method {
+            <span class="string">"GET" </span>=&gt; {
+                <span class="kw">for </span>c <span class="kw">in </span>pathbuf.components() {
+                    <span class="kw">if let </span>path::Component::Normal(v) = c {
+                        file_path.push(v)
+                    }
+                }
+
+                <span class="kw">match </span>std::fs::read(file_path.as_path()) {
+                    <span class="prelude-val">Ok</span>(data) =&gt; (<span class="number">200</span>, data),
+
+                    <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; (<span class="number">404</span>, <span class="string">b"Not Found!"</span>.to_vec()),
+                }
+            },
+
+            <span class="kw">_ </span>=&gt; (<span class="number">405</span>, Vec::new()),
+        };
+
+        <span class="kw">let </span>headers = <span class="macro">vec!</span>[
+            quiche::h3::Header::new(<span class="string">b":status"</span>, status.to_string().as_bytes()),
+            quiche::h3::Header::new(<span class="string">b"server"</span>, <span class="string">b"quiche"</span>),
+            quiche::h3::Header::new(
+                <span class="string">b"content-length"</span>,
+                body.len().to_string().as_bytes(),
+            ),
+        ];
+
+        <span class="prelude-val">Ok</span>((headers, body, priority))
+    }
+}
+
+<span class="kw">impl </span>HttpConn <span class="kw">for </span>Http3Conn {
+    <span class="kw">fn </span>send_requests(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span>quiche::Connection, target_path: <span class="kw-2">&amp;</span><span class="prelude-ty">Option</span>&lt;String&gt;,
+    ) {
+        <span class="kw">let </span><span class="kw-2">mut </span>reqs_done = <span class="number">0</span>;
+
+        <span class="comment">// First send headers.
+        </span><span class="kw">for </span>req <span class="kw">in </span><span class="self">self</span>.reqs.iter_mut().skip(<span class="self">self</span>.reqs_hdrs_sent) {
+            <span class="kw">let </span>s = <span class="kw">match </span><span class="self">self</span>.h3_conn.send_request(
+                conn,
+                <span class="kw-2">&amp;</span>req.hdrs,
+                <span class="self">self</span>.body.is_none(),
+            ) {
+                <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                <span class="prelude-val">Err</span>(quiche::h3::Error::TransportError(
+                    quiche::Error::StreamLimit,
+                )) =&gt; {
+                    <span class="macro">debug!</span>(<span class="string">"not enough stream credits, retry later..."</span>);
+                    <span class="kw">break</span>;
+                },
+
+                <span class="prelude-val">Err</span>(quiche::h3::Error::StreamBlocked) =&gt; {
+                    <span class="macro">debug!</span>(<span class="string">"stream is blocked, retry later..."</span>);
+                    <span class="kw">break</span>;
+                },
+
+                <span class="prelude-val">Err</span>(e) =&gt; {
+                    <span class="macro">error!</span>(<span class="string">"failed to send request {:?}"</span>, e);
+                    <span class="kw">break</span>;
+                },
+            };
+
+            <span class="macro">debug!</span>(<span class="string">"Sent HTTP request {:?}"</span>, <span class="kw-2">&amp;</span>req.hdrs);
+
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(priority) = <span class="kw-2">&amp;</span>req.priority {
+                <span class="comment">// If sending the priority fails, don't try again.
+                </span><span class="self">self</span>.h3_conn
+                    .send_priority_update_for_request(conn, s, priority)
+                    .ok();
+            }
+
+            req.stream_id = <span class="prelude-val">Some</span>(s);
+            req.response_writer =
+                make_resource_writer(<span class="kw-2">&amp;</span>req.url, target_path, req.cardinal);
+            <span class="self">self</span>.sent_body_bytes.insert(s, <span class="number">0</span>);
+
+            reqs_done += <span class="number">1</span>;
+        }
+        <span class="self">self</span>.reqs_hdrs_sent += reqs_done;
+
+        <span class="comment">// Then send any remaining body.
+        </span><span class="kw">if let </span><span class="prelude-val">Some</span>(body) = <span class="kw-2">&amp;</span><span class="self">self</span>.body {
+            <span class="kw">for </span>(stream_id, sent_bytes) <span class="kw">in </span><span class="self">self</span>.sent_body_bytes.iter_mut() {
+                <span class="kw">if </span><span class="kw-2">*</span>sent_bytes == body.len() {
+                    <span class="kw">continue</span>;
+                }
+
+                <span class="comment">// Always try to send all remaining bytes, so always set fin to
+                // true.
+                </span><span class="kw">let </span>sent = <span class="kw">match </span><span class="self">self</span>.h3_conn.send_body(
+                    conn,
+                    <span class="kw-2">*</span>stream_id,
+                    <span class="kw-2">&amp;</span>body[<span class="kw-2">*</span>sent_bytes..],
+                    <span class="bool-val">true</span>,
+                ) {
+                    <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                    <span class="prelude-val">Err</span>(quiche::h3::Error::Done) =&gt; <span class="number">0</span>,
+
+                    <span class="prelude-val">Err</span>(e) =&gt; {
+                        <span class="macro">error!</span>(<span class="string">"failed to send request body {:?}"</span>, e);
+                        <span class="kw">continue</span>;
+                    },
+                };
+
+                <span class="kw-2">*</span>sent_bytes += sent;
+            }
+        }
+
+        <span class="comment">// And finally any DATAGRAMS.
+        </span><span class="kw">if let </span><span class="prelude-val">Some</span>(ds) = <span class="self">self</span>.dgram_sender.as_mut() {
+            <span class="kw">let </span><span class="kw-2">mut </span>dgrams_done = <span class="number">0</span>;
+
+            <span class="kw">for _ in </span>ds.dgrams_sent..ds.dgram_count {
+                <span class="kw">match </span>send_h3_dgram(conn, ds.flow_id, ds.dgram_content.as_bytes())
+                {
+                    <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                    <span class="prelude-val">Err</span>(e) =&gt; {
+                        <span class="macro">error!</span>(<span class="string">"failed to send dgram {:?}"</span>, e);
+                        <span class="kw">break</span>;
+                    },
+                }
+
+                dgrams_done += <span class="number">1</span>;
+            }
+
+            ds.dgrams_sent += dgrams_done;
+        }
+    }
+
+    <span class="kw">fn </span>handle_responses(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span>quiche::Connection, buf: <span class="kw-2">&amp;mut </span>[u8],
+        req_start: <span class="kw-2">&amp;</span>std::time::Instant,
+    ) {
+        <span class="kw">loop </span>{
+            <span class="kw">match </span><span class="self">self</span>.h3_conn.poll(conn) {
+                <span class="prelude-val">Ok</span>((stream_id, quiche::h3::Event::Headers { list, .. })) =&gt; {
+                    <span class="macro">debug!</span>(
+                        <span class="string">"got response headers {:?} on stream id {}"</span>,
+                        hdrs_to_strings(<span class="kw-2">&amp;</span>list),
+                        stream_id
+                    );
+
+                    <span class="kw">let </span>req = <span class="self">self
+                        </span>.reqs
+                        .iter_mut()
+                        .find(|r| r.stream_id == <span class="prelude-val">Some</span>(stream_id))
+                        .unwrap();
+
+                    req.response_hdrs = list;
+                },
+
+                <span class="prelude-val">Ok</span>((stream_id, quiche::h3::Event::Data)) =&gt; {
+                    <span class="kw">while let </span><span class="prelude-val">Ok</span>(read) =
+                        <span class="self">self</span>.h3_conn.recv_body(conn, stream_id, buf)
+                    {
+                        <span class="macro">debug!</span>(
+                            <span class="string">"got {} bytes of response data on stream {}"</span>,
+                            read, stream_id
+                        );
+
+                        <span class="kw">let </span>req = <span class="self">self
+                            </span>.reqs
+                            .iter_mut()
+                            .find(|r| r.stream_id == <span class="prelude-val">Some</span>(stream_id))
+                            .unwrap();
+
+                        <span class="kw">let </span>len = std::cmp::min(
+                            read,
+                            req.response_body_max - req.response_body.len(),
+                        );
+                        req.response_body.extend_from_slice(<span class="kw-2">&amp;</span>buf[..len]);
+
+                        <span class="kw">match </span><span class="kw-2">&amp;mut </span>req.response_writer {
+                            <span class="prelude-val">Some</span>(rw) =&gt; {
+                                rw.write_all(<span class="kw-2">&amp;</span>buf[..read]).ok();
+                            },
+
+                            <span class="prelude-val">None </span>=&gt;
+                                <span class="kw">if </span>!<span class="self">self</span>.dump_json {
+                                    <span class="self">self</span>.output_sink.borrow_mut()(<span class="kw">unsafe </span>{
+                                        String::from_utf8_unchecked(
+                                            buf[..read].to_vec(),
+                                        )
+                                    });
+                                },
+                        }
+                    }
+                },
+
+                <span class="prelude-val">Ok</span>((_stream_id, quiche::h3::Event::Finished)) =&gt; {
+                    <span class="self">self</span>.reqs_complete += <span class="number">1</span>;
+                    <span class="kw">let </span>reqs_count = <span class="self">self</span>.reqs.len();
+
+                    <span class="macro">debug!</span>(
+                        <span class="string">"{}/{} responses received"</span>,
+                        <span class="self">self</span>.reqs_complete, reqs_count
+                    );
+
+                    <span class="kw">if </span><span class="self">self</span>.reqs_complete == reqs_count {
+                        <span class="macro">info!</span>(
+                            <span class="string">"{}/{} response(s) received in {:?}, closing..."</span>,
+                            <span class="self">self</span>.reqs_complete,
+                            reqs_count,
+                            req_start.elapsed()
+                        );
+
+                        <span class="kw">if </span><span class="self">self</span>.dump_json {
+                            dump_json(
+                                <span class="kw-2">&amp;</span><span class="self">self</span>.reqs,
+                                <span class="kw-2">&amp;mut *</span><span class="self">self</span>.output_sink.borrow_mut(),
+                            );
+                        }
+
+                        <span class="kw">match </span>conn.close(<span class="bool-val">true</span>, <span class="number">0x100</span>, <span class="string">b"kthxbye"</span>) {
+                            <span class="comment">// Already closed.
+                            </span><span class="prelude-val">Ok</span>(<span class="kw">_</span>) | <span class="prelude-val">Err</span>(quiche::Error::Done) =&gt; (),
+
+                            <span class="prelude-val">Err</span>(e) =&gt; <span class="macro">panic!</span>(<span class="string">"error closing conn: {:?}"</span>, e),
+                        }
+
+                        <span class="kw">break</span>;
+                    }
+                },
+
+                <span class="prelude-val">Ok</span>((_stream_id, quiche::h3::Event::Reset(e))) =&gt; {
+                    <span class="macro">error!</span>(<span class="string">"request was reset by peer with {}, closing..."</span>, e);
+
+                    <span class="kw">match </span>conn.close(<span class="bool-val">true</span>, <span class="number">0x100</span>, <span class="string">b"kthxbye"</span>) {
+                        <span class="comment">// Already closed.
+                        </span><span class="prelude-val">Ok</span>(<span class="kw">_</span>) | <span class="prelude-val">Err</span>(quiche::Error::Done) =&gt; (),
+
+                        <span class="prelude-val">Err</span>(e) =&gt; <span class="macro">panic!</span>(<span class="string">"error closing conn: {:?}"</span>, e),
+                    }
+
+                    <span class="kw">break</span>;
+                },
+
+                <span class="prelude-val">Ok</span>((
+                    prioritized_element_id,
+                    quiche::h3::Event::PriorityUpdate,
+                )) =&gt; {
+                    <span class="macro">info!</span>(
+                        <span class="string">"{} PRIORITY_UPDATE triggered for element ID={}"</span>,
+                        conn.trace_id(),
+                        prioritized_element_id
+                    );
+                },
+
+                <span class="prelude-val">Ok</span>((goaway_id, quiche::h3::Event::GoAway)) =&gt; {
+                    <span class="macro">info!</span>(
+                        <span class="string">"{} got GOAWAY with ID {} "</span>,
+                        conn.trace_id(),
+                        goaway_id
+                    );
+                },
+
+                <span class="prelude-val">Err</span>(quiche::h3::Error::Done) =&gt; {
+                    <span class="kw">break</span>;
+                },
+
+                <span class="prelude-val">Err</span>(e) =&gt; {
+                    <span class="macro">error!</span>(<span class="string">"HTTP/3 processing failed: {:?}"</span>, e);
+
+                    <span class="kw">break</span>;
+                },
+            }
+        }
+
+        <span class="comment">// Process datagram-related events.
+        </span><span class="kw">while let </span><span class="prelude-val">Ok</span>(len) = conn.dgram_recv(buf) {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(buf);
+            <span class="kw">if let </span><span class="prelude-val">Ok</span>(flow_id) = b.get_varint() {
+                <span class="macro">info!</span>(
+                    <span class="string">"Received DATAGRAM flow_id={} len={} data={:?}"</span>,
+                    flow_id,
+                    len,
+                    buf[b.off()..len].to_vec()
+                );
+            }
+        }
+    }
+
+    <span class="kw">fn </span>report_incomplete(<span class="kw-2">&amp;</span><span class="self">self</span>, start: <span class="kw-2">&amp;</span>std::time::Instant) -&gt; bool {
+        <span class="kw">if </span><span class="self">self</span>.reqs_complete != <span class="self">self</span>.reqs.len() {
+            <span class="macro">error!</span>(
+                <span class="string">"connection timed out after {:?} and only completed {}/{} requests"</span>,
+                start.elapsed(),
+                <span class="self">self</span>.reqs_complete,
+                <span class="self">self</span>.reqs.len()
+            );
+
+            <span class="kw">if </span><span class="self">self</span>.dump_json {
+                dump_json(<span class="kw-2">&amp;</span><span class="self">self</span>.reqs, <span class="kw-2">&amp;mut *</span><span class="self">self</span>.output_sink.borrow_mut());
+            }
+
+            <span class="kw">return </span><span class="bool-val">true</span>;
+        }
+
+        <span class="bool-val">false
+    </span>}
+
+    <span class="kw">fn </span>handle_requests(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span>quiche::Connection,
+        _partial_requests: <span class="kw-2">&amp;mut </span>HashMap&lt;u64, PartialRequest&gt;,
+        partial_responses: <span class="kw-2">&amp;mut </span>HashMap&lt;u64, PartialResponse&gt;, root: <span class="kw-2">&amp;</span>str,
+        index: <span class="kw-2">&amp;</span>str, buf: <span class="kw-2">&amp;mut </span>[u8],
+    ) -&gt; quiche::h3::Result&lt;()&gt; {
+        <span class="comment">// Process HTTP stream-related events.
+        </span><span class="kw">loop </span>{
+            <span class="kw">match </span><span class="self">self</span>.h3_conn.poll(conn) {
+                <span class="prelude-val">Ok</span>((stream_id, quiche::h3::Event::Headers { list, .. })) =&gt; {
+                    <span class="macro">info!</span>(
+                        <span class="string">"{} got request {:?} on stream id {}"</span>,
+                        conn.trace_id(),
+                        hdrs_to_strings(<span class="kw-2">&amp;</span>list),
+                        stream_id
+                    );
+
+                    <span class="self">self</span>.largest_processed_request =
+                        std::cmp::max(<span class="self">self</span>.largest_processed_request, stream_id);
+
+                    <span class="comment">// We decide the response based on headers alone, so
+                    // stop reading the request stream so that any body
+                    // is ignored and pointless Data events are not
+                    // generated.
+                    </span>conn.stream_shutdown(stream_id, quiche::Shutdown::Read, <span class="number">0</span>)
+                        .unwrap();
+
+                    <span class="kw">let </span>(<span class="kw-2">mut </span>headers, body, <span class="kw-2">mut </span>priority) =
+                        <span class="kw">match </span>Http3Conn::build_h3_response(root, index, <span class="kw-2">&amp;</span>list) {
+                            <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                            <span class="prelude-val">Err</span>((error_code, <span class="kw">_</span>)) =&gt; {
+                                conn.stream_shutdown(
+                                    stream_id,
+                                    quiche::Shutdown::Write,
+                                    error_code,
+                                )
+                                .unwrap();
+                                <span class="kw">continue</span>;
+                            },
+                        };
+
+                    <span class="kw">match </span><span class="self">self</span>.h3_conn.take_last_priority_update(stream_id) {
+                        <span class="prelude-val">Ok</span>(v) =&gt; {
+                            priority = v;
+                        },
+
+                        <span class="prelude-val">Err</span>(quiche::h3::Error::Done) =&gt; (),
+
+                        <span class="prelude-val">Err</span>(e) =&gt; <span class="macro">error!</span>(
+                            <span class="string">"{} error taking PRIORITY_UPDATE {}"</span>,
+                            conn.trace_id(),
+                            e
+                        ),
+                    }
+
+                    <span class="kw">if </span>!priority.is_empty() {
+                        headers.push(quiche::h3::Header::new(
+                            <span class="string">b"priority"</span>,
+                            priority.as_slice(),
+                        ));
+                    }
+
+                    <span class="attr">#[cfg(feature = <span class="string">"sfv"</span>)]
+                    </span><span class="kw">let </span>priority =
+                        <span class="kw">match </span>quiche::h3::Priority::try_from(priority.as_slice())
+                        {
+                            <span class="prelude-val">Ok</span>(v) =&gt; v,
+                            <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; quiche::h3::Priority::default(),
+                        };
+
+                    <span class="attr">#[cfg(not(feature = <span class="string">"sfv"</span>))]
+                    </span><span class="kw">let </span>priority = quiche::h3::Priority::default();
+
+                    <span class="macro">info!</span>(
+                        <span class="string">"{} prioritizing response on stream {} as {:?}"</span>,
+                        conn.trace_id(),
+                        stream_id,
+                        priority
+                    );
+
+                    <span class="kw">match </span><span class="self">self</span>.h3_conn.send_response_with_priority(
+                        conn, stream_id, <span class="kw-2">&amp;</span>headers, <span class="kw-2">&amp;</span>priority, <span class="bool-val">false</span>,
+                    ) {
+                        <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                        <span class="prelude-val">Err</span>(quiche::h3::Error::StreamBlocked) =&gt; {
+                            <span class="kw">let </span>response = PartialResponse {
+                                headers: <span class="prelude-val">Some</span>(headers),
+                                priority: <span class="prelude-val">Some</span>(priority),
+                                body,
+                                written: <span class="number">0</span>,
+                            };
+
+                            partial_responses.insert(stream_id, response);
+                            <span class="kw">continue</span>;
+                        },
+
+                        <span class="prelude-val">Err</span>(e) =&gt; {
+                            <span class="macro">error!</span>(
+                                <span class="string">"{} stream send failed {:?}"</span>,
+                                conn.trace_id(),
+                                e
+                            );
+
+                            <span class="kw">break</span>;
+                        },
+                    }
+
+                    <span class="kw">let </span>response = PartialResponse {
+                        headers: <span class="prelude-val">None</span>,
+                        priority: <span class="prelude-val">None</span>,
+                        body,
+                        written: <span class="number">0</span>,
+                    };
+
+                    partial_responses.insert(stream_id, response);
+                },
+
+                <span class="prelude-val">Ok</span>((stream_id, quiche::h3::Event::Data)) =&gt; {
+                    <span class="macro">info!</span>(
+                        <span class="string">"{} got data on stream id {}"</span>,
+                        conn.trace_id(),
+                        stream_id
+                    );
+                },
+
+                <span class="prelude-val">Ok</span>((_stream_id, quiche::h3::Event::Finished)) =&gt; (),
+
+                <span class="prelude-val">Ok</span>((_stream_id, quiche::h3::Event::Reset { .. })) =&gt; (),
+
+                <span class="prelude-val">Ok</span>((
+                    prioritized_element_id,
+                    quiche::h3::Event::PriorityUpdate,
+                )) =&gt; {
+                    <span class="macro">info!</span>(
+                        <span class="string">"{} PRIORITY_UPDATE triggered for element ID={}"</span>,
+                        conn.trace_id(),
+                        prioritized_element_id
+                    );
+                },
+
+                <span class="prelude-val">Ok</span>((goaway_id, quiche::h3::Event::GoAway)) =&gt; {
+                    <span class="macro">trace!</span>(
+                        <span class="string">"{} got GOAWAY with ID {} "</span>,
+                        conn.trace_id(),
+                        goaway_id
+                    );
+                    <span class="self">self</span>.h3_conn
+                        .send_goaway(conn, <span class="self">self</span>.largest_processed_request)<span class="question-mark">?</span>;
+                },
+
+                <span class="prelude-val">Err</span>(quiche::h3::Error::Done) =&gt; {
+                    <span class="kw">break</span>;
+                },
+
+                <span class="prelude-val">Err</span>(e) =&gt; {
+                    <span class="macro">error!</span>(<span class="string">"{} HTTP/3 error {:?}"</span>, conn.trace_id(), e);
+
+                    <span class="kw">return </span><span class="prelude-val">Err</span>(e);
+                },
+            }
+        }
+
+        <span class="comment">// Process datagram-related events.
+        </span><span class="kw">while let </span><span class="prelude-val">Ok</span>(len) = conn.dgram_recv(buf) {
+            <span class="kw">let </span><span class="kw-2">mut </span>b = octets::Octets::with_slice(buf);
+            <span class="kw">if let </span><span class="prelude-val">Ok</span>(flow_id) = b.get_varint() {
+                <span class="macro">info!</span>(
+                    <span class="string">"Received DATAGRAM flow_id={} len={} data={:?}"</span>,
+                    flow_id,
+                    len,
+                    buf[b.off()..len].to_vec()
+                );
+            }
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(ds) = <span class="self">self</span>.dgram_sender.as_mut() {
+            <span class="kw">let </span><span class="kw-2">mut </span>dgrams_done = <span class="number">0</span>;
+
+            <span class="kw">for _ in </span>ds.dgrams_sent..ds.dgram_count {
+                <span class="kw">match </span>send_h3_dgram(conn, ds.flow_id, ds.dgram_content.as_bytes())
+                {
+                    <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                    <span class="prelude-val">Err</span>(e) =&gt; {
+                        <span class="macro">error!</span>(<span class="string">"failed to send dgram {:?}"</span>, e);
+                        <span class="kw">break</span>;
+                    },
+                }
+
+                dgrams_done += <span class="number">1</span>;
+            }
+
+            ds.dgrams_sent += dgrams_done;
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="kw">fn </span>handle_writable(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>, conn: <span class="kw-2">&amp;mut </span>quiche::Connection,
+        partial_responses: <span class="kw-2">&amp;mut </span>HashMap&lt;u64, PartialResponse&gt;, stream_id: u64,
+    ) {
+        <span class="macro">debug!</span>(<span class="string">"{} stream {} is writable"</span>, conn.trace_id(), stream_id);
+
+        <span class="kw">if </span>!partial_responses.contains_key(<span class="kw-2">&amp;</span>stream_id) {
+            <span class="kw">return</span>;
+        }
+
+        <span class="kw">let </span>resp = partial_responses.get_mut(<span class="kw-2">&amp;</span>stream_id).unwrap();
+
+        <span class="kw">if let </span>(<span class="prelude-val">Some</span>(headers), <span class="prelude-val">Some</span>(priority)) = (<span class="kw-2">&amp;</span>resp.headers, <span class="kw-2">&amp;</span>resp.priority) {
+            <span class="kw">match </span><span class="self">self</span>.h3_conn.send_response_with_priority(
+                conn, stream_id, headers, priority, <span class="bool-val">false</span>,
+            ) {
+                <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; (),
+
+                <span class="prelude-val">Err</span>(quiche::h3::Error::StreamBlocked) =&gt; {
+                    <span class="kw">return</span>;
+                },
+
+                <span class="prelude-val">Err</span>(e) =&gt; {
+                    <span class="macro">error!</span>(<span class="string">"{} stream send failed {:?}"</span>, conn.trace_id(), e);
+                    <span class="kw">return</span>;
+                },
+            }
+        }
+
+        resp.headers = <span class="prelude-val">None</span>;
+        resp.priority = <span class="prelude-val">None</span>;
+
+        <span class="kw">let </span>body = <span class="kw-2">&amp;</span>resp.body[resp.written..];
+
+        <span class="kw">let </span>written = <span class="kw">match </span><span class="self">self</span>.h3_conn.send_body(conn, stream_id, body, <span class="bool-val">true</span>) {
+            <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+            <span class="prelude-val">Err</span>(quiche::h3::Error::Done) =&gt; <span class="number">0</span>,
+
+            <span class="prelude-val">Err</span>(e) =&gt; {
+                partial_responses.remove(<span class="kw-2">&amp;</span>stream_id);
+
+                <span class="macro">error!</span>(<span class="string">"{} stream send failed {:?}"</span>, conn.trace_id(), e);
+                <span class="kw">return</span>;
+            },
+        };
+
+        resp.written += written;
+
+        <span class="kw">if </span>resp.written == resp.body.len() {
+            partial_responses.remove(<span class="kw-2">&amp;</span>stream_id);
+        }
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche_apps/lib.rs.html b/src/quiche_apps/lib.rs.html
new file mode 100644
index 0000000..07374ea
--- /dev/null
+++ b/src/quiche_apps/lib.rs.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `apps/src/lib.rs`."><title>lib.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2020, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="attr">#[macro_use]
+</span><span class="kw">extern crate </span>log;
+
+<span class="kw">pub mod </span>args;
+<span class="kw">pub mod </span>client;
+<span class="kw">pub mod </span>common;
+<span class="kw">pub mod </span>sendto;
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche_apps/sendto.rs.html b/src/quiche_apps/sendto.rs.html
new file mode 100644
index 0000000..4a8df78
--- /dev/null
+++ b/src/quiche_apps/sendto.rs.html
@@ -0,0 +1,297 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `apps/src/sendto.rs`."><title>sendto.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_apps" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_apps/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2021, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span>std::cmp;
+
+<span class="kw">use </span>std::io;
+
+<span class="doccomment">/// For Linux, try to detect GSO is available.
+</span><span class="attr">#[cfg(target_os = <span class="string">"linux"</span>)]
+</span><span class="kw">pub fn </span>detect_gso(socket: <span class="kw-2">&amp;</span>mio::net::UdpSocket, segment_size: usize) -&gt; bool {
+    <span class="kw">use </span>nix::sys::socket::setsockopt;
+    <span class="kw">use </span>nix::sys::socket::sockopt::UdpGsoSegment;
+    <span class="kw">use </span>std::os::unix::io::AsRawFd;
+
+    <span class="comment">// mio::net::UdpSocket doesn't implement AsFd (yet?).
+    </span><span class="kw">let </span>fd = <span class="kw">unsafe </span>{ std::os::fd::BorrowedFd::borrow_raw(socket.as_raw_fd()) };
+
+    setsockopt(<span class="kw-2">&amp;</span>fd, UdpGsoSegment, <span class="kw-2">&amp;</span>(segment_size <span class="kw">as </span>i32)).is_ok()
+}
+
+<span class="doccomment">/// For non-Linux, there is no GSO support.
+</span><span class="attr">#[cfg(not(target_os = <span class="string">"linux"</span>))]
+</span><span class="kw">pub fn </span>detect_gso(_socket: <span class="kw-2">&amp;</span>mio::net::UdpSocket, _segment_size: usize) -&gt; bool {
+    <span class="bool-val">false
+</span>}
+
+<span class="doccomment">/// Send packets using sendmsg() with GSO.
+</span><span class="attr">#[cfg(target_os = <span class="string">"linux"</span>)]
+</span><span class="kw">fn </span>send_to_gso_pacing(
+    socket: <span class="kw-2">&amp;</span>mio::net::UdpSocket, buf: <span class="kw-2">&amp;</span>[u8], send_info: <span class="kw-2">&amp;</span>quiche::SendInfo,
+    segment_size: usize,
+) -&gt; io::Result&lt;usize&gt; {
+    <span class="kw">use </span>nix::sys::socket::sendmsg;
+    <span class="kw">use </span>nix::sys::socket::ControlMessage;
+    <span class="kw">use </span>nix::sys::socket::MsgFlags;
+    <span class="kw">use </span>nix::sys::socket::SockaddrStorage;
+    <span class="kw">use </span>std::io::IoSlice;
+    <span class="kw">use </span>std::os::unix::io::AsRawFd;
+
+    <span class="kw">let </span>iov = [IoSlice::new(buf)];
+    <span class="kw">let </span>segment_size = segment_size <span class="kw">as </span>u16;
+    <span class="kw">let </span>dst = SockaddrStorage::from(send_info.to);
+    <span class="kw">let </span>sockfd = socket.as_raw_fd();
+
+    <span class="comment">// GSO option.
+    </span><span class="kw">let </span>cmsg_gso = ControlMessage::UdpGsoSegments(<span class="kw-2">&amp;</span>segment_size);
+
+    <span class="comment">// Pacing option.
+    </span><span class="kw">let </span>send_time = std_time_to_u64(<span class="kw-2">&amp;</span>send_info.at);
+    <span class="kw">let </span>cmsg_txtime = ControlMessage::TxTime(<span class="kw-2">&amp;</span>send_time);
+
+    <span class="kw">match </span>sendmsg(
+        sockfd,
+        <span class="kw-2">&amp;</span>iov,
+        <span class="kw-2">&amp;</span>[cmsg_gso, cmsg_txtime],
+        MsgFlags::empty(),
+        <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>dst),
+    ) {
+        <span class="prelude-val">Ok</span>(v) =&gt; <span class="prelude-val">Ok</span>(v),
+        <span class="prelude-val">Err</span>(e) =&gt; <span class="prelude-val">Err</span>(e.into()),
+    }
+}
+
+<span class="doccomment">/// For non-Linux platforms.
+</span><span class="attr">#[cfg(not(target_os = <span class="string">"linux"</span>))]
+</span><span class="kw">fn </span>send_to_gso_pacing(
+    _socket: <span class="kw-2">&amp;</span>mio::net::UdpSocket, _buf: <span class="kw-2">&amp;</span>[u8], _send_info: <span class="kw-2">&amp;</span>quiche::SendInfo,
+    _segment_size: usize,
+) -&gt; io::Result&lt;usize&gt; {
+    <span class="macro">panic!</span>(<span class="string">"send_to_gso() should not be called on non-linux platforms"</span>);
+}
+
+<span class="doccomment">/// A wrapper function of send_to().
+/// - when GSO and SO_TXTIME enabled, send a packet using send_to_gso().
+/// Otherwise, send packet using socket.send_to().
+</span><span class="kw">pub fn </span>send_to(
+    socket: <span class="kw-2">&amp;</span>mio::net::UdpSocket, buf: <span class="kw-2">&amp;</span>[u8], send_info: <span class="kw-2">&amp;</span>quiche::SendInfo,
+    segment_size: usize, pacing: bool, enable_gso: bool,
+) -&gt; io::Result&lt;usize&gt; {
+    <span class="kw">if </span>pacing &amp;&amp; enable_gso {
+        <span class="kw">match </span>send_to_gso_pacing(socket, buf, send_info, segment_size) {
+            <span class="prelude-val">Ok</span>(v) =&gt; {
+                <span class="kw">return </span><span class="prelude-val">Ok</span>(v);
+            },
+            <span class="prelude-val">Err</span>(e) =&gt; {
+                <span class="kw">return </span><span class="prelude-val">Err</span>(e);
+            },
+        }
+    }
+
+    <span class="kw">let </span><span class="kw-2">mut </span>off = <span class="number">0</span>;
+    <span class="kw">let </span><span class="kw-2">mut </span>left = buf.len();
+    <span class="kw">let </span><span class="kw-2">mut </span>written = <span class="number">0</span>;
+
+    <span class="kw">while </span>left &gt; <span class="number">0 </span>{
+        <span class="kw">let </span>pkt_len = cmp::min(left, segment_size);
+
+        <span class="kw">match </span>socket.send_to(<span class="kw-2">&amp;</span>buf[off..off + pkt_len], send_info.to) {
+            <span class="prelude-val">Ok</span>(v) =&gt; {
+                written += v;
+            },
+            <span class="prelude-val">Err</span>(e) =&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(e),
+        }
+
+        off += pkt_len;
+        left -= pkt_len;
+    }
+
+    <span class="prelude-val">Ok</span>(written)
+}
+
+<span class="attr">#[cfg(target_os = <span class="string">"linux"</span>)]
+</span><span class="kw">fn </span>std_time_to_u64(time: <span class="kw-2">&amp;</span>std::time::Instant) -&gt; u64 {
+    <span class="kw">const </span>NANOS_PER_SEC: u64 = <span class="number">1_000_000_000</span>;
+
+    <span class="kw">const </span>INSTANT_ZERO: std::time::Instant =
+        <span class="kw">unsafe </span>{ std::mem::transmute(std::time::UNIX_EPOCH) };
+
+    <span class="kw">let </span>raw_time = time.duration_since(INSTANT_ZERO);
+
+    <span class="kw">let </span>sec = raw_time.as_secs();
+    <span class="kw">let </span>nsec = raw_time.subsec_nanos();
+
+    sec * NANOS_PER_SEC + nsec <span class="kw">as </span>u64
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche_client/quiche-client.rs.html b/src/quiche_client/quiche-client.rs.html
new file mode 100644
index 0000000..61d4f0e
--- /dev/null
+++ b/src/quiche_client/quiche-client.rs.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `apps/src/bin/quiche-client.rs`."><title>quiche-client.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_client" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_client/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2020, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="kw">use </span>quiche_apps::args::<span class="kw-2">*</span>;
+
+<span class="kw">use </span>quiche_apps::common::<span class="kw-2">*</span>;
+
+<span class="kw">use </span>quiche_apps::client::<span class="kw-2">*</span>;
+
+<span class="kw">fn </span>main() {
+    env_logger::builder().format_timestamp_nanos().init();
+
+    <span class="comment">// Parse CLI parameters.
+    </span><span class="kw">let </span>docopt = docopt::Docopt::new(CLIENT_USAGE).unwrap();
+    <span class="kw">let </span>conn_args = CommonArgs::with_docopt(<span class="kw-2">&amp;</span>docopt);
+    <span class="kw">let </span>args = ClientArgs::with_docopt(<span class="kw-2">&amp;</span>docopt);
+
+    <span class="kw">match </span>connect(args, conn_args, stdout_sink) {
+        <span class="prelude-val">Err</span>(ClientError::HandshakeFail) =&gt; std::process::exit(-<span class="number">1</span>),
+
+        <span class="prelude-val">Err</span>(ClientError::HttpFail) =&gt; std::process::exit(-<span class="number">2</span>),
+
+        <span class="prelude-val">Err</span>(ClientError::Other(e)) =&gt; <span class="macro">panic!</span>(<span class="string">"{}"</span>, e),
+
+        <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; (),
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/quiche_server/quiche-server.rs.html b/src/quiche_server/quiche-server.rs.html
new file mode 100644
index 0000000..99db2bc
--- /dev/null
+++ b/src/quiche_server/quiche-server.rs.html
@@ -0,0 +1,1585 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `apps/src/bin/quiche-server.rs`."><title>quiche-server.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-2c208a72533b4dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="quiche_server" data-themes="" data-resource-suffix="" data-rustdoc-version="1.79.0-nightly (0d8b3346a 2024-04-14)" data-channel="nightly" data-search-js="search-ffac13a0df2b1870.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-e32f0c247825364d.js"></script><script defer src="../../static.files/src-script-e66d777a5a92e9b2.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-c97aec732c613ca4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-09095024cf37855e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="src-sidebar-title"><h2>Files</h2></div></nav><div class="sidebar-resizer"></div><main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../quiche_server/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings">Settings</a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
+<a href="#595" id="595">595</a>
+<a href="#596" id="596">596</a>
+<a href="#597" id="597">597</a>
+<a href="#598" id="598">598</a>
+<a href="#599" id="599">599</a>
+<a href="#600" id="600">600</a>
+<a href="#601" id="601">601</a>
+<a href="#602" id="602">602</a>
+<a href="#603" id="603">603</a>
+<a href="#604" id="604">604</a>
+<a href="#605" id="605">605</a>
+<a href="#606" id="606">606</a>
+<a href="#607" id="607">607</a>
+<a href="#608" id="608">608</a>
+<a href="#609" id="609">609</a>
+<a href="#610" id="610">610</a>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</a>
+<a href="#621" id="621">621</a>
+<a href="#622" id="622">622</a>
+<a href="#623" id="623">623</a>
+<a href="#624" id="624">624</a>
+<a href="#625" id="625">625</a>
+<a href="#626" id="626">626</a>
+<a href="#627" id="627">627</a>
+<a href="#628" id="628">628</a>
+<a href="#629" id="629">629</a>
+<a href="#630" id="630">630</a>
+<a href="#631" id="631">631</a>
+<a href="#632" id="632">632</a>
+<a href="#633" id="633">633</a>
+<a href="#634" id="634">634</a>
+<a href="#635" id="635">635</a>
+<a href="#636" id="636">636</a>
+<a href="#637" id="637">637</a>
+<a href="#638" id="638">638</a>
+<a href="#639" id="639">639</a>
+<a href="#640" id="640">640</a>
+<a href="#641" id="641">641</a>
+<a href="#642" id="642">642</a>
+<a href="#643" id="643">643</a>
+<a href="#644" id="644">644</a>
+<a href="#645" id="645">645</a>
+<a href="#646" id="646">646</a>
+<a href="#647" id="647">647</a>
+<a href="#648" id="648">648</a>
+<a href="#649" id="649">649</a>
+<a href="#650" id="650">650</a>
+<a href="#651" id="651">651</a>
+<a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<a href="#658" id="658">658</a>
+<a href="#659" id="659">659</a>
+<a href="#660" id="660">660</a>
+<a href="#661" id="661">661</a>
+<a href="#662" id="662">662</a>
+<a href="#663" id="663">663</a>
+<a href="#664" id="664">664</a>
+<a href="#665" id="665">665</a>
+<a href="#666" id="666">666</a>
+<a href="#667" id="667">667</a>
+<a href="#668" id="668">668</a>
+<a href="#669" id="669">669</a>
+<a href="#670" id="670">670</a>
+<a href="#671" id="671">671</a>
+<a href="#672" id="672">672</a>
+<a href="#673" id="673">673</a>
+<a href="#674" id="674">674</a>
+<a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</a>
+<a href="#686" id="686">686</a>
+<a href="#687" id="687">687</a>
+<a href="#688" id="688">688</a>
+<a href="#689" id="689">689</a>
+<a href="#690" id="690">690</a>
+<a href="#691" id="691">691</a>
+<a href="#692" id="692">692</a>
+<a href="#693" id="693">693</a>
+<a href="#694" id="694">694</a>
+<a href="#695" id="695">695</a>
+<a href="#696" id="696">696</a>
+<a href="#697" id="697">697</a>
+<a href="#698" id="698">698</a>
+<a href="#699" id="699">699</a>
+<a href="#700" id="700">700</a>
+<a href="#701" id="701">701</a>
+<a href="#702" id="702">702</a>
+<a href="#703" id="703">703</a>
+<a href="#704" id="704">704</a>
+<a href="#705" id="705">705</a>
+<a href="#706" id="706">706</a>
+<a href="#707" id="707">707</a>
+<a href="#708" id="708">708</a>
+<a href="#709" id="709">709</a>
+<a href="#710" id="710">710</a>
+<a href="#711" id="711">711</a>
+<a href="#712" id="712">712</a>
+<a href="#713" id="713">713</a>
+<a href="#714" id="714">714</a>
+<a href="#715" id="715">715</a>
+<a href="#716" id="716">716</a>
+<a href="#717" id="717">717</a>
+<a href="#718" id="718">718</a>
+<a href="#719" id="719">719</a>
+<a href="#720" id="720">720</a>
+<a href="#721" id="721">721</a>
+<a href="#722" id="722">722</a>
+<a href="#723" id="723">723</a>
+<a href="#724" id="724">724</a>
+<a href="#725" id="725">725</a>
+<a href="#726" id="726">726</a>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</a>
+<a href="#734" id="734">734</a>
+<a href="#735" id="735">735</a>
+<a href="#736" id="736">736</a>
+<a href="#737" id="737">737</a>
+<a href="#738" id="738">738</a>
+<a href="#739" id="739">739</a>
+<a href="#740" id="740">740</a>
+<a href="#741" id="741">741</a>
+<a href="#742" id="742">742</a>
+<a href="#743" id="743">743</a>
+<a href="#744" id="744">744</a>
+<a href="#745" id="745">745</a>
+<a href="#746" id="746">746</a>
+<a href="#747" id="747">747</a>
+<a href="#748" id="748">748</a>
+<a href="#749" id="749">749</a>
+<a href="#750" id="750">750</a>
+<a href="#751" id="751">751</a>
+<a href="#752" id="752">752</a>
+<a href="#753" id="753">753</a>
+<a href="#754" id="754">754</a>
+<a href="#755" id="755">755</a>
+<a href="#756" id="756">756</a>
+<a href="#757" id="757">757</a>
+<a href="#758" id="758">758</a>
+<a href="#759" id="759">759</a>
+<a href="#760" id="760">760</a>
+<a href="#761" id="761">761</a>
+<a href="#762" id="762">762</a>
+<a href="#763" id="763">763</a>
+<a href="#764" id="764">764</a>
+<a href="#765" id="765">765</a>
+<a href="#766" id="766">766</a>
+<a href="#767" id="767">767</a>
+<a href="#768" id="768">768</a>
+<a href="#769" id="769">769</a>
+<a href="#770" id="770">770</a>
+<a href="#771" id="771">771</a>
+<a href="#772" id="772">772</a>
+<a href="#773" id="773">773</a>
+<a href="#774" id="774">774</a>
+<a href="#775" id="775">775</a>
+<a href="#776" id="776">776</a>
+<a href="#777" id="777">777</a>
+<a href="#778" id="778">778</a>
+<a href="#779" id="779">779</a>
+<a href="#780" id="780">780</a>
+<a href="#781" id="781">781</a>
+<a href="#782" id="782">782</a>
+<a href="#783" id="783">783</a>
+<a href="#784" id="784">784</a>
+<a href="#785" id="785">785</a>
+<a href="#786" id="786">786</a>
+<a href="#787" id="787">787</a>
+<a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
+<a href="#790" id="790">790</a>
+<a href="#791" id="791">791</a>
+<a href="#792" id="792">792</a>
+</pre></div><pre class="rust"><code><span class="comment">// Copyright (C) 2020, Cloudflare, Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</span><span class="attr">#[macro_use]
+</span><span class="kw">extern crate </span>log;
+
+<span class="kw">use </span>std::io;
+
+<span class="kw">use </span>std::net;
+
+<span class="kw">use </span>std::io::prelude::<span class="kw-2">*</span>;
+
+<span class="kw">use </span>std::collections::HashMap;
+
+<span class="kw">use </span>std::convert::TryFrom;
+
+<span class="kw">use </span>std::rc::Rc;
+
+<span class="kw">use </span>std::cell::RefCell;
+
+<span class="kw">use </span>ring::rand::<span class="kw-2">*</span>;
+
+<span class="kw">use </span>quiche_apps::args::<span class="kw-2">*</span>;
+
+<span class="kw">use </span>quiche_apps::common::<span class="kw-2">*</span>;
+
+<span class="kw">use </span>quiche_apps::sendto::<span class="kw-2">*</span>;
+
+<span class="kw">const </span>MAX_BUF_SIZE: usize = <span class="number">65507</span>;
+
+<span class="kw">const </span>MAX_DATAGRAM_SIZE: usize = <span class="number">1350</span>;
+
+<span class="kw">fn </span>main() {
+    <span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; MAX_BUF_SIZE];
+    <span class="kw">let </span><span class="kw-2">mut </span>out = [<span class="number">0</span>; MAX_BUF_SIZE];
+    <span class="kw">let </span><span class="kw-2">mut </span>pacing = <span class="bool-val">false</span>;
+
+    env_logger::builder().format_timestamp_nanos().init();
+
+    <span class="comment">// Parse CLI parameters.
+    </span><span class="kw">let </span>docopt = docopt::Docopt::new(SERVER_USAGE).unwrap();
+    <span class="kw">let </span>conn_args = CommonArgs::with_docopt(<span class="kw-2">&amp;</span>docopt);
+    <span class="kw">let </span>args = ServerArgs::with_docopt(<span class="kw-2">&amp;</span>docopt);
+
+    <span class="comment">// Setup the event loop.
+    </span><span class="kw">let </span><span class="kw-2">mut </span>poll = mio::Poll::new().unwrap();
+    <span class="kw">let </span><span class="kw-2">mut </span>events = mio::Events::with_capacity(<span class="number">1024</span>);
+
+    <span class="comment">// Create the UDP listening socket, and register it with the event loop.
+    </span><span class="kw">let </span><span class="kw-2">mut </span>socket =
+        mio::net::UdpSocket::bind(args.listen.parse().unwrap()).unwrap();
+
+    <span class="comment">// Set SO_TXTIME socket option on the listening UDP socket for pacing
+    // outgoing packets.
+    </span><span class="kw">if </span>!args.disable_pacing {
+        <span class="kw">match </span>set_txtime_sockopt(<span class="kw-2">&amp;</span>socket) {
+            <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; {
+                pacing = <span class="bool-val">true</span>;
+                <span class="macro">debug!</span>(<span class="string">"successfully set SO_TXTIME socket option"</span>);
+            },
+            <span class="prelude-val">Err</span>(e) =&gt; <span class="macro">debug!</span>(<span class="string">"setsockopt failed {:?}"</span>, e),
+        };
+    }
+
+    <span class="macro">info!</span>(<span class="string">"listening on {:}"</span>, socket.local_addr().unwrap());
+
+    poll.registry()
+        .register(<span class="kw-2">&amp;mut </span>socket, mio::Token(<span class="number">0</span>), mio::Interest::READABLE)
+        .unwrap();
+
+    <span class="kw">let </span>max_datagram_size = MAX_DATAGRAM_SIZE;
+    <span class="kw">let </span>enable_gso = <span class="kw">if </span>args.disable_gso {
+        <span class="bool-val">false
+    </span>} <span class="kw">else </span>{
+        detect_gso(<span class="kw-2">&amp;</span>socket, max_datagram_size)
+    };
+
+    <span class="macro">trace!</span>(<span class="string">"GSO detected: {}"</span>, enable_gso);
+
+    <span class="comment">// Create the configuration for the QUIC connections.
+    </span><span class="kw">let </span><span class="kw-2">mut </span>config = quiche::Config::new(quiche::PROTOCOL_VERSION).unwrap();
+
+    config.load_cert_chain_from_pem_file(<span class="kw-2">&amp;</span>args.cert).unwrap();
+    config.load_priv_key_from_pem_file(<span class="kw-2">&amp;</span>args.key).unwrap();
+
+    config.set_application_protos(<span class="kw-2">&amp;</span>conn_args.alpns).unwrap();
+
+    config.discover_pmtu(args.enable_pmtud);
+    config.set_max_idle_timeout(conn_args.idle_timeout);
+    config.set_max_recv_udp_payload_size(max_datagram_size);
+    config.set_max_send_udp_payload_size(max_datagram_size);
+    config.set_initial_max_data(conn_args.max_data);
+    config.set_initial_max_stream_data_bidi_local(conn_args.max_stream_data);
+    config.set_initial_max_stream_data_bidi_remote(conn_args.max_stream_data);
+    config.set_initial_max_stream_data_uni(conn_args.max_stream_data);
+    config.set_initial_max_streams_bidi(conn_args.max_streams_bidi);
+    config.set_initial_max_streams_uni(conn_args.max_streams_uni);
+    config.set_disable_active_migration(!conn_args.enable_active_migration);
+    config.set_active_connection_id_limit(conn_args.max_active_cids);
+    config.set_initial_congestion_window_packets(
+        usize::try_from(conn_args.initial_cwnd_packets).unwrap(),
+    );
+
+    config.set_max_connection_window(conn_args.max_window);
+    config.set_max_stream_window(conn_args.max_stream_window);
+
+    config.enable_pacing(pacing);
+
+    <span class="kw">let </span><span class="kw-2">mut </span>keylog = <span class="prelude-val">None</span>;
+
+    <span class="kw">if let </span><span class="prelude-val">Some</span>(keylog_path) = std::env::var_os(<span class="string">"SSLKEYLOGFILE"</span>) {
+        <span class="kw">let </span>file = std::fs::OpenOptions::new()
+            .create(<span class="bool-val">true</span>)
+            .append(<span class="bool-val">true</span>)
+            .open(keylog_path)
+            .unwrap();
+
+        keylog = <span class="prelude-val">Some</span>(file);
+
+        config.log_keys();
+    }
+
+    <span class="kw">if </span>conn_args.early_data {
+        config.enable_early_data();
+    }
+
+    <span class="kw">if </span>conn_args.no_grease {
+        config.grease(<span class="bool-val">false</span>);
+    }
+
+    config
+        .set_cc_algorithm_name(<span class="kw-2">&amp;</span>conn_args.cc_algorithm)
+        .unwrap();
+
+    <span class="kw">if </span>conn_args.disable_hystart {
+        config.enable_hystart(<span class="bool-val">false</span>);
+    }
+
+    <span class="kw">if </span>conn_args.dgrams_enabled {
+        config.enable_dgram(<span class="bool-val">true</span>, <span class="number">1000</span>, <span class="number">1000</span>);
+    }
+
+    <span class="kw">let </span>rng = SystemRandom::new();
+    <span class="kw">let </span>conn_id_seed =
+        ring::hmac::Key::generate(ring::hmac::HMAC_SHA256, <span class="kw-2">&amp;</span>rng).unwrap();
+
+    <span class="kw">let </span><span class="kw-2">mut </span>next_client_id = <span class="number">0</span>;
+    <span class="kw">let </span><span class="kw-2">mut </span>clients_ids = ClientIdMap::new();
+    <span class="kw">let </span><span class="kw-2">mut </span>clients = ClientMap::new();
+
+    <span class="kw">let </span><span class="kw-2">mut </span>pkt_count = <span class="number">0</span>;
+
+    <span class="kw">let </span><span class="kw-2">mut </span>continue_write = <span class="bool-val">false</span>;
+
+    <span class="kw">let </span>local_addr = socket.local_addr().unwrap();
+
+    <span class="kw">loop </span>{
+        <span class="comment">// Find the shorter timeout from all the active connections.
+        //
+        // TODO: use event loop that properly supports timers
+        </span><span class="kw">let </span>timeout = <span class="kw">match </span>continue_write {
+            <span class="bool-val">true </span>=&gt; <span class="prelude-val">Some</span>(std::time::Duration::from_secs(<span class="number">0</span>)),
+
+            <span class="bool-val">false </span>=&gt; clients.values().filter_map(|c| c.conn.timeout()).min(),
+        };
+
+        poll.poll(<span class="kw-2">&amp;mut </span>events, timeout).unwrap();
+
+        <span class="comment">// Read incoming UDP packets from the socket and feed them to quiche,
+        // until there are no more packets to read.
+        </span><span class="lifetime">'read</span>: <span class="kw">loop </span>{
+            <span class="comment">// If the event loop reported no events, it means that the timeout
+            // has expired, so handle it without attempting to read packets. We
+            // will then proceed with the send loop.
+            </span><span class="kw">if </span>events.is_empty() &amp;&amp; !continue_write {
+                <span class="macro">trace!</span>(<span class="string">"timed out"</span>);
+
+                clients.values_mut().for_each(|c| c.conn.on_timeout());
+
+                <span class="kw">break </span><span class="lifetime">'read</span>;
+            }
+
+            <span class="kw">let </span>(len, from) = <span class="kw">match </span>socket.recv_from(<span class="kw-2">&amp;mut </span>buf) {
+                <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                <span class="prelude-val">Err</span>(e) =&gt; {
+                    <span class="comment">// There are no more UDP packets to read, so end the read
+                    // loop.
+                    </span><span class="kw">if </span>e.kind() == std::io::ErrorKind::WouldBlock {
+                        <span class="macro">trace!</span>(<span class="string">"recv() would block"</span>);
+                        <span class="kw">break </span><span class="lifetime">'read</span>;
+                    }
+
+                    <span class="macro">panic!</span>(<span class="string">"recv() failed: {:?}"</span>, e);
+                },
+            };
+
+            <span class="macro">trace!</span>(<span class="string">"got {} bytes"</span>, len);
+
+            <span class="kw">let </span>pkt_buf = <span class="kw-2">&amp;mut </span>buf[..len];
+
+            <span class="kw">if let </span><span class="prelude-val">Some</span>(target_path) = conn_args.dump_packet_path.as_ref() {
+                <span class="kw">let </span>path = <span class="macro">format!</span>(<span class="string">"{target_path}/{pkt_count}.pkt"</span>);
+
+                <span class="kw">if let </span><span class="prelude-val">Ok</span>(f) = std::fs::File::create(path) {
+                    <span class="kw">let </span><span class="kw-2">mut </span>f = std::io::BufWriter::new(f);
+                    f.write_all(pkt_buf).ok();
+                }
+            }
+
+            pkt_count += <span class="number">1</span>;
+
+            <span class="comment">// Parse the QUIC packet's header.
+            </span><span class="kw">let </span>hdr = <span class="kw">match </span>quiche::Header::from_slice(
+                pkt_buf,
+                quiche::MAX_CONN_ID_LEN,
+            ) {
+                <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                <span class="prelude-val">Err</span>(e) =&gt; {
+                    <span class="macro">error!</span>(<span class="string">"Parsing packet header failed: {:?}"</span>, e);
+                    <span class="kw">continue </span><span class="lifetime">'read</span>;
+                },
+            };
+
+            <span class="macro">trace!</span>(<span class="string">"got packet {:?}"</span>, hdr);
+
+            <span class="kw">let </span>conn_id = <span class="kw">if </span>!<span class="macro">cfg!</span>(feature = <span class="string">"fuzzing"</span>) {
+                <span class="kw">let </span>conn_id = ring::hmac::sign(<span class="kw-2">&amp;</span>conn_id_seed, <span class="kw-2">&amp;</span>hdr.dcid);
+                <span class="kw">let </span>conn_id = <span class="kw-2">&amp;</span>conn_id.as_ref()[..quiche::MAX_CONN_ID_LEN];
+                conn_id.to_vec().into()
+            } <span class="kw">else </span>{
+                <span class="comment">// When fuzzing use an all zero connection ID.
+                </span>[<span class="number">0</span>; quiche::MAX_CONN_ID_LEN].to_vec().into()
+            };
+
+            <span class="comment">// Lookup a connection based on the packet's connection ID. If there
+            // is no connection matching, create a new one.
+            </span><span class="kw">let </span>client = <span class="kw">if </span>!clients_ids.contains_key(<span class="kw-2">&amp;</span>hdr.dcid) &amp;&amp;
+                !clients_ids.contains_key(<span class="kw-2">&amp;</span>conn_id)
+            {
+                <span class="kw">if </span>hdr.ty != quiche::Type::Initial {
+                    <span class="macro">error!</span>(<span class="string">"Packet is not Initial"</span>);
+                    <span class="kw">continue </span><span class="lifetime">'read</span>;
+                }
+
+                <span class="kw">if </span>!quiche::version_is_supported(hdr.version) {
+                    <span class="macro">warn!</span>(<span class="string">"Doing version negotiation"</span>);
+
+                    <span class="kw">let </span>len =
+                        quiche::negotiate_version(<span class="kw-2">&amp;</span>hdr.scid, <span class="kw-2">&amp;</span>hdr.dcid, <span class="kw-2">&amp;mut </span>out)
+                            .unwrap();
+
+                    <span class="kw">let </span>out = <span class="kw-2">&amp;</span>out[..len];
+
+                    <span class="kw">if let </span><span class="prelude-val">Err</span>(e) = socket.send_to(out, from) {
+                        <span class="kw">if </span>e.kind() == std::io::ErrorKind::WouldBlock {
+                            <span class="macro">trace!</span>(<span class="string">"send() would block"</span>);
+                            <span class="kw">break</span>;
+                        }
+
+                        <span class="macro">panic!</span>(<span class="string">"send() failed: {:?}"</span>, e);
+                    }
+                    <span class="kw">continue </span><span class="lifetime">'read</span>;
+                }
+
+                <span class="kw">let </span><span class="kw-2">mut </span>scid = [<span class="number">0</span>; quiche::MAX_CONN_ID_LEN];
+                scid.copy_from_slice(<span class="kw-2">&amp;</span>conn_id);
+
+                <span class="kw">let </span><span class="kw-2">mut </span>odcid = <span class="prelude-val">None</span>;
+
+                <span class="kw">if </span>!args.no_retry {
+                    <span class="comment">// Token is always present in Initial packets.
+                    </span><span class="kw">let </span>token = hdr.token.as_ref().unwrap();
+
+                    <span class="comment">// Do stateless retry if the client didn't send a token.
+                    </span><span class="kw">if </span>token.is_empty() {
+                        <span class="macro">warn!</span>(<span class="string">"Doing stateless retry"</span>);
+
+                        <span class="kw">let </span>scid = quiche::ConnectionId::from_ref(<span class="kw-2">&amp;</span>scid);
+                        <span class="kw">let </span>new_token = mint_token(<span class="kw-2">&amp;</span>hdr, <span class="kw-2">&amp;</span>from);
+
+                        <span class="kw">let </span>len = quiche::retry(
+                            <span class="kw-2">&amp;</span>hdr.scid,
+                            <span class="kw-2">&amp;</span>hdr.dcid,
+                            <span class="kw-2">&amp;</span>scid,
+                            <span class="kw-2">&amp;</span>new_token,
+                            hdr.version,
+                            <span class="kw-2">&amp;mut </span>out,
+                        )
+                        .unwrap();
+
+                        <span class="kw">let </span>out = <span class="kw-2">&amp;</span>out[..len];
+
+                        <span class="kw">if let </span><span class="prelude-val">Err</span>(e) = socket.send_to(out, from) {
+                            <span class="kw">if </span>e.kind() == std::io::ErrorKind::WouldBlock {
+                                <span class="macro">trace!</span>(<span class="string">"send() would block"</span>);
+                                <span class="kw">break</span>;
+                            }
+
+                            <span class="macro">panic!</span>(<span class="string">"send() failed: {:?}"</span>, e);
+                        }
+                        <span class="kw">continue </span><span class="lifetime">'read</span>;
+                    }
+
+                    odcid = validate_token(<span class="kw-2">&amp;</span>from, token);
+
+                    <span class="comment">// The token was not valid, meaning the retry failed, so
+                    // drop the packet.
+                    </span><span class="kw">if </span>odcid.is_none() {
+                        <span class="macro">error!</span>(<span class="string">"Invalid address validation token"</span>);
+                        <span class="kw">continue</span>;
+                    }
+
+                    <span class="kw">if </span>scid.len() != hdr.dcid.len() {
+                        <span class="macro">error!</span>(<span class="string">"Invalid destination connection ID"</span>);
+                        <span class="kw">continue </span><span class="lifetime">'read</span>;
+                    }
+
+                    <span class="comment">// Reuse the source connection ID we sent in the Retry
+                    // packet, instead of changing it again.
+                    </span>scid.copy_from_slice(<span class="kw-2">&amp;</span>hdr.dcid);
+                }
+
+                <span class="kw">let </span>scid = quiche::ConnectionId::from_vec(scid.to_vec());
+
+                <span class="macro">debug!</span>(<span class="string">"New connection: dcid={:?} scid={:?}"</span>, hdr.dcid, scid);
+
+                <span class="attr">#[allow(unused_mut)]
+                </span><span class="kw">let </span><span class="kw-2">mut </span>conn = quiche::accept(
+                    <span class="kw-2">&amp;</span>scid,
+                    odcid.as_ref(),
+                    local_addr,
+                    from,
+                    <span class="kw-2">&amp;mut </span>config,
+                )
+                .unwrap();
+
+                <span class="kw">if let </span><span class="prelude-val">Some</span>(keylog) = <span class="kw-2">&amp;mut </span>keylog {
+                    <span class="kw">if let </span><span class="prelude-val">Ok</span>(keylog) = keylog.try_clone() {
+                        conn.set_keylog(Box::new(keylog));
+                    }
+                }
+
+                <span class="comment">// Only bother with qlog if the user specified it.
+                </span><span class="attr">#[cfg(feature = <span class="string">"qlog"</span>)]
+                </span>{
+                    <span class="kw">if let </span><span class="prelude-val">Some</span>(dir) = std::env::var_os(<span class="string">"QLOGDIR"</span>) {
+                        <span class="kw">let </span>id = <span class="macro">format!</span>(<span class="string">"{:?}"</span>, <span class="kw-2">&amp;</span>scid);
+                        <span class="kw">let </span>writer = make_qlog_writer(<span class="kw-2">&amp;</span>dir, <span class="string">"server"</span>, <span class="kw-2">&amp;</span>id);
+
+                        conn.set_qlog(
+                            std::boxed::Box::new(writer),
+                            <span class="string">"quiche-server qlog"</span>.to_string(),
+                            <span class="macro">format!</span>(<span class="string">"{} id={}"</span>, <span class="string">"quiche-server qlog"</span>, id),
+                        );
+                    }
+                }
+
+                <span class="kw">let </span>client_id = next_client_id;
+
+                <span class="kw">let </span>client = Client {
+                    conn,
+                    http_conn: <span class="prelude-val">None</span>,
+                    client_id,
+                    partial_requests: HashMap::new(),
+                    partial_responses: HashMap::new(),
+                    app_proto_selected: <span class="bool-val">false</span>,
+                    max_datagram_size,
+                    loss_rate: <span class="number">0.0</span>,
+                    max_send_burst: MAX_BUF_SIZE,
+                };
+
+                clients.insert(client_id, client);
+                clients_ids.insert(scid.clone(), client_id);
+
+                next_client_id += <span class="number">1</span>;
+
+                clients.get_mut(<span class="kw-2">&amp;</span>client_id).unwrap()
+            } <span class="kw">else </span>{
+                <span class="kw">let </span>cid = <span class="kw">match </span>clients_ids.get(<span class="kw-2">&amp;</span>hdr.dcid) {
+                    <span class="prelude-val">Some</span>(v) =&gt; v,
+
+                    <span class="prelude-val">None </span>=&gt; clients_ids.get(<span class="kw-2">&amp;</span>conn_id).unwrap(),
+                };
+
+                clients.get_mut(cid).unwrap()
+            };
+
+            <span class="kw">let </span>recv_info = quiche::RecvInfo {
+                to: local_addr,
+                from,
+            };
+
+            <span class="comment">// Process potentially coalesced packets.
+            </span><span class="kw">let </span>read = <span class="kw">match </span>client.conn.recv(pkt_buf, recv_info) {
+                <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                <span class="prelude-val">Err</span>(e) =&gt; {
+                    <span class="macro">error!</span>(<span class="string">"{} recv failed: {:?}"</span>, client.conn.trace_id(), e);
+                    <span class="kw">continue </span><span class="lifetime">'read</span>;
+                },
+            };
+
+            <span class="macro">trace!</span>(<span class="string">"{} processed {} bytes"</span>, client.conn.trace_id(), read);
+
+            <span class="comment">// Create a new application protocol session as soon as the QUIC
+            // connection is established.
+            </span><span class="kw">if </span>!client.app_proto_selected &amp;&amp;
+                (client.conn.is_in_early_data() ||
+                    client.conn.is_established())
+            {
+                <span class="comment">// At this stage the ALPN negotiation succeeded and selected a
+                // single application protocol name. We'll use this to construct
+                // the correct type of HttpConn but `application_proto()`
+                // returns a slice, so we have to convert it to a str in order
+                // to compare to our lists of protocols. We `unwrap()` because
+                // we need the value and if something fails at this stage, there
+                // is not much anyone can do to recover.
+                </span><span class="kw">let </span>app_proto = client.conn.application_proto();
+
+                <span class="attr">#[allow(clippy::box_default)]
+                </span><span class="kw">if </span>alpns::HTTP_09.contains(<span class="kw-2">&amp;</span>app_proto) {
+                    client.http_conn = <span class="prelude-val">Some</span>(Box::&lt;Http09Conn&gt;::default());
+
+                    client.app_proto_selected = <span class="bool-val">true</span>;
+                } <span class="kw">else if </span>alpns::HTTP_3.contains(<span class="kw-2">&amp;</span>app_proto) {
+                    <span class="kw">let </span>dgram_sender = <span class="kw">if </span>conn_args.dgrams_enabled {
+                        <span class="prelude-val">Some</span>(Http3DgramSender::new(
+                            conn_args.dgram_count,
+                            conn_args.dgram_data.clone(),
+                            <span class="number">1</span>,
+                        ))
+                    } <span class="kw">else </span>{
+                        <span class="prelude-val">None
+                    </span>};
+
+                    client.http_conn = <span class="kw">match </span>Http3Conn::with_conn(
+                        <span class="kw-2">&amp;mut </span>client.conn,
+                        conn_args.max_field_section_size,
+                        conn_args.qpack_max_table_capacity,
+                        conn_args.qpack_blocked_streams,
+                        dgram_sender,
+                        Rc::new(RefCell::new(stdout_sink)),
+                    ) {
+                        <span class="prelude-val">Ok</span>(v) =&gt; <span class="prelude-val">Some</span>(v),
+
+                        <span class="prelude-val">Err</span>(e) =&gt; {
+                            <span class="macro">trace!</span>(<span class="string">"{} {}"</span>, client.conn.trace_id(), e);
+                            <span class="prelude-val">None
+                        </span>},
+                    };
+
+                    client.app_proto_selected = <span class="bool-val">true</span>;
+                }
+
+                <span class="comment">// Update max_datagram_size after connection established.
+                </span>client.max_datagram_size =
+                    client.conn.max_send_udp_payload_size();
+            }
+
+            <span class="kw">if </span>client.http_conn.is_some() {
+                <span class="kw">let </span>conn = <span class="kw-2">&amp;mut </span>client.conn;
+                <span class="kw">let </span>http_conn = client.http_conn.as_mut().unwrap();
+                <span class="kw">let </span>partial_responses = <span class="kw-2">&amp;mut </span>client.partial_responses;
+
+                <span class="comment">// Handle writable streams.
+                </span><span class="kw">for </span>stream_id <span class="kw">in </span>conn.writable() {
+                    http_conn.handle_writable(conn, partial_responses, stream_id);
+                }
+
+                <span class="kw">if </span>http_conn
+                    .handle_requests(
+                        conn,
+                        <span class="kw-2">&amp;mut </span>client.partial_requests,
+                        partial_responses,
+                        <span class="kw-2">&amp;</span>args.root,
+                        <span class="kw-2">&amp;</span>args.index,
+                        <span class="kw-2">&amp;mut </span>buf,
+                    )
+                    .is_err()
+                {
+                    <span class="kw">continue </span><span class="lifetime">'read</span>;
+                }
+            }
+
+            handle_path_events(client);
+
+            <span class="comment">// See whether source Connection IDs have been retired.
+            </span><span class="kw">while let </span><span class="prelude-val">Some</span>(retired_scid) = client.conn.retired_scid_next() {
+                <span class="macro">info!</span>(<span class="string">"Retiring source CID {:?}"</span>, retired_scid);
+                clients_ids.remove(<span class="kw-2">&amp;</span>retired_scid);
+            }
+
+            <span class="comment">// Provides as many CIDs as possible.
+            </span><span class="kw">while </span>client.conn.scids_left() &gt; <span class="number">0 </span>{
+                <span class="kw">let </span>(scid, reset_token) = generate_cid_and_reset_token(<span class="kw-2">&amp;</span>rng);
+                <span class="kw">if </span>client.conn.new_scid(<span class="kw-2">&amp;</span>scid, reset_token, <span class="bool-val">false</span>).is_err() {
+                    <span class="kw">break</span>;
+                }
+
+                clients_ids.insert(scid, client.client_id);
+            }
+        }
+
+        <span class="comment">// Generate outgoing QUIC packets for all active connections and send
+        // them on the UDP socket, until quiche reports that there are no more
+        // packets to be sent.
+        </span>continue_write = <span class="bool-val">false</span>;
+        <span class="kw">for </span>client <span class="kw">in </span>clients.values_mut() {
+            <span class="comment">// Reduce max_send_burst by 25% if loss is increasing more than 0.1%.
+            </span><span class="kw">let </span>loss_rate =
+                client.conn.stats().lost <span class="kw">as </span>f64 / client.conn.stats().sent <span class="kw">as </span>f64;
+            <span class="kw">if </span>loss_rate &gt; client.loss_rate + <span class="number">0.001 </span>{
+                client.max_send_burst = client.max_send_burst / <span class="number">4 </span>* <span class="number">3</span>;
+                <span class="comment">// Minimun bound of 10xMSS.
+                </span>client.max_send_burst =
+                    client.max_send_burst.max(client.max_datagram_size * <span class="number">10</span>);
+                client.loss_rate = loss_rate;
+            }
+
+            <span class="kw">let </span>max_send_burst =
+                client.conn.send_quantum().min(client.max_send_burst) /
+                    client.max_datagram_size *
+                    client.max_datagram_size;
+            <span class="kw">let </span><span class="kw-2">mut </span>total_write = <span class="number">0</span>;
+            <span class="kw">let </span><span class="kw-2">mut </span>dst_info = <span class="prelude-val">None</span>;
+
+            <span class="kw">while </span>total_write &lt; max_send_burst {
+                <span class="kw">let </span>(write, send_info) = <span class="kw">match </span>client
+                    .conn
+                    .send(<span class="kw-2">&amp;mut </span>out[total_write..max_send_burst])
+                {
+                    <span class="prelude-val">Ok</span>(v) =&gt; v,
+
+                    <span class="prelude-val">Err</span>(quiche::Error::Done) =&gt; {
+                        <span class="macro">trace!</span>(<span class="string">"{} done writing"</span>, client.conn.trace_id());
+                        <span class="kw">break</span>;
+                    },
+
+                    <span class="prelude-val">Err</span>(e) =&gt; {
+                        <span class="macro">error!</span>(<span class="string">"{} send failed: {:?}"</span>, client.conn.trace_id(), e);
+
+                        client.conn.close(<span class="bool-val">false</span>, <span class="number">0x1</span>, <span class="string">b"fail"</span>).ok();
+                        <span class="kw">break</span>;
+                    },
+                };
+
+                total_write += write;
+
+                <span class="comment">// Use the first packet time to send, not the last.
+                </span><span class="kw">let _ </span>= dst_info.get_or_insert(send_info);
+
+                <span class="kw">if </span>write &lt; client.max_datagram_size {
+                    continue_write = <span class="bool-val">true</span>;
+                    <span class="kw">break</span>;
+                }
+            }
+
+            <span class="kw">if </span>total_write == <span class="number">0 </span>|| dst_info.is_none() {
+                <span class="kw">break</span>;
+            }
+
+            <span class="kw">if let </span><span class="prelude-val">Err</span>(e) = send_to(
+                <span class="kw-2">&amp;</span>socket,
+                <span class="kw-2">&amp;</span>out[..total_write],
+                <span class="kw-2">&amp;</span>dst_info.unwrap(),
+                client.max_datagram_size,
+                pacing,
+                enable_gso,
+            ) {
+                <span class="kw">if </span>e.kind() == std::io::ErrorKind::WouldBlock {
+                    <span class="macro">trace!</span>(<span class="string">"send() would block"</span>);
+                    <span class="kw">break</span>;
+                }
+
+                <span class="macro">panic!</span>(<span class="string">"send_to() failed: {:?}"</span>, e);
+            }
+
+            <span class="macro">trace!</span>(<span class="string">"{} written {} bytes"</span>, client.conn.trace_id(), total_write);
+
+            <span class="kw">if </span>total_write &gt;= max_send_burst {
+                <span class="macro">trace!</span>(<span class="string">"{} pause writing"</span>, client.conn.trace_id(),);
+                continue_write = <span class="bool-val">true</span>;
+                <span class="kw">break</span>;
+            }
+        }
+
+        <span class="comment">// Garbage collect closed connections.
+        </span>clients.retain(|<span class="kw">_</span>, <span class="kw-2">ref mut </span>c| {
+            <span class="macro">trace!</span>(<span class="string">"Collecting garbage"</span>);
+
+            <span class="kw">if </span>c.conn.is_closed() {
+                <span class="macro">info!</span>(
+                    <span class="string">"{} connection collected {:?} {:?}"</span>,
+                    c.conn.trace_id(),
+                    c.conn.stats(),
+                    c.conn.path_stats().collect::&lt;Vec&lt;quiche::PathStats&gt;&gt;()
+                );
+
+                <span class="kw">for </span>id <span class="kw">in </span>c.conn.source_ids() {
+                    <span class="kw">let </span>id_owned = id.clone().into_owned();
+                    clients_ids.remove(<span class="kw-2">&amp;</span>id_owned);
+                }
+            }
+
+            !c.conn.is_closed()
+        });
+    }
+}
+
+<span class="doccomment">/// Generate a stateless retry token.
+///
+/// The token includes the static string `"quiche"` followed by the IP address
+/// of the client and by the original destination connection ID generated by the
+/// client.
+///
+/// Note that this function is only an example and doesn't do any cryptographic
+/// authenticate of the token. *It should not be used in production system*.
+</span><span class="kw">fn </span>mint_token(hdr: <span class="kw-2">&amp;</span>quiche::Header, src: <span class="kw-2">&amp;</span>net::SocketAddr) -&gt; Vec&lt;u8&gt; {
+    <span class="kw">let </span><span class="kw-2">mut </span>token = Vec::new();
+
+    token.extend_from_slice(<span class="string">b"quiche"</span>);
+
+    <span class="kw">let </span>addr = <span class="kw">match </span>src.ip() {
+        std::net::IpAddr::V4(a) =&gt; a.octets().to_vec(),
+        std::net::IpAddr::V6(a) =&gt; a.octets().to_vec(),
+    };
+
+    token.extend_from_slice(<span class="kw-2">&amp;</span>addr);
+    token.extend_from_slice(<span class="kw-2">&amp;</span>hdr.dcid);
+
+    token
+}
+
+<span class="doccomment">/// Validates a stateless retry token.
+///
+/// This checks that the ticket includes the `"quiche"` static string, and that
+/// the client IP address matches the address stored in the ticket.
+///
+/// Note that this function is only an example and doesn't do any cryptographic
+/// authenticate of the token. *It should not be used in production system*.
+</span><span class="kw">fn </span>validate_token&lt;<span class="lifetime">'a</span>&gt;(
+    src: <span class="kw-2">&amp;</span>net::SocketAddr, token: <span class="kw-2">&amp;</span><span class="lifetime">'a </span>[u8],
+) -&gt; <span class="prelude-ty">Option</span>&lt;quiche::ConnectionId&lt;<span class="lifetime">'a</span>&gt;&gt; {
+    <span class="kw">if </span>token.len() &lt; <span class="number">6 </span>{
+        <span class="kw">return </span><span class="prelude-val">None</span>;
+    }
+
+    <span class="kw">if </span><span class="kw-2">&amp;</span>token[..<span class="number">6</span>] != <span class="string">b"quiche" </span>{
+        <span class="kw">return </span><span class="prelude-val">None</span>;
+    }
+
+    <span class="kw">let </span>token = <span class="kw-2">&amp;</span>token[<span class="number">6</span>..];
+
+    <span class="kw">let </span>addr = <span class="kw">match </span>src.ip() {
+        std::net::IpAddr::V4(a) =&gt; a.octets().to_vec(),
+        std::net::IpAddr::V6(a) =&gt; a.octets().to_vec(),
+    };
+
+    <span class="kw">if </span>token.len() &lt; addr.len() || <span class="kw-2">&amp;</span>token[..addr.len()] != addr.as_slice() {
+        <span class="kw">return </span><span class="prelude-val">None</span>;
+    }
+
+    <span class="prelude-val">Some</span>(quiche::ConnectionId::from_ref(<span class="kw-2">&amp;</span>token[addr.len()..]))
+}
+
+<span class="kw">fn </span>handle_path_events(client: <span class="kw-2">&amp;mut </span>Client) {
+    <span class="kw">while let </span><span class="prelude-val">Some</span>(qe) = client.conn.path_event_next() {
+        <span class="kw">match </span>qe {
+            quiche::PathEvent::New(local_addr, peer_addr) =&gt; {
+                <span class="macro">info!</span>(
+                    <span class="string">"{} Seen new path ({}, {})"</span>,
+                    client.conn.trace_id(),
+                    local_addr,
+                    peer_addr
+                );
+
+                <span class="comment">// Directly probe the new path.
+                </span>client
+                    .conn
+                    .probe_path(local_addr, peer_addr)
+                    .expect(<span class="string">"cannot probe"</span>);
+            },
+
+            quiche::PathEvent::Validated(local_addr, peer_addr) =&gt; {
+                <span class="macro">info!</span>(
+                    <span class="string">"{} Path ({}, {}) is now validated"</span>,
+                    client.conn.trace_id(),
+                    local_addr,
+                    peer_addr
+                );
+            },
+
+            quiche::PathEvent::FailedValidation(local_addr, peer_addr) =&gt; {
+                <span class="macro">info!</span>(
+                    <span class="string">"{} Path ({}, {}) failed validation"</span>,
+                    client.conn.trace_id(),
+                    local_addr,
+                    peer_addr
+                );
+            },
+
+            quiche::PathEvent::Closed(local_addr, peer_addr) =&gt; {
+                <span class="macro">info!</span>(
+                    <span class="string">"{} Path ({}, {}) is now closed and unusable"</span>,
+                    client.conn.trace_id(),
+                    local_addr,
+                    peer_addr
+                );
+            },
+
+            quiche::PathEvent::ReusedSourceConnectionId(cid_seq, old, new) =&gt; {
+                <span class="macro">info!</span>(
+                    <span class="string">"{} Peer reused cid seq {} (initially {:?}) on {:?}"</span>,
+                    client.conn.trace_id(),
+                    cid_seq,
+                    old,
+                    new
+                );
+            },
+
+            quiche::PathEvent::PeerMigrated(local_addr, peer_addr) =&gt; {
+                <span class="macro">info!</span>(
+                    <span class="string">"{} Connection migrated to ({}, {})"</span>,
+                    client.conn.trace_id(),
+                    local_addr,
+                    peer_addr
+                );
+            },
+        }
+    }
+}
+
+<span class="doccomment">/// Set SO_TXTIME socket option.
+///
+/// This socket option is set to send to kernel the outgoing UDP
+/// packet transmission time in the sendmsg syscall.
+///
+/// Note that this socket option is set only on linux platforms.
+</span><span class="attr">#[cfg(target_os = <span class="string">"linux"</span>)]
+</span><span class="kw">fn </span>set_txtime_sockopt(sock: <span class="kw-2">&amp;</span>mio::net::UdpSocket) -&gt; io::Result&lt;()&gt; {
+    <span class="kw">use </span>nix::sys::socket::setsockopt;
+    <span class="kw">use </span>nix::sys::socket::sockopt::TxTime;
+    <span class="kw">use </span>std::os::unix::io::AsRawFd;
+
+    <span class="kw">let </span>config = nix::libc::sock_txtime {
+        clockid: libc::CLOCK_MONOTONIC,
+        flags: <span class="number">0</span>,
+    };
+
+    <span class="comment">// mio::net::UdpSocket doesn't implement AsFd (yet?).
+    </span><span class="kw">let </span>fd = <span class="kw">unsafe </span>{ std::os::fd::BorrowedFd::borrow_raw(sock.as_raw_fd()) };
+
+    setsockopt(<span class="kw-2">&amp;</span>fd, TxTime, <span class="kw-2">&amp;</span>config)<span class="question-mark">?</span>;
+
+    <span class="prelude-val">Ok</span>(())
+}
+
+<span class="attr">#[cfg(not(target_os = <span class="string">"linux"</span>))]
+</span><span class="kw">fn </span>set_txtime_sockopt(<span class="kw">_</span>: <span class="kw-2">&amp;</span>mio::net::UdpSocket) -&gt; io::Result&lt;()&gt; {
+    <span class="kw">use </span>std::io::Error;
+    <span class="kw">use </span>std::io::ErrorKind;
+
+    <span class="prelude-val">Err</span>(Error::new(
+        ErrorKind::Other,
+        <span class="string">"Not supported on this platform"</span>,
+    ))
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/static.files/COPYRIGHT-23e9bde6c69aea69.txt b/static.files/COPYRIGHT-23e9bde6c69aea69.txt
new file mode 100644
index 0000000..1447df7
--- /dev/null
+++ b/static.files/COPYRIGHT-23e9bde6c69aea69.txt
@@ -0,0 +1,50 @@
+# REUSE-IgnoreStart
+
+These documentation pages include resources by third parties. This copyright
+file applies only to those resources. The following third party resources are
+included, and carry their own copyright notices and license terms:
+
+* Fira Sans (FiraSans-Regular.woff2, FiraSans-Medium.woff2):
+
+    Copyright (c) 2014, Mozilla Foundation https://mozilla.org/
+    with Reserved Font Name Fira Sans.
+
+    Copyright (c) 2014, Telefonica S.A.
+
+    Licensed under the SIL Open Font License, Version 1.1.
+    See FiraSans-LICENSE.txt.
+
+* rustdoc.css, main.js, and playpen.js:
+
+    Copyright 2015 The Rust Developers.
+    Licensed under the Apache License, Version 2.0 (see LICENSE-APACHE.txt) or
+    the MIT license (LICENSE-MIT.txt) at your option.
+
+* normalize.css:
+
+    Copyright (c) Nicolas Gallagher and Jonathan Neal.
+    Licensed under the MIT license (see LICENSE-MIT.txt).
+
+* Source Code Pro (SourceCodePro-Regular.ttf.woff2,
+    SourceCodePro-Semibold.ttf.woff2, SourceCodePro-It.ttf.woff2):
+
+    Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/),
+    with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark
+    of Adobe Systems Incorporated in the United States and/or other countries.
+
+    Licensed under the SIL Open Font License, Version 1.1.
+    See SourceCodePro-LICENSE.txt.
+
+* Source Serif 4 (SourceSerif4-Regular.ttf.woff2, SourceSerif4-Bold.ttf.woff2,
+    SourceSerif4-It.ttf.woff2):
+
+    Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name
+    'Source'. All Rights Reserved. Source is a trademark of Adobe in the United
+    States and/or other countries.
+
+    Licensed under the SIL Open Font License, Version 1.1.
+    See SourceSerif4-LICENSE.md.
+
+This copyright file is intended to be distributed with rustdoc output.
+
+# REUSE-IgnoreEnd
diff --git a/static.files/FiraSans-LICENSE-db4b642586e02d97.txt b/static.files/FiraSans-LICENSE-db4b642586e02d97.txt
new file mode 100644
index 0000000..d7e9c14
--- /dev/null
+++ b/static.files/FiraSans-LICENSE-db4b642586e02d97.txt
@@ -0,0 +1,98 @@
+// REUSE-IgnoreStart
+
+Digitized data copyright (c) 2012-2015, The Mozilla Foundation and Telefonica S.A.
+with Reserved Font Name < Fira >,
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
+
+// REUSE-IgnoreEnd
diff --git a/static.files/FiraSans-Medium-8f9a781e4970d388.woff2 b/static.files/FiraSans-Medium-8f9a781e4970d388.woff2
new file mode 100644
index 0000000..7a1e5fc
--- /dev/null
+++ b/static.files/FiraSans-Medium-8f9a781e4970d388.woff2
Binary files differ
diff --git a/static.files/FiraSans-Regular-018c141bf0843ffd.woff2 b/static.files/FiraSans-Regular-018c141bf0843ffd.woff2
new file mode 100644
index 0000000..e766e06
--- /dev/null
+++ b/static.files/FiraSans-Regular-018c141bf0843ffd.woff2
Binary files differ
diff --git a/static.files/LICENSE-APACHE-b91fa81cba47b86a.txt b/static.files/LICENSE-APACHE-b91fa81cba47b86a.txt
new file mode 100644
index 0000000..16fe87b
--- /dev/null
+++ b/static.files/LICENSE-APACHE-b91fa81cba47b86a.txt
@@ -0,0 +1,201 @@
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/static.files/LICENSE-MIT-65090b722b3f6c56.txt b/static.files/LICENSE-MIT-65090b722b3f6c56.txt
new file mode 100644
index 0000000..31aa793
--- /dev/null
+++ b/static.files/LICENSE-MIT-65090b722b3f6c56.txt
@@ -0,0 +1,23 @@
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/static.files/NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2 b/static.files/NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2
new file mode 100644
index 0000000..1866ad4
--- /dev/null
+++ b/static.files/NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2
Binary files differ
diff --git a/static.files/NanumBarunGothic-LICENSE-18c5adf4b52b4041.txt b/static.files/NanumBarunGothic-LICENSE-18c5adf4b52b4041.txt
new file mode 100644
index 0000000..4b3edc2
--- /dev/null
+++ b/static.files/NanumBarunGothic-LICENSE-18c5adf4b52b4041.txt
@@ -0,0 +1,103 @@
+// REUSE-IgnoreStart
+
+Copyright (c) 2010, NAVER Corporation (https://www.navercorp.com/),
+
+with Reserved Font Name Nanum, Naver Nanum, NanumGothic, Naver NanumGothic,
+NanumMyeongjo, Naver NanumMyeongjo, NanumBrush, Naver NanumBrush, NanumPen,
+Naver NanumPen, Naver NanumGothicEco, NanumGothicEco, Naver NanumMyeongjoEco,
+NanumMyeongjoEco, Naver NanumGothicLight, NanumGothicLight, NanumBarunGothic,
+Naver NanumBarunGothic, NanumSquareRound, NanumBarunPen, MaruBuri
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
+
+// REUSE-IgnoreEnd
diff --git a/static.files/SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2 b/static.files/SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2
new file mode 100644
index 0000000..462c34e
--- /dev/null
+++ b/static.files/SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2
Binary files differ
diff --git a/static.files/SourceCodePro-LICENSE-d180d465a756484a.txt b/static.files/SourceCodePro-LICENSE-d180d465a756484a.txt
new file mode 100644
index 0000000..0d2941e
--- /dev/null
+++ b/static.files/SourceCodePro-LICENSE-d180d465a756484a.txt
@@ -0,0 +1,97 @@
+// REUSE-IgnoreStart
+
+Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+
+This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
+
+// REUSE-IgnoreEnd
diff --git a/static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2 b/static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2
new file mode 100644
index 0000000..10b558e
--- /dev/null
+++ b/static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2
Binary files differ
diff --git a/static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2 b/static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2
new file mode 100644
index 0000000..5ec64ee
--- /dev/null
+++ b/static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2
Binary files differ
diff --git a/static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2 b/static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2
new file mode 100644
index 0000000..181a07f
--- /dev/null
+++ b/static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2
Binary files differ
diff --git a/static.files/SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2 b/static.files/SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2
new file mode 100644
index 0000000..2ae08a7
--- /dev/null
+++ b/static.files/SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2
Binary files differ
diff --git a/static.files/SourceSerif4-LICENSE-3bb119e13b1258b7.md b/static.files/SourceSerif4-LICENSE-3bb119e13b1258b7.md
new file mode 100644
index 0000000..175fa4f
--- /dev/null
+++ b/static.files/SourceSerif4-LICENSE-3bb119e13b1258b7.md
@@ -0,0 +1,98 @@
+<!-- REUSE-IgnoreStart -->
+
+Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries.
+Copyright 2014 - 2023 Adobe (http://www.adobe.com/), with Reserved Font Name ‘Source’. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+
+This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
+
+<!-- REUSE-IgnoreEnd -->
diff --git a/static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2 b/static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2
new file mode 100644
index 0000000..0263fc3
--- /dev/null
+++ b/static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2
Binary files differ
diff --git a/static.files/clipboard-24048e6d87f63d07.svg b/static.files/clipboard-24048e6d87f63d07.svg
new file mode 100644
index 0000000..e437c83
--- /dev/null
+++ b/static.files/clipboard-24048e6d87f63d07.svg
@@ -0,0 +1 @@
+<svg width="19" height="18" viewBox="0 0 24 25" xmlns="http://www.w3.org/2000/svg" aria-label="Copy to clipboard"><path d="M18 20h2v3c0 1-1 2-2 2H2c-.998 0-2-1-2-2V5c0-.911.755-1.667 1.667-1.667h5A3.323 3.323 0 0110 0a3.323 3.323 0 013.333 3.333h5C19.245 3.333 20 4.09 20 5v8.333h-2V9H2v14h16v-3zM3 7h14c0-.911-.793-1.667-1.75-1.667H13.5c-.957 0-1.75-.755-1.75-1.666C11.75 2.755 10.957 2 10 2s-1.75.755-1.75 1.667c0 .911-.793 1.666-1.75 1.666H4.75C3.793 5.333 3 6.09 3 7z"/><path d="M4 19h6v2H4zM12 11H4v2h8zM4 17h4v-2H4zM15 15v-3l-4.5 4.5L15 21v-3l8.027-.032L23 15z"/></svg>
diff --git a/static.files/favicon-2c020d218678b618.svg b/static.files/favicon-2c020d218678b618.svg
new file mode 100644
index 0000000..8b34b51
--- /dev/null
+++ b/static.files/favicon-2c020d218678b618.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;">
+<defs>
+  <style type="text/css"><![CDATA[
+    #logo {
+      fill-rule: nonzero;
+    }
+    #logo-teeth {
+      stroke: #000000;
+      stroke-width: 0.92px;
+    }
+    @media (prefers-color-scheme: dark) {
+      #logo {
+        fill: #FFFFFF;
+        fill-rule: nonzero;
+      }
+      #logo-teeth {
+        fill: #FFFFFF;
+        stroke: #FFFFFF;
+        stroke-width: 0.92px;
+      }
+    }
+  ]]></style>
+</defs>
+<path id="logo" d="M15.993,1.54c-7.972,0 -14.461,6.492 -14.461,14.462c0,7.969 6.492,14.461 14.461,14.461c7.97,0 14.462,-6.492 14.462,-14.461c0,-7.97 -6.492,-14.462 -14.462,-14.462Zm-0.021,1.285c0.511,0.013 0.924,0.439 0.924,0.951c0,0.522 -0.43,0.952 -0.952,0.952c-0.522,0 -0.951,-0.43 -0.951,-0.952c0,0 0,0 0,0c0,-0.522 0.429,-0.952 0.951,-0.952c0.01,0 0.019,0.001 0.028,0.001Zm2.178,1.566c3.379,0.633 6.313,2.723 8.016,5.709l-1.123,2.533c-0.193,0.438 0.006,0.952 0.44,1.147l2.16,0.958c0.067,0.675 0.076,1.355 0.025,2.031l-1.202,0c-0.12,0 -0.169,0.08 -0.169,0.196l0,0.551c0,1.297 -0.731,1.582 -1.373,1.652c-0.612,0.07 -1.288,-0.257 -1.374,-0.63c-0.361,-2.029 -0.961,-2.46 -1.909,-3.21c1.178,-0.746 2.401,-1.85 2.401,-3.325c0,-1.594 -1.092,-2.597 -1.835,-3.09c-1.046,-0.688 -2.203,-0.826 -2.515,-0.826l-12.421,0c1.717,-1.918 4.02,-3.218 6.55,-3.696l1.466,1.536c0.33,0.346 0.878,0.361 1.223,0.028l1.64,-1.564Zm-13.522,7.043c0.511,0.015 0.924,0.44 0.924,0.951c0,0.522 -0.43,0.952 -0.952,0.952c-0.522,0 -0.951,-0.43 -0.951,-0.952c0,0 0,0 0,0c0,-0.522 0.429,-0.951 0.951,-0.951c0.009,0 0.019,0 0.028,0Zm22.685,0.043c0.511,0.015 0.924,0.44 0.924,0.951c0,0.522 -0.43,0.952 -0.952,0.952c-0.522,0 -0.951,-0.43 -0.951,-0.952c0,0 0,0 0,0c0,-0.522 0.429,-0.952 0.951,-0.952c0.01,0 0.019,0 0.028,0.001Zm-20.892,0.153l1.658,0l0,7.477l-3.347,0c-0.414,-1.452 -0.542,-2.97 -0.38,-4.47l2.05,-0.912c0.438,-0.195 0.637,-0.706 0.441,-1.144l-0.422,-0.951Zm6.92,0.079l3.949,0c0.205,0 1.441,0.236 1.441,1.163c0,0.768 -0.948,1.043 -1.728,1.043l-3.665,0l0.003,-2.206Zm0,5.373l3.026,0c0.275,0 1.477,0.079 1.86,1.615c0.119,0.471 0.385,2.007 0.566,2.499c0.18,0.551 0.911,1.652 1.691,1.652l4.938,0c-0.331,0.444 -0.693,0.863 -1.083,1.255l-2.01,-0.432c-0.468,-0.101 -0.93,0.199 -1.031,0.667l-0.477,2.228c-3.104,1.406 -6.672,1.389 -9.762,-0.046l-0.478,-2.228c-0.101,-0.468 -0.56,-0.767 -1.028,-0.667l-1.967,0.423c-0.365,-0.377 -0.704,-0.778 -1.016,-1.2l9.567,0c0.107,0 0.181,-0.018 0.181,-0.119l0,-3.384c0,-0.097 -0.074,-0.119 -0.181,-0.119l-2.799,0l0.003,-2.144Zm-4.415,7.749c0.512,0.015 0.924,0.44 0.924,0.951c0,0.522 -0.429,0.952 -0.951,0.952c-0.522,0 -0.952,-0.43 -0.952,-0.952c0,0 0,0 0,0c0,-0.522 0.43,-0.952 0.952,-0.952c0.009,0 0.018,0.001 0.027,0.001Zm14.089,0.043c0.511,0.015 0.924,0.439 0.923,0.951c0,0.522 -0.429,0.952 -0.951,0.952c-0.522,0 -0.951,-0.43 -0.951,-0.952c0,0 0,0 0,0c0,-0.522 0.429,-0.952 0.951,-0.952c0.009,0 0.018,0 0.028,0.001Z"/><path id="logo-teeth" d="M29.647,16.002c0,7.49 -6.163,13.653 -13.654,13.653c-7.49,0 -13.654,-6.163 -13.654,-13.653c0,-7.491 6.164,-13.654 13.654,-13.654c7.491,0 13.654,6.163 13.654,13.654Zm-0.257,-1.319l2.13,1.319l-2.13,1.318l1.83,1.71l-2.344,0.878l1.463,2.035l-2.475,0.404l1.04,2.282l-2.506,-0.089l0.575,2.442l-2.441,-0.576l0.089,2.506l-2.283,-1.04l-0.403,2.475l-2.035,-1.462l-0.878,2.343l-1.71,-1.829l-1.319,2.129l-1.318,-2.129l-1.71,1.829l-0.878,-2.343l-2.035,1.462l-0.404,-2.475l-2.282,1.04l0.089,-2.506l-2.442,0.576l0.575,-2.442l-2.505,0.089l1.04,-2.282l-2.475,-0.404l1.462,-2.035l-2.343,-0.878l1.829,-1.71l-2.129,-1.318l2.129,-1.319l-1.829,-1.71l2.343,-0.878l-1.462,-2.035l2.475,-0.404l-1.04,-2.282l2.505,0.089l-0.575,-2.441l2.442,0.575l-0.089,-2.506l2.282,1.04l0.404,-2.475l2.035,1.463l0.878,-2.344l1.71,1.83l1.318,-2.13l1.319,2.13l1.71,-1.83l0.878,2.344l2.035,-1.463l0.403,2.475l2.283,-1.04l-0.089,2.506l2.441,-0.575l-0.575,2.441l2.506,-0.089l-1.04,2.282l2.475,0.404l-1.463,2.035l2.344,0.878l-1.83,1.71Z"/></svg>
diff --git a/static.files/favicon-32x32-422f7d1d52889060.png b/static.files/favicon-32x32-422f7d1d52889060.png
new file mode 100644
index 0000000..69b8613
--- /dev/null
+++ b/static.files/favicon-32x32-422f7d1d52889060.png
Binary files differ
diff --git a/static.files/main-c97aec732c613ca4.js b/static.files/main-c97aec732c613ca4.js
new file mode 100644
index 0000000..3774d6f
--- /dev/null
+++ b/static.files/main-c97aec732c613ca4.js
@@ -0,0 +1,11 @@
+"use strict";window.RUSTDOC_TOOLTIP_HOVER_MS=300;window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS=450;function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}function hideMain(){addClass(document.getElementById(MAIN_ID),"hidden")}function showMain(){removeClass(document.getElementById(MAIN_ID),"hidden")}function blurHandler(event,parentElem,hideCallback){if(!parentElem.contains(document.activeElement)&&!parentElem.contains(event.relatedTarget)){hideCallback()}}window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");function setMobileTopbar(){const mobileTopbar=document.querySelector(".mobile-topbar");const locationTitle=document.querySelector(".sidebar h2.location");if(mobileTopbar){const mobileTitle=document.createElement("h2");mobileTitle.className="location";if(hasClass(document.querySelector(".rustdoc"),"crate")){mobileTitle.innerHTML=`Crate <a href="#">${window.currentCrate}</a>`}else if(locationTitle){mobileTitle.innerHTML=locationTitle.innerHTML}mobileTopbar.appendChild(mobileTitle)}}function getVirtualKey(ev){if("key"in ev&&typeof ev.key!=="undefined"){return ev.key}const c=ev.charCode||ev.keyCode;if(c===27){return"Escape"}return String.fromCharCode(c)}const MAIN_ID="main-content";const SETTINGS_BUTTON_ID="settings-menu";const ALTERNATIVE_DISPLAY_ID="alternative-display";const NOT_DISPLAYED_ID="not-displayed";const HELP_BUTTON_ID="help-button";function getSettingsButton(){return document.getElementById(SETTINGS_BUTTON_ID)}function getHelpButton(){return document.getElementById(HELP_BUTTON_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}function getOrCreateSection(id,classes){let el=document.getElementById(id);if(!el){el=document.createElement("section");el.id=id;el.className=classes;insertAfter(el,document.getElementById(MAIN_ID))}return el}function getAlternativeDisplayElem(){return getOrCreateSection(ALTERNATIVE_DISPLAY_ID,"content hidden")}function getNotDisplayedElem(){return getOrCreateSection(NOT_DISPLAYED_ID,"hidden")}function switchDisplayedElement(elemToDisplay){const el=getAlternativeDisplayElem();if(el.children.length>0){getNotDisplayedElem().appendChild(el.firstElementChild)}if(elemToDisplay===null){addClass(el,"hidden");showMain();return}el.appendChild(elemToDisplay);hideMain();removeClass(el,"hidden")}function browserSupportsHistoryApi(){return window.history&&typeof window.history.pushState==="function"}function preLoadCss(cssUrl){const link=document.createElement("link");link.href=cssUrl;link.rel="preload";link.as="style";document.getElementsByTagName("head")[0].appendChild(link)}(function(){const isHelpPage=window.location.pathname.endsWith("/help.html");function loadScript(url,errorCallback){const script=document.createElement("script");script.src=url;if(errorCallback!==undefined){script.onerror=errorCallback}document.head.append(script)}getSettingsButton().onclick=event=>{if(event.ctrlKey||event.altKey||event.metaKey){return}window.hideAllModals(false);addClass(getSettingsButton(),"rotate");event.preventDefault();loadScript(getVar("static-root-path")+getVar("settings-js"));setTimeout(()=>{const themes=getVar("themes").split(",");for(const theme of themes){if(theme!==""){preLoadCss(getVar("root-path")+theme+".css")}}},0)};window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:()=>{let el=document.getElementById("search");if(!el){el=document.createElement("section");el.id="search";getNotDisplayedElem().appendChild(el)}return el},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:()=>{if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},isDisplayed:()=>searchState.outputElement().parentElement.id===ALTERNATIVE_DISPLAY_ID,focus:()=>{searchState.input.focus()},defocus:()=>{searchState.input.blur()},showResults:search=>{if(search===null||typeof search==="undefined"){search=searchState.outputElement()}switchDisplayedElement(search);searchState.mouseMovedAfterSearch=false;document.title=searchState.title},removeQueryParameters:()=>{document.title=searchState.titleBeforeSearch;if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.hash)}},hideResults:()=>{switchDisplayedElement(null);searchState.removeQueryParameters()},getQueryStringParams:()=>{const params={};window.location.search.substring(1).split("&").map(s=>{const pair=s.split("=").map(x=>x.replace(/\+/g," "));params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},setup:()=>{const search_input=searchState.input;if(!searchState.input){return}let searchLoaded=false;function sendSearchForm(){document.getElementsByClassName("search-form")[0].submit()}function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(getVar("static-root-path")+getVar("search-js"),sendSearchForm);loadScript(resourcePath("search-index",".js"),sendSearchForm)}}search_input.addEventListener("focus",()=>{search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});if(search_input.value!==""){loadSearch()}const params=searchState.getQueryStringParams();if(params.search!==undefined){searchState.setLoadingSearch();loadSearch()}},setLoadingSearch:()=>{const search=searchState.outputElement();search.innerHTML="<h3 class=\"search-loading\">"+searchState.loadingText+"</h3>";searchState.showResults(search)},descShards:new Map(),loadDesc:async function({descShard,descIndex}){if(descShard.promise===null){descShard.promise=new Promise((resolve,reject)=>{descShard.resolve=resolve;const ds=descShard;const fname=`${ds.crate}-desc-${ds.shard}-`;const url=resourcePath(`search.desc/${descShard.crate}/${fname}`,".js",);loadScript(url,reject)})}const list=await descShard.promise;return list[descIndex]},loadedDescShard:function(crate,shard,data){this.descShards.get(crate)[shard].resolve(data.split("\n"))},};const toggleAllDocsId="toggle-all-docs";let savedHash="";function handleHashes(ev){if(ev!==null&&searchState.isDisplayed()&&ev.newURL){switchDisplayedElement(null);const hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}const elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}const pageId=window.location.hash.replace(/^#/,"");if(savedHash!==pageId){savedHash=pageId;if(pageId!==""){expandSection(pageId)}}if(savedHash.startsWith("impl-")){const splitAt=savedHash.indexOf("/");if(splitAt!==-1){const implId=savedHash.slice(0,splitAt);const assocId=savedHash.slice(splitAt+1);const implElem=document.getElementById(implId);if(implElem&&implElem.parentElement.tagName==="SUMMARY"&&implElem.parentElement.parentElement.tagName==="DETAILS"){onEachLazy(implElem.parentElement.parentElement.querySelectorAll(`[id^="${assocId}"]`),item=>{const numbered=/([^-]+)-([0-9]+)/.exec(item.id);if(item.id===assocId||(numbered&&numbered[1]===assocId)){openParentDetails(item);item.scrollIntoView();setTimeout(()=>{window.location.replace("#"+item.id)},0)}},)}}}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function handleEscape(ev){searchState.clearInputTimeout();searchState.hideResults();ev.preventDefault();searchState.defocus();window.hideAllModals(true)}function handleShortcut(ev){const disableShortcuts=getSettingValue("disable-shortcuts")==="true";if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"&&document.activeElement.type!=="checkbox"&&document.activeElement.type!=="radio"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":ev.preventDefault();searchState.focus();break;case"+":ev.preventDefault();expandAllDocs();break;case"-":ev.preventDefault();collapseAllDocs();break;case"?":showHelp();break;default:break}}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);function addSidebarItems(){if(!window.SIDEBAR_ITEMS){return}const sidebar=document.getElementsByClassName("sidebar-elems")[0];function block(shortty,id,longty){const filtered=window.SIDEBAR_ITEMS[shortty];if(!filtered){return}const modpath=hasClass(document.querySelector(".rustdoc"),"mod")?"../":"";const h3=document.createElement("h3");h3.innerHTML=`<a href="${modpath}index.html#${id}">${longty}</a>`;const ul=document.createElement("ul");ul.className="block "+shortty;for(const name of filtered){let path;if(shortty==="mod"){path=`${modpath}${name}/index.html`}else{path=`${modpath}${shortty}.${name}.html`}let current_page=document.location.href.toString();if(current_page.endsWith("/")){current_page+="index.html"}const link=document.createElement("a");link.href=path;if(path===current_page){link.className="current"}link.textContent=name;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebar.appendChild(h3);sidebar.appendChild(ul)}if(sidebar){block("primitive","primitives","Primitive Types");block("mod","modules","Modules");block("macro","macros","Macros");block("struct","structs","Structs");block("enum","enums","Enums");block("constant","constants","Constants");block("static","static","Statics");block("trait","traits","Traits");block("fn","functions","Functions");block("type","types","Type Aliases");block("union","unions","Unions");block("foreigntype","foreign-types","Foreign Types");block("keyword","keywords","Keywords");block("opaque","opaque-types","Opaque Types");block("attr","attributes","Attribute Macros");block("derive","derives","Derive Macros");block("traitalias","trait-aliases","Trait Aliases")}}window.register_implementors=imp=>{const implementors=document.getElementById("implementors-list");const synthetic_implementors=document.getElementById("synthetic-implementors-list");const inlined_types=new Set();const TEXT_IDX=0;const SYNTHETIC_IDX=1;const TYPES_IDX=2;if(synthetic_implementors){onEachLazy(synthetic_implementors.getElementsByClassName("impl"),el=>{const aliases=el.getAttribute("data-aliases");if(!aliases){return}aliases.split(",").forEach(alias=>{inlined_types.add(alias)})})}let currentNbImpls=implementors.getElementsByClassName("impl").length;const traitName=document.querySelector(".main-heading h1 > .trait").textContent;const baseIdName="impl-"+traitName+"-";const libs=Object.getOwnPropertyNames(imp);const script=document.querySelector("script[data-ignore-extern-crates]");const ignoreExternCrates=new Set((script?script.getAttribute("data-ignore-extern-crates"):"").split(","),);for(const lib of libs){if(lib===window.currentCrate||ignoreExternCrates.has(lib)){continue}const structs=imp[lib];struct_loop:for(const struct of structs){const list=struct[SYNTHETIC_IDX]?synthetic_implementors:implementors;if(struct[SYNTHETIC_IDX]){for(const struct_type of struct[TYPES_IDX]){if(inlined_types.has(struct_type)){continue struct_loop}inlined_types.add(struct_type)}}const code=document.createElement("h3");code.innerHTML=struct[TEXT_IDX];addClass(code,"code-header");onEachLazy(code.getElementsByTagName("a"),elem=>{const href=elem.getAttribute("href");if(href&&!href.startsWith("#")&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});const currentId=baseIdName+currentNbImpls;const anchor=document.createElement("a");anchor.href="#"+currentId;addClass(anchor,"anchor");const display=document.createElement("div");display.id=currentId;addClass(display,"impl");display.appendChild(anchor);display.appendChild(code);list.appendChild(display);currentNbImpls+=1}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}window.register_type_impls=imp=>{if(!imp||!imp[window.currentCrate]){return}window.pending_type_impls=null;const idMap=new Map();let implementations=document.getElementById("implementations-list");let trait_implementations=document.getElementById("trait-implementations-list");let trait_implementations_header=document.getElementById("trait-implementations");const script=document.querySelector("script[data-self-path]");const selfPath=script?script.getAttribute("data-self-path"):null;const mainContent=document.querySelector("#main-content");const sidebarSection=document.querySelector(".sidebar section");let methods=document.querySelector(".sidebar .block.method");let associatedTypes=document.querySelector(".sidebar .block.associatedtype");let associatedConstants=document.querySelector(".sidebar .block.associatedconstant");let sidebarTraitList=document.querySelector(".sidebar .block.trait-implementation");for(const impList of imp[window.currentCrate]){const types=impList.slice(2);const text=impList[0];const isTrait=impList[1]!==0;const traitName=impList[1];if(types.indexOf(selfPath)===-1){continue}let outputList=isTrait?trait_implementations:implementations;if(outputList===null){const outputListName=isTrait?"Trait Implementations":"Implementations";const outputListId=isTrait?"trait-implementations-list":"implementations-list";const outputListHeaderId=isTrait?"trait-implementations":"implementations";const outputListHeader=document.createElement("h2");outputListHeader.id=outputListHeaderId;outputListHeader.innerText=outputListName;outputList=document.createElement("div");outputList.id=outputListId;if(isTrait){const link=document.createElement("a");link.href=`#${outputListHeaderId}`;link.innerText="Trait Implementations";const h=document.createElement("h3");h.appendChild(link);trait_implementations=outputList;trait_implementations_header=outputListHeader;sidebarSection.appendChild(h);sidebarTraitList=document.createElement("ul");sidebarTraitList.className="block trait-implementation";sidebarSection.appendChild(sidebarTraitList);mainContent.appendChild(outputListHeader);mainContent.appendChild(outputList)}else{implementations=outputList;if(trait_implementations){mainContent.insertBefore(outputListHeader,trait_implementations_header);mainContent.insertBefore(outputList,trait_implementations_header)}else{const mainContent=document.querySelector("#main-content");mainContent.appendChild(outputListHeader);mainContent.appendChild(outputList)}}}const template=document.createElement("template");template.innerHTML=text;onEachLazy(template.content.querySelectorAll("a"),elem=>{const href=elem.getAttribute("href");if(href&&!href.startsWith("#")&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});onEachLazy(template.content.querySelectorAll("[id]"),el=>{let i=0;if(idMap.has(el.id)){i=idMap.get(el.id)}else if(document.getElementById(el.id)){i=1;while(document.getElementById(`${el.id}-${2 * i}`)){i=2*i}while(document.getElementById(`${el.id}-${i}`)){i+=1}}if(i!==0){const oldHref=`#${el.id}`;const newHref=`#${el.id}-${i}`;el.id=`${el.id}-${i}`;onEachLazy(template.content.querySelectorAll("a[href]"),link=>{if(link.getAttribute("href")===oldHref){link.href=newHref}})}idMap.set(el.id,i+1)});const templateAssocItems=template.content.querySelectorAll("section.tymethod, "+"section.method, section.associatedtype, section.associatedconstant");if(isTrait){const li=document.createElement("li");const a=document.createElement("a");a.href=`#${template.content.querySelector(".impl").id}`;a.textContent=traitName;li.appendChild(a);sidebarTraitList.append(li)}else{onEachLazy(templateAssocItems,item=>{let block=hasClass(item,"associatedtype")?associatedTypes:(hasClass(item,"associatedconstant")?associatedConstants:(methods));if(!block){const blockTitle=hasClass(item,"associatedtype")?"Associated Types":(hasClass(item,"associatedconstant")?"Associated Constants":("Methods"));const blockClass=hasClass(item,"associatedtype")?"associatedtype":(hasClass(item,"associatedconstant")?"associatedconstant":("method"));const blockHeader=document.createElement("h3");const blockLink=document.createElement("a");blockLink.href="#implementations";blockLink.innerText=blockTitle;blockHeader.appendChild(blockLink);block=document.createElement("ul");block.className=`block ${blockClass}`;const insertionReference=methods||sidebarTraitList;if(insertionReference){const insertionReferenceH=insertionReference.previousElementSibling;sidebarSection.insertBefore(blockHeader,insertionReferenceH);sidebarSection.insertBefore(block,insertionReferenceH)}else{sidebarSection.appendChild(blockHeader);sidebarSection.appendChild(block)}if(hasClass(item,"associatedtype")){associatedTypes=block}else if(hasClass(item,"associatedconstant")){associatedConstants=block}else{methods=block}}const li=document.createElement("li");const a=document.createElement("a");a.innerText=item.id.split("-")[0].split(".")[1];a.href=`#${item.id}`;li.appendChild(a);block.appendChild(li)})}outputList.appendChild(template.content)}for(const list of[methods,associatedTypes,associatedConstants,sidebarTraitList]){if(!list){continue}const newChildren=Array.prototype.slice.call(list.children);newChildren.sort((a,b)=>{const aI=a.innerText;const bI=b.innerText;return aI<bI?-1:aI>bI?1:0});list.replaceChildren(...newChildren)}};if(window.pending_type_impls){window.register_type_impls(window.pending_type_impls)}function addSidebarCrates(){if(!window.ALL_CRATES){return}const sidebarElems=document.getElementsByClassName("sidebar-elems")[0];if(!sidebarElems){return}const h3=document.createElement("h3");h3.innerHTML="Crates";const ul=document.createElement("ul");ul.className="block crate";for(const crate of window.ALL_CRATES){const link=document.createElement("a");link.href=window.rootPath+crate+"/index.html";link.textContent=crate;const li=document.createElement("li");if(window.rootPath!=="./"&&crate===window.currentCrate){li.className="current"}li.appendChild(link);ul.appendChild(li)}sidebarElems.appendChild(h3);sidebarElems.appendChild(ul)}function expandAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hasClass(e,"type-contents-toggle")&&!hasClass(e,"more-examples-toggle")){e.open=true}});innerToggle.title="collapse all docs";innerToggle.children[0].innerText="\u2212"}function collapseAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(e.parentNode.id!=="implementations-list"||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});innerToggle.title="expand all docs";innerToggle.children[0].innerText="+"}function toggleAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}if(hasClass(innerToggle,"will-expand")){expandAllDocs()}else{collapseAllDocs()}}(function(){const toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}const hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";const hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";const hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){const list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),e=>{e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}})}());window.rustdoc_add_line_numbers_to_examples=()=>{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");if(line_numbers.length>0){return}const count=x.textContent.split("\n").length;const elems=[];for(let i=0;i<count;++i){elems.push(i+1)}const node=document.createElement("pre");addClass(node,"example-line-numbers");node.innerHTML=elems.join("\n");parent.insertBefore(node,x)})};window.rustdoc_remove_line_numbers_from_examples=()=>{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");for(const node of line_numbers){parent.removeChild(node)}})};if(getSettingValue("line-numbers")==="true"){window.rustdoc_add_line_numbers_to_examples()}function showSidebar(){window.hideAllModals(false);const sidebar=document.getElementsByClassName("sidebar")[0];addClass(sidebar,"shown")}function hideSidebar(){const sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown")}window.addEventListener("resize",()=>{if(window.CURRENT_TOOLTIP_ELEMENT){const base=window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE;const force_visible=base.TOOLTIP_FORCE_VISIBLE;hideTooltip(false);if(force_visible){showTooltip(base);base.TOOLTIP_FORCE_VISIBLE=true}}});const mainElem=document.getElementById(MAIN_ID);if(mainElem){mainElem.addEventListener("click",hideSidebar)}onEachLazy(document.querySelectorAll("a[href^='#']"),el=>{el.addEventListener("click",()=>{expandSection(el.hash.slice(1));hideSidebar()})});onEachLazy(document.querySelectorAll(".toggle > summary:not(.hideme)"),el=>{el.addEventListener("click",e=>{if(e.target.tagName!=="SUMMARY"&&e.target.tagName!=="A"){e.preventDefault()}})});function showTooltip(e){const notable_ty=e.getAttribute("data-notable-ty");if(!window.NOTABLE_TRAITS&&notable_ty){const data=document.getElementById("notable-traits-data");if(data){window.NOTABLE_TRAITS=JSON.parse(data.innerText)}else{throw new Error("showTooltip() called with notable without any notable traits!")}}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE===e){clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);return}window.hideAllModals(false);const wrapper=document.createElement("div");if(notable_ty){wrapper.innerHTML="<div class=\"content\">"+window.NOTABLE_TRAITS[notable_ty]+"</div>"}else{if(e.getAttribute("title")!==null){e.setAttribute("data-title",e.getAttribute("title"));e.removeAttribute("title")}if(e.getAttribute("data-title")!==null){const titleContent=document.createElement("div");titleContent.className="content";titleContent.appendChild(document.createTextNode(e.getAttribute("data-title")));wrapper.appendChild(titleContent)}}wrapper.className="tooltip popover";const focusCatcher=document.createElement("div");focusCatcher.setAttribute("tabindex","0");focusCatcher.onfocus=hideTooltip;wrapper.appendChild(focusCatcher);const pos=e.getBoundingClientRect();wrapper.style.top=(pos.top+window.scrollY+pos.height)+"px";wrapper.style.left=0;wrapper.style.right="auto";wrapper.style.visibility="hidden";const body=document.getElementsByTagName("body")[0];body.appendChild(wrapper);const wrapperPos=wrapper.getBoundingClientRect();const finalPos=pos.left+window.scrollX-wrapperPos.width+24;if(finalPos>0){wrapper.style.left=finalPos+"px"}else{wrapper.style.setProperty("--popover-arrow-offset",(wrapperPos.right-pos.right+4)+"px",)}wrapper.style.visibility="";window.CURRENT_TOOLTIP_ELEMENT=wrapper;window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE=e;clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);wrapper.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}clearTooltipHoverTimeout(e)};wrapper.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!e.contains(ev.relatedTarget)){setTooltipHoverTimeout(e,false);addClass(wrapper,"fade-out")}}}function setTooltipHoverTimeout(element,show){clearTooltipHoverTimeout(element);if(!show&&!window.CURRENT_TOOLTIP_ELEMENT){return}if(show&&window.CURRENT_TOOLTIP_ELEMENT){return}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE!==element){return}element.TOOLTIP_HOVER_TIMEOUT=setTimeout(()=>{if(show){showTooltip(element)}else if(!element.TOOLTIP_FORCE_VISIBLE){hideTooltip(false)}},show?window.RUSTDOC_TOOLTIP_HOVER_MS:window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS)}function clearTooltipHoverTimeout(element){if(element.TOOLTIP_HOVER_TIMEOUT!==undefined){removeClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out");clearTimeout(element.TOOLTIP_HOVER_TIMEOUT);delete element.TOOLTIP_HOVER_TIMEOUT}}function tooltipBlurHandler(event){if(window.CURRENT_TOOLTIP_ELEMENT&&!window.CURRENT_TOOLTIP_ELEMENT.contains(document.activeElement)&&!window.CURRENT_TOOLTIP_ELEMENT.contains(event.relatedTarget)&&!window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.contains(document.activeElement)&&!window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.contains(event.relatedTarget)){setTimeout(()=>hideTooltip(false),0)}}function hideTooltip(focus){if(window.CURRENT_TOOLTIP_ELEMENT){if(window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE){if(focus){window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.focus()}window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE=false}const body=document.getElementsByTagName("body")[0];body.removeChild(window.CURRENT_TOOLTIP_ELEMENT);clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);window.CURRENT_TOOLTIP_ELEMENT=null}}onEachLazy(document.getElementsByClassName("tooltip"),e=>{e.onclick=()=>{e.TOOLTIP_FORCE_VISIBLE=e.TOOLTIP_FORCE_VISIBLE?false:true;if(window.CURRENT_TOOLTIP_ELEMENT&&!e.TOOLTIP_FORCE_VISIBLE){hideTooltip(true)}else{showTooltip(e);window.CURRENT_TOOLTIP_ELEMENT.setAttribute("tabindex","0");window.CURRENT_TOOLTIP_ELEMENT.focus();window.CURRENT_TOOLTIP_ELEMENT.onblur=tooltipBlurHandler}return false};e.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointermove=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&window.CURRENT_TOOLTIP_ELEMENT&&!window.CURRENT_TOOLTIP_ELEMENT.contains(ev.relatedTarget)){setTooltipHoverTimeout(e,false);addClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out")}}});const sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",()=>{const sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){showSidebar()}else{hideSidebar()}})}function helpBlurHandler(event){blurHandler(event,getHelpButton(),window.hidePopoverMenus)}function buildHelpMenu(){const book_info=document.createElement("span");const channel=getVar("channel");book_info.className="top";book_info.innerHTML=`You can find more information in \
+<a href="https://doc.rust-lang.org/${channel}/rustdoc/">the rustdoc book</a>.`;const shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["&#9166;","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(x=>"<dt>"+x[0].split(" ").map((y,index)=>((index&1)===0?"<kbd>"+y+"</kbd>":" "+y+" ")).join("")+"</dt><dd>"+x[1]+"</dd>").join("");const div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="<h2>Keyboard Shortcuts</h2><dl>"+shortcuts+"</dl></div>";const infos=[`For a full list of all search features, take a look <a \
+href="https://doc.rust-lang.org/${channel}/rustdoc/read-documentation/search.html">here</a>.`,"Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to \
+             restrict the search to a given item kind.","Accepted kinds are: <code>fn</code>, <code>mod</code>, <code>struct</code>, \
+             <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, \
+             and <code>const</code>.","Search functions by type signature (e.g., <code>vec -&gt; usize</code> or \
+             <code>-&gt; vec</code> or <code>String, enum:Cow -&gt; bool</code>)","You can look for items with an exact name by putting double quotes around \
+             your request: <code>\"string\"</code>","Look for functions that accept or return \
+              <a href=\"https://doc.rust-lang.org/std/primitive.slice.html\">slices</a> and \
+              <a href=\"https://doc.rust-lang.org/std/primitive.array.html\">arrays</a> by writing \
+              square brackets (e.g., <code>-&gt; [u8]</code> or <code>[] -&gt; Option</code>)","Look for items inside another one by searching for a path: <code>vec::Vec</code>",].map(x=>"<p>"+x+"</p>").join("");const div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="<h2>Search Tricks</h2>"+infos;const rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";const rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);const container=document.createElement("div");if(!isHelpPage){container.className="popover"}container.id="help";container.style.display="none";const side_by_side=document.createElement("div");side_by_side.className="side-by-side";side_by_side.appendChild(div_shortcuts);side_by_side.appendChild(div_infos);container.appendChild(book_info);container.appendChild(side_by_side);container.appendChild(rustdoc_version);if(isHelpPage){const help_section=document.createElement("section");help_section.appendChild(container);document.getElementById("main-content").appendChild(help_section);container.style.display="block"}else{const help_button=getHelpButton();help_button.appendChild(container);container.onblur=helpBlurHandler;help_button.onblur=helpBlurHandler;help_button.children[0].onblur=helpBlurHandler}return container}window.hideAllModals=switchFocus=>{hideSidebar();window.hidePopoverMenus();hideTooltip(switchFocus)};window.hidePopoverMenus=()=>{onEachLazy(document.querySelectorAll(".search-form .popover"),elem=>{elem.style.display="none"})};function getHelpMenu(buildNeeded){let menu=getHelpButton().querySelector(".popover");if(!menu&&buildNeeded){menu=buildHelpMenu()}return menu}function showHelp(){getHelpButton().querySelector("a").focus();const menu=getHelpMenu(true);if(menu.style.display==="none"){window.hideAllModals();menu.style.display=""}}if(isHelpPage){showHelp();document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault()})}else{document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault();const menu=getHelpMenu(true);const shouldShowHelp=menu.style.display==="none";if(shouldShowHelp){showHelp()}else{window.hidePopoverMenus()}})}setMobileTopbar();addSidebarItems();addSidebarCrates();onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){const SIDEBAR_MIN=100;const SIDEBAR_MAX=500;const RUSTDOC_MOBILE_BREAKPOINT=700;const BODY_MIN=400;const SIDEBAR_VANISH_THRESHOLD=SIDEBAR_MIN/2;const sidebarButton=document.getElementById("sidebar-button");if(sidebarButton){sidebarButton.addEventListener("click",e=>{removeClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","false");if(document.querySelector(".rustdoc.src")){window.rustdocToggleSrcSidebar()}e.preventDefault()})}let currentPointerId=null;let desiredSidebarSize=null;let pendingSidebarResizingFrame=false;const resizer=document.querySelector(".sidebar-resizer");const sidebar=document.querySelector(".sidebar");if(!resizer||!sidebar){return}const isSrcPage=hasClass(document.body,"src");function hideSidebar(){if(isSrcPage){window.rustdocCloseSourceSidebar();updateLocalStorage("src-sidebar-width",null);document.documentElement.style.removeProperty("--src-sidebar-width");sidebar.style.removeProperty("--src-sidebar-width");resizer.style.removeProperty("--src-sidebar-width")}else{addClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","true");updateLocalStorage("desktop-sidebar-width",null);document.documentElement.style.removeProperty("--desktop-sidebar-width");sidebar.style.removeProperty("--desktop-sidebar-width");resizer.style.removeProperty("--desktop-sidebar-width")}}function showSidebar(){if(isSrcPage){window.rustdocShowSourceSidebar()}else{removeClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","false")}}function changeSidebarSize(size){if(isSrcPage){updateLocalStorage("src-sidebar-width",size);sidebar.style.setProperty("--src-sidebar-width",size+"px");resizer.style.setProperty("--src-sidebar-width",size+"px")}else{updateLocalStorage("desktop-sidebar-width",size);sidebar.style.setProperty("--desktop-sidebar-width",size+"px");resizer.style.setProperty("--desktop-sidebar-width",size+"px")}}function isSidebarHidden(){return isSrcPage?!hasClass(document.documentElement,"src-sidebar-expanded"):hasClass(document.documentElement,"hide-sidebar")}function resize(e){if(currentPointerId===null||currentPointerId!==e.pointerId){return}e.preventDefault();const pos=e.clientX-3;if(pos<SIDEBAR_VANISH_THRESHOLD){hideSidebar()}else if(pos>=SIDEBAR_MIN){if(isSidebarHidden()){showSidebar()}const constrainedPos=Math.min(pos,window.innerWidth-BODY_MIN,SIDEBAR_MAX);changeSidebarSize(constrainedPos);desiredSidebarSize=constrainedPos;if(pendingSidebarResizingFrame!==false){clearTimeout(pendingSidebarResizingFrame)}pendingSidebarResizingFrame=setTimeout(()=>{if(currentPointerId===null||pendingSidebarResizingFrame===false){return}pendingSidebarResizingFrame=false;document.documentElement.style.setProperty("--resizing-sidebar-width",desiredSidebarSize+"px",)},100)}}window.addEventListener("resize",()=>{if(window.innerWidth<RUSTDOC_MOBILE_BREAKPOINT){return}stopResize();if(desiredSidebarSize>=(window.innerWidth-BODY_MIN)){changeSidebarSize(window.innerWidth-BODY_MIN)}else if(desiredSidebarSize!==null&&desiredSidebarSize>SIDEBAR_MIN){changeSidebarSize(desiredSidebarSize)}});function stopResize(e){if(currentPointerId===null){return}if(e){e.preventDefault()}desiredSidebarSize=sidebar.getBoundingClientRect().width;removeClass(resizer,"active");window.removeEventListener("pointermove",resize,false);window.removeEventListener("pointerup",stopResize,false);removeClass(document.documentElement,"sidebar-resizing");document.documentElement.style.removeProperty("--resizing-sidebar-width");if(resizer.releasePointerCapture){resizer.releasePointerCapture(currentPointerId);currentPointerId=null}}function initResize(e){if(currentPointerId!==null||e.altKey||e.ctrlKey||e.metaKey||e.button!==0){return}if(resizer.setPointerCapture){resizer.setPointerCapture(e.pointerId);if(!resizer.hasPointerCapture(e.pointerId)){resizer.releasePointerCapture(e.pointerId);return}currentPointerId=e.pointerId}window.hideAllModals(false);e.preventDefault();window.addEventListener("pointermove",resize,false);window.addEventListener("pointercancel",stopResize,false);window.addEventListener("pointerup",stopResize,false);addClass(resizer,"active");addClass(document.documentElement,"sidebar-resizing");const pos=e.clientX-sidebar.offsetLeft-3;document.documentElement.style.setProperty("--resizing-sidebar-width",pos+"px");desiredSidebarSize=null}resizer.addEventListener("pointerdown",initResize,false)}());(function(){let reset_button_timeout=null;const but=document.getElementById("copy-path");if(!but){return}but.onclick=()=>{const parent=but.parentElement;const path=[];onEach(parent.childNodes,child=>{if(child.tagName==="A"){path.push(child.textContent)}});const el=document.createElement("textarea");el.value=path.join("::");el.setAttribute("readonly","");el.style.position="absolute";el.style.left="-9999px";document.body.appendChild(el);el.select();document.execCommand("copy");document.body.removeChild(el);but.children[0].style.display="none";let tmp;if(but.childNodes.length<2){tmp=document.createTextNode("✓");but.appendChild(tmp)}else{onEachLazy(but.childNodes,e=>{if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent="✓"}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent="";reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}())
\ No newline at end of file
diff --git a/static.files/normalize-76eba96aa4d2e634.css b/static.files/normalize-76eba96aa4d2e634.css
new file mode 100644
index 0000000..469959f
--- /dev/null
+++ b/static.files/normalize-76eba96aa4d2e634.css
@@ -0,0 +1,2 @@
+ /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
+html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type="button"],[type="reset"],[type="submit"],button{-webkit-appearance:button}[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}
\ No newline at end of file
diff --git a/static.files/noscript-09095024cf37855e.css b/static.files/noscript-09095024cf37855e.css
new file mode 100644
index 0000000..5978694
--- /dev/null
+++ b/static.files/noscript-09095024cf37855e.css
@@ -0,0 +1 @@
+ #main-content .attributes{margin-left:0 !important;}#copy-path,#sidebar-button,.sidebar-resizer{display:none !important;}nav.sub{display:none;}.src .sidebar{display:none;}.notable-traits{display:none;}:root,:root:not([data-theme]){--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--mobile-sidebar-menu-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:rgb(78,139,202);--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);--sidebar-resizer-hover:hsl(207,90%,66%);--sidebar-resizer-active:hsl(207,90%,54%);}@media (prefers-color-scheme:dark){:root,:root:not([data-theme]){--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);--sidebar-resizer-hover:hsl(207,30%,54%);--sidebar-resizer-active:hsl(207,90%,54%);}}
\ No newline at end of file
diff --git a/static.files/rust-logo-151179464ae7ed46.svg b/static.files/rust-logo-151179464ae7ed46.svg
new file mode 100644
index 0000000..62424d8
--- /dev/null
+++ b/static.files/rust-logo-151179464ae7ed46.svg
@@ -0,0 +1,61 @@
+<svg version="1.1" height="106" width="106" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="logo" transform="translate(53, 53)">
+  <path id="r" transform="translate(0.5, 0.5)" stroke="black" stroke-width="1" stroke-linejoin="round" d="
+    M -9,-15 H 4 C 12,-15 12,-7 4,-7 H -9 Z
+    M -40,22 H 0 V 11 H -9 V 3 H 1 C 12,3 6,22 15,22 H 40
+    V 3 H 34 V 5 C 34,13 25,12 24,7 C 23,2 19,-2 18,-2 C 33,-10 24,-26 12,-26 H -35
+    V -15 H -25 V 11 H -40 Z" />
+  <g id="gear" mask="url(#holes)">
+    <circle r="43" fill="none" stroke="black" stroke-width="9" />
+    <g id="cogs">
+      <polygon id="cog" stroke="black" stroke-width="3" stroke-linejoin="round" points="46,3 51,0 46,-3" />
+      <use xlink:href="#cog" transform="rotate(11.25)" />
+      <use xlink:href="#cog" transform="rotate(22.50)" />
+      <use xlink:href="#cog" transform="rotate(33.75)" />
+      <use xlink:href="#cog" transform="rotate(45.00)" />
+      <use xlink:href="#cog" transform="rotate(56.25)" />
+      <use xlink:href="#cog" transform="rotate(67.50)" />
+      <use xlink:href="#cog" transform="rotate(78.75)" />
+      <use xlink:href="#cog" transform="rotate(90.00)" />
+      <use xlink:href="#cog" transform="rotate(101.25)" />
+      <use xlink:href="#cog" transform="rotate(112.50)" />
+      <use xlink:href="#cog" transform="rotate(123.75)" />
+      <use xlink:href="#cog" transform="rotate(135.00)" />
+      <use xlink:href="#cog" transform="rotate(146.25)" />
+      <use xlink:href="#cog" transform="rotate(157.50)" />
+      <use xlink:href="#cog" transform="rotate(168.75)" />
+      <use xlink:href="#cog" transform="rotate(180.00)" />
+      <use xlink:href="#cog" transform="rotate(191.25)" />
+      <use xlink:href="#cog" transform="rotate(202.50)" />
+      <use xlink:href="#cog" transform="rotate(213.75)" />
+      <use xlink:href="#cog" transform="rotate(225.00)" />
+      <use xlink:href="#cog" transform="rotate(236.25)" />
+      <use xlink:href="#cog" transform="rotate(247.50)" />
+      <use xlink:href="#cog" transform="rotate(258.75)" />
+      <use xlink:href="#cog" transform="rotate(270.00)" />
+      <use xlink:href="#cog" transform="rotate(281.25)" />
+      <use xlink:href="#cog" transform="rotate(292.50)" />
+      <use xlink:href="#cog" transform="rotate(303.75)" />
+      <use xlink:href="#cog" transform="rotate(315.00)" />
+      <use xlink:href="#cog" transform="rotate(326.25)" />
+      <use xlink:href="#cog" transform="rotate(337.50)" />
+      <use xlink:href="#cog" transform="rotate(348.75)" />
+    </g>
+    <g id="mounts">
+      <polygon id="mount" stroke="black" stroke-width="6" stroke-linejoin="round" points="-7,-42 0,-35 7,-42" />
+      <use xlink:href="#mount" transform="rotate(72)" />
+      <use xlink:href="#mount" transform="rotate(144)" />
+      <use xlink:href="#mount" transform="rotate(216)" />
+      <use xlink:href="#mount" transform="rotate(288)" />
+    </g>
+  </g>
+  <mask id="holes">
+    <rect x="-60" y="-60" width="120" height="120" fill="white"/>
+    <circle id="hole" cy="-40" r="3" />
+    <use xlink:href="#hole" transform="rotate(72)" />
+    <use xlink:href="#hole" transform="rotate(144)" />
+    <use xlink:href="#hole" transform="rotate(216)" />
+    <use xlink:href="#hole" transform="rotate(288)" />
+  </mask>
+</g>
+</svg>
diff --git a/static.files/rustdoc-2c208a72533b4dd0.css b/static.files/rustdoc-2c208a72533b4dd0.css
new file mode 100644
index 0000000..3b1630d
--- /dev/null
+++ b/static.files/rustdoc-2c208a72533b4dd0.css
@@ -0,0 +1,24 @@
+ :root{--nav-sub-mobile-padding:8px;--search-typename-width:6.75rem;--desktop-sidebar-width:200px;--src-sidebar-width:300px;--desktop-sidebar-z-index:100;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular-018c141bf0843ffd.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium-8f9a781e4970d388.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular-46f98efaafac5295.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2") format("woff2");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{box-sizing:border-box;}body{font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;font-feature-settings:"kern","liga";background-color:var(--main-background-color);color:var(--main-color);}h1{font-size:1.5rem;}h2{font-size:1.375rem;}h3{font-size:1.25rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:25px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}.docblock>h2:first-child,.docblock>h3:first-child,.docblock>h4:first-child,.docblock>h5:first-child,.docblock>h6:first-child{margin-top:0;}.main-heading h1{margin:0;padding:0;flex-grow:1;overflow-wrap:break-word;overflow-wrap:anywhere;}.main-heading{display:flex;flex-wrap:wrap;padding-bottom:6px;margin-bottom:15px;}.content h2,.top-doc .docblock>h3,.top-doc .docblock>h4{border-bottom:1px solid var(--headings-border-bottom-color);}h1,h2{line-height:1.25;padding-top:3px;padding-bottom:9px;}h3.code-header{font-size:1.125rem;}h4.code-header{font-size:1rem;}.code-header{font-weight:600;margin:0;padding:0;white-space:pre-wrap;}#crate-search,h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,.search-input,.search-results .result-name,.item-name>a,.out-of-band,span.since,a.src,#help-button>a,summary.hideme,.scraped-example-list,ul.all-items{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}#toggle-all-docs,a.anchor,.section-header a,#src-sidebar a,.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,h1 a,.search-results a,.stab,.result-name i{color:var(--main-color);}span.enum,a.enum,span.struct,a.struct,span.union,a.union,span.primitive,a.primitive,span.type,a.type,span.foreigntype,a.foreigntype{color:var(--type-link-color);}span.trait,a.trait,span.traitalias,a.traitalias{color:var(--trait-link-color);}span.associatedtype,a.associatedtype,span.constant,a.constant,span.static,a.static{color:var(--assoc-item-link-color);}span.fn,a.fn,span.method,a.method,span.tymethod,a.tymethod{color:var(--function-link-color);}span.attr,a.attr,span.derive,a.derive,span.macro,a.macro{color:var(--macro-link-color);}span.mod,a.mod{color:var(--mod-link-color);}span.keyword,a.keyword{color:var(--keyword-link-color);}a{color:var(--link-color);text-decoration:none;}ol,ul{padding-left:24px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.625em;}p,.docblock>.warning{margin:0 0 .75em 0;}p:last-child,.docblock>.warning:last-child{margin:0;}button{padding:1px 6px;cursor:pointer;}button#toggle-all-docs{padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.src main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}details:not(.toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.125em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;line-height:1.5;}pre.item-decl{overflow-x:auto;}.item-decl .type-contents-toggle{contain:initial;}.src .content pre{padding:20px;}.rustdoc.src .example-wrap pre.src-line-numbers{padding:20px 0 20px 4px;}img{max-width:100%;}.logo-container{line-height:0;display:block;}.rust-logo{filter:var(--rust-logo-filter);}.sidebar{font-size:0.875rem;flex:0 0 var(--desktop-sidebar-width);width:var(--desktop-sidebar-width);overflow-y:scroll;overscroll-behavior:contain;position:sticky;height:100vh;top:0;left:0;z-index:var(--desktop-sidebar-z-index);}.rustdoc.src .sidebar{flex-basis:50px;width:50px;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;}.hide-sidebar .sidebar,.hide-sidebar .sidebar-resizer{display:none;}.sidebar-resizer{touch-action:none;width:9px;cursor:col-resize;z-index:calc(var(--desktop-sidebar-z-index) + 1);position:fixed;height:100%;left:calc(var(--desktop-sidebar-width) + 1px);}.rustdoc.src .sidebar-resizer{left:49px;}.src-sidebar-expanded .src .sidebar-resizer{left:var(--src-sidebar-width);}.sidebar-resizing{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;}.sidebar-resizing*{cursor:col-resize !important;}.sidebar-resizing .sidebar{position:fixed;}.sidebar-resizing>body{padding-left:var(--resizing-sidebar-width);}.sidebar-resizer:hover,.sidebar-resizer:active,.sidebar-resizer:focus,.sidebar-resizer.active{width:10px;margin:0;left:var(--desktop-sidebar-width);border-left:solid 1px var(--sidebar-resizer-hover);}.src-sidebar-expanded .rustdoc.src .sidebar-resizer:hover,.src-sidebar-expanded .rustdoc.src .sidebar-resizer:active,.src-sidebar-expanded .rustdoc.src .sidebar-resizer:focus,.src-sidebar-expanded .rustdoc.src .sidebar-resizer.active{left:calc(var(--src-sidebar-width) - 1px);}@media (pointer:coarse){.sidebar-resizer{display:none !important;}}.sidebar-resizer.active{padding:0 140px;width:2px;margin-left:-140px;border-left:none;}.sidebar-resizer.active:before{border-left:solid 2px var(--sidebar-resizer-active);display:block;height:100%;content:"";}.sidebar,.mobile-topbar,.sidebar-menu-toggle,#src-sidebar{background-color:var(--sidebar-background-color);}.src .sidebar>*{visibility:hidden;}.src-sidebar-expanded .src .sidebar{overflow-y:auto;flex-basis:var(--src-sidebar-width);width:var(--src-sidebar-width);}.src-sidebar-expanded .src .sidebar>*{visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;scrollbar-color:var(--scrollbar-color);}.sidebar{scrollbar-width:thin;scrollbar-color:var(--scrollbar-color);}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;background-color:var(--scrollbar-track-background-color);}.sidebar::-webkit-scrollbar-track{background-color:var(--scrollbar-track-background-color);}::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-background-color);}.hidden{display:none !important;}.logo-container>img{height:48px;width:48px;}ul.block,.block li{padding:0;margin:0;list-style:none;}.sidebar-elems a,.sidebar>h2 a{display:block;padding:0.25rem;margin-left:-0.25rem;margin-right:0.25rem;}.sidebar h2{overflow-wrap:anywhere;padding:0;margin:0.7rem 0;}.sidebar h3{font-size:1.125rem;padding:0;margin:0;}.sidebar-elems,.sidebar>.version,.sidebar>h2{padding-left:24px;}.sidebar a{color:var(--sidebar-link-color);}.sidebar .current,.sidebar .current a,.sidebar-crate a.logo-container:hover+h2 a,.sidebar a:hover:not(.logo-container){background-color:var(--sidebar-current-link-background-color);}.sidebar-elems .block{margin-bottom:2em;}.sidebar-elems .block li a{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.sidebar-crate{display:flex;align-items:center;justify-content:center;margin:14px 32px 1rem;row-gap:10px;column-gap:32px;flex-wrap:wrap;}.sidebar-crate h2{flex-grow:1;margin:0 -8px;align-self:start;}.sidebar-crate .logo-container{margin:0 -16px 0 -16px;text-align:center;}.sidebar-crate h2 a{display:block;margin:0 calc(-24px + 0.25rem) 0 -0.2rem;padding:calc((16px - 0.57rem ) / 2 ) 0.25rem;padding-left:0.2rem;}.sidebar-crate h2 .version{display:block;font-weight:normal;font-size:1rem;overflow-wrap:break-word;}.sidebar-crate+.version{margin-top:-1rem;margin-bottom:1rem;}.mobile-topbar{display:none;}.rustdoc .example-wrap{display:flex;position:relative;margin-bottom:10px;}.rustdoc .example-wrap:last-child{margin-bottom:0px;}.rustdoc .example-wrap pre{margin:0;flex-grow:1;}.rustdoc:not(.src) .example-wrap pre{overflow:auto hidden;}.rustdoc .example-wrap pre.example-line-numbers,.rustdoc .example-wrap pre.src-line-numbers{flex-grow:0;min-width:fit-content;overflow:initial;text-align:right;-webkit-user-select:none;user-select:none;padding:14px 8px;color:var(--src-line-numbers-span-color);}.rustdoc .example-wrap pre.src-line-numbers{padding:14px 0;}.src-line-numbers a,.src-line-numbers span{color:var(--src-line-numbers-span-color);padding:0 8px;}.src-line-numbers :target{background-color:transparent;border-right:none;padding:0 8px;}.src-line-numbers .line-highlighted{background-color:var(--src-line-number-highlighted-background-color);}.search-loading{text-align:center;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock :not(pre)>code,.docblock-short code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.375rem;}.top-doc .docblock h3{font-size:1.25rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.125rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.875rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.more-examples-toggle):not(.example-wrap){max-width:100%;overflow-x:auto;}.out-of-band{flex-grow:0;font-size:1.125rem;}.docblock code,.docblock-short code,pre,.rustdoc.src .example-wrap{background-color:var(--code-block-background-color);}#main-content{position:relative;}.docblock table{margin:.5em 0;border-collapse:collapse;}.docblock table td,.docblock table th{padding:.5em;border:1px solid var(--border-color);}.docblock table tbody tr:nth-child(2n){background:var(--table-alt-row-background-color);}div.where{white-space:pre-wrap;font-size:0.875rem;}.item-info{display:block;margin-left:24px;}.item-info code{font-size:0.875rem;}#main-content>.item-info{margin-left:0;}nav.sub{flex-grow:1;flex-flow:row nowrap;margin:4px 0 25px 0;display:flex;align-items:center;}.search-form{position:relative;display:flex;height:34px;flex-grow:1;}.src nav.sub{margin:0 0 15px 0;}.section-header{display:block;position:relative;}.section-header:hover>.anchor,.impl:hover>.anchor,.trait-impl:hover>.anchor,.variant:hover>.anchor{display:initial;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.section-header>.anchor{left:-15px;padding-right:8px;}h2.section-header>.anchor{padding-right:6px;}a.doc-anchor{color:var(--main-color);display:none;position:absolute;left:-17px;padding-right:5px;padding-left:3px;}*:hover>.doc-anchor{display:block;}.top-doc>.docblock>*:first-child>.doc-anchor{display:none !important;}.main-heading a:hover,.example-wrap .rust a:hover,.all-items a:hover,.docblock a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover:not(.doc-anchor),.docblock-short a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover,.item-info a{text-decoration:underline;}.crate.block li.current a{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;padding:0;margin:0;}.item-table>li{display:table-row;}.item-table>li>div{display:table-cell;}.item-table>li>.item-name{padding-right:1.25rem;}.search-results-title{margin-top:0;white-space:nowrap;display:flex;align-items:baseline;}#crate-search-div{position:relative;min-width:5em;}#crate-search{min-width:115px;padding:0 23px 0 4px;max-width:100%;text-overflow:ellipsis;border:1px solid var(--border-color);border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;background-color:var(--main-background-color);color:inherit;line-height:1.5;font-weight:500;}#crate-search:hover,#crate-search:focus{border-color:var(--crate-search-hover-border);}#crate-search-div::after{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;content:"";background-repeat:no-repeat;background-size:20px;background-position:calc(100% - 2px) 56%;background-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" \
+	width="128" height="128" viewBox="-30 -20 176 176"><path d="M111,40.5L64,87.499L17,40.5" \
+	fill="none" stroke="black" strike-linecap="square" stroke-miterlimit="10" stroke-width="12"/> \
+	</svg>');filter:var(--crate-search-div-filter);}#crate-search-div:hover::after,#crate-search-div:focus-within::after{filter:var(--crate-search-div-hover-filter);}#crate-search>option{font-size:1rem;}.search-input{-webkit-appearance:none;outline:none;border:1px solid var(--border-color);border-radius:2px;padding:8px;font-size:1rem;flex-grow:1;background-color:var(--button-background-color);color:var(--search-color);}.search-input:focus{border-color:var(--search-input-focused-border-color);}.search-results{display:none;}.search-results.active{display:block;}.search-results>a{display:flex;margin-left:2px;margin-right:2px;border-bottom:1px solid var(--search-result-border-color);gap:1em;}.search-results>a>div.desc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex:2;}.search-results a:hover,.search-results a:focus{background-color:var(--search-result-link-focus-background-color);}.search-results .result-name{display:flex;align-items:center;justify-content:start;flex:3;}.search-results .result-name .alias{color:var(--search-results-alias-color);}.search-results .result-name .grey{color:var(--search-results-grey-color);}.search-results .result-name .typename{color:var(--search-results-grey-color);font-size:0.875rem;width:var(--search-typename-width);}.search-results .result-name .path{word-break:break-all;max-width:calc(100% - var(--search-typename-width));display:inline-block;}.search-results .result-name .path>*{display:inline;}.popover{position:absolute;top:100%;right:0;z-index:calc(var(--desktop-sidebar-z-index) + 1);margin-top:7px;border-radius:3px;border:1px solid var(--border-color);background-color:var(--main-background-color);color:var(--main-color);--popover-arrow-offset:11px;}.popover::before{content:'';position:absolute;right:var(--popover-arrow-offset);border:solid var(--border-color);border-width:1px 1px 0 0;background-color:var(--main-background-color);padding:4px;transform:rotate(-45deg);top:-5px;}.setting-line{margin:1.2em 0.6em;}.setting-radio input,.setting-check input{margin-right:0.3em;height:1.2rem;width:1.2rem;border:2px solid var(--settings-input-border-color);outline:none;-webkit-appearance:none;cursor:pointer;}.setting-radio input{border-radius:50%;}.setting-radio span,.setting-check span{padding-bottom:1px;}.setting-radio{margin-top:0.1em;margin-bottom:0.1em;min-width:3.8em;padding:0.3em;display:inline-flex;align-items:center;cursor:pointer;}.setting-radio+.setting-radio{margin-left:0.5em;}.setting-check{margin-right:20px;display:flex;align-items:center;cursor:pointer;}.setting-radio input:checked{box-shadow:inset 0 0 0 3px var(--main-background-color);background-color:var(--settings-input-color);}.setting-check input:checked{background-color:var(--settings-input-color);border-width:1px;content:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40">\
+		<path d="M7,25L17,32L33,12" fill="none" stroke="black" stroke-width="5"/>\
+		<path d="M7,23L17,30L33,10" fill="none" stroke="white" stroke-width="5"/></svg>');}.setting-radio input:focus,.setting-check input:focus{box-shadow:0 0 1px 1px var(--settings-input-color);}.setting-radio input:checked:focus{box-shadow:inset 0 0 0 3px var(--main-background-color),0 0 2px 2px var(--settings-input-color);}.setting-radio input:hover,.setting-check input:hover{border-color:var(--settings-input-color) !important;}#help.popover{max-width:600px;--popover-arrow-offset:48px;}#help dt{float:left;clear:left;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{margin:10px 0;border-bottom:1px solid var(--border-color);padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid var(--border-color);}.side-by-side>div{width:50%;float:left;padding:0 20px 20px 17px;}.item-info .stab{display:block;padding:3px;margin-bottom:5px;}.item-name .stab{margin-left:0.3125em;}.stab{padding:0 2px;font-size:0.875rem;font-weight:normal;color:var(--main-color);background-color:var(--stab-background-color);width:fit-content;white-space:pre-wrap;border-radius:3px;display:inline;vertical-align:baseline;}.stab.portability>code{background:none;color:var(--stab-code-color);}.stab .emoji,.item-info .stab::before{font-size:1.25rem;}.stab .emoji{margin-right:0.3rem;}.item-info .stab::before{content:"\0";width:0;display:inline-block;color:transparent;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;float:right;}.rightside:not(a),.out-of-band{color:var(--right-side-color);}pre.rust{tab-size:4;-moz-tab-size:4;}pre.rust .kw{color:var(--code-highlight-kw-color);}pre.rust .kw-2{color:var(--code-highlight-kw-2-color);}pre.rust .lifetime{color:var(--code-highlight-lifetime-color);}pre.rust .prelude-ty{color:var(--code-highlight-prelude-color);}pre.rust .prelude-val{color:var(--code-highlight-prelude-val-color);}pre.rust .string{color:var(--code-highlight-string-color);}pre.rust .number{color:var(--code-highlight-number-color);}pre.rust .bool-val{color:var(--code-highlight-literal-color);}pre.rust .self{color:var(--code-highlight-self-color);}pre.rust .attr{color:var(--code-highlight-attribute-color);}pre.rust .macro,pre.rust .macro-nonterminal{color:var(--code-highlight-macro-color);}pre.rust .question-mark{font-weight:bold;color:var(--code-highlight-question-mark-color);}pre.rust .comment{color:var(--code-highlight-comment-color);}pre.rust .doccomment{color:var(--code-highlight-doc-comment-color);}.rustdoc.src .example-wrap pre.rust a{background:var(--codeblock-link-background);}.example-wrap.compile_fail,.example-wrap.should_panic{border-left:2px solid var(--codeblock-error-color);}.ignore.example-wrap{border-left:2px solid var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover,.example-wrap.should_panic:hover{border-left:2px solid var(--codeblock-error-hover-color);}.example-wrap.ignore:hover{border-left:2px solid var(--codeblock-ignore-hover-color);}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip{color:var(--codeblock-error-color);}.example-wrap.ignore .tooltip{color:var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover .tooltip,.example-wrap.should_panic:hover .tooltip{color:var(--codeblock-error-hover-color);}.example-wrap.ignore:hover .tooltip{color:var(--codeblock-ignore-hover-color);}.example-wrap .tooltip{position:absolute;display:block;left:-25px;top:5px;margin:0;line-height:1;}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip,.example-wrap.ignore .tooltip{font-weight:bold;font-size:1.25rem;}.content .docblock .warning{border-left:2px solid var(--warning-border-color);padding:14px;position:relative;overflow-x:visible !important;}.content .docblock .warning::before{color:var(--warning-border-color);content:"ⓘ";position:absolute;left:-25px;top:5px;font-weight:bold;font-size:1.25rem;}.top-doc>.docblock>.warning:first-child::before{top:20px;}a.test-arrow{visibility:hidden;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:1.375rem;top:5px;right:5px;z-index:1;color:var(--test-arrow-color);background-color:var(--test-arrow-background-color);}a.test-arrow:hover{color:var(--test-arrow-hover-color);background-color:var(--test-arrow-hover-background-color);}.example-wrap:hover .test-arrow{visibility:visible;}.code-attribute{font-weight:300;color:var(--code-attribute-color);}.item-spacer{width:100%;height:12px;display:block;}.out-of-band>span.since{font-size:1.25rem;}.sub-variant h4{font-size:1rem;font-weight:400;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}:target{padding-right:3px;background-color:var(--target-background-color);border-right:3px solid var(--target-border-color);}.code-header a.tooltip{color:inherit;margin-right:15px;position:relative;}.code-header a.tooltip:hover{color:var(--link-color);}a.tooltip:hover::after{position:absolute;top:calc(100% - 10px);left:-15px;right:-15px;height:20px;content:"\00a0";}.fade-out{opacity:0;transition:opacity 0.45s cubic-bezier(0,0,0.1,1.0);}.popover.tooltip .content{margin:0.25em 0.5em;}.popover.tooltip .content pre,.popover.tooltip .content code{background:transparent;margin:0;padding:0;font-size:1.25rem;white-space:pre-wrap;}.popover.tooltip .content>h3:first-child{margin:0 0 5px 0;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#search-tabs{display:flex;flex-direction:row;gap:1px;margin-bottom:4px;}#search-tabs button{text-align:center;font-size:1.125rem;border:0;border-top:2px solid;flex:1;line-height:1.5;color:inherit;}#search-tabs button:not(.selected){background-color:var(--search-tab-button-not-selected-background);border-top-color:var(--search-tab-button-not-selected-border-top-color);}#search-tabs button:hover,#search-tabs button.selected{background-color:var(--search-tab-button-selected-background);border-top-color:var(--search-tab-button-selected-border-top-color);}#search-tabs .count{font-size:1rem;font-variant-numeric:tabular-nums;color:var(--search-tab-title-count-color);}#search .error code{border-radius:3px;background-color:var(--search-error-code-background-color);}.search-corrections{font-weight:normal;}#src-sidebar{width:100%;overflow:auto;}#src-sidebar div.files>a:hover,details.dir-entry summary:hover,#src-sidebar div.files>a:focus,details.dir-entry summary:focus{background-color:var(--src-sidebar-background-hover);}#src-sidebar div.files>a.selected{background-color:var(--src-sidebar-background-selected);}.src-sidebar-title{position:sticky;top:0;display:flex;padding:8px 8px 0 48px;margin-bottom:7px;background:var(--sidebar-background-color);border-bottom:1px solid var(--border-color);}#settings-menu,#help-button{margin-left:4px;display:flex;}#sidebar-button{display:none;line-height:0;}.hide-sidebar #sidebar-button,.src #sidebar-button{display:flex;margin-right:4px;position:fixed;left:6px;height:34px;width:34px;background-color:var(--main-background-color);z-index:1;}.src #sidebar-button{left:8px;z-index:calc(var(--desktop-sidebar-z-index) + 1);}.hide-sidebar .src #sidebar-button{position:static;}#settings-menu>a,#help-button>a,#sidebar-button>a{display:flex;align-items:center;justify-content:center;background-color:var(--button-background-color);border:1px solid var(--border-color);border-radius:2px;color:var(--settings-button-color);font-size:20px;width:33px;}#settings-menu>a:hover,#settings-menu>a:focus,#help-button>a:hover,#help-button>a:focus,#sidebar-button>a:hover,#sidebar-button>a:focus{border-color:var(--settings-button-border-focus);}#settings-menu>a{line-height:0;font-size:0;}#settings-menu>a:before{content:url('wheel-63255fc4502dca9a.svg');width:22px;height:22px;}#sidebar-button>a:before{content:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22" \
+		fill="none" stroke="black">\
+		<rect x="1" y="1" width="20" height="20" ry="1.5" stroke-width="1.5"/>\
+		<circle cx="4.375" cy="4.375" r="1" stroke-width=".75"/>\
+		<path d="m7.6121 3v16 M5.375 7.625h-2 m2 3h-2 m2 3h-2" stroke-width="1.25"/></svg>');width:22px;height:22px;}#copy-path{color:var(--copy-path-button-color);background:var(--main-background-color);height:34px;margin-left:10px;padding:0;padding-left:2px;border:0;width:33px;line-height:0;font-size:0;}#copy-path:before{filter:var(--copy-path-img-filter);content:url('clipboard-24048e6d87f63d07.svg');width:19px;height:18px;}#copy-path:hover:before{filter:var(--copy-path-img-hover-filter);}@keyframes rotating{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}#settings-menu.rotate>a img{animation:rotating 2s linear infinite;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px var(--border-color);border-radius:3px;color:var(--kbd-color);background-color:var(--kbd-background);box-shadow:inset 0 -1px 0 var(--kbd-box-shadow-color);}ul.all-items>li{list-style:none;}details.dir-entry{padding-left:4px;}details.dir-entry>summary{margin:0 0 0 -4px;padding:0 0 0 4px;cursor:pointer;}details.dir-entry div.folders,details.dir-entry div.files{padding-left:23px;}details.dir-entry a{display:block;}details.toggle{contain:layout;position:relative;}details.toggle>summary.hideme{cursor:pointer;font-size:1rem;}details.toggle>summary{list-style:none;outline:none;}details.toggle>summary::-webkit-details-marker,details.toggle>summary::marker{display:none;}details.toggle>summary.hideme>span{margin-left:9px;}details.toggle>summary::before{background:url('data:image/svg+xml,<svg width="17" height="17" \
+shape-rendering="crispEdges" stroke="black" fill="none" xmlns="http://www.w3.org/2000/svg"><path \
+d="M5 2.5H2.5v12H5m7-12h2.5v12H12M5 8.5h7M8.5 12V8.625v0V5"/></svg>') no-repeat top left;content:"";cursor:pointer;width:16px;height:16px;display:inline-block;vertical-align:middle;opacity:.5;filter:var(--toggle-filter);}details.toggle>summary.hideme>span,.more-examples-toggle summary,.more-examples-toggle .hide-more{color:var(--toggles-color);}details.toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.toggle>summary.hideme::after{content:"";}details.toggle>summary:focus::before,details.toggle>summary:hover::before{opacity:1;}details.toggle>summary:focus-visible::before{outline:1px dotted #000;outline-offset:1px;}details.non-exhaustive{margin-bottom:8px;}details.toggle>summary.hideme::before{position:relative;}details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:4px;}.impl-items>details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.toggle[open] >summary.hideme{position:absolute;}details.toggle[open] >summary.hideme>span{display:none;}details.toggle[open] >summary::before{background:url('data:image/svg+xml,<svg width="17" height="17" \
+shape-rendering="crispEdges" stroke="black" fill="none" xmlns="http://www.w3.org/2000/svg"><path \
+d="M5 2.5H2.5v12H5m7-12h2.5v12H12M5 8.5h7"/></svg>') no-repeat top left;}details.toggle[open] >summary::after{content:"Collapse";}.docblock summary>*{display:inline-block;}.docblock>.example-wrap:first-child .tooltip{margin-top:16px;}.src #sidebar-button>a:before,.sidebar-menu-toggle:before{content:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" \
+		viewBox="0 0 22 22" fill="none" stroke="black">\
+		<path d="M3,5h16M3,11h16M3,17h16" stroke-width="2.75"/></svg>');opacity:0.75;}.sidebar-menu-toggle:hover:before,.sidebar-menu-toggle:active:before,.sidebar-menu-toggle:focus:before{opacity:1;}.src #sidebar-button>a:before{content:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" \
+		viewBox="0 0 22 22" fill="none" stroke="black">\
+		<path d="M16,9v-4h-6v-1l-2,-2h-4l-2,2v16h13L21,9h-15L2,19" stroke-width="1.25"/>\
+		<path d="M15,7h-11v3" stroke-width="0.75"/>\
+		<path d="M3.75,10v1.25" stroke-width="0.375"/></svg>');opacity:0.75;}@media (max-width:850px){#search-tabs .count{display:block;}}@media (max-width:700px){*[id]{scroll-margin-top:45px;}.rustdoc{display:block;}main{padding-left:15px;padding-top:0px;}.main-heading{flex-direction:column;}.out-of-band{text-align:left;margin-left:initial;padding:initial;}.out-of-band .since::before{content:"Since ";}.sidebar .logo-container,.sidebar .location,.sidebar-resizer{display:none;}.sidebar{position:fixed;top:45px;left:-1000px;z-index:11;height:calc(100vh - 45px);width:200px;}.src main,.rustdoc.src .sidebar{top:0;padding:0;height:100vh;border:0;}.src .search-form{margin-left:40px;}.hide-sidebar .search-form{margin-left:32px;}.hide-sidebar .src .search-form{margin-left:0;}.sidebar.shown,.src-sidebar-expanded .src .sidebar,.rustdoc:not(.src) .sidebar:focus-within{left:0;}.mobile-topbar h2{padding-bottom:0;margin:auto 0.5em auto auto;overflow:hidden;font-size:24px;white-space:nowrap;text-overflow:ellipsis;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin:5px 0 5px 20px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.hide-sidebar .mobile-topbar{display:none;}.sidebar-menu-toggle{width:45px;border:none;line-height:0;}.hide-sidebar .sidebar-menu-toggle{display:none;}.sidebar-elems{margin-top:1em;}.anchor{display:none !important;}#main-content>details.toggle>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}#copy-path,#help-button{display:none;}#sidebar-button>a:before{content:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" \
+			viewBox="0 0 22 22" fill="none" stroke="black">\
+			<rect x="1" y="1" width="20" height="20" ry="1.5" stroke-width="1.5"/>\
+			<circle cx="4.375" cy="4.375" r="1" stroke-width=".75"/>\
+			<path d="m3 7.375h16m0-3h-4" stroke-width="1.25"/></svg>');width:22px;height:22px;}.sidebar-menu-toggle:before{filter:var(--mobile-sidebar-menu-filter);}.sidebar-menu-toggle:hover{background:var(--main-background-color);}.item-table,.item-row,.item-table>li,.item-table>li>div,.search-results>a,.search-results>a>div{display:block;}.search-results>a{padding:5px 0px;}.search-results>a>div.desc,.item-table>li>div.desc{padding-left:2em;}.search-results .result-name{display:block;}.search-results .result-name .typename{width:initial;margin-right:0;}.search-results .result-name .typename,.search-results .result-name .path{display:inline;}.src-sidebar-expanded .src .sidebar{position:fixed;max-width:100vw;width:100vw;}.src .src-sidebar-title{padding-top:0;}details.toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.toggle>summary:not(.hideme)::before,#main-content>details.toggle:not(.top-doc)>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}.impl-items>.item-info{margin-left:34px;}.src nav.sub{margin:0;padding:var(--nav-sub-mobile-padding);}}@media (min-width:701px){.scraped-example-title{position:absolute;z-index:10;background:var(--main-background-color);bottom:8px;right:5px;padding:2px 4px;box-shadow:0 0 4px var(--main-background-color);}}@media print{nav.sidebar,nav.sub,.out-of-band,a.src,#copy-path,details.toggle[open] >summary::before,details.toggle>summary::before,details.toggle.top-doc>summary{display:none;}.docblock{margin-left:0;}main{padding:10px;}}@media (max-width:464px){.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}nav.sub{flex-direction:column;}.search-form{align-self:stretch;}}.variant,.implementors-toggle>summary,.impl,#implementors-list>.docblock,.impl-items>section,.impl-items>.toggle>summary,.methods>section,.methods>.toggle>summary{margin-bottom:0.75em;}.variants>.docblock,.implementors-toggle>.docblock,.impl-items>.toggle[open]:not(:last-child),.methods>.toggle[open]:not(:last-child),.implementors-toggle[open]:not(:last-child){margin-bottom:2em;}#trait-implementations-list .impl-items>.toggle:not(:last-child),#synthetic-implementations-list .impl-items>.toggle:not(:last-child),#blanket-implementations-list .impl-items>.toggle:not(:last-child){margin-bottom:1em;}.scraped-example-list .scrape-help{margin-left:10px;padding:0 4px;font-weight:normal;font-size:12px;position:relative;bottom:1px;border:1px solid var(--scrape-example-help-border-color);border-radius:50px;color:var(--scrape-example-help-color);}.scraped-example-list .scrape-help:hover{border-color:var(--scrape-example-help-hover-border-color);color:var(--scrape-example-help-hover-color);}.scraped-example{position:relative;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper{max-height:calc(1.5em * 5 + 10px);}.scraped-example:not(.expanded) .code-wrapper pre{overflow-y:hidden;padding-bottom:0;max-height:calc(1.5em * 5 + 10px);}.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper,.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper pre{max-height:calc(1.5em * 10 + 10px);}.scraped-example .code-wrapper .next,.scraped-example .code-wrapper .prev,.scraped-example .code-wrapper .expand{color:var(--main-color);position:absolute;top:0.25em;z-index:1;padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.scraped-example .code-wrapper .prev{right:2.25em;}.scraped-example .code-wrapper .next{right:1.25em;}.scraped-example .code-wrapper .expand{right:0.25em;}.scraped-example:not(.expanded) .code-wrapper::before,.scraped-example:not(.expanded) .code-wrapper::after{content:" ";width:100%;height:5px;position:absolute;z-index:1;}.scraped-example:not(.expanded) .code-wrapper::before{top:0;background:linear-gradient(to bottom,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example:not(.expanded) .code-wrapper::after{bottom:0;background:linear-gradient(to top,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example .code-wrapper .example-wrap{width:100%;overflow-y:hidden;margin-bottom:0;}.scraped-example:not(.expanded) .code-wrapper .example-wrap{overflow-x:hidden;}.scraped-example .example-wrap .rust span.highlight{background:var(--scrape-example-code-line-highlight);}.scraped-example .example-wrap .rust span.highlight.focus{background:var(--scrape-example-code-line-highlight-focus);}.more-examples-toggle{max-width:calc(100% + 25px);margin-top:10px;margin-left:-25px;}.more-examples-toggle .hide-more{margin-left:25px;cursor:pointer;}.more-scraped-examples{margin-left:25px;position:relative;}.toggle-line{position:absolute;top:5px;bottom:0;right:calc(100% + 10px);padding:0 4px;cursor:pointer;}.toggle-line-inner{min-width:2px;height:100%;background:var(--scrape-example-toggle-line-background);}.toggle-line:hover .toggle-line-inner{background:var(--scrape-example-toggle-line-hover-background);}.more-scraped-examples .scraped-example,.example-links{margin-top:20px;}.more-scraped-examples .scraped-example:first-child{margin-top:5px;}.example-links ul{margin-bottom:0;}:root[data-theme="light"],:root:not([data-theme]){--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--mobile-sidebar-menu-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:rgb(78,139,202);--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);--sidebar-resizer-hover:hsl(207,90%,66%);--sidebar-resizer-active:hsl(207,90%,54%);}:root[data-theme="dark"]{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);--sidebar-resizer-hover:hsl(207,30%,54%);--sidebar-resizer-active:hsl(207,90%,54%);}:root[data-theme="ayu"]{--main-background-color:#0f1419;--main-color:#c5c5c5;--settings-input-color:#ffb454;--settings-input-border-color:#999;--settings-button-color:#fff;--settings-button-border-focus:#e0e0e0;--sidebar-background-color:#14191f;--sidebar-background-color-hover:rgba(70,70,70,0.33);--code-block-background-color:#191f26;--scrollbar-track-background-color:transparent;--scrollbar-thumb-background-color:#5c6773;--scrollbar-color:#5c6773 #24292f;--headings-border-bottom-color:#5c6773;--border-color:#5c6773;--button-background-color:#141920;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#5c6773;--copy-path-button-color:#fff;--copy-path-img-filter:invert(70%);--copy-path-img-hover-filter:invert(100%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ffa0a5;--trait-link-color:#39afd7;--assoc-item-link-color:#39afd7;--function-link-color:#fdd687;--macro-link-color:#a37acc;--keyword-link-color:#39afd7;--mod-link-color:#39afd7;--link-color:#39afd7;--sidebar-link-color:#53b1db;--sidebar-current-link-background-color:transparent;--search-result-link-focus-background-color:#3c3c3c;--search-result-border-color:#aaa3;--search-color:#fff;--search-error-code-background-color:#4f4c4c;--search-results-alias-color:#c5c5c5;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:none;--search-tab-button-not-selected-background:transparent !important;--search-tab-button-selected-border-top-color:none;--search-tab-button-selected-background:#141920 !important;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ff7733;--code-highlight-kw-2-color:#ff7733;--code-highlight-lifetime-color:#ff7733;--code-highlight-prelude-color:#69f2df;--code-highlight-prelude-val-color:#ff7733;--code-highlight-number-color:#b8cc52;--code-highlight-string-color:#b8cc52;--code-highlight-literal-color:#ff7733;--code-highlight-attribute-color:#e6e1cf;--code-highlight-self-color:#36a3d9;--code-highlight-macro-color:#a37acc;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#788797;--code-highlight-doc-comment-color:#a1ac88;--src-line-numbers-span-color:#5c6773;--src-line-number-highlighted-background-color:rgba(255,236,164,0.06);--test-arrow-color:#788797;--test-arrow-background-color:rgba(57,175,215,0.09);--test-arrow-hover-color:#c5c5c5;--test-arrow-hover-background-color:rgba(57,175,215,0.368);--target-background-color:rgba(255,236,164,0.06);--target-border-color:rgba(255,180,76,0.85);--kbd-color:#c5c5c5;--kbd-background:#314559;--kbd-box-shadow-color:#5c6773;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(41%) sepia(12%) saturate(487%) hue-rotate(171deg) brightness(94%) contrast(94%);--crate-search-div-hover-filter:invert(98%) sepia(12%) saturate(81%) hue-rotate(343deg) brightness(113%) contrast(76%);--crate-search-hover-border:#e0e0e0;--src-sidebar-background-selected:#14191f;--src-sidebar-background-hover:#14191f;--table-alt-row-background-color:#191f26;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(15,20,25,1);--scrape-example-code-wrapper-background-end:rgba(15,20,25,0);--sidebar-resizer-hover:hsl(34,50%,33%);--sidebar-resizer-active:hsl(34,100%,66%);}:root[data-theme="ayu"] h1,:root[data-theme="ayu"] h2,:root[data-theme="ayu"] h3,:root[data-theme="ayu"] h4,:where(:root[data-theme="ayu"]) h1 a,:root[data-theme="ayu"] .sidebar h2 a,:root[data-theme="ayu"] .sidebar h3 a{color:#fff;}:root[data-theme="ayu"] .docblock code{color:#ffb454;}:root[data-theme="ayu"] .docblock a>code{color:#39AFD7 !important;}:root[data-theme="ayu"] .code-header,:root[data-theme="ayu"] .docblock pre>code,:root[data-theme="ayu"] pre,:root[data-theme="ayu"] pre>code,:root[data-theme="ayu"] .item-info code,:root[data-theme="ayu"] .rustdoc.source .example-wrap{color:#e6e1cf;}:root[data-theme="ayu"] .sidebar .current,:root[data-theme="ayu"] .sidebar .current a,:root[data-theme="ayu"] .sidebar a:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:hover,:root[data-theme="ayu"] details.dir-entry summary:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:focus,:root[data-theme="ayu"] details.dir-entry summary:focus,:root[data-theme="ayu"] #src-sidebar div.files>a.selected{color:#ffb44c;}:root[data-theme="ayu"] .sidebar-elems .location{color:#ff7733;}:root[data-theme="ayu"] .src-line-numbers .line-highlighted{color:#708090;padding-right:7px;border-right:1px solid #ffb44c;}:root[data-theme="ayu"] .search-results a:hover,:root[data-theme="ayu"] .search-results a:focus{color:#fff !important;background-color:#3c3c3c;}:root[data-theme="ayu"] .search-results a{color:#0096cf;}:root[data-theme="ayu"] .search-results a div.desc{color:#c5c5c5;}:root[data-theme="ayu"] .result-name .primitive>i,:root[data-theme="ayu"] .result-name .keyword>i{color:#788797;}:root[data-theme="ayu"] #search-tabs>button.selected{border-bottom:1px solid #ffb44c !important;border-top:none;}:root[data-theme="ayu"] #search-tabs>button:not(.selected){border:none;background-color:transparent !important;}:root[data-theme="ayu"] #search-tabs>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}:root[data-theme="ayu"] #settings-menu>a img,:root[data-theme="ayu"] #sidebar-button>a:before{filter:invert(100);}
\ No newline at end of file
diff --git a/static.files/scrape-examples-ef1e698c1d417c0c.js b/static.files/scrape-examples-ef1e698c1d417c0c.js
new file mode 100644
index 0000000..ba830e3
--- /dev/null
+++ b/static.files/scrape-examples-ef1e698c1d417c0c.js
@@ -0,0 +1 @@
+"use strict";(function(){const DEFAULT_MAX_LINES=5;const HIDDEN_MAX_LINES=10;function scrollToLoc(elt,loc,isHidden){const lines=elt.querySelector(".src-line-numbers");let scrollOffset;const maxLines=isHidden?HIDDEN_MAX_LINES:DEFAULT_MAX_LINES;if(loc[1]-loc[0]>maxLines){const line=Math.max(0,loc[0]-1);scrollOffset=lines.children[line].offsetTop}else{const wrapper=elt.querySelector(".code-wrapper");const halfHeight=wrapper.offsetHeight/2;const offsetTop=lines.children[loc[0]].offsetTop;const lastLine=lines.children[loc[1]];const offsetBot=lastLine.offsetTop+lastLine.offsetHeight;const offsetMid=(offsetTop+offsetBot)/2;scrollOffset=offsetMid-halfHeight}lines.scrollTo(0,scrollOffset);elt.querySelector(".rust").scrollTo(0,scrollOffset)}function updateScrapedExample(example,isHidden){const locs=JSON.parse(example.attributes.getNamedItem("data-locs").textContent);let locIndex=0;const highlights=Array.prototype.slice.call(example.querySelectorAll(".highlight"));const link=example.querySelector(".scraped-example-title a");if(locs.length>1){const onChangeLoc=changeIndex=>{removeClass(highlights[locIndex],"focus");changeIndex();scrollToLoc(example,locs[locIndex][0],isHidden);addClass(highlights[locIndex],"focus");const url=locs[locIndex][1];const title=locs[locIndex][2];link.href=url;link.innerHTML=title};example.querySelector(".prev").addEventListener("click",()=>{onChangeLoc(()=>{locIndex=(locIndex-1+locs.length)%locs.length})});example.querySelector(".next").addEventListener("click",()=>{onChangeLoc(()=>{locIndex=(locIndex+1)%locs.length})})}const expandButton=example.querySelector(".expand");if(expandButton){expandButton.addEventListener("click",()=>{if(hasClass(example,"expanded")){removeClass(example,"expanded");scrollToLoc(example,locs[0][0],isHidden)}else{addClass(example,"expanded")}})}scrollToLoc(example,locs[0][0],isHidden)}const firstExamples=document.querySelectorAll(".scraped-example-list > .scraped-example");onEachLazy(firstExamples,el=>updateScrapedExample(el,false));onEachLazy(document.querySelectorAll(".more-examples-toggle"),toggle=>{onEachLazy(toggle.querySelectorAll(".toggle-line, .hide-more"),button=>{button.addEventListener("click",()=>{toggle.open=false})});const moreExamples=toggle.querySelectorAll(".scraped-example");toggle.querySelector("summary").addEventListener("click",()=>{setTimeout(()=>{onEachLazy(moreExamples,el=>updateScrapedExample(el,true))})},{once:true})})})()
\ No newline at end of file
diff --git a/static.files/search-ffac13a0df2b1870.js b/static.files/search-ffac13a0df2b1870.js
new file mode 100644
index 0000000..38185d9
--- /dev/null
+++ b/static.files/search-ffac13a0df2b1870.js
@@ -0,0 +1,5 @@
+"use strict";if(!Array.prototype.toSpliced){Array.prototype.toSpliced=function(){const me=this.slice();Array.prototype.splice.apply(me,arguments);return me}}(function(){const itemTypes=["keyword","primitive","mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","associatedtype","constant","associatedconstant","union","foreigntype","existential","attr","derive","traitalias","generic",];const longItemTypes=["keyword","primitive type","module","extern crate","re-export","struct","enum","function","type alias","static","trait","","trait method","method","struct field","enum variant","macro","assoc type","constant","assoc const","union","foreign type","existential type","attribute macro","derive macro","trait alias",];const TY_GENERIC=itemTypes.indexOf("generic");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";const UNBOXING_LIMIT=5;function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("search-tabs").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});const isTypeSearch=(nb>0||iter===1);iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb;const correctionsElem=document.getElementsByClassName("search-corrections");if(isTypeSearch){removeClass(correctionsElem[0],"hidden")}else{addClass(correctionsElem[0],"hidden")}}else if(nb!==0){printTab(0)}}const editDistanceState={current:[],prev:[],prevPrev:[],calculate:function calculate(a,b,limit){if(a.length<b.length){const aTmp=a;a=b;b=aTmp}const minDist=a.length-b.length;if(minDist>limit){return limit+1}while(b.length>0&&b[0]===a[0]){a=a.substring(1);b=b.substring(1)}while(b.length>0&&b[b.length-1]===a[a.length-1]){a=a.substring(0,a.length-1);b=b.substring(0,b.length-1)}if(b.length===0){return minDist}const aLength=a.length;const bLength=b.length;for(let i=0;i<=bLength;++i){this.current[i]=0;this.prev[i]=i;this.prevPrev[i]=Number.MAX_VALUE}for(let i=1;i<=aLength;++i){this.current[0]=i;const aIdx=i-1;for(let j=1;j<=bLength;++j){const bIdx=j-1;const substitutionCost=a[aIdx]===b[bIdx]?0:1;this.current[j]=Math.min(this.prev[j]+1,this.current[j-1]+1,this.prev[j-1]+substitutionCost,);if((i>1)&&(j>1)&&(a[aIdx]===b[bIdx-1])&&(a[aIdx-1]===b[bIdx])){this.current[j]=Math.min(this.current[j],this.prevPrev[j-2]+1,)}}const prevPrevTmp=this.prevPrev;this.prevPrev=this.prev;this.prev=this.current;this.current=prevPrevTmp}const distance=this.prev[bLength];return distance<=limit?distance:(limit+1)},};function editDistance(a,b,limit){return editDistanceState.calculate(a,b,limit)}function initSearch(rawSearchIndex){const MAX_RESULTS=200;const NO_TYPE_FILTER=-1;let searchIndex;let searchIndexDeprecated;let searchIndexEmptyDesc;let functionTypeFingerprint;let currentResults;const typeNameIdMap=new Map();const ALIASES=new Map();const typeNameIdOfArray=buildTypeMapIndex("array");const typeNameIdOfSlice=buildTypeMapIndex("slice");const typeNameIdOfArrayOrSlice=buildTypeMapIndex("[]");const typeNameIdOfTuple=buildTypeMapIndex("tuple");const typeNameIdOfUnit=buildTypeMapIndex("unit");const typeNameIdOfTupleOrUnit=buildTypeMapIndex("()");const typeNameIdOfFn=buildTypeMapIndex("fn");const typeNameIdOfFnMut=buildTypeMapIndex("fnmut");const typeNameIdOfFnOnce=buildTypeMapIndex("fnonce");const typeNameIdOfHof=buildTypeMapIndex("->");function buildTypeMapIndex(name,isAssocType){if(name===""||name===null){return null}if(typeNameIdMap.has(name)){const obj=typeNameIdMap.get(name);obj.assocOnly=isAssocType&&obj.assocOnly;return obj.id}else{const id=typeNameIdMap.size;typeNameIdMap.set(name,{id,assocOnly:isAssocType});return id}}function isSpecialStartCharacter(c){return"<\"".indexOf(c)!==-1}function isEndCharacter(c){return"=,>-])".indexOf(c)!==-1}function itemTypeFromName(typename){const index=itemTypes.findIndex(i=>i===typename);if(index<0){throw["Unknown type filter ",typename]}return index}function getStringElem(query,parserState,isInGenerics){if(isInGenerics){throw["Unexpected ","\""," in generics"]}else if(query.literalSearch){throw["Cannot have more than one literal search element"]}else if(parserState.totalElems-parserState.genericsElems>0){throw["Cannot use literal search when there is more than one element"]}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw["Unclosed ","\""]}else if(parserState.userQuery[end]!=="\""){throw["Unexpected ",parserState.userQuery[end]," in a string element"]}else if(start===end){throw["Cannot have empty string element"]}parserState.pos+=1;query.literalSearch=true}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function isIdentCharacter(c){return(c==="_"||(c>="0"&&c<="9")||(c>="a"&&c<="z")||(c>="A"&&c<="Z"))}function isSeparatorCharacter(c){return c===","||c==="="}function isPathSeparator(c){return c===":"||c===" "}function prevIs(parserState,lookingFor){let pos=parserState.pos;while(pos>0){const c=parserState.userQuery[pos-1];if(c===lookingFor){return true}else if(c!==" "){break}pos-=1}return false}function isLastElemGeneric(elems,parserState){return(elems.length>0&&elems[elems.length-1].generics.length>0)||prevIs(parserState,">")}function skipWhitespace(parserState){while(parserState.pos<parserState.userQuery.length){const c=parserState.userQuery[parserState.pos];if(c!==" "){break}parserState.pos+=1}}function makePrimitiveElement(name,extra){return Object.assign({name,id:null,fullPath:[name],pathWithoutLast:[],pathLast:name,normalizedPathLast:name,generics:[],bindings:new Map(),typeFilter:"primitive",bindingName:null,},extra)}function createQueryElement(query,parserState,name,generics,isInGenerics){const path=name.trim();if(path.length===0&&generics.length===0){throw["Unexpected ",parserState.userQuery[parserState.pos]]}if(query.literalSearch&&parserState.totalElems-parserState.genericsElems>0){throw["Cannot have more than one element if you use quotes"]}const typeFilter=parserState.typeFilter;parserState.typeFilter=null;if(name==="!"){if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive never type ","!"," and ",typeFilter," both specified",]}if(generics.length!==0){throw["Never type ","!"," does not accept generic parameters",]}const bindingName=parserState.isInBinding;parserState.isInBinding=null;return makePrimitiveElement("never",{bindingName})}const quadcolon=/::\s*::/.exec(path);if(path.startsWith("::")){throw["Paths cannot start with ","::"]}else if(path.endsWith("::")){throw["Paths cannot end with ","::"]}else if(quadcolon!==null){throw["Unexpected ",quadcolon[0]]}const pathSegments=path.split(/(?:::\s*)|(?:\s+(?:::\s*)?)/);if(pathSegments.length===0||(pathSegments.length===1&&pathSegments[0]==="")){if(generics.length>0||prevIs(parserState,">")){throw["Found generics without a path"]}else{throw["Unexpected ",parserState.userQuery[parserState.pos]]}}for(const[i,pathSegment]of pathSegments.entries()){if(pathSegment==="!"){if(i!==0){throw["Never type ","!"," is not associated item"]}pathSegments[i]="never"}}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}const bindingName=parserState.isInBinding;parserState.isInBinding=null;const bindings=new Map();const pathLast=pathSegments[pathSegments.length-1];return{name:name.trim(),id:null,fullPath:pathSegments,pathWithoutLast:pathSegments.slice(0,pathSegments.length-1),pathLast,normalizedPathLast:pathLast.replace(/_/g,""),generics:generics.filter(gen=>{if(gen.bindingName!==null){if(gen.name!==null){gen.bindingName.generics.unshift(gen)}bindings.set(gen.bindingName.name,gen.bindingName.generics);return false}return true}),bindings,typeFilter,bindingName,}}function getIdentEndPosition(parserState){const start=parserState.pos;let end=parserState.pos;let foundExclamation=-1;while(parserState.pos<parserState.length){const c=parserState.userQuery[parserState.pos];if(!isIdentCharacter(c)){if(c==="!"){if(foundExclamation!==-1){throw["Cannot have more than one ","!"," in an ident"]}else if(parserState.pos+1<parserState.length&&isIdentCharacter(parserState.userQuery[parserState.pos+1])){throw["Unexpected ","!",": it can only be at the end of an ident"]}foundExclamation=parserState.pos}else if(isPathSeparator(c)){if(c===":"){if(!isPathStart(parserState)){break}parserState.pos+=1}else{while(parserState.pos+1<parserState.length){const next_c=parserState.userQuery[parserState.pos+1];if(next_c!==" "){break}parserState.pos+=1}}if(foundExclamation!==-1){if(foundExclamation!==start&&isIdentCharacter(parserState.userQuery[foundExclamation-1])){throw["Cannot have associated items in macros"]}else{foundExclamation=-1}}}else if(c==="["||c==="("||isEndCharacter(c)||isSpecialStartCharacter(c)||isSeparatorCharacter(c)){break}else if(parserState.pos>0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]]}else{throw["Unexpected ",c]}}parserState.pos+=1;end=parserState.pos}if(foundExclamation!==-1&&foundExclamation!==start&&isIdentCharacter(parserState.userQuery[foundExclamation-1])){if(parserState.typeFilter===null){parserState.typeFilter="macro"}else if(parserState.typeFilter!=="macro"){throw["Invalid search type: macro ","!"," and ",parserState.typeFilter," both specified",]}end=foundExclamation}return end}function getFilteredNextElem(query,parserState,elems,isInGenerics){const start=parserState.pos;if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){throw["Expected type filter before ",":"]}getNextElem(query,parserState,elems,isInGenerics);if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}if(elems.length===0){throw["Expected type filter before ",":"]}else if(query.literalSearch){throw["Cannot use quotes on type filter"]}const typeFilterElem=elems.pop();checkExtraTypeFilterCharacters(start,parserState);parserState.typeFilter=typeFilterElem.name;parserState.pos+=1;parserState.totalElems-=1;query.literalSearch=false;getNextElem(query,parserState,elems,isInGenerics)}}function getNextElem(query,parserState,elems,isInGenerics){const generics=[];skipWhitespace(parserState);let start=parserState.pos;let end;if("[(".indexOf(parserState.userQuery[parserState.pos])!==-1){let endChar=")";let name="()";let friendlyName="tuple";if(parserState.userQuery[parserState.pos]==="["){endChar="]";name="[]";friendlyName="slice"}parserState.pos+=1;const{foundSeparator}=getItemsBefore(query,parserState,generics,endChar);const typeFilter=parserState.typeFilter;const bindingName=parserState.isInBinding;parserState.typeFilter=null;parserState.isInBinding=null;for(const gen of generics){if(gen.bindingName!==null){throw["Type parameter ","=",` cannot be within ${friendlyName} `,name]}}if(name==="()"&&!foundSeparator&&generics.length===1&&typeFilter===null){elems.push(generics[0])}else if(name==="()"&&generics.length===1&&generics[0].name==="->"){generics[0].typeFilter=typeFilter;elems.push(generics[0])}else{if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive ",name," and ",typeFilter," both specified",]}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}elems.push(makePrimitiveElement(name,{bindingName,generics}))}}else{const isStringElem=parserState.userQuery[start]==="\"";if(isStringElem){start+=1;getStringElem(query,parserState,isInGenerics);end=parserState.pos-1}else{end=getIdentEndPosition(parserState)}if(parserState.pos<parserState.length&&parserState.userQuery[parserState.pos]==="<"){if(start>=end){throw["Found generics without a path"]}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}else if(parserState.pos<parserState.length&&parserState.userQuery[parserState.pos]==="("){if(start>=end){throw["Found generics without a path"]}if(parserState.isInBinding){throw["Unexpected ","("," after ","="]}parserState.pos+=1;const typeFilter=parserState.typeFilter;parserState.typeFilter=null;getItemsBefore(query,parserState,generics,")");skipWhitespace(parserState);if(isReturnArrow(parserState)){parserState.pos+=2;skipWhitespace(parserState);getFilteredNextElem(query,parserState,generics,isInGenerics);generics[generics.length-1].bindingName=makePrimitiveElement("output")}else{generics.push(makePrimitiveElement(null,{bindingName:makePrimitiveElement("output"),typeFilter:null,}))}parserState.typeFilter=typeFilter}if(isStringElem){skipWhitespace(parserState)}if(start>=end&&generics.length===0){return}if(parserState.userQuery[parserState.pos]==="="){if(parserState.isInBinding){throw["Cannot write ","="," twice in a binding"]}if(!isInGenerics){throw["Type parameter ","="," must be within generics list"]}const name=parserState.userQuery.slice(start,end).trim();if(name==="!"){throw["Type parameter ","="," key cannot be ","!"," never type"]}if(name.includes("!")){throw["Type parameter ","="," key cannot be ","!"," macro"]}if(name.includes("::")){throw["Type parameter ","="," key cannot contain ","::"," path"]}if(name.includes(":")){throw["Type parameter ","="," key cannot contain ",":"," type"]}parserState.isInBinding={name,generics}}else{elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics,),)}}}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;let foundSeparator=false;const oldTypeFilter=parserState.typeFilter;parserState.typeFilter=null;const oldIsInBinding=parserState.isInBinding;parserState.isInBinding=null;let hofParameters=null;let extra="";if(endChar===">"){extra="<"}else if(endChar==="]"){extra="["}else if(endChar===")"){extra="("}else if(endChar===""){extra="->"}else{extra=endChar}while(parserState.pos<parserState.length){const c=parserState.userQuery[parserState.pos];if(c===endChar){if(parserState.isInBinding){throw["Unexpected ",endChar," after ","="]}break}else if(endChar!==""&&isReturnArrow(parserState)){if(parserState.isInBinding){throw["Unexpected ","->"," after ","="]}hofParameters=[...elems];elems.length=0;parserState.pos+=2;foundStopChar=true;foundSeparator=false;continue}else if(c===" "){parserState.pos+=1;continue}else if(isSeparatorCharacter(c)){parserState.pos+=1;foundStopChar=true;foundSeparator=true;continue}else if(c===":"&&isPathStart(parserState)){throw["Unexpected ","::",": paths cannot start with ","::"]}else if(isEndCharacter(c)){throw["Unexpected ",c," after ",extra]}if(!foundStopChar){let extra=[];if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(endChar!==""){throw["Expected ",",",", ","=",", or ",endChar,...extra,", found ",c,]}throw["Expected ",","," or ","=",...extra,", found ",c,]}const posBefore=parserState.pos;getFilteredNextElem(query,parserState,elems,endChar!=="");if(endChar!==""&&parserState.pos>=parserState.length){throw["Unclosed ",extra]}if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}if(parserState.pos>=parserState.length&&endChar!==""){throw["Unclosed ",extra]}parserState.pos+=1;if(hofParameters){foundSeparator=false;if([...elems,...hofParameters].some(x=>x.bindingName)||parserState.isInBinding){throw["Unexpected ","="," within ","->"]}const hofElem=makePrimitiveElement("->",{generics:hofParameters,bindings:new Map([["output",[...elems]]]),typeFilter:null,});elems.length=0;elems[0]=hofElem}parserState.typeFilter=oldTypeFilter;parserState.isInBinding=oldIsInBinding;return{foundSeparator}}function checkExtraTypeFilterCharacters(start,parserState){const query=parserState.userQuery.slice(start,parserState.pos).trim();for(const c in query){if(!isIdentCharacter(query[c])){throw["Unexpected ",query[c]," in type filter (before ",":",")",]}}}function parseInput(query,parserState){let foundStopChar=true;while(parserState.pos<parserState.length){const c=parserState.userQuery[parserState.pos];if(isEndCharacter(c)){foundStopChar=true;if(isSeparatorCharacter(c)){parserState.pos+=1;continue}else if(c==="-"||c===">"){if(isReturnArrow(parserState)){break}throw["Unexpected ",c," (did you mean ","->","?)"]}else if(parserState.pos>0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]]}throw["Unexpected ",c]}else if(c===" "){skipWhitespace(parserState);continue}if(!foundStopChar){let extra="";if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(parserState.typeFilter!==null){throw["Expected ",","," or ","->",...extra,", found ",c,]}throw["Expected ",",",", ",":"," or ","->",...extra,", found ",c,]}const before=query.elems.length;getFilteredNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}while(parserState.pos<parserState.length){if(isReturnArrow(parserState)){parserState.pos+=2;skipWhitespace(parserState);getItemsBefore(query,parserState,query.returned,"");if(query.returned.length===0){throw["Expected at least one item after ","->"]}break}else{parserState.pos+=1}}}function newParsedQuery(userQuery){return{original:userQuery,userQuery:userQuery.toLowerCase(),elems:[],returned:[],foundElems:0,totalElems:0,literalSearch:false,error:null,correction:null,proposeCorrectionFrom:null,proposeCorrectionTo:null,typeFingerprint:new Uint32Array(4),}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&rawSearchIndex.has(elem.value)){return elem.value}return null}function parseQuery(userQuery){function convertTypeFilterOnElem(elem){if(elem.typeFilter!==null){let typeFilter=elem.typeFilter;if(typeFilter==="const"){typeFilter="constant"}elem.typeFilter=itemTypeFromName(typeFilter)}else{elem.typeFilter=NO_TYPE_FILTER}for(const elem2 of elem.generics){convertTypeFilterOnElem(elem2)}for(const constraints of elem.bindings.values()){for(const constraint of constraints){convertTypeFilterOnElem(constraint)}}}userQuery=userQuery.trim().replace(/\r|\n|\t/g," ");const parserState={length:userQuery.length,pos:0,totalElems:0,genericsElems:0,typeFilter:null,isInBinding:null,userQuery:userQuery.toLowerCase(),};let query=newParsedQuery(userQuery);try{parseInput(query,parserState);for(const elem of query.elems){convertTypeFilterOnElem(elem)}for(const elem of query.returned){convertTypeFilterOnElem(elem)}}catch(err){query=newParsedQuery(userQuery);query.error=err;return query}if(!query.literalSearch){query.literalSearch=parserState.totalElems>1}query.foundElems=query.elems.length+query.returned.length;query.totalElems=parserState.totalElems;return query}function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}async function execQuery(parsedQuery,filterCrates,currentCrate){const results_others=new Map(),results_in_args=new Map(),results_returned=new Map();function transformResults(results){const duplicates=new Set();const out=[];for(const result of results){if(result.id!==-1){const obj=searchIndex[result.id];obj.dist=result.dist;const res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;if(duplicates.has(obj.fullPath)){continue}duplicates.add(obj.fullPath);obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}async function sortResults(results,isType,preferredCrate){const userQuery=parsedQuery.userQuery;const result_list=[];for(const result of results.values()){result.item=searchIndex[result.id];result.word=searchIndex[result.id].word;result_list.push(result)}result_list.sort((aaa,bbb)=>{let a,b;a=(aaa.word!==userQuery);b=(bbb.word!==userQuery);if(a!==b){return a-b}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.path_dist;b=bbb.path_dist;if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}a=(aaa.dist);b=(bbb.dist);if(a!==b){return a-b}a=searchIndexDeprecated.get(aaa.item.crate).contains(aaa.item.bitIndex);b=searchIndexDeprecated.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=searchIndexEmptyDesc.get(aaa.item.crate).contains(aaa.item.bitIndex);b=searchIndexEmptyDesc.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});const transformed=transformResults(result_list);const descs=await Promise.all(transformed.map(result=>{return searchIndexEmptyDesc.get(result.crate).contains(result.bitIndex)?"":searchState.loadDesc(result)}));for(const[i,result]of transformed.entries()){result.desc=descs[i]}return transformed}function unifyFunctionTypes(fnTypesIn,queryElems,whereClause,mgensIn,solutionCb,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return false}const mgens=mgensIn===null?null:new Map(mgensIn);if(queryElems.length===0){return!solutionCb||solutionCb(mgens)}if(!fnTypesIn||fnTypesIn.length===0){return false}const ql=queryElems.length;const fl=fnTypesIn.length;if(ql===1&&queryElems[0].generics.length===0&&queryElems[0].bindings.size===0){const queryElem=queryElems[0];for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}if(fnType.id<0&&queryElem.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==queryElem.id){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,queryElem.id);if(!solutionCb||solutionCb(mgensScratch)){return true}}else if(!solutionCb||solutionCb(mgens?new Map(mgens):null)){return true}}for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}if(fnType.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,0);if(unifyFunctionTypes(whereClause[(-fnType.id)-1],queryElems,whereClause,mgensScratch,solutionCb,unboxingDepth+1,)){return true}}else if(unifyFunctionTypes([...fnType.generics,...Array.from(fnType.bindings.values()).flat()],queryElems,whereClause,mgens?new Map(mgens):null,solutionCb,unboxingDepth+1,)){return true}}return false}const fnTypes=fnTypesIn.slice();const flast=fl-1;const qlast=ql-1;const queryElem=queryElems[qlast];let queryElemsTmp=null;for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==queryElem.id){continue}mgensScratch.set(fnType.id,queryElem.id)}else{mgensScratch=mgens}fnTypes[i]=fnTypes[flast];fnTypes.length=flast;if(!queryElemsTmp){queryElemsTmp=queryElems.slice(0,qlast)}const passesUnification=unifyFunctionTypes(fnTypes,queryElemsTmp,whereClause,mgensScratch,mgensScratch=>{if(fnType.generics.length===0&&queryElem.generics.length===0&&fnType.bindings.size===0&&queryElem.bindings.size===0){return!solutionCb||solutionCb(mgensScratch)}const solution=unifyFunctionTypeCheckBindings(fnType,queryElem,whereClause,mgensScratch,unboxingDepth,);if(!solution){return false}const simplifiedGenerics=solution.simplifiedGenerics;for(const simplifiedMgens of solution.mgens){const passesUnification=unifyFunctionTypes(simplifiedGenerics,queryElem.generics,whereClause,simplifiedMgens,solutionCb,unboxingDepth,);if(passesUnification){return true}}return false},unboxingDepth,);if(passesUnification){return true}fnTypes[flast]=fnTypes[i];fnTypes[i]=fnType;fnTypes.length=fl}for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==0){continue}mgensScratch.set(fnType.id,0)}else{mgensScratch=mgens}const generics=fnType.id<0?whereClause[(-fnType.id)-1]:fnType.generics;const bindings=fnType.bindings?Array.from(fnType.bindings.values()).flat():[];const passesUnification=unifyFunctionTypes(fnTypes.toSpliced(i,1,...generics,...bindings),queryElems,whereClause,mgensScratch,solutionCb,unboxingDepth+1,);if(passesUnification){return true}}return false}function unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgensIn){if(!typePassesFilter(queryElem.typeFilter,fnType.ty)){return false}if(fnType.id<0&&queryElem.id<0){if(mgensIn){if(mgensIn.has(fnType.id)&&mgensIn.get(fnType.id)!==queryElem.id){return false}for(const[fid,qid]of mgensIn.entries()){if(fnType.id!==fid&&queryElem.id===qid){return false}if(fnType.id===fid&&queryElem.id!==qid){return false}}}return true}else{if(queryElem.id===typeNameIdOfArrayOrSlice&&(fnType.id===typeNameIdOfSlice||fnType.id===typeNameIdOfArray)){}else if(queryElem.id===typeNameIdOfTupleOrUnit&&(fnType.id===typeNameIdOfTuple||fnType.id===typeNameIdOfUnit)){}else if(queryElem.id===typeNameIdOfHof&&(fnType.id===typeNameIdOfFn||fnType.id===typeNameIdOfFnMut||fnType.id===typeNameIdOfFnOnce)){}else if(fnType.id!==queryElem.id||queryElem.id===null){return false}if((fnType.generics.length+fnType.bindings.size)===0&&queryElem.generics.length!==0){return false}if(fnType.bindings.size<queryElem.bindings.size){return false}const queryElemPathLength=queryElem.pathWithoutLast.length;if(queryElemPathLength>0){const fnTypePath=fnType.path!==undefined&&fnType.path!==null?fnType.path.split("::"):[];if(queryElemPathLength>fnTypePath.length){return false}let i=0;for(const path of fnTypePath){if(path===queryElem.pathWithoutLast[i]){i+=1;if(i>=queryElemPathLength){break}}}if(i<queryElemPathLength){return false}}return true}}function unifyFunctionTypeCheckBindings(fnType,queryElem,whereClause,mgensIn,unboxingDepth,){if(fnType.bindings.size<queryElem.bindings.size){return false}let simplifiedGenerics=fnType.generics||[];if(fnType.bindings.size>0){let mgensSolutionSet=[mgensIn];for(const[name,constraints]of queryElem.bindings.entries()){if(mgensSolutionSet.length===0){return false}if(!fnType.bindings.has(name)){return false}const fnTypeBindings=fnType.bindings.get(name);mgensSolutionSet=mgensSolutionSet.flatMap(mgens=>{const newSolutions=[];unifyFunctionTypes(fnTypeBindings,constraints,whereClause,mgens,newMgens=>{newSolutions.push(newMgens);return false},unboxingDepth,);return newSolutions})}if(mgensSolutionSet.length===0){return false}const binds=Array.from(fnType.bindings.entries()).flatMap(entry=>{const[name,constraints]=entry;if(queryElem.bindings.has(name)){return[]}else{return constraints}});if(simplifiedGenerics.length>0){simplifiedGenerics=[...simplifiedGenerics,...binds]}else{simplifiedGenerics=binds}return{simplifiedGenerics,mgens:mgensSolutionSet}}return{simplifiedGenerics,mgens:[mgensIn]}}function unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return false}if(fnType.id<0&&queryElem.id>=0){if(!whereClause){return false}if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){return false}const mgensTmp=new Map(mgens);mgensTmp.set(fnType.id,null);return checkIfInList(whereClause[(-fnType.id)-1],queryElem,whereClause,mgensTmp,unboxingDepth,)}else if(fnType.generics.length>0||fnType.bindings.size>0){const simplifiedGenerics=[...fnType.generics,...Array.from(fnType.bindings.values()).flat(),];return checkIfInList(simplifiedGenerics,queryElem,whereClause,mgens,unboxingDepth,)}return false}function checkIfInList(list,elem,whereClause,mgens,unboxingDepth){for(const entry of list){if(checkType(entry,elem,whereClause,mgens,unboxingDepth)){return true}}return false}function checkType(row,elem,whereClause,mgens,unboxingDepth){if(unboxingDepth>=UNBOXING_LIMIT){return false}if(row.bindings.size===0&&elem.bindings.size===0){if(elem.id<0&&mgens===null){return row.id<0||checkIfInList(row.generics,elem,whereClause,mgens,unboxingDepth+1,)}if(row.id>0&&elem.id>0&&elem.pathWithoutLast.length===0&&typePassesFilter(elem.typeFilter,row.ty)&&elem.generics.length===0&&elem.id!==typeNameIdOfArrayOrSlice&&elem.id!==typeNameIdOfTupleOrUnit&&elem.id!==typeNameIdOfHof){return row.id===elem.id||checkIfInList(row.generics,elem,whereClause,mgens,unboxingDepth,)}}return unifyFunctionTypes([row],[elem],whereClause,mgens,null,unboxingDepth)}function checkPath(contains,ty){if(contains.length===0){return 0}const maxPathEditDistance=Math.floor(contains.reduce((acc,next)=>acc+next.length,0)/3,);let ret_dist=maxPathEditDistance+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;pathiter:for(let i=length-clength;i>=0;i-=1){let dist_total=0;for(let x=0;x<clength;++x){const[p,c]=[path[i+x],contains[x]];if(Math.floor((p.length-c.length)/3)<=maxPathEditDistance&&p.indexOf(c)!==-1){dist_total+=Math.floor((p.length-c.length)/3)}else{const dist=editDistance(p,c,maxPathEditDistance);if(dist>maxPathEditDistance){continue pathiter}dist_total+=dist}}ret_dist=Math.min(ret_dist,Math.round(dist_total/clength))}return ret_dist>maxPathEditDistance?null:ret_dist}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,descShard:item.descShard,descIndex:item.descIndex,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,bitIndex:item.bitIndex,implDisambiguator:item.implDisambiguator,}}function handleAliases(ret,query,filterCrates,currentCrate){const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(ALIASES.has(filterCrates)&&ALIASES.get(filterCrates).has(lowerQuery)){const query_aliases=ALIASES.get(filterCrates).get(lowerQuery);for(const alias of query_aliases){aliases.push(createAliasFromItem(searchIndex[alias]))}}}else{for(const[crate,crateAliasesIndex]of ALIASES){if(crateAliasesIndex.has(lowerQuery)){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=crateAliasesIndex.get(lowerQuery);for(const alias of query_aliases){pushTo.push(createAliasFromItem(searchIndex[alias]))}}}}const sortFunc=(aaa,bbb)=>{if(aaa.path<bbb.path){return 1}else if(aaa.path===bbb.path){return 0}return-1};crateAliases.sort(sortFunc);aliases.sort(sortFunc);const pushFunc=alias=>{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach(pushFunc);crateAliases.forEach(pushFunc)}function addIntoResults(results,fullId,id,index,dist,path_dist,maxEditDistance){if(dist<=maxEditDistance||index!==-1){if(results.has(fullId)){const result=results.get(fullId);if(result.dontValidate||result.dist<=dist){return}}results.set(fullId,{id:id,index:index,dontValidate:parsedQuery.literalSearch,dist:dist,path_dist:path_dist,})}}function handleSingleArg(row,pos,elem,results_others,results_in_args,results_returned,maxEditDistance,){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let path_dist=0;const fullId=row.id;const tfpDist=compareTypeFingerprints(fullId,parsedQuery.typeFingerprint,);if(tfpDist!==null){const in_args=row.type&&row.type.inputs&&checkIfInList(row.type.inputs,elem,row.type.where_clause,null,0);const returned=row.type&&row.type.output&&checkIfInList(row.type.output,elem,row.type.where_clause,null,0);if(in_args){results_in_args.max_dist=Math.max(results_in_args.max_dist||0,tfpDist);const maxDist=results_in_args.size<MAX_RESULTS?(tfpDist+1):results_in_args.max_dist;addIntoResults(results_in_args,fullId,pos,-1,tfpDist,0,maxDist)}if(returned){results_returned.max_dist=Math.max(results_returned.max_dist||0,tfpDist);const maxDist=results_returned.size<MAX_RESULTS?(tfpDist+1):results_returned.max_dist;addIntoResults(results_returned,fullId,pos,-1,tfpDist,0,maxDist)}}if(!typePassesFilter(elem.typeFilter,row.ty)){return}let index=row.word.indexOf(elem.pathLast);const normalizedIndex=row.normalizedName.indexOf(elem.pathLast);if(index===-1||(index>normalizedIndex&&normalizedIndex!==-1)){index=normalizedIndex}if(elem.fullPath.length>1){path_dist=checkPath(elem.pathWithoutLast,row);if(path_dist===null){return}}if(parsedQuery.literalSearch){if(row.word===elem.pathLast){addIntoResults(results_others,fullId,pos,index,0,path_dist)}return}const dist=editDistance(row.normalizedName,elem.normalizedPathLast,maxEditDistance);if(index===-1&&dist>maxEditDistance){return}addIntoResults(results_others,fullId,pos,index,dist,path_dist,maxEditDistance)}function handleArgs(row,pos,results){if(!row||(filterCrates!==null&&row.crate!==filterCrates)||!row.type){return}const tfpDist=compareTypeFingerprints(row.id,parsedQuery.typeFingerprint,);if(tfpDist===null){return}if(results.size>=MAX_RESULTS&&tfpDist>results.max_dist){return}if(!unifyFunctionTypes(row.type.inputs,parsedQuery.elems,row.type.where_clause,null,mgens=>{return unifyFunctionTypes(row.type.output,parsedQuery.returned,row.type.where_clause,mgens,null,0,)},0,)){return}results.max_dist=Math.max(results.max_dist||0,tfpDist);addIntoResults(results,row.id,pos,0,tfpDist,0,Number.MAX_VALUE)}function innerRunQuery(){const queryLen=parsedQuery.elems.reduce((acc,next)=>acc+next.pathLast.length,0)+parsedQuery.returned.reduce((acc,next)=>acc+next.pathLast.length,0);const maxEditDistance=Math.floor(queryLen/3);const genericSymbols=new Map();function convertNameToId(elem,isAssocType){if(typeNameIdMap.has(elem.normalizedPathLast)&&(isAssocType||!typeNameIdMap.get(elem.normalizedPathLast).assocOnly)){elem.id=typeNameIdMap.get(elem.normalizedPathLast).id}else if(!parsedQuery.literalSearch){let match=null;let matchDist=maxEditDistance+1;let matchName="";for(const[name,{id,assocOnly}]of typeNameIdMap){const dist=editDistance(name,elem.normalizedPathLast,maxEditDistance);if(dist<=matchDist&&dist<=maxEditDistance&&(isAssocType||!assocOnly)){if(dist===matchDist&&matchName>name){continue}match=id;matchDist=dist;matchName=name}}if(match!==null){parsedQuery.correction=matchName}elem.id=match}if((elem.id===null&&parsedQuery.totalElems>1&&elem.typeFilter===-1&&elem.generics.length===0&&elem.bindings.size===0)||elem.typeFilter===TY_GENERIC){if(genericSymbols.has(elem.name)){elem.id=genericSymbols.get(elem.name)}else{elem.id=-(genericSymbols.size+1);genericSymbols.set(elem.name,elem.id)}if(elem.typeFilter===-1&&elem.name.length>=3){const maxPartDistance=Math.floor(elem.name.length/3);let matchDist=maxPartDistance+1;let matchName="";for(const name of typeNameIdMap.keys()){const dist=editDistance(name,elem.name,maxPartDistance);if(dist<=matchDist&&dist<=maxPartDistance){if(dist===matchDist&&matchName>name){continue}matchDist=dist;matchName=name}}if(matchName!==""){parsedQuery.proposeCorrectionFrom=elem.name;parsedQuery.proposeCorrectionTo=matchName}}elem.typeFilter=TY_GENERIC}if(elem.generics.length>0&&elem.typeFilter===TY_GENERIC){parsedQuery.error=["Generic type parameter ",elem.name," does not accept generic parameters",]}for(const elem2 of elem.generics){convertNameToId(elem2)}elem.bindings=new Map(Array.from(elem.bindings.entries()).map(entry=>{const[name,constraints]=entry;if(!typeNameIdMap.has(name)){parsedQuery.error=["Type parameter ",name," does not exist",];return[null,[]]}for(const elem2 of constraints){convertNameToId(elem2)}return[typeNameIdMap.get(name).id,constraints]}),)}const fps=new Set();for(const elem of parsedQuery.elems){convertNameToId(elem);buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}for(const elem of parsedQuery.returned){convertNameToId(elem);buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}if(parsedQuery.foundElems===1&&parsedQuery.returned.length===0){if(parsedQuery.elems.length===1){const elem=parsedQuery.elems[0];for(let i=0,nSearchIndex=searchIndex.length;i<nSearchIndex;++i){handleSingleArg(searchIndex[i],i,elem,results_others,results_in_args,results_returned,maxEditDistance,)}}}else if(parsedQuery.foundElems>0){const sortQ=(a,b)=>{const ag=a.generics.length===0&&a.bindings.size===0;const bg=b.generics.length===0&&b.bindings.size===0;if(ag!==bg){return ag-bg}const ai=a.id>0;const bi=b.id>0;return ai-bi};parsedQuery.elems.sort(sortQ);parsedQuery.returned.sort(sortQ);for(let i=0,nSearchIndex=searchIndex.length;i<nSearchIndex;++i){handleArgs(searchIndex[i],i,results_others)}}}if(parsedQuery.error===null){innerRunQuery()}const[sorted_in_args,sorted_returned,sorted_others]=await Promise.all([sortResults(results_in_args,true,currentCrate),sortResults(results_returned,true,currentCrate),sortResults(results_others,false,currentCrate),]);const ret=createQueryResults(sorted_in_args,sorted_returned,sorted_others,parsedQuery);handleAliases(ret,parsedQuery.original.replace(/"/g,""),filterCrates,currentCrate);if(parsedQuery.error!==null&&ret.others.length!==0){ret.query.error=null}return ret}function nextTab(direction){const next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){const target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#search-tabs button").item(searchState.currentTab);searchState.focusedByTab[searchState.currentTab]=null;if(target){target.focus()}}function buildHrefAndPath(item){let displayPath;let href;const type=itemTypes[item.ty];const name=item.name;let path=item.path;if(type==="mod"){displayPath=path+"::";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="import"){displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/index.html#reexport."+name}else if(type==="primitive"||type==="keyword"){displayPath="";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=ROOT_PATH+name+"/index.html"}else if(item.parent!==undefined){const myparent=item.parent;let anchor=type+"."+name;const parentType=itemTypes[myparent.ty];let pageType=parentType;let pageName=myparent.name;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){const enumNameIdx=item.path.lastIndexOf("::");const enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}if(item.implDisambiguator!==null){anchor=item.implDisambiguator+"/"+anchor}href=ROOT_PATH+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html#"+anchor}else{displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href]}function pathSplitter(path){const tmp="<span>"+path.replace(/::/g,"::</span><span>");if(tmp.endsWith("<span>")){return tmp.slice(0,tmp.length-6)}return tmp}async function addTab(array,query,display){const extraClass=display?" active":"";const output=document.createElement("div");if(array.length>0){output.className="search-results "+extraClass;for(const item of array){const name=item.name;const type=itemTypes[item.ty];const longType=longItemTypes[item.ty];const typeName=longType.length!==0?`${longType}`:"?";const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("div");resultName.className="result-name";resultName.insertAdjacentHTML("beforeend",`<span class="typename">${typeName}</span>`);link.appendChild(resultName);let alias=" ";if(item.is_alias){alias=` <div class="alias">\
+<b>${item.alias}</b><i class="grey">&nbsp;- see&nbsp;</i>\
+</div>`}resultName.insertAdjacentHTML("beforeend",`<div class="path">${alias}\
+${item.displayPath}<span class="${type}">${name}</span>\
+</div>`);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);link.appendChild(description);output.appendChild(link)}}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(<br/>"+"Try on <a href=\"https://duckduckgo.com/?q="+encodeURIComponent("rust "+query.userQuery)+"\">DuckDuckGo</a>?<br/><br/>"+"Or try looking in one of these:<ul><li>The <a "+"href=\"https://doc.rust-lang.org/reference/index.html\">Rust Reference</a> "+" for technical details about the language.</li><li><a "+"href=\"https://doc.rust-lang.org/rust-by-example/index.html\">Rust By "+"Example</a> for expository code examples.</a></li><li>The <a "+"href=\"https://doc.rust-lang.org/book/index.html\">Rust Book</a> for "+"introductions to language features and the language itself.</li><li><a "+"href=\"https://docs.rs\">Docs.rs</a> for documentation of crates released on"+" <a href=\"https://crates.io/\">crates.io</a>.</li></ul>"}return[output,array.length]}function makeTabHeader(tabNb,text,nbElems){const fmtNbElems=nbElems<10?`\u{2007}(${nbElems})\u{2007}\u{2007}`:nbElems<100?`\u{2007}(${nbElems})\u{2007}`:`\u{2007}(${nbElems})`;if(searchState.currentTab===tabNb){return"<button class=\"selected\">"+text+"<span class=\"count\">"+fmtNbElems+"</span></button>"}return"<button>"+text+"<span class=\"count\">"+fmtNbElems+"</span></button>"}async function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true")){window.onunload=()=>{};searchState.removeQueryParameters();const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=parseQuery(searchState.input.value)}currentResults=results.query.userQuery;const[ret_others,ret_in_args,ret_returned]=await Promise.all([addTab(results.others,results.query,true),addTab(results.in_args,results.query,false),addTab(results.returned,results.query,false),]);let currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";if(rawSearchIndex.size>1){crates=" in&nbsp;<div id=\"crate-search-div\"><select id=\"crate-search\">"+"<option value=\"all crates\">all crates</option>";for(const c of rawSearchIndex.keys()){crates+=`<option value="${c}" ${c === filterCrates && "selected"}>${c}</option>`}crates+="</select></div>"}let output=`<h1 class="search-results-title">Results${crates}</h1>`;if(results.query.error!==null){const error=results.query.error;error.forEach((value,index)=>{value=value.split("<").join("&lt;").split(">").join("&gt;");if(index%2!==0){error[index]=`<code>${value.replaceAll(" ", "&nbsp;")}</code>`}else{error[index]=value}});output+=`<h3 class="error">Query parser error: "${error.join("")}".</h3>`;output+="<div id=\"search-tabs\">"+makeTabHeader(0,"In Names",ret_others[1])+"</div>";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="<div id=\"search-tabs\">"+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"</div>"}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="<div id=\"search-tabs\">"+makeTabHeader(0,signatureTabTitle,ret_others[1])+"</div>";currentTab=0}if(results.query.correction!==null){const orig=results.query.returned.length>0?results.query.returned[0].name:results.query.elems[0].name;output+="<h3 class=\"search-corrections\">"+`Type "${orig}" not found. `+"Showing results for closest type name "+`"${results.query.correction}" instead.</h3>`}if(results.query.proposeCorrectionFrom!==null){const orig=results.query.proposeCorrectionFrom;const targ=results.query.proposeCorrectionTo;output+="<h3 class=\"search-corrections\">"+`Type "${orig}" not found and used as generic parameter. `+`Consider searching for "${targ}" instead.</h3>`}const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("search-tabs").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function updateSearchHistory(url){if(!browserSupportsHistoryApi()){return}const params=searchState.getQueryStringParams();if(!history.state&&!params.search){history.pushState(null,"",url)}else{history.replaceState(null,"",url)}}async function search(forced){const query=parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&&params["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="Results for "+query.original+" - Rust";updateSearchHistory(buildUrl(query.original,filterCrates));await showResults(await execQuery(query,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function buildItemSearchTypeAll(types,lowercasePaths){return types.length>0?types.map(type=>buildItemSearchType(type,lowercasePaths)):EMPTY_GENERICS_ARRAY}const EMPTY_BINDINGS_MAP=new Map();const EMPTY_GENERICS_ARRAY=[];let TYPES_POOL=new Map();function buildItemSearchType(type,lowercasePaths,isAssocType){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;const BINDINGS_DATA=2;let pathIndex,generics,bindings;if(typeof type==="number"){pathIndex=type;generics=EMPTY_GENERICS_ARRAY;bindings=EMPTY_BINDINGS_MAP}else{pathIndex=type[PATH_INDEX_DATA];generics=buildItemSearchTypeAll(type[GENERICS_DATA],lowercasePaths,);if(type.length>BINDINGS_DATA&&type[BINDINGS_DATA].length>0){bindings=new Map(type[BINDINGS_DATA].map(binding=>{const[assocType,constraints]=binding;return[buildItemSearchType(assocType,lowercasePaths,true).id,buildItemSearchTypeAll(constraints,lowercasePaths),]}))}else{bindings=EMPTY_BINDINGS_MAP}}let result;if(pathIndex<0){result={id:pathIndex,ty:TY_GENERIC,path:null,generics,bindings,}}else if(pathIndex===0){result={id:null,ty:null,path:null,generics,bindings,}}else{const item=lowercasePaths[pathIndex-1];result={id:buildTypeMapIndex(item.name,isAssocType),ty:item.ty,path:item.path,generics,bindings,}}const cr=TYPES_POOL.get(result.id);if(cr){if(cr.generics.length===result.generics.length&&cr.generics!==result.generics&&cr.generics.every((x,i)=>result.generics[i]===x)){result.generics=cr.generics}if(cr.bindings.size===result.bindings.size&&cr.bindings!==result.bindings){let ok=true;for(const[k,v]of cr.bindings.entries()){const v2=result.bindings.get(v);if(!v2){ok=false;break}if(v!==v2&&v.length===v2.length&&v.every((x,i)=>v2[i]===x)){result.bindings.set(k,v)}else if(v!==v2){ok=false;break}}if(ok){result.bindings=cr.bindings}}if(cr.ty===result.ty&&cr.path===result.path&&cr.bindings===result.bindings&&cr.generics===result.generics&&cr.ty===result.ty){return cr}}TYPES_POOL.set(result.id,result);return result}function buildFunctionSearchTypeCallback(lowercasePaths){return functionSearchType=>{if(functionSearchType===0){return null}const INPUTS_DATA=0;const OUTPUT_DATA=1;let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){inputs=[buildItemSearchType(functionSearchType[INPUTS_DATA],lowercasePaths)]}else{inputs=buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],lowercasePaths,)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){output=[buildItemSearchType(functionSearchType[OUTPUT_DATA],lowercasePaths)]}else{output=buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],lowercasePaths,)}}else{output=[]}const where_clause=[];const l=functionSearchType.length;for(let i=2;i<l;++i){where_clause.push(typeof functionSearchType[i]==="number"?[buildItemSearchType(functionSearchType[i],lowercasePaths)]:buildItemSearchTypeAll(functionSearchType[i],lowercasePaths))}return{inputs,output,where_clause,}}}function buildFunctionTypeFingerprint(type,output,fps){let input=type.id;if(input===typeNameIdOfArray||input===typeNameIdOfSlice){input=typeNameIdOfArrayOrSlice}if(input===typeNameIdOfTuple||input===typeNameIdOfUnit){input=typeNameIdOfTupleOrUnit}if(input===typeNameIdOfFn||input===typeNameIdOfFnMut||input===typeNameIdOfFnOnce){input=typeNameIdOfHof}const hashint1=k=>{k=(~~k+0x7ed55d16)+(k<<12);k=(k ^ 0xc761c23c)^(k>>>19);k=(~~k+0x165667b1)+(k<<5);k=(~~k+0xd3a2646c)^(k<<9);k=(~~k+0xfd7046c5)+(k<<3);return(k ^ 0xb55a4f09)^(k>>>16)};const hashint2=k=>{k=~k+(k<<15);k ^=k>>>12;k+=k<<2;k ^=k>>>4;k=Math.imul(k,2057);return k ^(k>>16)};if(input!==null){const h0a=hashint1(input);const h0b=hashint2(input);const h1a=~~(h0a+Math.imul(h0b,2));const h1b=~~(h0a+Math.imul(h0b,3));const h2a=~~(h0a+Math.imul(h0b,4));const h2b=~~(h0a+Math.imul(h0b,5));output[0]|=(1<<(h0a%32))|(1<<(h1b%32));output[1]|=(1<<(h1a%32))|(1<<(h2b%32));output[2]|=(1<<(h2a%32))|(1<<(h0b%32));fps.add(input)}for(const g of type.generics){buildFunctionTypeFingerprint(g,output,fps)}const fb={id:null,ty:0,generics:EMPTY_GENERICS_ARRAY,bindings:EMPTY_BINDINGS_MAP,};for(const[k,v]of type.bindings.entries()){fb.id=k;fb.generics=v;buildFunctionTypeFingerprint(fb,output,fps)}output[3]=fps.size}function compareTypeFingerprints(fullId,queryFingerprint){const fh0=functionTypeFingerprint[fullId*4];const fh1=functionTypeFingerprint[(fullId*4)+1];const fh2=functionTypeFingerprint[(fullId*4)+2];const[qh0,qh1,qh2]=queryFingerprint;const[in0,in1,in2]=[fh0&qh0,fh1&qh1,fh2&qh2];if((in0 ^ qh0)||(in1 ^ qh1)||(in2 ^ qh2)){return null}return functionTypeFingerprint[(fullId*4)+3]}class VlqHexDecoder{constructor(string,cons){this.string=string;this.cons=cons;this.offset=0;this.backrefQueue=[]}decodeList(){const cb="}".charCodeAt(0);let c=this.string.charCodeAt(this.offset);const ret=[];while(c!==cb){ret.push(this.decode());c=this.string.charCodeAt(this.offset)}this.offset+=1;return ret}decode(){const[ob,la]=["{","`"].map(c=>c.charCodeAt(0));let n=0;let c=this.string.charCodeAt(this.offset);if(c===ob){this.offset+=1;return this.decodeList()}while(c<la){n=(n<<4)|(c&0xF);this.offset+=1;c=this.string.charCodeAt(this.offset)}n=(n<<4)|(c&0xF);const[sign,value]=[n&1,n>>1];this.offset+=1;return sign?-value:value}next(){const c=this.string.charCodeAt(this.offset);const[zero,ua,la]=["0","@","`"].map(c=>c.charCodeAt(0));if(c>=zero&&c<ua){this.offset+=1;return this.backrefQueue[c-zero]}if(c===la){this.offset+=1;return this.cons(0)}const result=this.cons(this.decode());this.backrefQueue.unshift(result);if(this.backrefQueue.length>16){this.backrefQueue.pop()}return result}}class RoaringBitmap{constructor(str){const strdecoded=atob(str);const u8array=new Uint8Array(strdecoded.length);for(let j=0;j<strdecoded.length;++j){u8array[j]=strdecoded.charCodeAt(j)}const has_runs=u8array[0]===0x3b;const size=has_runs?((u8array[2]|(u8array[3]<<8))+1):((u8array[4]|(u8array[5]<<8)|(u8array[6]<<16)|(u8array[7]<<24)));let i=has_runs?4:8;let is_run;if(has_runs){const is_run_len=Math.floor((size+7)/8);is_run=u8array.slice(i,i+is_run_len);i+=is_run_len}else{is_run=new Uint8Array()}this.keys=[];this.cardinalities=[];for(let j=0;j<size;++j){this.keys.push(u8array[i]|(u8array[i+1]<<8));i+=2;this.cardinalities.push((u8array[i]|(u8array[i+1]<<8))+1);i+=2}this.containers=[];let offsets=null;if(!has_runs||this.keys.length>=4){offsets=[];for(let j=0;j<size;++j){offsets.push(u8array[i]|(u8array[i+1]<<8)|(u8array[i+2]<<16)|(u8array[i+3]<<24));i+=4}}for(let j=0;j<size;++j){if(offsets&&offsets[j]!==i){console.log(this.containers);throw new Error(`corrupt bitmap ${j}: ${i} / ${offsets[j]}`)}if(is_run[j>>3]&(1<<(j&0x7))){const runcount=(u8array[i]|(u8array[i+1]<<8));i+=2;this.containers.push(new RoaringBitmapRun(runcount,u8array.slice(i,i+(runcount*4)),));i+=runcount*4}else if(this.cardinalities[j]>=4096){this.containers.push(new RoaringBitmapBits(u8array.slice(i,i+8192)));i+=8192}else{const end=this.cardinalities[j]*2;this.containers.push(new RoaringBitmapArray(this.cardinalities[j],u8array.slice(i,i+end),));i+=end}}}contains(keyvalue){const key=keyvalue>>16;const value=keyvalue&0xFFFF;for(let i=0;i<this.keys.length;++i){if(this.keys[i]===key){return this.containers[i].contains(value)}}return false}}class RoaringBitmapRun{constructor(runcount,array){this.runcount=runcount;this.array=array}contains(value){const l=this.runcount*4;for(let i=0;i<l;i+=4){const start=this.array[i]|(this.array[i+1]<<8);const lenm1=this.array[i+2]|(this.array[i+3]<<8);if(value>=start&&value<=(start+lenm1)){return true}}return false}}class RoaringBitmapArray{constructor(cardinality,array){this.cardinality=cardinality;this.array=array}contains(value){const l=this.cardinality*2;for(let i=0;i<l;i+=2){const start=this.array[i]|(this.array[i+1]<<8);if(value===start){return true}}return false}}class RoaringBitmapBits{constructor(array){this.array=array}contains(value){return!!(this.array[value>>3]&(1<<(value&7)))}}function buildIndex(rawSearchIndex){searchIndex=[];searchIndexDeprecated=new Map();searchIndexEmptyDesc=new Map();const charA="A".charCodeAt(0);let currentIndex=0;let id=0;for(const crate of rawSearchIndex.values()){id+=crate.t.length+1}functionTypeFingerprint=new Uint32Array((id+1)*4);id=0;for(const[crate,crateCorpus]of rawSearchIndex){const itemDescShardDecoder=new VlqHexDecoder(crateCorpus.D,noop=>noop);let descShard={crate,shard:0,start:0,len:itemDescShardDecoder.next(),promise:null,resolve:null,};const descShardList=[descShard];searchIndexDeprecated.set(crate,new RoaringBitmap(crateCorpus.c));searchIndexEmptyDesc.set(crate,new RoaringBitmap(crateCorpus.e));let descIndex=0;const crateRow={crate,ty:3,name:crate,path:"",descShard,descIndex,parent:undefined,type:null,id,word:crate,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),bitIndex:0,implDisambiguator:null,};id+=1;searchIndex.push(crateRow);currentIndex+=1;if(!searchIndexEmptyDesc.get(crate).contains(0)){descIndex+=1}const itemTypes=crateCorpus.t;const itemNames=crateCorpus.n;const itemPaths=new Map(crateCorpus.q);const itemParentIdxs=crateCorpus.i;const implDisambiguator=new Map(crateCorpus.b);const paths=crateCorpus.p;const aliases=crateCorpus.a;const lowercasePaths=[];const itemFunctionDecoder=new VlqHexDecoder(crateCorpus.f,buildFunctionSearchTypeCallback(lowercasePaths),);let len=paths.length;let lastPath=itemPaths.get(0);for(let i=0;i<len;++i){const elem=paths[i];const ty=elem[0];const name=elem[1];let path=null;if(elem.length>2){path=itemPaths.has(elem[2])?itemPaths.get(elem[2]):lastPath;lastPath=path}lowercasePaths.push({ty:ty,name:name.toLowerCase(),path:path});paths[i]={ty:ty,name:name,path:path}}lastPath="";len=itemTypes.length;for(let i=0;i<len;++i){const bitIndex=i+1;if(descIndex>=descShard.len&&!searchIndexEmptyDesc.get(crate).contains(bitIndex)){descShard={crate,shard:descShard.shard+1,start:descShard.start+descShard.len,len:itemDescShardDecoder.next(),promise:null,resolve:null,};descIndex=0;descShardList.push(descShard)}let word="";if(typeof itemNames[i]==="string"){word=itemNames[i].toLowerCase()}const path=itemPaths.has(i)?itemPaths.get(i):lastPath;const type=itemFunctionDecoder.next();if(type!==null){if(type){const fp=functionTypeFingerprint.subarray(id*4,(id+1)*4);const fps=new Set();for(const t of type.inputs){buildFunctionTypeFingerprint(t,fp,fps)}for(const t of type.output){buildFunctionTypeFingerprint(t,fp,fps)}for(const w of type.where_clause){for(const t of w){buildFunctionTypeFingerprint(t,fp,fps)}}}}const row={crate,ty:itemTypes.charCodeAt(i)-charA,name:itemNames[i],path,descShard,descIndex,parent:itemParentIdxs[i]>0?paths[itemParentIdxs[i]-1]:undefined,type,id,word,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),bitIndex,implDisambiguator:implDisambiguator.has(i)?implDisambiguator.get(i):null,};id+=1;searchIndex.push(row);lastPath=row.path;if(!searchIndexEmptyDesc.get(crate).contains(bitIndex)){descIndex+=1}}if(aliases){const currentCrateAliases=new Map();ALIASES.set(crate,currentCrateAliases);for(const alias_name in aliases){if(!Object.prototype.hasOwnProperty.call(aliases,alias_name)){continue}let currentNameAliases;if(currentCrateAliases.has(alias_name)){currentNameAliases=currentCrateAliases.get(alias_name)}else{currentNameAliases=[];currentCrateAliases.set(alias_name,currentNameAliases)}for(const local_alias of aliases[alias_name]){currentNameAliases.push(local_alias+currentIndex)}}}currentIndex+=itemTypes.length;searchState.descShards.set(crate,descShardList)}TYPES_POOL=new Map()}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom<rect.height){window.scrollBy(0,rect.height)}e.preventDefault()}else if(e.which===37){nextTab(-1);e.preventDefault()}else if(e.which===39){nextTab(1);e.preventDefault()}});searchState.input.addEventListener("keydown",e=>{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&&params.search.length>0){searchState.input.value=params.search;e.preventDefault();search()}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const query=searchState.input.value.trim();updateSearchHistory(buildUrl(query,null))}currentResults=null;search(true)}buildIndex(rawSearchIndex);if(typeof window!=="undefined"){registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}if(typeof exports!=="undefined"){exports.initSearch=initSearch;exports.execQuery=execQuery;exports.parseQuery=parseQuery}}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch(new Map())}})()
\ No newline at end of file
diff --git a/static.files/settings-4313503d2e1961c2.js b/static.files/settings-4313503d2e1961c2.js
new file mode 100644
index 0000000..ab425fe
--- /dev/null
+++ b/static.files/settings-4313503d2e1961c2.js
@@ -0,0 +1,17 @@
+"use strict";(function(){const isSettingsPage=window.location.pathname.endsWith("/settings.html");function changeSetting(settingName,value){if(settingName==="theme"){const useSystem=value==="system preference"?"true":"false";updateLocalStorage("use-system-theme",useSystem)}updateLocalStorage(settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":updateTheme();updateLightAndDark();break;case"line-numbers":if(value===true){window.rustdoc_add_line_numbers_to_examples()}else{window.rustdoc_remove_line_numbers_from_examples()}break;case"hide-sidebar":if(value===true){addClass(document.documentElement,"hide-sidebar")}else{removeClass(document.documentElement,"hide-sidebar")}break}}function showLightAndDark(){removeClass(document.getElementById("preferred-light-theme"),"hidden");removeClass(document.getElementById("preferred-dark-theme"),"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme"),"hidden");addClass(document.getElementById("preferred-dark-theme"),"hidden")}function updateLightAndDark(){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||(useSystem===null&&getSettingValue("theme")===null)){showLightAndDark()}else{hideLightAndDark()}}function setEvents(settingsElement){updateLightAndDark();onEachLazy(settingsElement.querySelectorAll("input[type=\"checkbox\"]"),toggle=>{const settingId=toggle.id;const settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=()=>{changeSetting(toggle.id,toggle.checked)}});onEachLazy(settingsElement.querySelectorAll("input[type=\"radio\"]"),elem=>{const settingId=elem.name;let settingValue=getSettingValue(settingId);if(settingId==="theme"){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||settingValue===null){settingValue=useSystem==="false"?"light":"system preference"}}if(settingValue!==null&&settingValue!=="null"){elem.checked=settingValue===elem.value}elem.addEventListener("change",ev=>{changeSetting(ev.target.name,ev.target.value)})})}function buildSettingsPageSections(settings){let output="";for(const setting of settings){const js_data_name=setting["js_name"];const setting_name=setting["name"];if(setting["options"]!==undefined){output+=`\
+<div class="setting-line" id="${js_data_name}">
+    <div class="setting-radio-name">${setting_name}</div>
+    <div class="setting-radio-choices">`;onEach(setting["options"],option=>{const checked=option===setting["default"]?" checked":"";const full=`${js_data_name}-${option.replace(/ /g,"-")}`;output+=`\
+        <label for="${full}" class="setting-radio">
+            <input type="radio" name="${js_data_name}"
+                id="${full}" value="${option}"${checked}>
+            <span>${option}</span>
+        </label>`});output+=`\
+    </div>
+</div>`}else{const checked=setting["default"]===true?" checked":"";output+=`\
+<div class="setting-line">\
+    <label class="setting-check">\
+        <input type="checkbox" id="${js_data_name}"${checked}>\
+        <span>${setting_name}</span>\
+    </label>\
+</div>`}}return output}function buildSettingsPage(){const theme_names=getVar("themes").split(",").filter(t=>t);theme_names.push("light","dark","ayu");const settings=[{"name":"Theme","js_name":"theme","default":"system preference","options":theme_names.concat("system preference"),},{"name":"Preferred light theme","js_name":"preferred-light-theme","default":"light","options":theme_names,},{"name":"Preferred dark theme","js_name":"preferred-dark-theme","default":"dark","options":theme_names,},{"name":"Auto-hide item contents for large items","js_name":"auto-hide-large-items","default":true,},{"name":"Auto-hide item methods' documentation","js_name":"auto-hide-method-docs","default":false,},{"name":"Auto-hide trait implementation documentation","js_name":"auto-hide-trait-implementations","default":false,},{"name":"Directly go to item in search if there is only one result","js_name":"go-to-only-result","default":false,},{"name":"Show line numbers on code examples","js_name":"line-numbers","default":false,},{"name":"Hide persistent navigation bar","js_name":"hide-sidebar","default":false,},{"name":"Disable keyboard shortcuts","js_name":"disable-shortcuts","default":false,},];const elementKind=isSettingsPage?"section":"div";const innerHTML=`<div class="settings">${buildSettingsPageSections(settings)}</div>`;const el=document.createElement(elementKind);el.id="settings";if(!isSettingsPage){el.className="popover"}el.innerHTML=innerHTML;if(isSettingsPage){document.getElementById(MAIN_ID).appendChild(el)}else{el.setAttribute("tabindex","-1");getSettingsButton().appendChild(el)}return el}const settingsMenu=buildSettingsPage();function displaySettings(){settingsMenu.style.display="";onEachLazy(settingsMenu.querySelectorAll("input[type='checkbox']"),el=>{const val=getSettingValue(el.id);const checked=val==="true";if(checked!==el.checked&&val!==null){el.checked=checked}})}function settingsBlurHandler(event){blurHandler(event,getSettingsButton(),window.hidePopoverMenus)}if(isSettingsPage){getSettingsButton().onclick=event=>{event.preventDefault()}}else{const settingsButton=getSettingsButton();const settingsMenu=document.getElementById("settings");settingsButton.onclick=event=>{if(settingsMenu.contains(event.target)){return}event.preventDefault();const shouldDisplaySettings=settingsMenu.style.display==="none";window.hideAllModals();if(shouldDisplaySettings){displaySettings()}};settingsButton.onblur=settingsBlurHandler;settingsButton.querySelector("a").onblur=settingsBlurHandler;onEachLazy(settingsMenu.querySelectorAll("input"),el=>{el.onblur=settingsBlurHandler});settingsMenu.onblur=settingsBlurHandler}setTimeout(()=>{setEvents(settingsMenu);if(!isSettingsPage){displaySettings()}removeClass(getSettingsButton(),"rotate")},0)})()
\ No newline at end of file
diff --git a/static.files/src-script-e66d777a5a92e9b2.js b/static.files/src-script-e66d777a5a92e9b2.js
new file mode 100644
index 0000000..d0aebb8
--- /dev/null
+++ b/static.files/src-script-e66d777a5a92e9b2.js
@@ -0,0 +1 @@
+"use strict";(function(){const rootPath=getVar("root-path");const NAME_OFFSET=0;const DIRS_OFFSET=1;const FILES_OFFSET=2;const RUSTDOC_MOBILE_BREAKPOINT=700;function closeSidebarIfMobile(){if(window.innerWidth<RUSTDOC_MOBILE_BREAKPOINT){updateLocalStorage("source-sidebar-show","false")}}function createDirEntry(elem,parent,fullPath,hasFoundFile){const dirEntry=document.createElement("details");const summary=document.createElement("summary");dirEntry.className="dir-entry";fullPath+=elem[NAME_OFFSET]+"/";summary.innerText=elem[NAME_OFFSET];dirEntry.appendChild(summary);const folders=document.createElement("div");folders.className="folders";if(elem[DIRS_OFFSET]){for(const dir of elem[DIRS_OFFSET]){if(createDirEntry(dir,folders,fullPath,false)){dirEntry.open=true;hasFoundFile=true}}}dirEntry.appendChild(folders);const files=document.createElement("div");files.className="files";if(elem[FILES_OFFSET]){const w=window.location.href.split("#")[0];for(const file_text of elem[FILES_OFFSET]){const file=document.createElement("a");file.innerText=file_text;file.href=rootPath+"src/"+fullPath+file_text+".html";file.addEventListener("click",closeSidebarIfMobile);if(!hasFoundFile&&w===file.href){file.className="selected";dirEntry.open=true;hasFoundFile=true}files.appendChild(file)}}dirEntry.appendChild(files);parent.appendChild(dirEntry);return hasFoundFile}window.rustdocCloseSourceSidebar=()=>{removeClass(document.documentElement,"src-sidebar-expanded");updateLocalStorage("source-sidebar-show","false")};window.rustdocShowSourceSidebar=()=>{addClass(document.documentElement,"src-sidebar-expanded");updateLocalStorage("source-sidebar-show","true")};window.rustdocToggleSrcSidebar=()=>{if(document.documentElement.classList.contains("src-sidebar-expanded")){window.rustdocCloseSourceSidebar()}else{window.rustdocShowSourceSidebar()}};function createSrcSidebar(){const container=document.querySelector("nav.sidebar");const sidebar=document.createElement("div");sidebar.id="src-sidebar";let hasFoundFile=false;for(const[key,source]of srcIndex){source[NAME_OFFSET]=key;hasFoundFile=createDirEntry(source,sidebar,"",hasFoundFile)}container.appendChild(sidebar);const selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}function highlightSrcLines(){const match=window.location.hash.match(/^#?(\d+)(?:-(\d+))?$/);if(!match){return}let from=parseInt(match[1],10);let to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(to<from){const tmp=to;to=from;from=tmp}let elem=document.getElementById(from);if(!elem){return}const x=document.getElementById(from);if(x){x.scrollIntoView()}onEachLazy(document.getElementsByClassName("src-line-numbers"),e=>{onEachLazy(e.getElementsByTagName("a"),i_e=>{removeClass(i_e,"line-highlighted")})});for(let i=from;i<=to;++i){elem=document.getElementById(i);if(!elem){break}addClass(elem,"line-highlighted")}}const handleSrcHighlight=(function(){let prev_line_id=0;const set_fragment=name=>{const x=window.scrollX,y=window.scrollY;if(browserSupportsHistoryApi()){history.replaceState(null,null,"#"+name);highlightSrcLines()}else{location.replace("#"+name)}window.scrollTo(x,y)};return ev=>{let cur_line_id=parseInt(ev.target.id,10);if(isNaN(cur_line_id)||ev.ctrlKey||ev.altKey||ev.metaKey){return}ev.preventDefault();if(ev.shiftKey&&prev_line_id){if(prev_line_id>cur_line_id){const tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",highlightSrcLines);onEachLazy(document.getElementsByClassName("src-line-numbers"),el=>{el.addEventListener("click",handleSrcHighlight)});highlightSrcLines();window.createSrcSidebar=createSrcSidebar})()
\ No newline at end of file
diff --git a/static.files/storage-e32f0c247825364d.js b/static.files/storage-e32f0c247825364d.js
new file mode 100644
index 0000000..61ddce2
--- /dev/null
+++ b/static.files/storage-e32f0c247825364d.js
@@ -0,0 +1 @@
+"use strict";const builtinThemes=["light","dark","ayu"];const darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");const settingsDataset=(function(){const settingsElement=document.getElementById("default-settings");return settingsElement&&settingsElement.dataset?settingsElement.dataset:null})();function getSettingValue(settingName){const current=getCurrentValue(settingName);if(current===null&&settingsDataset!==null){const def=settingsDataset[settingName.replace(/-/g,"_")];if(def!==undefined){return def}}return current}const localStoredTheme=getSettingValue("theme");function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(elem&&elem.classList){elem.classList.add(className)}}function removeClass(elem,className){if(elem&&elem.classList){elem.classList.remove(className)}}function onEach(arr,func){for(const elem of arr){if(func(elem)){return true}}return false}function onEachLazy(lazyArray,func){return onEach(Array.prototype.slice.call(lazyArray),func)}function updateLocalStorage(name,value){try{window.localStorage.setItem("rustdoc-"+name,value)}catch(e){}}function getCurrentValue(name){try{return window.localStorage.getItem("rustdoc-"+name)}catch(e){return null}}const getVar=(function getVar(name){const el=document.querySelector("head > meta[name='rustdoc-vars']");return el?el.attributes["data-"+name].value:null});function switchTheme(newThemeName,saveTheme){const themeNames=getVar("themes").split(",").filter(t=>t);themeNames.push(...builtinThemes);if(themeNames.indexOf(newThemeName)===-1){return}if(saveTheme){updateLocalStorage("theme",newThemeName)}document.documentElement.setAttribute("data-theme",newThemeName);if(builtinThemes.indexOf(newThemeName)!==-1){if(window.currentTheme){window.currentTheme.parentNode.removeChild(window.currentTheme);window.currentTheme=null}}else{const newHref=getVar("root-path")+encodeURIComponent(newThemeName)+getVar("resource-suffix")+".css";if(!window.currentTheme){if(document.readyState==="loading"){document.write(`<link rel="stylesheet" id="themeStyle" href="${newHref}">`);window.currentTheme=document.getElementById("themeStyle")}else{window.currentTheme=document.createElement("link");window.currentTheme.rel="stylesheet";window.currentTheme.id="themeStyle";window.currentTheme.href=newHref;document.documentElement.appendChild(window.currentTheme)}}else if(newHref!==window.currentTheme.href){window.currentTheme.href=newHref}}}const updateTheme=(function(){const mql=window.matchMedia("(prefers-color-scheme: dark)");function updateTheme(){if(getSettingValue("use-system-theme")!=="false"){const lightTheme=getSettingValue("preferred-light-theme")||"light";const darkTheme=getSettingValue("preferred-dark-theme")||"dark";updateLocalStorage("use-system-theme","true");switchTheme(mql.matches?darkTheme:lightTheme,true)}else{switchTheme(getSettingValue("theme"),false)}}mql.addEventListener("change",updateTheme);return updateTheme})();if(getSettingValue("use-system-theme")!=="false"&&window.matchMedia){if(getSettingValue("use-system-theme")===null&&getSettingValue("preferred-dark-theme")===null&&darkThemes.indexOf(localStoredTheme)>=0){updateLocalStorage("preferred-dark-theme",localStoredTheme)}}updateTheme();if(getSettingValue("source-sidebar-show")==="true"){addClass(document.documentElement,"src-sidebar-expanded")}if(getSettingValue("hide-sidebar")==="true"){addClass(document.documentElement,"hide-sidebar")}function updateSidebarWidth(){const desktopSidebarWidth=getSettingValue("desktop-sidebar-width");if(desktopSidebarWidth&&desktopSidebarWidth!=="null"){document.documentElement.style.setProperty("--desktop-sidebar-width",desktopSidebarWidth+"px",)}const srcSidebarWidth=getSettingValue("src-sidebar-width");if(srcSidebarWidth&&srcSidebarWidth!=="null"){document.documentElement.style.setProperty("--src-sidebar-width",srcSidebarWidth+"px",)}}updateSidebarWidth();window.addEventListener("pageshow",ev=>{if(ev.persisted){setTimeout(updateTheme,0);setTimeout(updateSidebarWidth,0)}})
\ No newline at end of file
diff --git a/static.files/wheel-63255fc4502dca9a.svg b/static.files/wheel-63255fc4502dca9a.svg
new file mode 100644
index 0000000..ba30f13
--- /dev/null
+++ b/static.files/wheel-63255fc4502dca9a.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" enable-background="new 0 0 22 22" viewBox="0 0 27.434 29.5"><path d="M27.316 18.39a2.696 2.696 0 0 0-.98-1.46 1.62 1.62 0 0 1-.016-.762l.035-.176v-1.191c0-1.246-.003-1.278-.046-1.473a1.717 1.717 0 0 1 .007-.805c.477-.343.829-.859.997-1.472.257-.957.074-2.094-.508-3.117l-.594-1.032c-.746-1.304-1.965-2.117-3.18-2.117-.379 0-.75.078-1.086.235a1.958 1.958 0 0 1-.855-.391l-.102-.082-.117-.063-1.855-1.07-.094-.055-.106-.043c-.378-.156-.66-.41-.77-.554C17.919 1.172 16.349 0 14.297 0h-1.155c-2.043 0-3.61 1.152-3.75 2.723-.114.14-.391.382-.758.527l-.102.04-.094.05-1.94 1.066-.134.074-.117.094a2.019 2.019 0 0 1-.832.403 2.518 2.518 0 0 0-1.008-.211c-1.199 0-2.414.82-3.168 2.14l-.59 1.032c-.41.718-.64 1.523-.64 2.257-.004.953.36 1.758 1.012 2.258.035.152.058.445-.016.785-.04.168-.063.282-.063 1.563 0 1.148 0 1.148.016 1.261l.008.075.015.074c.075.344.047.64.012.8-.644.5-1.004 1.302-.992 2.259.008.726.238 1.52.648 2.242l.59 1.027c.758 1.332 1.965 2.16 3.149 2.16.324 0 .644-.062.937-.187.168.039.492.156.813.418l.11.086.124.07 2.047 1.156.102.059.105.043c.363.144.648.379.766.52.164 1.519 1.718 2.632 3.746 2.632h1.156c2.035 0 3.598-1.133 3.746-2.672.117-.144.402-.394.773-.55l.114-.047.101-.063 1.961-1.156.106-.063.097-.078c.309-.246.653-.37.832-.398.313.136.66.21 1.016.21 1.2 0 2.41-.82 3.164-2.14l.594-1.031c.59-1.028.777-2.164.52-3.117Zm-2.043 2.247-.59 1.031c-.437.766-1.105 1.25-1.636 1.25a.7.7 0 0 1-.371-.094 1.146 1.146 0 0 0-.567-.129c-.593 0-1.382.297-2.007.797l-1.961 1.156c-1.016.426-1.848 1.293-1.848 1.93 0 .64-.898 1.16-1.996 1.16H13.14c-1.102 0-2-.515-2-1.14 0-.63-.832-1.477-1.852-1.887l-2.047-1.16c-.637-.512-1.426-.813-2.008-.813-.199 0-.379.035-.515.114a.648.648 0 0 1-.332.085c-.52 0-1.18-.5-1.621-1.273l-.59-1.031c-.543-.953-.555-1.98-.024-2.285.532-.305.782-1.434.551-2.504V14.8c0-1.09.02-1.18.02-1.18.238-1.074-.008-2.203-.551-2.516-.54-.304-.54-1.34.008-2.293l.59-1.03c.437-.766 1.101-1.255 1.636-1.255a.73.73 0 0 1 .364.094c.152.086.343.125.566.125.594 0 1.379-.297 2.004-.793l1.945-1.066c1.02-.407 1.856-1.278 1.856-1.934 0-.656.898-1.191 2-1.191h1.156c1.098 0 1.996.543 1.996 1.21 0 .669.832 1.555 1.848 1.973L20 6.012c.617.492 1.402.777 2.012.777.242 0 .453-.047.62-.14a.79.79 0 0 1 .403-.102c.55 0 1.223.476 1.652 1.23l.59 1.032c.543.953.52 2.004-.062 2.336-.574.332-.86 1.48-.625 2.554 0 0 .008.04.008 1.102v1.011c-.215 1.051.07 2.176.636 2.5.567.325.586 1.368.04 2.325Zm0 0"/><path d="M13.61 7.61a7.084 7.084 0 0 0-7.083 7.085 7.085 7.085 0 1 0 14.168 0A7.088 7.088 0 0 0 13.61 7.61Zm0 12.41a5.33 5.33 0 0 1-5.325-5.325 5.33 5.33 0 0 1 5.324-5.32 5.327 5.327 0 0 1 5.325 5.32 5.328 5.328 0 0 1-5.325 5.325Zm0 0"/><path d="M13.684 9.906a4.722 4.722 0 0 0-4.72 4.719 4.722 4.722 0 0 0 4.72 4.719 4.724 4.724 0 0 0 4.714-4.719 4.724 4.724 0 0 0-4.714-4.719Zm0 7.676a2.954 2.954 0 1 1 0-5.91 2.953 2.953 0 0 1 2.953 2.953 2.957 2.957 0 0 1-2.953 2.957Zm0 0"/></svg>
\ No newline at end of file
diff --git a/trait.impl/core/clone/trait.Clone.js b/trait.impl/core/clone/trait.Clone.js
new file mode 100644
index 0000000..d2defda
--- /dev/null
+++ b/trait.impl/core/clone/trait.Clone.js
@@ -0,0 +1,5 @@
+(function() {var implementors = {
+"octets":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"octets/struct.BufferTooShortError.html\" title=\"struct octets::BufferTooShortError\">BufferTooShortError</a>"]],
+"qlog":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/enum.ImportanceLogLevel.html\" title=\"enum qlog::ImportanceLogLevel\">ImportanceLogLevel</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/enum.TokenType.html\" title=\"enum qlog::TokenType\">TokenType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/enum.VantagePointType.html\" title=\"enum qlog::VantagePointType\">VantagePointType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionClosedTrigger.html\" title=\"enum qlog::events::connectivity::ConnectionClosedTrigger\">ConnectionClosedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionState.html\" title=\"enum qlog::events::connectivity::ConnectionState\">ConnectionState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectivityEventType.html\" title=\"enum qlog::events::connectivity::ConnectivityEventType\">ConnectivityEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.TransportOwner.html\" title=\"enum qlog::events::connectivity::TransportOwner\">TransportOwner</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/enum.ApplicationErrorCode.html\" title=\"enum qlog::events::ApplicationErrorCode\">ApplicationErrorCode</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/enum.ConnectionErrorCode.html\" title=\"enum qlog::events::ConnectionErrorCode\">ConnectionErrorCode</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/enum.CryptoError.html\" title=\"enum qlog::events::CryptoError\">CryptoError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/enum.DataRecipient.html\" title=\"enum qlog::events::DataRecipient\">DataRecipient</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/enum.EventCategory.html\" title=\"enum qlog::events::EventCategory\">EventCategory</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/enum.EventData.html\" title=\"enum qlog::events::EventData\">EventData</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/enum.EventImportance.html\" title=\"enum qlog::events::EventImportance\">EventImportance</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/enum.EventType.html\" title=\"enum qlog::events::EventType\">EventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/enum.GenericEventType.html\" title=\"enum qlog::events::GenericEventType\">GenericEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/enum.TimeFormat.html\" title=\"enum qlog::events::TimeFormat\">TimeFormat</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.ApplicationError.html\" title=\"enum qlog::events::h3::ApplicationError\">ApplicationError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3Owner.html\" title=\"enum qlog::events::h3::H3Owner\">H3Owner</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PriorityTargetStreamType.html\" title=\"enum qlog::events::h3::H3PriorityTargetStreamType\">H3PriorityTargetStreamType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PushDecision.html\" title=\"enum qlog::events::h3::H3PushDecision\">H3PushDecision</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3StreamType.html\" title=\"enum qlog::events::h3::H3StreamType\">H3StreamType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3EventType.html\" title=\"enum qlog::events::h3::Http3EventType\">Http3EventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3Frame.html\" title=\"enum qlog::events::h3::Http3Frame\">Http3Frame</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3FrameTypeName.html\" title=\"enum qlog::events::h3::Http3FrameTypeName\">Http3FrameTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QPackInstruction.html\" title=\"enum qlog::events::qpack::QPackInstruction\">QPackInstruction</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackEventType.html\" title=\"enum qlog::events::qpack::QpackEventType\">QpackEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentation.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentation\">QpackHeaderBlockRepresentation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentationTypeName.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName\">QpackHeaderBlockRepresentationTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackInstructionTypeName.html\" title=\"enum qlog::events::qpack::QpackInstructionTypeName\">QpackInstructionTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackOwner.html\" title=\"enum qlog::events::qpack::QpackOwner\">QpackOwner</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackStreamState.html\" title=\"enum qlog::events::qpack::QpackStreamState\">QpackStreamState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackTableType.html\" title=\"enum qlog::events::qpack::QpackTableType\">QpackTableType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackUpdateType.html\" title=\"enum qlog::events::qpack::QpackUpdateType\">QpackUpdateType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.AckedRanges.html\" title=\"enum qlog::events::quic::AckedRanges\">AckedRanges</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.CongestionStateUpdatedTrigger.html\" title=\"enum qlog::events::quic::CongestionStateUpdatedTrigger\">CongestionStateUpdatedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.ErrorSpace.html\" title=\"enum qlog::events::quic::ErrorSpace\">ErrorSpace</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.LossTimerEventType.html\" title=\"enum qlog::events::quic::LossTimerEventType\">LossTimerEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketBufferedTrigger.html\" title=\"enum qlog::events::quic::PacketBufferedTrigger\">PacketBufferedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketDroppedTrigger.html\" title=\"enum qlog::events::quic::PacketDroppedTrigger\">PacketDroppedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketLostTrigger.html\" title=\"enum qlog::events::quic::PacketLostTrigger\">PacketLostTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketNumberSpace.html\" title=\"enum qlog::events::quic::PacketNumberSpace\">PacketNumberSpace</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketReceivedTrigger.html\" title=\"enum qlog::events::quic::PacketReceivedTrigger\">PacketReceivedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketSentTrigger.html\" title=\"enum qlog::events::quic::PacketSentTrigger\">PacketSentTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketType.html\" title=\"enum qlog::events::quic::PacketType\">PacketType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrame.html\" title=\"enum qlog::events::quic::QuicFrame\">QuicFrame</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrameTypeName.html\" title=\"enum qlog::events::quic::QuicFrameTypeName\">QuicFrameTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.RecoveryEventType.html\" title=\"enum qlog::events::quic::RecoveryEventType\">RecoveryEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.SecurityEventType.html\" title=\"enum qlog::events::quic::SecurityEventType\">SecurityEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamSide.html\" title=\"enum qlog::events::quic::StreamSide\">StreamSide</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamState.html\" title=\"enum qlog::events::quic::StreamState\">StreamState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamType.html\" title=\"enum qlog::events::quic::StreamType\">StreamType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TimerType.html\" title=\"enum qlog::events::quic::TimerType\">TimerType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportError.html\" title=\"enum qlog::events::quic::TransportError\">TransportError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportEventType.html\" title=\"enum qlog::events::quic::TransportEventType\">TransportEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyType.html\" title=\"enum qlog::events::security::KeyType\">KeyType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyUpdateOrRetiredTrigger.html\" title=\"enum qlog::events::security::KeyUpdateOrRetiredTrigger\">KeyUpdateOrRetiredTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionClosed.html\" title=\"struct qlog::events::connectivity::ConnectionClosed\">ConnectionClosed</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionIdUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionIdUpdated\">ConnectionIdUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStarted.html\" title=\"struct qlog::events::connectivity::ConnectionStarted\">ConnectionStarted</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStateUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionStateUpdated\">ConnectionStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.MtuUpdated.html\" title=\"struct qlog::events::connectivity::MtuUpdated\">MtuUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ServerListening.html\" title=\"struct qlog::events::connectivity::ServerListening\">ServerListening</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.SpinBitUpdated.html\" title=\"struct qlog::events::connectivity::SpinBitUpdated\">SpinBitUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameCreated.html\" title=\"struct qlog::events::h3::H3FrameCreated\">H3FrameCreated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameParsed.html\" title=\"struct qlog::events::h3::H3FrameParsed\">H3FrameParsed</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersRestored.html\" title=\"struct qlog::events::h3::H3ParametersRestored\">H3ParametersRestored</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersSet.html\" title=\"struct qlog::events::h3::H3ParametersSet\">H3ParametersSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3PushResolved.html\" title=\"struct qlog::events::h3::H3PushResolved\">H3PushResolved</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3StreamTypeSet.html\" title=\"struct qlog::events::h3::H3StreamTypeSet\">H3StreamTypeSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.HttpHeader.html\" title=\"struct qlog::events::h3::HttpHeader\">HttpHeader</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.Setting.html\" title=\"struct qlog::events::h3::Setting\">Setting</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableEntry.html\" title=\"struct qlog::events::qpack::QpackDynamicTableEntry\">QpackDynamicTableEntry</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableUpdated.html\" title=\"struct qlog::events::qpack::QpackDynamicTableUpdated\">QpackDynamicTableUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeaderBlockPrefix.html\" title=\"struct qlog::events::qpack::QpackHeaderBlockPrefix\">QpackHeaderBlockPrefix</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersDecoded.html\" title=\"struct qlog::events::qpack::QpackHeadersDecoded\">QpackHeadersDecoded</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersEncoded.html\" title=\"struct qlog::events::qpack::QpackHeadersEncoded\">QpackHeadersEncoded</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionCreated.html\" title=\"struct qlog::events::qpack::QpackInstructionCreated\">QpackInstructionCreated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionParsed.html\" title=\"struct qlog::events::qpack::QpackInstructionParsed\">QpackInstructionParsed</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStateUpdated\">QpackStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStreamStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStreamStateUpdated\">QpackStreamStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.AlpnInformation.html\" title=\"struct qlog::events::quic::AlpnInformation\">AlpnInformation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.CongestionStateUpdated.html\" title=\"struct qlog::events::quic::CongestionStateUpdated\">CongestionStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DataMoved.html\" title=\"struct qlog::events::quic::DataMoved\">DataMoved</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramDropped.html\" title=\"struct qlog::events::quic::DatagramDropped\">DatagramDropped</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsReceived.html\" title=\"struct qlog::events::quic::DatagramsReceived\">DatagramsReceived</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsSent.html\" title=\"struct qlog::events::quic::DatagramsSent\">DatagramsSent</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.FramesProcessed.html\" title=\"struct qlog::events::quic::FramesProcessed\">FramesProcessed</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.LossTimerUpdated.html\" title=\"struct qlog::events::quic::LossTimerUpdated\">LossTimerUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MarkedForRetransmit.html\" title=\"struct qlog::events::quic::MarkedForRetransmit\">MarkedForRetransmit</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MetricsUpdated.html\" title=\"struct qlog::events::quic::MetricsUpdated\">MetricsUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketBuffered.html\" title=\"struct qlog::events::quic::PacketBuffered\">PacketBuffered</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketDropped.html\" title=\"struct qlog::events::quic::PacketDropped\">PacketDropped</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketHeader.html\" title=\"struct qlog::events::quic::PacketHeader\">PacketHeader</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketLost.html\" title=\"struct qlog::events::quic::PacketLost\">PacketLost</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketReceived.html\" title=\"struct qlog::events::quic::PacketReceived\">PacketReceived</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketSent.html\" title=\"struct qlog::events::quic::PacketSent\">PacketSent</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketsAcked.html\" title=\"struct qlog::events::quic::PacketsAcked\">PacketsAcked</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PreferredAddress.html\" title=\"struct qlog::events::quic::PreferredAddress\">PreferredAddress</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.RecoveryParametersSet.html\" title=\"struct qlog::events::quic::RecoveryParametersSet\">RecoveryParametersSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.StreamStateUpdated.html\" title=\"struct qlog::events::quic::StreamStateUpdated\">StreamStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersRestored.html\" title=\"struct qlog::events::quic::TransportParametersRestored\">TransportParametersRestored</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersSet.html\" title=\"struct qlog::events::quic::TransportParametersSet\">TransportParametersSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.VersionInformation.html\" title=\"struct qlog::events::quic::VersionInformation\">VersionInformation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyDiscarded.html\" title=\"struct qlog::events::security::KeyDiscarded\">KeyDiscarded</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyUpdated.html\" title=\"struct qlog::events::security::KeyUpdated\">KeyUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/struct.Event.html\" title=\"struct qlog::events::Event\">Event</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/struct.JsonEvent.html\" title=\"struct qlog::events::JsonEvent\">JsonEvent</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/events/struct.RawInfo.html\" title=\"struct qlog::events::RawInfo\">RawInfo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/struct.CommonFields.html\" title=\"struct qlog::CommonFields\">CommonFields</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/struct.Configuration.html\" title=\"struct qlog::Configuration\">Configuration</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/struct.Qlog.html\" title=\"struct qlog::Qlog\">Qlog</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/struct.QlogSeq.html\" title=\"struct qlog::QlogSeq\">QlogSeq</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/struct.Token.html\" title=\"struct qlog::Token\">Token</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/struct.Trace.html\" title=\"struct qlog::Trace\">Trace</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/struct.TraceSeq.html\" title=\"struct qlog::TraceSeq\">TraceSeq</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"qlog/struct.VantagePoint.html\" title=\"struct qlog::VantagePoint\">VantagePoint</a>"]],
+"quiche":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"quiche/enum.CongestionControlAlgorithm.html\" title=\"enum quiche::CongestionControlAlgorithm\">CongestionControlAlgorithm</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"quiche/enum.Error.html\" title=\"enum quiche::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"quiche/enum.PathEvent.html\" title=\"enum quiche::PathEvent\">PathEvent</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"quiche/enum.Type.html\" title=\"enum quiche::Type\">Type</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"quiche/h3/enum.Error.html\" title=\"enum quiche::h3::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"quiche/h3/enum.Event.html\" title=\"enum quiche::h3::Event\">Event</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"quiche/h3/struct.Header.html\" title=\"struct quiche::h3::Header\">Header</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionError.html\" title=\"struct quiche::ConnectionError\">ConnectionError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"quiche/struct.PathStats.html\" title=\"struct quiche::PathStats\">PathStats</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"quiche/struct.RecvInfo.html\" title=\"struct quiche::RecvInfo\">RecvInfo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"quiche/struct.SendInfo.html\" title=\"struct quiche::SendInfo\">SendInfo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"quiche/struct.Stats.html\" title=\"struct quiche::Stats\">Stats</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"quiche/struct.TransportParams.html\" title=\"struct quiche::TransportParams\">TransportParams</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"quiche/h3/struct.HeaderRef.html\" title=\"struct quiche::h3::HeaderRef\">HeaderRef</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionId.html\" title=\"struct quiche::ConnectionId\">ConnectionId</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"quiche/struct.Header.html\" title=\"struct quiche::Header\">Header</a>&lt;'a&gt;"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/cmp/trait.Eq.js b/trait.impl/core/cmp/trait.Eq.js
new file mode 100644
index 0000000..a7f356c
--- /dev/null
+++ b/trait.impl/core/cmp/trait.Eq.js
@@ -0,0 +1,5 @@
+(function() {var implementors = {
+"octets":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"octets/struct.BufferTooShortError.html\" title=\"struct octets::BufferTooShortError\">BufferTooShortError</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"octets/struct.Octets.html\" title=\"struct octets::Octets\">Octets</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"octets/struct.OctetsMut.html\" title=\"struct octets::OctetsMut\">OctetsMut</a>&lt;'a&gt;"]],
+"qlog":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/enum.TokenType.html\" title=\"enum qlog::TokenType\">TokenType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/enum.VantagePointType.html\" title=\"enum qlog::VantagePointType\">VantagePointType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionClosedTrigger.html\" title=\"enum qlog::events::connectivity::ConnectionClosedTrigger\">ConnectionClosedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionState.html\" title=\"enum qlog::events::connectivity::ConnectionState\">ConnectionState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectivityEventType.html\" title=\"enum qlog::events::connectivity::ConnectivityEventType\">ConnectivityEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.TransportOwner.html\" title=\"enum qlog::events::connectivity::TransportOwner\">TransportOwner</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/enum.ApplicationErrorCode.html\" title=\"enum qlog::events::ApplicationErrorCode\">ApplicationErrorCode</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/enum.ConnectionErrorCode.html\" title=\"enum qlog::events::ConnectionErrorCode\">ConnectionErrorCode</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/enum.CryptoError.html\" title=\"enum qlog::events::CryptoError\">CryptoError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/enum.DataRecipient.html\" title=\"enum qlog::events::DataRecipient\">DataRecipient</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/enum.EventType.html\" title=\"enum qlog::events::EventType\">EventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/enum.GenericEventType.html\" title=\"enum qlog::events::GenericEventType\">GenericEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/enum.TimeFormat.html\" title=\"enum qlog::events::TimeFormat\">TimeFormat</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.ApplicationError.html\" title=\"enum qlog::events::h3::ApplicationError\">ApplicationError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3Owner.html\" title=\"enum qlog::events::h3::H3Owner\">H3Owner</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PriorityTargetStreamType.html\" title=\"enum qlog::events::h3::H3PriorityTargetStreamType\">H3PriorityTargetStreamType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PushDecision.html\" title=\"enum qlog::events::h3::H3PushDecision\">H3PushDecision</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3StreamType.html\" title=\"enum qlog::events::h3::H3StreamType\">H3StreamType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3EventType.html\" title=\"enum qlog::events::h3::Http3EventType\">Http3EventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3Frame.html\" title=\"enum qlog::events::h3::Http3Frame\">Http3Frame</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3FrameTypeName.html\" title=\"enum qlog::events::h3::Http3FrameTypeName\">Http3FrameTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QPackInstruction.html\" title=\"enum qlog::events::qpack::QPackInstruction\">QPackInstruction</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackEventType.html\" title=\"enum qlog::events::qpack::QpackEventType\">QpackEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentation.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentation\">QpackHeaderBlockRepresentation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentationTypeName.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName\">QpackHeaderBlockRepresentationTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackInstructionTypeName.html\" title=\"enum qlog::events::qpack::QpackInstructionTypeName\">QpackInstructionTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackOwner.html\" title=\"enum qlog::events::qpack::QpackOwner\">QpackOwner</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackStreamState.html\" title=\"enum qlog::events::qpack::QpackStreamState\">QpackStreamState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackTableType.html\" title=\"enum qlog::events::qpack::QpackTableType\">QpackTableType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackUpdateType.html\" title=\"enum qlog::events::qpack::QpackUpdateType\">QpackUpdateType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.AckedRanges.html\" title=\"enum qlog::events::quic::AckedRanges\">AckedRanges</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.CongestionStateUpdatedTrigger.html\" title=\"enum qlog::events::quic::CongestionStateUpdatedTrigger\">CongestionStateUpdatedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.ErrorSpace.html\" title=\"enum qlog::events::quic::ErrorSpace\">ErrorSpace</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.LossTimerEventType.html\" title=\"enum qlog::events::quic::LossTimerEventType\">LossTimerEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketBufferedTrigger.html\" title=\"enum qlog::events::quic::PacketBufferedTrigger\">PacketBufferedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketDroppedTrigger.html\" title=\"enum qlog::events::quic::PacketDroppedTrigger\">PacketDroppedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketLostTrigger.html\" title=\"enum qlog::events::quic::PacketLostTrigger\">PacketLostTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketNumberSpace.html\" title=\"enum qlog::events::quic::PacketNumberSpace\">PacketNumberSpace</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketReceivedTrigger.html\" title=\"enum qlog::events::quic::PacketReceivedTrigger\">PacketReceivedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketSentTrigger.html\" title=\"enum qlog::events::quic::PacketSentTrigger\">PacketSentTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketType.html\" title=\"enum qlog::events::quic::PacketType\">PacketType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrameTypeName.html\" title=\"enum qlog::events::quic::QuicFrameTypeName\">QuicFrameTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.RecoveryEventType.html\" title=\"enum qlog::events::quic::RecoveryEventType\">RecoveryEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.SecurityEventType.html\" title=\"enum qlog::events::quic::SecurityEventType\">SecurityEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamSide.html\" title=\"enum qlog::events::quic::StreamSide\">StreamSide</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamState.html\" title=\"enum qlog::events::quic::StreamState\">StreamState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamType.html\" title=\"enum qlog::events::quic::StreamType\">StreamType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TimerType.html\" title=\"enum qlog::events::quic::TimerType\">TimerType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportError.html\" title=\"enum qlog::events::quic::TransportError\">TransportError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportEventType.html\" title=\"enum qlog::events::quic::TransportEventType\">TransportEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyType.html\" title=\"enum qlog::events::security::KeyType\">KeyType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyUpdateOrRetiredTrigger.html\" title=\"enum qlog::events::security::KeyUpdateOrRetiredTrigger\">KeyUpdateOrRetiredTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"qlog/streamer/enum.StreamerState.html\" title=\"enum qlog::streamer::StreamerState\">StreamerState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionClosed.html\" title=\"struct qlog::events::connectivity::ConnectionClosed\">ConnectionClosed</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionIdUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionIdUpdated\">ConnectionIdUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStarted.html\" title=\"struct qlog::events::connectivity::ConnectionStarted\">ConnectionStarted</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStateUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionStateUpdated\">ConnectionStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.MtuUpdated.html\" title=\"struct qlog::events::connectivity::MtuUpdated\">MtuUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ServerListening.html\" title=\"struct qlog::events::connectivity::ServerListening\">ServerListening</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.SpinBitUpdated.html\" title=\"struct qlog::events::connectivity::SpinBitUpdated\">SpinBitUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameCreated.html\" title=\"struct qlog::events::h3::H3FrameCreated\">H3FrameCreated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameParsed.html\" title=\"struct qlog::events::h3::H3FrameParsed\">H3FrameParsed</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersRestored.html\" title=\"struct qlog::events::h3::H3ParametersRestored\">H3ParametersRestored</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersSet.html\" title=\"struct qlog::events::h3::H3ParametersSet\">H3ParametersSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3PushResolved.html\" title=\"struct qlog::events::h3::H3PushResolved\">H3PushResolved</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3StreamTypeSet.html\" title=\"struct qlog::events::h3::H3StreamTypeSet\">H3StreamTypeSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.HttpHeader.html\" title=\"struct qlog::events::h3::HttpHeader\">HttpHeader</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.Setting.html\" title=\"struct qlog::events::h3::Setting\">Setting</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableEntry.html\" title=\"struct qlog::events::qpack::QpackDynamicTableEntry\">QpackDynamicTableEntry</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableUpdated.html\" title=\"struct qlog::events::qpack::QpackDynamicTableUpdated\">QpackDynamicTableUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeaderBlockPrefix.html\" title=\"struct qlog::events::qpack::QpackHeaderBlockPrefix\">QpackHeaderBlockPrefix</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersDecoded.html\" title=\"struct qlog::events::qpack::QpackHeadersDecoded\">QpackHeadersDecoded</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersEncoded.html\" title=\"struct qlog::events::qpack::QpackHeadersEncoded\">QpackHeadersEncoded</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionCreated.html\" title=\"struct qlog::events::qpack::QpackInstructionCreated\">QpackInstructionCreated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionParsed.html\" title=\"struct qlog::events::qpack::QpackInstructionParsed\">QpackInstructionParsed</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStateUpdated\">QpackStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStreamStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStreamStateUpdated\">QpackStreamStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.AlpnInformation.html\" title=\"struct qlog::events::quic::AlpnInformation\">AlpnInformation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.CongestionStateUpdated.html\" title=\"struct qlog::events::quic::CongestionStateUpdated\">CongestionStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DataMoved.html\" title=\"struct qlog::events::quic::DataMoved\">DataMoved</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramDropped.html\" title=\"struct qlog::events::quic::DatagramDropped\">DatagramDropped</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsReceived.html\" title=\"struct qlog::events::quic::DatagramsReceived\">DatagramsReceived</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsSent.html\" title=\"struct qlog::events::quic::DatagramsSent\">DatagramsSent</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketBuffered.html\" title=\"struct qlog::events::quic::PacketBuffered\">PacketBuffered</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketDropped.html\" title=\"struct qlog::events::quic::PacketDropped\">PacketDropped</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketHeader.html\" title=\"struct qlog::events::quic::PacketHeader\">PacketHeader</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketsAcked.html\" title=\"struct qlog::events::quic::PacketsAcked\">PacketsAcked</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PreferredAddress.html\" title=\"struct qlog::events::quic::PreferredAddress\">PreferredAddress</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.StreamStateUpdated.html\" title=\"struct qlog::events::quic::StreamStateUpdated\">StreamStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersRestored.html\" title=\"struct qlog::events::quic::TransportParametersRestored\">TransportParametersRestored</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersSet.html\" title=\"struct qlog::events::quic::TransportParametersSet\">TransportParametersSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.VersionInformation.html\" title=\"struct qlog::events::quic::VersionInformation\">VersionInformation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyDiscarded.html\" title=\"struct qlog::events::security::KeyDiscarded\">KeyDiscarded</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyUpdated.html\" title=\"struct qlog::events::security::KeyUpdated\">KeyUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/events/struct.RawInfo.html\" title=\"struct qlog::events::RawInfo\">RawInfo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/struct.Token.html\" title=\"struct qlog::Token\">Token</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"qlog/struct.VantagePoint.html\" title=\"struct qlog::VantagePoint\">VantagePoint</a>"]],
+"quiche":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"quiche/enum.CongestionControlAlgorithm.html\" title=\"enum quiche::CongestionControlAlgorithm\">CongestionControlAlgorithm</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"quiche/enum.Error.html\" title=\"enum quiche::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"quiche/enum.PathEvent.html\" title=\"enum quiche::PathEvent\">PathEvent</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"quiche/enum.Shutdown.html\" title=\"enum quiche::Shutdown\">Shutdown</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"quiche/enum.Type.html\" title=\"enum quiche::Type\">Type</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"quiche/h3/enum.Error.html\" title=\"enum quiche::h3::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"quiche/h3/enum.Event.html\" title=\"enum quiche::h3::Event\">Event</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"quiche/h3/struct.Header.html\" title=\"struct quiche::h3::Header\">Header</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"quiche/h3/struct.Priority.html\" title=\"struct quiche::h3::Priority\">Priority</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionError.html\" title=\"struct quiche::ConnectionError\">ConnectionError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"quiche/struct.RecvInfo.html\" title=\"struct quiche::RecvInfo\">RecvInfo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"quiche/struct.SendInfo.html\" title=\"struct quiche::SendInfo\">SendInfo</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"quiche/h3/struct.HeaderRef.html\" title=\"struct quiche::h3::HeaderRef\">HeaderRef</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionId.html\" title=\"struct quiche::ConnectionId\">ConnectionId</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"quiche/struct.Header.html\" title=\"struct quiche::Header\">Header</a>&lt;'a&gt;"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/cmp/trait.PartialEq.js b/trait.impl/core/cmp/trait.PartialEq.js
new file mode 100644
index 0000000..49e2596
--- /dev/null
+++ b/trait.impl/core/cmp/trait.PartialEq.js
@@ -0,0 +1,5 @@
+(function() {var implementors = {
+"octets":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"octets/struct.BufferTooShortError.html\" title=\"struct octets::BufferTooShortError\">BufferTooShortError</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"octets/struct.Octets.html\" title=\"struct octets::Octets\">Octets</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"octets/struct.OctetsMut.html\" title=\"struct octets::OctetsMut\">OctetsMut</a>&lt;'a&gt;"]],
+"qlog":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/enum.TokenType.html\" title=\"enum qlog::TokenType\">TokenType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/enum.VantagePointType.html\" title=\"enum qlog::VantagePointType\">VantagePointType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionClosedTrigger.html\" title=\"enum qlog::events::connectivity::ConnectionClosedTrigger\">ConnectionClosedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionState.html\" title=\"enum qlog::events::connectivity::ConnectionState\">ConnectionState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectivityEventType.html\" title=\"enum qlog::events::connectivity::ConnectivityEventType\">ConnectivityEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.TransportOwner.html\" title=\"enum qlog::events::connectivity::TransportOwner\">TransportOwner</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/enum.ApplicationErrorCode.html\" title=\"enum qlog::events::ApplicationErrorCode\">ApplicationErrorCode</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/enum.ConnectionErrorCode.html\" title=\"enum qlog::events::ConnectionErrorCode\">ConnectionErrorCode</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/enum.CryptoError.html\" title=\"enum qlog::events::CryptoError\">CryptoError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/enum.DataRecipient.html\" title=\"enum qlog::events::DataRecipient\">DataRecipient</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/enum.EventData.html\" title=\"enum qlog::events::EventData\">EventData</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/enum.EventType.html\" title=\"enum qlog::events::EventType\">EventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/enum.GenericEventType.html\" title=\"enum qlog::events::GenericEventType\">GenericEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/enum.TimeFormat.html\" title=\"enum qlog::events::TimeFormat\">TimeFormat</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.ApplicationError.html\" title=\"enum qlog::events::h3::ApplicationError\">ApplicationError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3Owner.html\" title=\"enum qlog::events::h3::H3Owner\">H3Owner</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PriorityTargetStreamType.html\" title=\"enum qlog::events::h3::H3PriorityTargetStreamType\">H3PriorityTargetStreamType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PushDecision.html\" title=\"enum qlog::events::h3::H3PushDecision\">H3PushDecision</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3StreamType.html\" title=\"enum qlog::events::h3::H3StreamType\">H3StreamType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3EventType.html\" title=\"enum qlog::events::h3::Http3EventType\">Http3EventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3Frame.html\" title=\"enum qlog::events::h3::Http3Frame\">Http3Frame</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3FrameTypeName.html\" title=\"enum qlog::events::h3::Http3FrameTypeName\">Http3FrameTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QPackInstruction.html\" title=\"enum qlog::events::qpack::QPackInstruction\">QPackInstruction</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackEventType.html\" title=\"enum qlog::events::qpack::QpackEventType\">QpackEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentation.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentation\">QpackHeaderBlockRepresentation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentationTypeName.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName\">QpackHeaderBlockRepresentationTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackInstructionTypeName.html\" title=\"enum qlog::events::qpack::QpackInstructionTypeName\">QpackInstructionTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackOwner.html\" title=\"enum qlog::events::qpack::QpackOwner\">QpackOwner</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackStreamState.html\" title=\"enum qlog::events::qpack::QpackStreamState\">QpackStreamState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackTableType.html\" title=\"enum qlog::events::qpack::QpackTableType\">QpackTableType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackUpdateType.html\" title=\"enum qlog::events::qpack::QpackUpdateType\">QpackUpdateType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.AckedRanges.html\" title=\"enum qlog::events::quic::AckedRanges\">AckedRanges</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.CongestionStateUpdatedTrigger.html\" title=\"enum qlog::events::quic::CongestionStateUpdatedTrigger\">CongestionStateUpdatedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.ErrorSpace.html\" title=\"enum qlog::events::quic::ErrorSpace\">ErrorSpace</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.LossTimerEventType.html\" title=\"enum qlog::events::quic::LossTimerEventType\">LossTimerEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketBufferedTrigger.html\" title=\"enum qlog::events::quic::PacketBufferedTrigger\">PacketBufferedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketDroppedTrigger.html\" title=\"enum qlog::events::quic::PacketDroppedTrigger\">PacketDroppedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketLostTrigger.html\" title=\"enum qlog::events::quic::PacketLostTrigger\">PacketLostTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketNumberSpace.html\" title=\"enum qlog::events::quic::PacketNumberSpace\">PacketNumberSpace</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketReceivedTrigger.html\" title=\"enum qlog::events::quic::PacketReceivedTrigger\">PacketReceivedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketSentTrigger.html\" title=\"enum qlog::events::quic::PacketSentTrigger\">PacketSentTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketType.html\" title=\"enum qlog::events::quic::PacketType\">PacketType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrame.html\" title=\"enum qlog::events::quic::QuicFrame\">QuicFrame</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrameTypeName.html\" title=\"enum qlog::events::quic::QuicFrameTypeName\">QuicFrameTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.RecoveryEventType.html\" title=\"enum qlog::events::quic::RecoveryEventType\">RecoveryEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.SecurityEventType.html\" title=\"enum qlog::events::quic::SecurityEventType\">SecurityEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamSide.html\" title=\"enum qlog::events::quic::StreamSide\">StreamSide</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamState.html\" title=\"enum qlog::events::quic::StreamState\">StreamState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamType.html\" title=\"enum qlog::events::quic::StreamType\">StreamType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TimerType.html\" title=\"enum qlog::events::quic::TimerType\">TimerType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportError.html\" title=\"enum qlog::events::quic::TransportError\">TransportError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportEventType.html\" title=\"enum qlog::events::quic::TransportEventType\">TransportEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyType.html\" title=\"enum qlog::events::security::KeyType\">KeyType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyUpdateOrRetiredTrigger.html\" title=\"enum qlog::events::security::KeyUpdateOrRetiredTrigger\">KeyUpdateOrRetiredTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"qlog/streamer/enum.StreamerState.html\" title=\"enum qlog::streamer::StreamerState\">StreamerState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionClosed.html\" title=\"struct qlog::events::connectivity::ConnectionClosed\">ConnectionClosed</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionIdUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionIdUpdated\">ConnectionIdUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStarted.html\" title=\"struct qlog::events::connectivity::ConnectionStarted\">ConnectionStarted</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStateUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionStateUpdated\">ConnectionStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.MtuUpdated.html\" title=\"struct qlog::events::connectivity::MtuUpdated\">MtuUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ServerListening.html\" title=\"struct qlog::events::connectivity::ServerListening\">ServerListening</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.SpinBitUpdated.html\" title=\"struct qlog::events::connectivity::SpinBitUpdated\">SpinBitUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameCreated.html\" title=\"struct qlog::events::h3::H3FrameCreated\">H3FrameCreated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameParsed.html\" title=\"struct qlog::events::h3::H3FrameParsed\">H3FrameParsed</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersRestored.html\" title=\"struct qlog::events::h3::H3ParametersRestored\">H3ParametersRestored</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersSet.html\" title=\"struct qlog::events::h3::H3ParametersSet\">H3ParametersSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3PushResolved.html\" title=\"struct qlog::events::h3::H3PushResolved\">H3PushResolved</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3StreamTypeSet.html\" title=\"struct qlog::events::h3::H3StreamTypeSet\">H3StreamTypeSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.HttpHeader.html\" title=\"struct qlog::events::h3::HttpHeader\">HttpHeader</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.Setting.html\" title=\"struct qlog::events::h3::Setting\">Setting</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableEntry.html\" title=\"struct qlog::events::qpack::QpackDynamicTableEntry\">QpackDynamicTableEntry</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableUpdated.html\" title=\"struct qlog::events::qpack::QpackDynamicTableUpdated\">QpackDynamicTableUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeaderBlockPrefix.html\" title=\"struct qlog::events::qpack::QpackHeaderBlockPrefix\">QpackHeaderBlockPrefix</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersDecoded.html\" title=\"struct qlog::events::qpack::QpackHeadersDecoded\">QpackHeadersDecoded</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersEncoded.html\" title=\"struct qlog::events::qpack::QpackHeadersEncoded\">QpackHeadersEncoded</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionCreated.html\" title=\"struct qlog::events::qpack::QpackInstructionCreated\">QpackInstructionCreated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionParsed.html\" title=\"struct qlog::events::qpack::QpackInstructionParsed\">QpackInstructionParsed</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStateUpdated\">QpackStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStreamStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStreamStateUpdated\">QpackStreamStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.AlpnInformation.html\" title=\"struct qlog::events::quic::AlpnInformation\">AlpnInformation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.CongestionStateUpdated.html\" title=\"struct qlog::events::quic::CongestionStateUpdated\">CongestionStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DataMoved.html\" title=\"struct qlog::events::quic::DataMoved\">DataMoved</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramDropped.html\" title=\"struct qlog::events::quic::DatagramDropped\">DatagramDropped</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsReceived.html\" title=\"struct qlog::events::quic::DatagramsReceived\">DatagramsReceived</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsSent.html\" title=\"struct qlog::events::quic::DatagramsSent\">DatagramsSent</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.FramesProcessed.html\" title=\"struct qlog::events::quic::FramesProcessed\">FramesProcessed</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.LossTimerUpdated.html\" title=\"struct qlog::events::quic::LossTimerUpdated\">LossTimerUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MarkedForRetransmit.html\" title=\"struct qlog::events::quic::MarkedForRetransmit\">MarkedForRetransmit</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MetricsUpdated.html\" title=\"struct qlog::events::quic::MetricsUpdated\">MetricsUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketBuffered.html\" title=\"struct qlog::events::quic::PacketBuffered\">PacketBuffered</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketDropped.html\" title=\"struct qlog::events::quic::PacketDropped\">PacketDropped</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketHeader.html\" title=\"struct qlog::events::quic::PacketHeader\">PacketHeader</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketLost.html\" title=\"struct qlog::events::quic::PacketLost\">PacketLost</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketReceived.html\" title=\"struct qlog::events::quic::PacketReceived\">PacketReceived</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketSent.html\" title=\"struct qlog::events::quic::PacketSent\">PacketSent</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketsAcked.html\" title=\"struct qlog::events::quic::PacketsAcked\">PacketsAcked</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PreferredAddress.html\" title=\"struct qlog::events::quic::PreferredAddress\">PreferredAddress</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.RecoveryParametersSet.html\" title=\"struct qlog::events::quic::RecoveryParametersSet\">RecoveryParametersSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.StreamStateUpdated.html\" title=\"struct qlog::events::quic::StreamStateUpdated\">StreamStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersRestored.html\" title=\"struct qlog::events::quic::TransportParametersRestored\">TransportParametersRestored</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersSet.html\" title=\"struct qlog::events::quic::TransportParametersSet\">TransportParametersSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.VersionInformation.html\" title=\"struct qlog::events::quic::VersionInformation\">VersionInformation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyDiscarded.html\" title=\"struct qlog::events::security::KeyDiscarded\">KeyDiscarded</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyUpdated.html\" title=\"struct qlog::events::security::KeyUpdated\">KeyUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/struct.Event.html\" title=\"struct qlog::events::Event\">Event</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/events/struct.RawInfo.html\" title=\"struct qlog::events::RawInfo\">RawInfo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/struct.CommonFields.html\" title=\"struct qlog::CommonFields\">CommonFields</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/struct.Configuration.html\" title=\"struct qlog::Configuration\">Configuration</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/struct.Token.html\" title=\"struct qlog::Token\">Token</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/struct.Trace.html\" title=\"struct qlog::Trace\">Trace</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/struct.TraceSeq.html\" title=\"struct qlog::TraceSeq\">TraceSeq</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"qlog/struct.VantagePoint.html\" title=\"struct qlog::VantagePoint\">VantagePoint</a>"]],
+"quiche":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"quiche/enum.CongestionControlAlgorithm.html\" title=\"enum quiche::CongestionControlAlgorithm\">CongestionControlAlgorithm</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"quiche/enum.Error.html\" title=\"enum quiche::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"quiche/enum.PathEvent.html\" title=\"enum quiche::PathEvent\">PathEvent</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"quiche/enum.Shutdown.html\" title=\"enum quiche::Shutdown\">Shutdown</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"quiche/enum.Type.html\" title=\"enum quiche::Type\">Type</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"quiche/h3/enum.Error.html\" title=\"enum quiche::h3::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"quiche/h3/enum.Event.html\" title=\"enum quiche::h3::Event\">Event</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"quiche/h3/struct.Header.html\" title=\"struct quiche::h3::Header\">Header</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"quiche/h3/struct.Priority.html\" title=\"struct quiche::h3::Priority\">Priority</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionError.html\" title=\"struct quiche::ConnectionError\">ConnectionError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"quiche/struct.RecvInfo.html\" title=\"struct quiche::RecvInfo\">RecvInfo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"quiche/struct.SendInfo.html\" title=\"struct quiche::SendInfo\">SendInfo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"quiche/struct.TransportParams.html\" title=\"struct quiche::TransportParams\">TransportParams</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"quiche/h3/struct.HeaderRef.html\" title=\"struct quiche::h3::HeaderRef\">HeaderRef</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionId.html\" title=\"struct quiche::ConnectionId\">ConnectionId</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"quiche/struct.Header.html\" title=\"struct quiche::Header\">Header</a>&lt;'a&gt;"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/convert/trait.AsMut.js b/trait.impl/core/convert/trait.AsMut.js
new file mode 100644
index 0000000..e92a1a4
--- /dev/null
+++ b/trait.impl/core/convert/trait.AsMut.js
@@ -0,0 +1,4 @@
+(function() {var implementors = {
+"octets":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html\" title=\"trait core::convert::AsMut\">AsMut</a>&lt;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]&gt; for <a class=\"struct\" href=\"octets/struct.OctetsMut.html\" title=\"struct octets::OctetsMut\">OctetsMut</a>&lt;'a&gt;"]],
+"quiche":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html\" title=\"trait core::convert::AsMut\">AsMut</a>&lt;SslRef&gt; for <a class=\"struct\" href=\"quiche/struct.Connection.html\" title=\"struct quiche::Connection\">Connection</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/convert/trait.AsRef.js b/trait.impl/core/convert/trait.AsRef.js
new file mode 100644
index 0000000..4e0755a
--- /dev/null
+++ b/trait.impl/core/convert/trait.AsRef.js
@@ -0,0 +1,4 @@
+(function() {var implementors = {
+"octets":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html\" title=\"trait core::convert::AsRef\">AsRef</a>&lt;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]&gt; for <a class=\"struct\" href=\"octets/struct.Octets.html\" title=\"struct octets::Octets\">Octets</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html\" title=\"trait core::convert::AsRef\">AsRef</a>&lt;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]&gt; for <a class=\"struct\" href=\"octets/struct.OctetsMut.html\" title=\"struct octets::OctetsMut\">OctetsMut</a>&lt;'a&gt;"]],
+"quiche":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html\" title=\"trait core::convert::AsRef\">AsRef</a>&lt;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]&gt; for <a class=\"struct\" href=\"quiche/struct.ConnectionId.html\" title=\"struct quiche::ConnectionId\">ConnectionId</a>&lt;'a&gt;"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/convert/trait.From.js b/trait.impl/core/convert/trait.From.js
new file mode 100644
index 0000000..20a14c2
--- /dev/null
+++ b/trait.impl/core/convert/trait.From.js
@@ -0,0 +1,4 @@
+(function() {var implementors = {
+"qlog":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;&amp;<a class=\"enum\" href=\"qlog/events/enum.EventData.html\" title=\"enum qlog::events::EventData\">EventData</a>&gt; for <a class=\"enum\" href=\"qlog/events/enum.EventType.html\" title=\"enum qlog::events::EventType\">EventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;<a class=\"enum\" href=\"qlog/events/enum.EventType.html\" title=\"enum qlog::events::EventType\">EventType</a>&gt; for <a class=\"enum\" href=\"qlog/events/enum.EventCategory.html\" title=\"enum qlog::events::EventCategory\">EventCategory</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;<a class=\"enum\" href=\"qlog/events/enum.EventType.html\" title=\"enum qlog::events::EventType\">EventType</a>&gt; for <a class=\"enum\" href=\"qlog/events/enum.EventImportance.html\" title=\"enum qlog::events::EventImportance\">EventImportance</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html\" title=\"struct std::io::error::Error\">Error</a>&gt; for <a class=\"enum\" href=\"qlog/enum.Error.html\" title=\"enum qlog::Error\">Error</a>"]],
+"quiche":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;<a class=\"enum\" href=\"quiche/enum.Error.html\" title=\"enum quiche::Error\">Error</a>&gt; for <a class=\"enum\" href=\"quiche/h3/enum.Error.html\" title=\"enum quiche::h3::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;<a class=\"struct\" href=\"octets/struct.BufferTooShortError.html\" title=\"struct octets::BufferTooShortError\">BufferTooShortError</a>&gt; for <a class=\"enum\" href=\"quiche/enum.Error.html\" title=\"enum quiche::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;<a class=\"struct\" href=\"octets/struct.BufferTooShortError.html\" title=\"struct octets::BufferTooShortError\">BufferTooShortError</a>&gt; for <a class=\"enum\" href=\"quiche/h3/enum.Error.html\" title=\"enum quiche::h3::Error\">Error</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"struct alloc::vec::Vec\">Vec</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>&gt;&gt; for <a class=\"struct\" href=\"quiche/struct.ConnectionId.html\" title=\"struct quiche::ConnectionId\">ConnectionId</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;<a class=\"struct\" href=\"quiche/struct.ConnectionId.html\" title=\"struct quiche::ConnectionId\">ConnectionId</a>&lt;'a&gt;&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"struct alloc::vec::Vec\">Vec</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>&gt;"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/convert/trait.TryFrom.js b/trait.impl/core/convert/trait.TryFrom.js
new file mode 100644
index 0000000..2459020
--- /dev/null
+++ b/trait.impl/core/convert/trait.TryFrom.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"quiche":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html\" title=\"trait core::convert::TryFrom\">TryFrom</a>&lt;&amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]&gt; for <a class=\"struct\" href=\"quiche/h3/struct.Priority.html\" title=\"struct quiche::h3::Priority\">Priority</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/default/trait.Default.js b/trait.impl/core/default/trait.Default.js
new file mode 100644
index 0000000..9b96ebd
--- /dev/null
+++ b/trait.impl/core/default/trait.Default.js
@@ -0,0 +1,5 @@
+(function() {var implementors = {
+"qlog":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"enum\" href=\"qlog/events/enum.EventImportance.html\" title=\"enum qlog::events::EventImportance\">EventImportance</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"enum\" href=\"qlog/events/enum.EventType.html\" title=\"enum qlog::events::EventType\">EventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"qlog/struct.CommonFields.html\" title=\"struct qlog::CommonFields\">CommonFields</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"qlog/struct.Configuration.html\" title=\"struct qlog::Configuration\">Configuration</a>"]],
+"quiche":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"quiche/h3/struct.Priority.html\" title=\"struct quiche::h3::Priority\">Priority</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"quiche/struct.SocketAddrIter.html\" title=\"struct quiche::SocketAddrIter\">SocketAddrIter</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"quiche/struct.Stats.html\" title=\"struct quiche::Stats\">Stats</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"quiche/struct.StreamIter.html\" title=\"struct quiche::StreamIter\">StreamIter</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"quiche/struct.TransportParams.html\" title=\"struct quiche::TransportParams\">TransportParams</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionId.html\" title=\"struct quiche::ConnectionId\">ConnectionId</a>&lt;'a&gt;"]],
+"quiche_apps":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.ClientArgs.html\" title=\"struct quiche_apps::args::ClientArgs\">ClientArgs</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.CommonArgs.html\" title=\"struct quiche_apps::args::CommonArgs\">CommonArgs</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http09Conn.html\" title=\"struct quiche_apps::common::Http09Conn\">Http09Conn</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/error/trait.Error.js b/trait.impl/core/error/trait.Error.js
new file mode 100644
index 0000000..5508c96
--- /dev/null
+++ b/trait.impl/core/error/trait.Error.js
@@ -0,0 +1,5 @@
+(function() {var implementors = {
+"octets":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"octets/struct.BufferTooShortError.html\" title=\"struct octets::BufferTooShortError\">BufferTooShortError</a>"]],
+"qlog":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"enum\" href=\"qlog/enum.Error.html\" title=\"enum qlog::Error\">Error</a>"]],
+"quiche":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"enum\" href=\"quiche/enum.Error.html\" title=\"enum quiche::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"enum\" href=\"quiche/h3/enum.Error.html\" title=\"enum quiche::h3::Error\">Error</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/fmt/trait.Debug.js b/trait.impl/core/fmt/trait.Debug.js
new file mode 100644
index 0000000..5ebfa4f
--- /dev/null
+++ b/trait.impl/core/fmt/trait.Debug.js
@@ -0,0 +1,6 @@
+(function() {var implementors = {
+"octets":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"octets/struct.BufferTooShortError.html\" title=\"struct octets::BufferTooShortError\">BufferTooShortError</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"octets/struct.Octets.html\" title=\"struct octets::Octets\">Octets</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"octets/struct.OctetsMut.html\" title=\"struct octets::OctetsMut\">OctetsMut</a>&lt;'a&gt;"]],
+"qlog":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/enum.Error.html\" title=\"enum qlog::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/enum.TokenType.html\" title=\"enum qlog::TokenType\">TokenType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/enum.VantagePointType.html\" title=\"enum qlog::VantagePointType\">VantagePointType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionClosedTrigger.html\" title=\"enum qlog::events::connectivity::ConnectionClosedTrigger\">ConnectionClosedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionState.html\" title=\"enum qlog::events::connectivity::ConnectionState\">ConnectionState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectivityEventType.html\" title=\"enum qlog::events::connectivity::ConnectivityEventType\">ConnectivityEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.TransportOwner.html\" title=\"enum qlog::events::connectivity::TransportOwner\">TransportOwner</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/enum.ApplicationErrorCode.html\" title=\"enum qlog::events::ApplicationErrorCode\">ApplicationErrorCode</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/enum.ConnectionErrorCode.html\" title=\"enum qlog::events::ConnectionErrorCode\">ConnectionErrorCode</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/enum.CryptoError.html\" title=\"enum qlog::events::CryptoError\">CryptoError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/enum.DataRecipient.html\" title=\"enum qlog::events::DataRecipient\">DataRecipient</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/enum.EventCategory.html\" title=\"enum qlog::events::EventCategory\">EventCategory</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/enum.EventData.html\" title=\"enum qlog::events::EventData\">EventData</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/enum.EventImportance.html\" title=\"enum qlog::events::EventImportance\">EventImportance</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/enum.EventType.html\" title=\"enum qlog::events::EventType\">EventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/enum.GenericEventType.html\" title=\"enum qlog::events::GenericEventType\">GenericEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/enum.TimeFormat.html\" title=\"enum qlog::events::TimeFormat\">TimeFormat</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.ApplicationError.html\" title=\"enum qlog::events::h3::ApplicationError\">ApplicationError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3Owner.html\" title=\"enum qlog::events::h3::H3Owner\">H3Owner</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PriorityTargetStreamType.html\" title=\"enum qlog::events::h3::H3PriorityTargetStreamType\">H3PriorityTargetStreamType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PushDecision.html\" title=\"enum qlog::events::h3::H3PushDecision\">H3PushDecision</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3StreamType.html\" title=\"enum qlog::events::h3::H3StreamType\">H3StreamType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3EventType.html\" title=\"enum qlog::events::h3::Http3EventType\">Http3EventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3Frame.html\" title=\"enum qlog::events::h3::Http3Frame\">Http3Frame</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3FrameTypeName.html\" title=\"enum qlog::events::h3::Http3FrameTypeName\">Http3FrameTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QPackInstruction.html\" title=\"enum qlog::events::qpack::QPackInstruction\">QPackInstruction</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackEventType.html\" title=\"enum qlog::events::qpack::QpackEventType\">QpackEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentation.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentation\">QpackHeaderBlockRepresentation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentationTypeName.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName\">QpackHeaderBlockRepresentationTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackInstructionTypeName.html\" title=\"enum qlog::events::qpack::QpackInstructionTypeName\">QpackInstructionTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackOwner.html\" title=\"enum qlog::events::qpack::QpackOwner\">QpackOwner</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackStreamState.html\" title=\"enum qlog::events::qpack::QpackStreamState\">QpackStreamState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackTableType.html\" title=\"enum qlog::events::qpack::QpackTableType\">QpackTableType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackUpdateType.html\" title=\"enum qlog::events::qpack::QpackUpdateType\">QpackUpdateType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.AckedRanges.html\" title=\"enum qlog::events::quic::AckedRanges\">AckedRanges</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.CongestionStateUpdatedTrigger.html\" title=\"enum qlog::events::quic::CongestionStateUpdatedTrigger\">CongestionStateUpdatedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.ErrorSpace.html\" title=\"enum qlog::events::quic::ErrorSpace\">ErrorSpace</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.LossTimerEventType.html\" title=\"enum qlog::events::quic::LossTimerEventType\">LossTimerEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketBufferedTrigger.html\" title=\"enum qlog::events::quic::PacketBufferedTrigger\">PacketBufferedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketDroppedTrigger.html\" title=\"enum qlog::events::quic::PacketDroppedTrigger\">PacketDroppedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketLostTrigger.html\" title=\"enum qlog::events::quic::PacketLostTrigger\">PacketLostTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketNumberSpace.html\" title=\"enum qlog::events::quic::PacketNumberSpace\">PacketNumberSpace</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketReceivedTrigger.html\" title=\"enum qlog::events::quic::PacketReceivedTrigger\">PacketReceivedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketSentTrigger.html\" title=\"enum qlog::events::quic::PacketSentTrigger\">PacketSentTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketType.html\" title=\"enum qlog::events::quic::PacketType\">PacketType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrame.html\" title=\"enum qlog::events::quic::QuicFrame\">QuicFrame</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrameTypeName.html\" title=\"enum qlog::events::quic::QuicFrameTypeName\">QuicFrameTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.RecoveryEventType.html\" title=\"enum qlog::events::quic::RecoveryEventType\">RecoveryEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.SecurityEventType.html\" title=\"enum qlog::events::quic::SecurityEventType\">SecurityEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamSide.html\" title=\"enum qlog::events::quic::StreamSide\">StreamSide</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamState.html\" title=\"enum qlog::events::quic::StreamState\">StreamState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamType.html\" title=\"enum qlog::events::quic::StreamType\">StreamType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TimerType.html\" title=\"enum qlog::events::quic::TimerType\">TimerType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportError.html\" title=\"enum qlog::events::quic::TransportError\">TransportError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportEventType.html\" title=\"enum qlog::events::quic::TransportEventType\">TransportEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyType.html\" title=\"enum qlog::events::security::KeyType\">KeyType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyUpdateOrRetiredTrigger.html\" title=\"enum qlog::events::security::KeyUpdateOrRetiredTrigger\">KeyUpdateOrRetiredTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"qlog/streamer/enum.StreamerState.html\" title=\"enum qlog::streamer::StreamerState\">StreamerState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionClosed.html\" title=\"struct qlog::events::connectivity::ConnectionClosed\">ConnectionClosed</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionIdUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionIdUpdated\">ConnectionIdUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStarted.html\" title=\"struct qlog::events::connectivity::ConnectionStarted\">ConnectionStarted</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStateUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionStateUpdated\">ConnectionStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.MtuUpdated.html\" title=\"struct qlog::events::connectivity::MtuUpdated\">MtuUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ServerListening.html\" title=\"struct qlog::events::connectivity::ServerListening\">ServerListening</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.SpinBitUpdated.html\" title=\"struct qlog::events::connectivity::SpinBitUpdated\">SpinBitUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameCreated.html\" title=\"struct qlog::events::h3::H3FrameCreated\">H3FrameCreated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameParsed.html\" title=\"struct qlog::events::h3::H3FrameParsed\">H3FrameParsed</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersRestored.html\" title=\"struct qlog::events::h3::H3ParametersRestored\">H3ParametersRestored</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersSet.html\" title=\"struct qlog::events::h3::H3ParametersSet\">H3ParametersSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3PushResolved.html\" title=\"struct qlog::events::h3::H3PushResolved\">H3PushResolved</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3StreamTypeSet.html\" title=\"struct qlog::events::h3::H3StreamTypeSet\">H3StreamTypeSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.HttpHeader.html\" title=\"struct qlog::events::h3::HttpHeader\">HttpHeader</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.Setting.html\" title=\"struct qlog::events::h3::Setting\">Setting</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableEntry.html\" title=\"struct qlog::events::qpack::QpackDynamicTableEntry\">QpackDynamicTableEntry</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableUpdated.html\" title=\"struct qlog::events::qpack::QpackDynamicTableUpdated\">QpackDynamicTableUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeaderBlockPrefix.html\" title=\"struct qlog::events::qpack::QpackHeaderBlockPrefix\">QpackHeaderBlockPrefix</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersDecoded.html\" title=\"struct qlog::events::qpack::QpackHeadersDecoded\">QpackHeadersDecoded</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersEncoded.html\" title=\"struct qlog::events::qpack::QpackHeadersEncoded\">QpackHeadersEncoded</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionCreated.html\" title=\"struct qlog::events::qpack::QpackInstructionCreated\">QpackInstructionCreated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionParsed.html\" title=\"struct qlog::events::qpack::QpackInstructionParsed\">QpackInstructionParsed</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStateUpdated\">QpackStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStreamStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStreamStateUpdated\">QpackStreamStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.AlpnInformation.html\" title=\"struct qlog::events::quic::AlpnInformation\">AlpnInformation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.CongestionStateUpdated.html\" title=\"struct qlog::events::quic::CongestionStateUpdated\">CongestionStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DataMoved.html\" title=\"struct qlog::events::quic::DataMoved\">DataMoved</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramDropped.html\" title=\"struct qlog::events::quic::DatagramDropped\">DatagramDropped</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsReceived.html\" title=\"struct qlog::events::quic::DatagramsReceived\">DatagramsReceived</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsSent.html\" title=\"struct qlog::events::quic::DatagramsSent\">DatagramsSent</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.FramesProcessed.html\" title=\"struct qlog::events::quic::FramesProcessed\">FramesProcessed</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.LossTimerUpdated.html\" title=\"struct qlog::events::quic::LossTimerUpdated\">LossTimerUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MarkedForRetransmit.html\" title=\"struct qlog::events::quic::MarkedForRetransmit\">MarkedForRetransmit</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MetricsUpdated.html\" title=\"struct qlog::events::quic::MetricsUpdated\">MetricsUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketBuffered.html\" title=\"struct qlog::events::quic::PacketBuffered\">PacketBuffered</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketDropped.html\" title=\"struct qlog::events::quic::PacketDropped\">PacketDropped</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketHeader.html\" title=\"struct qlog::events::quic::PacketHeader\">PacketHeader</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketLost.html\" title=\"struct qlog::events::quic::PacketLost\">PacketLost</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketReceived.html\" title=\"struct qlog::events::quic::PacketReceived\">PacketReceived</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketSent.html\" title=\"struct qlog::events::quic::PacketSent\">PacketSent</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketsAcked.html\" title=\"struct qlog::events::quic::PacketsAcked\">PacketsAcked</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PreferredAddress.html\" title=\"struct qlog::events::quic::PreferredAddress\">PreferredAddress</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.RecoveryParametersSet.html\" title=\"struct qlog::events::quic::RecoveryParametersSet\">RecoveryParametersSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.StreamStateUpdated.html\" title=\"struct qlog::events::quic::StreamStateUpdated\">StreamStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersRestored.html\" title=\"struct qlog::events::quic::TransportParametersRestored\">TransportParametersRestored</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersSet.html\" title=\"struct qlog::events::quic::TransportParametersSet\">TransportParametersSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.VersionInformation.html\" title=\"struct qlog::events::quic::VersionInformation\">VersionInformation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyDiscarded.html\" title=\"struct qlog::events::security::KeyDiscarded\">KeyDiscarded</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyUpdated.html\" title=\"struct qlog::events::security::KeyUpdated\">KeyUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/struct.Event.html\" title=\"struct qlog::events::Event\">Event</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/struct.JsonEvent.html\" title=\"struct qlog::events::JsonEvent\">JsonEvent</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/events/struct.RawInfo.html\" title=\"struct qlog::events::RawInfo\">RawInfo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/struct.CommonFields.html\" title=\"struct qlog::CommonFields\">CommonFields</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/struct.Configuration.html\" title=\"struct qlog::Configuration\">Configuration</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/struct.QlogSeq.html\" title=\"struct qlog::QlogSeq\">QlogSeq</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/struct.Token.html\" title=\"struct qlog::Token\">Token</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/struct.Trace.html\" title=\"struct qlog::Trace\">Trace</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/struct.TraceSeq.html\" title=\"struct qlog::TraceSeq\">TraceSeq</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"qlog/struct.VantagePoint.html\" title=\"struct qlog::VantagePoint\">VantagePoint</a>"]],
+"quiche":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"quiche/enum.CongestionControlAlgorithm.html\" title=\"enum quiche::CongestionControlAlgorithm\">CongestionControlAlgorithm</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"quiche/enum.Error.html\" title=\"enum quiche::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"quiche/enum.PathEvent.html\" title=\"enum quiche::PathEvent\">PathEvent</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"quiche/enum.Type.html\" title=\"enum quiche::Type\">Type</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"quiche/h3/enum.Error.html\" title=\"enum quiche::h3::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"quiche/h3/enum.Event.html\" title=\"enum quiche::h3::Event\">Event</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"quiche/h3/struct.Header.html\" title=\"struct quiche::h3::Header\">Header</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"quiche/h3/struct.Priority.html\" title=\"struct quiche::h3::Priority\">Priority</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionError.html\" title=\"struct quiche::ConnectionError\">ConnectionError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"quiche/struct.PathStats.html\" title=\"struct quiche::PathStats\">PathStats</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"quiche/struct.RecvInfo.html\" title=\"struct quiche::RecvInfo\">RecvInfo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"quiche/struct.SendInfo.html\" title=\"struct quiche::SendInfo\">SendInfo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"quiche/struct.Stats.html\" title=\"struct quiche::Stats\">Stats</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"quiche/struct.TransportParams.html\" title=\"struct quiche::TransportParams\">TransportParams</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"quiche/h3/struct.HeaderRef.html\" title=\"struct quiche::h3::HeaderRef\">HeaderRef</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionId.html\" title=\"struct quiche::ConnectionId\">ConnectionId</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"quiche/struct.Header.html\" title=\"struct quiche::Header\">Header</a>&lt;'a&gt;"]],
+"quiche_apps":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"quiche_apps/client/enum.ClientError.html\" title=\"enum quiche_apps::client::ClientError\">ClientError</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/fmt/trait.Display.js b/trait.impl/core/fmt/trait.Display.js
new file mode 100644
index 0000000..90c6702
--- /dev/null
+++ b/trait.impl/core/fmt/trait.Display.js
@@ -0,0 +1,5 @@
+(function() {var implementors = {
+"octets":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"octets/struct.BufferTooShortError.html\" title=\"struct octets::BufferTooShortError\">BufferTooShortError</a>"]],
+"qlog":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"qlog/enum.Error.html\" title=\"enum qlog::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"qlog/events/enum.EventCategory.html\" title=\"enum qlog::events::EventCategory\">EventCategory</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"qlog/struct.HexSlice.html\" title=\"struct qlog::HexSlice\">HexSlice</a>&lt;'a&gt;"]],
+"quiche":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"quiche/enum.Error.html\" title=\"enum quiche::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"quiche/h3/enum.Error.html\" title=\"enum quiche::h3::Error\">Error</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/hash/trait.Hash.js b/trait.impl/core/hash/trait.Hash.js
new file mode 100644
index 0000000..5c3ae4c
--- /dev/null
+++ b/trait.impl/core/hash/trait.Hash.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"quiche":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionId.html\" title=\"struct quiche::ConnectionId\">ConnectionId</a>&lt;'a&gt;"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/iter/traits/exact_size/trait.ExactSizeIterator.js b/trait.impl/core/iter/traits/exact_size/trait.ExactSizeIterator.js
new file mode 100644
index 0000000..65d22fb
--- /dev/null
+++ b/trait.impl/core/iter/traits/exact_size/trait.ExactSizeIterator.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"quiche":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html\" title=\"trait core::iter::traits::exact_size::ExactSizeIterator\">ExactSizeIterator</a> for <a class=\"struct\" href=\"quiche/struct.SocketAddrIter.html\" title=\"struct quiche::SocketAddrIter\">SocketAddrIter</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html\" title=\"trait core::iter::traits::exact_size::ExactSizeIterator\">ExactSizeIterator</a> for <a class=\"struct\" href=\"quiche/struct.StreamIter.html\" title=\"struct quiche::StreamIter\">StreamIter</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/iter/traits/iterator/trait.Iterator.js b/trait.impl/core/iter/traits/iterator/trait.Iterator.js
new file mode 100644
index 0000000..446f548
--- /dev/null
+++ b/trait.impl/core/iter/traits/iterator/trait.Iterator.js
@@ -0,0 +1,4 @@
+(function() {var implementors = {
+"qlog":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"qlog/reader/struct.QlogSeqReader.html\" title=\"struct qlog::reader::QlogSeqReader\">QlogSeqReader</a>"]],
+"quiche":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"quiche/struct.SocketAddrIter.html\" title=\"struct quiche::SocketAddrIter\">SocketAddrIter</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"quiche/struct.StreamIter.html\" title=\"struct quiche::StreamIter\">StreamIter</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/marker/trait.Copy.js b/trait.impl/core/marker/trait.Copy.js
new file mode 100644
index 0000000..207f98d
--- /dev/null
+++ b/trait.impl/core/marker/trait.Copy.js
@@ -0,0 +1,5 @@
+(function() {var implementors = {
+"octets":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"octets/struct.BufferTooShortError.html\" title=\"struct octets::BufferTooShortError\">BufferTooShortError</a>"]],
+"qlog":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"qlog/enum.ImportanceLogLevel.html\" title=\"enum qlog::ImportanceLogLevel\">ImportanceLogLevel</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionClosedTrigger.html\" title=\"enum qlog::events::connectivity::ConnectionClosedTrigger\">ConnectionClosedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectivityEventType.html\" title=\"enum qlog::events::connectivity::ConnectivityEventType\">ConnectivityEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"qlog/events/enum.EventImportance.html\" title=\"enum qlog::events::EventImportance\">EventImportance</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"qlog/events/enum.EventType.html\" title=\"enum qlog::events::EventType\">EventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"qlog/events/enum.GenericEventType.html\" title=\"enum qlog::events::GenericEventType\">GenericEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3EventType.html\" title=\"enum qlog::events::h3::Http3EventType\">Http3EventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackEventType.html\" title=\"enum qlog::events::qpack::QpackEventType\">QpackEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.CongestionStateUpdatedTrigger.html\" title=\"enum qlog::events::quic::CongestionStateUpdatedTrigger\">CongestionStateUpdatedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketBufferedTrigger.html\" title=\"enum qlog::events::quic::PacketBufferedTrigger\">PacketBufferedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketDroppedTrigger.html\" title=\"enum qlog::events::quic::PacketDroppedTrigger\">PacketDroppedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketLostTrigger.html\" title=\"enum qlog::events::quic::PacketLostTrigger\">PacketLostTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketReceivedTrigger.html\" title=\"enum qlog::events::quic::PacketReceivedTrigger\">PacketReceivedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketSentTrigger.html\" title=\"enum qlog::events::quic::PacketSentTrigger\">PacketSentTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.RecoveryEventType.html\" title=\"enum qlog::events::quic::RecoveryEventType\">RecoveryEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.SecurityEventType.html\" title=\"enum qlog::events::quic::SecurityEventType\">SecurityEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportEventType.html\" title=\"enum qlog::events::quic::TransportEventType\">TransportEventType</a>"]],
+"quiche":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"quiche/enum.CongestionControlAlgorithm.html\" title=\"enum quiche::CongestionControlAlgorithm\">CongestionControlAlgorithm</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"quiche/enum.Error.html\" title=\"enum quiche::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"quiche/enum.Type.html\" title=\"enum quiche::Type\">Type</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"quiche/h3/enum.Error.html\" title=\"enum quiche::h3::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"quiche/struct.RecvInfo.html\" title=\"struct quiche::RecvInfo\">RecvInfo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"quiche/struct.SendInfo.html\" title=\"struct quiche::SendInfo\">SendInfo</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/marker/trait.Freeze.js b/trait.impl/core/marker/trait.Freeze.js
new file mode 100644
index 0000000..ea89919
--- /dev/null
+++ b/trait.impl/core/marker/trait.Freeze.js
@@ -0,0 +1,6 @@
+(function() {var implementors = {
+"octets":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"octets/struct.BufferTooShortError.html\" title=\"struct octets::BufferTooShortError\">BufferTooShortError</a>",1,["octets::BufferTooShortError"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"octets/struct.Octets.html\" title=\"struct octets::Octets\">Octets</a>&lt;'a&gt;",1,["octets::Octets"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"octets/struct.OctetsMut.html\" title=\"struct octets::OctetsMut\">OctetsMut</a>&lt;'a&gt;",1,["octets::OctetsMut"]]],
+"qlog":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/enum.Error.html\" title=\"enum qlog::Error\">Error</a>",1,["qlog::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/enum.ImportanceLogLevel.html\" title=\"enum qlog::ImportanceLogLevel\">ImportanceLogLevel</a>",1,["qlog::ImportanceLogLevel"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/enum.TokenType.html\" title=\"enum qlog::TokenType\">TokenType</a>",1,["qlog::TokenType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/enum.VantagePointType.html\" title=\"enum qlog::VantagePointType\">VantagePointType</a>",1,["qlog::VantagePointType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionClosedTrigger.html\" title=\"enum qlog::events::connectivity::ConnectionClosedTrigger\">ConnectionClosedTrigger</a>",1,["qlog::events::connectivity::ConnectionClosedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionState.html\" title=\"enum qlog::events::connectivity::ConnectionState\">ConnectionState</a>",1,["qlog::events::connectivity::ConnectionState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectivityEventType.html\" title=\"enum qlog::events::connectivity::ConnectivityEventType\">ConnectivityEventType</a>",1,["qlog::events::connectivity::ConnectivityEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.TransportOwner.html\" title=\"enum qlog::events::connectivity::TransportOwner\">TransportOwner</a>",1,["qlog::events::connectivity::TransportOwner"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/enum.ApplicationErrorCode.html\" title=\"enum qlog::events::ApplicationErrorCode\">ApplicationErrorCode</a>",1,["qlog::events::ApplicationErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/enum.ConnectionErrorCode.html\" title=\"enum qlog::events::ConnectionErrorCode\">ConnectionErrorCode</a>",1,["qlog::events::ConnectionErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/enum.CryptoError.html\" title=\"enum qlog::events::CryptoError\">CryptoError</a>",1,["qlog::events::CryptoError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/enum.DataRecipient.html\" title=\"enum qlog::events::DataRecipient\">DataRecipient</a>",1,["qlog::events::DataRecipient"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/enum.EventCategory.html\" title=\"enum qlog::events::EventCategory\">EventCategory</a>",1,["qlog::events::EventCategory"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/enum.EventData.html\" title=\"enum qlog::events::EventData\">EventData</a>",1,["qlog::events::EventData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/enum.EventImportance.html\" title=\"enum qlog::events::EventImportance\">EventImportance</a>",1,["qlog::events::EventImportance"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/enum.EventType.html\" title=\"enum qlog::events::EventType\">EventType</a>",1,["qlog::events::EventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/enum.GenericEventType.html\" title=\"enum qlog::events::GenericEventType\">GenericEventType</a>",1,["qlog::events::GenericEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/enum.TimeFormat.html\" title=\"enum qlog::events::TimeFormat\">TimeFormat</a>",1,["qlog::events::TimeFormat"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.ApplicationError.html\" title=\"enum qlog::events::h3::ApplicationError\">ApplicationError</a>",1,["qlog::events::h3::ApplicationError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3Owner.html\" title=\"enum qlog::events::h3::H3Owner\">H3Owner</a>",1,["qlog::events::h3::H3Owner"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PriorityTargetStreamType.html\" title=\"enum qlog::events::h3::H3PriorityTargetStreamType\">H3PriorityTargetStreamType</a>",1,["qlog::events::h3::H3PriorityTargetStreamType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PushDecision.html\" title=\"enum qlog::events::h3::H3PushDecision\">H3PushDecision</a>",1,["qlog::events::h3::H3PushDecision"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3StreamType.html\" title=\"enum qlog::events::h3::H3StreamType\">H3StreamType</a>",1,["qlog::events::h3::H3StreamType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3EventType.html\" title=\"enum qlog::events::h3::Http3EventType\">Http3EventType</a>",1,["qlog::events::h3::Http3EventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3Frame.html\" title=\"enum qlog::events::h3::Http3Frame\">Http3Frame</a>",1,["qlog::events::h3::Http3Frame"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3FrameTypeName.html\" title=\"enum qlog::events::h3::Http3FrameTypeName\">Http3FrameTypeName</a>",1,["qlog::events::h3::Http3FrameTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QPackInstruction.html\" title=\"enum qlog::events::qpack::QPackInstruction\">QPackInstruction</a>",1,["qlog::events::qpack::QPackInstruction"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackEventType.html\" title=\"enum qlog::events::qpack::QpackEventType\">QpackEventType</a>",1,["qlog::events::qpack::QpackEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentation.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentation\">QpackHeaderBlockRepresentation</a>",1,["qlog::events::qpack::QpackHeaderBlockRepresentation"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentationTypeName.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName\">QpackHeaderBlockRepresentationTypeName</a>",1,["qlog::events::qpack::QpackHeaderBlockRepresentationTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackInstructionTypeName.html\" title=\"enum qlog::events::qpack::QpackInstructionTypeName\">QpackInstructionTypeName</a>",1,["qlog::events::qpack::QpackInstructionTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackOwner.html\" title=\"enum qlog::events::qpack::QpackOwner\">QpackOwner</a>",1,["qlog::events::qpack::QpackOwner"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackStreamState.html\" title=\"enum qlog::events::qpack::QpackStreamState\">QpackStreamState</a>",1,["qlog::events::qpack::QpackStreamState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackTableType.html\" title=\"enum qlog::events::qpack::QpackTableType\">QpackTableType</a>",1,["qlog::events::qpack::QpackTableType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackUpdateType.html\" title=\"enum qlog::events::qpack::QpackUpdateType\">QpackUpdateType</a>",1,["qlog::events::qpack::QpackUpdateType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.AckedRanges.html\" title=\"enum qlog::events::quic::AckedRanges\">AckedRanges</a>",1,["qlog::events::quic::AckedRanges"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.CongestionStateUpdatedTrigger.html\" title=\"enum qlog::events::quic::CongestionStateUpdatedTrigger\">CongestionStateUpdatedTrigger</a>",1,["qlog::events::quic::CongestionStateUpdatedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.ErrorSpace.html\" title=\"enum qlog::events::quic::ErrorSpace\">ErrorSpace</a>",1,["qlog::events::quic::ErrorSpace"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.LossTimerEventType.html\" title=\"enum qlog::events::quic::LossTimerEventType\">LossTimerEventType</a>",1,["qlog::events::quic::LossTimerEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketBufferedTrigger.html\" title=\"enum qlog::events::quic::PacketBufferedTrigger\">PacketBufferedTrigger</a>",1,["qlog::events::quic::PacketBufferedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketDroppedTrigger.html\" title=\"enum qlog::events::quic::PacketDroppedTrigger\">PacketDroppedTrigger</a>",1,["qlog::events::quic::PacketDroppedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketLostTrigger.html\" title=\"enum qlog::events::quic::PacketLostTrigger\">PacketLostTrigger</a>",1,["qlog::events::quic::PacketLostTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketNumberSpace.html\" title=\"enum qlog::events::quic::PacketNumberSpace\">PacketNumberSpace</a>",1,["qlog::events::quic::PacketNumberSpace"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketReceivedTrigger.html\" title=\"enum qlog::events::quic::PacketReceivedTrigger\">PacketReceivedTrigger</a>",1,["qlog::events::quic::PacketReceivedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketSentTrigger.html\" title=\"enum qlog::events::quic::PacketSentTrigger\">PacketSentTrigger</a>",1,["qlog::events::quic::PacketSentTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketType.html\" title=\"enum qlog::events::quic::PacketType\">PacketType</a>",1,["qlog::events::quic::PacketType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrame.html\" title=\"enum qlog::events::quic::QuicFrame\">QuicFrame</a>",1,["qlog::events::quic::QuicFrame"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrameTypeName.html\" title=\"enum qlog::events::quic::QuicFrameTypeName\">QuicFrameTypeName</a>",1,["qlog::events::quic::QuicFrameTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.RecoveryEventType.html\" title=\"enum qlog::events::quic::RecoveryEventType\">RecoveryEventType</a>",1,["qlog::events::quic::RecoveryEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.SecurityEventType.html\" title=\"enum qlog::events::quic::SecurityEventType\">SecurityEventType</a>",1,["qlog::events::quic::SecurityEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamSide.html\" title=\"enum qlog::events::quic::StreamSide\">StreamSide</a>",1,["qlog::events::quic::StreamSide"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamState.html\" title=\"enum qlog::events::quic::StreamState\">StreamState</a>",1,["qlog::events::quic::StreamState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamType.html\" title=\"enum qlog::events::quic::StreamType\">StreamType</a>",1,["qlog::events::quic::StreamType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TimerType.html\" title=\"enum qlog::events::quic::TimerType\">TimerType</a>",1,["qlog::events::quic::TimerType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportError.html\" title=\"enum qlog::events::quic::TransportError\">TransportError</a>",1,["qlog::events::quic::TransportError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportEventType.html\" title=\"enum qlog::events::quic::TransportEventType\">TransportEventType</a>",1,["qlog::events::quic::TransportEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyType.html\" title=\"enum qlog::events::security::KeyType\">KeyType</a>",1,["qlog::events::security::KeyType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyUpdateOrRetiredTrigger.html\" title=\"enum qlog::events::security::KeyUpdateOrRetiredTrigger\">KeyUpdateOrRetiredTrigger</a>",1,["qlog::events::security::KeyUpdateOrRetiredTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/reader/enum.Event.html\" title=\"enum qlog::reader::Event\">Event</a>",1,["qlog::reader::Event"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"qlog/streamer/enum.StreamerState.html\" title=\"enum qlog::streamer::StreamerState\">StreamerState</a>",1,["qlog::streamer::StreamerState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionClosed.html\" title=\"struct qlog::events::connectivity::ConnectionClosed\">ConnectionClosed</a>",1,["qlog::events::connectivity::ConnectionClosed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionIdUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionIdUpdated\">ConnectionIdUpdated</a>",1,["qlog::events::connectivity::ConnectionIdUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStarted.html\" title=\"struct qlog::events::connectivity::ConnectionStarted\">ConnectionStarted</a>",1,["qlog::events::connectivity::ConnectionStarted"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStateUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionStateUpdated\">ConnectionStateUpdated</a>",1,["qlog::events::connectivity::ConnectionStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.MtuUpdated.html\" title=\"struct qlog::events::connectivity::MtuUpdated\">MtuUpdated</a>",1,["qlog::events::connectivity::MtuUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ServerListening.html\" title=\"struct qlog::events::connectivity::ServerListening\">ServerListening</a>",1,["qlog::events::connectivity::ServerListening"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.SpinBitUpdated.html\" title=\"struct qlog::events::connectivity::SpinBitUpdated\">SpinBitUpdated</a>",1,["qlog::events::connectivity::SpinBitUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameCreated.html\" title=\"struct qlog::events::h3::H3FrameCreated\">H3FrameCreated</a>",1,["qlog::events::h3::H3FrameCreated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameParsed.html\" title=\"struct qlog::events::h3::H3FrameParsed\">H3FrameParsed</a>",1,["qlog::events::h3::H3FrameParsed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersRestored.html\" title=\"struct qlog::events::h3::H3ParametersRestored\">H3ParametersRestored</a>",1,["qlog::events::h3::H3ParametersRestored"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersSet.html\" title=\"struct qlog::events::h3::H3ParametersSet\">H3ParametersSet</a>",1,["qlog::events::h3::H3ParametersSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3PushResolved.html\" title=\"struct qlog::events::h3::H3PushResolved\">H3PushResolved</a>",1,["qlog::events::h3::H3PushResolved"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3StreamTypeSet.html\" title=\"struct qlog::events::h3::H3StreamTypeSet\">H3StreamTypeSet</a>",1,["qlog::events::h3::H3StreamTypeSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.HttpHeader.html\" title=\"struct qlog::events::h3::HttpHeader\">HttpHeader</a>",1,["qlog::events::h3::HttpHeader"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.Setting.html\" title=\"struct qlog::events::h3::Setting\">Setting</a>",1,["qlog::events::h3::Setting"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableEntry.html\" title=\"struct qlog::events::qpack::QpackDynamicTableEntry\">QpackDynamicTableEntry</a>",1,["qlog::events::qpack::QpackDynamicTableEntry"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableUpdated.html\" title=\"struct qlog::events::qpack::QpackDynamicTableUpdated\">QpackDynamicTableUpdated</a>",1,["qlog::events::qpack::QpackDynamicTableUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeaderBlockPrefix.html\" title=\"struct qlog::events::qpack::QpackHeaderBlockPrefix\">QpackHeaderBlockPrefix</a>",1,["qlog::events::qpack::QpackHeaderBlockPrefix"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersDecoded.html\" title=\"struct qlog::events::qpack::QpackHeadersDecoded\">QpackHeadersDecoded</a>",1,["qlog::events::qpack::QpackHeadersDecoded"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersEncoded.html\" title=\"struct qlog::events::qpack::QpackHeadersEncoded\">QpackHeadersEncoded</a>",1,["qlog::events::qpack::QpackHeadersEncoded"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionCreated.html\" title=\"struct qlog::events::qpack::QpackInstructionCreated\">QpackInstructionCreated</a>",1,["qlog::events::qpack::QpackInstructionCreated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionParsed.html\" title=\"struct qlog::events::qpack::QpackInstructionParsed\">QpackInstructionParsed</a>",1,["qlog::events::qpack::QpackInstructionParsed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStateUpdated\">QpackStateUpdated</a>",1,["qlog::events::qpack::QpackStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStreamStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStreamStateUpdated\">QpackStreamStateUpdated</a>",1,["qlog::events::qpack::QpackStreamStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.AlpnInformation.html\" title=\"struct qlog::events::quic::AlpnInformation\">AlpnInformation</a>",1,["qlog::events::quic::AlpnInformation"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.CongestionStateUpdated.html\" title=\"struct qlog::events::quic::CongestionStateUpdated\">CongestionStateUpdated</a>",1,["qlog::events::quic::CongestionStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DataMoved.html\" title=\"struct qlog::events::quic::DataMoved\">DataMoved</a>",1,["qlog::events::quic::DataMoved"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramDropped.html\" title=\"struct qlog::events::quic::DatagramDropped\">DatagramDropped</a>",1,["qlog::events::quic::DatagramDropped"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsReceived.html\" title=\"struct qlog::events::quic::DatagramsReceived\">DatagramsReceived</a>",1,["qlog::events::quic::DatagramsReceived"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsSent.html\" title=\"struct qlog::events::quic::DatagramsSent\">DatagramsSent</a>",1,["qlog::events::quic::DatagramsSent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.FramesProcessed.html\" title=\"struct qlog::events::quic::FramesProcessed\">FramesProcessed</a>",1,["qlog::events::quic::FramesProcessed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.LossTimerUpdated.html\" title=\"struct qlog::events::quic::LossTimerUpdated\">LossTimerUpdated</a>",1,["qlog::events::quic::LossTimerUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MarkedForRetransmit.html\" title=\"struct qlog::events::quic::MarkedForRetransmit\">MarkedForRetransmit</a>",1,["qlog::events::quic::MarkedForRetransmit"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MetricsUpdated.html\" title=\"struct qlog::events::quic::MetricsUpdated\">MetricsUpdated</a>",1,["qlog::events::quic::MetricsUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketBuffered.html\" title=\"struct qlog::events::quic::PacketBuffered\">PacketBuffered</a>",1,["qlog::events::quic::PacketBuffered"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketDropped.html\" title=\"struct qlog::events::quic::PacketDropped\">PacketDropped</a>",1,["qlog::events::quic::PacketDropped"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketHeader.html\" title=\"struct qlog::events::quic::PacketHeader\">PacketHeader</a>",1,["qlog::events::quic::PacketHeader"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketLost.html\" title=\"struct qlog::events::quic::PacketLost\">PacketLost</a>",1,["qlog::events::quic::PacketLost"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketReceived.html\" title=\"struct qlog::events::quic::PacketReceived\">PacketReceived</a>",1,["qlog::events::quic::PacketReceived"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketSent.html\" title=\"struct qlog::events::quic::PacketSent\">PacketSent</a>",1,["qlog::events::quic::PacketSent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketsAcked.html\" title=\"struct qlog::events::quic::PacketsAcked\">PacketsAcked</a>",1,["qlog::events::quic::PacketsAcked"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PreferredAddress.html\" title=\"struct qlog::events::quic::PreferredAddress\">PreferredAddress</a>",1,["qlog::events::quic::PreferredAddress"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.RecoveryParametersSet.html\" title=\"struct qlog::events::quic::RecoveryParametersSet\">RecoveryParametersSet</a>",1,["qlog::events::quic::RecoveryParametersSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.StreamStateUpdated.html\" title=\"struct qlog::events::quic::StreamStateUpdated\">StreamStateUpdated</a>",1,["qlog::events::quic::StreamStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersRestored.html\" title=\"struct qlog::events::quic::TransportParametersRestored\">TransportParametersRestored</a>",1,["qlog::events::quic::TransportParametersRestored"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersSet.html\" title=\"struct qlog::events::quic::TransportParametersSet\">TransportParametersSet</a>",1,["qlog::events::quic::TransportParametersSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.VersionInformation.html\" title=\"struct qlog::events::quic::VersionInformation\">VersionInformation</a>",1,["qlog::events::quic::VersionInformation"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyDiscarded.html\" title=\"struct qlog::events::security::KeyDiscarded\">KeyDiscarded</a>",1,["qlog::events::security::KeyDiscarded"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyUpdated.html\" title=\"struct qlog::events::security::KeyUpdated\">KeyUpdated</a>",1,["qlog::events::security::KeyUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/struct.Event.html\" title=\"struct qlog::events::Event\">Event</a>",1,["qlog::events::Event"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/struct.JsonEvent.html\" title=\"struct qlog::events::JsonEvent\">JsonEvent</a>",1,["qlog::events::JsonEvent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/events/struct.RawInfo.html\" title=\"struct qlog::events::RawInfo\">RawInfo</a>",1,["qlog::events::RawInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/reader/struct.QlogSeqReader.html\" title=\"struct qlog::reader::QlogSeqReader\">QlogSeqReader</a>",1,["qlog::reader::QlogSeqReader"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/streamer/struct.QlogStreamer.html\" title=\"struct qlog::streamer::QlogStreamer\">QlogStreamer</a>",1,["qlog::streamer::QlogStreamer"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/struct.CommonFields.html\" title=\"struct qlog::CommonFields\">CommonFields</a>",1,["qlog::CommonFields"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/struct.Configuration.html\" title=\"struct qlog::Configuration\">Configuration</a>",1,["qlog::Configuration"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/struct.Qlog.html\" title=\"struct qlog::Qlog\">Qlog</a>",1,["qlog::Qlog"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/struct.QlogSeq.html\" title=\"struct qlog::QlogSeq\">QlogSeq</a>",1,["qlog::QlogSeq"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/struct.Token.html\" title=\"struct qlog::Token\">Token</a>",1,["qlog::Token"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/struct.Trace.html\" title=\"struct qlog::Trace\">Trace</a>",1,["qlog::Trace"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/struct.TraceSeq.html\" title=\"struct qlog::TraceSeq\">TraceSeq</a>",1,["qlog::TraceSeq"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/struct.VantagePoint.html\" title=\"struct qlog::VantagePoint\">VantagePoint</a>",1,["qlog::VantagePoint"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"qlog/struct.HexSlice.html\" title=\"struct qlog::HexSlice\">HexSlice</a>&lt;'a&gt;",1,["qlog::HexSlice"]]],
+"quiche":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"quiche/enum.CongestionControlAlgorithm.html\" title=\"enum quiche::CongestionControlAlgorithm\">CongestionControlAlgorithm</a>",1,["quiche::recovery::CongestionControlAlgorithm"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"quiche/enum.Error.html\" title=\"enum quiche::Error\">Error</a>",1,["quiche::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"quiche/enum.PathEvent.html\" title=\"enum quiche::PathEvent\">PathEvent</a>",1,["quiche::path::PathEvent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"quiche/enum.QlogLevel.html\" title=\"enum quiche::QlogLevel\">QlogLevel</a>",1,["quiche::QlogLevel"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"quiche/enum.Shutdown.html\" title=\"enum quiche::Shutdown\">Shutdown</a>",1,["quiche::Shutdown"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"quiche/enum.Type.html\" title=\"enum quiche::Type\">Type</a>",1,["quiche::packet::Type"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"quiche/enum.WireErrorCode.html\" title=\"enum quiche::WireErrorCode\">WireErrorCode</a>",1,["quiche::WireErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"quiche/h3/enum.Error.html\" title=\"enum quiche::h3::Error\">Error</a>",1,["quiche::h3::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"quiche/h3/enum.Event.html\" title=\"enum quiche::h3::Event\">Event</a>",1,["quiche::h3::Event"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"quiche/h3/enum.WireErrorCode.html\" title=\"enum quiche::h3::WireErrorCode\">WireErrorCode</a>",1,["quiche::h3::WireErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche/h3/struct.Config.html\" title=\"struct quiche::h3::Config\">Config</a>",1,["quiche::h3::Config"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche/h3/struct.Connection.html\" title=\"struct quiche::h3::Connection\">Connection</a>",1,["quiche::h3::Connection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche/h3/struct.Header.html\" title=\"struct quiche::h3::Header\">Header</a>",1,["quiche::h3::Header"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche/h3/struct.Priority.html\" title=\"struct quiche::h3::Priority\">Priority</a>",1,["quiche::h3::Priority"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche/struct.Config.html\" title=\"struct quiche::Config\">Config</a>",1,["quiche::Config"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche/struct.Connection.html\" title=\"struct quiche::Connection\">Connection</a>",1,["quiche::Connection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionError.html\" title=\"struct quiche::ConnectionError\">ConnectionError</a>",1,["quiche::ConnectionError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche/struct.PathStats.html\" title=\"struct quiche::PathStats\">PathStats</a>",1,["quiche::path::PathStats"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche/struct.RecvInfo.html\" title=\"struct quiche::RecvInfo\">RecvInfo</a>",1,["quiche::RecvInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche/struct.SendInfo.html\" title=\"struct quiche::SendInfo\">SendInfo</a>",1,["quiche::SendInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche/struct.SocketAddrIter.html\" title=\"struct quiche::SocketAddrIter\">SocketAddrIter</a>",1,["quiche::path::SocketAddrIter"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche/struct.Stats.html\" title=\"struct quiche::Stats\">Stats</a>",1,["quiche::Stats"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche/struct.StreamIter.html\" title=\"struct quiche::StreamIter\">StreamIter</a>",1,["quiche::stream::StreamIter"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche/struct.TransportParams.html\" title=\"struct quiche::TransportParams\">TransportParams</a>",1,["quiche::TransportParams"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche/h3/struct.HeaderRef.html\" title=\"struct quiche::h3::HeaderRef\">HeaderRef</a>&lt;'a&gt;",1,["quiche::h3::HeaderRef"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionId.html\" title=\"struct quiche::ConnectionId\">ConnectionId</a>&lt;'a&gt;",1,["quiche::packet::ConnectionId"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche/struct.Header.html\" title=\"struct quiche::Header\">Header</a>&lt;'a&gt;",1,["quiche::packet::Header"]]],
+"quiche_apps":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"quiche_apps/client/enum.ClientError.html\" title=\"enum quiche_apps::client::ClientError\">ClientError</a>",1,["quiche_apps::client::ClientError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.ClientArgs.html\" title=\"struct quiche_apps::args::ClientArgs\">ClientArgs</a>",1,["quiche_apps::args::ClientArgs"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.CommonArgs.html\" title=\"struct quiche_apps::args::CommonArgs\">CommonArgs</a>",1,["quiche_apps::args::CommonArgs"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.ServerArgs.html\" title=\"struct quiche_apps::args::ServerArgs\">ServerArgs</a>",1,["quiche_apps::args::ServerArgs"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Client.html\" title=\"struct quiche_apps::common::Client\">Client</a>",1,["quiche_apps::common::Client"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http09Conn.html\" title=\"struct quiche_apps::common::Http09Conn\">Http09Conn</a>",1,["quiche_apps::common::Http09Conn"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http09Request.html\" title=\"struct quiche_apps::common::Http09Request\">Http09Request</a>",1,["quiche_apps::common::Http09Request"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http3Conn.html\" title=\"struct quiche_apps::common::Http3Conn\">Http3Conn</a>",1,["quiche_apps::common::Http3Conn"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http3DgramSender.html\" title=\"struct quiche_apps::common::Http3DgramSender\">Http3DgramSender</a>",1,["quiche_apps::common::Http3DgramSender"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.PartialRequest.html\" title=\"struct quiche_apps::common::PartialRequest\">PartialRequest</a>",1,["quiche_apps::common::PartialRequest"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.PartialResponse.html\" title=\"struct quiche_apps::common::PartialResponse\">PartialResponse</a>",1,["quiche_apps::common::PartialResponse"]]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/marker/trait.Send.js b/trait.impl/core/marker/trait.Send.js
new file mode 100644
index 0000000..76ba4bb
--- /dev/null
+++ b/trait.impl/core/marker/trait.Send.js
@@ -0,0 +1,6 @@
+(function() {var implementors = {
+"octets":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"octets/struct.BufferTooShortError.html\" title=\"struct octets::BufferTooShortError\">BufferTooShortError</a>",1,["octets::BufferTooShortError"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"octets/struct.Octets.html\" title=\"struct octets::Octets\">Octets</a>&lt;'a&gt;",1,["octets::Octets"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"octets/struct.OctetsMut.html\" title=\"struct octets::OctetsMut\">OctetsMut</a>&lt;'a&gt;",1,["octets::OctetsMut"]]],
+"qlog":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/enum.Error.html\" title=\"enum qlog::Error\">Error</a>",1,["qlog::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/enum.ImportanceLogLevel.html\" title=\"enum qlog::ImportanceLogLevel\">ImportanceLogLevel</a>",1,["qlog::ImportanceLogLevel"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/enum.TokenType.html\" title=\"enum qlog::TokenType\">TokenType</a>",1,["qlog::TokenType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/enum.VantagePointType.html\" title=\"enum qlog::VantagePointType\">VantagePointType</a>",1,["qlog::VantagePointType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionClosedTrigger.html\" title=\"enum qlog::events::connectivity::ConnectionClosedTrigger\">ConnectionClosedTrigger</a>",1,["qlog::events::connectivity::ConnectionClosedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionState.html\" title=\"enum qlog::events::connectivity::ConnectionState\">ConnectionState</a>",1,["qlog::events::connectivity::ConnectionState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectivityEventType.html\" title=\"enum qlog::events::connectivity::ConnectivityEventType\">ConnectivityEventType</a>",1,["qlog::events::connectivity::ConnectivityEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.TransportOwner.html\" title=\"enum qlog::events::connectivity::TransportOwner\">TransportOwner</a>",1,["qlog::events::connectivity::TransportOwner"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/enum.ApplicationErrorCode.html\" title=\"enum qlog::events::ApplicationErrorCode\">ApplicationErrorCode</a>",1,["qlog::events::ApplicationErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/enum.ConnectionErrorCode.html\" title=\"enum qlog::events::ConnectionErrorCode\">ConnectionErrorCode</a>",1,["qlog::events::ConnectionErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/enum.CryptoError.html\" title=\"enum qlog::events::CryptoError\">CryptoError</a>",1,["qlog::events::CryptoError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/enum.DataRecipient.html\" title=\"enum qlog::events::DataRecipient\">DataRecipient</a>",1,["qlog::events::DataRecipient"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/enum.EventCategory.html\" title=\"enum qlog::events::EventCategory\">EventCategory</a>",1,["qlog::events::EventCategory"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/enum.EventData.html\" title=\"enum qlog::events::EventData\">EventData</a>",1,["qlog::events::EventData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/enum.EventImportance.html\" title=\"enum qlog::events::EventImportance\">EventImportance</a>",1,["qlog::events::EventImportance"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/enum.EventType.html\" title=\"enum qlog::events::EventType\">EventType</a>",1,["qlog::events::EventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/enum.GenericEventType.html\" title=\"enum qlog::events::GenericEventType\">GenericEventType</a>",1,["qlog::events::GenericEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/enum.TimeFormat.html\" title=\"enum qlog::events::TimeFormat\">TimeFormat</a>",1,["qlog::events::TimeFormat"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.ApplicationError.html\" title=\"enum qlog::events::h3::ApplicationError\">ApplicationError</a>",1,["qlog::events::h3::ApplicationError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3Owner.html\" title=\"enum qlog::events::h3::H3Owner\">H3Owner</a>",1,["qlog::events::h3::H3Owner"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PriorityTargetStreamType.html\" title=\"enum qlog::events::h3::H3PriorityTargetStreamType\">H3PriorityTargetStreamType</a>",1,["qlog::events::h3::H3PriorityTargetStreamType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PushDecision.html\" title=\"enum qlog::events::h3::H3PushDecision\">H3PushDecision</a>",1,["qlog::events::h3::H3PushDecision"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3StreamType.html\" title=\"enum qlog::events::h3::H3StreamType\">H3StreamType</a>",1,["qlog::events::h3::H3StreamType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3EventType.html\" title=\"enum qlog::events::h3::Http3EventType\">Http3EventType</a>",1,["qlog::events::h3::Http3EventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3Frame.html\" title=\"enum qlog::events::h3::Http3Frame\">Http3Frame</a>",1,["qlog::events::h3::Http3Frame"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3FrameTypeName.html\" title=\"enum qlog::events::h3::Http3FrameTypeName\">Http3FrameTypeName</a>",1,["qlog::events::h3::Http3FrameTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QPackInstruction.html\" title=\"enum qlog::events::qpack::QPackInstruction\">QPackInstruction</a>",1,["qlog::events::qpack::QPackInstruction"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackEventType.html\" title=\"enum qlog::events::qpack::QpackEventType\">QpackEventType</a>",1,["qlog::events::qpack::QpackEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentation.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentation\">QpackHeaderBlockRepresentation</a>",1,["qlog::events::qpack::QpackHeaderBlockRepresentation"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentationTypeName.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName\">QpackHeaderBlockRepresentationTypeName</a>",1,["qlog::events::qpack::QpackHeaderBlockRepresentationTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackInstructionTypeName.html\" title=\"enum qlog::events::qpack::QpackInstructionTypeName\">QpackInstructionTypeName</a>",1,["qlog::events::qpack::QpackInstructionTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackOwner.html\" title=\"enum qlog::events::qpack::QpackOwner\">QpackOwner</a>",1,["qlog::events::qpack::QpackOwner"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackStreamState.html\" title=\"enum qlog::events::qpack::QpackStreamState\">QpackStreamState</a>",1,["qlog::events::qpack::QpackStreamState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackTableType.html\" title=\"enum qlog::events::qpack::QpackTableType\">QpackTableType</a>",1,["qlog::events::qpack::QpackTableType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackUpdateType.html\" title=\"enum qlog::events::qpack::QpackUpdateType\">QpackUpdateType</a>",1,["qlog::events::qpack::QpackUpdateType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.AckedRanges.html\" title=\"enum qlog::events::quic::AckedRanges\">AckedRanges</a>",1,["qlog::events::quic::AckedRanges"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.CongestionStateUpdatedTrigger.html\" title=\"enum qlog::events::quic::CongestionStateUpdatedTrigger\">CongestionStateUpdatedTrigger</a>",1,["qlog::events::quic::CongestionStateUpdatedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.ErrorSpace.html\" title=\"enum qlog::events::quic::ErrorSpace\">ErrorSpace</a>",1,["qlog::events::quic::ErrorSpace"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.LossTimerEventType.html\" title=\"enum qlog::events::quic::LossTimerEventType\">LossTimerEventType</a>",1,["qlog::events::quic::LossTimerEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketBufferedTrigger.html\" title=\"enum qlog::events::quic::PacketBufferedTrigger\">PacketBufferedTrigger</a>",1,["qlog::events::quic::PacketBufferedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketDroppedTrigger.html\" title=\"enum qlog::events::quic::PacketDroppedTrigger\">PacketDroppedTrigger</a>",1,["qlog::events::quic::PacketDroppedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketLostTrigger.html\" title=\"enum qlog::events::quic::PacketLostTrigger\">PacketLostTrigger</a>",1,["qlog::events::quic::PacketLostTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketNumberSpace.html\" title=\"enum qlog::events::quic::PacketNumberSpace\">PacketNumberSpace</a>",1,["qlog::events::quic::PacketNumberSpace"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketReceivedTrigger.html\" title=\"enum qlog::events::quic::PacketReceivedTrigger\">PacketReceivedTrigger</a>",1,["qlog::events::quic::PacketReceivedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketSentTrigger.html\" title=\"enum qlog::events::quic::PacketSentTrigger\">PacketSentTrigger</a>",1,["qlog::events::quic::PacketSentTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketType.html\" title=\"enum qlog::events::quic::PacketType\">PacketType</a>",1,["qlog::events::quic::PacketType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrame.html\" title=\"enum qlog::events::quic::QuicFrame\">QuicFrame</a>",1,["qlog::events::quic::QuicFrame"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrameTypeName.html\" title=\"enum qlog::events::quic::QuicFrameTypeName\">QuicFrameTypeName</a>",1,["qlog::events::quic::QuicFrameTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.RecoveryEventType.html\" title=\"enum qlog::events::quic::RecoveryEventType\">RecoveryEventType</a>",1,["qlog::events::quic::RecoveryEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.SecurityEventType.html\" title=\"enum qlog::events::quic::SecurityEventType\">SecurityEventType</a>",1,["qlog::events::quic::SecurityEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamSide.html\" title=\"enum qlog::events::quic::StreamSide\">StreamSide</a>",1,["qlog::events::quic::StreamSide"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamState.html\" title=\"enum qlog::events::quic::StreamState\">StreamState</a>",1,["qlog::events::quic::StreamState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamType.html\" title=\"enum qlog::events::quic::StreamType\">StreamType</a>",1,["qlog::events::quic::StreamType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TimerType.html\" title=\"enum qlog::events::quic::TimerType\">TimerType</a>",1,["qlog::events::quic::TimerType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportError.html\" title=\"enum qlog::events::quic::TransportError\">TransportError</a>",1,["qlog::events::quic::TransportError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportEventType.html\" title=\"enum qlog::events::quic::TransportEventType\">TransportEventType</a>",1,["qlog::events::quic::TransportEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyType.html\" title=\"enum qlog::events::security::KeyType\">KeyType</a>",1,["qlog::events::security::KeyType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyUpdateOrRetiredTrigger.html\" title=\"enum qlog::events::security::KeyUpdateOrRetiredTrigger\">KeyUpdateOrRetiredTrigger</a>",1,["qlog::events::security::KeyUpdateOrRetiredTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/reader/enum.Event.html\" title=\"enum qlog::reader::Event\">Event</a>",1,["qlog::reader::Event"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"qlog/streamer/enum.StreamerState.html\" title=\"enum qlog::streamer::StreamerState\">StreamerState</a>",1,["qlog::streamer::StreamerState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionClosed.html\" title=\"struct qlog::events::connectivity::ConnectionClosed\">ConnectionClosed</a>",1,["qlog::events::connectivity::ConnectionClosed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionIdUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionIdUpdated\">ConnectionIdUpdated</a>",1,["qlog::events::connectivity::ConnectionIdUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStarted.html\" title=\"struct qlog::events::connectivity::ConnectionStarted\">ConnectionStarted</a>",1,["qlog::events::connectivity::ConnectionStarted"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStateUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionStateUpdated\">ConnectionStateUpdated</a>",1,["qlog::events::connectivity::ConnectionStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.MtuUpdated.html\" title=\"struct qlog::events::connectivity::MtuUpdated\">MtuUpdated</a>",1,["qlog::events::connectivity::MtuUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ServerListening.html\" title=\"struct qlog::events::connectivity::ServerListening\">ServerListening</a>",1,["qlog::events::connectivity::ServerListening"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.SpinBitUpdated.html\" title=\"struct qlog::events::connectivity::SpinBitUpdated\">SpinBitUpdated</a>",1,["qlog::events::connectivity::SpinBitUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameCreated.html\" title=\"struct qlog::events::h3::H3FrameCreated\">H3FrameCreated</a>",1,["qlog::events::h3::H3FrameCreated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameParsed.html\" title=\"struct qlog::events::h3::H3FrameParsed\">H3FrameParsed</a>",1,["qlog::events::h3::H3FrameParsed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersRestored.html\" title=\"struct qlog::events::h3::H3ParametersRestored\">H3ParametersRestored</a>",1,["qlog::events::h3::H3ParametersRestored"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersSet.html\" title=\"struct qlog::events::h3::H3ParametersSet\">H3ParametersSet</a>",1,["qlog::events::h3::H3ParametersSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3PushResolved.html\" title=\"struct qlog::events::h3::H3PushResolved\">H3PushResolved</a>",1,["qlog::events::h3::H3PushResolved"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3StreamTypeSet.html\" title=\"struct qlog::events::h3::H3StreamTypeSet\">H3StreamTypeSet</a>",1,["qlog::events::h3::H3StreamTypeSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.HttpHeader.html\" title=\"struct qlog::events::h3::HttpHeader\">HttpHeader</a>",1,["qlog::events::h3::HttpHeader"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.Setting.html\" title=\"struct qlog::events::h3::Setting\">Setting</a>",1,["qlog::events::h3::Setting"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableEntry.html\" title=\"struct qlog::events::qpack::QpackDynamicTableEntry\">QpackDynamicTableEntry</a>",1,["qlog::events::qpack::QpackDynamicTableEntry"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableUpdated.html\" title=\"struct qlog::events::qpack::QpackDynamicTableUpdated\">QpackDynamicTableUpdated</a>",1,["qlog::events::qpack::QpackDynamicTableUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeaderBlockPrefix.html\" title=\"struct qlog::events::qpack::QpackHeaderBlockPrefix\">QpackHeaderBlockPrefix</a>",1,["qlog::events::qpack::QpackHeaderBlockPrefix"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersDecoded.html\" title=\"struct qlog::events::qpack::QpackHeadersDecoded\">QpackHeadersDecoded</a>",1,["qlog::events::qpack::QpackHeadersDecoded"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersEncoded.html\" title=\"struct qlog::events::qpack::QpackHeadersEncoded\">QpackHeadersEncoded</a>",1,["qlog::events::qpack::QpackHeadersEncoded"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionCreated.html\" title=\"struct qlog::events::qpack::QpackInstructionCreated\">QpackInstructionCreated</a>",1,["qlog::events::qpack::QpackInstructionCreated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionParsed.html\" title=\"struct qlog::events::qpack::QpackInstructionParsed\">QpackInstructionParsed</a>",1,["qlog::events::qpack::QpackInstructionParsed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStateUpdated\">QpackStateUpdated</a>",1,["qlog::events::qpack::QpackStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStreamStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStreamStateUpdated\">QpackStreamStateUpdated</a>",1,["qlog::events::qpack::QpackStreamStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.AlpnInformation.html\" title=\"struct qlog::events::quic::AlpnInformation\">AlpnInformation</a>",1,["qlog::events::quic::AlpnInformation"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.CongestionStateUpdated.html\" title=\"struct qlog::events::quic::CongestionStateUpdated\">CongestionStateUpdated</a>",1,["qlog::events::quic::CongestionStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DataMoved.html\" title=\"struct qlog::events::quic::DataMoved\">DataMoved</a>",1,["qlog::events::quic::DataMoved"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramDropped.html\" title=\"struct qlog::events::quic::DatagramDropped\">DatagramDropped</a>",1,["qlog::events::quic::DatagramDropped"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsReceived.html\" title=\"struct qlog::events::quic::DatagramsReceived\">DatagramsReceived</a>",1,["qlog::events::quic::DatagramsReceived"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsSent.html\" title=\"struct qlog::events::quic::DatagramsSent\">DatagramsSent</a>",1,["qlog::events::quic::DatagramsSent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.FramesProcessed.html\" title=\"struct qlog::events::quic::FramesProcessed\">FramesProcessed</a>",1,["qlog::events::quic::FramesProcessed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.LossTimerUpdated.html\" title=\"struct qlog::events::quic::LossTimerUpdated\">LossTimerUpdated</a>",1,["qlog::events::quic::LossTimerUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MarkedForRetransmit.html\" title=\"struct qlog::events::quic::MarkedForRetransmit\">MarkedForRetransmit</a>",1,["qlog::events::quic::MarkedForRetransmit"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MetricsUpdated.html\" title=\"struct qlog::events::quic::MetricsUpdated\">MetricsUpdated</a>",1,["qlog::events::quic::MetricsUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketBuffered.html\" title=\"struct qlog::events::quic::PacketBuffered\">PacketBuffered</a>",1,["qlog::events::quic::PacketBuffered"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketDropped.html\" title=\"struct qlog::events::quic::PacketDropped\">PacketDropped</a>",1,["qlog::events::quic::PacketDropped"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketHeader.html\" title=\"struct qlog::events::quic::PacketHeader\">PacketHeader</a>",1,["qlog::events::quic::PacketHeader"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketLost.html\" title=\"struct qlog::events::quic::PacketLost\">PacketLost</a>",1,["qlog::events::quic::PacketLost"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketReceived.html\" title=\"struct qlog::events::quic::PacketReceived\">PacketReceived</a>",1,["qlog::events::quic::PacketReceived"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketSent.html\" title=\"struct qlog::events::quic::PacketSent\">PacketSent</a>",1,["qlog::events::quic::PacketSent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketsAcked.html\" title=\"struct qlog::events::quic::PacketsAcked\">PacketsAcked</a>",1,["qlog::events::quic::PacketsAcked"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PreferredAddress.html\" title=\"struct qlog::events::quic::PreferredAddress\">PreferredAddress</a>",1,["qlog::events::quic::PreferredAddress"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.RecoveryParametersSet.html\" title=\"struct qlog::events::quic::RecoveryParametersSet\">RecoveryParametersSet</a>",1,["qlog::events::quic::RecoveryParametersSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.StreamStateUpdated.html\" title=\"struct qlog::events::quic::StreamStateUpdated\">StreamStateUpdated</a>",1,["qlog::events::quic::StreamStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersRestored.html\" title=\"struct qlog::events::quic::TransportParametersRestored\">TransportParametersRestored</a>",1,["qlog::events::quic::TransportParametersRestored"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersSet.html\" title=\"struct qlog::events::quic::TransportParametersSet\">TransportParametersSet</a>",1,["qlog::events::quic::TransportParametersSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.VersionInformation.html\" title=\"struct qlog::events::quic::VersionInformation\">VersionInformation</a>",1,["qlog::events::quic::VersionInformation"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyDiscarded.html\" title=\"struct qlog::events::security::KeyDiscarded\">KeyDiscarded</a>",1,["qlog::events::security::KeyDiscarded"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyUpdated.html\" title=\"struct qlog::events::security::KeyUpdated\">KeyUpdated</a>",1,["qlog::events::security::KeyUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/struct.Event.html\" title=\"struct qlog::events::Event\">Event</a>",1,["qlog::events::Event"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/struct.JsonEvent.html\" title=\"struct qlog::events::JsonEvent\">JsonEvent</a>",1,["qlog::events::JsonEvent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/events/struct.RawInfo.html\" title=\"struct qlog::events::RawInfo\">RawInfo</a>",1,["qlog::events::RawInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/reader/struct.QlogSeqReader.html\" title=\"struct qlog::reader::QlogSeqReader\">QlogSeqReader</a>",1,["qlog::reader::QlogSeqReader"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/streamer/struct.QlogStreamer.html\" title=\"struct qlog::streamer::QlogStreamer\">QlogStreamer</a>",1,["qlog::streamer::QlogStreamer"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/struct.CommonFields.html\" title=\"struct qlog::CommonFields\">CommonFields</a>",1,["qlog::CommonFields"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/struct.Configuration.html\" title=\"struct qlog::Configuration\">Configuration</a>",1,["qlog::Configuration"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/struct.Qlog.html\" title=\"struct qlog::Qlog\">Qlog</a>",1,["qlog::Qlog"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/struct.QlogSeq.html\" title=\"struct qlog::QlogSeq\">QlogSeq</a>",1,["qlog::QlogSeq"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/struct.Token.html\" title=\"struct qlog::Token\">Token</a>",1,["qlog::Token"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/struct.Trace.html\" title=\"struct qlog::Trace\">Trace</a>",1,["qlog::Trace"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/struct.TraceSeq.html\" title=\"struct qlog::TraceSeq\">TraceSeq</a>",1,["qlog::TraceSeq"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/struct.VantagePoint.html\" title=\"struct qlog::VantagePoint\">VantagePoint</a>",1,["qlog::VantagePoint"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"qlog/struct.HexSlice.html\" title=\"struct qlog::HexSlice\">HexSlice</a>&lt;'a&gt;",1,["qlog::HexSlice"]]],
+"quiche":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"quiche/enum.CongestionControlAlgorithm.html\" title=\"enum quiche::CongestionControlAlgorithm\">CongestionControlAlgorithm</a>",1,["quiche::recovery::CongestionControlAlgorithm"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"quiche/enum.Error.html\" title=\"enum quiche::Error\">Error</a>",1,["quiche::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"quiche/enum.PathEvent.html\" title=\"enum quiche::PathEvent\">PathEvent</a>",1,["quiche::path::PathEvent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"quiche/enum.QlogLevel.html\" title=\"enum quiche::QlogLevel\">QlogLevel</a>",1,["quiche::QlogLevel"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"quiche/enum.Shutdown.html\" title=\"enum quiche::Shutdown\">Shutdown</a>",1,["quiche::Shutdown"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"quiche/enum.Type.html\" title=\"enum quiche::Type\">Type</a>",1,["quiche::packet::Type"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"quiche/enum.WireErrorCode.html\" title=\"enum quiche::WireErrorCode\">WireErrorCode</a>",1,["quiche::WireErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"quiche/h3/enum.Error.html\" title=\"enum quiche::h3::Error\">Error</a>",1,["quiche::h3::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"quiche/h3/enum.Event.html\" title=\"enum quiche::h3::Event\">Event</a>",1,["quiche::h3::Event"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"quiche/h3/enum.WireErrorCode.html\" title=\"enum quiche::h3::WireErrorCode\">WireErrorCode</a>",1,["quiche::h3::WireErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche/h3/struct.Config.html\" title=\"struct quiche::h3::Config\">Config</a>",1,["quiche::h3::Config"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche/h3/struct.Connection.html\" title=\"struct quiche::h3::Connection\">Connection</a>",1,["quiche::h3::Connection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche/h3/struct.Header.html\" title=\"struct quiche::h3::Header\">Header</a>",1,["quiche::h3::Header"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche/h3/struct.Priority.html\" title=\"struct quiche::h3::Priority\">Priority</a>",1,["quiche::h3::Priority"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche/struct.Config.html\" title=\"struct quiche::Config\">Config</a>",1,["quiche::Config"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche/struct.Connection.html\" title=\"struct quiche::Connection\">Connection</a>",1,["quiche::Connection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionError.html\" title=\"struct quiche::ConnectionError\">ConnectionError</a>",1,["quiche::ConnectionError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche/struct.PathStats.html\" title=\"struct quiche::PathStats\">PathStats</a>",1,["quiche::path::PathStats"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche/struct.RecvInfo.html\" title=\"struct quiche::RecvInfo\">RecvInfo</a>",1,["quiche::RecvInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche/struct.SendInfo.html\" title=\"struct quiche::SendInfo\">SendInfo</a>",1,["quiche::SendInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche/struct.SocketAddrIter.html\" title=\"struct quiche::SocketAddrIter\">SocketAddrIter</a>",1,["quiche::path::SocketAddrIter"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche/struct.Stats.html\" title=\"struct quiche::Stats\">Stats</a>",1,["quiche::Stats"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche/struct.StreamIter.html\" title=\"struct quiche::StreamIter\">StreamIter</a>",1,["quiche::stream::StreamIter"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche/struct.TransportParams.html\" title=\"struct quiche::TransportParams\">TransportParams</a>",1,["quiche::TransportParams"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche/h3/struct.HeaderRef.html\" title=\"struct quiche::h3::HeaderRef\">HeaderRef</a>&lt;'a&gt;",1,["quiche::h3::HeaderRef"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionId.html\" title=\"struct quiche::ConnectionId\">ConnectionId</a>&lt;'a&gt;",1,["quiche::packet::ConnectionId"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche/struct.Header.html\" title=\"struct quiche::Header\">Header</a>&lt;'a&gt;",1,["quiche::packet::Header"]]],
+"quiche_apps":[["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Client.html\" title=\"struct quiche_apps::common::Client\">Client</a>",1,["quiche_apps::common::Client"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http09Conn.html\" title=\"struct quiche_apps::common::Http09Conn\">Http09Conn</a>",1,["quiche_apps::common::Http09Conn"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http3Conn.html\" title=\"struct quiche_apps::common::Http3Conn\">Http3Conn</a>",1,["quiche_apps::common::Http3Conn"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"quiche_apps/client/enum.ClientError.html\" title=\"enum quiche_apps::client::ClientError\">ClientError</a>",1,["quiche_apps::client::ClientError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.ClientArgs.html\" title=\"struct quiche_apps::args::ClientArgs\">ClientArgs</a>",1,["quiche_apps::args::ClientArgs"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.CommonArgs.html\" title=\"struct quiche_apps::args::CommonArgs\">CommonArgs</a>",1,["quiche_apps::args::CommonArgs"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.ServerArgs.html\" title=\"struct quiche_apps::args::ServerArgs\">ServerArgs</a>",1,["quiche_apps::args::ServerArgs"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http09Request.html\" title=\"struct quiche_apps::common::Http09Request\">Http09Request</a>",1,["quiche_apps::common::Http09Request"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http3DgramSender.html\" title=\"struct quiche_apps::common::Http3DgramSender\">Http3DgramSender</a>",1,["quiche_apps::common::Http3DgramSender"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.PartialRequest.html\" title=\"struct quiche_apps::common::PartialRequest\">PartialRequest</a>",1,["quiche_apps::common::PartialRequest"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.PartialResponse.html\" title=\"struct quiche_apps::common::PartialResponse\">PartialResponse</a>",1,["quiche_apps::common::PartialResponse"]]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/marker/trait.StructuralPartialEq.js b/trait.impl/core/marker/trait.StructuralPartialEq.js
new file mode 100644
index 0000000..ae20231
--- /dev/null
+++ b/trait.impl/core/marker/trait.StructuralPartialEq.js
@@ -0,0 +1,5 @@
+(function() {var implementors = {
+"octets":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"octets/struct.BufferTooShortError.html\" title=\"struct octets::BufferTooShortError\">BufferTooShortError</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"octets/struct.Octets.html\" title=\"struct octets::Octets\">Octets</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"octets/struct.OctetsMut.html\" title=\"struct octets::OctetsMut\">OctetsMut</a>&lt;'a&gt;"]],
+"qlog":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/enum.TokenType.html\" title=\"enum qlog::TokenType\">TokenType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/enum.VantagePointType.html\" title=\"enum qlog::VantagePointType\">VantagePointType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionClosedTrigger.html\" title=\"enum qlog::events::connectivity::ConnectionClosedTrigger\">ConnectionClosedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionState.html\" title=\"enum qlog::events::connectivity::ConnectionState\">ConnectionState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectivityEventType.html\" title=\"enum qlog::events::connectivity::ConnectivityEventType\">ConnectivityEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.TransportOwner.html\" title=\"enum qlog::events::connectivity::TransportOwner\">TransportOwner</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/enum.ApplicationErrorCode.html\" title=\"enum qlog::events::ApplicationErrorCode\">ApplicationErrorCode</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/enum.ConnectionErrorCode.html\" title=\"enum qlog::events::ConnectionErrorCode\">ConnectionErrorCode</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/enum.CryptoError.html\" title=\"enum qlog::events::CryptoError\">CryptoError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/enum.DataRecipient.html\" title=\"enum qlog::events::DataRecipient\">DataRecipient</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/enum.EventData.html\" title=\"enum qlog::events::EventData\">EventData</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/enum.EventType.html\" title=\"enum qlog::events::EventType\">EventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/enum.GenericEventType.html\" title=\"enum qlog::events::GenericEventType\">GenericEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/enum.TimeFormat.html\" title=\"enum qlog::events::TimeFormat\">TimeFormat</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.ApplicationError.html\" title=\"enum qlog::events::h3::ApplicationError\">ApplicationError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3Owner.html\" title=\"enum qlog::events::h3::H3Owner\">H3Owner</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PriorityTargetStreamType.html\" title=\"enum qlog::events::h3::H3PriorityTargetStreamType\">H3PriorityTargetStreamType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PushDecision.html\" title=\"enum qlog::events::h3::H3PushDecision\">H3PushDecision</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3StreamType.html\" title=\"enum qlog::events::h3::H3StreamType\">H3StreamType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3EventType.html\" title=\"enum qlog::events::h3::Http3EventType\">Http3EventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3Frame.html\" title=\"enum qlog::events::h3::Http3Frame\">Http3Frame</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3FrameTypeName.html\" title=\"enum qlog::events::h3::Http3FrameTypeName\">Http3FrameTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QPackInstruction.html\" title=\"enum qlog::events::qpack::QPackInstruction\">QPackInstruction</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackEventType.html\" title=\"enum qlog::events::qpack::QpackEventType\">QpackEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentation.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentation\">QpackHeaderBlockRepresentation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentationTypeName.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName\">QpackHeaderBlockRepresentationTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackInstructionTypeName.html\" title=\"enum qlog::events::qpack::QpackInstructionTypeName\">QpackInstructionTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackOwner.html\" title=\"enum qlog::events::qpack::QpackOwner\">QpackOwner</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackStreamState.html\" title=\"enum qlog::events::qpack::QpackStreamState\">QpackStreamState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackTableType.html\" title=\"enum qlog::events::qpack::QpackTableType\">QpackTableType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackUpdateType.html\" title=\"enum qlog::events::qpack::QpackUpdateType\">QpackUpdateType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.AckedRanges.html\" title=\"enum qlog::events::quic::AckedRanges\">AckedRanges</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.CongestionStateUpdatedTrigger.html\" title=\"enum qlog::events::quic::CongestionStateUpdatedTrigger\">CongestionStateUpdatedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.ErrorSpace.html\" title=\"enum qlog::events::quic::ErrorSpace\">ErrorSpace</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.LossTimerEventType.html\" title=\"enum qlog::events::quic::LossTimerEventType\">LossTimerEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketBufferedTrigger.html\" title=\"enum qlog::events::quic::PacketBufferedTrigger\">PacketBufferedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketDroppedTrigger.html\" title=\"enum qlog::events::quic::PacketDroppedTrigger\">PacketDroppedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketLostTrigger.html\" title=\"enum qlog::events::quic::PacketLostTrigger\">PacketLostTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketNumberSpace.html\" title=\"enum qlog::events::quic::PacketNumberSpace\">PacketNumberSpace</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketReceivedTrigger.html\" title=\"enum qlog::events::quic::PacketReceivedTrigger\">PacketReceivedTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketSentTrigger.html\" title=\"enum qlog::events::quic::PacketSentTrigger\">PacketSentTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketType.html\" title=\"enum qlog::events::quic::PacketType\">PacketType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrame.html\" title=\"enum qlog::events::quic::QuicFrame\">QuicFrame</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrameTypeName.html\" title=\"enum qlog::events::quic::QuicFrameTypeName\">QuicFrameTypeName</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.RecoveryEventType.html\" title=\"enum qlog::events::quic::RecoveryEventType\">RecoveryEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.SecurityEventType.html\" title=\"enum qlog::events::quic::SecurityEventType\">SecurityEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamSide.html\" title=\"enum qlog::events::quic::StreamSide\">StreamSide</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamState.html\" title=\"enum qlog::events::quic::StreamState\">StreamState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamType.html\" title=\"enum qlog::events::quic::StreamType\">StreamType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TimerType.html\" title=\"enum qlog::events::quic::TimerType\">TimerType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportError.html\" title=\"enum qlog::events::quic::TransportError\">TransportError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportEventType.html\" title=\"enum qlog::events::quic::TransportEventType\">TransportEventType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyType.html\" title=\"enum qlog::events::security::KeyType\">KeyType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyUpdateOrRetiredTrigger.html\" title=\"enum qlog::events::security::KeyUpdateOrRetiredTrigger\">KeyUpdateOrRetiredTrigger</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"qlog/streamer/enum.StreamerState.html\" title=\"enum qlog::streamer::StreamerState\">StreamerState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionClosed.html\" title=\"struct qlog::events::connectivity::ConnectionClosed\">ConnectionClosed</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionIdUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionIdUpdated\">ConnectionIdUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStarted.html\" title=\"struct qlog::events::connectivity::ConnectionStarted\">ConnectionStarted</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStateUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionStateUpdated\">ConnectionStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.MtuUpdated.html\" title=\"struct qlog::events::connectivity::MtuUpdated\">MtuUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ServerListening.html\" title=\"struct qlog::events::connectivity::ServerListening\">ServerListening</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.SpinBitUpdated.html\" title=\"struct qlog::events::connectivity::SpinBitUpdated\">SpinBitUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameCreated.html\" title=\"struct qlog::events::h3::H3FrameCreated\">H3FrameCreated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameParsed.html\" title=\"struct qlog::events::h3::H3FrameParsed\">H3FrameParsed</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersRestored.html\" title=\"struct qlog::events::h3::H3ParametersRestored\">H3ParametersRestored</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersSet.html\" title=\"struct qlog::events::h3::H3ParametersSet\">H3ParametersSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3PushResolved.html\" title=\"struct qlog::events::h3::H3PushResolved\">H3PushResolved</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3StreamTypeSet.html\" title=\"struct qlog::events::h3::H3StreamTypeSet\">H3StreamTypeSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.HttpHeader.html\" title=\"struct qlog::events::h3::HttpHeader\">HttpHeader</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.Setting.html\" title=\"struct qlog::events::h3::Setting\">Setting</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableEntry.html\" title=\"struct qlog::events::qpack::QpackDynamicTableEntry\">QpackDynamicTableEntry</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableUpdated.html\" title=\"struct qlog::events::qpack::QpackDynamicTableUpdated\">QpackDynamicTableUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeaderBlockPrefix.html\" title=\"struct qlog::events::qpack::QpackHeaderBlockPrefix\">QpackHeaderBlockPrefix</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersDecoded.html\" title=\"struct qlog::events::qpack::QpackHeadersDecoded\">QpackHeadersDecoded</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersEncoded.html\" title=\"struct qlog::events::qpack::QpackHeadersEncoded\">QpackHeadersEncoded</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionCreated.html\" title=\"struct qlog::events::qpack::QpackInstructionCreated\">QpackInstructionCreated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionParsed.html\" title=\"struct qlog::events::qpack::QpackInstructionParsed\">QpackInstructionParsed</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStateUpdated\">QpackStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStreamStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStreamStateUpdated\">QpackStreamStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.AlpnInformation.html\" title=\"struct qlog::events::quic::AlpnInformation\">AlpnInformation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.CongestionStateUpdated.html\" title=\"struct qlog::events::quic::CongestionStateUpdated\">CongestionStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DataMoved.html\" title=\"struct qlog::events::quic::DataMoved\">DataMoved</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramDropped.html\" title=\"struct qlog::events::quic::DatagramDropped\">DatagramDropped</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsReceived.html\" title=\"struct qlog::events::quic::DatagramsReceived\">DatagramsReceived</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsSent.html\" title=\"struct qlog::events::quic::DatagramsSent\">DatagramsSent</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.FramesProcessed.html\" title=\"struct qlog::events::quic::FramesProcessed\">FramesProcessed</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.LossTimerUpdated.html\" title=\"struct qlog::events::quic::LossTimerUpdated\">LossTimerUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MarkedForRetransmit.html\" title=\"struct qlog::events::quic::MarkedForRetransmit\">MarkedForRetransmit</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MetricsUpdated.html\" title=\"struct qlog::events::quic::MetricsUpdated\">MetricsUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketBuffered.html\" title=\"struct qlog::events::quic::PacketBuffered\">PacketBuffered</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketDropped.html\" title=\"struct qlog::events::quic::PacketDropped\">PacketDropped</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketHeader.html\" title=\"struct qlog::events::quic::PacketHeader\">PacketHeader</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketLost.html\" title=\"struct qlog::events::quic::PacketLost\">PacketLost</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketReceived.html\" title=\"struct qlog::events::quic::PacketReceived\">PacketReceived</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketSent.html\" title=\"struct qlog::events::quic::PacketSent\">PacketSent</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketsAcked.html\" title=\"struct qlog::events::quic::PacketsAcked\">PacketsAcked</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PreferredAddress.html\" title=\"struct qlog::events::quic::PreferredAddress\">PreferredAddress</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.RecoveryParametersSet.html\" title=\"struct qlog::events::quic::RecoveryParametersSet\">RecoveryParametersSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.StreamStateUpdated.html\" title=\"struct qlog::events::quic::StreamStateUpdated\">StreamStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersRestored.html\" title=\"struct qlog::events::quic::TransportParametersRestored\">TransportParametersRestored</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersSet.html\" title=\"struct qlog::events::quic::TransportParametersSet\">TransportParametersSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.VersionInformation.html\" title=\"struct qlog::events::quic::VersionInformation\">VersionInformation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyDiscarded.html\" title=\"struct qlog::events::security::KeyDiscarded\">KeyDiscarded</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyUpdated.html\" title=\"struct qlog::events::security::KeyUpdated\">KeyUpdated</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/events/struct.RawInfo.html\" title=\"struct qlog::events::RawInfo\">RawInfo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/struct.CommonFields.html\" title=\"struct qlog::CommonFields\">CommonFields</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/struct.Configuration.html\" title=\"struct qlog::Configuration\">Configuration</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/struct.Token.html\" title=\"struct qlog::Token\">Token</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/struct.Trace.html\" title=\"struct qlog::Trace\">Trace</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/struct.TraceSeq.html\" title=\"struct qlog::TraceSeq\">TraceSeq</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"qlog/struct.VantagePoint.html\" title=\"struct qlog::VantagePoint\">VantagePoint</a>"]],
+"quiche":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"quiche/enum.CongestionControlAlgorithm.html\" title=\"enum quiche::CongestionControlAlgorithm\">CongestionControlAlgorithm</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"quiche/enum.Error.html\" title=\"enum quiche::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"quiche/enum.PathEvent.html\" title=\"enum quiche::PathEvent\">PathEvent</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"quiche/enum.Shutdown.html\" title=\"enum quiche::Shutdown\">Shutdown</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"quiche/enum.Type.html\" title=\"enum quiche::Type\">Type</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"quiche/h3/enum.Error.html\" title=\"enum quiche::h3::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"quiche/h3/enum.Event.html\" title=\"enum quiche::h3::Event\">Event</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"quiche/h3/struct.Header.html\" title=\"struct quiche::h3::Header\">Header</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"quiche/h3/struct.Priority.html\" title=\"struct quiche::h3::Priority\">Priority</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionError.html\" title=\"struct quiche::ConnectionError\">ConnectionError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"quiche/struct.RecvInfo.html\" title=\"struct quiche::RecvInfo\">RecvInfo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"quiche/struct.SendInfo.html\" title=\"struct quiche::SendInfo\">SendInfo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"quiche/struct.TransportParams.html\" title=\"struct quiche::TransportParams\">TransportParams</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"quiche/h3/struct.HeaderRef.html\" title=\"struct quiche::h3::HeaderRef\">HeaderRef</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"quiche/struct.Header.html\" title=\"struct quiche::Header\">Header</a>&lt;'a&gt;"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/marker/trait.Sync.js b/trait.impl/core/marker/trait.Sync.js
new file mode 100644
index 0000000..bf7b1f0
--- /dev/null
+++ b/trait.impl/core/marker/trait.Sync.js
@@ -0,0 +1,6 @@
+(function() {var implementors = {
+"octets":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"octets/struct.BufferTooShortError.html\" title=\"struct octets::BufferTooShortError\">BufferTooShortError</a>",1,["octets::BufferTooShortError"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"octets/struct.Octets.html\" title=\"struct octets::Octets\">Octets</a>&lt;'a&gt;",1,["octets::Octets"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"octets/struct.OctetsMut.html\" title=\"struct octets::OctetsMut\">OctetsMut</a>&lt;'a&gt;",1,["octets::OctetsMut"]]],
+"qlog":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/enum.Error.html\" title=\"enum qlog::Error\">Error</a>",1,["qlog::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/enum.ImportanceLogLevel.html\" title=\"enum qlog::ImportanceLogLevel\">ImportanceLogLevel</a>",1,["qlog::ImportanceLogLevel"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/enum.TokenType.html\" title=\"enum qlog::TokenType\">TokenType</a>",1,["qlog::TokenType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/enum.VantagePointType.html\" title=\"enum qlog::VantagePointType\">VantagePointType</a>",1,["qlog::VantagePointType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionClosedTrigger.html\" title=\"enum qlog::events::connectivity::ConnectionClosedTrigger\">ConnectionClosedTrigger</a>",1,["qlog::events::connectivity::ConnectionClosedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionState.html\" title=\"enum qlog::events::connectivity::ConnectionState\">ConnectionState</a>",1,["qlog::events::connectivity::ConnectionState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectivityEventType.html\" title=\"enum qlog::events::connectivity::ConnectivityEventType\">ConnectivityEventType</a>",1,["qlog::events::connectivity::ConnectivityEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.TransportOwner.html\" title=\"enum qlog::events::connectivity::TransportOwner\">TransportOwner</a>",1,["qlog::events::connectivity::TransportOwner"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/enum.ApplicationErrorCode.html\" title=\"enum qlog::events::ApplicationErrorCode\">ApplicationErrorCode</a>",1,["qlog::events::ApplicationErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/enum.ConnectionErrorCode.html\" title=\"enum qlog::events::ConnectionErrorCode\">ConnectionErrorCode</a>",1,["qlog::events::ConnectionErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/enum.CryptoError.html\" title=\"enum qlog::events::CryptoError\">CryptoError</a>",1,["qlog::events::CryptoError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/enum.DataRecipient.html\" title=\"enum qlog::events::DataRecipient\">DataRecipient</a>",1,["qlog::events::DataRecipient"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/enum.EventCategory.html\" title=\"enum qlog::events::EventCategory\">EventCategory</a>",1,["qlog::events::EventCategory"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/enum.EventData.html\" title=\"enum qlog::events::EventData\">EventData</a>",1,["qlog::events::EventData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/enum.EventImportance.html\" title=\"enum qlog::events::EventImportance\">EventImportance</a>",1,["qlog::events::EventImportance"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/enum.EventType.html\" title=\"enum qlog::events::EventType\">EventType</a>",1,["qlog::events::EventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/enum.GenericEventType.html\" title=\"enum qlog::events::GenericEventType\">GenericEventType</a>",1,["qlog::events::GenericEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/enum.TimeFormat.html\" title=\"enum qlog::events::TimeFormat\">TimeFormat</a>",1,["qlog::events::TimeFormat"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.ApplicationError.html\" title=\"enum qlog::events::h3::ApplicationError\">ApplicationError</a>",1,["qlog::events::h3::ApplicationError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3Owner.html\" title=\"enum qlog::events::h3::H3Owner\">H3Owner</a>",1,["qlog::events::h3::H3Owner"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PriorityTargetStreamType.html\" title=\"enum qlog::events::h3::H3PriorityTargetStreamType\">H3PriorityTargetStreamType</a>",1,["qlog::events::h3::H3PriorityTargetStreamType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PushDecision.html\" title=\"enum qlog::events::h3::H3PushDecision\">H3PushDecision</a>",1,["qlog::events::h3::H3PushDecision"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3StreamType.html\" title=\"enum qlog::events::h3::H3StreamType\">H3StreamType</a>",1,["qlog::events::h3::H3StreamType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3EventType.html\" title=\"enum qlog::events::h3::Http3EventType\">Http3EventType</a>",1,["qlog::events::h3::Http3EventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3Frame.html\" title=\"enum qlog::events::h3::Http3Frame\">Http3Frame</a>",1,["qlog::events::h3::Http3Frame"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3FrameTypeName.html\" title=\"enum qlog::events::h3::Http3FrameTypeName\">Http3FrameTypeName</a>",1,["qlog::events::h3::Http3FrameTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QPackInstruction.html\" title=\"enum qlog::events::qpack::QPackInstruction\">QPackInstruction</a>",1,["qlog::events::qpack::QPackInstruction"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackEventType.html\" title=\"enum qlog::events::qpack::QpackEventType\">QpackEventType</a>",1,["qlog::events::qpack::QpackEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentation.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentation\">QpackHeaderBlockRepresentation</a>",1,["qlog::events::qpack::QpackHeaderBlockRepresentation"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentationTypeName.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName\">QpackHeaderBlockRepresentationTypeName</a>",1,["qlog::events::qpack::QpackHeaderBlockRepresentationTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackInstructionTypeName.html\" title=\"enum qlog::events::qpack::QpackInstructionTypeName\">QpackInstructionTypeName</a>",1,["qlog::events::qpack::QpackInstructionTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackOwner.html\" title=\"enum qlog::events::qpack::QpackOwner\">QpackOwner</a>",1,["qlog::events::qpack::QpackOwner"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackStreamState.html\" title=\"enum qlog::events::qpack::QpackStreamState\">QpackStreamState</a>",1,["qlog::events::qpack::QpackStreamState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackTableType.html\" title=\"enum qlog::events::qpack::QpackTableType\">QpackTableType</a>",1,["qlog::events::qpack::QpackTableType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackUpdateType.html\" title=\"enum qlog::events::qpack::QpackUpdateType\">QpackUpdateType</a>",1,["qlog::events::qpack::QpackUpdateType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.AckedRanges.html\" title=\"enum qlog::events::quic::AckedRanges\">AckedRanges</a>",1,["qlog::events::quic::AckedRanges"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.CongestionStateUpdatedTrigger.html\" title=\"enum qlog::events::quic::CongestionStateUpdatedTrigger\">CongestionStateUpdatedTrigger</a>",1,["qlog::events::quic::CongestionStateUpdatedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.ErrorSpace.html\" title=\"enum qlog::events::quic::ErrorSpace\">ErrorSpace</a>",1,["qlog::events::quic::ErrorSpace"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.LossTimerEventType.html\" title=\"enum qlog::events::quic::LossTimerEventType\">LossTimerEventType</a>",1,["qlog::events::quic::LossTimerEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketBufferedTrigger.html\" title=\"enum qlog::events::quic::PacketBufferedTrigger\">PacketBufferedTrigger</a>",1,["qlog::events::quic::PacketBufferedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketDroppedTrigger.html\" title=\"enum qlog::events::quic::PacketDroppedTrigger\">PacketDroppedTrigger</a>",1,["qlog::events::quic::PacketDroppedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketLostTrigger.html\" title=\"enum qlog::events::quic::PacketLostTrigger\">PacketLostTrigger</a>",1,["qlog::events::quic::PacketLostTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketNumberSpace.html\" title=\"enum qlog::events::quic::PacketNumberSpace\">PacketNumberSpace</a>",1,["qlog::events::quic::PacketNumberSpace"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketReceivedTrigger.html\" title=\"enum qlog::events::quic::PacketReceivedTrigger\">PacketReceivedTrigger</a>",1,["qlog::events::quic::PacketReceivedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketSentTrigger.html\" title=\"enum qlog::events::quic::PacketSentTrigger\">PacketSentTrigger</a>",1,["qlog::events::quic::PacketSentTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketType.html\" title=\"enum qlog::events::quic::PacketType\">PacketType</a>",1,["qlog::events::quic::PacketType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrame.html\" title=\"enum qlog::events::quic::QuicFrame\">QuicFrame</a>",1,["qlog::events::quic::QuicFrame"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrameTypeName.html\" title=\"enum qlog::events::quic::QuicFrameTypeName\">QuicFrameTypeName</a>",1,["qlog::events::quic::QuicFrameTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.RecoveryEventType.html\" title=\"enum qlog::events::quic::RecoveryEventType\">RecoveryEventType</a>",1,["qlog::events::quic::RecoveryEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.SecurityEventType.html\" title=\"enum qlog::events::quic::SecurityEventType\">SecurityEventType</a>",1,["qlog::events::quic::SecurityEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamSide.html\" title=\"enum qlog::events::quic::StreamSide\">StreamSide</a>",1,["qlog::events::quic::StreamSide"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamState.html\" title=\"enum qlog::events::quic::StreamState\">StreamState</a>",1,["qlog::events::quic::StreamState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamType.html\" title=\"enum qlog::events::quic::StreamType\">StreamType</a>",1,["qlog::events::quic::StreamType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TimerType.html\" title=\"enum qlog::events::quic::TimerType\">TimerType</a>",1,["qlog::events::quic::TimerType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportError.html\" title=\"enum qlog::events::quic::TransportError\">TransportError</a>",1,["qlog::events::quic::TransportError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportEventType.html\" title=\"enum qlog::events::quic::TransportEventType\">TransportEventType</a>",1,["qlog::events::quic::TransportEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyType.html\" title=\"enum qlog::events::security::KeyType\">KeyType</a>",1,["qlog::events::security::KeyType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyUpdateOrRetiredTrigger.html\" title=\"enum qlog::events::security::KeyUpdateOrRetiredTrigger\">KeyUpdateOrRetiredTrigger</a>",1,["qlog::events::security::KeyUpdateOrRetiredTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/reader/enum.Event.html\" title=\"enum qlog::reader::Event\">Event</a>",1,["qlog::reader::Event"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"qlog/streamer/enum.StreamerState.html\" title=\"enum qlog::streamer::StreamerState\">StreamerState</a>",1,["qlog::streamer::StreamerState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionClosed.html\" title=\"struct qlog::events::connectivity::ConnectionClosed\">ConnectionClosed</a>",1,["qlog::events::connectivity::ConnectionClosed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionIdUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionIdUpdated\">ConnectionIdUpdated</a>",1,["qlog::events::connectivity::ConnectionIdUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStarted.html\" title=\"struct qlog::events::connectivity::ConnectionStarted\">ConnectionStarted</a>",1,["qlog::events::connectivity::ConnectionStarted"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStateUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionStateUpdated\">ConnectionStateUpdated</a>",1,["qlog::events::connectivity::ConnectionStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.MtuUpdated.html\" title=\"struct qlog::events::connectivity::MtuUpdated\">MtuUpdated</a>",1,["qlog::events::connectivity::MtuUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ServerListening.html\" title=\"struct qlog::events::connectivity::ServerListening\">ServerListening</a>",1,["qlog::events::connectivity::ServerListening"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.SpinBitUpdated.html\" title=\"struct qlog::events::connectivity::SpinBitUpdated\">SpinBitUpdated</a>",1,["qlog::events::connectivity::SpinBitUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameCreated.html\" title=\"struct qlog::events::h3::H3FrameCreated\">H3FrameCreated</a>",1,["qlog::events::h3::H3FrameCreated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameParsed.html\" title=\"struct qlog::events::h3::H3FrameParsed\">H3FrameParsed</a>",1,["qlog::events::h3::H3FrameParsed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersRestored.html\" title=\"struct qlog::events::h3::H3ParametersRestored\">H3ParametersRestored</a>",1,["qlog::events::h3::H3ParametersRestored"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersSet.html\" title=\"struct qlog::events::h3::H3ParametersSet\">H3ParametersSet</a>",1,["qlog::events::h3::H3ParametersSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3PushResolved.html\" title=\"struct qlog::events::h3::H3PushResolved\">H3PushResolved</a>",1,["qlog::events::h3::H3PushResolved"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3StreamTypeSet.html\" title=\"struct qlog::events::h3::H3StreamTypeSet\">H3StreamTypeSet</a>",1,["qlog::events::h3::H3StreamTypeSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.HttpHeader.html\" title=\"struct qlog::events::h3::HttpHeader\">HttpHeader</a>",1,["qlog::events::h3::HttpHeader"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.Setting.html\" title=\"struct qlog::events::h3::Setting\">Setting</a>",1,["qlog::events::h3::Setting"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableEntry.html\" title=\"struct qlog::events::qpack::QpackDynamicTableEntry\">QpackDynamicTableEntry</a>",1,["qlog::events::qpack::QpackDynamicTableEntry"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableUpdated.html\" title=\"struct qlog::events::qpack::QpackDynamicTableUpdated\">QpackDynamicTableUpdated</a>",1,["qlog::events::qpack::QpackDynamicTableUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeaderBlockPrefix.html\" title=\"struct qlog::events::qpack::QpackHeaderBlockPrefix\">QpackHeaderBlockPrefix</a>",1,["qlog::events::qpack::QpackHeaderBlockPrefix"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersDecoded.html\" title=\"struct qlog::events::qpack::QpackHeadersDecoded\">QpackHeadersDecoded</a>",1,["qlog::events::qpack::QpackHeadersDecoded"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersEncoded.html\" title=\"struct qlog::events::qpack::QpackHeadersEncoded\">QpackHeadersEncoded</a>",1,["qlog::events::qpack::QpackHeadersEncoded"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionCreated.html\" title=\"struct qlog::events::qpack::QpackInstructionCreated\">QpackInstructionCreated</a>",1,["qlog::events::qpack::QpackInstructionCreated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionParsed.html\" title=\"struct qlog::events::qpack::QpackInstructionParsed\">QpackInstructionParsed</a>",1,["qlog::events::qpack::QpackInstructionParsed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStateUpdated\">QpackStateUpdated</a>",1,["qlog::events::qpack::QpackStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStreamStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStreamStateUpdated\">QpackStreamStateUpdated</a>",1,["qlog::events::qpack::QpackStreamStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.AlpnInformation.html\" title=\"struct qlog::events::quic::AlpnInformation\">AlpnInformation</a>",1,["qlog::events::quic::AlpnInformation"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.CongestionStateUpdated.html\" title=\"struct qlog::events::quic::CongestionStateUpdated\">CongestionStateUpdated</a>",1,["qlog::events::quic::CongestionStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DataMoved.html\" title=\"struct qlog::events::quic::DataMoved\">DataMoved</a>",1,["qlog::events::quic::DataMoved"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramDropped.html\" title=\"struct qlog::events::quic::DatagramDropped\">DatagramDropped</a>",1,["qlog::events::quic::DatagramDropped"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsReceived.html\" title=\"struct qlog::events::quic::DatagramsReceived\">DatagramsReceived</a>",1,["qlog::events::quic::DatagramsReceived"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsSent.html\" title=\"struct qlog::events::quic::DatagramsSent\">DatagramsSent</a>",1,["qlog::events::quic::DatagramsSent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.FramesProcessed.html\" title=\"struct qlog::events::quic::FramesProcessed\">FramesProcessed</a>",1,["qlog::events::quic::FramesProcessed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.LossTimerUpdated.html\" title=\"struct qlog::events::quic::LossTimerUpdated\">LossTimerUpdated</a>",1,["qlog::events::quic::LossTimerUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MarkedForRetransmit.html\" title=\"struct qlog::events::quic::MarkedForRetransmit\">MarkedForRetransmit</a>",1,["qlog::events::quic::MarkedForRetransmit"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MetricsUpdated.html\" title=\"struct qlog::events::quic::MetricsUpdated\">MetricsUpdated</a>",1,["qlog::events::quic::MetricsUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketBuffered.html\" title=\"struct qlog::events::quic::PacketBuffered\">PacketBuffered</a>",1,["qlog::events::quic::PacketBuffered"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketDropped.html\" title=\"struct qlog::events::quic::PacketDropped\">PacketDropped</a>",1,["qlog::events::quic::PacketDropped"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketHeader.html\" title=\"struct qlog::events::quic::PacketHeader\">PacketHeader</a>",1,["qlog::events::quic::PacketHeader"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketLost.html\" title=\"struct qlog::events::quic::PacketLost\">PacketLost</a>",1,["qlog::events::quic::PacketLost"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketReceived.html\" title=\"struct qlog::events::quic::PacketReceived\">PacketReceived</a>",1,["qlog::events::quic::PacketReceived"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketSent.html\" title=\"struct qlog::events::quic::PacketSent\">PacketSent</a>",1,["qlog::events::quic::PacketSent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketsAcked.html\" title=\"struct qlog::events::quic::PacketsAcked\">PacketsAcked</a>",1,["qlog::events::quic::PacketsAcked"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PreferredAddress.html\" title=\"struct qlog::events::quic::PreferredAddress\">PreferredAddress</a>",1,["qlog::events::quic::PreferredAddress"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.RecoveryParametersSet.html\" title=\"struct qlog::events::quic::RecoveryParametersSet\">RecoveryParametersSet</a>",1,["qlog::events::quic::RecoveryParametersSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.StreamStateUpdated.html\" title=\"struct qlog::events::quic::StreamStateUpdated\">StreamStateUpdated</a>",1,["qlog::events::quic::StreamStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersRestored.html\" title=\"struct qlog::events::quic::TransportParametersRestored\">TransportParametersRestored</a>",1,["qlog::events::quic::TransportParametersRestored"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersSet.html\" title=\"struct qlog::events::quic::TransportParametersSet\">TransportParametersSet</a>",1,["qlog::events::quic::TransportParametersSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.VersionInformation.html\" title=\"struct qlog::events::quic::VersionInformation\">VersionInformation</a>",1,["qlog::events::quic::VersionInformation"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyDiscarded.html\" title=\"struct qlog::events::security::KeyDiscarded\">KeyDiscarded</a>",1,["qlog::events::security::KeyDiscarded"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyUpdated.html\" title=\"struct qlog::events::security::KeyUpdated\">KeyUpdated</a>",1,["qlog::events::security::KeyUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/struct.Event.html\" title=\"struct qlog::events::Event\">Event</a>",1,["qlog::events::Event"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/struct.JsonEvent.html\" title=\"struct qlog::events::JsonEvent\">JsonEvent</a>",1,["qlog::events::JsonEvent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/events/struct.RawInfo.html\" title=\"struct qlog::events::RawInfo\">RawInfo</a>",1,["qlog::events::RawInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/reader/struct.QlogSeqReader.html\" title=\"struct qlog::reader::QlogSeqReader\">QlogSeqReader</a>",1,["qlog::reader::QlogSeqReader"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/streamer/struct.QlogStreamer.html\" title=\"struct qlog::streamer::QlogStreamer\">QlogStreamer</a>",1,["qlog::streamer::QlogStreamer"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/struct.CommonFields.html\" title=\"struct qlog::CommonFields\">CommonFields</a>",1,["qlog::CommonFields"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/struct.Configuration.html\" title=\"struct qlog::Configuration\">Configuration</a>",1,["qlog::Configuration"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/struct.Qlog.html\" title=\"struct qlog::Qlog\">Qlog</a>",1,["qlog::Qlog"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/struct.QlogSeq.html\" title=\"struct qlog::QlogSeq\">QlogSeq</a>",1,["qlog::QlogSeq"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/struct.Token.html\" title=\"struct qlog::Token\">Token</a>",1,["qlog::Token"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/struct.Trace.html\" title=\"struct qlog::Trace\">Trace</a>",1,["qlog::Trace"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/struct.TraceSeq.html\" title=\"struct qlog::TraceSeq\">TraceSeq</a>",1,["qlog::TraceSeq"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/struct.VantagePoint.html\" title=\"struct qlog::VantagePoint\">VantagePoint</a>",1,["qlog::VantagePoint"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"qlog/struct.HexSlice.html\" title=\"struct qlog::HexSlice\">HexSlice</a>&lt;'a&gt;",1,["qlog::HexSlice"]]],
+"quiche":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"quiche/enum.CongestionControlAlgorithm.html\" title=\"enum quiche::CongestionControlAlgorithm\">CongestionControlAlgorithm</a>",1,["quiche::recovery::CongestionControlAlgorithm"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"quiche/enum.Error.html\" title=\"enum quiche::Error\">Error</a>",1,["quiche::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"quiche/enum.PathEvent.html\" title=\"enum quiche::PathEvent\">PathEvent</a>",1,["quiche::path::PathEvent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"quiche/enum.QlogLevel.html\" title=\"enum quiche::QlogLevel\">QlogLevel</a>",1,["quiche::QlogLevel"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"quiche/enum.Shutdown.html\" title=\"enum quiche::Shutdown\">Shutdown</a>",1,["quiche::Shutdown"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"quiche/enum.Type.html\" title=\"enum quiche::Type\">Type</a>",1,["quiche::packet::Type"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"quiche/enum.WireErrorCode.html\" title=\"enum quiche::WireErrorCode\">WireErrorCode</a>",1,["quiche::WireErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"quiche/h3/enum.Error.html\" title=\"enum quiche::h3::Error\">Error</a>",1,["quiche::h3::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"quiche/h3/enum.Event.html\" title=\"enum quiche::h3::Event\">Event</a>",1,["quiche::h3::Event"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"quiche/h3/enum.WireErrorCode.html\" title=\"enum quiche::h3::WireErrorCode\">WireErrorCode</a>",1,["quiche::h3::WireErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche/h3/struct.Config.html\" title=\"struct quiche::h3::Config\">Config</a>",1,["quiche::h3::Config"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche/h3/struct.Connection.html\" title=\"struct quiche::h3::Connection\">Connection</a>",1,["quiche::h3::Connection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche/h3/struct.Header.html\" title=\"struct quiche::h3::Header\">Header</a>",1,["quiche::h3::Header"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche/h3/struct.Priority.html\" title=\"struct quiche::h3::Priority\">Priority</a>",1,["quiche::h3::Priority"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche/struct.Config.html\" title=\"struct quiche::Config\">Config</a>",1,["quiche::Config"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche/struct.Connection.html\" title=\"struct quiche::Connection\">Connection</a>",1,["quiche::Connection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionError.html\" title=\"struct quiche::ConnectionError\">ConnectionError</a>",1,["quiche::ConnectionError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche/struct.PathStats.html\" title=\"struct quiche::PathStats\">PathStats</a>",1,["quiche::path::PathStats"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche/struct.RecvInfo.html\" title=\"struct quiche::RecvInfo\">RecvInfo</a>",1,["quiche::RecvInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche/struct.SendInfo.html\" title=\"struct quiche::SendInfo\">SendInfo</a>",1,["quiche::SendInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche/struct.SocketAddrIter.html\" title=\"struct quiche::SocketAddrIter\">SocketAddrIter</a>",1,["quiche::path::SocketAddrIter"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche/struct.Stats.html\" title=\"struct quiche::Stats\">Stats</a>",1,["quiche::Stats"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche/struct.StreamIter.html\" title=\"struct quiche::StreamIter\">StreamIter</a>",1,["quiche::stream::StreamIter"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche/struct.TransportParams.html\" title=\"struct quiche::TransportParams\">TransportParams</a>",1,["quiche::TransportParams"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche/h3/struct.HeaderRef.html\" title=\"struct quiche::h3::HeaderRef\">HeaderRef</a>&lt;'a&gt;",1,["quiche::h3::HeaderRef"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionId.html\" title=\"struct quiche::ConnectionId\">ConnectionId</a>&lt;'a&gt;",1,["quiche::packet::ConnectionId"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche/struct.Header.html\" title=\"struct quiche::Header\">Header</a>&lt;'a&gt;",1,["quiche::packet::Header"]]],
+"quiche_apps":[["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Client.html\" title=\"struct quiche_apps::common::Client\">Client</a>",1,["quiche_apps::common::Client"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http09Conn.html\" title=\"struct quiche_apps::common::Http09Conn\">Http09Conn</a>",1,["quiche_apps::common::Http09Conn"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http3Conn.html\" title=\"struct quiche_apps::common::Http3Conn\">Http3Conn</a>",1,["quiche_apps::common::Http3Conn"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"quiche_apps/client/enum.ClientError.html\" title=\"enum quiche_apps::client::ClientError\">ClientError</a>",1,["quiche_apps::client::ClientError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.ClientArgs.html\" title=\"struct quiche_apps::args::ClientArgs\">ClientArgs</a>",1,["quiche_apps::args::ClientArgs"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.CommonArgs.html\" title=\"struct quiche_apps::args::CommonArgs\">CommonArgs</a>",1,["quiche_apps::args::CommonArgs"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.ServerArgs.html\" title=\"struct quiche_apps::args::ServerArgs\">ServerArgs</a>",1,["quiche_apps::args::ServerArgs"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http09Request.html\" title=\"struct quiche_apps::common::Http09Request\">Http09Request</a>",1,["quiche_apps::common::Http09Request"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http3DgramSender.html\" title=\"struct quiche_apps::common::Http3DgramSender\">Http3DgramSender</a>",1,["quiche_apps::common::Http3DgramSender"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.PartialRequest.html\" title=\"struct quiche_apps::common::PartialRequest\">PartialRequest</a>",1,["quiche_apps::common::PartialRequest"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.PartialResponse.html\" title=\"struct quiche_apps::common::PartialResponse\">PartialResponse</a>",1,["quiche_apps::common::PartialResponse"]]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/marker/trait.Unpin.js b/trait.impl/core/marker/trait.Unpin.js
new file mode 100644
index 0000000..21d7b55
--- /dev/null
+++ b/trait.impl/core/marker/trait.Unpin.js
@@ -0,0 +1,6 @@
+(function() {var implementors = {
+"octets":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"octets/struct.BufferTooShortError.html\" title=\"struct octets::BufferTooShortError\">BufferTooShortError</a>",1,["octets::BufferTooShortError"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"octets/struct.Octets.html\" title=\"struct octets::Octets\">Octets</a>&lt;'a&gt;",1,["octets::Octets"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"octets/struct.OctetsMut.html\" title=\"struct octets::OctetsMut\">OctetsMut</a>&lt;'a&gt;",1,["octets::OctetsMut"]]],
+"qlog":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/enum.Error.html\" title=\"enum qlog::Error\">Error</a>",1,["qlog::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/enum.ImportanceLogLevel.html\" title=\"enum qlog::ImportanceLogLevel\">ImportanceLogLevel</a>",1,["qlog::ImportanceLogLevel"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/enum.TokenType.html\" title=\"enum qlog::TokenType\">TokenType</a>",1,["qlog::TokenType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/enum.VantagePointType.html\" title=\"enum qlog::VantagePointType\">VantagePointType</a>",1,["qlog::VantagePointType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionClosedTrigger.html\" title=\"enum qlog::events::connectivity::ConnectionClosedTrigger\">ConnectionClosedTrigger</a>",1,["qlog::events::connectivity::ConnectionClosedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionState.html\" title=\"enum qlog::events::connectivity::ConnectionState\">ConnectionState</a>",1,["qlog::events::connectivity::ConnectionState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectivityEventType.html\" title=\"enum qlog::events::connectivity::ConnectivityEventType\">ConnectivityEventType</a>",1,["qlog::events::connectivity::ConnectivityEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.TransportOwner.html\" title=\"enum qlog::events::connectivity::TransportOwner\">TransportOwner</a>",1,["qlog::events::connectivity::TransportOwner"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/enum.ApplicationErrorCode.html\" title=\"enum qlog::events::ApplicationErrorCode\">ApplicationErrorCode</a>",1,["qlog::events::ApplicationErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/enum.ConnectionErrorCode.html\" title=\"enum qlog::events::ConnectionErrorCode\">ConnectionErrorCode</a>",1,["qlog::events::ConnectionErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/enum.CryptoError.html\" title=\"enum qlog::events::CryptoError\">CryptoError</a>",1,["qlog::events::CryptoError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/enum.DataRecipient.html\" title=\"enum qlog::events::DataRecipient\">DataRecipient</a>",1,["qlog::events::DataRecipient"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/enum.EventCategory.html\" title=\"enum qlog::events::EventCategory\">EventCategory</a>",1,["qlog::events::EventCategory"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/enum.EventData.html\" title=\"enum qlog::events::EventData\">EventData</a>",1,["qlog::events::EventData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/enum.EventImportance.html\" title=\"enum qlog::events::EventImportance\">EventImportance</a>",1,["qlog::events::EventImportance"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/enum.EventType.html\" title=\"enum qlog::events::EventType\">EventType</a>",1,["qlog::events::EventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/enum.GenericEventType.html\" title=\"enum qlog::events::GenericEventType\">GenericEventType</a>",1,["qlog::events::GenericEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/enum.TimeFormat.html\" title=\"enum qlog::events::TimeFormat\">TimeFormat</a>",1,["qlog::events::TimeFormat"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.ApplicationError.html\" title=\"enum qlog::events::h3::ApplicationError\">ApplicationError</a>",1,["qlog::events::h3::ApplicationError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3Owner.html\" title=\"enum qlog::events::h3::H3Owner\">H3Owner</a>",1,["qlog::events::h3::H3Owner"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PriorityTargetStreamType.html\" title=\"enum qlog::events::h3::H3PriorityTargetStreamType\">H3PriorityTargetStreamType</a>",1,["qlog::events::h3::H3PriorityTargetStreamType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PushDecision.html\" title=\"enum qlog::events::h3::H3PushDecision\">H3PushDecision</a>",1,["qlog::events::h3::H3PushDecision"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3StreamType.html\" title=\"enum qlog::events::h3::H3StreamType\">H3StreamType</a>",1,["qlog::events::h3::H3StreamType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3EventType.html\" title=\"enum qlog::events::h3::Http3EventType\">Http3EventType</a>",1,["qlog::events::h3::Http3EventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3Frame.html\" title=\"enum qlog::events::h3::Http3Frame\">Http3Frame</a>",1,["qlog::events::h3::Http3Frame"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3FrameTypeName.html\" title=\"enum qlog::events::h3::Http3FrameTypeName\">Http3FrameTypeName</a>",1,["qlog::events::h3::Http3FrameTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QPackInstruction.html\" title=\"enum qlog::events::qpack::QPackInstruction\">QPackInstruction</a>",1,["qlog::events::qpack::QPackInstruction"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackEventType.html\" title=\"enum qlog::events::qpack::QpackEventType\">QpackEventType</a>",1,["qlog::events::qpack::QpackEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentation.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentation\">QpackHeaderBlockRepresentation</a>",1,["qlog::events::qpack::QpackHeaderBlockRepresentation"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentationTypeName.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName\">QpackHeaderBlockRepresentationTypeName</a>",1,["qlog::events::qpack::QpackHeaderBlockRepresentationTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackInstructionTypeName.html\" title=\"enum qlog::events::qpack::QpackInstructionTypeName\">QpackInstructionTypeName</a>",1,["qlog::events::qpack::QpackInstructionTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackOwner.html\" title=\"enum qlog::events::qpack::QpackOwner\">QpackOwner</a>",1,["qlog::events::qpack::QpackOwner"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackStreamState.html\" title=\"enum qlog::events::qpack::QpackStreamState\">QpackStreamState</a>",1,["qlog::events::qpack::QpackStreamState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackTableType.html\" title=\"enum qlog::events::qpack::QpackTableType\">QpackTableType</a>",1,["qlog::events::qpack::QpackTableType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackUpdateType.html\" title=\"enum qlog::events::qpack::QpackUpdateType\">QpackUpdateType</a>",1,["qlog::events::qpack::QpackUpdateType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.AckedRanges.html\" title=\"enum qlog::events::quic::AckedRanges\">AckedRanges</a>",1,["qlog::events::quic::AckedRanges"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.CongestionStateUpdatedTrigger.html\" title=\"enum qlog::events::quic::CongestionStateUpdatedTrigger\">CongestionStateUpdatedTrigger</a>",1,["qlog::events::quic::CongestionStateUpdatedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.ErrorSpace.html\" title=\"enum qlog::events::quic::ErrorSpace\">ErrorSpace</a>",1,["qlog::events::quic::ErrorSpace"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.LossTimerEventType.html\" title=\"enum qlog::events::quic::LossTimerEventType\">LossTimerEventType</a>",1,["qlog::events::quic::LossTimerEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketBufferedTrigger.html\" title=\"enum qlog::events::quic::PacketBufferedTrigger\">PacketBufferedTrigger</a>",1,["qlog::events::quic::PacketBufferedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketDroppedTrigger.html\" title=\"enum qlog::events::quic::PacketDroppedTrigger\">PacketDroppedTrigger</a>",1,["qlog::events::quic::PacketDroppedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketLostTrigger.html\" title=\"enum qlog::events::quic::PacketLostTrigger\">PacketLostTrigger</a>",1,["qlog::events::quic::PacketLostTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketNumberSpace.html\" title=\"enum qlog::events::quic::PacketNumberSpace\">PacketNumberSpace</a>",1,["qlog::events::quic::PacketNumberSpace"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketReceivedTrigger.html\" title=\"enum qlog::events::quic::PacketReceivedTrigger\">PacketReceivedTrigger</a>",1,["qlog::events::quic::PacketReceivedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketSentTrigger.html\" title=\"enum qlog::events::quic::PacketSentTrigger\">PacketSentTrigger</a>",1,["qlog::events::quic::PacketSentTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketType.html\" title=\"enum qlog::events::quic::PacketType\">PacketType</a>",1,["qlog::events::quic::PacketType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrame.html\" title=\"enum qlog::events::quic::QuicFrame\">QuicFrame</a>",1,["qlog::events::quic::QuicFrame"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrameTypeName.html\" title=\"enum qlog::events::quic::QuicFrameTypeName\">QuicFrameTypeName</a>",1,["qlog::events::quic::QuicFrameTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.RecoveryEventType.html\" title=\"enum qlog::events::quic::RecoveryEventType\">RecoveryEventType</a>",1,["qlog::events::quic::RecoveryEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.SecurityEventType.html\" title=\"enum qlog::events::quic::SecurityEventType\">SecurityEventType</a>",1,["qlog::events::quic::SecurityEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamSide.html\" title=\"enum qlog::events::quic::StreamSide\">StreamSide</a>",1,["qlog::events::quic::StreamSide"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamState.html\" title=\"enum qlog::events::quic::StreamState\">StreamState</a>",1,["qlog::events::quic::StreamState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamType.html\" title=\"enum qlog::events::quic::StreamType\">StreamType</a>",1,["qlog::events::quic::StreamType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TimerType.html\" title=\"enum qlog::events::quic::TimerType\">TimerType</a>",1,["qlog::events::quic::TimerType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportError.html\" title=\"enum qlog::events::quic::TransportError\">TransportError</a>",1,["qlog::events::quic::TransportError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportEventType.html\" title=\"enum qlog::events::quic::TransportEventType\">TransportEventType</a>",1,["qlog::events::quic::TransportEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyType.html\" title=\"enum qlog::events::security::KeyType\">KeyType</a>",1,["qlog::events::security::KeyType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyUpdateOrRetiredTrigger.html\" title=\"enum qlog::events::security::KeyUpdateOrRetiredTrigger\">KeyUpdateOrRetiredTrigger</a>",1,["qlog::events::security::KeyUpdateOrRetiredTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/reader/enum.Event.html\" title=\"enum qlog::reader::Event\">Event</a>",1,["qlog::reader::Event"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"qlog/streamer/enum.StreamerState.html\" title=\"enum qlog::streamer::StreamerState\">StreamerState</a>",1,["qlog::streamer::StreamerState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionClosed.html\" title=\"struct qlog::events::connectivity::ConnectionClosed\">ConnectionClosed</a>",1,["qlog::events::connectivity::ConnectionClosed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionIdUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionIdUpdated\">ConnectionIdUpdated</a>",1,["qlog::events::connectivity::ConnectionIdUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStarted.html\" title=\"struct qlog::events::connectivity::ConnectionStarted\">ConnectionStarted</a>",1,["qlog::events::connectivity::ConnectionStarted"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStateUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionStateUpdated\">ConnectionStateUpdated</a>",1,["qlog::events::connectivity::ConnectionStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.MtuUpdated.html\" title=\"struct qlog::events::connectivity::MtuUpdated\">MtuUpdated</a>",1,["qlog::events::connectivity::MtuUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ServerListening.html\" title=\"struct qlog::events::connectivity::ServerListening\">ServerListening</a>",1,["qlog::events::connectivity::ServerListening"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.SpinBitUpdated.html\" title=\"struct qlog::events::connectivity::SpinBitUpdated\">SpinBitUpdated</a>",1,["qlog::events::connectivity::SpinBitUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameCreated.html\" title=\"struct qlog::events::h3::H3FrameCreated\">H3FrameCreated</a>",1,["qlog::events::h3::H3FrameCreated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameParsed.html\" title=\"struct qlog::events::h3::H3FrameParsed\">H3FrameParsed</a>",1,["qlog::events::h3::H3FrameParsed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersRestored.html\" title=\"struct qlog::events::h3::H3ParametersRestored\">H3ParametersRestored</a>",1,["qlog::events::h3::H3ParametersRestored"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersSet.html\" title=\"struct qlog::events::h3::H3ParametersSet\">H3ParametersSet</a>",1,["qlog::events::h3::H3ParametersSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3PushResolved.html\" title=\"struct qlog::events::h3::H3PushResolved\">H3PushResolved</a>",1,["qlog::events::h3::H3PushResolved"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3StreamTypeSet.html\" title=\"struct qlog::events::h3::H3StreamTypeSet\">H3StreamTypeSet</a>",1,["qlog::events::h3::H3StreamTypeSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.HttpHeader.html\" title=\"struct qlog::events::h3::HttpHeader\">HttpHeader</a>",1,["qlog::events::h3::HttpHeader"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.Setting.html\" title=\"struct qlog::events::h3::Setting\">Setting</a>",1,["qlog::events::h3::Setting"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableEntry.html\" title=\"struct qlog::events::qpack::QpackDynamicTableEntry\">QpackDynamicTableEntry</a>",1,["qlog::events::qpack::QpackDynamicTableEntry"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableUpdated.html\" title=\"struct qlog::events::qpack::QpackDynamicTableUpdated\">QpackDynamicTableUpdated</a>",1,["qlog::events::qpack::QpackDynamicTableUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeaderBlockPrefix.html\" title=\"struct qlog::events::qpack::QpackHeaderBlockPrefix\">QpackHeaderBlockPrefix</a>",1,["qlog::events::qpack::QpackHeaderBlockPrefix"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersDecoded.html\" title=\"struct qlog::events::qpack::QpackHeadersDecoded\">QpackHeadersDecoded</a>",1,["qlog::events::qpack::QpackHeadersDecoded"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersEncoded.html\" title=\"struct qlog::events::qpack::QpackHeadersEncoded\">QpackHeadersEncoded</a>",1,["qlog::events::qpack::QpackHeadersEncoded"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionCreated.html\" title=\"struct qlog::events::qpack::QpackInstructionCreated\">QpackInstructionCreated</a>",1,["qlog::events::qpack::QpackInstructionCreated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionParsed.html\" title=\"struct qlog::events::qpack::QpackInstructionParsed\">QpackInstructionParsed</a>",1,["qlog::events::qpack::QpackInstructionParsed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStateUpdated\">QpackStateUpdated</a>",1,["qlog::events::qpack::QpackStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStreamStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStreamStateUpdated\">QpackStreamStateUpdated</a>",1,["qlog::events::qpack::QpackStreamStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.AlpnInformation.html\" title=\"struct qlog::events::quic::AlpnInformation\">AlpnInformation</a>",1,["qlog::events::quic::AlpnInformation"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.CongestionStateUpdated.html\" title=\"struct qlog::events::quic::CongestionStateUpdated\">CongestionStateUpdated</a>",1,["qlog::events::quic::CongestionStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DataMoved.html\" title=\"struct qlog::events::quic::DataMoved\">DataMoved</a>",1,["qlog::events::quic::DataMoved"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramDropped.html\" title=\"struct qlog::events::quic::DatagramDropped\">DatagramDropped</a>",1,["qlog::events::quic::DatagramDropped"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsReceived.html\" title=\"struct qlog::events::quic::DatagramsReceived\">DatagramsReceived</a>",1,["qlog::events::quic::DatagramsReceived"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsSent.html\" title=\"struct qlog::events::quic::DatagramsSent\">DatagramsSent</a>",1,["qlog::events::quic::DatagramsSent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.FramesProcessed.html\" title=\"struct qlog::events::quic::FramesProcessed\">FramesProcessed</a>",1,["qlog::events::quic::FramesProcessed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.LossTimerUpdated.html\" title=\"struct qlog::events::quic::LossTimerUpdated\">LossTimerUpdated</a>",1,["qlog::events::quic::LossTimerUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MarkedForRetransmit.html\" title=\"struct qlog::events::quic::MarkedForRetransmit\">MarkedForRetransmit</a>",1,["qlog::events::quic::MarkedForRetransmit"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MetricsUpdated.html\" title=\"struct qlog::events::quic::MetricsUpdated\">MetricsUpdated</a>",1,["qlog::events::quic::MetricsUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketBuffered.html\" title=\"struct qlog::events::quic::PacketBuffered\">PacketBuffered</a>",1,["qlog::events::quic::PacketBuffered"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketDropped.html\" title=\"struct qlog::events::quic::PacketDropped\">PacketDropped</a>",1,["qlog::events::quic::PacketDropped"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketHeader.html\" title=\"struct qlog::events::quic::PacketHeader\">PacketHeader</a>",1,["qlog::events::quic::PacketHeader"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketLost.html\" title=\"struct qlog::events::quic::PacketLost\">PacketLost</a>",1,["qlog::events::quic::PacketLost"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketReceived.html\" title=\"struct qlog::events::quic::PacketReceived\">PacketReceived</a>",1,["qlog::events::quic::PacketReceived"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketSent.html\" title=\"struct qlog::events::quic::PacketSent\">PacketSent</a>",1,["qlog::events::quic::PacketSent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketsAcked.html\" title=\"struct qlog::events::quic::PacketsAcked\">PacketsAcked</a>",1,["qlog::events::quic::PacketsAcked"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PreferredAddress.html\" title=\"struct qlog::events::quic::PreferredAddress\">PreferredAddress</a>",1,["qlog::events::quic::PreferredAddress"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.RecoveryParametersSet.html\" title=\"struct qlog::events::quic::RecoveryParametersSet\">RecoveryParametersSet</a>",1,["qlog::events::quic::RecoveryParametersSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.StreamStateUpdated.html\" title=\"struct qlog::events::quic::StreamStateUpdated\">StreamStateUpdated</a>",1,["qlog::events::quic::StreamStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersRestored.html\" title=\"struct qlog::events::quic::TransportParametersRestored\">TransportParametersRestored</a>",1,["qlog::events::quic::TransportParametersRestored"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersSet.html\" title=\"struct qlog::events::quic::TransportParametersSet\">TransportParametersSet</a>",1,["qlog::events::quic::TransportParametersSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.VersionInformation.html\" title=\"struct qlog::events::quic::VersionInformation\">VersionInformation</a>",1,["qlog::events::quic::VersionInformation"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyDiscarded.html\" title=\"struct qlog::events::security::KeyDiscarded\">KeyDiscarded</a>",1,["qlog::events::security::KeyDiscarded"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyUpdated.html\" title=\"struct qlog::events::security::KeyUpdated\">KeyUpdated</a>",1,["qlog::events::security::KeyUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/struct.Event.html\" title=\"struct qlog::events::Event\">Event</a>",1,["qlog::events::Event"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/struct.JsonEvent.html\" title=\"struct qlog::events::JsonEvent\">JsonEvent</a>",1,["qlog::events::JsonEvent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/events/struct.RawInfo.html\" title=\"struct qlog::events::RawInfo\">RawInfo</a>",1,["qlog::events::RawInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/reader/struct.QlogSeqReader.html\" title=\"struct qlog::reader::QlogSeqReader\">QlogSeqReader</a>",1,["qlog::reader::QlogSeqReader"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/streamer/struct.QlogStreamer.html\" title=\"struct qlog::streamer::QlogStreamer\">QlogStreamer</a>",1,["qlog::streamer::QlogStreamer"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/struct.CommonFields.html\" title=\"struct qlog::CommonFields\">CommonFields</a>",1,["qlog::CommonFields"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/struct.Configuration.html\" title=\"struct qlog::Configuration\">Configuration</a>",1,["qlog::Configuration"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/struct.Qlog.html\" title=\"struct qlog::Qlog\">Qlog</a>",1,["qlog::Qlog"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/struct.QlogSeq.html\" title=\"struct qlog::QlogSeq\">QlogSeq</a>",1,["qlog::QlogSeq"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/struct.Token.html\" title=\"struct qlog::Token\">Token</a>",1,["qlog::Token"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/struct.Trace.html\" title=\"struct qlog::Trace\">Trace</a>",1,["qlog::Trace"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/struct.TraceSeq.html\" title=\"struct qlog::TraceSeq\">TraceSeq</a>",1,["qlog::TraceSeq"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/struct.VantagePoint.html\" title=\"struct qlog::VantagePoint\">VantagePoint</a>",1,["qlog::VantagePoint"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"qlog/struct.HexSlice.html\" title=\"struct qlog::HexSlice\">HexSlice</a>&lt;'a&gt;",1,["qlog::HexSlice"]]],
+"quiche":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"quiche/enum.CongestionControlAlgorithm.html\" title=\"enum quiche::CongestionControlAlgorithm\">CongestionControlAlgorithm</a>",1,["quiche::recovery::CongestionControlAlgorithm"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"quiche/enum.Error.html\" title=\"enum quiche::Error\">Error</a>",1,["quiche::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"quiche/enum.PathEvent.html\" title=\"enum quiche::PathEvent\">PathEvent</a>",1,["quiche::path::PathEvent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"quiche/enum.QlogLevel.html\" title=\"enum quiche::QlogLevel\">QlogLevel</a>",1,["quiche::QlogLevel"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"quiche/enum.Shutdown.html\" title=\"enum quiche::Shutdown\">Shutdown</a>",1,["quiche::Shutdown"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"quiche/enum.Type.html\" title=\"enum quiche::Type\">Type</a>",1,["quiche::packet::Type"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"quiche/enum.WireErrorCode.html\" title=\"enum quiche::WireErrorCode\">WireErrorCode</a>",1,["quiche::WireErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"quiche/h3/enum.Error.html\" title=\"enum quiche::h3::Error\">Error</a>",1,["quiche::h3::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"quiche/h3/enum.Event.html\" title=\"enum quiche::h3::Event\">Event</a>",1,["quiche::h3::Event"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"quiche/h3/enum.WireErrorCode.html\" title=\"enum quiche::h3::WireErrorCode\">WireErrorCode</a>",1,["quiche::h3::WireErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche/h3/struct.Config.html\" title=\"struct quiche::h3::Config\">Config</a>",1,["quiche::h3::Config"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche/h3/struct.Connection.html\" title=\"struct quiche::h3::Connection\">Connection</a>",1,["quiche::h3::Connection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche/h3/struct.Header.html\" title=\"struct quiche::h3::Header\">Header</a>",1,["quiche::h3::Header"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche/h3/struct.Priority.html\" title=\"struct quiche::h3::Priority\">Priority</a>",1,["quiche::h3::Priority"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche/struct.Config.html\" title=\"struct quiche::Config\">Config</a>",1,["quiche::Config"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche/struct.Connection.html\" title=\"struct quiche::Connection\">Connection</a>",1,["quiche::Connection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionError.html\" title=\"struct quiche::ConnectionError\">ConnectionError</a>",1,["quiche::ConnectionError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche/struct.PathStats.html\" title=\"struct quiche::PathStats\">PathStats</a>",1,["quiche::path::PathStats"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche/struct.RecvInfo.html\" title=\"struct quiche::RecvInfo\">RecvInfo</a>",1,["quiche::RecvInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche/struct.SendInfo.html\" title=\"struct quiche::SendInfo\">SendInfo</a>",1,["quiche::SendInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche/struct.SocketAddrIter.html\" title=\"struct quiche::SocketAddrIter\">SocketAddrIter</a>",1,["quiche::path::SocketAddrIter"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche/struct.Stats.html\" title=\"struct quiche::Stats\">Stats</a>",1,["quiche::Stats"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche/struct.StreamIter.html\" title=\"struct quiche::StreamIter\">StreamIter</a>",1,["quiche::stream::StreamIter"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche/struct.TransportParams.html\" title=\"struct quiche::TransportParams\">TransportParams</a>",1,["quiche::TransportParams"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche/h3/struct.HeaderRef.html\" title=\"struct quiche::h3::HeaderRef\">HeaderRef</a>&lt;'a&gt;",1,["quiche::h3::HeaderRef"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionId.html\" title=\"struct quiche::ConnectionId\">ConnectionId</a>&lt;'a&gt;",1,["quiche::packet::ConnectionId"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche/struct.Header.html\" title=\"struct quiche::Header\">Header</a>&lt;'a&gt;",1,["quiche::packet::Header"]]],
+"quiche_apps":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"quiche_apps/client/enum.ClientError.html\" title=\"enum quiche_apps::client::ClientError\">ClientError</a>",1,["quiche_apps::client::ClientError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.ClientArgs.html\" title=\"struct quiche_apps::args::ClientArgs\">ClientArgs</a>",1,["quiche_apps::args::ClientArgs"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.CommonArgs.html\" title=\"struct quiche_apps::args::CommonArgs\">CommonArgs</a>",1,["quiche_apps::args::CommonArgs"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.ServerArgs.html\" title=\"struct quiche_apps::args::ServerArgs\">ServerArgs</a>",1,["quiche_apps::args::ServerArgs"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Client.html\" title=\"struct quiche_apps::common::Client\">Client</a>",1,["quiche_apps::common::Client"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http09Conn.html\" title=\"struct quiche_apps::common::Http09Conn\">Http09Conn</a>",1,["quiche_apps::common::Http09Conn"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http09Request.html\" title=\"struct quiche_apps::common::Http09Request\">Http09Request</a>",1,["quiche_apps::common::Http09Request"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http3Conn.html\" title=\"struct quiche_apps::common::Http3Conn\">Http3Conn</a>",1,["quiche_apps::common::Http3Conn"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http3DgramSender.html\" title=\"struct quiche_apps::common::Http3DgramSender\">Http3DgramSender</a>",1,["quiche_apps::common::Http3DgramSender"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.PartialRequest.html\" title=\"struct quiche_apps::common::PartialRequest\">PartialRequest</a>",1,["quiche_apps::common::PartialRequest"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.PartialResponse.html\" title=\"struct quiche_apps::common::PartialResponse\">PartialResponse</a>",1,["quiche_apps::common::PartialResponse"]]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/ops/deref/trait.Deref.js b/trait.impl/core/ops/deref/trait.Deref.js
new file mode 100644
index 0000000..e3dbfdf
--- /dev/null
+++ b/trait.impl/core/ops/deref/trait.Deref.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"quiche":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionId.html\" title=\"struct quiche::ConnectionId\">ConnectionId</a>&lt;'a&gt;"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/ops/drop/trait.Drop.js b/trait.impl/core/ops/drop/trait.Drop.js
new file mode 100644
index 0000000..1b56b15
--- /dev/null
+++ b/trait.impl/core/ops/drop/trait.Drop.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"qlog":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"qlog/streamer/struct.QlogStreamer.html\" title=\"struct qlog::streamer::QlogStreamer\">QlogStreamer</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js
new file mode 100644
index 0000000..66be8ab
--- /dev/null
+++ b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js
@@ -0,0 +1,6 @@
+(function() {var implementors = {
+"octets":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"octets/struct.BufferTooShortError.html\" title=\"struct octets::BufferTooShortError\">BufferTooShortError</a>",1,["octets::BufferTooShortError"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"octets/struct.Octets.html\" title=\"struct octets::Octets\">Octets</a>&lt;'a&gt;",1,["octets::Octets"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"octets/struct.OctetsMut.html\" title=\"struct octets::OctetsMut\">OctetsMut</a>&lt;'a&gt;",1,["octets::OctetsMut"]]],
+"qlog":[["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/enum.Error.html\" title=\"enum qlog::Error\">Error</a>",1,["qlog::Error"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/reader/struct.QlogSeqReader.html\" title=\"struct qlog::reader::QlogSeqReader\">QlogSeqReader</a>",1,["qlog::reader::QlogSeqReader"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/streamer/struct.QlogStreamer.html\" title=\"struct qlog::streamer::QlogStreamer\">QlogStreamer</a>",1,["qlog::streamer::QlogStreamer"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/enum.ImportanceLogLevel.html\" title=\"enum qlog::ImportanceLogLevel\">ImportanceLogLevel</a>",1,["qlog::ImportanceLogLevel"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/enum.TokenType.html\" title=\"enum qlog::TokenType\">TokenType</a>",1,["qlog::TokenType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/enum.VantagePointType.html\" title=\"enum qlog::VantagePointType\">VantagePointType</a>",1,["qlog::VantagePointType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionClosedTrigger.html\" title=\"enum qlog::events::connectivity::ConnectionClosedTrigger\">ConnectionClosedTrigger</a>",1,["qlog::events::connectivity::ConnectionClosedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionState.html\" title=\"enum qlog::events::connectivity::ConnectionState\">ConnectionState</a>",1,["qlog::events::connectivity::ConnectionState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectivityEventType.html\" title=\"enum qlog::events::connectivity::ConnectivityEventType\">ConnectivityEventType</a>",1,["qlog::events::connectivity::ConnectivityEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.TransportOwner.html\" title=\"enum qlog::events::connectivity::TransportOwner\">TransportOwner</a>",1,["qlog::events::connectivity::TransportOwner"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.ApplicationErrorCode.html\" title=\"enum qlog::events::ApplicationErrorCode\">ApplicationErrorCode</a>",1,["qlog::events::ApplicationErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.ConnectionErrorCode.html\" title=\"enum qlog::events::ConnectionErrorCode\">ConnectionErrorCode</a>",1,["qlog::events::ConnectionErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.CryptoError.html\" title=\"enum qlog::events::CryptoError\">CryptoError</a>",1,["qlog::events::CryptoError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.DataRecipient.html\" title=\"enum qlog::events::DataRecipient\">DataRecipient</a>",1,["qlog::events::DataRecipient"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.EventCategory.html\" title=\"enum qlog::events::EventCategory\">EventCategory</a>",1,["qlog::events::EventCategory"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.EventData.html\" title=\"enum qlog::events::EventData\">EventData</a>",1,["qlog::events::EventData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.EventImportance.html\" title=\"enum qlog::events::EventImportance\">EventImportance</a>",1,["qlog::events::EventImportance"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.EventType.html\" title=\"enum qlog::events::EventType\">EventType</a>",1,["qlog::events::EventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.GenericEventType.html\" title=\"enum qlog::events::GenericEventType\">GenericEventType</a>",1,["qlog::events::GenericEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.TimeFormat.html\" title=\"enum qlog::events::TimeFormat\">TimeFormat</a>",1,["qlog::events::TimeFormat"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.ApplicationError.html\" title=\"enum qlog::events::h3::ApplicationError\">ApplicationError</a>",1,["qlog::events::h3::ApplicationError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3Owner.html\" title=\"enum qlog::events::h3::H3Owner\">H3Owner</a>",1,["qlog::events::h3::H3Owner"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PriorityTargetStreamType.html\" title=\"enum qlog::events::h3::H3PriorityTargetStreamType\">H3PriorityTargetStreamType</a>",1,["qlog::events::h3::H3PriorityTargetStreamType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PushDecision.html\" title=\"enum qlog::events::h3::H3PushDecision\">H3PushDecision</a>",1,["qlog::events::h3::H3PushDecision"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3StreamType.html\" title=\"enum qlog::events::h3::H3StreamType\">H3StreamType</a>",1,["qlog::events::h3::H3StreamType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3EventType.html\" title=\"enum qlog::events::h3::Http3EventType\">Http3EventType</a>",1,["qlog::events::h3::Http3EventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3Frame.html\" title=\"enum qlog::events::h3::Http3Frame\">Http3Frame</a>",1,["qlog::events::h3::Http3Frame"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3FrameTypeName.html\" title=\"enum qlog::events::h3::Http3FrameTypeName\">Http3FrameTypeName</a>",1,["qlog::events::h3::Http3FrameTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QPackInstruction.html\" title=\"enum qlog::events::qpack::QPackInstruction\">QPackInstruction</a>",1,["qlog::events::qpack::QPackInstruction"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackEventType.html\" title=\"enum qlog::events::qpack::QpackEventType\">QpackEventType</a>",1,["qlog::events::qpack::QpackEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentation.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentation\">QpackHeaderBlockRepresentation</a>",1,["qlog::events::qpack::QpackHeaderBlockRepresentation"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentationTypeName.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName\">QpackHeaderBlockRepresentationTypeName</a>",1,["qlog::events::qpack::QpackHeaderBlockRepresentationTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackInstructionTypeName.html\" title=\"enum qlog::events::qpack::QpackInstructionTypeName\">QpackInstructionTypeName</a>",1,["qlog::events::qpack::QpackInstructionTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackOwner.html\" title=\"enum qlog::events::qpack::QpackOwner\">QpackOwner</a>",1,["qlog::events::qpack::QpackOwner"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackStreamState.html\" title=\"enum qlog::events::qpack::QpackStreamState\">QpackStreamState</a>",1,["qlog::events::qpack::QpackStreamState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackTableType.html\" title=\"enum qlog::events::qpack::QpackTableType\">QpackTableType</a>",1,["qlog::events::qpack::QpackTableType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackUpdateType.html\" title=\"enum qlog::events::qpack::QpackUpdateType\">QpackUpdateType</a>",1,["qlog::events::qpack::QpackUpdateType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.AckedRanges.html\" title=\"enum qlog::events::quic::AckedRanges\">AckedRanges</a>",1,["qlog::events::quic::AckedRanges"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.CongestionStateUpdatedTrigger.html\" title=\"enum qlog::events::quic::CongestionStateUpdatedTrigger\">CongestionStateUpdatedTrigger</a>",1,["qlog::events::quic::CongestionStateUpdatedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.ErrorSpace.html\" title=\"enum qlog::events::quic::ErrorSpace\">ErrorSpace</a>",1,["qlog::events::quic::ErrorSpace"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.LossTimerEventType.html\" title=\"enum qlog::events::quic::LossTimerEventType\">LossTimerEventType</a>",1,["qlog::events::quic::LossTimerEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketBufferedTrigger.html\" title=\"enum qlog::events::quic::PacketBufferedTrigger\">PacketBufferedTrigger</a>",1,["qlog::events::quic::PacketBufferedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketDroppedTrigger.html\" title=\"enum qlog::events::quic::PacketDroppedTrigger\">PacketDroppedTrigger</a>",1,["qlog::events::quic::PacketDroppedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketLostTrigger.html\" title=\"enum qlog::events::quic::PacketLostTrigger\">PacketLostTrigger</a>",1,["qlog::events::quic::PacketLostTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketNumberSpace.html\" title=\"enum qlog::events::quic::PacketNumberSpace\">PacketNumberSpace</a>",1,["qlog::events::quic::PacketNumberSpace"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketReceivedTrigger.html\" title=\"enum qlog::events::quic::PacketReceivedTrigger\">PacketReceivedTrigger</a>",1,["qlog::events::quic::PacketReceivedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketSentTrigger.html\" title=\"enum qlog::events::quic::PacketSentTrigger\">PacketSentTrigger</a>",1,["qlog::events::quic::PacketSentTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketType.html\" title=\"enum qlog::events::quic::PacketType\">PacketType</a>",1,["qlog::events::quic::PacketType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrame.html\" title=\"enum qlog::events::quic::QuicFrame\">QuicFrame</a>",1,["qlog::events::quic::QuicFrame"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrameTypeName.html\" title=\"enum qlog::events::quic::QuicFrameTypeName\">QuicFrameTypeName</a>",1,["qlog::events::quic::QuicFrameTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.RecoveryEventType.html\" title=\"enum qlog::events::quic::RecoveryEventType\">RecoveryEventType</a>",1,["qlog::events::quic::RecoveryEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.SecurityEventType.html\" title=\"enum qlog::events::quic::SecurityEventType\">SecurityEventType</a>",1,["qlog::events::quic::SecurityEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamSide.html\" title=\"enum qlog::events::quic::StreamSide\">StreamSide</a>",1,["qlog::events::quic::StreamSide"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamState.html\" title=\"enum qlog::events::quic::StreamState\">StreamState</a>",1,["qlog::events::quic::StreamState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamType.html\" title=\"enum qlog::events::quic::StreamType\">StreamType</a>",1,["qlog::events::quic::StreamType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TimerType.html\" title=\"enum qlog::events::quic::TimerType\">TimerType</a>",1,["qlog::events::quic::TimerType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportError.html\" title=\"enum qlog::events::quic::TransportError\">TransportError</a>",1,["qlog::events::quic::TransportError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportEventType.html\" title=\"enum qlog::events::quic::TransportEventType\">TransportEventType</a>",1,["qlog::events::quic::TransportEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyType.html\" title=\"enum qlog::events::security::KeyType\">KeyType</a>",1,["qlog::events::security::KeyType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyUpdateOrRetiredTrigger.html\" title=\"enum qlog::events::security::KeyUpdateOrRetiredTrigger\">KeyUpdateOrRetiredTrigger</a>",1,["qlog::events::security::KeyUpdateOrRetiredTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/reader/enum.Event.html\" title=\"enum qlog::reader::Event\">Event</a>",1,["qlog::reader::Event"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"qlog/streamer/enum.StreamerState.html\" title=\"enum qlog::streamer::StreamerState\">StreamerState</a>",1,["qlog::streamer::StreamerState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionClosed.html\" title=\"struct qlog::events::connectivity::ConnectionClosed\">ConnectionClosed</a>",1,["qlog::events::connectivity::ConnectionClosed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionIdUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionIdUpdated\">ConnectionIdUpdated</a>",1,["qlog::events::connectivity::ConnectionIdUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStarted.html\" title=\"struct qlog::events::connectivity::ConnectionStarted\">ConnectionStarted</a>",1,["qlog::events::connectivity::ConnectionStarted"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStateUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionStateUpdated\">ConnectionStateUpdated</a>",1,["qlog::events::connectivity::ConnectionStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.MtuUpdated.html\" title=\"struct qlog::events::connectivity::MtuUpdated\">MtuUpdated</a>",1,["qlog::events::connectivity::MtuUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ServerListening.html\" title=\"struct qlog::events::connectivity::ServerListening\">ServerListening</a>",1,["qlog::events::connectivity::ServerListening"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.SpinBitUpdated.html\" title=\"struct qlog::events::connectivity::SpinBitUpdated\">SpinBitUpdated</a>",1,["qlog::events::connectivity::SpinBitUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameCreated.html\" title=\"struct qlog::events::h3::H3FrameCreated\">H3FrameCreated</a>",1,["qlog::events::h3::H3FrameCreated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameParsed.html\" title=\"struct qlog::events::h3::H3FrameParsed\">H3FrameParsed</a>",1,["qlog::events::h3::H3FrameParsed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersRestored.html\" title=\"struct qlog::events::h3::H3ParametersRestored\">H3ParametersRestored</a>",1,["qlog::events::h3::H3ParametersRestored"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersSet.html\" title=\"struct qlog::events::h3::H3ParametersSet\">H3ParametersSet</a>",1,["qlog::events::h3::H3ParametersSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3PushResolved.html\" title=\"struct qlog::events::h3::H3PushResolved\">H3PushResolved</a>",1,["qlog::events::h3::H3PushResolved"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3StreamTypeSet.html\" title=\"struct qlog::events::h3::H3StreamTypeSet\">H3StreamTypeSet</a>",1,["qlog::events::h3::H3StreamTypeSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.HttpHeader.html\" title=\"struct qlog::events::h3::HttpHeader\">HttpHeader</a>",1,["qlog::events::h3::HttpHeader"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.Setting.html\" title=\"struct qlog::events::h3::Setting\">Setting</a>",1,["qlog::events::h3::Setting"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableEntry.html\" title=\"struct qlog::events::qpack::QpackDynamicTableEntry\">QpackDynamicTableEntry</a>",1,["qlog::events::qpack::QpackDynamicTableEntry"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableUpdated.html\" title=\"struct qlog::events::qpack::QpackDynamicTableUpdated\">QpackDynamicTableUpdated</a>",1,["qlog::events::qpack::QpackDynamicTableUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeaderBlockPrefix.html\" title=\"struct qlog::events::qpack::QpackHeaderBlockPrefix\">QpackHeaderBlockPrefix</a>",1,["qlog::events::qpack::QpackHeaderBlockPrefix"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersDecoded.html\" title=\"struct qlog::events::qpack::QpackHeadersDecoded\">QpackHeadersDecoded</a>",1,["qlog::events::qpack::QpackHeadersDecoded"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersEncoded.html\" title=\"struct qlog::events::qpack::QpackHeadersEncoded\">QpackHeadersEncoded</a>",1,["qlog::events::qpack::QpackHeadersEncoded"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionCreated.html\" title=\"struct qlog::events::qpack::QpackInstructionCreated\">QpackInstructionCreated</a>",1,["qlog::events::qpack::QpackInstructionCreated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionParsed.html\" title=\"struct qlog::events::qpack::QpackInstructionParsed\">QpackInstructionParsed</a>",1,["qlog::events::qpack::QpackInstructionParsed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStateUpdated\">QpackStateUpdated</a>",1,["qlog::events::qpack::QpackStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStreamStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStreamStateUpdated\">QpackStreamStateUpdated</a>",1,["qlog::events::qpack::QpackStreamStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.AlpnInformation.html\" title=\"struct qlog::events::quic::AlpnInformation\">AlpnInformation</a>",1,["qlog::events::quic::AlpnInformation"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.CongestionStateUpdated.html\" title=\"struct qlog::events::quic::CongestionStateUpdated\">CongestionStateUpdated</a>",1,["qlog::events::quic::CongestionStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DataMoved.html\" title=\"struct qlog::events::quic::DataMoved\">DataMoved</a>",1,["qlog::events::quic::DataMoved"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramDropped.html\" title=\"struct qlog::events::quic::DatagramDropped\">DatagramDropped</a>",1,["qlog::events::quic::DatagramDropped"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsReceived.html\" title=\"struct qlog::events::quic::DatagramsReceived\">DatagramsReceived</a>",1,["qlog::events::quic::DatagramsReceived"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsSent.html\" title=\"struct qlog::events::quic::DatagramsSent\">DatagramsSent</a>",1,["qlog::events::quic::DatagramsSent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.FramesProcessed.html\" title=\"struct qlog::events::quic::FramesProcessed\">FramesProcessed</a>",1,["qlog::events::quic::FramesProcessed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.LossTimerUpdated.html\" title=\"struct qlog::events::quic::LossTimerUpdated\">LossTimerUpdated</a>",1,["qlog::events::quic::LossTimerUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MarkedForRetransmit.html\" title=\"struct qlog::events::quic::MarkedForRetransmit\">MarkedForRetransmit</a>",1,["qlog::events::quic::MarkedForRetransmit"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MetricsUpdated.html\" title=\"struct qlog::events::quic::MetricsUpdated\">MetricsUpdated</a>",1,["qlog::events::quic::MetricsUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketBuffered.html\" title=\"struct qlog::events::quic::PacketBuffered\">PacketBuffered</a>",1,["qlog::events::quic::PacketBuffered"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketDropped.html\" title=\"struct qlog::events::quic::PacketDropped\">PacketDropped</a>",1,["qlog::events::quic::PacketDropped"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketHeader.html\" title=\"struct qlog::events::quic::PacketHeader\">PacketHeader</a>",1,["qlog::events::quic::PacketHeader"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketLost.html\" title=\"struct qlog::events::quic::PacketLost\">PacketLost</a>",1,["qlog::events::quic::PacketLost"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketReceived.html\" title=\"struct qlog::events::quic::PacketReceived\">PacketReceived</a>",1,["qlog::events::quic::PacketReceived"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketSent.html\" title=\"struct qlog::events::quic::PacketSent\">PacketSent</a>",1,["qlog::events::quic::PacketSent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketsAcked.html\" title=\"struct qlog::events::quic::PacketsAcked\">PacketsAcked</a>",1,["qlog::events::quic::PacketsAcked"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PreferredAddress.html\" title=\"struct qlog::events::quic::PreferredAddress\">PreferredAddress</a>",1,["qlog::events::quic::PreferredAddress"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.RecoveryParametersSet.html\" title=\"struct qlog::events::quic::RecoveryParametersSet\">RecoveryParametersSet</a>",1,["qlog::events::quic::RecoveryParametersSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.StreamStateUpdated.html\" title=\"struct qlog::events::quic::StreamStateUpdated\">StreamStateUpdated</a>",1,["qlog::events::quic::StreamStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersRestored.html\" title=\"struct qlog::events::quic::TransportParametersRestored\">TransportParametersRestored</a>",1,["qlog::events::quic::TransportParametersRestored"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersSet.html\" title=\"struct qlog::events::quic::TransportParametersSet\">TransportParametersSet</a>",1,["qlog::events::quic::TransportParametersSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.VersionInformation.html\" title=\"struct qlog::events::quic::VersionInformation\">VersionInformation</a>",1,["qlog::events::quic::VersionInformation"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyDiscarded.html\" title=\"struct qlog::events::security::KeyDiscarded\">KeyDiscarded</a>",1,["qlog::events::security::KeyDiscarded"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyUpdated.html\" title=\"struct qlog::events::security::KeyUpdated\">KeyUpdated</a>",1,["qlog::events::security::KeyUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/struct.Event.html\" title=\"struct qlog::events::Event\">Event</a>",1,["qlog::events::Event"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/struct.JsonEvent.html\" title=\"struct qlog::events::JsonEvent\">JsonEvent</a>",1,["qlog::events::JsonEvent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/struct.RawInfo.html\" title=\"struct qlog::events::RawInfo\">RawInfo</a>",1,["qlog::events::RawInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/struct.CommonFields.html\" title=\"struct qlog::CommonFields\">CommonFields</a>",1,["qlog::CommonFields"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/struct.Configuration.html\" title=\"struct qlog::Configuration\">Configuration</a>",1,["qlog::Configuration"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/struct.Qlog.html\" title=\"struct qlog::Qlog\">Qlog</a>",1,["qlog::Qlog"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/struct.QlogSeq.html\" title=\"struct qlog::QlogSeq\">QlogSeq</a>",1,["qlog::QlogSeq"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/struct.Token.html\" title=\"struct qlog::Token\">Token</a>",1,["qlog::Token"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/struct.Trace.html\" title=\"struct qlog::Trace\">Trace</a>",1,["qlog::Trace"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/struct.TraceSeq.html\" title=\"struct qlog::TraceSeq\">TraceSeq</a>",1,["qlog::TraceSeq"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/struct.VantagePoint.html\" title=\"struct qlog::VantagePoint\">VantagePoint</a>",1,["qlog::VantagePoint"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"qlog/struct.HexSlice.html\" title=\"struct qlog::HexSlice\">HexSlice</a>&lt;'a&gt;",1,["qlog::HexSlice"]]],
+"quiche":[["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.Connection.html\" title=\"struct quiche::Connection\">Connection</a>",1,["quiche::Connection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"quiche/enum.CongestionControlAlgorithm.html\" title=\"enum quiche::CongestionControlAlgorithm\">CongestionControlAlgorithm</a>",1,["quiche::recovery::CongestionControlAlgorithm"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"quiche/enum.Error.html\" title=\"enum quiche::Error\">Error</a>",1,["quiche::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"quiche/enum.PathEvent.html\" title=\"enum quiche::PathEvent\">PathEvent</a>",1,["quiche::path::PathEvent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"quiche/enum.QlogLevel.html\" title=\"enum quiche::QlogLevel\">QlogLevel</a>",1,["quiche::QlogLevel"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"quiche/enum.Shutdown.html\" title=\"enum quiche::Shutdown\">Shutdown</a>",1,["quiche::Shutdown"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"quiche/enum.Type.html\" title=\"enum quiche::Type\">Type</a>",1,["quiche::packet::Type"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"quiche/enum.WireErrorCode.html\" title=\"enum quiche::WireErrorCode\">WireErrorCode</a>",1,["quiche::WireErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"quiche/h3/enum.Error.html\" title=\"enum quiche::h3::Error\">Error</a>",1,["quiche::h3::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"quiche/h3/enum.Event.html\" title=\"enum quiche::h3::Event\">Event</a>",1,["quiche::h3::Event"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"quiche/h3/enum.WireErrorCode.html\" title=\"enum quiche::h3::WireErrorCode\">WireErrorCode</a>",1,["quiche::h3::WireErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche/h3/struct.Config.html\" title=\"struct quiche::h3::Config\">Config</a>",1,["quiche::h3::Config"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche/h3/struct.Connection.html\" title=\"struct quiche::h3::Connection\">Connection</a>",1,["quiche::h3::Connection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche/h3/struct.Header.html\" title=\"struct quiche::h3::Header\">Header</a>",1,["quiche::h3::Header"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche/h3/struct.Priority.html\" title=\"struct quiche::h3::Priority\">Priority</a>",1,["quiche::h3::Priority"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.Config.html\" title=\"struct quiche::Config\">Config</a>",1,["quiche::Config"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionError.html\" title=\"struct quiche::ConnectionError\">ConnectionError</a>",1,["quiche::ConnectionError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.PathStats.html\" title=\"struct quiche::PathStats\">PathStats</a>",1,["quiche::path::PathStats"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.RecvInfo.html\" title=\"struct quiche::RecvInfo\">RecvInfo</a>",1,["quiche::RecvInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.SendInfo.html\" title=\"struct quiche::SendInfo\">SendInfo</a>",1,["quiche::SendInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.SocketAddrIter.html\" title=\"struct quiche::SocketAddrIter\">SocketAddrIter</a>",1,["quiche::path::SocketAddrIter"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.Stats.html\" title=\"struct quiche::Stats\">Stats</a>",1,["quiche::Stats"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.StreamIter.html\" title=\"struct quiche::StreamIter\">StreamIter</a>",1,["quiche::stream::StreamIter"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.TransportParams.html\" title=\"struct quiche::TransportParams\">TransportParams</a>",1,["quiche::TransportParams"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche/h3/struct.HeaderRef.html\" title=\"struct quiche::h3::HeaderRef\">HeaderRef</a>&lt;'a&gt;",1,["quiche::h3::HeaderRef"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionId.html\" title=\"struct quiche::ConnectionId\">ConnectionId</a>&lt;'a&gt;",1,["quiche::packet::ConnectionId"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.Header.html\" title=\"struct quiche::Header\">Header</a>&lt;'a&gt;",1,["quiche::packet::Header"]]],
+"quiche_apps":[["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Client.html\" title=\"struct quiche_apps::common::Client\">Client</a>",1,["quiche_apps::common::Client"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http09Conn.html\" title=\"struct quiche_apps::common::Http09Conn\">Http09Conn</a>",1,["quiche_apps::common::Http09Conn"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http3Conn.html\" title=\"struct quiche_apps::common::Http3Conn\">Http3Conn</a>",1,["quiche_apps::common::Http3Conn"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"quiche_apps/client/enum.ClientError.html\" title=\"enum quiche_apps::client::ClientError\">ClientError</a>",1,["quiche_apps::client::ClientError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.ClientArgs.html\" title=\"struct quiche_apps::args::ClientArgs\">ClientArgs</a>",1,["quiche_apps::args::ClientArgs"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.CommonArgs.html\" title=\"struct quiche_apps::args::CommonArgs\">CommonArgs</a>",1,["quiche_apps::args::CommonArgs"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.ServerArgs.html\" title=\"struct quiche_apps::args::ServerArgs\">ServerArgs</a>",1,["quiche_apps::args::ServerArgs"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http09Request.html\" title=\"struct quiche_apps::common::Http09Request\">Http09Request</a>",1,["quiche_apps::common::Http09Request"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http3DgramSender.html\" title=\"struct quiche_apps::common::Http3DgramSender\">Http3DgramSender</a>",1,["quiche_apps::common::Http3DgramSender"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.PartialRequest.html\" title=\"struct quiche_apps::common::PartialRequest\">PartialRequest</a>",1,["quiche_apps::common::PartialRequest"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.PartialResponse.html\" title=\"struct quiche_apps::common::PartialResponse\">PartialResponse</a>",1,["quiche_apps::common::PartialResponse"]]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js
new file mode 100644
index 0000000..5164f2e
--- /dev/null
+++ b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js
@@ -0,0 +1,6 @@
+(function() {var implementors = {
+"octets":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"octets/struct.BufferTooShortError.html\" title=\"struct octets::BufferTooShortError\">BufferTooShortError</a>",1,["octets::BufferTooShortError"]],["impl&lt;'a&gt; !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"octets/struct.OctetsMut.html\" title=\"struct octets::OctetsMut\">OctetsMut</a>&lt;'a&gt;",1,["octets::OctetsMut"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"octets/struct.Octets.html\" title=\"struct octets::Octets\">Octets</a>&lt;'a&gt;",1,["octets::Octets"]]],
+"qlog":[["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/enum.Error.html\" title=\"enum qlog::Error\">Error</a>",1,["qlog::Error"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/reader/struct.QlogSeqReader.html\" title=\"struct qlog::reader::QlogSeqReader\">QlogSeqReader</a>",1,["qlog::reader::QlogSeqReader"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/streamer/struct.QlogStreamer.html\" title=\"struct qlog::streamer::QlogStreamer\">QlogStreamer</a>",1,["qlog::streamer::QlogStreamer"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/enum.ImportanceLogLevel.html\" title=\"enum qlog::ImportanceLogLevel\">ImportanceLogLevel</a>",1,["qlog::ImportanceLogLevel"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/enum.TokenType.html\" title=\"enum qlog::TokenType\">TokenType</a>",1,["qlog::TokenType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/enum.VantagePointType.html\" title=\"enum qlog::VantagePointType\">VantagePointType</a>",1,["qlog::VantagePointType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionClosedTrigger.html\" title=\"enum qlog::events::connectivity::ConnectionClosedTrigger\">ConnectionClosedTrigger</a>",1,["qlog::events::connectivity::ConnectionClosedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionState.html\" title=\"enum qlog::events::connectivity::ConnectionState\">ConnectionState</a>",1,["qlog::events::connectivity::ConnectionState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectivityEventType.html\" title=\"enum qlog::events::connectivity::ConnectivityEventType\">ConnectivityEventType</a>",1,["qlog::events::connectivity::ConnectivityEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.TransportOwner.html\" title=\"enum qlog::events::connectivity::TransportOwner\">TransportOwner</a>",1,["qlog::events::connectivity::TransportOwner"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.ApplicationErrorCode.html\" title=\"enum qlog::events::ApplicationErrorCode\">ApplicationErrorCode</a>",1,["qlog::events::ApplicationErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.ConnectionErrorCode.html\" title=\"enum qlog::events::ConnectionErrorCode\">ConnectionErrorCode</a>",1,["qlog::events::ConnectionErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.CryptoError.html\" title=\"enum qlog::events::CryptoError\">CryptoError</a>",1,["qlog::events::CryptoError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.DataRecipient.html\" title=\"enum qlog::events::DataRecipient\">DataRecipient</a>",1,["qlog::events::DataRecipient"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.EventCategory.html\" title=\"enum qlog::events::EventCategory\">EventCategory</a>",1,["qlog::events::EventCategory"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.EventData.html\" title=\"enum qlog::events::EventData\">EventData</a>",1,["qlog::events::EventData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.EventImportance.html\" title=\"enum qlog::events::EventImportance\">EventImportance</a>",1,["qlog::events::EventImportance"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.EventType.html\" title=\"enum qlog::events::EventType\">EventType</a>",1,["qlog::events::EventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.GenericEventType.html\" title=\"enum qlog::events::GenericEventType\">GenericEventType</a>",1,["qlog::events::GenericEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/enum.TimeFormat.html\" title=\"enum qlog::events::TimeFormat\">TimeFormat</a>",1,["qlog::events::TimeFormat"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.ApplicationError.html\" title=\"enum qlog::events::h3::ApplicationError\">ApplicationError</a>",1,["qlog::events::h3::ApplicationError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3Owner.html\" title=\"enum qlog::events::h3::H3Owner\">H3Owner</a>",1,["qlog::events::h3::H3Owner"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PriorityTargetStreamType.html\" title=\"enum qlog::events::h3::H3PriorityTargetStreamType\">H3PriorityTargetStreamType</a>",1,["qlog::events::h3::H3PriorityTargetStreamType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PushDecision.html\" title=\"enum qlog::events::h3::H3PushDecision\">H3PushDecision</a>",1,["qlog::events::h3::H3PushDecision"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3StreamType.html\" title=\"enum qlog::events::h3::H3StreamType\">H3StreamType</a>",1,["qlog::events::h3::H3StreamType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3EventType.html\" title=\"enum qlog::events::h3::Http3EventType\">Http3EventType</a>",1,["qlog::events::h3::Http3EventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3Frame.html\" title=\"enum qlog::events::h3::Http3Frame\">Http3Frame</a>",1,["qlog::events::h3::Http3Frame"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3FrameTypeName.html\" title=\"enum qlog::events::h3::Http3FrameTypeName\">Http3FrameTypeName</a>",1,["qlog::events::h3::Http3FrameTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QPackInstruction.html\" title=\"enum qlog::events::qpack::QPackInstruction\">QPackInstruction</a>",1,["qlog::events::qpack::QPackInstruction"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackEventType.html\" title=\"enum qlog::events::qpack::QpackEventType\">QpackEventType</a>",1,["qlog::events::qpack::QpackEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentation.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentation\">QpackHeaderBlockRepresentation</a>",1,["qlog::events::qpack::QpackHeaderBlockRepresentation"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentationTypeName.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName\">QpackHeaderBlockRepresentationTypeName</a>",1,["qlog::events::qpack::QpackHeaderBlockRepresentationTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackInstructionTypeName.html\" title=\"enum qlog::events::qpack::QpackInstructionTypeName\">QpackInstructionTypeName</a>",1,["qlog::events::qpack::QpackInstructionTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackOwner.html\" title=\"enum qlog::events::qpack::QpackOwner\">QpackOwner</a>",1,["qlog::events::qpack::QpackOwner"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackStreamState.html\" title=\"enum qlog::events::qpack::QpackStreamState\">QpackStreamState</a>",1,["qlog::events::qpack::QpackStreamState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackTableType.html\" title=\"enum qlog::events::qpack::QpackTableType\">QpackTableType</a>",1,["qlog::events::qpack::QpackTableType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackUpdateType.html\" title=\"enum qlog::events::qpack::QpackUpdateType\">QpackUpdateType</a>",1,["qlog::events::qpack::QpackUpdateType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.AckedRanges.html\" title=\"enum qlog::events::quic::AckedRanges\">AckedRanges</a>",1,["qlog::events::quic::AckedRanges"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.CongestionStateUpdatedTrigger.html\" title=\"enum qlog::events::quic::CongestionStateUpdatedTrigger\">CongestionStateUpdatedTrigger</a>",1,["qlog::events::quic::CongestionStateUpdatedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.ErrorSpace.html\" title=\"enum qlog::events::quic::ErrorSpace\">ErrorSpace</a>",1,["qlog::events::quic::ErrorSpace"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.LossTimerEventType.html\" title=\"enum qlog::events::quic::LossTimerEventType\">LossTimerEventType</a>",1,["qlog::events::quic::LossTimerEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketBufferedTrigger.html\" title=\"enum qlog::events::quic::PacketBufferedTrigger\">PacketBufferedTrigger</a>",1,["qlog::events::quic::PacketBufferedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketDroppedTrigger.html\" title=\"enum qlog::events::quic::PacketDroppedTrigger\">PacketDroppedTrigger</a>",1,["qlog::events::quic::PacketDroppedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketLostTrigger.html\" title=\"enum qlog::events::quic::PacketLostTrigger\">PacketLostTrigger</a>",1,["qlog::events::quic::PacketLostTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketNumberSpace.html\" title=\"enum qlog::events::quic::PacketNumberSpace\">PacketNumberSpace</a>",1,["qlog::events::quic::PacketNumberSpace"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketReceivedTrigger.html\" title=\"enum qlog::events::quic::PacketReceivedTrigger\">PacketReceivedTrigger</a>",1,["qlog::events::quic::PacketReceivedTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketSentTrigger.html\" title=\"enum qlog::events::quic::PacketSentTrigger\">PacketSentTrigger</a>",1,["qlog::events::quic::PacketSentTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketType.html\" title=\"enum qlog::events::quic::PacketType\">PacketType</a>",1,["qlog::events::quic::PacketType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrame.html\" title=\"enum qlog::events::quic::QuicFrame\">QuicFrame</a>",1,["qlog::events::quic::QuicFrame"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrameTypeName.html\" title=\"enum qlog::events::quic::QuicFrameTypeName\">QuicFrameTypeName</a>",1,["qlog::events::quic::QuicFrameTypeName"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.RecoveryEventType.html\" title=\"enum qlog::events::quic::RecoveryEventType\">RecoveryEventType</a>",1,["qlog::events::quic::RecoveryEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.SecurityEventType.html\" title=\"enum qlog::events::quic::SecurityEventType\">SecurityEventType</a>",1,["qlog::events::quic::SecurityEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamSide.html\" title=\"enum qlog::events::quic::StreamSide\">StreamSide</a>",1,["qlog::events::quic::StreamSide"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamState.html\" title=\"enum qlog::events::quic::StreamState\">StreamState</a>",1,["qlog::events::quic::StreamState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamType.html\" title=\"enum qlog::events::quic::StreamType\">StreamType</a>",1,["qlog::events::quic::StreamType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TimerType.html\" title=\"enum qlog::events::quic::TimerType\">TimerType</a>",1,["qlog::events::quic::TimerType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportError.html\" title=\"enum qlog::events::quic::TransportError\">TransportError</a>",1,["qlog::events::quic::TransportError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportEventType.html\" title=\"enum qlog::events::quic::TransportEventType\">TransportEventType</a>",1,["qlog::events::quic::TransportEventType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyType.html\" title=\"enum qlog::events::security::KeyType\">KeyType</a>",1,["qlog::events::security::KeyType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyUpdateOrRetiredTrigger.html\" title=\"enum qlog::events::security::KeyUpdateOrRetiredTrigger\">KeyUpdateOrRetiredTrigger</a>",1,["qlog::events::security::KeyUpdateOrRetiredTrigger"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/reader/enum.Event.html\" title=\"enum qlog::reader::Event\">Event</a>",1,["qlog::reader::Event"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"qlog/streamer/enum.StreamerState.html\" title=\"enum qlog::streamer::StreamerState\">StreamerState</a>",1,["qlog::streamer::StreamerState"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionClosed.html\" title=\"struct qlog::events::connectivity::ConnectionClosed\">ConnectionClosed</a>",1,["qlog::events::connectivity::ConnectionClosed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionIdUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionIdUpdated\">ConnectionIdUpdated</a>",1,["qlog::events::connectivity::ConnectionIdUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStarted.html\" title=\"struct qlog::events::connectivity::ConnectionStarted\">ConnectionStarted</a>",1,["qlog::events::connectivity::ConnectionStarted"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStateUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionStateUpdated\">ConnectionStateUpdated</a>",1,["qlog::events::connectivity::ConnectionStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.MtuUpdated.html\" title=\"struct qlog::events::connectivity::MtuUpdated\">MtuUpdated</a>",1,["qlog::events::connectivity::MtuUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ServerListening.html\" title=\"struct qlog::events::connectivity::ServerListening\">ServerListening</a>",1,["qlog::events::connectivity::ServerListening"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.SpinBitUpdated.html\" title=\"struct qlog::events::connectivity::SpinBitUpdated\">SpinBitUpdated</a>",1,["qlog::events::connectivity::SpinBitUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameCreated.html\" title=\"struct qlog::events::h3::H3FrameCreated\">H3FrameCreated</a>",1,["qlog::events::h3::H3FrameCreated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameParsed.html\" title=\"struct qlog::events::h3::H3FrameParsed\">H3FrameParsed</a>",1,["qlog::events::h3::H3FrameParsed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersRestored.html\" title=\"struct qlog::events::h3::H3ParametersRestored\">H3ParametersRestored</a>",1,["qlog::events::h3::H3ParametersRestored"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersSet.html\" title=\"struct qlog::events::h3::H3ParametersSet\">H3ParametersSet</a>",1,["qlog::events::h3::H3ParametersSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3PushResolved.html\" title=\"struct qlog::events::h3::H3PushResolved\">H3PushResolved</a>",1,["qlog::events::h3::H3PushResolved"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3StreamTypeSet.html\" title=\"struct qlog::events::h3::H3StreamTypeSet\">H3StreamTypeSet</a>",1,["qlog::events::h3::H3StreamTypeSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.HttpHeader.html\" title=\"struct qlog::events::h3::HttpHeader\">HttpHeader</a>",1,["qlog::events::h3::HttpHeader"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.Setting.html\" title=\"struct qlog::events::h3::Setting\">Setting</a>",1,["qlog::events::h3::Setting"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableEntry.html\" title=\"struct qlog::events::qpack::QpackDynamicTableEntry\">QpackDynamicTableEntry</a>",1,["qlog::events::qpack::QpackDynamicTableEntry"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableUpdated.html\" title=\"struct qlog::events::qpack::QpackDynamicTableUpdated\">QpackDynamicTableUpdated</a>",1,["qlog::events::qpack::QpackDynamicTableUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeaderBlockPrefix.html\" title=\"struct qlog::events::qpack::QpackHeaderBlockPrefix\">QpackHeaderBlockPrefix</a>",1,["qlog::events::qpack::QpackHeaderBlockPrefix"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersDecoded.html\" title=\"struct qlog::events::qpack::QpackHeadersDecoded\">QpackHeadersDecoded</a>",1,["qlog::events::qpack::QpackHeadersDecoded"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersEncoded.html\" title=\"struct qlog::events::qpack::QpackHeadersEncoded\">QpackHeadersEncoded</a>",1,["qlog::events::qpack::QpackHeadersEncoded"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionCreated.html\" title=\"struct qlog::events::qpack::QpackInstructionCreated\">QpackInstructionCreated</a>",1,["qlog::events::qpack::QpackInstructionCreated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionParsed.html\" title=\"struct qlog::events::qpack::QpackInstructionParsed\">QpackInstructionParsed</a>",1,["qlog::events::qpack::QpackInstructionParsed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStateUpdated\">QpackStateUpdated</a>",1,["qlog::events::qpack::QpackStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStreamStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStreamStateUpdated\">QpackStreamStateUpdated</a>",1,["qlog::events::qpack::QpackStreamStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.AlpnInformation.html\" title=\"struct qlog::events::quic::AlpnInformation\">AlpnInformation</a>",1,["qlog::events::quic::AlpnInformation"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.CongestionStateUpdated.html\" title=\"struct qlog::events::quic::CongestionStateUpdated\">CongestionStateUpdated</a>",1,["qlog::events::quic::CongestionStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DataMoved.html\" title=\"struct qlog::events::quic::DataMoved\">DataMoved</a>",1,["qlog::events::quic::DataMoved"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramDropped.html\" title=\"struct qlog::events::quic::DatagramDropped\">DatagramDropped</a>",1,["qlog::events::quic::DatagramDropped"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsReceived.html\" title=\"struct qlog::events::quic::DatagramsReceived\">DatagramsReceived</a>",1,["qlog::events::quic::DatagramsReceived"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsSent.html\" title=\"struct qlog::events::quic::DatagramsSent\">DatagramsSent</a>",1,["qlog::events::quic::DatagramsSent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.FramesProcessed.html\" title=\"struct qlog::events::quic::FramesProcessed\">FramesProcessed</a>",1,["qlog::events::quic::FramesProcessed"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.LossTimerUpdated.html\" title=\"struct qlog::events::quic::LossTimerUpdated\">LossTimerUpdated</a>",1,["qlog::events::quic::LossTimerUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MarkedForRetransmit.html\" title=\"struct qlog::events::quic::MarkedForRetransmit\">MarkedForRetransmit</a>",1,["qlog::events::quic::MarkedForRetransmit"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MetricsUpdated.html\" title=\"struct qlog::events::quic::MetricsUpdated\">MetricsUpdated</a>",1,["qlog::events::quic::MetricsUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketBuffered.html\" title=\"struct qlog::events::quic::PacketBuffered\">PacketBuffered</a>",1,["qlog::events::quic::PacketBuffered"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketDropped.html\" title=\"struct qlog::events::quic::PacketDropped\">PacketDropped</a>",1,["qlog::events::quic::PacketDropped"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketHeader.html\" title=\"struct qlog::events::quic::PacketHeader\">PacketHeader</a>",1,["qlog::events::quic::PacketHeader"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketLost.html\" title=\"struct qlog::events::quic::PacketLost\">PacketLost</a>",1,["qlog::events::quic::PacketLost"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketReceived.html\" title=\"struct qlog::events::quic::PacketReceived\">PacketReceived</a>",1,["qlog::events::quic::PacketReceived"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketSent.html\" title=\"struct qlog::events::quic::PacketSent\">PacketSent</a>",1,["qlog::events::quic::PacketSent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketsAcked.html\" title=\"struct qlog::events::quic::PacketsAcked\">PacketsAcked</a>",1,["qlog::events::quic::PacketsAcked"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PreferredAddress.html\" title=\"struct qlog::events::quic::PreferredAddress\">PreferredAddress</a>",1,["qlog::events::quic::PreferredAddress"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.RecoveryParametersSet.html\" title=\"struct qlog::events::quic::RecoveryParametersSet\">RecoveryParametersSet</a>",1,["qlog::events::quic::RecoveryParametersSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.StreamStateUpdated.html\" title=\"struct qlog::events::quic::StreamStateUpdated\">StreamStateUpdated</a>",1,["qlog::events::quic::StreamStateUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersRestored.html\" title=\"struct qlog::events::quic::TransportParametersRestored\">TransportParametersRestored</a>",1,["qlog::events::quic::TransportParametersRestored"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersSet.html\" title=\"struct qlog::events::quic::TransportParametersSet\">TransportParametersSet</a>",1,["qlog::events::quic::TransportParametersSet"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.VersionInformation.html\" title=\"struct qlog::events::quic::VersionInformation\">VersionInformation</a>",1,["qlog::events::quic::VersionInformation"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyDiscarded.html\" title=\"struct qlog::events::security::KeyDiscarded\">KeyDiscarded</a>",1,["qlog::events::security::KeyDiscarded"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyUpdated.html\" title=\"struct qlog::events::security::KeyUpdated\">KeyUpdated</a>",1,["qlog::events::security::KeyUpdated"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/struct.Event.html\" title=\"struct qlog::events::Event\">Event</a>",1,["qlog::events::Event"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/struct.JsonEvent.html\" title=\"struct qlog::events::JsonEvent\">JsonEvent</a>",1,["qlog::events::JsonEvent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/events/struct.RawInfo.html\" title=\"struct qlog::events::RawInfo\">RawInfo</a>",1,["qlog::events::RawInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/struct.CommonFields.html\" title=\"struct qlog::CommonFields\">CommonFields</a>",1,["qlog::CommonFields"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/struct.Configuration.html\" title=\"struct qlog::Configuration\">Configuration</a>",1,["qlog::Configuration"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/struct.Qlog.html\" title=\"struct qlog::Qlog\">Qlog</a>",1,["qlog::Qlog"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/struct.QlogSeq.html\" title=\"struct qlog::QlogSeq\">QlogSeq</a>",1,["qlog::QlogSeq"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/struct.Token.html\" title=\"struct qlog::Token\">Token</a>",1,["qlog::Token"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/struct.Trace.html\" title=\"struct qlog::Trace\">Trace</a>",1,["qlog::Trace"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/struct.TraceSeq.html\" title=\"struct qlog::TraceSeq\">TraceSeq</a>",1,["qlog::TraceSeq"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/struct.VantagePoint.html\" title=\"struct qlog::VantagePoint\">VantagePoint</a>",1,["qlog::VantagePoint"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"qlog/struct.HexSlice.html\" title=\"struct qlog::HexSlice\">HexSlice</a>&lt;'a&gt;",1,["qlog::HexSlice"]]],
+"quiche":[["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.Connection.html\" title=\"struct quiche::Connection\">Connection</a>",1,["quiche::Connection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"quiche/enum.CongestionControlAlgorithm.html\" title=\"enum quiche::CongestionControlAlgorithm\">CongestionControlAlgorithm</a>",1,["quiche::recovery::CongestionControlAlgorithm"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"quiche/enum.Error.html\" title=\"enum quiche::Error\">Error</a>",1,["quiche::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"quiche/enum.PathEvent.html\" title=\"enum quiche::PathEvent\">PathEvent</a>",1,["quiche::path::PathEvent"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"quiche/enum.QlogLevel.html\" title=\"enum quiche::QlogLevel\">QlogLevel</a>",1,["quiche::QlogLevel"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"quiche/enum.Shutdown.html\" title=\"enum quiche::Shutdown\">Shutdown</a>",1,["quiche::Shutdown"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"quiche/enum.Type.html\" title=\"enum quiche::Type\">Type</a>",1,["quiche::packet::Type"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"quiche/enum.WireErrorCode.html\" title=\"enum quiche::WireErrorCode\">WireErrorCode</a>",1,["quiche::WireErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"quiche/h3/enum.Error.html\" title=\"enum quiche::h3::Error\">Error</a>",1,["quiche::h3::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"quiche/h3/enum.Event.html\" title=\"enum quiche::h3::Event\">Event</a>",1,["quiche::h3::Event"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"quiche/h3/enum.WireErrorCode.html\" title=\"enum quiche::h3::WireErrorCode\">WireErrorCode</a>",1,["quiche::h3::WireErrorCode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche/h3/struct.Config.html\" title=\"struct quiche::h3::Config\">Config</a>",1,["quiche::h3::Config"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche/h3/struct.Connection.html\" title=\"struct quiche::h3::Connection\">Connection</a>",1,["quiche::h3::Connection"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche/h3/struct.Header.html\" title=\"struct quiche::h3::Header\">Header</a>",1,["quiche::h3::Header"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche/h3/struct.Priority.html\" title=\"struct quiche::h3::Priority\">Priority</a>",1,["quiche::h3::Priority"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.Config.html\" title=\"struct quiche::Config\">Config</a>",1,["quiche::Config"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionError.html\" title=\"struct quiche::ConnectionError\">ConnectionError</a>",1,["quiche::ConnectionError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.PathStats.html\" title=\"struct quiche::PathStats\">PathStats</a>",1,["quiche::path::PathStats"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.RecvInfo.html\" title=\"struct quiche::RecvInfo\">RecvInfo</a>",1,["quiche::RecvInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.SendInfo.html\" title=\"struct quiche::SendInfo\">SendInfo</a>",1,["quiche::SendInfo"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.SocketAddrIter.html\" title=\"struct quiche::SocketAddrIter\">SocketAddrIter</a>",1,["quiche::path::SocketAddrIter"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.Stats.html\" title=\"struct quiche::Stats\">Stats</a>",1,["quiche::Stats"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.StreamIter.html\" title=\"struct quiche::StreamIter\">StreamIter</a>",1,["quiche::stream::StreamIter"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.TransportParams.html\" title=\"struct quiche::TransportParams\">TransportParams</a>",1,["quiche::TransportParams"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche/h3/struct.HeaderRef.html\" title=\"struct quiche::h3::HeaderRef\">HeaderRef</a>&lt;'a&gt;",1,["quiche::h3::HeaderRef"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.ConnectionId.html\" title=\"struct quiche::ConnectionId\">ConnectionId</a>&lt;'a&gt;",1,["quiche::packet::ConnectionId"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche/struct.Header.html\" title=\"struct quiche::Header\">Header</a>&lt;'a&gt;",1,["quiche::packet::Header"]]],
+"quiche_apps":[["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Client.html\" title=\"struct quiche_apps::common::Client\">Client</a>",1,["quiche_apps::common::Client"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http09Conn.html\" title=\"struct quiche_apps::common::Http09Conn\">Http09Conn</a>",1,["quiche_apps::common::Http09Conn"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http3Conn.html\" title=\"struct quiche_apps::common::Http3Conn\">Http3Conn</a>",1,["quiche_apps::common::Http3Conn"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"quiche_apps/client/enum.ClientError.html\" title=\"enum quiche_apps::client::ClientError\">ClientError</a>",1,["quiche_apps::client::ClientError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.ClientArgs.html\" title=\"struct quiche_apps::args::ClientArgs\">ClientArgs</a>",1,["quiche_apps::args::ClientArgs"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.CommonArgs.html\" title=\"struct quiche_apps::args::CommonArgs\">CommonArgs</a>",1,["quiche_apps::args::CommonArgs"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/args/struct.ServerArgs.html\" title=\"struct quiche_apps::args::ServerArgs\">ServerArgs</a>",1,["quiche_apps::args::ServerArgs"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http09Request.html\" title=\"struct quiche_apps::common::Http09Request\">Http09Request</a>",1,["quiche_apps::common::Http09Request"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.Http3DgramSender.html\" title=\"struct quiche_apps::common::Http3DgramSender\">Http3DgramSender</a>",1,["quiche_apps::common::Http3DgramSender"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.PartialRequest.html\" title=\"struct quiche_apps::common::PartialRequest\">PartialRequest</a>",1,["quiche_apps::common::PartialRequest"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"quiche_apps/common/struct.PartialResponse.html\" title=\"struct quiche_apps::common::PartialResponse\">PartialResponse</a>",1,["quiche_apps::common::PartialResponse"]]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/str/traits/trait.FromStr.js b/trait.impl/core/str/traits/trait.FromStr.js
new file mode 100644
index 0000000..618088d
--- /dev/null
+++ b/trait.impl/core/str/traits/trait.FromStr.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"quiche":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"enum\" href=\"quiche/enum.CongestionControlAlgorithm.html\" title=\"enum quiche::CongestionControlAlgorithm\">CongestionControlAlgorithm</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/qlog/events/trait.Eventable.js b/trait.impl/qlog/events/trait.Eventable.js
new file mode 100644
index 0000000..b1edc65
--- /dev/null
+++ b/trait.impl/qlog/events/trait.Eventable.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"qlog":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/quiche/h3/trait.NameValue.js b/trait.impl/quiche/h3/trait.NameValue.js
new file mode 100644
index 0000000..d5aaed4
--- /dev/null
+++ b/trait.impl/quiche/h3/trait.NameValue.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"quiche":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/quiche_apps/args/trait.Args.js b/trait.impl/quiche_apps/args/trait.Args.js
new file mode 100644
index 0000000..1f6eb0e
--- /dev/null
+++ b/trait.impl/quiche_apps/args/trait.Args.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"quiche_apps":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/quiche_apps/common/trait.HttpConn.js b/trait.impl/quiche_apps/common/trait.HttpConn.js
new file mode 100644
index 0000000..1f6eb0e
--- /dev/null
+++ b/trait.impl/quiche_apps/common/trait.HttpConn.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"quiche_apps":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/serde/de/trait.Deserialize.js b/trait.impl/serde/de/trait.Deserialize.js
new file mode 100644
index 0000000..a1d0d4b
--- /dev/null
+++ b/trait.impl/serde/de/trait.Deserialize.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"qlog":[["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/enum.TokenType.html\" title=\"enum qlog::TokenType\">TokenType</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/enum.VantagePointType.html\" title=\"enum qlog::VantagePointType\">VantagePointType</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionClosedTrigger.html\" title=\"enum qlog::events::connectivity::ConnectionClosedTrigger\">ConnectionClosedTrigger</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionState.html\" title=\"enum qlog::events::connectivity::ConnectionState\">ConnectionState</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectivityEventType.html\" title=\"enum qlog::events::connectivity::ConnectivityEventType\">ConnectivityEventType</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/connectivity/enum.TransportOwner.html\" title=\"enum qlog::events::connectivity::TransportOwner\">TransportOwner</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/enum.ApplicationErrorCode.html\" title=\"enum qlog::events::ApplicationErrorCode\">ApplicationErrorCode</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/enum.ConnectionErrorCode.html\" title=\"enum qlog::events::ConnectionErrorCode\">ConnectionErrorCode</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/enum.CryptoError.html\" title=\"enum qlog::events::CryptoError\">CryptoError</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/enum.DataRecipient.html\" title=\"enum qlog::events::DataRecipient\">DataRecipient</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/enum.EventCategory.html\" title=\"enum qlog::events::EventCategory\">EventCategory</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/enum.EventData.html\" title=\"enum qlog::events::EventData\">EventData</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/enum.EventType.html\" title=\"enum qlog::events::EventType\">EventType</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/enum.GenericEventType.html\" title=\"enum qlog::events::GenericEventType\">GenericEventType</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/enum.TimeFormat.html\" title=\"enum qlog::events::TimeFormat\">TimeFormat</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/h3/enum.ApplicationError.html\" title=\"enum qlog::events::h3::ApplicationError\">ApplicationError</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/h3/enum.H3Owner.html\" title=\"enum qlog::events::h3::H3Owner\">H3Owner</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PriorityTargetStreamType.html\" title=\"enum qlog::events::h3::H3PriorityTargetStreamType\">H3PriorityTargetStreamType</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PushDecision.html\" title=\"enum qlog::events::h3::H3PushDecision\">H3PushDecision</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/h3/enum.H3StreamType.html\" title=\"enum qlog::events::h3::H3StreamType\">H3StreamType</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3EventType.html\" title=\"enum qlog::events::h3::Http3EventType\">Http3EventType</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3Frame.html\" title=\"enum qlog::events::h3::Http3Frame\">Http3Frame</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3FrameTypeName.html\" title=\"enum qlog::events::h3::Http3FrameTypeName\">Http3FrameTypeName</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/qpack/enum.QPackInstruction.html\" title=\"enum qlog::events::qpack::QPackInstruction\">QPackInstruction</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackEventType.html\" title=\"enum qlog::events::qpack::QpackEventType\">QpackEventType</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentation.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentation\">QpackHeaderBlockRepresentation</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentationTypeName.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName\">QpackHeaderBlockRepresentationTypeName</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackInstructionTypeName.html\" title=\"enum qlog::events::qpack::QpackInstructionTypeName\">QpackInstructionTypeName</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackOwner.html\" title=\"enum qlog::events::qpack::QpackOwner\">QpackOwner</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackStreamState.html\" title=\"enum qlog::events::qpack::QpackStreamState\">QpackStreamState</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackTableType.html\" title=\"enum qlog::events::qpack::QpackTableType\">QpackTableType</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackUpdateType.html\" title=\"enum qlog::events::qpack::QpackUpdateType\">QpackUpdateType</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.AckedRanges.html\" title=\"enum qlog::events::quic::AckedRanges\">AckedRanges</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.CongestionStateUpdatedTrigger.html\" title=\"enum qlog::events::quic::CongestionStateUpdatedTrigger\">CongestionStateUpdatedTrigger</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.ErrorSpace.html\" title=\"enum qlog::events::quic::ErrorSpace\">ErrorSpace</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.LossTimerEventType.html\" title=\"enum qlog::events::quic::LossTimerEventType\">LossTimerEventType</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketBufferedTrigger.html\" title=\"enum qlog::events::quic::PacketBufferedTrigger\">PacketBufferedTrigger</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketDroppedTrigger.html\" title=\"enum qlog::events::quic::PacketDroppedTrigger\">PacketDroppedTrigger</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketLostTrigger.html\" title=\"enum qlog::events::quic::PacketLostTrigger\">PacketLostTrigger</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketNumberSpace.html\" title=\"enum qlog::events::quic::PacketNumberSpace\">PacketNumberSpace</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketReceivedTrigger.html\" title=\"enum qlog::events::quic::PacketReceivedTrigger\">PacketReceivedTrigger</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketSentTrigger.html\" title=\"enum qlog::events::quic::PacketSentTrigger\">PacketSentTrigger</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketType.html\" title=\"enum qlog::events::quic::PacketType\">PacketType</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrame.html\" title=\"enum qlog::events::quic::QuicFrame\">QuicFrame</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrameTypeName.html\" title=\"enum qlog::events::quic::QuicFrameTypeName\">QuicFrameTypeName</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.RecoveryEventType.html\" title=\"enum qlog::events::quic::RecoveryEventType\">RecoveryEventType</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.SecurityEventType.html\" title=\"enum qlog::events::quic::SecurityEventType\">SecurityEventType</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamSide.html\" title=\"enum qlog::events::quic::StreamSide\">StreamSide</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamState.html\" title=\"enum qlog::events::quic::StreamState\">StreamState</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamType.html\" title=\"enum qlog::events::quic::StreamType\">StreamType</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.TimerType.html\" title=\"enum qlog::events::quic::TimerType\">TimerType</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportError.html\" title=\"enum qlog::events::quic::TransportError\">TransportError</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportEventType.html\" title=\"enum qlog::events::quic::TransportEventType\">TransportEventType</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/security/enum.KeyType.html\" title=\"enum qlog::events::security::KeyType\">KeyType</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"qlog/events/security/enum.KeyUpdateOrRetiredTrigger.html\" title=\"enum qlog::events::security::KeyUpdateOrRetiredTrigger\">KeyUpdateOrRetiredTrigger</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionClosed.html\" title=\"struct qlog::events::connectivity::ConnectionClosed\">ConnectionClosed</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionIdUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionIdUpdated\">ConnectionIdUpdated</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStarted.html\" title=\"struct qlog::events::connectivity::ConnectionStarted\">ConnectionStarted</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStateUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionStateUpdated\">ConnectionStateUpdated</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/connectivity/struct.MtuUpdated.html\" title=\"struct qlog::events::connectivity::MtuUpdated\">MtuUpdated</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ServerListening.html\" title=\"struct qlog::events::connectivity::ServerListening\">ServerListening</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/connectivity/struct.SpinBitUpdated.html\" title=\"struct qlog::events::connectivity::SpinBitUpdated\">SpinBitUpdated</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameCreated.html\" title=\"struct qlog::events::h3::H3FrameCreated\">H3FrameCreated</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameParsed.html\" title=\"struct qlog::events::h3::H3FrameParsed\">H3FrameParsed</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersRestored.html\" title=\"struct qlog::events::h3::H3ParametersRestored\">H3ParametersRestored</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersSet.html\" title=\"struct qlog::events::h3::H3ParametersSet\">H3ParametersSet</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/h3/struct.H3PushResolved.html\" title=\"struct qlog::events::h3::H3PushResolved\">H3PushResolved</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/h3/struct.H3StreamTypeSet.html\" title=\"struct qlog::events::h3::H3StreamTypeSet\">H3StreamTypeSet</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/h3/struct.HttpHeader.html\" title=\"struct qlog::events::h3::HttpHeader\">HttpHeader</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/h3/struct.Setting.html\" title=\"struct qlog::events::h3::Setting\">Setting</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableEntry.html\" title=\"struct qlog::events::qpack::QpackDynamicTableEntry\">QpackDynamicTableEntry</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableUpdated.html\" title=\"struct qlog::events::qpack::QpackDynamicTableUpdated\">QpackDynamicTableUpdated</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeaderBlockPrefix.html\" title=\"struct qlog::events::qpack::QpackHeaderBlockPrefix\">QpackHeaderBlockPrefix</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersDecoded.html\" title=\"struct qlog::events::qpack::QpackHeadersDecoded\">QpackHeadersDecoded</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersEncoded.html\" title=\"struct qlog::events::qpack::QpackHeadersEncoded\">QpackHeadersEncoded</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionCreated.html\" title=\"struct qlog::events::qpack::QpackInstructionCreated\">QpackInstructionCreated</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionParsed.html\" title=\"struct qlog::events::qpack::QpackInstructionParsed\">QpackInstructionParsed</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStateUpdated\">QpackStateUpdated</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStreamStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStreamStateUpdated\">QpackStreamStateUpdated</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.AlpnInformation.html\" title=\"struct qlog::events::quic::AlpnInformation\">AlpnInformation</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.CongestionStateUpdated.html\" title=\"struct qlog::events::quic::CongestionStateUpdated\">CongestionStateUpdated</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.DataMoved.html\" title=\"struct qlog::events::quic::DataMoved\">DataMoved</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramDropped.html\" title=\"struct qlog::events::quic::DatagramDropped\">DatagramDropped</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsReceived.html\" title=\"struct qlog::events::quic::DatagramsReceived\">DatagramsReceived</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsSent.html\" title=\"struct qlog::events::quic::DatagramsSent\">DatagramsSent</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.FramesProcessed.html\" title=\"struct qlog::events::quic::FramesProcessed\">FramesProcessed</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.LossTimerUpdated.html\" title=\"struct qlog::events::quic::LossTimerUpdated\">LossTimerUpdated</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.MarkedForRetransmit.html\" title=\"struct qlog::events::quic::MarkedForRetransmit\">MarkedForRetransmit</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.MetricsUpdated.html\" title=\"struct qlog::events::quic::MetricsUpdated\">MetricsUpdated</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketBuffered.html\" title=\"struct qlog::events::quic::PacketBuffered\">PacketBuffered</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketDropped.html\" title=\"struct qlog::events::quic::PacketDropped\">PacketDropped</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketHeader.html\" title=\"struct qlog::events::quic::PacketHeader\">PacketHeader</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketLost.html\" title=\"struct qlog::events::quic::PacketLost\">PacketLost</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketReceived.html\" title=\"struct qlog::events::quic::PacketReceived\">PacketReceived</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketSent.html\" title=\"struct qlog::events::quic::PacketSent\">PacketSent</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketsAcked.html\" title=\"struct qlog::events::quic::PacketsAcked\">PacketsAcked</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.PreferredAddress.html\" title=\"struct qlog::events::quic::PreferredAddress\">PreferredAddress</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.RecoveryParametersSet.html\" title=\"struct qlog::events::quic::RecoveryParametersSet\">RecoveryParametersSet</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.StreamStateUpdated.html\" title=\"struct qlog::events::quic::StreamStateUpdated\">StreamStateUpdated</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersRestored.html\" title=\"struct qlog::events::quic::TransportParametersRestored\">TransportParametersRestored</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersSet.html\" title=\"struct qlog::events::quic::TransportParametersSet\">TransportParametersSet</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/quic/struct.VersionInformation.html\" title=\"struct qlog::events::quic::VersionInformation\">VersionInformation</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/security/struct.KeyDiscarded.html\" title=\"struct qlog::events::security::KeyDiscarded\">KeyDiscarded</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/security/struct.KeyUpdated.html\" title=\"struct qlog::events::security::KeyUpdated\">KeyUpdated</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/struct.Event.html\" title=\"struct qlog::events::Event\">Event</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/struct.JsonEvent.html\" title=\"struct qlog::events::JsonEvent\">JsonEvent</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/events/struct.RawInfo.html\" title=\"struct qlog::events::RawInfo\">RawInfo</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/struct.CommonFields.html\" title=\"struct qlog::CommonFields\">CommonFields</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/struct.Configuration.html\" title=\"struct qlog::Configuration\">Configuration</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/struct.Qlog.html\" title=\"struct qlog::Qlog\">Qlog</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/struct.QlogSeq.html\" title=\"struct qlog::QlogSeq\">QlogSeq</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/struct.Token.html\" title=\"struct qlog::Token\">Token</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/struct.Trace.html\" title=\"struct qlog::Trace\">Trace</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/struct.TraceSeq.html\" title=\"struct qlog::TraceSeq\">TraceSeq</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"qlog/struct.VantagePoint.html\" title=\"struct qlog::VantagePoint\">VantagePoint</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/serde/ser/trait.Serialize.js b/trait.impl/serde/ser/trait.Serialize.js
new file mode 100644
index 0000000..b4afdbc
--- /dev/null
+++ b/trait.impl/serde/ser/trait.Serialize.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"qlog":[["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/enum.TokenType.html\" title=\"enum qlog::TokenType\">TokenType</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/enum.VantagePointType.html\" title=\"enum qlog::VantagePointType\">VantagePointType</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionClosedTrigger.html\" title=\"enum qlog::events::connectivity::ConnectionClosedTrigger\">ConnectionClosedTrigger</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectionState.html\" title=\"enum qlog::events::connectivity::ConnectionState\">ConnectionState</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.ConnectivityEventType.html\" title=\"enum qlog::events::connectivity::ConnectivityEventType\">ConnectivityEventType</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/connectivity/enum.TransportOwner.html\" title=\"enum qlog::events::connectivity::TransportOwner\">TransportOwner</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/enum.ApplicationErrorCode.html\" title=\"enum qlog::events::ApplicationErrorCode\">ApplicationErrorCode</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/enum.ConnectionErrorCode.html\" title=\"enum qlog::events::ConnectionErrorCode\">ConnectionErrorCode</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/enum.CryptoError.html\" title=\"enum qlog::events::CryptoError\">CryptoError</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/enum.DataRecipient.html\" title=\"enum qlog::events::DataRecipient\">DataRecipient</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/enum.EventCategory.html\" title=\"enum qlog::events::EventCategory\">EventCategory</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/enum.EventData.html\" title=\"enum qlog::events::EventData\">EventData</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/enum.EventType.html\" title=\"enum qlog::events::EventType\">EventType</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/enum.GenericEventType.html\" title=\"enum qlog::events::GenericEventType\">GenericEventType</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/enum.TimeFormat.html\" title=\"enum qlog::events::TimeFormat\">TimeFormat</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.ApplicationError.html\" title=\"enum qlog::events::h3::ApplicationError\">ApplicationError</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3Owner.html\" title=\"enum qlog::events::h3::H3Owner\">H3Owner</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PriorityTargetStreamType.html\" title=\"enum qlog::events::h3::H3PriorityTargetStreamType\">H3PriorityTargetStreamType</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3PushDecision.html\" title=\"enum qlog::events::h3::H3PushDecision\">H3PushDecision</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.H3StreamType.html\" title=\"enum qlog::events::h3::H3StreamType\">H3StreamType</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3EventType.html\" title=\"enum qlog::events::h3::Http3EventType\">Http3EventType</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3Frame.html\" title=\"enum qlog::events::h3::Http3Frame\">Http3Frame</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/h3/enum.Http3FrameTypeName.html\" title=\"enum qlog::events::h3::Http3FrameTypeName\">Http3FrameTypeName</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QPackInstruction.html\" title=\"enum qlog::events::qpack::QPackInstruction\">QPackInstruction</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackEventType.html\" title=\"enum qlog::events::qpack::QpackEventType\">QpackEventType</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentation.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentation\">QpackHeaderBlockRepresentation</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackHeaderBlockRepresentationTypeName.html\" title=\"enum qlog::events::qpack::QpackHeaderBlockRepresentationTypeName\">QpackHeaderBlockRepresentationTypeName</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackInstructionTypeName.html\" title=\"enum qlog::events::qpack::QpackInstructionTypeName\">QpackInstructionTypeName</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackOwner.html\" title=\"enum qlog::events::qpack::QpackOwner\">QpackOwner</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackStreamState.html\" title=\"enum qlog::events::qpack::QpackStreamState\">QpackStreamState</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackTableType.html\" title=\"enum qlog::events::qpack::QpackTableType\">QpackTableType</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/qpack/enum.QpackUpdateType.html\" title=\"enum qlog::events::qpack::QpackUpdateType\">QpackUpdateType</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.AckedRanges.html\" title=\"enum qlog::events::quic::AckedRanges\">AckedRanges</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.CongestionStateUpdatedTrigger.html\" title=\"enum qlog::events::quic::CongestionStateUpdatedTrigger\">CongestionStateUpdatedTrigger</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.ErrorSpace.html\" title=\"enum qlog::events::quic::ErrorSpace\">ErrorSpace</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.LossTimerEventType.html\" title=\"enum qlog::events::quic::LossTimerEventType\">LossTimerEventType</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketBufferedTrigger.html\" title=\"enum qlog::events::quic::PacketBufferedTrigger\">PacketBufferedTrigger</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketDroppedTrigger.html\" title=\"enum qlog::events::quic::PacketDroppedTrigger\">PacketDroppedTrigger</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketLostTrigger.html\" title=\"enum qlog::events::quic::PacketLostTrigger\">PacketLostTrigger</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketNumberSpace.html\" title=\"enum qlog::events::quic::PacketNumberSpace\">PacketNumberSpace</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketReceivedTrigger.html\" title=\"enum qlog::events::quic::PacketReceivedTrigger\">PacketReceivedTrigger</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketSentTrigger.html\" title=\"enum qlog::events::quic::PacketSentTrigger\">PacketSentTrigger</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.PacketType.html\" title=\"enum qlog::events::quic::PacketType\">PacketType</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrame.html\" title=\"enum qlog::events::quic::QuicFrame\">QuicFrame</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.QuicFrameTypeName.html\" title=\"enum qlog::events::quic::QuicFrameTypeName\">QuicFrameTypeName</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.RecoveryEventType.html\" title=\"enum qlog::events::quic::RecoveryEventType\">RecoveryEventType</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.SecurityEventType.html\" title=\"enum qlog::events::quic::SecurityEventType\">SecurityEventType</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamSide.html\" title=\"enum qlog::events::quic::StreamSide\">StreamSide</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamState.html\" title=\"enum qlog::events::quic::StreamState\">StreamState</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.StreamType.html\" title=\"enum qlog::events::quic::StreamType\">StreamType</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TimerType.html\" title=\"enum qlog::events::quic::TimerType\">TimerType</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportError.html\" title=\"enum qlog::events::quic::TransportError\">TransportError</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/quic/enum.TransportEventType.html\" title=\"enum qlog::events::quic::TransportEventType\">TransportEventType</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyType.html\" title=\"enum qlog::events::security::KeyType\">KeyType</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"qlog/events/security/enum.KeyUpdateOrRetiredTrigger.html\" title=\"enum qlog::events::security::KeyUpdateOrRetiredTrigger\">KeyUpdateOrRetiredTrigger</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionClosed.html\" title=\"struct qlog::events::connectivity::ConnectionClosed\">ConnectionClosed</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionIdUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionIdUpdated\">ConnectionIdUpdated</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStarted.html\" title=\"struct qlog::events::connectivity::ConnectionStarted\">ConnectionStarted</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ConnectionStateUpdated.html\" title=\"struct qlog::events::connectivity::ConnectionStateUpdated\">ConnectionStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.MtuUpdated.html\" title=\"struct qlog::events::connectivity::MtuUpdated\">MtuUpdated</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.ServerListening.html\" title=\"struct qlog::events::connectivity::ServerListening\">ServerListening</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/connectivity/struct.SpinBitUpdated.html\" title=\"struct qlog::events::connectivity::SpinBitUpdated\">SpinBitUpdated</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameCreated.html\" title=\"struct qlog::events::h3::H3FrameCreated\">H3FrameCreated</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3FrameParsed.html\" title=\"struct qlog::events::h3::H3FrameParsed\">H3FrameParsed</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersRestored.html\" title=\"struct qlog::events::h3::H3ParametersRestored\">H3ParametersRestored</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3ParametersSet.html\" title=\"struct qlog::events::h3::H3ParametersSet\">H3ParametersSet</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3PushResolved.html\" title=\"struct qlog::events::h3::H3PushResolved\">H3PushResolved</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.H3StreamTypeSet.html\" title=\"struct qlog::events::h3::H3StreamTypeSet\">H3StreamTypeSet</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.HttpHeader.html\" title=\"struct qlog::events::h3::HttpHeader\">HttpHeader</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/h3/struct.Setting.html\" title=\"struct qlog::events::h3::Setting\">Setting</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableEntry.html\" title=\"struct qlog::events::qpack::QpackDynamicTableEntry\">QpackDynamicTableEntry</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackDynamicTableUpdated.html\" title=\"struct qlog::events::qpack::QpackDynamicTableUpdated\">QpackDynamicTableUpdated</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeaderBlockPrefix.html\" title=\"struct qlog::events::qpack::QpackHeaderBlockPrefix\">QpackHeaderBlockPrefix</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersDecoded.html\" title=\"struct qlog::events::qpack::QpackHeadersDecoded\">QpackHeadersDecoded</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackHeadersEncoded.html\" title=\"struct qlog::events::qpack::QpackHeadersEncoded\">QpackHeadersEncoded</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionCreated.html\" title=\"struct qlog::events::qpack::QpackInstructionCreated\">QpackInstructionCreated</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackInstructionParsed.html\" title=\"struct qlog::events::qpack::QpackInstructionParsed\">QpackInstructionParsed</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStateUpdated\">QpackStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/qpack/struct.QpackStreamStateUpdated.html\" title=\"struct qlog::events::qpack::QpackStreamStateUpdated\">QpackStreamStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.AlpnInformation.html\" title=\"struct qlog::events::quic::AlpnInformation\">AlpnInformation</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.CongestionStateUpdated.html\" title=\"struct qlog::events::quic::CongestionStateUpdated\">CongestionStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DataMoved.html\" title=\"struct qlog::events::quic::DataMoved\">DataMoved</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramDropped.html\" title=\"struct qlog::events::quic::DatagramDropped\">DatagramDropped</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsReceived.html\" title=\"struct qlog::events::quic::DatagramsReceived\">DatagramsReceived</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.DatagramsSent.html\" title=\"struct qlog::events::quic::DatagramsSent\">DatagramsSent</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.FramesProcessed.html\" title=\"struct qlog::events::quic::FramesProcessed\">FramesProcessed</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.LossTimerUpdated.html\" title=\"struct qlog::events::quic::LossTimerUpdated\">LossTimerUpdated</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MarkedForRetransmit.html\" title=\"struct qlog::events::quic::MarkedForRetransmit\">MarkedForRetransmit</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.MetricsUpdated.html\" title=\"struct qlog::events::quic::MetricsUpdated\">MetricsUpdated</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketBuffered.html\" title=\"struct qlog::events::quic::PacketBuffered\">PacketBuffered</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketDropped.html\" title=\"struct qlog::events::quic::PacketDropped\">PacketDropped</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketHeader.html\" title=\"struct qlog::events::quic::PacketHeader\">PacketHeader</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketLost.html\" title=\"struct qlog::events::quic::PacketLost\">PacketLost</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketReceived.html\" title=\"struct qlog::events::quic::PacketReceived\">PacketReceived</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketSent.html\" title=\"struct qlog::events::quic::PacketSent\">PacketSent</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PacketsAcked.html\" title=\"struct qlog::events::quic::PacketsAcked\">PacketsAcked</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.PreferredAddress.html\" title=\"struct qlog::events::quic::PreferredAddress\">PreferredAddress</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.RecoveryParametersSet.html\" title=\"struct qlog::events::quic::RecoveryParametersSet\">RecoveryParametersSet</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.StreamStateUpdated.html\" title=\"struct qlog::events::quic::StreamStateUpdated\">StreamStateUpdated</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersRestored.html\" title=\"struct qlog::events::quic::TransportParametersRestored\">TransportParametersRestored</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.TransportParametersSet.html\" title=\"struct qlog::events::quic::TransportParametersSet\">TransportParametersSet</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/quic/struct.VersionInformation.html\" title=\"struct qlog::events::quic::VersionInformation\">VersionInformation</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyDiscarded.html\" title=\"struct qlog::events::security::KeyDiscarded\">KeyDiscarded</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/security/struct.KeyUpdated.html\" title=\"struct qlog::events::security::KeyUpdated\">KeyUpdated</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/struct.Event.html\" title=\"struct qlog::events::Event\">Event</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/struct.JsonEvent.html\" title=\"struct qlog::events::JsonEvent\">JsonEvent</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/events/struct.RawInfo.html\" title=\"struct qlog::events::RawInfo\">RawInfo</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/struct.CommonFields.html\" title=\"struct qlog::CommonFields\">CommonFields</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/struct.Configuration.html\" title=\"struct qlog::Configuration\">Configuration</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/struct.Qlog.html\" title=\"struct qlog::Qlog\">Qlog</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/struct.QlogSeq.html\" title=\"struct qlog::QlogSeq\">QlogSeq</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/struct.Token.html\" title=\"struct qlog::Token\">Token</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/struct.Trace.html\" title=\"struct qlog::Trace\">Trace</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/struct.TraceSeq.html\" title=\"struct qlog::TraceSeq\">TraceSeq</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"qlog/struct.VantagePoint.html\" title=\"struct qlog::VantagePoint\">VantagePoint</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/type.impl/alloc/collections/btree/map/struct.BTreeMap.js b/type.impl/alloc/collections/btree/map/struct.BTreeMap.js
new file mode 100644
index 0000000..538b38b
--- /dev/null
+++ b/type.impl/alloc/collections/btree/map/struct.BTreeMap.js
@@ -0,0 +1,3 @@
+(function() {var type_impls = {
+"qlog":[["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-BTreeMap%3CK,+V%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#610\">source</a><a href=\"#impl-BTreeMap%3CK,+V%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.new\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0, const since 1.66.0\">1.0.0 (const: 1.66.0)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#629\">source</a></span><h4 class=\"code-header\">pub const fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.new\" class=\"fn\">new</a>() -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V&gt;</h4></section></summary><div class=\"docblock\"><p>Makes a new, empty <code>BTreeMap</code>.</p>\n<p>Does not allocate anything on its own.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::new();\n\n<span class=\"comment\">// entries can now be inserted into the empty map\n</span>map.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);</code></pre></div>\n</div></details></div></details>",0,"qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-BTreeMap%3CK,+V,+A%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2359\">source</a><a href=\"#impl-BTreeMap%3CK,+V,+A%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, A&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;<div class=\"where\">where\n    A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.iter\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2380\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.iter\" class=\"fn\">iter</a>(&amp;self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.Iter.html\" title=\"struct alloc::collections::btree::map::Iter\">Iter</a>&lt;'_, K, V&gt;</h4></section></summary><div class=\"docblock\"><p>Gets an iterator over the entries of the map, sorted by key.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::new();\nmap.insert(<span class=\"number\">3</span>, <span class=\"string\">\"c\"</span>);\nmap.insert(<span class=\"number\">2</span>, <span class=\"string\">\"b\"</span>);\nmap.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\n\n<span class=\"kw\">for </span>(key, value) <span class=\"kw\">in </span>map.iter() {\n    <span class=\"macro\">println!</span>(<span class=\"string\">\"{key}: {value}\"</span>);\n}\n\n<span class=\"kw\">let </span>(first_key, first_value) = map.iter().next().unwrap();\n<span class=\"macro\">assert_eq!</span>((<span class=\"kw-2\">*</span>first_key, <span class=\"kw-2\">*</span>first_value), (<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.iter_mut\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2411\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.iter_mut\" class=\"fn\">iter_mut</a>(&amp;mut self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.IterMut.html\" title=\"struct alloc::collections::btree::map::IterMut\">IterMut</a>&lt;'_, K, V&gt;</h4></section></summary><div class=\"docblock\"><p>Gets a mutable iterator over the entries of the map, sorted by key.</p>\n<h5 id=\"examples-1\"><a class=\"doc-anchor\" href=\"#examples-1\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::from([\n   (<span class=\"string\">\"a\"</span>, <span class=\"number\">1</span>),\n   (<span class=\"string\">\"b\"</span>, <span class=\"number\">2</span>),\n   (<span class=\"string\">\"c\"</span>, <span class=\"number\">3</span>),\n]);\n\n<span class=\"comment\">// add 10 to the value if the key isn't \"a\"\n</span><span class=\"kw\">for </span>(key, value) <span class=\"kw\">in </span>map.iter_mut() {\n    <span class=\"kw\">if </span>key != <span class=\"kw-2\">&amp;</span><span class=\"string\">\"a\" </span>{\n        <span class=\"kw-2\">*</span>value += <span class=\"number\">10</span>;\n    }\n}</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.keys\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2436\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.keys\" class=\"fn\">keys</a>(&amp;self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.Keys.html\" title=\"struct alloc::collections::btree::map::Keys\">Keys</a>&lt;'_, K, V&gt;</h4></section></summary><div class=\"docblock\"><p>Gets an iterator over the keys of the map, in sorted order.</p>\n<h5 id=\"examples-2\"><a class=\"doc-anchor\" href=\"#examples-2\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>a = BTreeMap::new();\na.insert(<span class=\"number\">2</span>, <span class=\"string\">\"b\"</span>);\na.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\n\n<span class=\"kw\">let </span>keys: Vec&lt;<span class=\"kw\">_</span>&gt; = a.keys().cloned().collect();\n<span class=\"macro\">assert_eq!</span>(keys, [<span class=\"number\">1</span>, <span class=\"number\">2</span>]);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.values\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2455\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.values\" class=\"fn\">values</a>(&amp;self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.Values.html\" title=\"struct alloc::collections::btree::map::Values\">Values</a>&lt;'_, K, V&gt;</h4></section></summary><div class=\"docblock\"><p>Gets an iterator over the values of the map, in order by key.</p>\n<h5 id=\"examples-3\"><a class=\"doc-anchor\" href=\"#examples-3\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>a = BTreeMap::new();\na.insert(<span class=\"number\">1</span>, <span class=\"string\">\"hello\"</span>);\na.insert(<span class=\"number\">2</span>, <span class=\"string\">\"goodbye\"</span>);\n\n<span class=\"kw\">let </span>values: Vec&lt;<span class=\"kw-2\">&amp;</span>str&gt; = a.values().cloned().collect();\n<span class=\"macro\">assert_eq!</span>(values, [<span class=\"string\">\"hello\"</span>, <span class=\"string\">\"goodbye\"</span>]);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.values_mut\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.10.0\">1.10.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2479\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.values_mut\" class=\"fn\">values_mut</a>(&amp;mut self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.ValuesMut.html\" title=\"struct alloc::collections::btree::map::ValuesMut\">ValuesMut</a>&lt;'_, K, V&gt;</h4></section></summary><div class=\"docblock\"><p>Gets a mutable iterator over the values of the map, in order by key.</p>\n<h5 id=\"examples-4\"><a class=\"doc-anchor\" href=\"#examples-4\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>a = BTreeMap::new();\na.insert(<span class=\"number\">1</span>, String::from(<span class=\"string\">\"hello\"</span>));\na.insert(<span class=\"number\">2</span>, String::from(<span class=\"string\">\"goodbye\"</span>));\n\n<span class=\"kw\">for </span>value <span class=\"kw\">in </span>a.values_mut() {\n    value.push_str(<span class=\"string\">\"!\"</span>);\n}\n\n<span class=\"kw\">let </span>values: Vec&lt;String&gt; = a.values().cloned().collect();\n<span class=\"macro\">assert_eq!</span>(values, [String::from(<span class=\"string\">\"hello!\"</span>),\n                    String::from(<span class=\"string\">\"goodbye!\"</span>)]);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.len\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0, const unstable\">1.0.0 (const: <a href=\"https://github.com/rust-lang/rust/issues/71835\" title=\"Tracking issue for const_btree_len\">unstable</a>)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2503\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.len\" class=\"fn\">len</a>(&amp;self) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a></h4></section></summary><div class=\"docblock\"><p>Returns the number of elements in the map.</p>\n<h5 id=\"examples-5\"><a class=\"doc-anchor\" href=\"#examples-5\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>a = BTreeMap::new();\n<span class=\"macro\">assert_eq!</span>(a.len(), <span class=\"number\">0</span>);\na.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert_eq!</span>(a.len(), <span class=\"number\">1</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.is_empty\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0, const unstable\">1.0.0 (const: <a href=\"https://github.com/rust-lang/rust/issues/71835\" title=\"Tracking issue for const_btree_len\">unstable</a>)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2526\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.is_empty\" class=\"fn\">is_empty</a>(&amp;self) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class=\"docblock\"><p>Returns <code>true</code> if the map contains no elements.</p>\n<h5 id=\"examples-6\"><a class=\"doc-anchor\" href=\"#examples-6\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>a = BTreeMap::new();\n<span class=\"macro\">assert!</span>(a.is_empty());\na.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert!</span>(!a.is_empty());</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.lower_bound\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2570-2573\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.lower_bound\" class=\"fn\">lower_bound</a>&lt;Q&gt;(&amp;self, bound: <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/ops/range/enum.Bound.html\" title=\"enum core::ops::range::Bound\">Bound</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>&gt;) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.Cursor.html\" title=\"struct alloc::collections::btree::map::Cursor\">Cursor</a>&lt;'_, K, V&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt; + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>btree_cursors</code>)</span></div></span></summary><div class=\"docblock\"><p>Returns a <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.Cursor.html\" title=\"struct alloc::collections::btree::map::Cursor\"><code>Cursor</code></a> pointing at the gap before the smallest key\ngreater than the given bound.</p>\n<p>Passing <code>Bound::Included(x)</code> will return a cursor pointing to the\ngap before the smallest key greater than or equal to <code>x</code>.</p>\n<p>Passing <code>Bound::Excluded(x)</code> will return a cursor pointing to the\ngap before the smallest key greater than <code>x</code>.</p>\n<p>Passing <code>Bound::Unbounded</code> will return a cursor pointing to the\ngap before the smallest key in the map.</p>\n<h5 id=\"examples-7\"><a class=\"doc-anchor\" href=\"#examples-7\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(btree_cursors)]\n\n</span><span class=\"kw\">use </span>std::collections::BTreeMap;\n<span class=\"kw\">use </span>std::ops::Bound;\n\n<span class=\"kw\">let </span>map = BTreeMap::from([\n    (<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>),\n    (<span class=\"number\">2</span>, <span class=\"string\">\"b\"</span>),\n    (<span class=\"number\">3</span>, <span class=\"string\">\"c\"</span>),\n    (<span class=\"number\">4</span>, <span class=\"string\">\"d\"</span>),\n]);\n\n<span class=\"kw\">let </span>cursor = map.lower_bound(Bound::Included(<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>));\n<span class=\"macro\">assert_eq!</span>(cursor.peek_prev(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>, <span class=\"kw-2\">&amp;</span><span class=\"string\">\"a\"</span>)));\n<span class=\"macro\">assert_eq!</span>(cursor.peek_next(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>, <span class=\"kw-2\">&amp;</span><span class=\"string\">\"b\"</span>)));\n\n<span class=\"kw\">let </span>cursor = map.lower_bound(Bound::Excluded(<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>));\n<span class=\"macro\">assert_eq!</span>(cursor.peek_prev(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>, <span class=\"kw-2\">&amp;</span><span class=\"string\">\"b\"</span>)));\n<span class=\"macro\">assert_eq!</span>(cursor.peek_next(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">3</span>, <span class=\"kw-2\">&amp;</span><span class=\"string\">\"c\"</span>)));\n\n<span class=\"kw\">let </span>cursor = map.lower_bound(Bound::Unbounded);\n<span class=\"macro\">assert_eq!</span>(cursor.peek_prev(), <span class=\"prelude-val\">None</span>);\n<span class=\"macro\">assert_eq!</span>(cursor.peek_next(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>, <span class=\"kw-2\">&amp;</span><span class=\"string\">\"a\"</span>)));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.lower_bound_mut\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2623-2626\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.lower_bound_mut\" class=\"fn\">lower_bound_mut</a>&lt;Q&gt;(&amp;mut self, bound: <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/ops/range/enum.Bound.html\" title=\"enum core::ops::range::Bound\">Bound</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>&gt;) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.CursorMut.html\" title=\"struct alloc::collections::btree::map::CursorMut\">CursorMut</a>&lt;'_, K, V, A&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt; + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>btree_cursors</code>)</span></div></span></summary><div class=\"docblock\"><p>Returns a <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.CursorMut.html\" title=\"struct alloc::collections::btree::map::CursorMut\"><code>CursorMut</code></a> pointing at the gap before the smallest key\ngreater than the given bound.</p>\n<p>Passing <code>Bound::Included(x)</code> will return a cursor pointing to the\ngap before the smallest key greater than or equal to <code>x</code>.</p>\n<p>Passing <code>Bound::Excluded(x)</code> will return a cursor pointing to the\ngap before the smallest key greater than <code>x</code>.</p>\n<p>Passing <code>Bound::Unbounded</code> will return a cursor pointing to the\ngap before the smallest key in the map.</p>\n<h5 id=\"examples-8\"><a class=\"doc-anchor\" href=\"#examples-8\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(btree_cursors)]\n\n</span><span class=\"kw\">use </span>std::collections::BTreeMap;\n<span class=\"kw\">use </span>std::ops::Bound;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::from([\n    (<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>),\n    (<span class=\"number\">2</span>, <span class=\"string\">\"b\"</span>),\n    (<span class=\"number\">3</span>, <span class=\"string\">\"c\"</span>),\n    (<span class=\"number\">4</span>, <span class=\"string\">\"d\"</span>),\n]);\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>cursor = map.lower_bound_mut(Bound::Included(<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>));\n<span class=\"macro\">assert_eq!</span>(cursor.peek_prev(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>, <span class=\"kw-2\">&amp;mut </span><span class=\"string\">\"a\"</span>)));\n<span class=\"macro\">assert_eq!</span>(cursor.peek_next(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>, <span class=\"kw-2\">&amp;mut </span><span class=\"string\">\"b\"</span>)));\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>cursor = map.lower_bound_mut(Bound::Excluded(<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>));\n<span class=\"macro\">assert_eq!</span>(cursor.peek_prev(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>, <span class=\"kw-2\">&amp;mut </span><span class=\"string\">\"b\"</span>)));\n<span class=\"macro\">assert_eq!</span>(cursor.peek_next(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">3</span>, <span class=\"kw-2\">&amp;mut </span><span class=\"string\">\"c\"</span>)));\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>cursor = map.lower_bound_mut(Bound::Unbounded);\n<span class=\"macro\">assert_eq!</span>(cursor.peek_prev(), <span class=\"prelude-val\">None</span>);\n<span class=\"macro\">assert_eq!</span>(cursor.peek_next(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>, <span class=\"kw-2\">&amp;mut </span><span class=\"string\">\"a\"</span>)));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.upper_bound\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2693-2696\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.upper_bound\" class=\"fn\">upper_bound</a>&lt;Q&gt;(&amp;self, bound: <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/ops/range/enum.Bound.html\" title=\"enum core::ops::range::Bound\">Bound</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>&gt;) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.Cursor.html\" title=\"struct alloc::collections::btree::map::Cursor\">Cursor</a>&lt;'_, K, V&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt; + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>btree_cursors</code>)</span></div></span></summary><div class=\"docblock\"><p>Returns a <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.Cursor.html\" title=\"struct alloc::collections::btree::map::Cursor\"><code>Cursor</code></a> pointing at the gap after the greatest key\nsmaller than the given bound.</p>\n<p>Passing <code>Bound::Included(x)</code> will return a cursor pointing to the\ngap after the greatest key smaller than or equal to <code>x</code>.</p>\n<p>Passing <code>Bound::Excluded(x)</code> will return a cursor pointing to the\ngap after the greatest key smaller than <code>x</code>.</p>\n<p>Passing <code>Bound::Unbounded</code> will return a cursor pointing to the\ngap after the greatest key in the map.</p>\n<h5 id=\"examples-9\"><a class=\"doc-anchor\" href=\"#examples-9\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(btree_cursors)]\n\n</span><span class=\"kw\">use </span>std::collections::BTreeMap;\n<span class=\"kw\">use </span>std::ops::Bound;\n\n<span class=\"kw\">let </span>map = BTreeMap::from([\n    (<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>),\n    (<span class=\"number\">2</span>, <span class=\"string\">\"b\"</span>),\n    (<span class=\"number\">3</span>, <span class=\"string\">\"c\"</span>),\n    (<span class=\"number\">4</span>, <span class=\"string\">\"d\"</span>),\n]);\n\n<span class=\"kw\">let </span>cursor = map.upper_bound(Bound::Included(<span class=\"kw-2\">&amp;</span><span class=\"number\">3</span>));\n<span class=\"macro\">assert_eq!</span>(cursor.peek_prev(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">3</span>, <span class=\"kw-2\">&amp;</span><span class=\"string\">\"c\"</span>)));\n<span class=\"macro\">assert_eq!</span>(cursor.peek_next(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">4</span>, <span class=\"kw-2\">&amp;</span><span class=\"string\">\"d\"</span>)));\n\n<span class=\"kw\">let </span>cursor = map.upper_bound(Bound::Excluded(<span class=\"kw-2\">&amp;</span><span class=\"number\">3</span>));\n<span class=\"macro\">assert_eq!</span>(cursor.peek_prev(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>, <span class=\"kw-2\">&amp;</span><span class=\"string\">\"b\"</span>)));\n<span class=\"macro\">assert_eq!</span>(cursor.peek_next(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">3</span>, <span class=\"kw-2\">&amp;</span><span class=\"string\">\"c\"</span>)));\n\n<span class=\"kw\">let </span>cursor = map.upper_bound(Bound::Unbounded);\n<span class=\"macro\">assert_eq!</span>(cursor.peek_prev(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">4</span>, <span class=\"kw-2\">&amp;</span><span class=\"string\">\"d\"</span>)));\n<span class=\"macro\">assert_eq!</span>(cursor.peek_next(), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.upper_bound_mut\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2746-2749\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.upper_bound_mut\" class=\"fn\">upper_bound_mut</a>&lt;Q&gt;(&amp;mut self, bound: <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/ops/range/enum.Bound.html\" title=\"enum core::ops::range::Bound\">Bound</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>&gt;) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.CursorMut.html\" title=\"struct alloc::collections::btree::map::CursorMut\">CursorMut</a>&lt;'_, K, V, A&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt; + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>btree_cursors</code>)</span></div></span></summary><div class=\"docblock\"><p>Returns a <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.CursorMut.html\" title=\"struct alloc::collections::btree::map::CursorMut\"><code>CursorMut</code></a> pointing at the gap after the greatest key\nsmaller than the given bound.</p>\n<p>Passing <code>Bound::Included(x)</code> will return a cursor pointing to the\ngap after the greatest key smaller than or equal to <code>x</code>.</p>\n<p>Passing <code>Bound::Excluded(x)</code> will return a cursor pointing to the\ngap after the greatest key smaller than <code>x</code>.</p>\n<p>Passing <code>Bound::Unbounded</code> will return a cursor pointing to the\ngap after the greatest key in the map.</p>\n<h5 id=\"examples-10\"><a class=\"doc-anchor\" href=\"#examples-10\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(btree_cursors)]\n\n</span><span class=\"kw\">use </span>std::collections::BTreeMap;\n<span class=\"kw\">use </span>std::ops::Bound;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::from([\n    (<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>),\n    (<span class=\"number\">2</span>, <span class=\"string\">\"b\"</span>),\n    (<span class=\"number\">3</span>, <span class=\"string\">\"c\"</span>),\n    (<span class=\"number\">4</span>, <span class=\"string\">\"d\"</span>),\n]);\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>cursor = map.upper_bound_mut(Bound::Included(<span class=\"kw-2\">&amp;</span><span class=\"number\">3</span>));\n<span class=\"macro\">assert_eq!</span>(cursor.peek_prev(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">3</span>, <span class=\"kw-2\">&amp;mut </span><span class=\"string\">\"c\"</span>)));\n<span class=\"macro\">assert_eq!</span>(cursor.peek_next(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">4</span>, <span class=\"kw-2\">&amp;mut </span><span class=\"string\">\"d\"</span>)));\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>cursor = map.upper_bound_mut(Bound::Excluded(<span class=\"kw-2\">&amp;</span><span class=\"number\">3</span>));\n<span class=\"macro\">assert_eq!</span>(cursor.peek_prev(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>, <span class=\"kw-2\">&amp;mut </span><span class=\"string\">\"b\"</span>)));\n<span class=\"macro\">assert_eq!</span>(cursor.peek_next(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">3</span>, <span class=\"kw-2\">&amp;mut </span><span class=\"string\">\"c\"</span>)));\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>cursor = map.upper_bound_mut(Bound::Unbounded);\n<span class=\"macro\">assert_eq!</span>(cursor.peek_prev(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">4</span>, <span class=\"kw-2\">&amp;mut </span><span class=\"string\">\"d\"</span>)));\n<span class=\"macro\">assert_eq!</span>(cursor.peek_next(), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details></div></details>",0,"qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-BTreeMap%3CK,+V,+A%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#634\">source</a><a href=\"#impl-BTreeMap%3CK,+V,+A%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, A&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;<div class=\"where\">where\n    A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.clear\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#648\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.clear\" class=\"fn\">clear</a>(&amp;mut self)</h4></section></summary><div class=\"docblock\"><p>Clears the map, removing all elements.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>a = BTreeMap::new();\na.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\na.clear();\n<span class=\"macro\">assert!</span>(a.is_empty());</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.new_in\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#674\">source</a><h4 class=\"code-header\">pub const fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.new_in\" class=\"fn\">new_in</a>(alloc: A) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;</h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>btreemap_alloc</code>)</span></div></span></summary><div class=\"docblock\"><p>Makes a new empty BTreeMap with a reasonable choice for B.</p>\n<h5 id=\"examples-1\"><a class=\"doc-anchor\" href=\"#examples-1\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n<span class=\"kw\">use </span>std::alloc::Global;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::new_in(Global);\n\n<span class=\"comment\">// entries can now be inserted into the empty map\n</span>map.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);</code></pre></div>\n</div></details></div></details>",0,"qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-BTreeMap%3CK,+V,+A%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#679\">source</a><a href=\"#impl-BTreeMap%3CK,+V,+A%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, A&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;<div class=\"where\">where\n    A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.get\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#696-699\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.get\" class=\"fn\">get</a>&lt;Q&gt;(&amp;self, key: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;V</a>&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt; + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns a reference to the value corresponding to the key.</p>\n<p>The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form <em>must</em> match the ordering on the key type.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::new();\nmap.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert_eq!</span>(map.get(<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>), <span class=\"prelude-val\">Some</span>(<span class=\"kw-2\">&amp;</span><span class=\"string\">\"a\"</span>));\n<span class=\"macro\">assert_eq!</span>(map.get(<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.get_key_value\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.40.0\">1.40.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#724-727\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.get_key_value\" class=\"fn\">get_key_value</a>&lt;Q&gt;(&amp;self, k: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;K</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;V</a>)&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt; + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the key-value pair corresponding to the supplied key.</p>\n<p>The supplied key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form <em>must</em> match the ordering on the key type.</p>\n<h5 id=\"examples-1\"><a class=\"doc-anchor\" href=\"#examples-1\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::new();\nmap.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert_eq!</span>(map.get_key_value(<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>, <span class=\"kw-2\">&amp;</span><span class=\"string\">\"a\"</span>)));\n<span class=\"macro\">assert_eq!</span>(map.get_key_value(<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.first_key_value\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.66.0\">1.66.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#751-753\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.first_key_value\" class=\"fn\">first_key_value</a>(&amp;self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;K</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;V</a>)&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the first key-value pair in the map.\nThe key in this pair is the minimum key in the map.</p>\n<h5 id=\"examples-2\"><a class=\"doc-anchor\" href=\"#examples-2\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::new();\n<span class=\"macro\">assert_eq!</span>(map.first_key_value(), <span class=\"prelude-val\">None</span>);\nmap.insert(<span class=\"number\">1</span>, <span class=\"string\">\"b\"</span>);\nmap.insert(<span class=\"number\">2</span>, <span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert_eq!</span>(map.first_key_value(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>, <span class=\"kw-2\">&amp;</span><span class=\"string\">\"b\"</span>)));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.first_entry\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.66.0\">1.66.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#779-781\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.first_entry\" class=\"fn\">first_entry</a>(&amp;mut self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/entry/struct.OccupiedEntry.html\" title=\"struct alloc::collections::btree::map::entry::OccupiedEntry\">OccupiedEntry</a>&lt;'_, K, V, A&gt;&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the first entry in the map for in-place manipulation.\nThe key of this entry is the minimum key in the map.</p>\n<h5 id=\"examples-3\"><a class=\"doc-anchor\" href=\"#examples-3\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::new();\nmap.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\nmap.insert(<span class=\"number\">2</span>, <span class=\"string\">\"b\"</span>);\n<span class=\"kw\">if let </span><span class=\"prelude-val\">Some</span>(<span class=\"kw-2\">mut </span>entry) = map.first_entry() {\n    <span class=\"kw\">if </span><span class=\"kw-2\">*</span>entry.key() &gt; <span class=\"number\">0 </span>{\n        entry.insert(<span class=\"string\">\"first\"</span>);\n    }\n}\n<span class=\"macro\">assert_eq!</span>(<span class=\"kw-2\">*</span>map.get(<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>).unwrap(), <span class=\"string\">\"first\"</span>);\n<span class=\"macro\">assert_eq!</span>(<span class=\"kw-2\">*</span>map.get(<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>).unwrap(), <span class=\"string\">\"b\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.pop_first\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.66.0\">1.66.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#813-815\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.pop_first\" class=\"fn\">pop_first</a>(&amp;mut self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a>&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,</div></h4></section></summary><div class=\"docblock\"><p>Removes and returns the first element in the map.\nThe key of this element is the minimum key that was in the map.</p>\n<h5 id=\"examples-4\"><a class=\"doc-anchor\" href=\"#examples-4\">§</a>Examples</h5>\n<p>Draining elements in ascending order, while keeping a usable map each iteration.</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::new();\nmap.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\nmap.insert(<span class=\"number\">2</span>, <span class=\"string\">\"b\"</span>);\n<span class=\"kw\">while let </span><span class=\"prelude-val\">Some</span>((key, _val)) = map.pop_first() {\n    <span class=\"macro\">assert!</span>(map.iter().all(|(k, _v)| <span class=\"kw-2\">*</span>k &gt; key));\n}\n<span class=\"macro\">assert!</span>(map.is_empty());</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.last_key_value\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.66.0\">1.66.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#834-836\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.last_key_value\" class=\"fn\">last_key_value</a>(&amp;self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;K</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;V</a>)&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the last key-value pair in the map.\nThe key in this pair is the maximum key in the map.</p>\n<h5 id=\"examples-5\"><a class=\"doc-anchor\" href=\"#examples-5\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::new();\nmap.insert(<span class=\"number\">1</span>, <span class=\"string\">\"b\"</span>);\nmap.insert(<span class=\"number\">2</span>, <span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert_eq!</span>(map.last_key_value(), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>, <span class=\"kw-2\">&amp;</span><span class=\"string\">\"a\"</span>)));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.last_entry\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.66.0\">1.66.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#862-864\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.last_entry\" class=\"fn\">last_entry</a>(&amp;mut self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/entry/struct.OccupiedEntry.html\" title=\"struct alloc::collections::btree::map::entry::OccupiedEntry\">OccupiedEntry</a>&lt;'_, K, V, A&gt;&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the last entry in the map for in-place manipulation.\nThe key of this entry is the maximum key in the map.</p>\n<h5 id=\"examples-6\"><a class=\"doc-anchor\" href=\"#examples-6\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::new();\nmap.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\nmap.insert(<span class=\"number\">2</span>, <span class=\"string\">\"b\"</span>);\n<span class=\"kw\">if let </span><span class=\"prelude-val\">Some</span>(<span class=\"kw-2\">mut </span>entry) = map.last_entry() {\n    <span class=\"kw\">if </span><span class=\"kw-2\">*</span>entry.key() &gt; <span class=\"number\">0 </span>{\n        entry.insert(<span class=\"string\">\"last\"</span>);\n    }\n}\n<span class=\"macro\">assert_eq!</span>(<span class=\"kw-2\">*</span>map.get(<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>).unwrap(), <span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert_eq!</span>(<span class=\"kw-2\">*</span>map.get(<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>).unwrap(), <span class=\"string\">\"last\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.pop_last\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.66.0\">1.66.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#896-898\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.pop_last\" class=\"fn\">pop_last</a>(&amp;mut self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a>&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,</div></h4></section></summary><div class=\"docblock\"><p>Removes and returns the last element in the map.\nThe key of this element is the maximum key that was in the map.</p>\n<h5 id=\"examples-7\"><a class=\"doc-anchor\" href=\"#examples-7\">§</a>Examples</h5>\n<p>Draining elements in descending order, while keeping a usable map each iteration.</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::new();\nmap.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\nmap.insert(<span class=\"number\">2</span>, <span class=\"string\">\"b\"</span>);\n<span class=\"kw\">while let </span><span class=\"prelude-val\">Some</span>((key, _val)) = map.pop_last() {\n    <span class=\"macro\">assert!</span>(map.iter().all(|(k, _v)| <span class=\"kw-2\">*</span>k &lt; key));\n}\n<span class=\"macro\">assert!</span>(map.is_empty());</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.contains_key\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#919-922\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.contains_key\" class=\"fn\">contains_key</a>&lt;Q&gt;(&amp;self, key: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a><div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt; + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns <code>true</code> if the map contains a value for the specified key.</p>\n<p>The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form <em>must</em> match the ordering on the key type.</p>\n<h5 id=\"examples-8\"><a class=\"doc-anchor\" href=\"#examples-8\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::new();\nmap.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert_eq!</span>(map.contains_key(<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>), <span class=\"bool-val\">true</span>);\n<span class=\"macro\">assert_eq!</span>(map.contains_key(<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>), <span class=\"bool-val\">false</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.get_mut\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#946-949\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.get_mut\" class=\"fn\">get_mut</a>&lt;Q&gt;(&amp;mut self, key: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut V</a>&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt; + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns a mutable reference to the value corresponding to the key.</p>\n<p>The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form <em>must</em> match the ordering on the key type.</p>\n<h5 id=\"examples-9\"><a class=\"doc-anchor\" href=\"#examples-9\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::new();\nmap.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\n<span class=\"kw\">if let </span><span class=\"prelude-val\">Some</span>(x) = map.get_mut(<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>) {\n    <span class=\"kw-2\">*</span>x = <span class=\"string\">\"b\"</span>;\n}\n<span class=\"macro\">assert_eq!</span>(map[<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>], <span class=\"string\">\"b\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.insert\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#984-986\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.insert\" class=\"fn\">insert</a>(&amp;mut self, key: K, value: V) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;V&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,</div></h4></section></summary><div class=\"docblock\"><p>Inserts a key-value pair into the map.</p>\n<p>If the map did not have this key present, <code>None</code> is returned.</p>\n<p>If the map did have this key present, the value is updated, and the old\nvalue is returned. The key is not updated, though; this matters for\ntypes that can be <code>==</code> without being identical. See the <a href=\"index.html#insert-and-complex-keys\">module-level\ndocumentation</a> for more.</p>\n<h5 id=\"examples-10\"><a class=\"doc-anchor\" href=\"#examples-10\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::new();\n<span class=\"macro\">assert_eq!</span>(map.insert(<span class=\"number\">37</span>, <span class=\"string\">\"a\"</span>), <span class=\"prelude-val\">None</span>);\n<span class=\"macro\">assert_eq!</span>(map.is_empty(), <span class=\"bool-val\">false</span>);\n\nmap.insert(<span class=\"number\">37</span>, <span class=\"string\">\"b\"</span>);\n<span class=\"macro\">assert_eq!</span>(map.insert(<span class=\"number\">37</span>, <span class=\"string\">\"c\"</span>), <span class=\"prelude-val\">Some</span>(<span class=\"string\">\"b\"</span>));\n<span class=\"macro\">assert_eq!</span>(map[<span class=\"kw-2\">&amp;</span><span class=\"number\">37</span>], <span class=\"string\">\"c\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.try_insert\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#1019-1021\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.try_insert\" class=\"fn\">try_insert</a>(\n    &amp;mut self,\n    key: K,\n    value: V\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut V</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/entry/struct.OccupiedError.html\" title=\"struct alloc::collections::btree::map::entry::OccupiedError\">OccupiedError</a>&lt;'_, K, V, A&gt;&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,</div></h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>map_try_insert</code>)</span></div></span></summary><div class=\"docblock\"><p>Tries to insert a key-value pair into the map, and returns\na mutable reference to the value in the entry.</p>\n<p>If the map already had this key present, nothing is updated, and\nan error containing the occupied entry and the value is returned.</p>\n<h5 id=\"examples-11\"><a class=\"doc-anchor\" href=\"#examples-11\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(map_try_insert)]\n\n</span><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::new();\n<span class=\"macro\">assert_eq!</span>(map.try_insert(<span class=\"number\">37</span>, <span class=\"string\">\"a\"</span>).unwrap(), <span class=\"kw-2\">&amp;</span><span class=\"string\">\"a\"</span>);\n\n<span class=\"kw\">let </span>err = map.try_insert(<span class=\"number\">37</span>, <span class=\"string\">\"b\"</span>).unwrap_err();\n<span class=\"macro\">assert_eq!</span>(err.entry.key(), <span class=\"kw-2\">&amp;</span><span class=\"number\">37</span>);\n<span class=\"macro\">assert_eq!</span>(err.entry.get(), <span class=\"kw-2\">&amp;</span><span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert_eq!</span>(err.value, <span class=\"string\">\"b\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.remove\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#1047-1050\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.remove\" class=\"fn\">remove</a>&lt;Q&gt;(&amp;mut self, key: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;V&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt; + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class=\"docblock\"><p>Removes a key from the map, returning the value at the key if the key\nwas previously in the map.</p>\n<p>The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form <em>must</em> match the ordering on the key type.</p>\n<h5 id=\"examples-12\"><a class=\"doc-anchor\" href=\"#examples-12\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::new();\nmap.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert_eq!</span>(map.remove(<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>), <span class=\"prelude-val\">Some</span>(<span class=\"string\">\"a\"</span>));\n<span class=\"macro\">assert_eq!</span>(map.remove(<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.remove_entry\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.45.0\">1.45.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#1072-1075\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.remove_entry\" class=\"fn\">remove_entry</a>&lt;Q&gt;(&amp;mut self, key: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a>&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt; + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class=\"docblock\"><p>Removes a key from the map, returning the stored key and value if the key\nwas previously in the map.</p>\n<p>The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form <em>must</em> match the ordering on the key type.</p>\n<h5 id=\"examples-13\"><a class=\"doc-anchor\" href=\"#examples-13\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::new();\nmap.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert_eq!</span>(map.remove_entry(<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>), <span class=\"prelude-val\">Some</span>((<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>)));\n<span class=\"macro\">assert_eq!</span>(map.remove_entry(<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.retain\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.53.0\">1.53.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#1110-1113\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.retain\" class=\"fn\">retain</a>&lt;F&gt;(&amp;mut self, f: F)<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html\" title=\"trait core::ops::function::FnMut\">FnMut</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;K</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut V</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>,</div></h4></section></summary><div class=\"docblock\"><p>Retains only the elements specified by the predicate.</p>\n<p>In other words, remove all pairs <code>(k, v)</code> for which <code>f(&amp;k, &amp;mut v)</code> returns <code>false</code>.\nThe elements are visited in ascending key order.</p>\n<h5 id=\"examples-14\"><a class=\"doc-anchor\" href=\"#examples-14\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map: BTreeMap&lt;i32, i32&gt; = (<span class=\"number\">0</span>..<span class=\"number\">8</span>).map(|x| (x, x<span class=\"kw-2\">*</span><span class=\"number\">10</span>)).collect();\n<span class=\"comment\">// Keep only the elements with even-numbered keys.\n</span>map.retain(|<span class=\"kw-2\">&amp;</span>k, <span class=\"kw\">_</span>| k % <span class=\"number\">2 </span>== <span class=\"number\">0</span>);\n<span class=\"macro\">assert!</span>(map.into_iter().eq(<span class=\"macro\">vec!</span>[(<span class=\"number\">0</span>, <span class=\"number\">0</span>), (<span class=\"number\">2</span>, <span class=\"number\">20</span>), (<span class=\"number\">4</span>, <span class=\"number\">40</span>), (<span class=\"number\">6</span>, <span class=\"number\">60</span>)]));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.append\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.11.0\">1.11.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#1150-1153\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.append\" class=\"fn\">append</a>(&amp;mut self, other: &amp;mut <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;)<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h4></section></summary><div class=\"docblock\"><p>Moves all elements from <code>other</code> into <code>self</code>, leaving <code>other</code> empty.</p>\n<p>If a key from <code>other</code> is already present in <code>self</code>, the respective\nvalue from <code>self</code> will be overwritten with the respective value from <code>other</code>.</p>\n<h5 id=\"examples-15\"><a class=\"doc-anchor\" href=\"#examples-15\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>a = BTreeMap::new();\na.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\na.insert(<span class=\"number\">2</span>, <span class=\"string\">\"b\"</span>);\na.insert(<span class=\"number\">3</span>, <span class=\"string\">\"c\"</span>); <span class=\"comment\">// Note: Key (3) also present in b.\n\n</span><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>b = BTreeMap::new();\nb.insert(<span class=\"number\">3</span>, <span class=\"string\">\"d\"</span>); <span class=\"comment\">// Note: Key (3) also present in a.\n</span>b.insert(<span class=\"number\">4</span>, <span class=\"string\">\"e\"</span>);\nb.insert(<span class=\"number\">5</span>, <span class=\"string\">\"f\"</span>);\n\na.append(<span class=\"kw-2\">&amp;mut </span>b);\n\n<span class=\"macro\">assert_eq!</span>(a.len(), <span class=\"number\">5</span>);\n<span class=\"macro\">assert_eq!</span>(b.len(), <span class=\"number\">0</span>);\n\n<span class=\"macro\">assert_eq!</span>(a[<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>], <span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert_eq!</span>(a[<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>], <span class=\"string\">\"b\"</span>);\n<span class=\"macro\">assert_eq!</span>(a[<span class=\"kw-2\">&amp;</span><span class=\"number\">3</span>], <span class=\"string\">\"d\"</span>); <span class=\"comment\">// Note: \"c\" has been overwritten.\n</span><span class=\"macro\">assert_eq!</span>(a[<span class=\"kw-2\">&amp;</span><span class=\"number\">4</span>], <span class=\"string\">\"e\"</span>);\n<span class=\"macro\">assert_eq!</span>(a[<span class=\"kw-2\">&amp;</span><span class=\"number\">5</span>], <span class=\"string\">\"f\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.range\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.17.0\">1.17.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#1205-1209\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.range\" class=\"fn\">range</a>&lt;T, R&gt;(&amp;self, range: R) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.Range.html\" title=\"struct alloc::collections::btree::map::Range\">Range</a>&lt;'_, K, V&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;T&gt; + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    R: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/range/trait.RangeBounds.html\" title=\"trait core::ops::range::RangeBounds\">RangeBounds</a>&lt;T&gt;,</div></h4></section></summary><div class=\"docblock\"><p>Constructs a double-ended iterator over a sub-range of elements in the map.\nThe simplest way is to use the range syntax <code>min..max</code>, thus <code>range(min..max)</code> will\nyield elements from min (inclusive) to max (exclusive).\nThe range may also be entered as <code>(Bound&lt;T&gt;, Bound&lt;T&gt;)</code>, so for example\n<code>range((Excluded(4), Included(10)))</code> will yield a left-exclusive, right-inclusive\nrange from 4 to 10.</p>\n<h5 id=\"panics\"><a class=\"doc-anchor\" href=\"#panics\">§</a>Panics</h5>\n<p>Panics if range <code>start &gt; end</code>.\nPanics if range <code>start == end</code> and both bounds are <code>Excluded</code>.</p>\n<h5 id=\"examples-16\"><a class=\"doc-anchor\" href=\"#examples-16\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n<span class=\"kw\">use </span>std::ops::Bound::Included;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = BTreeMap::new();\nmap.insert(<span class=\"number\">3</span>, <span class=\"string\">\"a\"</span>);\nmap.insert(<span class=\"number\">5</span>, <span class=\"string\">\"b\"</span>);\nmap.insert(<span class=\"number\">8</span>, <span class=\"string\">\"c\"</span>);\n<span class=\"kw\">for </span>(<span class=\"kw-2\">&amp;</span>key, <span class=\"kw-2\">&amp;</span>value) <span class=\"kw\">in </span>map.range((Included(<span class=\"kw-2\">&amp;</span><span class=\"number\">4</span>), Included(<span class=\"kw-2\">&amp;</span><span class=\"number\">8</span>))) {\n    <span class=\"macro\">println!</span>(<span class=\"string\">\"{key}: {value}\"</span>);\n}\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">5</span>, <span class=\"kw-2\">&amp;</span><span class=\"string\">\"b\"</span>)), map.range(<span class=\"number\">4</span>..).next());</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.range_mut\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.17.0\">1.17.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#1245-1249\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.range_mut\" class=\"fn\">range_mut</a>&lt;T, R&gt;(&amp;mut self, range: R) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.RangeMut.html\" title=\"struct alloc::collections::btree::map::RangeMut\">RangeMut</a>&lt;'_, K, V&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;T&gt; + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    R: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/range/trait.RangeBounds.html\" title=\"trait core::ops::range::RangeBounds\">RangeBounds</a>&lt;T&gt;,</div></h4></section></summary><div class=\"docblock\"><p>Constructs a mutable double-ended iterator over a sub-range of elements in the map.\nThe simplest way is to use the range syntax <code>min..max</code>, thus <code>range(min..max)</code> will\nyield elements from min (inclusive) to max (exclusive).\nThe range may also be entered as <code>(Bound&lt;T&gt;, Bound&lt;T&gt;)</code>, so for example\n<code>range((Excluded(4), Included(10)))</code> will yield a left-exclusive, right-inclusive\nrange from 4 to 10.</p>\n<h5 id=\"panics-1\"><a class=\"doc-anchor\" href=\"#panics-1\">§</a>Panics</h5>\n<p>Panics if range <code>start &gt; end</code>.\nPanics if range <code>start == end</code> and both bounds are <code>Excluded</code>.</p>\n<h5 id=\"examples-17\"><a class=\"doc-anchor\" href=\"#examples-17\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map: BTreeMap&lt;<span class=\"kw-2\">&amp;</span>str, i32&gt; =\n    [(<span class=\"string\">\"Alice\"</span>, <span class=\"number\">0</span>), (<span class=\"string\">\"Bob\"</span>, <span class=\"number\">0</span>), (<span class=\"string\">\"Carol\"</span>, <span class=\"number\">0</span>), (<span class=\"string\">\"Cheryl\"</span>, <span class=\"number\">0</span>)].into();\n<span class=\"kw\">for </span>(<span class=\"kw\">_</span>, balance) <span class=\"kw\">in </span>map.range_mut(<span class=\"string\">\"B\"</span>..<span class=\"string\">\"Cheryl\"</span>) {\n    <span class=\"kw-2\">*</span>balance += <span class=\"number\">100</span>;\n}\n<span class=\"kw\">for </span>(name, balance) <span class=\"kw\">in </span><span class=\"kw-2\">&amp;</span>map {\n    <span class=\"macro\">println!</span>(<span class=\"string\">\"{name} =&gt; {balance}\"</span>);\n}</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.entry\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#1277-1279\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.entry\" class=\"fn\">entry</a>(&amp;mut self, key: K) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/entry/enum.Entry.html\" title=\"enum alloc::collections::btree::map::entry::Entry\">Entry</a>&lt;'_, K, V, A&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,</div></h4></section></summary><div class=\"docblock\"><p>Gets the given key’s corresponding entry in the map for in-place manipulation.</p>\n<h5 id=\"examples-18\"><a class=\"doc-anchor\" href=\"#examples-18\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>count: BTreeMap&lt;<span class=\"kw-2\">&amp;</span>str, usize&gt; = BTreeMap::new();\n\n<span class=\"comment\">// count the number of occurrences of letters in the vec\n</span><span class=\"kw\">for </span>x <span class=\"kw\">in </span>[<span class=\"string\">\"a\"</span>, <span class=\"string\">\"b\"</span>, <span class=\"string\">\"a\"</span>, <span class=\"string\">\"c\"</span>, <span class=\"string\">\"a\"</span>, <span class=\"string\">\"b\"</span>] {\n    count.entry(x).and_modify(|curr| <span class=\"kw-2\">*</span>curr += <span class=\"number\">1</span>).or_insert(<span class=\"number\">1</span>);\n}\n\n<span class=\"macro\">assert_eq!</span>(count[<span class=\"string\">\"a\"</span>], <span class=\"number\">3</span>);\n<span class=\"macro\">assert_eq!</span>(count[<span class=\"string\">\"b\"</span>], <span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(count[<span class=\"string\">\"c\"</span>], <span class=\"number\">1</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.split_off\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.11.0\">1.11.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#1336-1339\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.split_off\" class=\"fn\">split_off</a>&lt;Q&gt;(&amp;mut self, key: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;<div class=\"where\">where\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt; + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h4></section></summary><div class=\"docblock\"><p>Splits the collection into two at the given key. Returns everything after the given key,\nincluding the key.</p>\n<h5 id=\"examples-19\"><a class=\"doc-anchor\" href=\"#examples-19\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>a = BTreeMap::new();\na.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\na.insert(<span class=\"number\">2</span>, <span class=\"string\">\"b\"</span>);\na.insert(<span class=\"number\">3</span>, <span class=\"string\">\"c\"</span>);\na.insert(<span class=\"number\">17</span>, <span class=\"string\">\"d\"</span>);\na.insert(<span class=\"number\">41</span>, <span class=\"string\">\"e\"</span>);\n\n<span class=\"kw\">let </span>b = a.split_off(<span class=\"kw-2\">&amp;</span><span class=\"number\">3</span>);\n\n<span class=\"macro\">assert_eq!</span>(a.len(), <span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(b.len(), <span class=\"number\">3</span>);\n\n<span class=\"macro\">assert_eq!</span>(a[<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>], <span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert_eq!</span>(a[<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>], <span class=\"string\">\"b\"</span>);\n\n<span class=\"macro\">assert_eq!</span>(b[<span class=\"kw-2\">&amp;</span><span class=\"number\">3</span>], <span class=\"string\">\"c\"</span>);\n<span class=\"macro\">assert_eq!</span>(b[<span class=\"kw-2\">&amp;</span><span class=\"number\">17</span>], <span class=\"string\">\"d\"</span>);\n<span class=\"macro\">assert_eq!</span>(b[<span class=\"kw-2\">&amp;</span><span class=\"number\">41</span>], <span class=\"string\">\"e\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extract_if\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#1391-1394\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.extract_if\" class=\"fn\">extract_if</a>&lt;F&gt;(&amp;mut self, pred: F) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.ExtractIf.html\" title=\"struct alloc::collections::btree::map::ExtractIf\">ExtractIf</a>&lt;'_, K, V, F, A&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html\" title=\"trait core::ops::function::FnMut\">FnMut</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;K</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut V</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>,</div></h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>btree_extract_if</code>)</span></div></span></summary><div class=\"docblock\"><p>Creates an iterator that visits all elements (key-value pairs) in\nascending key order and uses a closure to determine if an element should\nbe removed. If the closure returns <code>true</code>, the element is removed from\nthe map and yielded. If the closure returns <code>false</code>, or panics, the\nelement remains in the map and will not be yielded.</p>\n<p>The iterator also lets you mutate the value of each element in the\nclosure, regardless of whether you choose to keep or remove it.</p>\n<p>If the returned <code>ExtractIf</code> is not exhausted, e.g. because it is dropped without iterating\nor the iteration short-circuits, then the remaining elements will be retained.\nUse <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#method.retain\" title=\"method alloc::collections::btree::map::BTreeMap::retain\"><code>retain</code></a> with a negated predicate if you do not need the returned iterator.</p>\n<h5 id=\"examples-20\"><a class=\"doc-anchor\" href=\"#examples-20\">§</a>Examples</h5>\n<p>Splitting a map into even and odd keys, reusing the original map:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(btree_extract_if)]\n</span><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map: BTreeMap&lt;i32, i32&gt; = (<span class=\"number\">0</span>..<span class=\"number\">8</span>).map(|x| (x, x)).collect();\n<span class=\"kw\">let </span>evens: BTreeMap&lt;<span class=\"kw\">_</span>, <span class=\"kw\">_</span>&gt; = map.extract_if(|k, _v| k % <span class=\"number\">2 </span>== <span class=\"number\">0</span>).collect();\n<span class=\"kw\">let </span>odds = map;\n<span class=\"macro\">assert_eq!</span>(evens.keys().copied().collect::&lt;Vec&lt;<span class=\"kw\">_</span>&gt;&gt;(), [<span class=\"number\">0</span>, <span class=\"number\">2</span>, <span class=\"number\">4</span>, <span class=\"number\">6</span>]);\n<span class=\"macro\">assert_eq!</span>(odds.keys().copied().collect::&lt;Vec&lt;<span class=\"kw\">_</span>&gt;&gt;(), [<span class=\"number\">1</span>, <span class=\"number\">3</span>, <span class=\"number\">5</span>, <span class=\"number\">7</span>]);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_keys\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.54.0\">1.54.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#1445\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.into_keys\" class=\"fn\">into_keys</a>(self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.IntoKeys.html\" title=\"struct alloc::collections::btree::map::IntoKeys\">IntoKeys</a>&lt;K, V, A&gt;</h4></section></summary><div class=\"docblock\"><p>Creates a consuming iterator visiting all the keys, in sorted order.\nThe map cannot be used after calling this.\nThe iterator element type is <code>K</code>.</p>\n<h5 id=\"examples-21\"><a class=\"doc-anchor\" href=\"#examples-21\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>a = BTreeMap::new();\na.insert(<span class=\"number\">2</span>, <span class=\"string\">\"b\"</span>);\na.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\n\n<span class=\"kw\">let </span>keys: Vec&lt;i32&gt; = a.into_keys().collect();\n<span class=\"macro\">assert_eq!</span>(keys, [<span class=\"number\">1</span>, <span class=\"number\">2</span>]);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_values\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.54.0\">1.54.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#1467\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#tymethod.into_values\" class=\"fn\">into_values</a>(self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.IntoValues.html\" title=\"struct alloc::collections::btree::map::IntoValues\">IntoValues</a>&lt;K, V, A&gt;</h4></section></summary><div class=\"docblock\"><p>Creates a consuming iterator visiting all the values, in order by key.\nThe map cannot be used after calling this.\nThe iterator element type is <code>V</code>.</p>\n<h5 id=\"examples-22\"><a class=\"doc-anchor\" href=\"#examples-22\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>a = BTreeMap::new();\na.insert(<span class=\"number\">1</span>, <span class=\"string\">\"hello\"</span>);\na.insert(<span class=\"number\">2</span>, <span class=\"string\">\"goodbye\"</span>);\n\n<span class=\"kw\">let </span>values: Vec&lt;<span class=\"kw-2\">&amp;</span>str&gt; = a.into_values().collect();\n<span class=\"macro\">assert_eq!</span>(values, [<span class=\"string\">\"hello\"</span>, <span class=\"string\">\"goodbye\"</span>]);</code></pre></div>\n</div></details></div></details>",0,"qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Clone-for-BTreeMap%3CK,+V,+A%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#207\">source</a></span><a href=\"#impl-Clone-for-BTreeMap%3CK,+V,+A%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, A&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,\n    A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.clone\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#208\">source</a><a href=\"#method.clone\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone\" class=\"fn\">clone</a>(&amp;self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;</h4></section></summary><div class='docblock'>Returns a copy of the value. <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.clone_from\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/clone.rs.html#169\">source</a></span><a href=\"#method.clone_from\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from\" class=\"fn\">clone_from</a>(&amp;mut self, source: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from\">Read more</a></div></details></div></details>","Clone","qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Debug-for-BTreeMap%3CK,+V,+A%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2312\">source</a></span><a href=\"#impl-Debug-for-BTreeMap%3CK,+V,+A%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, A&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,\n    A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.fmt\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2313\">source</a><a href=\"#method.fmt\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt\" class=\"fn\">fmt</a>(&amp;self, f: &amp;mut <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html\" title=\"struct core::fmt::Formatter\">Formatter</a>&lt;'_&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.unit.html\">()</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html\" title=\"struct core::fmt::Error\">Error</a>&gt;</h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt\">Read more</a></div></details></div></details>","Debug","qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Default-for-BTreeMap%3CK,+V%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2278\">source</a></span><a href=\"#impl-Default-for-BTreeMap%3CK,+V%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.default\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2280\">source</a><a href=\"#method.default\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default\" class=\"fn\">default</a>() -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V&gt;</h4></section></summary><div class=\"docblock\"><p>Creates an empty <code>BTreeMap</code>.</p>\n</div></details></div></details>","Default","qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Deserialize%3C'de%3E-for-BTreeMap%3CK,+V%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/de/impls.rs.html#1443-1449\">source</a><a href=\"#impl-Deserialize%3C'de%3E-for-BTreeMap%3CK,+V%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'de, K, V&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    V: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.deserialize\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/de/impls.rs.html#1443-1449\">source</a><a href=\"#method.deserialize\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize\" class=\"fn\">deserialize</a>&lt;D&gt;(\n    deserializer: D\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V&gt;, &lt;D as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html\" title=\"trait serde::de::Deserializer\">Deserializer</a>&lt;'de&gt;&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error\" title=\"type serde::de::Deserializer::Error\">Error</a>&gt;<div class=\"where\">where\n    D: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html\" title=\"trait serde::de::Deserializer\">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize\">Read more</a></div></details></div></details>","Deserialize<'de>","qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Drop-for-BTreeMap%3CK,+V,+A%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.7.0\">1.7.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#187\">source</a></span><a href=\"#impl-Drop-for-BTreeMap%3CK,+V,+A%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, A&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;<div class=\"where\">where\n    A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.drop\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#188\">source</a><a href=\"#method.drop\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/drop/trait.Drop.html#tymethod.drop\" class=\"fn\">drop</a>(&amp;mut self)</h4></section></summary><div class='docblock'>Executes the destructor for this type. <a href=\"https://doc.rust-lang.org/nightly/core/ops/drop/trait.Drop.html#tymethod.drop\">Read more</a></div></details></div></details>","Drop","qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Extend%3C(%26K,+%26V)%3E-for-BTreeMap%3CK,+V,+A%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.2.0\">1.2.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2254-2255\">source</a></span><a href=\"#impl-Extend%3C(%26K,+%26V)%3E-for-BTreeMap%3CK,+V,+A%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'a, K, V, A&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html\" title=\"trait core::iter::traits::collect::Extend\">Extend</a>&lt;(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;'a K</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;'a V</a>)&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a>,\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a>,\n    A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2257\">source</a><a href=\"#method.extend\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\" class=\"fn\">extend</a>&lt;I&gt;(&amp;mut self, iter: I)<div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = (<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;'a K</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;'a V</a>)&gt;,</div></h4></section></summary><div class='docblock'>Extends a collection with the contents of an iterator. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_one\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2262\">source</a><a href=\"#method.extend_one\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_one\" class=\"fn\">extend_one</a>(&amp;mut self, _: (<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;'a K</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;'a V</a>))</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Extends a collection with exactly one element.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_reserve\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#460\">source</a><a href=\"#method.extend_reserve\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\" class=\"fn\">extend_reserve</a>(&amp;mut self, additional: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>)</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Reserves capacity in a collection for the given number of additional elements. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\">Read more</a></div></details></div></details>","Extend<(&'a K, &'a V)>","qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Extend%3C(K,+V)%3E-for-BTreeMap%3CK,+V,+A%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2239\">source</a></span><a href=\"#impl-Extend%3C(K,+V)%3E-for-BTreeMap%3CK,+V,+A%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, A&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html\" title=\"trait core::iter::traits::collect::Extend\">Extend</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2241\">source</a><a href=\"#method.extend\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\" class=\"fn\">extend</a>&lt;T&gt;(&amp;mut self, iter: T)<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a>&gt;,</div></h4></section></summary><div class='docblock'>Extends a collection with the contents of an iterator. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_one\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2248\">source</a><a href=\"#method.extend_one\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_one\" class=\"fn\">extend_one</a>(&amp;mut self, _: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a>)</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Extends a collection with exactly one element.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_reserve\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#460\">source</a><a href=\"#method.extend_reserve\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\" class=\"fn\">extend_reserve</a>(&amp;mut self, additional: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>)</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Reserves capacity in a collection for the given number of additional elements. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\">Read more</a></div></details></div></details>","Extend<(K, V)>","qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-From%3C%5B(K,+V);+N%5D%3E-for-BTreeMap%3CK,+V%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.56.0\">1.56.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2338\">source</a></span><a href=\"#impl-From%3C%5B(K,+V);+N%5D%3E-for-BTreeMap%3CK,+V%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, const N: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a>; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.array.html\">N</a>]&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2348\">source</a><a href=\"#method.from\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from\" class=\"fn\">from</a>(arr: [<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a>; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.array.html\">N</a>]) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V&gt;</h4></section></summary><div class=\"docblock\"><p>Converts a <code>[(K, V); N]</code> into a <code>BTreeMap&lt;(K, V)&gt;</code>.</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::BTreeMap;\n\n<span class=\"kw\">let </span>map1 = BTreeMap::from([(<span class=\"number\">1</span>, <span class=\"number\">2</span>), (<span class=\"number\">3</span>, <span class=\"number\">4</span>)]);\n<span class=\"kw\">let </span>map2: BTreeMap&lt;<span class=\"kw\">_</span>, <span class=\"kw\">_</span>&gt; = [(<span class=\"number\">1</span>, <span class=\"number\">2</span>), (<span class=\"number\">3</span>, <span class=\"number\">4</span>)].into();\n<span class=\"macro\">assert_eq!</span>(map1, map2);</code></pre></div>\n</div></details></div></details>","From<[(K, V); N]>","qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FromIterator%3C(K,+V)%3E-for-BTreeMap%3CK,+V%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2224\">source</a></span><a href=\"#impl-FromIterator%3C(K,+V)%3E-for-BTreeMap%3CK,+V%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html\" title=\"trait core::iter::traits::collect::FromIterator\">FromIterator</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_iter\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2225\">source</a><a href=\"#method.from_iter\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter\" class=\"fn\">from_iter</a>&lt;T&gt;(iter: T) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a>&gt;,</div></h4></section></summary><div class='docblock'>Creates a value from an iterator. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter\">Read more</a></div></details></div></details>","FromIterator<(K, V)>","qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Hash-for-BTreeMap%3CK,+V,+A%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2268\">source</a></span><a href=\"#impl-Hash-for-BTreeMap%3CK,+V,+A%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, A&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a>,\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a>,\n    A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.hash\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2269\">source</a><a href=\"#method.hash\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash\" class=\"fn\">hash</a>&lt;H&gt;(&amp;self, state: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut H</a>)<div class=\"where\">where\n    H: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\">Hasher</a>,</div></h4></section></summary><div class='docblock'>Feeds this value into the given <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\"><code>Hasher</code></a>. <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.hash_slice\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.3.0\">1.3.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#238-240\">source</a></span><a href=\"#method.hash_slice\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice\" class=\"fn\">hash_slice</a>&lt;H&gt;(data: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[Self]</a>, state: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut H</a>)<div class=\"where\">where\n    H: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\">Hasher</a>,\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\"><code>Hasher</code></a>. <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice\">Read more</a></div></details></div></details>","Hash","qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Index%3C%26Q%3E-for-BTreeMap%3CK,+V,+A%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2319-2322\">source</a></span><a href=\"#impl-Index%3C%26Q%3E-for-BTreeMap%3CK,+V,+A%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, Q, V, A&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/index/trait.Index.html\" title=\"trait core::ops::index::Index\">Index</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;<div class=\"where\">where\n    A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt; + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.index\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2332\">source</a><a href=\"#method.index\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/index/trait.Index.html#tymethod.index\" class=\"fn\">index</a>(&amp;self, key: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;V</a></h4></section></summary><div class=\"docblock\"><p>Returns a reference to the value corresponding to the supplied key.</p>\n<h5 id=\"panics\"><a class=\"doc-anchor\" href=\"#panics\">§</a>Panics</h5>\n<p>Panics if the key is not present in the <code>BTreeMap</code>.</p>\n</div></details><details class=\"toggle\" open><summary><section id=\"associatedtype.Output\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Output\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/ops/index/trait.Index.html#associatedtype.Output\" class=\"associatedtype\">Output</a> = V</h4></section></summary><div class='docblock'>The returned type after indexing.</div></details></div></details>","Index<&Q>","qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-IntoDeserializer%3C'de,+E%3E-for-BTreeMap%3CK,+V%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/de/value.rs.html#1425-1429\">source</a><a href=\"#impl-IntoDeserializer%3C'de,+E%3E-for-BTreeMap%3CK,+V%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'de, K, V, E&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.IntoDeserializer.html\" title=\"trait serde::de::IntoDeserializer\">IntoDeserializer</a>&lt;'de, E&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.IntoDeserializer.html\" title=\"trait serde::de::IntoDeserializer\">IntoDeserializer</a>&lt;'de, E&gt; + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    V: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.IntoDeserializer.html\" title=\"trait serde::de::IntoDeserializer\">IntoDeserializer</a>&lt;'de, E&gt;,\n    E: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Error.html\" title=\"trait serde::de::Error\">Error</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle\" open><summary><section id=\"associatedtype.Deserializer\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Deserializer\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://docs.rs/serde/1.0.197/serde/de/trait.IntoDeserializer.html#associatedtype.Deserializer\" class=\"associatedtype\">Deserializer</a> = <a class=\"struct\" href=\"https://docs.rs/serde/1.0.197/serde/de/value/struct.MapDeserializer.html\" title=\"struct serde::de::value::MapDeserializer\">MapDeserializer</a>&lt;'de, &lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V&gt; as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter\" title=\"type core::iter::traits::collect::IntoIterator::IntoIter\">IntoIter</a>, E&gt;</h4></section></summary><div class='docblock'>The type of the deserializer being converted into.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_deserializer\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/de/value.rs.html#1433\">source</a><a href=\"#method.into_deserializer\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://docs.rs/serde/1.0.197/serde/de/trait.IntoDeserializer.html#tymethod.into_deserializer\" class=\"fn\">into_deserializer</a>(\n    self\n) -&gt; &lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V&gt; as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.IntoDeserializer.html\" title=\"trait serde::de::IntoDeserializer\">IntoDeserializer</a>&lt;'de, E&gt;&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.IntoDeserializer.html#associatedtype.Deserializer\" title=\"type serde::de::IntoDeserializer::Deserializer\">Deserializer</a></h4></section></summary><div class='docblock'>Convert this value into a deserializer.</div></details></div></details>","IntoDeserializer<'de, E>","qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-IntoIterator-for-BTreeMap%3CK,+V,+A%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#1636\">source</a></span><a href=\"#impl-IntoIterator-for-BTreeMap%3CK,+V,+A%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, A&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;<div class=\"where\">where\n    A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_iter\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#1641\">source</a><a href=\"#method.into_iter\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter\" class=\"fn\">into_iter</a>(self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.IntoIter.html\" title=\"struct alloc::collections::btree::map::IntoIter\">IntoIter</a>&lt;K, V, A&gt;</h4></section></summary><div class=\"docblock\"><p>Gets an owning iterator over the entries of the map, sorted by key.</p>\n</div></details><details class=\"toggle\" open><summary><section id=\"associatedtype.Item\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Item\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a></h4></section></summary><div class='docblock'>The type of the elements being iterated over.</div></details><details class=\"toggle\" open><summary><section id=\"associatedtype.IntoIter\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.IntoIter\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter\" class=\"associatedtype\">IntoIter</a> = <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.IntoIter.html\" title=\"struct alloc::collections::btree::map::IntoIter\">IntoIter</a>&lt;K, V, A&gt;</h4></section></summary><div class='docblock'>Which kind of iterator are we turning this into?</div></details></div></details>","IntoIterator","qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Ord-for-BTreeMap%3CK,+V,+A%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2304\">source</a></span><a href=\"#impl-Ord-for-BTreeMap%3CK,+V,+A%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, A&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.cmp\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2306\">source</a><a href=\"#method.cmp\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp\" class=\"fn\">cmp</a>(&amp;self, other: &amp;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html\" title=\"enum core::cmp::Ordering\">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href=\"https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html\" title=\"enum core::cmp::Ordering\"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.max\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.21.0\">1.21.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#856-858\">source</a></span><a href=\"#method.max\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max\" class=\"fn\">max</a>(self, other: Self) -&gt; Self<div class=\"where\">where\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.min\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.21.0\">1.21.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#877-879\">source</a></span><a href=\"#method.min\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min\" class=\"fn\">min</a>(self, other: Self) -&gt; Self<div class=\"where\">where\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.clamp\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.50.0\">1.50.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#902-905\">source</a></span><a href=\"#method.clamp\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp\" class=\"fn\">clamp</a>(self, min: Self, max: Self) -&gt; Self<div class=\"where\">where\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>,</div></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp\">Read more</a></div></details></div></details>","Ord","qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-PartialEq-for-BTreeMap%3CK,+V,+A%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2286\">source</a></span><a href=\"#impl-PartialEq-for-BTreeMap%3CK,+V,+A%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, A&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>,\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>,\n    A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.eq\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2287\">source</a><a href=\"#method.eq\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq\" class=\"fn\">eq</a>(&amp;self, other: &amp;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used\nby <code>==</code>.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.ne\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263\">source</a></span><a href=\"#method.ne\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne\" class=\"fn\">ne</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.</div></details></div></details>","PartialEq","qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-PartialOrd-for-BTreeMap%3CK,+V,+A%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2296\">source</a></span><a href=\"#impl-PartialOrd-for-BTreeMap%3CK,+V,+A%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, A&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>,\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>,\n    A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.partial_cmp\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2298\">source</a><a href=\"#method.partial_cmp\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp\" class=\"fn\">partial_cmp</a>(&amp;self, other: &amp;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html\" title=\"enum core::cmp::Ordering\">Ordering</a>&gt;</h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.lt\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1179\">source</a></span><a href=\"#method.lt\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt\" class=\"fn\">lt</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code>&lt;</code> operator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.le\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1197\">source</a></span><a href=\"#method.le\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le\" class=\"fn\">le</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>&lt;=</code>\noperator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.gt\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1214\">source</a></span><a href=\"#method.gt\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt\" class=\"fn\">gt</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>&gt;</code> operator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.ge\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1232\">source</a></span><a href=\"#method.ge\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge\" class=\"fn\">ge</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>&gt;=</code>\noperator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge\">Read more</a></div></details></div></details>","PartialOrd","qlog::events::ExData"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Serialize-for-BTreeMap%3CK,+V%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/ser/impls.rs.html#474-478\">source</a><a href=\"#impl-Serialize-for-BTreeMap%3CK,+V%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a>,\n    V: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.serialize\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/ser/impls.rs.html#474-478\">source</a><a href=\"#method.serialize\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize\" class=\"fn\">serialize</a>&lt;S&gt;(\n    &amp;self,\n    serializer: S\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;&lt;S as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok\" title=\"type serde::ser::Serializer::Ok\">Ok</a>, &lt;S as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error\" title=\"type serde::ser::Serializer::Error\">Error</a>&gt;<div class=\"where\">where\n    S: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize\">Read more</a></div></details></div></details>","Serialize","qlog::events::ExData"],["<section id=\"impl-Eq-for-BTreeMap%3CK,+V,+A%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#2293\">source</a></span><a href=\"#impl-Eq-for-BTreeMap%3CK,+V,+A%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, A&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a>,\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a>,\n    A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h3></section>","Eq","qlog::events::ExData"],["<section id=\"impl-UnwindSafe-for-BTreeMap%3CK,+V,+A%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.64.0\">1.64.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/collections/btree/map.rs.html#198-202\">source</a></span><a href=\"#impl-UnwindSafe-for-BTreeMap%3CK,+V,+A%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, A&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html\" title=\"struct alloc::collections::btree::map::BTreeMap\">BTreeMap</a>&lt;K, V, A&gt;<div class=\"where\">where\n    A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>,\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>,\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a>,</div></h3></section>","UnwindSafe","qlog::events::ExData"]]
+};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})()
\ No newline at end of file
diff --git a/type.impl/alloc/string/struct.String.js b/type.impl/alloc/string/struct.String.js
new file mode 100644
index 0000000..c1038ed
--- /dev/null
+++ b/type.impl/alloc/string/struct.String.js
@@ -0,0 +1,3 @@
+(function() {var type_impls = {
+"qlog":[["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Add%3C%26str%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2426\">source</a></span><a href=\"#impl-Add%3C%26str%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html\" title=\"trait core::ops::arith::Add\">Add</a>&lt;&amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"docblock\"><p>Implements the <code>+</code> operator for concatenating two strings.</p>\n<p>This consumes the <code>String</code> on the left-hand side and re-uses its buffer (growing it if\nnecessary). This is done to avoid allocating a new <code>String</code> and copying the entire contents on\nevery operation, which would lead to <em>O</em>(<em>n</em>^2) running time when building an <em>n</em>-byte string by\nrepeated concatenation.</p>\n<p>The string on the right-hand side is only borrowed; its contents are copied into the returned\n<code>String</code>.</p>\n<h4 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h4>\n<p>Concatenating two <code>String</code>s takes the first by value and borrows the second:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>a = String::from(<span class=\"string\">\"hello\"</span>);\n<span class=\"kw\">let </span>b = String::from(<span class=\"string\">\" world\"</span>);\n<span class=\"kw\">let </span>c = a + <span class=\"kw-2\">&amp;</span>b;\n<span class=\"comment\">// `a` is moved and can no longer be used here.</span></code></pre></div>\n<p>If you want to keep using the first <code>String</code>, you can clone it and append to the clone instead:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>a = String::from(<span class=\"string\">\"hello\"</span>);\n<span class=\"kw\">let </span>b = String::from(<span class=\"string\">\" world\"</span>);\n<span class=\"kw\">let </span>c = a.clone() + <span class=\"kw-2\">&amp;</span>b;\n<span class=\"comment\">// `a` is still valid here.</span></code></pre></div>\n<p>Concatenating <code>&amp;str</code> slices can be done by converting the first to a <code>String</code>:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>a = <span class=\"string\">\"hello\"</span>;\n<span class=\"kw\">let </span>b = <span class=\"string\">\" world\"</span>;\n<span class=\"kw\">let </span>c = a.to_string() + b;</code></pre></div>\n</div><div class=\"impl-items\"><details class=\"toggle\" open><summary><section id=\"associatedtype.Output\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Output\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html#associatedtype.Output\" class=\"associatedtype\">Output</a> = <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h4></section></summary><div class='docblock'>The resulting type after applying the <code>+</code> operator.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.add\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2430\">source</a><a href=\"#method.add\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html#tymethod.add\" class=\"fn\">add</a>(self, other: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h4></section></summary><div class='docblock'>Performs the <code>+</code> operation. <a href=\"https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html#tymethod.add\">Read more</a></div></details></div></details>","Add<&str>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-AddAssign%3C%26str%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.12.0\">1.12.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2441\">source</a></span><a href=\"#impl-AddAssign%3C%26str%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/arith/trait.AddAssign.html\" title=\"trait core::ops::arith::AddAssign\">AddAssign</a>&lt;&amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"docblock\"><p>Implements the <code>+=</code> operator for appending to a <code>String</code>.</p>\n<p>This has the same behavior as the <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.push_str\" title=\"method alloc::string::String::push_str\"><code>push_str</code></a> method.</p>\n</div><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.add_assign\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2443\">source</a><a href=\"#method.add_assign\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/arith/trait.AddAssign.html#tymethod.add_assign\" class=\"fn\">add_assign</a>(&amp;mut self, other: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>)</h4></section></summary><div class='docblock'>Performs the <code>+=</code> operation. <a href=\"https://doc.rust-lang.org/nightly/core/ops/arith/trait.AddAssign.html#tymethod.add_assign\">Read more</a></div></details></div></details>","AddAssign<&str>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-AsMut%3Cstr%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.43.0\">1.43.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2686\">source</a></span><a href=\"#impl-AsMut%3Cstr%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html\" title=\"trait core::convert::AsMut\">AsMut</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_mut\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2688\">source</a><a href=\"#method.as_mut\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html#tymethod.as_mut\" class=\"fn\">as_mut</a>(&amp;mut self) -&gt; &amp;mut <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a></h4></section></summary><div class='docblock'>Converts this type into a mutable reference of the (usually inferred) input type.</div></details></div></details>","AsMut<str>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-AsRef%3C%5Bu8%5D%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2694\">source</a></span><a href=\"#impl-AsRef%3C%5Bu8%5D%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html\" title=\"trait core::convert::AsRef\">AsRef</a>&lt;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_ref\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2696\">source</a><a href=\"#method.as_ref\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html#tymethod.as_ref\" class=\"fn\">as_ref</a>(&amp;self) -&gt; &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>] <a href=\"#\" class=\"tooltip\" data-notable-ty=\"&amp;[u8]\">ⓘ</a></h4></section></summary><div class='docblock'>Converts this type into a shared reference of the (usually inferred) input type.</div></details></div></details>","AsRef<[u8]>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-AsRef%3COsStr%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/ffi/os_str.rs.html#1574\">source</a></span><a href=\"#impl-AsRef%3COsStr%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html\" title=\"trait core::convert::AsRef\">AsRef</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/ffi/os_str/struct.OsStr.html\" title=\"struct std::ffi::os_str::OsStr\">OsStr</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_ref\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/ffi/os_str.rs.html#1576\">source</a><a href=\"#method.as_ref\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html#tymethod.as_ref\" class=\"fn\">as_ref</a>(&amp;self) -&gt; &amp;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/ffi/os_str/struct.OsStr.html\" title=\"struct std::ffi::os_str::OsStr\">OsStr</a></h4></section></summary><div class='docblock'>Converts this type into a shared reference of the (usually inferred) input type.</div></details></div></details>","AsRef<OsStr>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-AsRef%3CPath%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/path.rs.html#3171\">source</a></span><a href=\"#impl-AsRef%3CPath%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html\" title=\"trait core::convert::AsRef\">AsRef</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/path/struct.Path.html\" title=\"struct std::path::Path\">Path</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_ref\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/path.rs.html#3173\">source</a><a href=\"#method.as_ref\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html#tymethod.as_ref\" class=\"fn\">as_ref</a>(&amp;self) -&gt; &amp;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/path/struct.Path.html\" title=\"struct std::path::Path\">Path</a></h4></section></summary><div class='docblock'>Converts this type into a shared reference of the (usually inferred) input type.</div></details></div></details>","AsRef<Path>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-AsRef%3Cstr%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2678\">source</a></span><a href=\"#impl-AsRef%3Cstr%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html\" title=\"trait core::convert::AsRef\">AsRef</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_ref\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2680\">source</a><a href=\"#method.as_ref\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html#tymethod.as_ref\" class=\"fn\">as_ref</a>(&amp;self) -&gt; &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a></h4></section></summary><div class='docblock'>Converts this type into a shared reference of the (usually inferred) input type.</div></details></div></details>","AsRef<str>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Borrow%3Cstr%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/str.rs.html#190\">source</a></span><a href=\"#impl-Borrow%3Cstr%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.borrow\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/str.rs.html#192\">source</a><a href=\"#method.borrow\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow\" class=\"fn\">borrow</a>(&amp;self) -&gt; &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow\">Read more</a></div></details></div></details>","Borrow<str>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-BorrowMut%3Cstr%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.36.0\">1.36.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/str.rs.html#198\">source</a></span><a href=\"#impl-BorrowMut%3Cstr%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html\" title=\"trait core::borrow::BorrowMut\">BorrowMut</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.borrow_mut\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/str.rs.html#200\">source</a><a href=\"#method.borrow_mut\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut\" class=\"fn\">borrow_mut</a>(&amp;mut self) -&gt; &amp;mut <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut\">Read more</a></div></details></div></details>","BorrowMut<str>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Clone-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2095\">source</a></span><a href=\"#impl-Clone-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.clone\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2096\">source</a><a href=\"#method.clone\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone\" class=\"fn\">clone</a>(&amp;self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.clone_from\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2100\">source</a><a href=\"#method.clone_from\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from\" class=\"fn\">clone_from</a>(&amp;mut self, source: &amp;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from\">Read more</a></div></details></div></details>","Clone","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Debug-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2372\">source</a></span><a href=\"#impl-Debug-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.fmt\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2374\">source</a><a href=\"#method.fmt\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt\" class=\"fn\">fmt</a>(&amp;self, f: &amp;mut <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html\" title=\"struct core::fmt::Formatter\">Formatter</a>&lt;'_&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.unit.html\">()</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html\" title=\"struct core::fmt::Error\">Error</a>&gt;</h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt\">Read more</a></div></details></div></details>","Debug","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Default-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2355\">source</a></span><a href=\"#impl-Default-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.default\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2358\">source</a><a href=\"#method.default\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default\" class=\"fn\">default</a>() -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h4></section></summary><div class=\"docblock\"><p>Creates an empty <code>String</code>.</p>\n</div></details></div></details>","Default","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Deref-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2473\">source</a></span><a href=\"#impl-Deref-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle\" open><summary><section id=\"associatedtype.Target\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Target\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target\" class=\"associatedtype\">Target</a> = <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a></h4></section></summary><div class='docblock'>The resulting type after dereferencing.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.deref\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2477\">source</a><a href=\"#method.deref\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref\" class=\"fn\">deref</a>(&amp;self) -&gt; &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a></h4></section></summary><div class='docblock'>Dereferences the value.</div></details></div></details>","Deref","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-DerefMut-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.3.0\">1.3.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2486\">source</a></span><a href=\"#impl-DerefMut-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.DerefMut.html\" title=\"trait core::ops::deref::DerefMut\">DerefMut</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.deref_mut\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2488\">source</a><a href=\"#method.deref_mut\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.DerefMut.html#tymethod.deref_mut\" class=\"fn\">deref_mut</a>(&amp;mut self) -&gt; &amp;mut <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a></h4></section></summary><div class='docblock'>Mutably dereferences the value.</div></details></div></details>","DerefMut","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Deserialize%3C'de%3E-for-String\" class=\"impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/de/impls.rs.html#601\">source</a><a href=\"#impl-Deserialize%3C'de%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.deserialize\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/de/impls.rs.html#602-604\">source</a><a href=\"#method.deserialize\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize\" class=\"fn\">deserialize</a>&lt;D&gt;(\n    deserializer: D\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>, &lt;D as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html\" title=\"trait serde::de::Deserializer\">Deserializer</a>&lt;'de&gt;&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error\" title=\"type serde::de::Deserializer::Error\">Error</a>&gt;<div class=\"where\">where\n    D: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html\" title=\"trait serde::de::Deserializer\">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize\">Read more</a></div></details></div></details>","Deserialize<'de>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Display-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2364\">source</a></span><a href=\"#impl-Display-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.fmt\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2366\">source</a><a href=\"#method.fmt\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt\" class=\"fn\">fmt</a>(&amp;self, f: &amp;mut <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html\" title=\"struct core::fmt::Formatter\">Formatter</a>&lt;'_&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.unit.html\">()</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html\" title=\"struct core::fmt::Error\">Error</a>&gt;</h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt\">Read more</a></div></details></div></details>","Display","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Extend%3C%26char%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.2.0\">1.2.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2207\">source</a></span><a href=\"#impl-Extend%3C%26char%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html\" title=\"trait core::iter::traits::collect::Extend\">Extend</a>&lt;&amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\">char</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2208\">source</a><a href=\"#method.extend\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\" class=\"fn\">extend</a>&lt;I&gt;(&amp;mut self, iter: I)<div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = &amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\">char</a>&gt;,</div></h4></section></summary><div class='docblock'>Extends a collection with the contents of an iterator. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_one\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2213\">source</a><a href=\"#method.extend_one\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_one\" class=\"fn\">extend_one</a>(&amp;mut self, _: &amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\">char</a>)</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Extends a collection with exactly one element.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_reserve\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2218\">source</a><a href=\"#method.extend_reserve\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\" class=\"fn\">extend_reserve</a>(&amp;mut self, additional: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>)</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Reserves capacity in a collection for the given number of additional elements. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\">Read more</a></div></details></div></details>","Extend<&'a char>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Extend%3C%26str%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2225\">source</a></span><a href=\"#impl-Extend%3C%26str%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html\" title=\"trait core::iter::traits::collect::Extend\">Extend</a>&lt;&amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2226\">source</a><a href=\"#method.extend\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\" class=\"fn\">extend</a>&lt;I&gt;(&amp;mut self, iter: I)<div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = &amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;,</div></h4></section></summary><div class='docblock'>Extends a collection with the contents of an iterator. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_one\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2231\">source</a><a href=\"#method.extend_one\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_one\" class=\"fn\">extend_one</a>(&amp;mut self, s: &amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>)</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Extends a collection with exactly one element.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_reserve\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#460\">source</a><a href=\"#method.extend_reserve\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\" class=\"fn\">extend_reserve</a>(&amp;mut self, additional: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>)</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Reserves capacity in a collection for the given number of additional elements. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\">Read more</a></div></details></div></details>","Extend<&'a str>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Extend%3CBox%3Cstr%3E%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.45.0\">1.45.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2238\">source</a></span><a href=\"#impl-Extend%3CBox%3Cstr%3E%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html\" title=\"trait core::iter::traits::collect::Extend\">Extend</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html\" title=\"struct alloc::boxed::Box\">Box</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2239\">source</a><a href=\"#method.extend\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\" class=\"fn\">extend</a>&lt;I&gt;(&amp;mut self, iter: I)<div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html\" title=\"struct alloc::boxed::Box\">Box</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;&gt;,</div></h4></section></summary><div class='docblock'>Extends a collection with the contents of an iterator. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_one\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#452\">source</a><a href=\"#method.extend_one\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_one\" class=\"fn\">extend_one</a>(&amp;mut self, item: A)</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Extends a collection with exactly one element.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_reserve\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#460\">source</a><a href=\"#method.extend_reserve\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\" class=\"fn\">extend_reserve</a>(&amp;mut self, additional: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>)</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Reserves capacity in a collection for the given number of additional elements. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\">Read more</a></div></details></div></details>","Extend<Box<str>>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Extend%3CCow%3C'a,+str%3E%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.19.0\">1.19.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2259\">source</a></span><a href=\"#impl-Extend%3CCow%3C'a,+str%3E%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html\" title=\"trait core::iter::traits::collect::Extend\">Extend</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html\" title=\"enum alloc::borrow::Cow\">Cow</a>&lt;'a, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2260\">source</a><a href=\"#method.extend\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\" class=\"fn\">extend</a>&lt;I&gt;(&amp;mut self, iter: I)<div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html\" title=\"enum alloc::borrow::Cow\">Cow</a>&lt;'a, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;&gt;,</div></h4></section></summary><div class='docblock'>Extends a collection with the contents of an iterator. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_one\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2265\">source</a><a href=\"#method.extend_one\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_one\" class=\"fn\">extend_one</a>(&amp;mut self, s: <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html\" title=\"enum alloc::borrow::Cow\">Cow</a>&lt;'a, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;)</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Extends a collection with exactly one element.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_reserve\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#460\">source</a><a href=\"#method.extend_reserve\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\" class=\"fn\">extend_reserve</a>(&amp;mut self, additional: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>)</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Reserves capacity in a collection for the given number of additional elements. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\">Read more</a></div></details></div></details>","Extend<Cow<'a, str>>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Extend%3CString%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.4.0\">1.4.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2246\">source</a></span><a href=\"#impl-Extend%3CString%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html\" title=\"trait core::iter::traits::collect::Extend\">Extend</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2247\">source</a><a href=\"#method.extend\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\" class=\"fn\">extend</a>&lt;I&gt;(&amp;mut self, iter: I)<div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>&gt;,</div></h4></section></summary><div class='docblock'>Extends a collection with the contents of an iterator. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_one\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2252\">source</a><a href=\"#method.extend_one\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_one\" class=\"fn\">extend_one</a>(&amp;mut self, s: <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>)</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Extends a collection with exactly one element.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_reserve\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#460\">source</a><a href=\"#method.extend_reserve\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\" class=\"fn\">extend_reserve</a>(&amp;mut self, additional: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>)</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Reserves capacity in a collection for the given number of additional elements. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\">Read more</a></div></details></div></details>","Extend<String>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Extend%3Cchar%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2186\">source</a></span><a href=\"#impl-Extend%3Cchar%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html\" title=\"trait core::iter::traits::collect::Extend\">Extend</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\">char</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2187\">source</a><a href=\"#method.extend\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\" class=\"fn\">extend</a>&lt;I&gt;(&amp;mut self, iter: I)<div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\">char</a>&gt;,</div></h4></section></summary><div class='docblock'>Extends a collection with the contents of an iterator. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_one\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2195\">source</a><a href=\"#method.extend_one\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_one\" class=\"fn\">extend_one</a>(&amp;mut self, c: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\">char</a>)</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Extends a collection with exactly one element.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_reserve\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2200\">source</a><a href=\"#method.extend_reserve\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\" class=\"fn\">extend_reserve</a>(&amp;mut self, additional: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>)</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Reserves capacity in a collection for the given number of additional elements. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\">Read more</a></div></details></div></details>","Extend<char>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-From%3C%26String%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.35.0\">1.35.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2727\">source</a></span><a href=\"#impl-From%3C%26String%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;&amp;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2732\">source</a><a href=\"#method.from\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from\" class=\"fn\">from</a>(s: &amp;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h4></section></summary><div class=\"docblock\"><p>Converts a <code>&amp;String</code> into a <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\"><code>String</code></a>.</p>\n<p>This clones <code>s</code> and returns the clone.</p>\n</div></details></div></details>","From<&String>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-From%3C%26mut+str%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.44.0\">1.44.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2715\">source</a></span><a href=\"#impl-From%3C%26mut+str%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;&amp;mut <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2720\">source</a><a href=\"#method.from\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from\" class=\"fn\">from</a>(s: &amp;mut <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h4></section></summary><div class=\"docblock\"><p>Converts a <code>&amp;mut str</code> into a <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\"><code>String</code></a>.</p>\n<p>The result is allocated on the heap.</p>\n</div></details></div></details>","From<&mut str>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-From%3C%26str%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2703\">source</a></span><a href=\"#impl-From%3C%26str%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;&amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2708\">source</a><a href=\"#method.from\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from\" class=\"fn\">from</a>(s: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h4></section></summary><div class=\"docblock\"><p>Converts a <code>&amp;str</code> into a <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\"><code>String</code></a>.</p>\n<p>The result is allocated on the heap.</p>\n</div></details></div></details>","From<&str>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-From%3CBox%3Cstr%3E%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.18.0\">1.18.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2740\">source</a></span><a href=\"#impl-From%3CBox%3Cstr%3E%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html\" title=\"struct alloc::boxed::Box\">Box</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2753\">source</a><a href=\"#method.from\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from\" class=\"fn\">from</a>(s: <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html\" title=\"struct alloc::boxed::Box\">Box</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h4></section></summary><div class=\"docblock\"><p>Converts the given boxed <code>str</code> slice to a <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\"><code>String</code></a>.\nIt is notable that the <code>str</code> slice is owned.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>s1: String = String::from(<span class=\"string\">\"hello world\"</span>);\n<span class=\"kw\">let </span>s2: Box&lt;str&gt; = s1.into_boxed_str();\n<span class=\"kw\">let </span>s3: String = String::from(s2);\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"string\">\"hello world\"</span>, s3)</code></pre></div>\n</div></details></div></details>","From<Box<str>>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-From%3CCow%3C'a,+str%3E%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.14.0\">1.14.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2779\">source</a></span><a href=\"#impl-From%3CCow%3C'a,+str%3E%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html\" title=\"enum alloc::borrow::Cow\">Cow</a>&lt;'a, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2796\">source</a><a href=\"#method.from\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from\" class=\"fn\">from</a>(s: <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html\" title=\"enum alloc::borrow::Cow\">Cow</a>&lt;'a, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h4></section></summary><div class=\"docblock\"><p>Converts a clone-on-write string to an owned\ninstance of <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\"><code>String</code></a>.</p>\n<p>This extracts the owned string,\nclones the string if it is not already owned.</p>\n<h5 id=\"example\"><a class=\"doc-anchor\" href=\"#example\">§</a>Example</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"comment\">// If the string is not owned...\n</span><span class=\"kw\">let </span>cow: Cow&lt;<span class=\"lifetime\">'_</span>, str&gt; = Cow::Borrowed(<span class=\"string\">\"eggplant\"</span>);\n<span class=\"comment\">// It will allocate on the heap and copy the string.\n</span><span class=\"kw\">let </span>owned: String = String::from(cow);\n<span class=\"macro\">assert_eq!</span>(<span class=\"kw-2\">&amp;</span>owned[..], <span class=\"string\">\"eggplant\"</span>);</code></pre></div>\n</div></details></div></details>","From<Cow<'a, str>>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-From%3Cchar%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.46.0\">1.46.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#3035\">source</a></span><a href=\"#impl-From%3Cchar%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\">char</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#3045\">source</a><a href=\"#method.from\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from\" class=\"fn\">from</a>(c: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\">char</a>) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h4></section></summary><div class=\"docblock\"><p>Allocates an owned <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\"><code>String</code></a> from a single character.</p>\n<h5 id=\"example\"><a class=\"doc-anchor\" href=\"#example\">§</a>Example</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>c: char = <span class=\"string\">'a'</span>;\n<span class=\"kw\">let </span>s: String = String::from(c);\n<span class=\"macro\">assert_eq!</span>(<span class=\"string\">\"a\"</span>, <span class=\"kw-2\">&amp;</span>s[..]);</code></pre></div>\n</div></details></div></details>","From<char>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FromIterator%3C%26char%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.17.0\">1.17.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2117\">source</a></span><a href=\"#impl-FromIterator%3C%26char%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html\" title=\"trait core::iter::traits::collect::FromIterator\">FromIterator</a>&lt;&amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\">char</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_iter\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2118\">source</a><a href=\"#method.from_iter\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter\" class=\"fn\">from_iter</a>&lt;I&gt;(iter: I) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a><div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = &amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\">char</a>&gt;,</div></h4></section></summary><div class='docblock'>Creates a value from an iterator. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter\">Read more</a></div></details></div></details>","FromIterator<&'a char>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FromIterator%3C%26str%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2127\">source</a></span><a href=\"#impl-FromIterator%3C%26str%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html\" title=\"trait core::iter::traits::collect::FromIterator\">FromIterator</a>&lt;&amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_iter\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2128\">source</a><a href=\"#method.from_iter\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter\" class=\"fn\">from_iter</a>&lt;I&gt;(iter: I) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a><div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = &amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;,</div></h4></section></summary><div class='docblock'>Creates a value from an iterator. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter\">Read more</a></div></details></div></details>","FromIterator<&'a str>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FromIterator%3CBox%3Cstr%3E%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.45.0\">1.45.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2156\">source</a></span><a href=\"#impl-FromIterator%3CBox%3Cstr%3E%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html\" title=\"trait core::iter::traits::collect::FromIterator\">FromIterator</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html\" title=\"struct alloc::boxed::Box\">Box</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_iter\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2157\">source</a><a href=\"#method.from_iter\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter\" class=\"fn\">from_iter</a>&lt;I&gt;(iter: I) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a><div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html\" title=\"struct alloc::boxed::Box\">Box</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;&gt;,</div></h4></section></summary><div class='docblock'>Creates a value from an iterator. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter\">Read more</a></div></details></div></details>","FromIterator<Box<str>>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FromIterator%3CCow%3C'a,+str%3E%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.19.0\">1.19.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2166\">source</a></span><a href=\"#impl-FromIterator%3CCow%3C'a,+str%3E%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html\" title=\"trait core::iter::traits::collect::FromIterator\">FromIterator</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html\" title=\"enum alloc::borrow::Cow\">Cow</a>&lt;'a, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_iter\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2167\">source</a><a href=\"#method.from_iter\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter\" class=\"fn\">from_iter</a>&lt;I&gt;(iter: I) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a><div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html\" title=\"enum alloc::borrow::Cow\">Cow</a>&lt;'a, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;&gt;,</div></h4></section></summary><div class='docblock'>Creates a value from an iterator. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter\">Read more</a></div></details></div></details>","FromIterator<Cow<'a, str>>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FromIterator%3CString%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.4.0\">1.4.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2137\">source</a></span><a href=\"#impl-FromIterator%3CString%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html\" title=\"trait core::iter::traits::collect::FromIterator\">FromIterator</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_iter\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2138\">source</a><a href=\"#method.from_iter\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter\" class=\"fn\">from_iter</a>&lt;I&gt;(iter: I) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a><div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>&gt;,</div></h4></section></summary><div class='docblock'>Creates a value from an iterator. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter\">Read more</a></div></details></div></details>","FromIterator<String>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FromIterator%3Cchar%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2107\">source</a></span><a href=\"#impl-FromIterator%3Cchar%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html\" title=\"trait core::iter::traits::collect::FromIterator\">FromIterator</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\">char</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_iter\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2108\">source</a><a href=\"#method.from_iter\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter\" class=\"fn\">from_iter</a>&lt;I&gt;(iter: I) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a><div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\">char</a>&gt;,</div></h4></section></summary><div class='docblock'>Creates a value from an iterator. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter\">Read more</a></div></details></div></details>","FromIterator<char>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FromStr-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2503\">source</a></span><a href=\"#impl-FromStr-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle\" open><summary><section id=\"associatedtype.Err\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Err\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err\" class=\"associatedtype\">Err</a> = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html\" title=\"enum core::convert::Infallible\">Infallible</a></h4></section></summary><div class='docblock'>The associated error which can be returned from parsing.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_str\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2506\">source</a><a href=\"#method.from_str\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str\" class=\"fn\">from_str</a>(s: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>, &lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a> as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a>&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err\" title=\"type core::str::traits::FromStr::Err\">Err</a>&gt;</h4></section></summary><div class='docblock'>Parses a string <code>s</code> to return a value of this type. <a href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str\">Read more</a></div></details></div></details>","FromStr","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Hash-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2380\">source</a></span><a href=\"#impl-Hash-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.hash\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2382\">source</a><a href=\"#method.hash\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash\" class=\"fn\">hash</a>&lt;H&gt;(&amp;self, hasher: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut H</a>)<div class=\"where\">where\n    H: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\">Hasher</a>,</div></h4></section></summary><div class='docblock'>Feeds this value into the given <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\"><code>Hasher</code></a>. <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.hash_slice\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.3.0\">1.3.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#238-240\">source</a></span><a href=\"#method.hash_slice\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice\" class=\"fn\">hash_slice</a>&lt;H&gt;(data: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[Self]</a>, state: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut H</a>)<div class=\"where\">where\n    H: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\">Hasher</a>,\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\"><code>Hasher</code></a>. <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice\">Read more</a></div></details></div></details>","Hash","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Index%3CI%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2449-2451\">source</a></span><a href=\"#impl-Index%3CI%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;I&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/index/trait.Index.html\" title=\"trait core::ops::index::Index\">Index</a>&lt;I&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a><div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html\" title=\"trait core::slice::index::SliceIndex\">SliceIndex</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle\" open><summary><section id=\"associatedtype.Output\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Output\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/ops/index/trait.Index.html#associatedtype.Output\" class=\"associatedtype\">Output</a> = &lt;I as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html\" title=\"trait core::slice::index::SliceIndex\">SliceIndex</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output\" title=\"type core::slice::index::SliceIndex::Output\">Output</a></h4></section></summary><div class='docblock'>The returned type after indexing.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.index\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2456\">source</a><a href=\"#method.index\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/index/trait.Index.html#tymethod.index\" class=\"fn\">index</a>(&amp;self, index: I) -&gt; &amp;&lt;I as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html\" title=\"trait core::slice::index::SliceIndex\">SliceIndex</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output\" title=\"type core::slice::index::SliceIndex::Output\">Output</a></h4></section></summary><div class='docblock'>Performs the indexing (<code>container[index]</code>) operation. <a href=\"https://doc.rust-lang.org/nightly/core/ops/index/trait.Index.html#tymethod.index\">Read more</a></div></details></div></details>","Index<I>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-IndexMut%3CI%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2462-2464\">source</a></span><a href=\"#impl-IndexMut%3CI%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;I&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/index/trait.IndexMut.html\" title=\"trait core::ops::index::IndexMut\">IndexMut</a>&lt;I&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a><div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html\" title=\"trait core::slice::index::SliceIndex\">SliceIndex</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.index_mut\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2467\">source</a><a href=\"#method.index_mut\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/index/trait.IndexMut.html#tymethod.index_mut\" class=\"fn\">index_mut</a>(&amp;mut self, index: I) -&gt; &amp;mut &lt;I as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html\" title=\"trait core::slice::index::SliceIndex\">SliceIndex</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output\" title=\"type core::slice::index::SliceIndex::Output\">Output</a></h4></section></summary><div class='docblock'>Performs the mutable indexing (<code>container[index]</code>) operation. <a href=\"https://doc.rust-lang.org/nightly/core/ops/index/trait.IndexMut.html#tymethod.index_mut\">Read more</a></div></details></div></details>","IndexMut<I>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-IntoDeserializer%3C'de,+E%3E-for-String\" class=\"impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/de/value.rs.html#586-588\">source</a><a href=\"#impl-IntoDeserializer%3C'de,+E%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'de, E&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.IntoDeserializer.html\" title=\"trait serde::de::IntoDeserializer\">IntoDeserializer</a>&lt;'de, E&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a><div class=\"where\">where\n    E: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Error.html\" title=\"trait serde::de::Error\">Error</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle\" open><summary><section id=\"associatedtype.Deserializer\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Deserializer\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://docs.rs/serde/1.0.197/serde/de/trait.IntoDeserializer.html#associatedtype.Deserializer\" class=\"associatedtype\">Deserializer</a> = <a class=\"struct\" href=\"https://docs.rs/serde/1.0.197/serde/de/value/struct.StringDeserializer.html\" title=\"struct serde::de::value::StringDeserializer\">StringDeserializer</a>&lt;E&gt;</h4></section></summary><div class='docblock'>The type of the deserializer being converted into.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_deserializer\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/de/value.rs.html#592\">source</a><a href=\"#method.into_deserializer\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://docs.rs/serde/1.0.197/serde/de/trait.IntoDeserializer.html#tymethod.into_deserializer\" class=\"fn\">into_deserializer</a>(self) -&gt; <a class=\"struct\" href=\"https://docs.rs/serde/1.0.197/serde/de/value/struct.StringDeserializer.html\" title=\"struct serde::de::value::StringDeserializer\">StringDeserializer</a>&lt;E&gt;</h4></section></summary><div class='docblock'>Convert this value into a deserializer.</div></details></div></details>","IntoDeserializer<'de, E>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Ord-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#362\">source</a></span><a href=\"#impl-Ord-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.cmp\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#362\">source</a><a href=\"#method.cmp\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp\" class=\"fn\">cmp</a>(&amp;self, other: &amp;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html\" title=\"enum core::cmp::Ordering\">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href=\"https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html\" title=\"enum core::cmp::Ordering\"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.max\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.21.0\">1.21.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#856-858\">source</a></span><a href=\"#method.max\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max\" class=\"fn\">max</a>(self, other: Self) -&gt; Self<div class=\"where\">where\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.min\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.21.0\">1.21.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#877-879\">source</a></span><a href=\"#method.min\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min\" class=\"fn\">min</a>(self, other: Self) -&gt; Self<div class=\"where\">where\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.clamp\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.50.0\">1.50.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#902-905\">source</a></span><a href=\"#method.clamp\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp\" class=\"fn\">clamp</a>(self, min: Self, max: Self) -&gt; Self<div class=\"where\">where\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>,</div></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp\">Read more</a></div></details></div></details>","Ord","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-PartialEq%3C%26str%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2346\">source</a></span><a href=\"#impl-PartialEq%3C%26str%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'a, 'b&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>&lt;&amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.eq\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2346\">source</a><a href=\"#method.eq\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq\" class=\"fn\">eq</a>(&amp;self, other: &amp;&amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used\nby <code>==</code>.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.ne\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2346\">source</a><a href=\"#method.ne\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne\" class=\"fn\">ne</a>(&amp;self, other: &amp;&amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.</div></details></div></details>","PartialEq<&'a str>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-PartialEq%3CCow%3C'a,+str%3E%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2352\">source</a></span><a href=\"#impl-PartialEq%3CCow%3C'a,+str%3E%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'a, 'b&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html\" title=\"enum alloc::borrow::Cow\">Cow</a>&lt;'a, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.eq\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2352\">source</a><a href=\"#method.eq\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq\" class=\"fn\">eq</a>(&amp;self, other: &amp;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html\" title=\"enum alloc::borrow::Cow\">Cow</a>&lt;'a, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used\nby <code>==</code>.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.ne\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2352\">source</a><a href=\"#method.ne\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne\" class=\"fn\">ne</a>(&amp;self, other: &amp;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html\" title=\"enum alloc::borrow::Cow\">Cow</a>&lt;'a, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.</div></details></div></details>","PartialEq<Cow<'a, str>>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-PartialEq%3CValue%3E-for-String\" class=\"impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde_json/1.0.115/src/serde_json/value/partial_eq.rs.html#61\">source</a><a href=\"#impl-PartialEq%3CValue%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>&lt;<a class=\"enum\" href=\"https://docs.rs/serde_json/1.0.115/serde_json/value/enum.Value.html\" title=\"enum serde_json::value::Value\">Value</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.eq\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde_json/1.0.115/src/serde_json/value/partial_eq.rs.html#62\">source</a><a href=\"#method.eq\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq\" class=\"fn\">eq</a>(&amp;self, other: &amp;<a class=\"enum\" href=\"https://docs.rs/serde_json/1.0.115/serde_json/value/enum.Value.html\" title=\"enum serde_json::value::Value\">Value</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used\nby <code>==</code>.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.ne\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263\">source</a></span><a href=\"#method.ne\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne\" class=\"fn\">ne</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.</div></details></div></details>","PartialEq<Value>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-PartialEq%3Cstr%3E-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2345\">source</a></span><a href=\"#impl-PartialEq%3Cstr%3E-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'a, 'b&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.eq\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2345\">source</a><a href=\"#method.eq\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq\" class=\"fn\">eq</a>(&amp;self, other: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used\nby <code>==</code>.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.ne\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2345\">source</a><a href=\"#method.ne\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne\" class=\"fn\">ne</a>(&amp;self, other: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.</div></details></div></details>","PartialEq<str>","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-PartialEq-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#362\">source</a></span><a href=\"#impl-PartialEq-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.eq\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#362\">source</a><a href=\"#method.eq\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq\" class=\"fn\">eq</a>(&amp;self, other: &amp;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used\nby <code>==</code>.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.ne\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263\">source</a></span><a href=\"#method.ne\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne\" class=\"fn\">ne</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.</div></details></div></details>","PartialEq","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-PartialOrd-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#362\">source</a></span><a href=\"#impl-PartialOrd-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.partial_cmp\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#362\">source</a><a href=\"#method.partial_cmp\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp\" class=\"fn\">partial_cmp</a>(&amp;self, other: &amp;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html\" title=\"enum core::cmp::Ordering\">Ordering</a>&gt;</h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.lt\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1179\">source</a></span><a href=\"#method.lt\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt\" class=\"fn\">lt</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code>&lt;</code> operator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.le\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1197\">source</a></span><a href=\"#method.le\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le\" class=\"fn\">le</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>&lt;=</code>\noperator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.gt\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1214\">source</a></span><a href=\"#method.gt\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt\" class=\"fn\">gt</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>&gt;</code> operator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.ge\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1232\">source</a></span><a href=\"#method.ge\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge\" class=\"fn\">ge</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>&gt;=</code>\noperator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge\">Read more</a></div></details></div></details>","PartialOrd","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Serialize-for-String\" class=\"impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/ser/impls.rs.html#52\">source</a><a href=\"#impl-Serialize-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.serialize\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/ser/impls.rs.html#54-56\">source</a><a href=\"#method.serialize\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize\" class=\"fn\">serialize</a>&lt;S&gt;(\n    &amp;self,\n    serializer: S\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;&lt;S as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok\" title=\"type serde::ser::Serializer::Ok\">Ok</a>, &lt;S as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error\" title=\"type serde::ser::Serializer::Error\">Error</a>&gt;<div class=\"where\">where\n    S: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize\">Read more</a></div></details></div></details>","Serialize","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-String\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#427\">source</a><a href=\"#impl-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.new\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0, const since 1.39.0\">1.0.0 (const: 1.39.0)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#448\">source</a></span><h4 class=\"code-header\">pub const fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.new\" class=\"fn\">new</a>() -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h4></section></summary><div class=\"docblock\"><p>Creates a new empty <code>String</code>.</p>\n<p>Given that the <code>String</code> is empty, this will not allocate any initial\nbuffer. While that means that this initial operation is very\ninexpensive, it may cause excessive allocation later when you add\ndata. If you have an idea of how much data the <code>String</code> will hold,\nconsider the <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.with_capacity\" title=\"associated function alloc::string::String::with_capacity\"><code>with_capacity</code></a> method to prevent excessive\nre-allocation.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>s = String::new();</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.with_capacity\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#491\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.with_capacity\" class=\"fn\">with_capacity</a>(capacity: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h4></section></summary><div class=\"docblock\"><p>Creates a new empty <code>String</code> with at least the specified capacity.</p>\n<p><code>String</code>s have an internal buffer to hold their data. The capacity is\nthe length of that buffer, and can be queried with the <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.capacity\" title=\"method alloc::string::String::capacity\"><code>capacity</code></a>\nmethod. This method creates an empty <code>String</code>, but one with an initial\nbuffer that can hold at least <code>capacity</code> bytes. This is useful when you\nmay be appending a bunch of data to the <code>String</code>, reducing the number of\nreallocations it needs to do.</p>\n<p>If the given capacity is <code>0</code>, no allocation will occur, and this method\nis identical to the <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.new\" title=\"associated function alloc::string::String::new\"><code>new</code></a> method.</p>\n<h5 id=\"examples-1\"><a class=\"doc-anchor\" href=\"#examples-1\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::with_capacity(<span class=\"number\">10</span>);\n\n<span class=\"comment\">// The String contains no chars, even though it has capacity for more\n</span><span class=\"macro\">assert_eq!</span>(s.len(), <span class=\"number\">0</span>);\n\n<span class=\"comment\">// These are all done without reallocating...\n</span><span class=\"kw\">let </span>cap = s.capacity();\n<span class=\"kw\">for _ in </span><span class=\"number\">0</span>..<span class=\"number\">10 </span>{\n    s.push(<span class=\"string\">'a'</span>);\n}\n\n<span class=\"macro\">assert_eq!</span>(s.capacity(), cap);\n\n<span class=\"comment\">// ...but this may make the string reallocate\n</span>s.push(<span class=\"string\">'a'</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.try_with_capacity\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#504\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.try_with_capacity\" class=\"fn\">try_with_capacity</a>(capacity: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/struct.TryReserveError.html\" title=\"struct alloc::collections::TryReserveError\">TryReserveError</a>&gt;</h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_with_capacity</code>)</span></div></span></summary><div class=\"docblock\"><p>Creates a new empty <code>String</code> with at least the specified capacity.</p>\n<h5 id=\"errors\"><a class=\"doc-anchor\" href=\"#errors\">§</a>Errors</h5>\n<p>Returns <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> if the capacity exceeds <code>isize::MAX</code> bytes,\nor if the memory allocator reports failure.</p>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_utf8\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#576\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.from_utf8\" class=\"fn\">from_utf8</a>(vec: <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"struct alloc::vec::Vec\">Vec</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.FromUtf8Error.html\" title=\"struct alloc::string::FromUtf8Error\">FromUtf8Error</a>&gt;</h4></section></summary><div class=\"docblock\"><p>Converts a vector of bytes to a <code>String</code>.</p>\n<p>A string (<a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\"><code>String</code></a>) is made of bytes (<a href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\" title=\"primitive u8\"><code>u8</code></a>), and a vector of bytes\n(<a href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"Vec\"><code>Vec&lt;u8&gt;</code></a>) is made of bytes, so this function converts between the\ntwo. Not all byte slices are valid <code>String</code>s, however: <code>String</code>\nrequires that it is valid UTF-8. <code>from_utf8()</code> checks to ensure that\nthe bytes are valid UTF-8, and then does the conversion.</p>\n<p>If you are sure that the byte slice is valid UTF-8, and you don’t want\nto incur the overhead of the validity check, there is an unsafe version\nof this function, <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.from_utf8_unchecked\" title=\"associated function alloc::string::String::from_utf8_unchecked\"><code>from_utf8_unchecked</code></a>, which has the same behavior\nbut skips the check.</p>\n<p>This method will take care to not copy the vector, for efficiency’s\nsake.</p>\n<p>If you need a <a href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\" title=\"&amp;str\"><code>&amp;str</code></a> instead of a <code>String</code>, consider\n<a href=\"https://doc.rust-lang.org/nightly/core/str/converts/fn.from_utf8.html\" title=\"fn core::str::converts::from_utf8\"><code>str::from_utf8</code></a>.</p>\n<p>The inverse of this method is <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.into_bytes\" title=\"method alloc::string::String::into_bytes\"><code>into_bytes</code></a>.</p>\n<h5 id=\"errors-1\"><a class=\"doc-anchor\" href=\"#errors-1\">§</a>Errors</h5>\n<p>Returns <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> if the slice is not UTF-8 with a description as to why the\nprovided bytes are not UTF-8. The vector you moved in is also included.</p>\n<h5 id=\"examples-2\"><a class=\"doc-anchor\" href=\"#examples-2\">§</a>Examples</h5>\n<p>Basic usage:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"comment\">// some bytes, in a vector\n</span><span class=\"kw\">let </span>sparkle_heart = <span class=\"macro\">vec!</span>[<span class=\"number\">240</span>, <span class=\"number\">159</span>, <span class=\"number\">146</span>, <span class=\"number\">150</span>];\n\n<span class=\"comment\">// We know these bytes are valid, so we'll use `unwrap()`.\n</span><span class=\"kw\">let </span>sparkle_heart = String::from_utf8(sparkle_heart).unwrap();\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"string\">\"💖\"</span>, sparkle_heart);</code></pre></div>\n<p>Incorrect bytes:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"comment\">// some invalid bytes, in a vector\n</span><span class=\"kw\">let </span>sparkle_heart = <span class=\"macro\">vec!</span>[<span class=\"number\">0</span>, <span class=\"number\">159</span>, <span class=\"number\">146</span>, <span class=\"number\">150</span>];\n\n<span class=\"macro\">assert!</span>(String::from_utf8(sparkle_heart).is_err());</code></pre></div>\n<p>See the docs for <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.FromUtf8Error.html\" title=\"struct alloc::string::FromUtf8Error\"><code>FromUtf8Error</code></a> for more details on what you can do\nwith this error.</p>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_utf8_lossy\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#635\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.from_utf8_lossy\" class=\"fn\">from_utf8_lossy</a>(v: &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html\" title=\"enum alloc::borrow::Cow\">Cow</a>&lt;'_, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;</h4></section></summary><div class=\"docblock\"><p>Converts a slice of bytes to a string, including invalid characters.</p>\n<p>Strings are made of bytes (<a href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\" title=\"primitive u8\"><code>u8</code></a>), and a slice of bytes\n(<a href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\" title=\"primitive slice\"><code>&amp;[u8]</code></a>) is made of bytes, so this function converts\nbetween the two. Not all byte slices are valid strings, however: strings\nare required to be valid UTF-8. During this conversion,\n<code>from_utf8_lossy()</code> will replace any invalid UTF-8 sequences with\n<a href=\"https://doc.rust-lang.org/nightly/core/char/constant.REPLACEMENT_CHARACTER.html\" title=\"constant core::char::REPLACEMENT_CHARACTER\"><code>U+FFFD REPLACEMENT CHARACTER</code></a>, which looks like this: �</p>\n<p>If you are sure that the byte slice is valid UTF-8, and you don’t want\nto incur the overhead of the conversion, there is an unsafe version\nof this function, <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.from_utf8_unchecked\" title=\"associated function alloc::string::String::from_utf8_unchecked\"><code>from_utf8_unchecked</code></a>, which has the same behavior\nbut skips the checks.</p>\n<p>This function returns a <a href=\"https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html\" title=\"borrow::Cow\"><code>Cow&lt;'a, str&gt;</code></a>. If our byte slice is invalid\nUTF-8, then we need to insert the replacement characters, which will\nchange the size of the string, and hence, require a <code>String</code>. But if\nit’s already valid UTF-8, we don’t need a new allocation. This return\ntype allows us to handle both cases.</p>\n<h5 id=\"examples-3\"><a class=\"doc-anchor\" href=\"#examples-3\">§</a>Examples</h5>\n<p>Basic usage:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"comment\">// some bytes, in a vector\n</span><span class=\"kw\">let </span>sparkle_heart = <span class=\"macro\">vec!</span>[<span class=\"number\">240</span>, <span class=\"number\">159</span>, <span class=\"number\">146</span>, <span class=\"number\">150</span>];\n\n<span class=\"kw\">let </span>sparkle_heart = String::from_utf8_lossy(<span class=\"kw-2\">&amp;</span>sparkle_heart);\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"string\">\"💖\"</span>, sparkle_heart);</code></pre></div>\n<p>Incorrect bytes:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"comment\">// some invalid bytes\n</span><span class=\"kw\">let </span>input = <span class=\"string\">b\"Hello \\xF0\\x90\\x80World\"</span>;\n<span class=\"kw\">let </span>output = String::from_utf8_lossy(input);\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"string\">\"Hello �World\"</span>, output);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_utf16\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#684\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.from_utf16\" class=\"fn\">from_utf16</a>(v: &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u16.html\">u16</a>]) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.FromUtf16Error.html\" title=\"struct alloc::string::FromUtf16Error\">FromUtf16Error</a>&gt;</h4></section></summary><div class=\"docblock\"><p>Decode a UTF-16–encoded vector <code>v</code> into a <code>String</code>, returning <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>\nif <code>v</code> contains any invalid data.</p>\n<h5 id=\"examples-4\"><a class=\"doc-anchor\" href=\"#examples-4\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"comment\">// 𝄞music\n</span><span class=\"kw\">let </span>v = <span class=\"kw-2\">&amp;</span>[<span class=\"number\">0xD834</span>, <span class=\"number\">0xDD1E</span>, <span class=\"number\">0x006d</span>, <span class=\"number\">0x0075</span>,\n          <span class=\"number\">0x0073</span>, <span class=\"number\">0x0069</span>, <span class=\"number\">0x0063</span>];\n<span class=\"macro\">assert_eq!</span>(String::from(<span class=\"string\">\"𝄞music\"</span>),\n           String::from_utf16(v).unwrap());\n\n<span class=\"comment\">// 𝄞mu&lt;invalid&gt;ic\n</span><span class=\"kw\">let </span>v = <span class=\"kw-2\">&amp;</span>[<span class=\"number\">0xD834</span>, <span class=\"number\">0xDD1E</span>, <span class=\"number\">0x006d</span>, <span class=\"number\">0x0075</span>,\n          <span class=\"number\">0xD800</span>, <span class=\"number\">0x0069</span>, <span class=\"number\">0x0063</span>];\n<span class=\"macro\">assert!</span>(String::from_utf16(v).is_err());</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_utf16_lossy\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#724\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.from_utf16_lossy\" class=\"fn\">from_utf16_lossy</a>(v: &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u16.html\">u16</a>]) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h4></section></summary><div class=\"docblock\"><p>Decode a UTF-16–encoded slice <code>v</code> into a <code>String</code>, replacing\ninvalid data with <a href=\"https://doc.rust-lang.org/nightly/core/char/constant.REPLACEMENT_CHARACTER.html\" title=\"constant core::char::REPLACEMENT_CHARACTER\">the replacement character (<code>U+FFFD</code>)</a>.</p>\n<p>Unlike <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.from_utf8_lossy\" title=\"associated function alloc::string::String::from_utf8_lossy\"><code>from_utf8_lossy</code></a> which returns a <a href=\"https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html\" title=\"borrow::Cow\"><code>Cow&lt;'a, str&gt;</code></a>,\n<code>from_utf16_lossy</code> returns a <code>String</code> since the UTF-16 to UTF-8\nconversion requires a memory allocation.</p>\n<h5 id=\"examples-5\"><a class=\"doc-anchor\" href=\"#examples-5\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"comment\">// 𝄞mus&lt;invalid&gt;ic&lt;invalid&gt;\n</span><span class=\"kw\">let </span>v = <span class=\"kw-2\">&amp;</span>[<span class=\"number\">0xD834</span>, <span class=\"number\">0xDD1E</span>, <span class=\"number\">0x006d</span>, <span class=\"number\">0x0075</span>,\n          <span class=\"number\">0x0073</span>, <span class=\"number\">0xDD1E</span>, <span class=\"number\">0x0069</span>, <span class=\"number\">0x0063</span>,\n          <span class=\"number\">0xD834</span>];\n\n<span class=\"macro\">assert_eq!</span>(String::from(<span class=\"string\">\"𝄞mus\\u{FFFD}ic\\u{FFFD}\"</span>),\n           String::from_utf16_lossy(v));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_utf16le\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#752\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.from_utf16le\" class=\"fn\">from_utf16le</a>(v: &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.FromUtf16Error.html\" title=\"struct alloc::string::FromUtf16Error\">FromUtf16Error</a>&gt;</h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>str_from_utf16_endian</code>)</span></div></span></summary><div class=\"docblock\"><p>Decode a UTF-16LE–encoded vector <code>v</code> into a <code>String</code>, returning <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>\nif <code>v</code> contains any invalid data.</p>\n<h5 id=\"examples-6\"><a class=\"doc-anchor\" href=\"#examples-6\">§</a>Examples</h5>\n<p>Basic usage:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(str_from_utf16_endian)]\n</span><span class=\"comment\">// 𝄞music\n</span><span class=\"kw\">let </span>v = <span class=\"kw-2\">&amp;</span>[<span class=\"number\">0x34</span>, <span class=\"number\">0xD8</span>, <span class=\"number\">0x1E</span>, <span class=\"number\">0xDD</span>, <span class=\"number\">0x6d</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x75</span>, <span class=\"number\">0x00</span>,\n          <span class=\"number\">0x73</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x69</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x63</span>, <span class=\"number\">0x00</span>];\n<span class=\"macro\">assert_eq!</span>(String::from(<span class=\"string\">\"𝄞music\"</span>),\n           String::from_utf16le(v).unwrap());\n\n<span class=\"comment\">// 𝄞mu&lt;invalid&gt;ic\n</span><span class=\"kw\">let </span>v = <span class=\"kw-2\">&amp;</span>[<span class=\"number\">0x34</span>, <span class=\"number\">0xD8</span>, <span class=\"number\">0x1E</span>, <span class=\"number\">0xDD</span>, <span class=\"number\">0x6d</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x75</span>, <span class=\"number\">0x00</span>,\n          <span class=\"number\">0x00</span>, <span class=\"number\">0xD8</span>, <span class=\"number\">0x69</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x63</span>, <span class=\"number\">0x00</span>];\n<span class=\"macro\">assert!</span>(String::from_utf16le(v).is_err());</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_utf16le_lossy\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#791\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.from_utf16le_lossy\" class=\"fn\">from_utf16le_lossy</a>(v: &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>str_from_utf16_endian</code>)</span></div></span></summary><div class=\"docblock\"><p>Decode a UTF-16LE–encoded slice <code>v</code> into a <code>String</code>, replacing\ninvalid data with <a href=\"https://doc.rust-lang.org/nightly/core/char/constant.REPLACEMENT_CHARACTER.html\" title=\"constant core::char::REPLACEMENT_CHARACTER\">the replacement character (<code>U+FFFD</code>)</a>.</p>\n<p>Unlike <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.from_utf8_lossy\" title=\"associated function alloc::string::String::from_utf8_lossy\"><code>from_utf8_lossy</code></a> which returns a <a href=\"https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html\" title=\"borrow::Cow\"><code>Cow&lt;'a, str&gt;</code></a>,\n<code>from_utf16le_lossy</code> returns a <code>String</code> since the UTF-16 to UTF-8\nconversion requires a memory allocation.</p>\n<h5 id=\"examples-7\"><a class=\"doc-anchor\" href=\"#examples-7\">§</a>Examples</h5>\n<p>Basic usage:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(str_from_utf16_endian)]\n</span><span class=\"comment\">// 𝄞mus&lt;invalid&gt;ic&lt;invalid&gt;\n</span><span class=\"kw\">let </span>v = <span class=\"kw-2\">&amp;</span>[<span class=\"number\">0x34</span>, <span class=\"number\">0xD8</span>, <span class=\"number\">0x1E</span>, <span class=\"number\">0xDD</span>, <span class=\"number\">0x6d</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x75</span>, <span class=\"number\">0x00</span>,\n          <span class=\"number\">0x73</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x1E</span>, <span class=\"number\">0xDD</span>, <span class=\"number\">0x69</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x63</span>, <span class=\"number\">0x00</span>,\n          <span class=\"number\">0x34</span>, <span class=\"number\">0xD8</span>];\n\n<span class=\"macro\">assert_eq!</span>(String::from(<span class=\"string\">\"𝄞mus\\u{FFFD}ic\\u{FFFD}\"</span>),\n           String::from_utf16le_lossy(v));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_utf16be\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#827\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.from_utf16be\" class=\"fn\">from_utf16be</a>(v: &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.FromUtf16Error.html\" title=\"struct alloc::string::FromUtf16Error\">FromUtf16Error</a>&gt;</h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>str_from_utf16_endian</code>)</span></div></span></summary><div class=\"docblock\"><p>Decode a UTF-16BE–encoded vector <code>v</code> into a <code>String</code>, returning <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>\nif <code>v</code> contains any invalid data.</p>\n<h5 id=\"examples-8\"><a class=\"doc-anchor\" href=\"#examples-8\">§</a>Examples</h5>\n<p>Basic usage:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(str_from_utf16_endian)]\n</span><span class=\"comment\">// 𝄞music\n</span><span class=\"kw\">let </span>v = <span class=\"kw-2\">&amp;</span>[<span class=\"number\">0xD8</span>, <span class=\"number\">0x34</span>, <span class=\"number\">0xDD</span>, <span class=\"number\">0x1E</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x6d</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x75</span>,\n          <span class=\"number\">0x00</span>, <span class=\"number\">0x73</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x69</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x63</span>];\n<span class=\"macro\">assert_eq!</span>(String::from(<span class=\"string\">\"𝄞music\"</span>),\n           String::from_utf16be(v).unwrap());\n\n<span class=\"comment\">// 𝄞mu&lt;invalid&gt;ic\n</span><span class=\"kw\">let </span>v = <span class=\"kw-2\">&amp;</span>[<span class=\"number\">0xD8</span>, <span class=\"number\">0x34</span>, <span class=\"number\">0xDD</span>, <span class=\"number\">0x1E</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x6d</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x75</span>,\n          <span class=\"number\">0xD8</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x69</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x63</span>];\n<span class=\"macro\">assert!</span>(String::from_utf16be(v).is_err());</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_utf16be_lossy\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#866\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.from_utf16be_lossy\" class=\"fn\">from_utf16be_lossy</a>(v: &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>str_from_utf16_endian</code>)</span></div></span></summary><div class=\"docblock\"><p>Decode a UTF-16BE–encoded slice <code>v</code> into a <code>String</code>, replacing\ninvalid data with <a href=\"https://doc.rust-lang.org/nightly/core/char/constant.REPLACEMENT_CHARACTER.html\" title=\"constant core::char::REPLACEMENT_CHARACTER\">the replacement character (<code>U+FFFD</code>)</a>.</p>\n<p>Unlike <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.from_utf8_lossy\" title=\"associated function alloc::string::String::from_utf8_lossy\"><code>from_utf8_lossy</code></a> which returns a <a href=\"https://doc.rust-lang.org/nightly/alloc/borrow/enum.Cow.html\" title=\"borrow::Cow\"><code>Cow&lt;'a, str&gt;</code></a>,\n<code>from_utf16le_lossy</code> returns a <code>String</code> since the UTF-16 to UTF-8\nconversion requires a memory allocation.</p>\n<h5 id=\"examples-9\"><a class=\"doc-anchor\" href=\"#examples-9\">§</a>Examples</h5>\n<p>Basic usage:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(str_from_utf16_endian)]\n</span><span class=\"comment\">// 𝄞mus&lt;invalid&gt;ic&lt;invalid&gt;\n</span><span class=\"kw\">let </span>v = <span class=\"kw-2\">&amp;</span>[<span class=\"number\">0xD8</span>, <span class=\"number\">0x34</span>, <span class=\"number\">0xDD</span>, <span class=\"number\">0x1E</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x6d</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x75</span>,\n          <span class=\"number\">0x00</span>, <span class=\"number\">0x73</span>, <span class=\"number\">0xDD</span>, <span class=\"number\">0x1E</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x69</span>, <span class=\"number\">0x00</span>, <span class=\"number\">0x63</span>,\n          <span class=\"number\">0xD8</span>, <span class=\"number\">0x34</span>];\n\n<span class=\"macro\">assert_eq!</span>(String::from(<span class=\"string\">\"𝄞mus\\u{FFFD}ic\\u{FFFD}\"</span>),\n           String::from_utf16be_lossy(v));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_raw_parts\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#908\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.into_raw_parts\" class=\"fn\">into_raw_parts</a>(self) -&gt; (<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.pointer.html\">*mut </a><a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>)</h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>vec_into_raw_parts</code>)</span></div></span></summary><div class=\"docblock\"><p>Decomposes a <code>String</code> into its raw components: <code>(pointer, length, capacity)</code>.</p>\n<p>Returns the raw pointer to the underlying data, the length of\nthe string (in bytes), and the allocated capacity of the data\n(in bytes). These are the same arguments in the same order as\nthe arguments to <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.from_raw_parts\" title=\"associated function alloc::string::String::from_raw_parts\"><code>from_raw_parts</code></a>.</p>\n<p>After calling this function, the caller is responsible for the\nmemory previously managed by the <code>String</code>. The only way to do\nthis is to convert the raw pointer, length, and capacity back\ninto a <code>String</code> with the <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.from_raw_parts\" title=\"associated function alloc::string::String::from_raw_parts\"><code>from_raw_parts</code></a> function, allowing\nthe destructor to perform the cleanup.</p>\n<h5 id=\"examples-10\"><a class=\"doc-anchor\" href=\"#examples-10\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(vec_into_raw_parts)]\n</span><span class=\"kw\">let </span>s = String::from(<span class=\"string\">\"hello\"</span>);\n\n<span class=\"kw\">let </span>(ptr, len, cap) = s.into_raw_parts();\n\n<span class=\"kw\">let </span>rebuilt = <span class=\"kw\">unsafe </span>{ String::from_raw_parts(ptr, len, cap) };\n<span class=\"macro\">assert_eq!</span>(rebuilt, <span class=\"string\">\"hello\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_raw_parts\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#960\">source</a></span><h4 class=\"code-header\">pub unsafe fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.from_raw_parts\" class=\"fn\">from_raw_parts</a>(\n    buf: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.pointer.html\">*mut </a><a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>,\n    length: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>,\n    capacity: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>\n) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h4></section></summary><div class=\"docblock\"><p>Creates a new <code>String</code> from a pointer, a length and a capacity.</p>\n<h5 id=\"safety\"><a class=\"doc-anchor\" href=\"#safety\">§</a>Safety</h5>\n<p>This is highly unsafe, due to the number of invariants that aren’t\nchecked:</p>\n<ul>\n<li>The memory at <code>buf</code> needs to have been previously allocated by the\nsame allocator the standard library uses, with a required alignment of exactly 1.</li>\n<li><code>length</code> needs to be less than or equal to <code>capacity</code>.</li>\n<li><code>capacity</code> needs to be the correct value.</li>\n<li>The first <code>length</code> bytes at <code>buf</code> need to be valid UTF-8.</li>\n</ul>\n<p>Violating these may cause problems like corrupting the allocator’s\ninternal data structures. For example, it is normally <strong>not</strong> safe to\nbuild a <code>String</code> from a pointer to a C <code>char</code> array containing UTF-8\n<em>unless</em> you are certain that array was originally allocated by the\nRust standard library’s allocator.</p>\n<p>The ownership of <code>buf</code> is effectively transferred to the\n<code>String</code> which may then deallocate, reallocate or change the\ncontents of memory pointed to by the pointer at will. Ensure\nthat nothing else uses the pointer after calling this\nfunction.</p>\n<h5 id=\"examples-11\"><a class=\"doc-anchor\" href=\"#examples-11\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::mem;\n\n<span class=\"kw\">unsafe </span>{\n    <span class=\"kw\">let </span>s = String::from(<span class=\"string\">\"hello\"</span>);\n\n    <span class=\"comment\">// Prevent automatically dropping the String's data\n    </span><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = mem::ManuallyDrop::new(s);\n\n    <span class=\"kw\">let </span>ptr = s.as_mut_ptr();\n    <span class=\"kw\">let </span>len = s.len();\n    <span class=\"kw\">let </span>capacity = s.capacity();\n\n    <span class=\"kw\">let </span>s = String::from_raw_parts(ptr, len, capacity);\n\n    <span class=\"macro\">assert_eq!</span>(String::from(<span class=\"string\">\"hello\"</span>), s);\n}</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_utf8_unchecked\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#993\">source</a></span><h4 class=\"code-header\">pub unsafe fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.from_utf8_unchecked\" class=\"fn\">from_utf8_unchecked</a>(bytes: <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"struct alloc::vec::Vec\">Vec</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>&gt;) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h4></section></summary><div class=\"docblock\"><p>Converts a vector of bytes to a <code>String</code> without checking that the\nstring contains valid UTF-8.</p>\n<p>See the safe version, <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.from_utf8\" title=\"associated function alloc::string::String::from_utf8\"><code>from_utf8</code></a>, for more details.</p>\n<h5 id=\"safety-1\"><a class=\"doc-anchor\" href=\"#safety-1\">§</a>Safety</h5>\n<p>This function is unsafe because it does not check that the bytes passed\nto it are valid UTF-8. If this constraint is violated, it may cause\nmemory unsafety issues with future users of the <code>String</code>, as the rest of\nthe standard library assumes that <code>String</code>s are valid UTF-8.</p>\n<h5 id=\"examples-12\"><a class=\"doc-anchor\" href=\"#examples-12\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"comment\">// some bytes, in a vector\n</span><span class=\"kw\">let </span>sparkle_heart = <span class=\"macro\">vec!</span>[<span class=\"number\">240</span>, <span class=\"number\">159</span>, <span class=\"number\">146</span>, <span class=\"number\">150</span>];\n\n<span class=\"kw\">let </span>sparkle_heart = <span class=\"kw\">unsafe </span>{\n    String::from_utf8_unchecked(sparkle_heart)\n};\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"string\">\"💖\"</span>, sparkle_heart);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_bytes\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1012\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.into_bytes\" class=\"fn\">into_bytes</a>(self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"struct alloc::vec::Vec\">Vec</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>&gt;</h4></section></summary><div class=\"docblock\"><p>Converts a <code>String</code> into a byte vector.</p>\n<p>This consumes the <code>String</code>, so we do not need to copy its contents.</p>\n<h5 id=\"examples-13\"><a class=\"doc-anchor\" href=\"#examples-13\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>s = String::from(<span class=\"string\">\"hello\"</span>);\n<span class=\"kw\">let </span>bytes = s.into_bytes();\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"kw-2\">&amp;</span>[<span class=\"number\">104</span>, <span class=\"number\">101</span>, <span class=\"number\">108</span>, <span class=\"number\">108</span>, <span class=\"number\">111</span>][..], <span class=\"kw-2\">&amp;</span>bytes[..]);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_str\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.7.0\">1.7.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1028\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.as_str\" class=\"fn\">as_str</a>(&amp;self) -&gt; &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a></h4></section></summary><div class=\"docblock\"><p>Extracts a string slice containing the entire <code>String</code>.</p>\n<h5 id=\"examples-14\"><a class=\"doc-anchor\" href=\"#examples-14\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>s = String::from(<span class=\"string\">\"foo\"</span>);\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"string\">\"foo\"</span>, s.as_str());</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_mut_str\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.7.0\">1.7.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1047\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.as_mut_str\" class=\"fn\">as_mut_str</a>(&amp;mut self) -&gt; &amp;mut <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a></h4></section></summary><div class=\"docblock\"><p>Converts a <code>String</code> into a mutable string slice.</p>\n<h5 id=\"examples-15\"><a class=\"doc-anchor\" href=\"#examples-15\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::from(<span class=\"string\">\"foobar\"</span>);\n<span class=\"kw\">let </span>s_mut_str = s.as_mut_str();\n\ns_mut_str.make_ascii_uppercase();\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"string\">\"FOOBAR\"</span>, s_mut_str);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.push_str\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1066\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.push_str\" class=\"fn\">push_str</a>(&amp;mut self, string: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>)</h4></section></summary><div class=\"docblock\"><p>Appends a given string slice onto the end of this <code>String</code>.</p>\n<h5 id=\"examples-16\"><a class=\"doc-anchor\" href=\"#examples-16\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::from(<span class=\"string\">\"foo\"</span>);\n\ns.push_str(<span class=\"string\">\"bar\"</span>);\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"string\">\"foobar\"</span>, s);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_from_within\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1094-1096\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.extend_from_within\" class=\"fn\">extend_from_within</a>&lt;R&gt;(&amp;mut self, src: R)<div class=\"where\">where\n    R: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/range/trait.RangeBounds.html\" title=\"trait core::ops::range::RangeBounds\">RangeBounds</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>&gt;,</div></h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>string_extend_from_within</code>)</span></div></span></summary><div class=\"docblock\"><p>Copies elements from <code>src</code> range to the end of the string.</p>\n<h5 id=\"panics\"><a class=\"doc-anchor\" href=\"#panics\">§</a>Panics</h5>\n<p>Panics if the starting point or end point do not lie on a <a href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\" title=\"primitive char\"><code>char</code></a>\nboundary, or if they’re out of bounds.</p>\n<h5 id=\"examples-17\"><a class=\"doc-anchor\" href=\"#examples-17\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(string_extend_from_within)]\n</span><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>string = String::from(<span class=\"string\">\"abcde\"</span>);\n\nstring.extend_from_within(<span class=\"number\">2</span>..);\n<span class=\"macro\">assert_eq!</span>(string, <span class=\"string\">\"abcdecde\"</span>);\n\nstring.extend_from_within(..<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(string, <span class=\"string\">\"abcdecdeab\"</span>);\n\nstring.extend_from_within(<span class=\"number\">4</span>..<span class=\"number\">8</span>);\n<span class=\"macro\">assert_eq!</span>(string, <span class=\"string\">\"abcdecdeabecde\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.capacity\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1118\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.capacity\" class=\"fn\">capacity</a>(&amp;self) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a></h4></section></summary><div class=\"docblock\"><p>Returns this <code>String</code>’s capacity, in bytes.</p>\n<h5 id=\"examples-18\"><a class=\"doc-anchor\" href=\"#examples-18\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>s = String::with_capacity(<span class=\"number\">10</span>);\n\n<span class=\"macro\">assert!</span>(s.capacity() &gt;= <span class=\"number\">10</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.reserve\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1165\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.reserve\" class=\"fn\">reserve</a>(&amp;mut self, additional: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>)</h4></section></summary><div class=\"docblock\"><p>Reserves capacity for at least <code>additional</code> bytes more than the\ncurrent length. The allocator may reserve more space to speculatively\navoid frequent allocations. After calling <code>reserve</code>,\ncapacity will be greater than or equal to <code>self.len() + additional</code>.\nDoes nothing if capacity is already sufficient.</p>\n<h5 id=\"panics-1\"><a class=\"doc-anchor\" href=\"#panics-1\">§</a>Panics</h5>\n<p>Panics if the new capacity overflows <a href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\" title=\"primitive usize\"><code>usize</code></a>.</p>\n<h5 id=\"examples-19\"><a class=\"doc-anchor\" href=\"#examples-19\">§</a>Examples</h5>\n<p>Basic usage:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::new();\n\ns.reserve(<span class=\"number\">10</span>);\n\n<span class=\"macro\">assert!</span>(s.capacity() &gt;= <span class=\"number\">10</span>);</code></pre></div>\n<p>This might not actually increase the capacity:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::with_capacity(<span class=\"number\">10</span>);\ns.push(<span class=\"string\">'a'</span>);\ns.push(<span class=\"string\">'b'</span>);\n\n<span class=\"comment\">// s now has a length of 2 and a capacity of at least 10\n</span><span class=\"kw\">let </span>capacity = s.capacity();\n<span class=\"macro\">assert_eq!</span>(<span class=\"number\">2</span>, s.len());\n<span class=\"macro\">assert!</span>(capacity &gt;= <span class=\"number\">10</span>);\n\n<span class=\"comment\">// Since we already have at least an extra 8 capacity, calling this...\n</span>s.reserve(<span class=\"number\">8</span>);\n\n<span class=\"comment\">// ... doesn't actually increase.\n</span><span class=\"macro\">assert_eq!</span>(capacity, s.capacity());</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.reserve_exact\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1215\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.reserve_exact\" class=\"fn\">reserve_exact</a>(&amp;mut self, additional: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>)</h4></section></summary><div class=\"docblock\"><p>Reserves the minimum capacity for at least <code>additional</code> bytes more than\nthe current length. Unlike <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.reserve\" title=\"method alloc::string::String::reserve\"><code>reserve</code></a>, this will not\ndeliberately over-allocate to speculatively avoid frequent allocations.\nAfter calling <code>reserve_exact</code>, capacity will be greater than or equal to\n<code>self.len() + additional</code>. Does nothing if the capacity is already\nsufficient.</p>\n<h5 id=\"panics-2\"><a class=\"doc-anchor\" href=\"#panics-2\">§</a>Panics</h5>\n<p>Panics if the new capacity overflows <a href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\" title=\"primitive usize\"><code>usize</code></a>.</p>\n<h5 id=\"examples-20\"><a class=\"doc-anchor\" href=\"#examples-20\">§</a>Examples</h5>\n<p>Basic usage:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::new();\n\ns.reserve_exact(<span class=\"number\">10</span>);\n\n<span class=\"macro\">assert!</span>(s.capacity() &gt;= <span class=\"number\">10</span>);</code></pre></div>\n<p>This might not actually increase the capacity:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::with_capacity(<span class=\"number\">10</span>);\ns.push(<span class=\"string\">'a'</span>);\ns.push(<span class=\"string\">'b'</span>);\n\n<span class=\"comment\">// s now has a length of 2 and a capacity of at least 10\n</span><span class=\"kw\">let </span>capacity = s.capacity();\n<span class=\"macro\">assert_eq!</span>(<span class=\"number\">2</span>, s.len());\n<span class=\"macro\">assert!</span>(capacity &gt;= <span class=\"number\">10</span>);\n\n<span class=\"comment\">// Since we already have at least an extra 8 capacity, calling this...\n</span>s.reserve_exact(<span class=\"number\">8</span>);\n\n<span class=\"comment\">// ... doesn't actually increase.\n</span><span class=\"macro\">assert_eq!</span>(capacity, s.capacity());</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.try_reserve\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.57.0\">1.57.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1250\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.try_reserve\" class=\"fn\">try_reserve</a>(&amp;mut self, additional: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.unit.html\">()</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/struct.TryReserveError.html\" title=\"struct alloc::collections::TryReserveError\">TryReserveError</a>&gt;</h4></section></summary><div class=\"docblock\"><p>Tries to reserve capacity for at least <code>additional</code> bytes more than the\ncurrent length. The allocator may reserve more space to speculatively\navoid frequent allocations. After calling <code>try_reserve</code>, capacity will be\ngreater than or equal to <code>self.len() + additional</code> if it returns\n<code>Ok(())</code>. Does nothing if capacity is already sufficient. This method\npreserves the contents even if an error occurs.</p>\n<h5 id=\"errors-2\"><a class=\"doc-anchor\" href=\"#errors-2\">§</a>Errors</h5>\n<p>If the capacity overflows, or the allocator reports a failure, then an error\nis returned.</p>\n<h5 id=\"examples-21\"><a class=\"doc-anchor\" href=\"#examples-21\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::TryReserveError;\n\n<span class=\"kw\">fn </span>process_data(data: <span class=\"kw-2\">&amp;</span>str) -&gt; <span class=\"prelude-ty\">Result</span>&lt;String, TryReserveError&gt; {\n    <span class=\"kw\">let </span><span class=\"kw-2\">mut </span>output = String::new();\n\n    <span class=\"comment\">// Pre-reserve the memory, exiting if we can't\n    </span>output.try_reserve(data.len())<span class=\"question-mark\">?</span>;\n\n    <span class=\"comment\">// Now we know this can't OOM in the middle of our complex work\n    </span>output.push_str(data);\n\n    <span class=\"prelude-val\">Ok</span>(output)\n}</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.try_reserve_exact\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.57.0\">1.57.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1291\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.try_reserve_exact\" class=\"fn\">try_reserve_exact</a>(\n    &amp;mut self,\n    additional: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.unit.html\">()</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/struct.TryReserveError.html\" title=\"struct alloc::collections::TryReserveError\">TryReserveError</a>&gt;</h4></section></summary><div class=\"docblock\"><p>Tries to reserve the minimum capacity for at least <code>additional</code> bytes\nmore than the current length. Unlike <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.try_reserve\" title=\"method alloc::string::String::try_reserve\"><code>try_reserve</code></a>, this will not\ndeliberately over-allocate to speculatively avoid frequent allocations.\nAfter calling <code>try_reserve_exact</code>, capacity will be greater than or\nequal to <code>self.len() + additional</code> if it returns <code>Ok(())</code>.\nDoes nothing if the capacity is already sufficient.</p>\n<p>Note that the allocator may give the collection more space than it\nrequests. Therefore, capacity can not be relied upon to be precisely\nminimal. Prefer <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.try_reserve\" title=\"method alloc::string::String::try_reserve\"><code>try_reserve</code></a> if future insertions are expected.</p>\n<h5 id=\"errors-3\"><a class=\"doc-anchor\" href=\"#errors-3\">§</a>Errors</h5>\n<p>If the capacity overflows, or the allocator reports a failure, then an error\nis returned.</p>\n<h5 id=\"examples-22\"><a class=\"doc-anchor\" href=\"#examples-22\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::TryReserveError;\n\n<span class=\"kw\">fn </span>process_data(data: <span class=\"kw-2\">&amp;</span>str) -&gt; <span class=\"prelude-ty\">Result</span>&lt;String, TryReserveError&gt; {\n    <span class=\"kw\">let </span><span class=\"kw-2\">mut </span>output = String::new();\n\n    <span class=\"comment\">// Pre-reserve the memory, exiting if we can't\n    </span>output.try_reserve_exact(data.len())<span class=\"question-mark\">?</span>;\n\n    <span class=\"comment\">// Now we know this can't OOM in the middle of our complex work\n    </span>output.push_str(data);\n\n    <span class=\"prelude-val\">Ok</span>(output)\n}</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.shrink_to_fit\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1311\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.shrink_to_fit\" class=\"fn\">shrink_to_fit</a>(&amp;mut self)</h4></section></summary><div class=\"docblock\"><p>Shrinks the capacity of this <code>String</code> to match its length.</p>\n<h5 id=\"examples-23\"><a class=\"doc-anchor\" href=\"#examples-23\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::from(<span class=\"string\">\"foo\"</span>);\n\ns.reserve(<span class=\"number\">100</span>);\n<span class=\"macro\">assert!</span>(s.capacity() &gt;= <span class=\"number\">100</span>);\n\ns.shrink_to_fit();\n<span class=\"macro\">assert_eq!</span>(<span class=\"number\">3</span>, s.capacity());</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.shrink_to\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.56.0\">1.56.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1338\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.shrink_to\" class=\"fn\">shrink_to</a>(&amp;mut self, min_capacity: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>)</h4></section></summary><div class=\"docblock\"><p>Shrinks the capacity of this <code>String</code> with a lower bound.</p>\n<p>The capacity will remain at least as large as both the length\nand the supplied value.</p>\n<p>If the current capacity is less than the lower limit, this is a no-op.</p>\n<h5 id=\"examples-24\"><a class=\"doc-anchor\" href=\"#examples-24\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::from(<span class=\"string\">\"foo\"</span>);\n\ns.reserve(<span class=\"number\">100</span>);\n<span class=\"macro\">assert!</span>(s.capacity() &gt;= <span class=\"number\">100</span>);\n\ns.shrink_to(<span class=\"number\">10</span>);\n<span class=\"macro\">assert!</span>(s.capacity() &gt;= <span class=\"number\">10</span>);\ns.shrink_to(<span class=\"number\">0</span>);\n<span class=\"macro\">assert!</span>(s.capacity() &gt;= <span class=\"number\">3</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.push\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1358\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.push\" class=\"fn\">push</a>(&amp;mut self, ch: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\">char</a>)</h4></section></summary><div class=\"docblock\"><p>Appends the given <a href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\" title=\"primitive char\"><code>char</code></a> to the end of this <code>String</code>.</p>\n<h5 id=\"examples-25\"><a class=\"doc-anchor\" href=\"#examples-25\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::from(<span class=\"string\">\"abc\"</span>);\n\ns.push(<span class=\"string\">'1'</span>);\ns.push(<span class=\"string\">'2'</span>);\ns.push(<span class=\"string\">'3'</span>);\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"string\">\"abc123\"</span>, s);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_bytes\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1381\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.as_bytes\" class=\"fn\">as_bytes</a>(&amp;self) -&gt; &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>] <a href=\"#\" class=\"tooltip\" data-notable-ty=\"&amp;[u8]\">ⓘ</a></h4></section></summary><div class=\"docblock\"><p>Returns a byte slice of this <code>String</code>’s contents.</p>\n<p>The inverse of this method is <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.from_utf8\" title=\"associated function alloc::string::String::from_utf8\"><code>from_utf8</code></a>.</p>\n<h5 id=\"examples-26\"><a class=\"doc-anchor\" href=\"#examples-26\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>s = String::from(<span class=\"string\">\"hello\"</span>);\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"kw-2\">&amp;</span>[<span class=\"number\">104</span>, <span class=\"number\">101</span>, <span class=\"number\">108</span>, <span class=\"number\">108</span>, <span class=\"number\">111</span>], s.as_bytes());</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.truncate\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1408\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.truncate\" class=\"fn\">truncate</a>(&amp;mut self, new_len: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>)</h4></section></summary><div class=\"docblock\"><p>Shortens this <code>String</code> to the specified length.</p>\n<p>If <code>new_len</code> is greater than the string’s current length, this has no\neffect.</p>\n<p>Note that this method has no effect on the allocated capacity\nof the string</p>\n<h5 id=\"panics-3\"><a class=\"doc-anchor\" href=\"#panics-3\">§</a>Panics</h5>\n<p>Panics if <code>new_len</code> does not lie on a <a href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\" title=\"primitive char\"><code>char</code></a> boundary.</p>\n<h5 id=\"examples-27\"><a class=\"doc-anchor\" href=\"#examples-27\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::from(<span class=\"string\">\"hello\"</span>);\n\ns.truncate(<span class=\"number\">2</span>);\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"string\">\"he\"</span>, s);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.pop\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1432\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.pop\" class=\"fn\">pop</a>(&amp;mut self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\">char</a>&gt;</h4></section></summary><div class=\"docblock\"><p>Removes the last character from the string buffer and returns it.</p>\n<p>Returns <a href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html#variant.None\" title=\"variant core::option::Option::None\"><code>None</code></a> if this <code>String</code> is empty.</p>\n<h5 id=\"examples-28\"><a class=\"doc-anchor\" href=\"#examples-28\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::from(<span class=\"string\">\"abč\"</span>);\n\n<span class=\"macro\">assert_eq!</span>(s.pop(), <span class=\"prelude-val\">Some</span>(<span class=\"string\">'č'</span>));\n<span class=\"macro\">assert_eq!</span>(s.pop(), <span class=\"prelude-val\">Some</span>(<span class=\"string\">'b'</span>));\n<span class=\"macro\">assert_eq!</span>(s.pop(), <span class=\"prelude-val\">Some</span>(<span class=\"string\">'a'</span>));\n\n<span class=\"macro\">assert_eq!</span>(s.pop(), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.remove\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1463\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.remove\" class=\"fn\">remove</a>(&amp;mut self, idx: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\">char</a></h4></section></summary><div class=\"docblock\"><p>Removes a <a href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\" title=\"primitive char\"><code>char</code></a> from this <code>String</code> at a byte position and returns it.</p>\n<p>This is an <em>O</em>(<em>n</em>) operation, as it requires copying every element in the\nbuffer.</p>\n<h5 id=\"panics-4\"><a class=\"doc-anchor\" href=\"#panics-4\">§</a>Panics</h5>\n<p>Panics if <code>idx</code> is larger than or equal to the <code>String</code>’s length,\nor if it does not lie on a <a href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\" title=\"primitive char\"><code>char</code></a> boundary.</p>\n<h5 id=\"examples-29\"><a class=\"doc-anchor\" href=\"#examples-29\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::from(<span class=\"string\">\"abç\"</span>);\n\n<span class=\"macro\">assert_eq!</span>(s.remove(<span class=\"number\">0</span>), <span class=\"string\">'a'</span>);\n<span class=\"macro\">assert_eq!</span>(s.remove(<span class=\"number\">1</span>), <span class=\"string\">'ç'</span>);\n<span class=\"macro\">assert_eq!</span>(s.remove(<span class=\"number\">0</span>), <span class=\"string\">'b'</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.remove_matches\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1500-1502\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.remove_matches\" class=\"fn\">remove_matches</a>&lt;'a, P&gt;(&amp;'a mut self, pat: P)<div class=\"where\">where\n    P: for&lt;'x&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/str/pattern/trait.Pattern.html\" title=\"trait core::str::pattern::Pattern\">Pattern</a>&lt;'x&gt;,</div></h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>string_remove_matches</code>)</span></div></span></summary><div class=\"docblock\"><p>Remove all matches of pattern <code>pat</code> in the <code>String</code>.</p>\n<h5 id=\"examples-30\"><a class=\"doc-anchor\" href=\"#examples-30\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(string_remove_matches)]\n</span><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::from(<span class=\"string\">\"Trees are not green, the sky is not blue.\"</span>);\ns.remove_matches(<span class=\"string\">\"not \"</span>);\n<span class=\"macro\">assert_eq!</span>(<span class=\"string\">\"Trees are green, the sky is blue.\"</span>, s);</code></pre></div>\n<p>Matches will be detected and removed iteratively, so in cases where\npatterns overlap, only the first pattern will be removed:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(string_remove_matches)]\n</span><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::from(<span class=\"string\">\"banana\"</span>);\ns.remove_matches(<span class=\"string\">\"ana\"</span>);\n<span class=\"macro\">assert_eq!</span>(<span class=\"string\">\"bna\"</span>, s);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.retain\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.26.0\">1.26.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1580-1582\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.retain\" class=\"fn\">retain</a>&lt;F&gt;(&amp;mut self, f: F)<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html\" title=\"trait core::ops::function::FnMut\">FnMut</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\">char</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>,</div></h4></section></summary><div class=\"docblock\"><p>Retains only the characters specified by the predicate.</p>\n<p>In other words, remove all characters <code>c</code> such that <code>f(c)</code> returns <code>false</code>.\nThis method operates in place, visiting each character exactly once in the\noriginal order, and preserves the order of the retained characters.</p>\n<h5 id=\"examples-31\"><a class=\"doc-anchor\" href=\"#examples-31\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::from(<span class=\"string\">\"f_o_ob_ar\"</span>);\n\ns.retain(|c| c != <span class=\"string\">'_'</span>);\n\n<span class=\"macro\">assert_eq!</span>(s, <span class=\"string\">\"foobar\"</span>);</code></pre></div>\n<p>Because the elements are visited exactly once in the original order,\nexternal state may be used to decide which elements to keep.</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::from(<span class=\"string\">\"abcde\"</span>);\n<span class=\"kw\">let </span>keep = [<span class=\"bool-val\">false</span>, <span class=\"bool-val\">true</span>, <span class=\"bool-val\">true</span>, <span class=\"bool-val\">false</span>, <span class=\"bool-val\">true</span>];\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>iter = keep.iter();\ns.retain(|<span class=\"kw\">_</span>| <span class=\"kw-2\">*</span>iter.next().unwrap());\n<span class=\"macro\">assert_eq!</span>(s, <span class=\"string\">\"bce\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.insert\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1658\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.insert\" class=\"fn\">insert</a>(&amp;mut self, idx: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>, ch: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\">char</a>)</h4></section></summary><div class=\"docblock\"><p>Inserts a character into this <code>String</code> at a byte position.</p>\n<p>This is an <em>O</em>(<em>n</em>) operation as it requires copying every element in the\nbuffer.</p>\n<h5 id=\"panics-5\"><a class=\"doc-anchor\" href=\"#panics-5\">§</a>Panics</h5>\n<p>Panics if <code>idx</code> is larger than the <code>String</code>’s length, or if it does not\nlie on a <a href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\" title=\"primitive char\"><code>char</code></a> boundary.</p>\n<h5 id=\"examples-32\"><a class=\"doc-anchor\" href=\"#examples-32\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::with_capacity(<span class=\"number\">3</span>);\n\ns.insert(<span class=\"number\">0</span>, <span class=\"string\">'f'</span>);\ns.insert(<span class=\"number\">1</span>, <span class=\"string\">'o'</span>);\ns.insert(<span class=\"number\">2</span>, <span class=\"string\">'o'</span>);\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"string\">\"foo\"</span>, s);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.insert_str\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.16.0\">1.16.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1703\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.insert_str\" class=\"fn\">insert_str</a>(&amp;mut self, idx: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>, string: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>)</h4></section></summary><div class=\"docblock\"><p>Inserts a string slice into this <code>String</code> at a byte position.</p>\n<p>This is an <em>O</em>(<em>n</em>) operation as it requires copying every element in the\nbuffer.</p>\n<h5 id=\"panics-6\"><a class=\"doc-anchor\" href=\"#panics-6\">§</a>Panics</h5>\n<p>Panics if <code>idx</code> is larger than the <code>String</code>’s length, or if it does not\nlie on a <a href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\" title=\"primitive char\"><code>char</code></a> boundary.</p>\n<h5 id=\"examples-33\"><a class=\"doc-anchor\" href=\"#examples-33\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::from(<span class=\"string\">\"bar\"</span>);\n\ns.insert_str(<span class=\"number\">0</span>, <span class=\"string\">\"foo\"</span>);\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"string\">\"foobar\"</span>, s);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_mut_vec\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1736\">source</a></span><h4 class=\"code-header\">pub unsafe fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.as_mut_vec\" class=\"fn\">as_mut_vec</a>(&amp;mut self) -&gt; &amp;mut <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"struct alloc::vec::Vec\">Vec</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>&gt;</h4></section></summary><div class=\"docblock\"><p>Returns a mutable reference to the contents of this <code>String</code>.</p>\n<h5 id=\"safety-2\"><a class=\"doc-anchor\" href=\"#safety-2\">§</a>Safety</h5>\n<p>This function is unsafe because the returned <code>&amp;mut Vec</code> allows writing\nbytes which are not valid UTF-8. If this constraint is violated, using\nthe original <code>String</code> after dropping the <code>&amp;mut Vec</code> may violate memory\nsafety, as the rest of the standard library assumes that <code>String</code>s are\nvalid UTF-8.</p>\n<h5 id=\"examples-34\"><a class=\"doc-anchor\" href=\"#examples-34\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::from(<span class=\"string\">\"hello\"</span>);\n\n<span class=\"kw\">unsafe </span>{\n    <span class=\"kw\">let </span>vec = s.as_mut_vec();\n    <span class=\"macro\">assert_eq!</span>(<span class=\"kw-2\">&amp;</span>[<span class=\"number\">104</span>, <span class=\"number\">101</span>, <span class=\"number\">108</span>, <span class=\"number\">108</span>, <span class=\"number\">111</span>][..], <span class=\"kw-2\">&amp;</span>vec[..]);\n\n    vec.reverse();\n}\n<span class=\"macro\">assert_eq!</span>(s, <span class=\"string\">\"olleh\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.len\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1758\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.len\" class=\"fn\">len</a>(&amp;self) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a></h4></section></summary><div class=\"docblock\"><p>Returns the length of this <code>String</code>, in bytes, not <a href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\" title=\"primitive char\"><code>char</code></a>s or\ngraphemes. In other words, it might not be what a human considers the\nlength of the string.</p>\n<h5 id=\"examples-35\"><a class=\"doc-anchor\" href=\"#examples-35\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>a = String::from(<span class=\"string\">\"foo\"</span>);\n<span class=\"macro\">assert_eq!</span>(a.len(), <span class=\"number\">3</span>);\n\n<span class=\"kw\">let </span>fancy_f = String::from(<span class=\"string\">\"ƒoo\"</span>);\n<span class=\"macro\">assert_eq!</span>(fancy_f.len(), <span class=\"number\">4</span>);\n<span class=\"macro\">assert_eq!</span>(fancy_f.chars().count(), <span class=\"number\">3</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.is_empty\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1776\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.is_empty\" class=\"fn\">is_empty</a>(&amp;self) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class=\"docblock\"><p>Returns <code>true</code> if this <code>String</code> has a length of zero, and <code>false</code> otherwise.</p>\n<h5 id=\"examples-36\"><a class=\"doc-anchor\" href=\"#examples-36\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>v = String::new();\n<span class=\"macro\">assert!</span>(v.is_empty());\n\nv.push(<span class=\"string\">'a'</span>);\n<span class=\"macro\">assert!</span>(!v.is_empty());</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.split_off\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.16.0\">1.16.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1807\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.split_off\" class=\"fn\">split_off</a>(&amp;mut self, at: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h4></section></summary><div class=\"docblock\"><p>Splits the string into two at the given byte index.</p>\n<p>Returns a newly allocated <code>String</code>. <code>self</code> contains bytes <code>[0, at)</code>, and\nthe returned <code>String</code> contains bytes <code>[at, len)</code>. <code>at</code> must be on the\nboundary of a UTF-8 code point.</p>\n<p>Note that the capacity of <code>self</code> does not change.</p>\n<h5 id=\"panics-7\"><a class=\"doc-anchor\" href=\"#panics-7\">§</a>Panics</h5>\n<p>Panics if <code>at</code> is not on a <code>UTF-8</code> code point boundary, or if it is beyond the last\ncode point of the string.</p>\n<h5 id=\"examples-37\"><a class=\"doc-anchor\" href=\"#examples-37\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>hello = String::from(<span class=\"string\">\"Hello, World!\"</span>);\n<span class=\"kw\">let </span>world = hello.split_off(<span class=\"number\">7</span>);\n<span class=\"macro\">assert_eq!</span>(hello, <span class=\"string\">\"Hello, \"</span>);\n<span class=\"macro\">assert_eq!</span>(world, <span class=\"string\">\"World!\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.clear\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1831\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.clear\" class=\"fn\">clear</a>(&amp;mut self)</h4></section></summary><div class=\"docblock\"><p>Truncates this <code>String</code>, removing all contents.</p>\n<p>While this means the <code>String</code> will have a length of zero, it does not\ntouch its capacity.</p>\n<h5 id=\"examples-38\"><a class=\"doc-anchor\" href=\"#examples-38\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::from(<span class=\"string\">\"foo\"</span>);\n\ns.clear();\n\n<span class=\"macro\">assert!</span>(s.is_empty());\n<span class=\"macro\">assert_eq!</span>(<span class=\"number\">0</span>, s.len());\n<span class=\"macro\">assert_eq!</span>(<span class=\"number\">3</span>, s.capacity());</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.drain\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.6.0\">1.6.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1869-1871\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.drain\" class=\"fn\">drain</a>&lt;R&gt;(&amp;mut self, range: R) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.Drain.html\" title=\"struct alloc::string::Drain\">Drain</a>&lt;'_&gt;<div class=\"where\">where\n    R: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/range/trait.RangeBounds.html\" title=\"trait core::ops::range::RangeBounds\">RangeBounds</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>&gt;,</div></h4></section></summary><div class=\"docblock\"><p>Removes the specified range from the string in bulk, returning all\nremoved characters as an iterator.</p>\n<p>The returned iterator keeps a mutable borrow on the string to optimize\nits implementation.</p>\n<h5 id=\"panics-8\"><a class=\"doc-anchor\" href=\"#panics-8\">§</a>Panics</h5>\n<p>Panics if the starting point or end point do not lie on a <a href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\" title=\"primitive char\"><code>char</code></a>\nboundary, or if they’re out of bounds.</p>\n<h5 id=\"leaking\"><a class=\"doc-anchor\" href=\"#leaking\">§</a>Leaking</h5>\n<p>If the returned iterator goes out of scope without being dropped (due to\n<a href=\"https://doc.rust-lang.org/nightly/core/mem/fn.forget.html\" title=\"fn core::mem::forget\"><code>core::mem::forget</code></a>, for example), the string may still contain a copy\nof any drained characters, or may have lost characters arbitrarily,\nincluding characters outside the range.</p>\n<h5 id=\"examples-39\"><a class=\"doc-anchor\" href=\"#examples-39\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::from(<span class=\"string\">\"α is alpha, β is beta\"</span>);\n<span class=\"kw\">let </span>beta_offset = s.find(<span class=\"string\">'β'</span>).unwrap_or(s.len());\n\n<span class=\"comment\">// Remove the range up until the β from the string\n</span><span class=\"kw\">let </span>t: String = s.drain(..beta_offset).collect();\n<span class=\"macro\">assert_eq!</span>(t, <span class=\"string\">\"α is alpha, \"</span>);\n<span class=\"macro\">assert_eq!</span>(s, <span class=\"string\">\"β is beta\"</span>);\n\n<span class=\"comment\">// A full range clears the string, like `clear()` does\n</span>s.drain(..);\n<span class=\"macro\">assert_eq!</span>(s, <span class=\"string\">\"\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.replace_range\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.27.0\">1.27.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1913-1915\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.replace_range\" class=\"fn\">replace_range</a>&lt;R&gt;(&amp;mut self, range: R, replace_with: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>)<div class=\"where\">where\n    R: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/range/trait.RangeBounds.html\" title=\"trait core::ops::range::RangeBounds\">RangeBounds</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>&gt;,</div></h4></section></summary><div class=\"docblock\"><p>Removes the specified range in the string,\nand replaces it with the given string.\nThe given string doesn’t need to be the same length as the range.</p>\n<h5 id=\"panics-9\"><a class=\"doc-anchor\" href=\"#panics-9\">§</a>Panics</h5>\n<p>Panics if the starting point or end point do not lie on a <a href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\" title=\"primitive char\"><code>char</code></a>\nboundary, or if they’re out of bounds.</p>\n<h5 id=\"examples-40\"><a class=\"doc-anchor\" href=\"#examples-40\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = String::from(<span class=\"string\">\"α is alpha, β is beta\"</span>);\n<span class=\"kw\">let </span>beta_offset = s.find(<span class=\"string\">'β'</span>).unwrap_or(s.len());\n\n<span class=\"comment\">// Replace the range up until the β from the string\n</span>s.replace_range(..beta_offset, <span class=\"string\">\"Α is capital alpha; \"</span>);\n<span class=\"macro\">assert_eq!</span>(s, <span class=\"string\">\"Α is capital alpha; β is beta\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_boxed_str\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.4.0\">1.4.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1960\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.into_boxed_str\" class=\"fn\">into_boxed_str</a>(self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html\" title=\"struct alloc::boxed::Box\">Box</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt;</h4></section></summary><div class=\"docblock\"><p>Converts this <code>String</code> into a <code><a href=\"https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html\" title=\"struct alloc::boxed::Box\">Box</a>&lt;<a href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\" title=\"str\">str</a>&gt;</code>.</p>\n<p>This will drop any excess capacity.</p>\n<h5 id=\"examples-41\"><a class=\"doc-anchor\" href=\"#examples-41\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>s = String::from(<span class=\"string\">\"hello\"</span>);\n\n<span class=\"kw\">let </span>b = s.into_boxed_str();</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.leak\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.72.0\">1.72.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#1988\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#tymethod.leak\" class=\"fn\">leak</a>&lt;'a&gt;(self) -&gt; &amp;'a mut <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a></h4></section></summary><div class=\"docblock\"><p>Consumes and leaks the <code>String</code>, returning a mutable reference to the contents,\n<code>&amp;'a mut str</code>.</p>\n<p>The caller has free choice over the returned lifetime, including <code>'static</code>. Indeed,\nthis function is ideally used for data that lives for the remainder of the program’s life,\nas dropping the returned reference will cause a memory leak.</p>\n<p>It does not reallocate or shrink the <code>String</code>,\nso the leaked allocation may include unused capacity that is not part\nof the returned slice. If you don’t want that, call <a href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.into_boxed_str\" title=\"method alloc::string::String::into_boxed_str\"><code>into_boxed_str</code></a>,\nand then <a href=\"https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html#method.leak\" title=\"associated function alloc::boxed::Box::leak\"><code>Box::leak</code></a>.</p>\n<h5 id=\"examples-42\"><a class=\"doc-anchor\" href=\"#examples-42\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x = String::from(<span class=\"string\">\"bucket\"</span>);\n<span class=\"kw\">let </span>static_ref: <span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span><span class=\"kw-2\">mut </span>str = x.leak();\n<span class=\"macro\">assert_eq!</span>(static_ref, <span class=\"string\">\"bucket\"</span>);</code></pre></div>\n</div></details></div></details>",0,"qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-ToSocketAddrs-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.16.0\">1.16.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/net/socket_addr.rs.html#310\">source</a></span><a href=\"#impl-ToSocketAddrs-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/net/socket_addr/trait.ToSocketAddrs.html\" title=\"trait std::net::socket_addr::ToSocketAddrs\">ToSocketAddrs</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle\" open><summary><section id=\"associatedtype.Iter\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Iter\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/std/net/socket_addr/trait.ToSocketAddrs.html#associatedtype.Iter\" class=\"associatedtype\">Iter</a> = <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/into_iter/struct.IntoIter.html\" title=\"struct alloc::vec::into_iter::IntoIter\">IntoIter</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html\" title=\"enum core::net::socket_addr::SocketAddr\">SocketAddr</a>&gt;</h4></section></summary><div class='docblock'>Returned iterator over socket addresses which this type may correspond\nto.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.to_socket_addrs\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/net/socket_addr.rs.html#312\">source</a><a href=\"#method.to_socket_addrs\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/std/net/socket_addr/trait.ToSocketAddrs.html#tymethod.to_socket_addrs\" class=\"fn\">to_socket_addrs</a>(&amp;self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/into_iter/struct.IntoIter.html\" title=\"struct alloc::vec::into_iter::IntoIter\">IntoIter</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html\" title=\"enum core::net::socket_addr::SocketAddr\">SocketAddr</a>&gt;, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/io/error/struct.Error.html\" title=\"struct std::io::error::Error\">Error</a>&gt;</h4></section></summary><div class='docblock'>Converts this object to an iterator of resolved <a href=\"https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html\" title=\"enum core::net::socket_addr::SocketAddr\"><code>SocketAddr</code></a>s. <a href=\"https://doc.rust-lang.org/nightly/std/net/socket_addr/trait.ToSocketAddrs.html#tymethod.to_socket_addrs\">Read more</a></div></details></div></details>","ToSocketAddrs","qlog::Bytes"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Write-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2912\">source</a></span><a href=\"#impl-Write-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Write.html\" title=\"trait core::fmt::Write\">Write</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.write_str\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2914\">source</a><a href=\"#method.write_str\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Write.html#tymethod.write_str\" class=\"fn\">write_str</a>(&amp;mut self, s: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.unit.html\">()</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html\" title=\"struct core::fmt::Error\">Error</a>&gt;</h4></section></summary><div class='docblock'>Writes a string slice into this writer, returning whether the write\nsucceeded. <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Write.html#tymethod.write_str\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.write_char\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2920\">source</a><a href=\"#method.write_char\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Write.html#method.write_char\" class=\"fn\">write_char</a>(&amp;mut self, c: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\">char</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.unit.html\">()</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html\" title=\"struct core::fmt::Error\">Error</a>&gt;</h4></section></summary><div class='docblock'>Writes a <a href=\"https://doc.rust-lang.org/nightly/std/primitive.char.html\" title=\"primitive char\"><code>char</code></a> into this writer, returning whether the write succeeded. <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Write.html#method.write_char\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.write_fmt\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/fmt/mod.rs.html#194\">source</a></span><a href=\"#method.write_fmt\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Write.html#method.write_fmt\" class=\"fn\">write_fmt</a>(&amp;mut self, args: <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/fmt/struct.Arguments.html\" title=\"struct core::fmt::Arguments\">Arguments</a>&lt;'_&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.unit.html\">()</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html\" title=\"struct core::fmt::Error\">Error</a>&gt;</h4></section></summary><div class='docblock'>Glue for usage of the <a href=\"https://doc.rust-lang.org/nightly/core/macro.write.html\" title=\"macro core::write\"><code>write!</code></a> macro with implementors of this trait. <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Write.html#method.write_fmt\">Read more</a></div></details></div></details>","Write","qlog::Bytes"],["<section id=\"impl-DerefPure-for-String\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2483\">source</a><a href=\"#impl-DerefPure-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.DerefPure.html\" title=\"trait core::ops::deref::DerefPure\">DerefPure</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section>","DerefPure","qlog::Bytes"],["<section id=\"impl-Eq-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#362\">source</a></span><a href=\"#impl-Eq-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section>","Eq","qlog::Bytes"],["<section id=\"impl-Index-for-String\" class=\"impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde_json/1.0.115/src/serde_json/value/index.rs.html#107\">source</a><a href=\"#impl-Index-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://docs.rs/serde_json/1.0.115/serde_json/value/index/trait.Index.html\" title=\"trait serde_json::value::index::Index\">Index</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section>","Index","qlog::Bytes"],["<section id=\"impl-StructuralPartialEq-for-String\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#362\">source</a></span><a href=\"#impl-StructuralPartialEq-for-String\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a></h3></section>","StructuralPartialEq","qlog::Bytes"]]
+};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})()
\ No newline at end of file
diff --git a/type.impl/core/result/enum.Result.js b/type.impl/core/result/enum.Result.js
new file mode 100644
index 0000000..3bc069b
--- /dev/null
+++ b/type.impl/core/result/enum.Result.js
@@ -0,0 +1,5 @@
+(function() {var type_impls = {
+"octets":[["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Clone-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1674-1677\">source</a></span><a href=\"#impl-Clone-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.clone\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1680\">source</a><a href=\"#method.clone\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone\" class=\"fn\">clone</a>(&amp;self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h4></section></summary><div class='docblock'>Returns a copy of the value. <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.clone_from\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1688\">source</a><a href=\"#method.clone_from\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from\" class=\"fn\">clone_from</a>(&amp;mut self, source: &amp;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from\">Read more</a></div></details></div></details>","Clone","octets::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Debug-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-Debug-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.fmt\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a><a href=\"#method.fmt\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt\" class=\"fn\">fmt</a>(&amp;self, f: &amp;mut <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html\" title=\"struct core::fmt::Formatter\">Formatter</a>&lt;'_&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.unit.html\">()</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html\" title=\"struct core::fmt::Error\">Error</a>&gt;</h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt\">Read more</a></div></details></div></details>","Debug","octets::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FromIterator%3CResult%3CA,+E%3E%3E-for-Result%3CV,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1890\">source</a></span><a href=\"#impl-FromIterator%3CResult%3CA,+E%3E%3E-for-Result%3CV,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;A, E, V&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html\" title=\"trait core::iter::traits::collect::FromIterator\">FromIterator</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;A, E&gt;&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;V, E&gt;<div class=\"where\">where\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html\" title=\"trait core::iter::traits::collect::FromIterator\">FromIterator</a>&lt;A&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_iter\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1934\">source</a><a href=\"#method.from_iter\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter\" class=\"fn\">from_iter</a>&lt;I&gt;(iter: I) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;V, E&gt;<div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;A, E&gt;&gt;,</div></h4></section></summary><div class=\"docblock\"><p>Takes each element in the <code>Iterator</code>: if it is an <code>Err</code>, no further\nelements are taken, and the <code>Err</code> is returned. Should no <code>Err</code> occur, a\ncontainer with the values of each <code>Result</code> is returned.</p>\n<p>Here is an example which increments every integer in a vector,\nchecking for overflow:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>v = <span class=\"macro\">vec!</span>[<span class=\"number\">1</span>, <span class=\"number\">2</span>];\n<span class=\"kw\">let </span>res: <span class=\"prelude-ty\">Result</span>&lt;Vec&lt;u32&gt;, <span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str&gt; = v.iter().map(|x: <span class=\"kw-2\">&amp;</span>u32|\n    x.checked_add(<span class=\"number\">1</span>).ok_or(<span class=\"string\">\"Overflow!\"</span>)\n).collect();\n<span class=\"macro\">assert_eq!</span>(res, <span class=\"prelude-val\">Ok</span>(<span class=\"macro\">vec!</span>[<span class=\"number\">2</span>, <span class=\"number\">3</span>]));</code></pre></div>\n<p>Here is another example that tries to subtract one from another list\nof integers, this time checking for underflow:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>v = <span class=\"macro\">vec!</span>[<span class=\"number\">1</span>, <span class=\"number\">2</span>, <span class=\"number\">0</span>];\n<span class=\"kw\">let </span>res: <span class=\"prelude-ty\">Result</span>&lt;Vec&lt;u32&gt;, <span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str&gt; = v.iter().map(|x: <span class=\"kw-2\">&amp;</span>u32|\n    x.checked_sub(<span class=\"number\">1</span>).ok_or(<span class=\"string\">\"Underflow!\"</span>)\n).collect();\n<span class=\"macro\">assert_eq!</span>(res, <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Underflow!\"</span>));</code></pre></div>\n<p>Here is a variation on the previous example, showing that no\nfurther elements are taken from <code>iter</code> after the first <code>Err</code>.</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>v = <span class=\"macro\">vec!</span>[<span class=\"number\">3</span>, <span class=\"number\">2</span>, <span class=\"number\">1</span>, <span class=\"number\">10</span>];\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>shared = <span class=\"number\">0</span>;\n<span class=\"kw\">let </span>res: <span class=\"prelude-ty\">Result</span>&lt;Vec&lt;u32&gt;, <span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str&gt; = v.iter().map(|x: <span class=\"kw-2\">&amp;</span>u32| {\n    shared += x;\n    x.checked_sub(<span class=\"number\">2</span>).ok_or(<span class=\"string\">\"Underflow!\"</span>)\n}).collect();\n<span class=\"macro\">assert_eq!</span>(res, <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Underflow!\"</span>));\n<span class=\"macro\">assert_eq!</span>(shared, <span class=\"number\">6</span>);</code></pre></div>\n<p>Since the third element caused an underflow, no further elements were taken,\nso the final value of <code>shared</code> is 6 (= <code>3 + 2 + 1</code>), not 16.</p>\n</div></details></div></details>","FromIterator<Result<A, E>>","octets::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FromResidual%3CResult%3CInfallible,+E%3E%3E-for-Result%3CT,+F%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1959\">source</a><a href=\"#impl-FromResidual%3CResult%3CInfallible,+E%3E%3E-for-Result%3CT,+F%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E, F&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html\" title=\"trait core::ops::try_trait::FromResidual\">FromResidual</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html\" title=\"enum core::convert::Infallible\">Infallible</a>, E&gt;&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;E&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_residual\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1962\">source</a><a href=\"#method.from_residual\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html#tymethod.from_residual\" class=\"fn\">from_residual</a>(residual: <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html\" title=\"enum core::convert::Infallible\">Infallible</a>, E&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2</code>)</span></div></span><div class='docblock'>Constructs the type from a compatible <code>Residual</code> type. <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html#tymethod.from_residual\">Read more</a></div></details></div></details>","FromResidual<Result<Infallible, E>>","octets::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FromResidual%3CYeet%3CE%3E%3E-for-Result%3CT,+F%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1970\">source</a><a href=\"#impl-FromResidual%3CYeet%3CE%3E%3E-for-Result%3CT,+F%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E, F&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html\" title=\"trait core::ops::try_trait::FromResidual\">FromResidual</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/struct.Yeet.html\" title=\"struct core::ops::try_trait::Yeet\">Yeet</a>&lt;E&gt;&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;E&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_residual\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1972\">source</a><a href=\"#method.from_residual\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html#tymethod.from_residual\" class=\"fn\">from_residual</a>(_: <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/struct.Yeet.html\" title=\"struct core::ops::try_trait::Yeet\">Yeet</a>&lt;E&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2</code>)</span></div></span><div class='docblock'>Constructs the type from a compatible <code>Residual</code> type. <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html#tymethod.from_residual\">Read more</a></div></details></div></details>","FromResidual<Yeet<E>>","octets::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Hash-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-Hash-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.hash\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a><a href=\"#method.hash\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash\" class=\"fn\">hash</a>&lt;__H&gt;(&amp;self, state: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut __H</a>)<div class=\"where\">where\n    __H: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\">Hasher</a>,</div></h4></section></summary><div class='docblock'>Feeds this value into the given <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\"><code>Hasher</code></a>. <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.hash_slice\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.3.0\">1.3.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#238-240\">source</a></span><a href=\"#method.hash_slice\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice\" class=\"fn\">hash_slice</a>&lt;H&gt;(data: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[Self]</a>, state: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut H</a>)<div class=\"where\">where\n    H: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\">Hasher</a>,\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\"><code>Hasher</code></a>. <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice\">Read more</a></div></details></div></details>","Hash","octets::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-IntoIterator-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1698\">source</a></span><a href=\"#impl-IntoIterator-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_iter\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1718\">source</a><a href=\"#method.into_iter\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter\" class=\"fn\">into_iter</a>(self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/result/struct.IntoIter.html\" title=\"struct core::result::IntoIter\">IntoIter</a>&lt;T&gt;</h4></section></summary><div class=\"docblock\"><p>Returns a consuming iterator over the possibly contained value.</p>\n<p>The iterator yields one value if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Result::Ok</code></a>, otherwise none.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">5</span>);\n<span class=\"kw\">let </span>v: Vec&lt;u32&gt; = x.into_iter().collect();\n<span class=\"macro\">assert_eq!</span>(v, [<span class=\"number\">5</span>]);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"nothing!\"</span>);\n<span class=\"kw\">let </span>v: Vec&lt;u32&gt; = x.into_iter().collect();\n<span class=\"macro\">assert_eq!</span>(v, []);</code></pre></div>\n</div></details><details class=\"toggle\" open><summary><section id=\"associatedtype.Item\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Item\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = T</h4></section></summary><div class='docblock'>The type of the elements being iterated over.</div></details><details class=\"toggle\" open><summary><section id=\"associatedtype.IntoIter\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.IntoIter\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter\" class=\"associatedtype\">IntoIter</a> = <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/result/struct.IntoIter.html\" title=\"struct core::result::IntoIter\">IntoIter</a>&lt;T&gt;</h4></section></summary><div class='docblock'>Which kind of iterator are we turning this into?</div></details></div></details>","IntoIterator","octets::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Ord-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-Ord-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.cmp\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a><a href=\"#method.cmp\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp\" class=\"fn\">cmp</a>(&amp;self, other: &amp;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html\" title=\"enum core::cmp::Ordering\">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href=\"https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html\" title=\"enum core::cmp::Ordering\"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.max\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.21.0\">1.21.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#856-858\">source</a></span><a href=\"#method.max\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max\" class=\"fn\">max</a>(self, other: Self) -&gt; Self<div class=\"where\">where\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.min\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.21.0\">1.21.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#877-879\">source</a></span><a href=\"#method.min\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min\" class=\"fn\">min</a>(self, other: Self) -&gt; Self<div class=\"where\">where\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.clamp\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.50.0\">1.50.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#902-905\">source</a></span><a href=\"#method.clamp\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp\" class=\"fn\">clamp</a>(self, min: Self, max: Self) -&gt; Self<div class=\"where\">where\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>,</div></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp\">Read more</a></div></details></div></details>","Ord","octets::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-PartialEq-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-PartialEq-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.eq\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a><a href=\"#method.eq\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq\" class=\"fn\">eq</a>(&amp;self, other: &amp;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used\nby <code>==</code>.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.ne\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263\">source</a></span><a href=\"#method.ne\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne\" class=\"fn\">ne</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.</div></details></div></details>","PartialEq","octets::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-PartialOrd-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-PartialOrd-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.partial_cmp\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a><a href=\"#method.partial_cmp\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp\" class=\"fn\">partial_cmp</a>(&amp;self, other: &amp;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html\" title=\"enum core::cmp::Ordering\">Ordering</a>&gt;</h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.lt\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1179\">source</a></span><a href=\"#method.lt\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt\" class=\"fn\">lt</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code>&lt;</code> operator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.le\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1197\">source</a></span><a href=\"#method.le\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le\" class=\"fn\">le</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>&lt;=</code>\noperator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.gt\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1214\">source</a></span><a href=\"#method.gt\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt\" class=\"fn\">gt</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>&gt;</code> operator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.ge\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1232\">source</a></span><a href=\"#method.ge\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge\" class=\"fn\">ge</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>&gt;=</code>\noperator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge\">Read more</a></div></details></div></details>","PartialOrd","octets::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Product%3CResult%3CU,+E%3E%3E-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.16.0\">1.16.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/iter/traits/accum.rs.html#184-186\">source</a></span><a href=\"#impl-Product%3CResult%3CU,+E%3E%3E-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, U, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Product.html\" title=\"trait core::iter::traits::accum::Product\">Product</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Product.html\" title=\"trait core::iter::traits::accum::Product\">Product</a>&lt;U&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.product\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/iter/traits/accum.rs.html#205-207\">source</a><a href=\"#method.product\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Product.html#tymethod.product\" class=\"fn\">product</a>&lt;I&gt;(iter: I) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a>&lt;Item = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;&gt;,</div></h4></section></summary><div class=\"docblock\"><p>Takes each element in the <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\"><code>Iterator</code></a>: if it is an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, no further\nelements are taken, and the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> is returned. Should no <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>\noccur, the product of all elements is returned.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<p>This multiplies each number in a vector of strings,\nif a string could not be parsed the operation returns <code>Err</code>:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>nums = <span class=\"macro\">vec!</span>[<span class=\"string\">\"5\"</span>, <span class=\"string\">\"10\"</span>, <span class=\"string\">\"1\"</span>, <span class=\"string\">\"2\"</span>];\n<span class=\"kw\">let </span>total: <span class=\"prelude-ty\">Result</span>&lt;usize, <span class=\"kw\">_</span>&gt; = nums.iter().map(|w| w.parse::&lt;usize&gt;()).product();\n<span class=\"macro\">assert_eq!</span>(total, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">100</span>));\n<span class=\"kw\">let </span>nums = <span class=\"macro\">vec!</span>[<span class=\"string\">\"5\"</span>, <span class=\"string\">\"10\"</span>, <span class=\"string\">\"one\"</span>, <span class=\"string\">\"2\"</span>];\n<span class=\"kw\">let </span>total: <span class=\"prelude-ty\">Result</span>&lt;usize, <span class=\"kw\">_</span>&gt; = nums.iter().map(|w| w.parse::&lt;usize&gt;()).product();\n<span class=\"macro\">assert!</span>(total.is_err());</code></pre></div>\n</div></details></div></details>","Product<Result<U, E>>","octets::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Residual%3CT%3E-for-Result%3CInfallible,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1978\">source</a><a href=\"#impl-Residual%3CT%3E-for-Result%3CInfallible,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html\" title=\"trait core::ops::try_trait::Residual\">Residual</a>&lt;T&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html\" title=\"enum core::convert::Infallible\">Infallible</a>, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle\" open><summary><section id=\"associatedtype.TryType\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.TryType\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html#associatedtype.TryType\" class=\"associatedtype\">TryType</a> = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2_residual</code>)</span></div></span><div class='docblock'>The “return” type of this meta-function.</div></details></div></details>","Residual<T>","octets::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Result%3C%26T,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1500\">source</a><a href=\"#impl-Result%3C%26T,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.copied\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.59.0\">1.59.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1515-1517\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.copied\" class=\"fn\">copied</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a>,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;&amp;T, E&gt;</code> to a <code>Result&lt;T, E&gt;</code> by copying the contents of the\n<code>Ok</code> part.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>val = <span class=\"number\">12</span>;\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>i32, i32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;</span>val);\n<span class=\"macro\">assert_eq!</span>(x, <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;</span><span class=\"number\">12</span>));\n<span class=\"kw\">let </span>copied = x.copied();\n<span class=\"macro\">assert_eq!</span>(copied, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">12</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.cloned\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.59.0\">1.59.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1536-1538\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.cloned\" class=\"fn\">cloned</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;&amp;T, E&gt;</code> to a <code>Result&lt;T, E&gt;</code> by cloning the contents of the\n<code>Ok</code> part.</p>\n<h5 id=\"examples-1\"><a class=\"doc-anchor\" href=\"#examples-1\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>val = <span class=\"number\">12</span>;\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>i32, i32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;</span>val);\n<span class=\"macro\">assert_eq!</span>(x, <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;</span><span class=\"number\">12</span>));\n<span class=\"kw\">let </span>cloned = x.cloned();\n<span class=\"macro\">assert_eq!</span>(cloned, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">12</span>));</code></pre></div>\n</div></details></div></details>",0,"octets::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Result%3C%26mut+T,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1544\">source</a><a href=\"#impl-Result%3C%26mut+T,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut T</a>, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.copied\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.59.0\">1.59.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1559-1561\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.copied\" class=\"fn\">copied</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a>,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;&amp;mut T, E&gt;</code> to a <code>Result&lt;T, E&gt;</code> by copying the contents of the\n<code>Ok</code> part.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>val = <span class=\"number\">12</span>;\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;mut </span>i32, i32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;mut </span>val);\n<span class=\"macro\">assert_eq!</span>(x, <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;mut </span><span class=\"number\">12</span>));\n<span class=\"kw\">let </span>copied = x.copied();\n<span class=\"macro\">assert_eq!</span>(copied, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">12</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.cloned\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.59.0\">1.59.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1580-1582\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.cloned\" class=\"fn\">cloned</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;&amp;mut T, E&gt;</code> to a <code>Result&lt;T, E&gt;</code> by cloning the contents of the\n<code>Ok</code> part.</p>\n<h5 id=\"examples-1\"><a class=\"doc-anchor\" href=\"#examples-1\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>val = <span class=\"number\">12</span>;\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;mut </span>i32, i32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;mut </span>val);\n<span class=\"macro\">assert_eq!</span>(x, <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;mut </span><span class=\"number\">12</span>));\n<span class=\"kw\">let </span>cloned = x.cloned();\n<span class=\"macro\">assert_eq!</span>(cloned, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">12</span>));</code></pre></div>\n</div></details></div></details>",0,"octets::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Result%3COption%3CT%3E,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1588\">source</a><a href=\"#impl-Result%3COption%3CT%3E,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;T&gt;, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.transpose\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.33.0, const unstable\">1.33.0 (const: <a href=\"https://github.com/rust-lang/rust/issues/82814\" title=\"Tracking issue for const_result\">unstable</a>)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1607\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.transpose\" class=\"fn\">transpose</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;&gt;</h4></section></summary><div class=\"docblock\"><p>Transposes a <code>Result</code> of an <code>Option</code> into an <code>Option</code> of a <code>Result</code>.</p>\n<p><code>Ok(None)</code> will be mapped to <code>None</code>.\n<code>Ok(Some(_))</code> and <code>Err(_)</code> will be mapped to <code>Some(Ok(_))</code> and <code>Some(Err(_))</code>.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#[derive(Debug, Eq, PartialEq)]\n</span><span class=\"kw\">struct </span>SomeErr;\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"prelude-ty\">Option</span>&lt;i32&gt;, SomeErr&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"prelude-val\">Some</span>(<span class=\"number\">5</span>));\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Option</span>&lt;<span class=\"prelude-ty\">Result</span>&lt;i32, SomeErr&gt;&gt; = <span class=\"prelude-val\">Some</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"number\">5</span>));\n<span class=\"macro\">assert_eq!</span>(x.transpose(), y);</code></pre></div>\n</div></details></div></details>",0,"octets::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Result%3CResult%3CT,+E%3E,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1616\">source</a><a href=\"#impl-Result%3CResult%3CT,+E%3E,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.flatten\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1643\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.flatten\" class=\"fn\">flatten</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>result_flattening</code>)</span></div></span></summary><div class=\"docblock\"><p>Converts from <code>Result&lt;Result&lt;T, E&gt;, E&gt;</code> to <code>Result&lt;T, E&gt;</code></p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(result_flattening)]\n</span><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str, u32&gt;, u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>), x.flatten());\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str, u32&gt;, u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"prelude-val\">Err</span>(<span class=\"number\">6</span>));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Err</span>(<span class=\"number\">6</span>), x.flatten());\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str, u32&gt;, u32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"number\">6</span>);\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Err</span>(<span class=\"number\">6</span>), x.flatten());</code></pre></div>\n<p>Flattening only removes one level of nesting at a time:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(result_flattening)]\n</span><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"prelude-ty\">Result</span>&lt;<span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str, u32&gt;, u32&gt;, u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>)));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>)), x.flatten());\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>), x.flatten().flatten());</code></pre></div>\n</div></details></div></details>",0,"octets::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Result%3CT,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#518\">source</a><a href=\"#impl-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.is_ok\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0, const since 1.48.0\">1.0.0 (const: 1.48.0)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#538\">source</a></span><h4 class=\"code-header\">pub const fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.is_ok\" class=\"fn\">is_ok</a>(&amp;self) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class=\"docblock\"><p>Returns <code>true</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;i32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(-<span class=\"number\">3</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_ok(), <span class=\"bool-val\">true</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;i32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Some error message\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_ok(), <span class=\"bool-val\">false</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.is_ok_and\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.70.0\">1.70.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#559\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.is_ok_and\" class=\"fn\">is_ok_and</a>(self, f: impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(T) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class=\"docblock\"><p>Returns <code>true</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> and the value inside of it matches a predicate.</p>\n<h5 id=\"examples-1\"><a class=\"doc-anchor\" href=\"#examples-1\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_ok_and(|x| x &gt; <span class=\"number\">1</span>), <span class=\"bool-val\">true</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">0</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_ok_and(|x| x &gt; <span class=\"number\">1</span>), <span class=\"bool-val\">false</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"hey\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_ok_and(|x| x &gt; <span class=\"number\">1</span>), <span class=\"bool-val\">false</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.is_err\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0, const since 1.48.0\">1.0.0 (const: 1.48.0)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#581\">source</a></span><h4 class=\"code-header\">pub const fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.is_err\" class=\"fn\">is_err</a>(&amp;self) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class=\"docblock\"><p>Returns <code>true</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>.</p>\n<h5 id=\"examples-2\"><a class=\"doc-anchor\" href=\"#examples-2\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;i32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(-<span class=\"number\">3</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_err(), <span class=\"bool-val\">false</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;i32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Some error message\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_err(), <span class=\"bool-val\">true</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.is_err_and\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.70.0\">1.70.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#604\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.is_err_and\" class=\"fn\">is_err_and</a>(self, f: impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(E) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class=\"docblock\"><p>Returns <code>true</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> and the value inside of it matches a predicate.</p>\n<h5 id=\"examples-3\"><a class=\"doc-anchor\" href=\"#examples-3\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::io::{Error, ErrorKind};\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, Error&gt; = <span class=\"prelude-val\">Err</span>(Error::new(ErrorKind::NotFound, <span class=\"string\">\"!\"</span>));\n<span class=\"macro\">assert_eq!</span>(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), <span class=\"bool-val\">true</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, Error&gt; = <span class=\"prelude-val\">Err</span>(Error::new(ErrorKind::PermissionDenied, <span class=\"string\">\"!\"</span>));\n<span class=\"macro\">assert_eq!</span>(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), <span class=\"bool-val\">false</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, Error&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">123</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), <span class=\"bool-val\">false</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.ok\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#631\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.ok\" class=\"fn\">ok</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;T&gt;</h4></section></summary><div class=\"docblock\"><p>Converts from <code>Result&lt;T, E&gt;</code> to <a href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\"><code>Option&lt;T&gt;</code></a>.</p>\n<p>Converts <code>self</code> into an <a href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\"><code>Option&lt;T&gt;</code></a>, consuming <code>self</code>,\nand discarding the error, if any.</p>\n<h5 id=\"examples-4\"><a class=\"doc-anchor\" href=\"#examples-4\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.ok(), <span class=\"prelude-val\">Some</span>(<span class=\"number\">2</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Nothing here\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.ok(), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.err\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#654\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.err\" class=\"fn\">err</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;E&gt;</h4></section></summary><div class=\"docblock\"><p>Converts from <code>Result&lt;T, E&gt;</code> to <a href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\"><code>Option&lt;E&gt;</code></a>.</p>\n<p>Converts <code>self</code> into an <a href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\"><code>Option&lt;E&gt;</code></a>, consuming <code>self</code>,\nand discarding the success value, if any.</p>\n<h5 id=\"examples-5\"><a class=\"doc-anchor\" href=\"#examples-5\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.err(), <span class=\"prelude-val\">None</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Nothing here\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.err(), <span class=\"prelude-val\">Some</span>(<span class=\"string\">\"Nothing here\"</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_ref\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0, const since 1.48.0\">1.0.0 (const: 1.48.0)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#682\">source</a></span><h4 class=\"code-header\">pub const fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.as_ref\" class=\"fn\">as_ref</a>(&amp;self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;E</a>&gt;</h4></section></summary><div class=\"docblock\"><p>Converts from <code>&amp;Result&lt;T, E&gt;</code> to <code>Result&lt;&amp;T, &amp;E&gt;</code>.</p>\n<p>Produces a new <code>Result</code>, containing a reference\ninto the original, leaving the original in place.</p>\n<h5 id=\"examples-6\"><a class=\"doc-anchor\" href=\"#examples-6\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.as_ref(), <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Error\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.as_ref(), <span class=\"prelude-val\">Err</span>(<span class=\"kw-2\">&amp;</span><span class=\"string\">\"Error\"</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_mut\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0, const unstable\">1.0.0 (const: <a href=\"https://github.com/rust-lang/rust/issues/82814\" title=\"Tracking issue for const_result\">unstable</a>)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#712\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.as_mut\" class=\"fn\">as_mut</a>(&amp;mut self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut T</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut E</a>&gt;</h4></section></summary><div class=\"docblock\"><p>Converts from <code>&amp;mut Result&lt;T, E&gt;</code> to <code>Result&lt;&amp;mut T, &amp;mut E&gt;</code>.</p>\n<h5 id=\"examples-7\"><a class=\"doc-anchor\" href=\"#examples-7\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">fn </span>mutate(r: <span class=\"kw-2\">&amp;mut </span><span class=\"prelude-ty\">Result</span>&lt;i32, i32&gt;) {\n    <span class=\"kw\">match </span>r.as_mut() {\n        <span class=\"prelude-val\">Ok</span>(v) =&gt; <span class=\"kw-2\">*</span>v = <span class=\"number\">42</span>,\n        <span class=\"prelude-val\">Err</span>(e) =&gt; <span class=\"kw-2\">*</span>e = <span class=\"number\">0</span>,\n    }\n}\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>x: <span class=\"prelude-ty\">Result</span>&lt;i32, i32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\nmutate(<span class=\"kw-2\">&amp;mut </span>x);\n<span class=\"macro\">assert_eq!</span>(x.unwrap(), <span class=\"number\">42</span>);\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>x: <span class=\"prelude-ty\">Result</span>&lt;i32, i32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"number\">13</span>);\nmutate(<span class=\"kw-2\">&amp;mut </span>x);\n<span class=\"macro\">assert_eq!</span>(x.unwrap_err(), <span class=\"number\">0</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.map\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#744\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.map\" class=\"fn\">map</a>&lt;U, F&gt;(self, op: F) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(T) -&gt; U,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;T, E&gt;</code> to <code>Result&lt;U, E&gt;</code> by applying a function to a\ncontained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value, leaving an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value untouched.</p>\n<p>This function can be used to compose the results of two functions.</p>\n<h5 id=\"examples-8\"><a class=\"doc-anchor\" href=\"#examples-8\">§</a>Examples</h5>\n<p>Print the numbers on each line of a string multiplied by two.</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>line = <span class=\"string\">\"1\\n2\\n3\\n4\\n\"</span>;\n\n<span class=\"kw\">for </span>num <span class=\"kw\">in </span>line.lines() {\n    <span class=\"kw\">match </span>num.parse::&lt;i32&gt;().map(|i| i * <span class=\"number\">2</span>) {\n        <span class=\"prelude-val\">Ok</span>(n) =&gt; <span class=\"macro\">println!</span>(<span class=\"string\">\"{n}\"</span>),\n        <span class=\"prelude-val\">Err</span>(..) =&gt; {}\n    }\n}</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.map_or\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.41.0\">1.41.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#772\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.map_or\" class=\"fn\">map_or</a>&lt;U, F&gt;(self, default: U, f: F) -&gt; U<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(T) -&gt; U,</div></h4></section></summary><div class=\"docblock\"><p>Returns the provided default (if <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>), or\napplies a function to the contained value (if <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>).</p>\n<p>Arguments passed to <code>map_or</code> are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.map_or_else\" title=\"method core::result::Result::map_or_else\"><code>map_or_else</code></a>,\nwhich is lazily evaluated.</p>\n<h5 id=\"examples-9\"><a class=\"doc-anchor\" href=\"#examples-9\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw\">_</span>, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"foo\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.map_or(<span class=\"number\">42</span>, |v| v.len()), <span class=\"number\">3</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw\">_</span>&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"bar\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.map_or(<span class=\"number\">42</span>, |v| v.len()), <span class=\"number\">42</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.map_or_else\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.41.0\">1.41.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#799\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.map_or_else\" class=\"fn\">map_or_else</a>&lt;U, D, F&gt;(self, default: D, f: F) -&gt; U<div class=\"where\">where\n    D: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(E) -&gt; U,\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(T) -&gt; U,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;T, E&gt;</code> to <code>U</code> by applying fallback function <code>default</code> to\na contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value, or function <code>f</code> to a contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value.</p>\n<p>This function can be used to unpack a successful result\nwhile handling an error.</p>\n<h5 id=\"examples-10\"><a class=\"doc-anchor\" href=\"#examples-10\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>k = <span class=\"number\">21</span>;\n\n<span class=\"kw\">let </span>x : <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw\">_</span>, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"foo\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.map_or_else(|e| k * <span class=\"number\">2</span>, |v| v.len()), <span class=\"number\">3</span>);\n\n<span class=\"kw\">let </span>x : <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw\">_</span>&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"bar\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.map_or_else(|e| k * <span class=\"number\">2</span>, |v| v.len()), <span class=\"number\">42</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.map_err\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#826\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.map_err\" class=\"fn\">map_err</a>&lt;F, O&gt;(self, op: O) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;<div class=\"where\">where\n    O: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(E) -&gt; F,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;T, E&gt;</code> to <code>Result&lt;T, F&gt;</code> by applying a function to a\ncontained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value, leaving an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value untouched.</p>\n<p>This function can be used to pass through a successful result while handling\nan error.</p>\n<h5 id=\"examples-11\"><a class=\"doc-anchor\" href=\"#examples-11\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">fn </span>stringify(x: u32) -&gt; String { <span class=\"macro\">format!</span>(<span class=\"string\">\"error code: {x}\"</span>) }\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.map_err(stringify), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, u32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"number\">13</span>);\n<span class=\"macro\">assert_eq!</span>(x.map_err(stringify), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"error code: 13\"</span>.to_string()));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.inspect\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.76.0\">1.76.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#848\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.inspect\" class=\"fn\">inspect</a>&lt;F&gt;(self, f: F) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>),</div></h4></section></summary><div class=\"docblock\"><p>Calls a function with a reference to the contained value if <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>.</p>\n<p>Returns the original result.</p>\n<h5 id=\"examples-12\"><a class=\"doc-anchor\" href=\"#examples-12\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: u8 = <span class=\"string\">\"4\"\n    </span>.parse::&lt;u8&gt;()\n    .inspect(|x| <span class=\"macro\">println!</span>(<span class=\"string\">\"original: {x}\"</span>))\n    .map(|x| x.pow(<span class=\"number\">3</span>))\n    .expect(<span class=\"string\">\"failed to parse number\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.inspect_err\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.76.0\">1.76.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#872\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.inspect_err\" class=\"fn\">inspect_err</a>&lt;F&gt;(self, f: F) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;E</a>),</div></h4></section></summary><div class=\"docblock\"><p>Calls a function with a reference to the contained value if <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>.</p>\n<p>Returns the original result.</p>\n<h5 id=\"examples-13\"><a class=\"doc-anchor\" href=\"#examples-13\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::{fs, io};\n\n<span class=\"kw\">fn </span>read() -&gt; io::Result&lt;String&gt; {\n    fs::read_to_string(<span class=\"string\">\"address.txt\"</span>)\n        .inspect_err(|e| <span class=\"macro\">eprintln!</span>(<span class=\"string\">\"failed to read file: {e}\"</span>))\n}</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_deref\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.47.0\">1.47.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#898-900\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.as_deref\" class=\"fn\">as_deref</a>(&amp;self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;&amp;&lt;T as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a>&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target\" title=\"type core::ops::deref::Deref::Target\">Target</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;E</a>&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a>,</div></h4></section></summary><div class=\"docblock\"><p>Converts from <code>Result&lt;T, E&gt;</code> (or <code>&amp;Result&lt;T, E&gt;</code>) to <code>Result&lt;&amp;&lt;T as Deref&gt;::Target, &amp;E&gt;</code>.</p>\n<p>Coerces the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> variant of the original <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\"><code>Result</code></a> via <a href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\"><code>Deref</code></a>\nand returns the new <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\"><code>Result</code></a>.</p>\n<h5 id=\"examples-14\"><a class=\"doc-anchor\" href=\"#examples-14\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;String, u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>.to_string());\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw-2\">&amp;</span>u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.as_deref(), y);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;String, u32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"number\">42</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw-2\">&amp;</span>u32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"kw-2\">&amp;</span><span class=\"number\">42</span>);\n<span class=\"macro\">assert_eq!</span>(x.as_deref(), y);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_deref_mut\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.47.0\">1.47.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#925-927\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.as_deref_mut\" class=\"fn\">as_deref_mut</a>(&amp;mut self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;&amp;mut &lt;T as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a>&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target\" title=\"type core::ops::deref::Deref::Target\">Target</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut E</a>&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.DerefMut.html\" title=\"trait core::ops::deref::DerefMut\">DerefMut</a>,</div></h4></section></summary><div class=\"docblock\"><p>Converts from <code>Result&lt;T, E&gt;</code> (or <code>&amp;mut Result&lt;T, E&gt;</code>) to <code>Result&lt;&amp;mut &lt;T as DerefMut&gt;::Target, &amp;mut E&gt;</code>.</p>\n<p>Coerces the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> variant of the original <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\"><code>Result</code></a> via <a href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.DerefMut.html\" title=\"trait core::ops::deref::DerefMut\"><code>DerefMut</code></a>\nand returns the new <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\"><code>Result</code></a>.</p>\n<h5 id=\"examples-15\"><a class=\"doc-anchor\" href=\"#examples-15\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = <span class=\"string\">\"HELLO\"</span>.to_string();\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>x: <span class=\"prelude-ty\">Result</span>&lt;String, u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>.to_string());\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;mut </span>str, <span class=\"kw-2\">&amp;mut </span>u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;mut </span>s);\n<span class=\"macro\">assert_eq!</span>(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>i = <span class=\"number\">42</span>;\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>x: <span class=\"prelude-ty\">Result</span>&lt;String, u32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"number\">42</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;mut </span>str, <span class=\"kw-2\">&amp;mut </span>u32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"kw-2\">&amp;mut </span>i);\n<span class=\"macro\">assert_eq!</span>(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.iter\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#951\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.iter\" class=\"fn\">iter</a>(&amp;self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/result/struct.Iter.html\" title=\"struct core::result::Iter\">Iter</a>&lt;'_, T&gt;</h4></section></summary><div class=\"docblock\"><p>Returns an iterator over the possibly contained value.</p>\n<p>The iterator yields one value if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Result::Ok</code></a>, otherwise none.</p>\n<h5 id=\"examples-16\"><a class=\"doc-anchor\" href=\"#examples-16\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">7</span>);\n<span class=\"macro\">assert_eq!</span>(x.iter().next(), <span class=\"prelude-val\">Some</span>(<span class=\"kw-2\">&amp;</span><span class=\"number\">7</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"nothing!\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.iter().next(), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.iter_mut\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#974\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.iter_mut\" class=\"fn\">iter_mut</a>(&amp;mut self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/result/struct.IterMut.html\" title=\"struct core::result::IterMut\">IterMut</a>&lt;'_, T&gt;</h4></section></summary><div class=\"docblock\"><p>Returns a mutable iterator over the possibly contained value.</p>\n<p>The iterator yields one value if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Result::Ok</code></a>, otherwise none.</p>\n<h5 id=\"examples-17\"><a class=\"doc-anchor\" href=\"#examples-17\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">7</span>);\n<span class=\"kw\">match </span>x.iter_mut().next() {\n    <span class=\"prelude-val\">Some</span>(v) =&gt; <span class=\"kw-2\">*</span>v = <span class=\"number\">40</span>,\n    <span class=\"prelude-val\">None </span>=&gt; {},\n}\n<span class=\"macro\">assert_eq!</span>(x, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">40</span>));\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"nothing!\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.iter_mut().next(), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.expect\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.4.0\">1.4.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1028-1030\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.expect\" class=\"fn\">expect</a>(self, msg: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>) -&gt; T<div class=\"where\">where\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value, consuming the <code>self</code> value.</p>\n<p>Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>\ncase explicitly, or call <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or\" title=\"method core::result::Result::unwrap_or\"><code>unwrap_or</code></a>, <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or_else\" title=\"method core::result::Result::unwrap_or_else\"><code>unwrap_or_else</code></a>, or\n<a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or_default\" title=\"method core::result::Result::unwrap_or_default\"><code>unwrap_or_default</code></a>.</p>\n<h5 id=\"panics\"><a class=\"doc-anchor\" href=\"#panics\">§</a>Panics</h5>\n<p>Panics if the value is an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, with a panic message including the\npassed message, and the content of the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>.</p>\n<h5 id=\"examples-18\"><a class=\"doc-anchor\" href=\"#examples-18\">§</a>Examples</h5>\n<div class=\"example-wrap should_panic\"><a href=\"#\" class=\"tooltip\" title=\"This example panics\">ⓘ</a><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"emergency failure\"</span>);\nx.expect(<span class=\"string\">\"Testing expect\"</span>); <span class=\"comment\">// panics with `Testing expect: emergency failure`</span></code></pre></div>\n<h5 id=\"recommended-message-style\"><a class=\"doc-anchor\" href=\"#recommended-message-style\">§</a>Recommended Message Style</h5>\n<p>We recommend that <code>expect</code> messages are used to describe the reason you\n<em>expect</em> the <code>Result</code> should be <code>Ok</code>.</p>\n\n<div class=\"example-wrap should_panic\"><a href=\"#\" class=\"tooltip\" title=\"This example panics\">ⓘ</a><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>path = std::env::var(<span class=\"string\">\"IMPORTANT_PATH\"</span>)\n    .expect(<span class=\"string\">\"env variable `IMPORTANT_PATH` should be set by `wrapper_script.sh`\"</span>);</code></pre></div>\n<p><strong>Hint</strong>: If you’re having trouble remembering how to phrase expect\nerror messages remember to focus on the word “should” as in “env\nvariable should be set by blah” or “the given binary should be available\nand executable by the current user”.</p>\n<p>For more detail on expect message styles and the reasoning behind our recommendation please\nrefer to the section on <a href=\"../../std/error/index.html#common-message-styles\">“Common Message\nStyles”</a> in the\n<a href=\"../../std/error/index.html\"><code>std::error</code></a> module docs.</p>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1071-1073\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap\" class=\"fn\">unwrap</a>(self) -&gt; T<div class=\"where\">where\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value, consuming the <code>self</code> value.</p>\n<p>Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>\ncase explicitly, or call <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or\" title=\"method core::result::Result::unwrap_or\"><code>unwrap_or</code></a>, <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or_else\" title=\"method core::result::Result::unwrap_or_else\"><code>unwrap_or_else</code></a>, or\n<a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or_default\" title=\"method core::result::Result::unwrap_or_default\"><code>unwrap_or_default</code></a>.</p>\n<h5 id=\"panics-1\"><a class=\"doc-anchor\" href=\"#panics-1\">§</a>Panics</h5>\n<p>Panics if the value is an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, with a panic message provided by the\n<a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>’s value.</p>\n<h5 id=\"examples-19\"><a class=\"doc-anchor\" href=\"#examples-19\">§</a>Examples</h5>\n<p>Basic usage:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.unwrap(), <span class=\"number\">2</span>);</code></pre></div>\n\n<div class=\"example-wrap should_panic\"><a href=\"#\" class=\"tooltip\" title=\"This example panics\">ⓘ</a><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"emergency failure\"</span>);\nx.unwrap(); <span class=\"comment\">// panics with `emergency failure`</span></code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap_or_default\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.16.0\">1.16.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1108-1110\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap_or_default\" class=\"fn\">unwrap_or_default</a>(self) -&gt; T<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value or a default</p>\n<p>Consumes the <code>self</code> argument then, if <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>, returns the contained\nvalue, otherwise if <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, returns the default value for that\ntype.</p>\n<h5 id=\"examples-20\"><a class=\"doc-anchor\" href=\"#examples-20\">§</a>Examples</h5>\n<p>Converts a string to an integer, turning poorly-formed strings\ninto 0 (the default value for integers). <a href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html#method.parse\" title=\"method str::parse\"><code>parse</code></a> converts\na string to any other type that implements <a href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\"><code>FromStr</code></a>, returning an\n<a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> on error.</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>good_year_from_input = <span class=\"string\">\"1909\"</span>;\n<span class=\"kw\">let </span>bad_year_from_input = <span class=\"string\">\"190blarg\"</span>;\n<span class=\"kw\">let </span>good_year = good_year_from_input.parse().unwrap_or_default();\n<span class=\"kw\">let </span>bad_year = bad_year_from_input.parse().unwrap_or_default();\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"number\">1909</span>, good_year);\n<span class=\"macro\">assert_eq!</span>(<span class=\"number\">0</span>, bad_year);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.expect_err\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.17.0\">1.17.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1135-1137\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.expect_err\" class=\"fn\">expect_err</a>(self, msg: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>) -&gt; E<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value, consuming the <code>self</code> value.</p>\n<h5 id=\"panics-2\"><a class=\"doc-anchor\" href=\"#panics-2\">§</a>Panics</h5>\n<p>Panics if the value is an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>, with a panic message including the\npassed message, and the content of the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>.</p>\n<h5 id=\"examples-21\"><a class=\"doc-anchor\" href=\"#examples-21\">§</a>Examples</h5>\n<div class=\"example-wrap should_panic\"><a href=\"#\" class=\"tooltip\" title=\"This example panics\">ⓘ</a><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">10</span>);\nx.expect_err(<span class=\"string\">\"Testing expect_err\"</span>); <span class=\"comment\">// panics with `Testing expect_err: 10`</span></code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap_err\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1166-1168\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap_err\" class=\"fn\">unwrap_err</a>(self) -&gt; E<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value, consuming the <code>self</code> value.</p>\n<h5 id=\"panics-3\"><a class=\"doc-anchor\" href=\"#panics-3\">§</a>Panics</h5>\n<p>Panics if the value is an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>, with a custom panic message provided\nby the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>’s value.</p>\n<h5 id=\"examples-22\"><a class=\"doc-anchor\" href=\"#examples-22\">§</a>Examples</h5>\n<div class=\"example-wrap should_panic\"><a href=\"#\" class=\"tooltip\" title=\"This example panics\">ⓘ</a><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\nx.unwrap_err(); <span class=\"comment\">// panics with `2`</span></code></pre></div>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"emergency failure\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.unwrap_err(), <span class=\"string\">\"emergency failure\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_ok\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1201-1203\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.into_ok\" class=\"fn\">into_ok</a>(self) -&gt; T<div class=\"where\">where\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.Into.html\" title=\"trait core::convert::Into\">Into</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.never.html\">!</a>&gt;,</div></h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>unwrap_infallible</code>)</span></div></span></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value, but never panics.</p>\n<p>Unlike <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap\" title=\"method core::result::Result::unwrap\"><code>unwrap</code></a>, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of <code>unwrap</code> as a maintainability safeguard that will fail\nto compile if the error type of the <code>Result</code> is later changed\nto an error that can actually occur.</p>\n<h5 id=\"examples-23\"><a class=\"doc-anchor\" href=\"#examples-23\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code>\n<span class=\"kw\">fn </span>only_good_news() -&gt; <span class=\"prelude-ty\">Result</span>&lt;String, !&gt; {\n    <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"this is fine\"</span>.into())\n}\n\n<span class=\"kw\">let </span>s: String = only_good_news().into_ok();\n<span class=\"macro\">println!</span>(<span class=\"string\">\"{s}\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_err\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1236-1238\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.into_err\" class=\"fn\">into_err</a>(self) -&gt; E<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.Into.html\" title=\"trait core::convert::Into\">Into</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.never.html\">!</a>&gt;,</div></h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>unwrap_infallible</code>)</span></div></span></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value, but never panics.</p>\n<p>Unlike <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_err\" title=\"method core::result::Result::unwrap_err\"><code>unwrap_err</code></a>, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of <code>unwrap_err</code> as a maintainability safeguard that will fail\nto compile if the ok type of the <code>Result</code> is later changed\nto a type that can actually occur.</p>\n<h5 id=\"examples-24\"><a class=\"doc-anchor\" href=\"#examples-24\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code>\n<span class=\"kw\">fn </span>only_bad_news() -&gt; <span class=\"prelude-ty\">Result</span>&lt;!, String&gt; {\n    <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Oops, it failed\"</span>.into())\n}\n\n<span class=\"kw\">let </span>error: String = only_bad_news().into_err();\n<span class=\"macro\">println!</span>(<span class=\"string\">\"{error}\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.and\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1279\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.and\" class=\"fn\">and</a>&lt;U&gt;(self, res: <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;</h4></section></summary><div class=\"docblock\"><p>Returns <code>res</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>, otherwise returns the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value of <code>self</code>.</p>\n<p>Arguments passed to <code>and</code> are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.and_then\" title=\"method core::result::Result::and_then\"><code>and_then</code></a>, which is\nlazily evaluated.</p>\n<h5 id=\"examples-25\"><a class=\"doc-anchor\" href=\"#examples-25\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"late error\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.and(y), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"late error\"</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"early error\"</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"foo\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.and(y), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"early error\"</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"not a 2\"</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"late error\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.and(y), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"not a 2\"</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"different result type\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.and(y), <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"different result type\"</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.and_then\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1319\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.and_then\" class=\"fn\">and_then</a>&lt;U, F&gt;(self, op: F) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(T) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;,</div></h4></section></summary><div class=\"docblock\"><p>Calls <code>op</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>, otherwise returns the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value of <code>self</code>.</p>\n<p>This function can be used for control flow based on <code>Result</code> values.</p>\n<h5 id=\"examples-26\"><a class=\"doc-anchor\" href=\"#examples-26\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">fn </span>sq_then_to_string(x: u32) -&gt; <span class=\"prelude-ty\">Result</span>&lt;String, <span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str&gt; {\n    x.checked_mul(x).map(|sq| sq.to_string()).ok_or(<span class=\"string\">\"overflowed\"</span>)\n}\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>).and_then(sq_then_to_string), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">4</span>.to_string()));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"number\">1_000_000</span>).and_then(sq_then_to_string), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"overflowed\"</span>));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Err</span>(<span class=\"string\">\"not a number\"</span>).and_then(sq_then_to_string), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"not a number\"</span>));</code></pre></div>\n<p>Often used to chain fallible operations that may return <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>.</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::{io::ErrorKind, path::Path};\n\n<span class=\"comment\">// Note: on Windows \"/\" maps to \"C:\\\"\n</span><span class=\"kw\">let </span>root_modified_time = Path::new(<span class=\"string\">\"/\"</span>).metadata().and_then(|md| md.modified());\n<span class=\"macro\">assert!</span>(root_modified_time.is_ok());\n\n<span class=\"kw\">let </span>should_fail = Path::new(<span class=\"string\">\"/bad/path\"</span>).metadata().and_then(|md| md.modified());\n<span class=\"macro\">assert!</span>(should_fail.is_err());\n<span class=\"macro\">assert_eq!</span>(should_fail.unwrap_err().kind(), ErrorKind::NotFound);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.or\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1355\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.or\" class=\"fn\">or</a>&lt;F&gt;(self, res: <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;</h4></section></summary><div class=\"docblock\"><p>Returns <code>res</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, otherwise returns the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value of <code>self</code>.</p>\n<p>Arguments passed to <code>or</code> are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.or_else\" title=\"method core::result::Result::or_else\"><code>or_else</code></a>, which is\nlazily evaluated.</p>\n<h5 id=\"examples-27\"><a class=\"doc-anchor\" href=\"#examples-27\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"late error\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.or(y), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"early error\"</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.or(y), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"not a 2\"</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"late error\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.or(y), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"late error\"</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">100</span>);\n<span class=\"macro\">assert_eq!</span>(x.or(y), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.or_else\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1380\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.or_else\" class=\"fn\">or_else</a>&lt;F, O&gt;(self, op: O) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;<div class=\"where\">where\n    O: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(E) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;,</div></h4></section></summary><div class=\"docblock\"><p>Calls <code>op</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, otherwise returns the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value of <code>self</code>.</p>\n<p>This function can be used for control flow based on result values.</p>\n<h5 id=\"examples-28\"><a class=\"doc-anchor\" href=\"#examples-28\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">fn </span>sq(x: u32) -&gt; <span class=\"prelude-ty\">Result</span>&lt;u32, u32&gt; { <span class=\"prelude-val\">Ok</span>(x * x) }\n<span class=\"kw\">fn </span>err(x: u32) -&gt; <span class=\"prelude-ty\">Result</span>&lt;u32, u32&gt; { <span class=\"prelude-val\">Err</span>(x) }\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>).or_else(sq).or_else(sq), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>).or_else(err).or_else(sq), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Err</span>(<span class=\"number\">3</span>).or_else(sq).or_else(err), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">9</span>));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Err</span>(<span class=\"number\">3</span>).or_else(err).or_else(err), <span class=\"prelude-val\">Err</span>(<span class=\"number\">3</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap_or\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1407\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap_or\" class=\"fn\">unwrap_or</a>(self, default: T) -&gt; T</h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value or a provided default.</p>\n<p>Arguments passed to <code>unwrap_or</code> are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or_else\" title=\"method core::result::Result::unwrap_or_else\"><code>unwrap_or_else</code></a>,\nwhich is lazily evaluated.</p>\n<h5 id=\"examples-29\"><a class=\"doc-anchor\" href=\"#examples-29\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>default = <span class=\"number\">2</span>;\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">9</span>);\n<span class=\"macro\">assert_eq!</span>(x.unwrap_or(default), <span class=\"number\">9</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"error\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.unwrap_or(default), default);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap_or_else\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1428\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap_or_else\" class=\"fn\">unwrap_or_else</a>&lt;F&gt;(self, op: F) -&gt; T<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(E) -&gt; T,</div></h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value or computes it from a closure.</p>\n<h5 id=\"examples-30\"><a class=\"doc-anchor\" href=\"#examples-30\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">fn </span>count(x: <span class=\"kw-2\">&amp;</span>str) -&gt; usize { x.len() }\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>).unwrap_or_else(count), <span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Err</span>(<span class=\"string\">\"foo\"</span>).unwrap_or_else(count), <span class=\"number\">3</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap_unchecked\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.58.0\">1.58.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1458\">source</a></span><h4 class=\"code-header\">pub unsafe fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap_unchecked\" class=\"fn\">unwrap_unchecked</a>(self) -&gt; T</h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value, consuming the <code>self</code> value,\nwithout checking that the value is not an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>.</p>\n<h5 id=\"safety\"><a class=\"doc-anchor\" href=\"#safety\">§</a>Safety</h5>\n<p>Calling this method on an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> is <em><a href=\"https://doc.rust-lang.org/reference/behavior-considered-undefined.html\">undefined behavior</a></em>.</p>\n<h5 id=\"examples-31\"><a class=\"doc-anchor\" href=\"#examples-31\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(<span class=\"kw\">unsafe </span>{ x.unwrap_unchecked() }, <span class=\"number\">2</span>);</code></pre></div>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"emergency failure\"</span>);\n<span class=\"kw\">unsafe </span>{ x.unwrap_unchecked(); } <span class=\"comment\">// Undefined behavior!</span></code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap_err_unchecked\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.58.0\">1.58.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1490\">source</a></span><h4 class=\"code-header\">pub unsafe fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap_err_unchecked\" class=\"fn\">unwrap_err_unchecked</a>(self) -&gt; E</h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value, consuming the <code>self</code> value,\nwithout checking that the value is not an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>.</p>\n<h5 id=\"safety-1\"><a class=\"doc-anchor\" href=\"#safety-1\">§</a>Safety</h5>\n<p>Calling this method on an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> is <em><a href=\"https://doc.rust-lang.org/reference/behavior-considered-undefined.html\">undefined behavior</a></em>.</p>\n<h5 id=\"examples-32\"><a class=\"doc-anchor\" href=\"#examples-32\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"kw\">unsafe </span>{ x.unwrap_err_unchecked() }; <span class=\"comment\">// Undefined behavior!</span></code></pre></div>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"emergency failure\"</span>);\n<span class=\"macro\">assert_eq!</span>(<span class=\"kw\">unsafe </span>{ x.unwrap_err_unchecked() }, <span class=\"string\">\"emergency failure\"</span>);</code></pre></div>\n</div></details></div></details>",0,"octets::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Sum%3CResult%3CU,+E%3E%3E-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.16.0\">1.16.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/iter/traits/accum.rs.html#153-155\">source</a></span><a href=\"#impl-Sum%3CResult%3CU,+E%3E%3E-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, U, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html\" title=\"trait core::iter::traits::accum::Sum\">Sum</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html\" title=\"trait core::iter::traits::accum::Sum\">Sum</a>&lt;U&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.sum\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/iter/traits/accum.rs.html#175-177\">source</a><a href=\"#method.sum\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html#tymethod.sum\" class=\"fn\">sum</a>&lt;I&gt;(iter: I) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a>&lt;Item = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;&gt;,</div></h4></section></summary><div class=\"docblock\"><p>Takes each element in the <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\"><code>Iterator</code></a>: if it is an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, no further\nelements are taken, and the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> is returned. Should no <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>\noccur, the sum of all elements is returned.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<p>This sums up every integer in a vector, rejecting the sum if a negative\nelement is encountered:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>f = |<span class=\"kw-2\">&amp;</span>x: <span class=\"kw-2\">&amp;</span>i32| <span class=\"kw\">if </span>x &lt; <span class=\"number\">0 </span>{ <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Negative element found\"</span>) } <span class=\"kw\">else </span>{ <span class=\"prelude-val\">Ok</span>(x) };\n<span class=\"kw\">let </span>v = <span class=\"macro\">vec!</span>[<span class=\"number\">1</span>, <span class=\"number\">2</span>];\n<span class=\"kw\">let </span>res: <span class=\"prelude-ty\">Result</span>&lt;i32, <span class=\"kw\">_</span>&gt; = v.iter().map(f).sum();\n<span class=\"macro\">assert_eq!</span>(res, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">3</span>));\n<span class=\"kw\">let </span>v = <span class=\"macro\">vec!</span>[<span class=\"number\">1</span>, -<span class=\"number\">2</span>];\n<span class=\"kw\">let </span>res: <span class=\"prelude-ty\">Result</span>&lt;i32, <span class=\"kw\">_</span>&gt; = v.iter().map(f).sum();\n<span class=\"macro\">assert_eq!</span>(res, <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Negative element found\"</span>));</code></pre></div>\n</div></details></div></details>","Sum<Result<U, E>>","octets::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Termination-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.61.0\">1.61.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/process.rs.html#2438\">source</a></span><a href=\"#impl-Termination-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/process/trait.Termination.html\" title=\"trait std::process::Termination\">Termination</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/process/trait.Termination.html\" title=\"trait std::process::Termination\">Termination</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.report\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/process.rs.html#2439\">source</a><a href=\"#method.report\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/std/process/trait.Termination.html#tymethod.report\" class=\"fn\">report</a>(self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/process/struct.ExitCode.html\" title=\"struct std::process::ExitCode\">ExitCode</a></h4></section></summary><div class='docblock'>Is called to get the representation of the value as status code.\nThis status code is returned to the operating system.</div></details></div></details>","Termination","octets::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Try-for-Result%3CT,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1940\">source</a><a href=\"#impl-Try-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html\" title=\"trait core::ops::try_trait::Try\">Try</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle\" open><summary><section id=\"associatedtype.Output\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Output\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Output\" class=\"associatedtype\">Output</a> = T</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2</code>)</span></div></span><div class='docblock'>The type of the value produced by <code>?</code> when <em>not</em> short-circuiting.</div></details><details class=\"toggle\" open><summary><section id=\"associatedtype.Residual\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Residual\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual\" class=\"associatedtype\">Residual</a> = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html\" title=\"enum core::convert::Infallible\">Infallible</a>, E&gt;</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2</code>)</span></div></span><div class='docblock'>The type of the value passed to <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html#tymethod.from_residual\" title=\"associated function core::ops::try_trait::FromResidual::from_residual\"><code>FromResidual::from_residual</code></a>\nas part of <code>?</code> when short-circuiting. <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_output\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1945\">source</a><a href=\"#method.from_output\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#tymethod.from_output\" class=\"fn\">from_output</a>(output: &lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt; as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html\" title=\"trait core::ops::try_trait::Try\">Try</a>&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Output\" title=\"type core::ops::try_trait::Try::Output\">Output</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2</code>)</span></div></span><div class='docblock'>Constructs the type from its <code>Output</code> type. <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#tymethod.from_output\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.branch\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1950\">source</a><a href=\"#method.branch\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#tymethod.branch\" class=\"fn\">branch</a>(\n    self\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/ops/control_flow/enum.ControlFlow.html\" title=\"enum core::ops::control_flow::ControlFlow\">ControlFlow</a>&lt;&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt; as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html\" title=\"trait core::ops::try_trait::Try\">Try</a>&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual\" title=\"type core::ops::try_trait::Try::Residual\">Residual</a>, &lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt; as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html\" title=\"trait core::ops::try_trait::Try\">Try</a>&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Output\" title=\"type core::ops::try_trait::Try::Output\">Output</a>&gt;</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2</code>)</span></div></span><div class='docblock'>Used in <code>?</code> to decide whether the operator should produce a value\n(because this returned <a href=\"https://doc.rust-lang.org/nightly/core/ops/control_flow/enum.ControlFlow.html#variant.Continue\" title=\"variant core::ops::control_flow::ControlFlow::Continue\"><code>ControlFlow::Continue</code></a>)\nor propagate a value back to the caller\n(because this returned <a href=\"https://doc.rust-lang.org/nightly/core/ops/control_flow/enum.ControlFlow.html#variant.Break\" title=\"variant core::ops::control_flow::ControlFlow::Break\"><code>ControlFlow::Break</code></a>). <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#tymethod.branch\">Read more</a></div></details></div></details>","Try","octets::Result"],["<section id=\"impl-Copy-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-Copy-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a>,</div></h3></section>","Copy","octets::Result"],["<section id=\"impl-Eq-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-Eq-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a>,</div></h3></section>","Eq","octets::Result"],["<section id=\"impl-StructuralPartialEq-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-StructuralPartialEq-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h3></section>","StructuralPartialEq","octets::Result"]],
+"qlog":[["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Clone-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1674-1677\">source</a></span><a href=\"#impl-Clone-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.clone\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1680\">source</a><a href=\"#method.clone\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone\" class=\"fn\">clone</a>(&amp;self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h4></section></summary><div class='docblock'>Returns a copy of the value. <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.clone_from\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1688\">source</a><a href=\"#method.clone_from\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from\" class=\"fn\">clone_from</a>(&amp;mut self, source: &amp;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from\">Read more</a></div></details></div></details>","Clone","qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Debug-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-Debug-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.fmt\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a><a href=\"#method.fmt\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt\" class=\"fn\">fmt</a>(&amp;self, f: &amp;mut <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html\" title=\"struct core::fmt::Formatter\">Formatter</a>&lt;'_&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.unit.html\">()</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html\" title=\"struct core::fmt::Error\">Error</a>&gt;</h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt\">Read more</a></div></details></div></details>","Debug","qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Deserialize%3C'de%3E-for-Result%3CT,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/de/impls.rs.html#2880-2883\">source</a><a href=\"#impl-Deserialize%3C'de%3E-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'de, T, E&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt;,\n    E: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.deserialize\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/de/impls.rs.html#2885-2887\">source</a><a href=\"#method.deserialize\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize\" class=\"fn\">deserialize</a>&lt;D&gt;(\n    deserializer: D\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;, &lt;D as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html\" title=\"trait serde::de::Deserializer\">Deserializer</a>&lt;'de&gt;&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error\" title=\"type serde::de::Deserializer::Error\">Error</a>&gt;<div class=\"where\">where\n    D: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html\" title=\"trait serde::de::Deserializer\">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize\">Read more</a></div></details></div></details>","Deserialize<'de>","qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-DeserializeAs%3C'de,+Result%3CT,+E%3E%3E-for-Result%3CTAs,+EAs%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde_with/3.7.0/src/serde_with/de/impls.rs.html#311-314\">source</a><a href=\"#impl-DeserializeAs%3C'de,+Result%3CT,+E%3E%3E-for-Result%3CTAs,+EAs%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'de, T, TAs, E, EAs&gt; <a class=\"trait\" href=\"https://docs.rs/serde_with/3.7.0/serde_with/de/trait.DeserializeAs.html\" title=\"trait serde_with::de::DeserializeAs\">DeserializeAs</a>&lt;'de, <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;TAs, EAs&gt;<div class=\"where\">where\n    TAs: <a class=\"trait\" href=\"https://docs.rs/serde_with/3.7.0/serde_with/de/trait.DeserializeAs.html\" title=\"trait serde_with::de::DeserializeAs\">DeserializeAs</a>&lt;'de, T&gt;,\n    EAs: <a class=\"trait\" href=\"https://docs.rs/serde_with/3.7.0/serde_with/de/trait.DeserializeAs.html\" title=\"trait serde_with::de::DeserializeAs\">DeserializeAs</a>&lt;'de, E&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.deserialize_as\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde_with/3.7.0/src/serde_with/de/impls.rs.html#316-318\">source</a><a href=\"#method.deserialize_as\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://docs.rs/serde_with/3.7.0/serde_with/de/trait.DeserializeAs.html#tymethod.deserialize_as\" class=\"fn\">deserialize_as</a>&lt;D&gt;(\n    deserializer: D\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;, &lt;D as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html\" title=\"trait serde::de::Deserializer\">Deserializer</a>&lt;'de&gt;&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error\" title=\"type serde::de::Deserializer::Error\">Error</a>&gt;<div class=\"where\">where\n    D: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html\" title=\"trait serde::de::Deserializer\">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer.</div></details></div></details>","DeserializeAs<'de, Result<T, E>>","qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FromIterator%3CResult%3CA,+E%3E%3E-for-Result%3CV,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1890\">source</a></span><a href=\"#impl-FromIterator%3CResult%3CA,+E%3E%3E-for-Result%3CV,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;A, E, V&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html\" title=\"trait core::iter::traits::collect::FromIterator\">FromIterator</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;A, E&gt;&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;V, E&gt;<div class=\"where\">where\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html\" title=\"trait core::iter::traits::collect::FromIterator\">FromIterator</a>&lt;A&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_iter\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1934\">source</a><a href=\"#method.from_iter\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter\" class=\"fn\">from_iter</a>&lt;I&gt;(iter: I) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;V, E&gt;<div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;A, E&gt;&gt;,</div></h4></section></summary><div class=\"docblock\"><p>Takes each element in the <code>Iterator</code>: if it is an <code>Err</code>, no further\nelements are taken, and the <code>Err</code> is returned. Should no <code>Err</code> occur, a\ncontainer with the values of each <code>Result</code> is returned.</p>\n<p>Here is an example which increments every integer in a vector,\nchecking for overflow:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>v = <span class=\"macro\">vec!</span>[<span class=\"number\">1</span>, <span class=\"number\">2</span>];\n<span class=\"kw\">let </span>res: <span class=\"prelude-ty\">Result</span>&lt;Vec&lt;u32&gt;, <span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str&gt; = v.iter().map(|x: <span class=\"kw-2\">&amp;</span>u32|\n    x.checked_add(<span class=\"number\">1</span>).ok_or(<span class=\"string\">\"Overflow!\"</span>)\n).collect();\n<span class=\"macro\">assert_eq!</span>(res, <span class=\"prelude-val\">Ok</span>(<span class=\"macro\">vec!</span>[<span class=\"number\">2</span>, <span class=\"number\">3</span>]));</code></pre></div>\n<p>Here is another example that tries to subtract one from another list\nof integers, this time checking for underflow:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>v = <span class=\"macro\">vec!</span>[<span class=\"number\">1</span>, <span class=\"number\">2</span>, <span class=\"number\">0</span>];\n<span class=\"kw\">let </span>res: <span class=\"prelude-ty\">Result</span>&lt;Vec&lt;u32&gt;, <span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str&gt; = v.iter().map(|x: <span class=\"kw-2\">&amp;</span>u32|\n    x.checked_sub(<span class=\"number\">1</span>).ok_or(<span class=\"string\">\"Underflow!\"</span>)\n).collect();\n<span class=\"macro\">assert_eq!</span>(res, <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Underflow!\"</span>));</code></pre></div>\n<p>Here is a variation on the previous example, showing that no\nfurther elements are taken from <code>iter</code> after the first <code>Err</code>.</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>v = <span class=\"macro\">vec!</span>[<span class=\"number\">3</span>, <span class=\"number\">2</span>, <span class=\"number\">1</span>, <span class=\"number\">10</span>];\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>shared = <span class=\"number\">0</span>;\n<span class=\"kw\">let </span>res: <span class=\"prelude-ty\">Result</span>&lt;Vec&lt;u32&gt;, <span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str&gt; = v.iter().map(|x: <span class=\"kw-2\">&amp;</span>u32| {\n    shared += x;\n    x.checked_sub(<span class=\"number\">2</span>).ok_or(<span class=\"string\">\"Underflow!\"</span>)\n}).collect();\n<span class=\"macro\">assert_eq!</span>(res, <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Underflow!\"</span>));\n<span class=\"macro\">assert_eq!</span>(shared, <span class=\"number\">6</span>);</code></pre></div>\n<p>Since the third element caused an underflow, no further elements were taken,\nso the final value of <code>shared</code> is 6 (= <code>3 + 2 + 1</code>), not 16.</p>\n</div></details></div></details>","FromIterator<Result<A, E>>","qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FromResidual%3CResult%3CInfallible,+E%3E%3E-for-Result%3CT,+F%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1959\">source</a><a href=\"#impl-FromResidual%3CResult%3CInfallible,+E%3E%3E-for-Result%3CT,+F%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E, F&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html\" title=\"trait core::ops::try_trait::FromResidual\">FromResidual</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html\" title=\"enum core::convert::Infallible\">Infallible</a>, E&gt;&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;E&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_residual\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1962\">source</a><a href=\"#method.from_residual\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html#tymethod.from_residual\" class=\"fn\">from_residual</a>(residual: <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html\" title=\"enum core::convert::Infallible\">Infallible</a>, E&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2</code>)</span></div></span><div class='docblock'>Constructs the type from a compatible <code>Residual</code> type. <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html#tymethod.from_residual\">Read more</a></div></details></div></details>","FromResidual<Result<Infallible, E>>","qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FromResidual%3CYeet%3CE%3E%3E-for-Result%3CT,+F%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1970\">source</a><a href=\"#impl-FromResidual%3CYeet%3CE%3E%3E-for-Result%3CT,+F%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E, F&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html\" title=\"trait core::ops::try_trait::FromResidual\">FromResidual</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/struct.Yeet.html\" title=\"struct core::ops::try_trait::Yeet\">Yeet</a>&lt;E&gt;&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;E&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_residual\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1972\">source</a><a href=\"#method.from_residual\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html#tymethod.from_residual\" class=\"fn\">from_residual</a>(_: <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/struct.Yeet.html\" title=\"struct core::ops::try_trait::Yeet\">Yeet</a>&lt;E&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2</code>)</span></div></span><div class='docblock'>Constructs the type from a compatible <code>Residual</code> type. <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html#tymethod.from_residual\">Read more</a></div></details></div></details>","FromResidual<Yeet<E>>","qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Hash-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-Hash-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.hash\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a><a href=\"#method.hash\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash\" class=\"fn\">hash</a>&lt;__H&gt;(&amp;self, state: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut __H</a>)<div class=\"where\">where\n    __H: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\">Hasher</a>,</div></h4></section></summary><div class='docblock'>Feeds this value into the given <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\"><code>Hasher</code></a>. <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.hash_slice\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.3.0\">1.3.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#238-240\">source</a></span><a href=\"#method.hash_slice\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice\" class=\"fn\">hash_slice</a>&lt;H&gt;(data: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[Self]</a>, state: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut H</a>)<div class=\"where\">where\n    H: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\">Hasher</a>,\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\"><code>Hasher</code></a>. <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice\">Read more</a></div></details></div></details>","Hash","qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-IntoIterator-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1698\">source</a></span><a href=\"#impl-IntoIterator-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_iter\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1718\">source</a><a href=\"#method.into_iter\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter\" class=\"fn\">into_iter</a>(self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/result/struct.IntoIter.html\" title=\"struct core::result::IntoIter\">IntoIter</a>&lt;T&gt;</h4></section></summary><div class=\"docblock\"><p>Returns a consuming iterator over the possibly contained value.</p>\n<p>The iterator yields one value if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Result::Ok</code></a>, otherwise none.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">5</span>);\n<span class=\"kw\">let </span>v: Vec&lt;u32&gt; = x.into_iter().collect();\n<span class=\"macro\">assert_eq!</span>(v, [<span class=\"number\">5</span>]);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"nothing!\"</span>);\n<span class=\"kw\">let </span>v: Vec&lt;u32&gt; = x.into_iter().collect();\n<span class=\"macro\">assert_eq!</span>(v, []);</code></pre></div>\n</div></details><details class=\"toggle\" open><summary><section id=\"associatedtype.Item\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Item\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = T</h4></section></summary><div class='docblock'>The type of the elements being iterated over.</div></details><details class=\"toggle\" open><summary><section id=\"associatedtype.IntoIter\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.IntoIter\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter\" class=\"associatedtype\">IntoIter</a> = <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/result/struct.IntoIter.html\" title=\"struct core::result::IntoIter\">IntoIter</a>&lt;T&gt;</h4></section></summary><div class='docblock'>Which kind of iterator are we turning this into?</div></details></div></details>","IntoIterator","qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Ord-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-Ord-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.cmp\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a><a href=\"#method.cmp\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp\" class=\"fn\">cmp</a>(&amp;self, other: &amp;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html\" title=\"enum core::cmp::Ordering\">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href=\"https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html\" title=\"enum core::cmp::Ordering\"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.max\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.21.0\">1.21.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#856-858\">source</a></span><a href=\"#method.max\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max\" class=\"fn\">max</a>(self, other: Self) -&gt; Self<div class=\"where\">where\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.min\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.21.0\">1.21.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#877-879\">source</a></span><a href=\"#method.min\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min\" class=\"fn\">min</a>(self, other: Self) -&gt; Self<div class=\"where\">where\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.clamp\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.50.0\">1.50.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#902-905\">source</a></span><a href=\"#method.clamp\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp\" class=\"fn\">clamp</a>(self, min: Self, max: Self) -&gt; Self<div class=\"where\">where\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>,</div></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp\">Read more</a></div></details></div></details>","Ord","qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-PartialEq-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-PartialEq-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.eq\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a><a href=\"#method.eq\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq\" class=\"fn\">eq</a>(&amp;self, other: &amp;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used\nby <code>==</code>.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.ne\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263\">source</a></span><a href=\"#method.ne\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne\" class=\"fn\">ne</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.</div></details></div></details>","PartialEq","qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-PartialOrd-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-PartialOrd-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.partial_cmp\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a><a href=\"#method.partial_cmp\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp\" class=\"fn\">partial_cmp</a>(&amp;self, other: &amp;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html\" title=\"enum core::cmp::Ordering\">Ordering</a>&gt;</h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.lt\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1179\">source</a></span><a href=\"#method.lt\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt\" class=\"fn\">lt</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code>&lt;</code> operator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.le\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1197\">source</a></span><a href=\"#method.le\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le\" class=\"fn\">le</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>&lt;=</code>\noperator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.gt\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1214\">source</a></span><a href=\"#method.gt\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt\" class=\"fn\">gt</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>&gt;</code> operator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.ge\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1232\">source</a></span><a href=\"#method.ge\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge\" class=\"fn\">ge</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>&gt;=</code>\noperator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge\">Read more</a></div></details></div></details>","PartialOrd","qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Product%3CResult%3CU,+E%3E%3E-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.16.0\">1.16.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/iter/traits/accum.rs.html#184-186\">source</a></span><a href=\"#impl-Product%3CResult%3CU,+E%3E%3E-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, U, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Product.html\" title=\"trait core::iter::traits::accum::Product\">Product</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Product.html\" title=\"trait core::iter::traits::accum::Product\">Product</a>&lt;U&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.product\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/iter/traits/accum.rs.html#205-207\">source</a><a href=\"#method.product\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Product.html#tymethod.product\" class=\"fn\">product</a>&lt;I&gt;(iter: I) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a>&lt;Item = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;&gt;,</div></h4></section></summary><div class=\"docblock\"><p>Takes each element in the <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\"><code>Iterator</code></a>: if it is an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, no further\nelements are taken, and the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> is returned. Should no <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>\noccur, the product of all elements is returned.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<p>This multiplies each number in a vector of strings,\nif a string could not be parsed the operation returns <code>Err</code>:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>nums = <span class=\"macro\">vec!</span>[<span class=\"string\">\"5\"</span>, <span class=\"string\">\"10\"</span>, <span class=\"string\">\"1\"</span>, <span class=\"string\">\"2\"</span>];\n<span class=\"kw\">let </span>total: <span class=\"prelude-ty\">Result</span>&lt;usize, <span class=\"kw\">_</span>&gt; = nums.iter().map(|w| w.parse::&lt;usize&gt;()).product();\n<span class=\"macro\">assert_eq!</span>(total, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">100</span>));\n<span class=\"kw\">let </span>nums = <span class=\"macro\">vec!</span>[<span class=\"string\">\"5\"</span>, <span class=\"string\">\"10\"</span>, <span class=\"string\">\"one\"</span>, <span class=\"string\">\"2\"</span>];\n<span class=\"kw\">let </span>total: <span class=\"prelude-ty\">Result</span>&lt;usize, <span class=\"kw\">_</span>&gt; = nums.iter().map(|w| w.parse::&lt;usize&gt;()).product();\n<span class=\"macro\">assert!</span>(total.is_err());</code></pre></div>\n</div></details></div></details>","Product<Result<U, E>>","qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Residual%3CT%3E-for-Result%3CInfallible,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1978\">source</a><a href=\"#impl-Residual%3CT%3E-for-Result%3CInfallible,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html\" title=\"trait core::ops::try_trait::Residual\">Residual</a>&lt;T&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html\" title=\"enum core::convert::Infallible\">Infallible</a>, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle\" open><summary><section id=\"associatedtype.TryType\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.TryType\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html#associatedtype.TryType\" class=\"associatedtype\">TryType</a> = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2_residual</code>)</span></div></span><div class='docblock'>The “return” type of this meta-function.</div></details></div></details>","Residual<T>","qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Result%3C%26T,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1500\">source</a><a href=\"#impl-Result%3C%26T,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.copied\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.59.0\">1.59.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1515-1517\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.copied\" class=\"fn\">copied</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a>,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;&amp;T, E&gt;</code> to a <code>Result&lt;T, E&gt;</code> by copying the contents of the\n<code>Ok</code> part.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>val = <span class=\"number\">12</span>;\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>i32, i32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;</span>val);\n<span class=\"macro\">assert_eq!</span>(x, <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;</span><span class=\"number\">12</span>));\n<span class=\"kw\">let </span>copied = x.copied();\n<span class=\"macro\">assert_eq!</span>(copied, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">12</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.cloned\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.59.0\">1.59.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1536-1538\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.cloned\" class=\"fn\">cloned</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;&amp;T, E&gt;</code> to a <code>Result&lt;T, E&gt;</code> by cloning the contents of the\n<code>Ok</code> part.</p>\n<h5 id=\"examples-1\"><a class=\"doc-anchor\" href=\"#examples-1\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>val = <span class=\"number\">12</span>;\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>i32, i32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;</span>val);\n<span class=\"macro\">assert_eq!</span>(x, <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;</span><span class=\"number\">12</span>));\n<span class=\"kw\">let </span>cloned = x.cloned();\n<span class=\"macro\">assert_eq!</span>(cloned, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">12</span>));</code></pre></div>\n</div></details></div></details>",0,"qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Result%3C%26mut+T,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1544\">source</a><a href=\"#impl-Result%3C%26mut+T,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut T</a>, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.copied\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.59.0\">1.59.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1559-1561\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.copied\" class=\"fn\">copied</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a>,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;&amp;mut T, E&gt;</code> to a <code>Result&lt;T, E&gt;</code> by copying the contents of the\n<code>Ok</code> part.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>val = <span class=\"number\">12</span>;\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;mut </span>i32, i32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;mut </span>val);\n<span class=\"macro\">assert_eq!</span>(x, <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;mut </span><span class=\"number\">12</span>));\n<span class=\"kw\">let </span>copied = x.copied();\n<span class=\"macro\">assert_eq!</span>(copied, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">12</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.cloned\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.59.0\">1.59.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1580-1582\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.cloned\" class=\"fn\">cloned</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;&amp;mut T, E&gt;</code> to a <code>Result&lt;T, E&gt;</code> by cloning the contents of the\n<code>Ok</code> part.</p>\n<h5 id=\"examples-1\"><a class=\"doc-anchor\" href=\"#examples-1\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>val = <span class=\"number\">12</span>;\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;mut </span>i32, i32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;mut </span>val);\n<span class=\"macro\">assert_eq!</span>(x, <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;mut </span><span class=\"number\">12</span>));\n<span class=\"kw\">let </span>cloned = x.cloned();\n<span class=\"macro\">assert_eq!</span>(cloned, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">12</span>));</code></pre></div>\n</div></details></div></details>",0,"qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Result%3COption%3CT%3E,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1588\">source</a><a href=\"#impl-Result%3COption%3CT%3E,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;T&gt;, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.transpose\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.33.0, const unstable\">1.33.0 (const: <a href=\"https://github.com/rust-lang/rust/issues/82814\" title=\"Tracking issue for const_result\">unstable</a>)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1607\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.transpose\" class=\"fn\">transpose</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;&gt;</h4></section></summary><div class=\"docblock\"><p>Transposes a <code>Result</code> of an <code>Option</code> into an <code>Option</code> of a <code>Result</code>.</p>\n<p><code>Ok(None)</code> will be mapped to <code>None</code>.\n<code>Ok(Some(_))</code> and <code>Err(_)</code> will be mapped to <code>Some(Ok(_))</code> and <code>Some(Err(_))</code>.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#[derive(Debug, Eq, PartialEq)]\n</span><span class=\"kw\">struct </span>SomeErr;\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"prelude-ty\">Option</span>&lt;i32&gt;, SomeErr&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"prelude-val\">Some</span>(<span class=\"number\">5</span>));\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Option</span>&lt;<span class=\"prelude-ty\">Result</span>&lt;i32, SomeErr&gt;&gt; = <span class=\"prelude-val\">Some</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"number\">5</span>));\n<span class=\"macro\">assert_eq!</span>(x.transpose(), y);</code></pre></div>\n</div></details></div></details>",0,"qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Result%3CResult%3CT,+E%3E,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1616\">source</a><a href=\"#impl-Result%3CResult%3CT,+E%3E,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.flatten\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1643\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.flatten\" class=\"fn\">flatten</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>result_flattening</code>)</span></div></span></summary><div class=\"docblock\"><p>Converts from <code>Result&lt;Result&lt;T, E&gt;, E&gt;</code> to <code>Result&lt;T, E&gt;</code></p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(result_flattening)]\n</span><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str, u32&gt;, u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>), x.flatten());\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str, u32&gt;, u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"prelude-val\">Err</span>(<span class=\"number\">6</span>));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Err</span>(<span class=\"number\">6</span>), x.flatten());\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str, u32&gt;, u32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"number\">6</span>);\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Err</span>(<span class=\"number\">6</span>), x.flatten());</code></pre></div>\n<p>Flattening only removes one level of nesting at a time:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(result_flattening)]\n</span><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"prelude-ty\">Result</span>&lt;<span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str, u32&gt;, u32&gt;, u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>)));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>)), x.flatten());\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>), x.flatten().flatten());</code></pre></div>\n</div></details></div></details>",0,"qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Result%3CT,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#518\">source</a><a href=\"#impl-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.is_ok\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0, const since 1.48.0\">1.0.0 (const: 1.48.0)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#538\">source</a></span><h4 class=\"code-header\">pub const fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.is_ok\" class=\"fn\">is_ok</a>(&amp;self) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class=\"docblock\"><p>Returns <code>true</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;i32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(-<span class=\"number\">3</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_ok(), <span class=\"bool-val\">true</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;i32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Some error message\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_ok(), <span class=\"bool-val\">false</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.is_ok_and\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.70.0\">1.70.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#559\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.is_ok_and\" class=\"fn\">is_ok_and</a>(self, f: impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(T) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class=\"docblock\"><p>Returns <code>true</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> and the value inside of it matches a predicate.</p>\n<h5 id=\"examples-1\"><a class=\"doc-anchor\" href=\"#examples-1\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_ok_and(|x| x &gt; <span class=\"number\">1</span>), <span class=\"bool-val\">true</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">0</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_ok_and(|x| x &gt; <span class=\"number\">1</span>), <span class=\"bool-val\">false</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"hey\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_ok_and(|x| x &gt; <span class=\"number\">1</span>), <span class=\"bool-val\">false</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.is_err\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0, const since 1.48.0\">1.0.0 (const: 1.48.0)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#581\">source</a></span><h4 class=\"code-header\">pub const fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.is_err\" class=\"fn\">is_err</a>(&amp;self) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class=\"docblock\"><p>Returns <code>true</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>.</p>\n<h5 id=\"examples-2\"><a class=\"doc-anchor\" href=\"#examples-2\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;i32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(-<span class=\"number\">3</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_err(), <span class=\"bool-val\">false</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;i32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Some error message\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_err(), <span class=\"bool-val\">true</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.is_err_and\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.70.0\">1.70.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#604\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.is_err_and\" class=\"fn\">is_err_and</a>(self, f: impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(E) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class=\"docblock\"><p>Returns <code>true</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> and the value inside of it matches a predicate.</p>\n<h5 id=\"examples-3\"><a class=\"doc-anchor\" href=\"#examples-3\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::io::{Error, ErrorKind};\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, Error&gt; = <span class=\"prelude-val\">Err</span>(Error::new(ErrorKind::NotFound, <span class=\"string\">\"!\"</span>));\n<span class=\"macro\">assert_eq!</span>(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), <span class=\"bool-val\">true</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, Error&gt; = <span class=\"prelude-val\">Err</span>(Error::new(ErrorKind::PermissionDenied, <span class=\"string\">\"!\"</span>));\n<span class=\"macro\">assert_eq!</span>(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), <span class=\"bool-val\">false</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, Error&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">123</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), <span class=\"bool-val\">false</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.ok\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#631\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.ok\" class=\"fn\">ok</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;T&gt;</h4></section></summary><div class=\"docblock\"><p>Converts from <code>Result&lt;T, E&gt;</code> to <a href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\"><code>Option&lt;T&gt;</code></a>.</p>\n<p>Converts <code>self</code> into an <a href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\"><code>Option&lt;T&gt;</code></a>, consuming <code>self</code>,\nand discarding the error, if any.</p>\n<h5 id=\"examples-4\"><a class=\"doc-anchor\" href=\"#examples-4\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.ok(), <span class=\"prelude-val\">Some</span>(<span class=\"number\">2</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Nothing here\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.ok(), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.err\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#654\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.err\" class=\"fn\">err</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;E&gt;</h4></section></summary><div class=\"docblock\"><p>Converts from <code>Result&lt;T, E&gt;</code> to <a href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\"><code>Option&lt;E&gt;</code></a>.</p>\n<p>Converts <code>self</code> into an <a href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\"><code>Option&lt;E&gt;</code></a>, consuming <code>self</code>,\nand discarding the success value, if any.</p>\n<h5 id=\"examples-5\"><a class=\"doc-anchor\" href=\"#examples-5\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.err(), <span class=\"prelude-val\">None</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Nothing here\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.err(), <span class=\"prelude-val\">Some</span>(<span class=\"string\">\"Nothing here\"</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_ref\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0, const since 1.48.0\">1.0.0 (const: 1.48.0)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#682\">source</a></span><h4 class=\"code-header\">pub const fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.as_ref\" class=\"fn\">as_ref</a>(&amp;self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;E</a>&gt;</h4></section></summary><div class=\"docblock\"><p>Converts from <code>&amp;Result&lt;T, E&gt;</code> to <code>Result&lt;&amp;T, &amp;E&gt;</code>.</p>\n<p>Produces a new <code>Result</code>, containing a reference\ninto the original, leaving the original in place.</p>\n<h5 id=\"examples-6\"><a class=\"doc-anchor\" href=\"#examples-6\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.as_ref(), <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Error\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.as_ref(), <span class=\"prelude-val\">Err</span>(<span class=\"kw-2\">&amp;</span><span class=\"string\">\"Error\"</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_mut\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0, const unstable\">1.0.0 (const: <a href=\"https://github.com/rust-lang/rust/issues/82814\" title=\"Tracking issue for const_result\">unstable</a>)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#712\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.as_mut\" class=\"fn\">as_mut</a>(&amp;mut self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut T</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut E</a>&gt;</h4></section></summary><div class=\"docblock\"><p>Converts from <code>&amp;mut Result&lt;T, E&gt;</code> to <code>Result&lt;&amp;mut T, &amp;mut E&gt;</code>.</p>\n<h5 id=\"examples-7\"><a class=\"doc-anchor\" href=\"#examples-7\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">fn </span>mutate(r: <span class=\"kw-2\">&amp;mut </span><span class=\"prelude-ty\">Result</span>&lt;i32, i32&gt;) {\n    <span class=\"kw\">match </span>r.as_mut() {\n        <span class=\"prelude-val\">Ok</span>(v) =&gt; <span class=\"kw-2\">*</span>v = <span class=\"number\">42</span>,\n        <span class=\"prelude-val\">Err</span>(e) =&gt; <span class=\"kw-2\">*</span>e = <span class=\"number\">0</span>,\n    }\n}\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>x: <span class=\"prelude-ty\">Result</span>&lt;i32, i32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\nmutate(<span class=\"kw-2\">&amp;mut </span>x);\n<span class=\"macro\">assert_eq!</span>(x.unwrap(), <span class=\"number\">42</span>);\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>x: <span class=\"prelude-ty\">Result</span>&lt;i32, i32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"number\">13</span>);\nmutate(<span class=\"kw-2\">&amp;mut </span>x);\n<span class=\"macro\">assert_eq!</span>(x.unwrap_err(), <span class=\"number\">0</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.map\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#744\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.map\" class=\"fn\">map</a>&lt;U, F&gt;(self, op: F) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(T) -&gt; U,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;T, E&gt;</code> to <code>Result&lt;U, E&gt;</code> by applying a function to a\ncontained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value, leaving an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value untouched.</p>\n<p>This function can be used to compose the results of two functions.</p>\n<h5 id=\"examples-8\"><a class=\"doc-anchor\" href=\"#examples-8\">§</a>Examples</h5>\n<p>Print the numbers on each line of a string multiplied by two.</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>line = <span class=\"string\">\"1\\n2\\n3\\n4\\n\"</span>;\n\n<span class=\"kw\">for </span>num <span class=\"kw\">in </span>line.lines() {\n    <span class=\"kw\">match </span>num.parse::&lt;i32&gt;().map(|i| i * <span class=\"number\">2</span>) {\n        <span class=\"prelude-val\">Ok</span>(n) =&gt; <span class=\"macro\">println!</span>(<span class=\"string\">\"{n}\"</span>),\n        <span class=\"prelude-val\">Err</span>(..) =&gt; {}\n    }\n}</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.map_or\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.41.0\">1.41.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#772\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.map_or\" class=\"fn\">map_or</a>&lt;U, F&gt;(self, default: U, f: F) -&gt; U<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(T) -&gt; U,</div></h4></section></summary><div class=\"docblock\"><p>Returns the provided default (if <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>), or\napplies a function to the contained value (if <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>).</p>\n<p>Arguments passed to <code>map_or</code> are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.map_or_else\" title=\"method core::result::Result::map_or_else\"><code>map_or_else</code></a>,\nwhich is lazily evaluated.</p>\n<h5 id=\"examples-9\"><a class=\"doc-anchor\" href=\"#examples-9\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw\">_</span>, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"foo\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.map_or(<span class=\"number\">42</span>, |v| v.len()), <span class=\"number\">3</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw\">_</span>&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"bar\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.map_or(<span class=\"number\">42</span>, |v| v.len()), <span class=\"number\">42</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.map_or_else\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.41.0\">1.41.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#799\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.map_or_else\" class=\"fn\">map_or_else</a>&lt;U, D, F&gt;(self, default: D, f: F) -&gt; U<div class=\"where\">where\n    D: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(E) -&gt; U,\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(T) -&gt; U,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;T, E&gt;</code> to <code>U</code> by applying fallback function <code>default</code> to\na contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value, or function <code>f</code> to a contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value.</p>\n<p>This function can be used to unpack a successful result\nwhile handling an error.</p>\n<h5 id=\"examples-10\"><a class=\"doc-anchor\" href=\"#examples-10\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>k = <span class=\"number\">21</span>;\n\n<span class=\"kw\">let </span>x : <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw\">_</span>, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"foo\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.map_or_else(|e| k * <span class=\"number\">2</span>, |v| v.len()), <span class=\"number\">3</span>);\n\n<span class=\"kw\">let </span>x : <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw\">_</span>&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"bar\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.map_or_else(|e| k * <span class=\"number\">2</span>, |v| v.len()), <span class=\"number\">42</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.map_err\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#826\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.map_err\" class=\"fn\">map_err</a>&lt;F, O&gt;(self, op: O) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;<div class=\"where\">where\n    O: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(E) -&gt; F,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;T, E&gt;</code> to <code>Result&lt;T, F&gt;</code> by applying a function to a\ncontained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value, leaving an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value untouched.</p>\n<p>This function can be used to pass through a successful result while handling\nan error.</p>\n<h5 id=\"examples-11\"><a class=\"doc-anchor\" href=\"#examples-11\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">fn </span>stringify(x: u32) -&gt; String { <span class=\"macro\">format!</span>(<span class=\"string\">\"error code: {x}\"</span>) }\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.map_err(stringify), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, u32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"number\">13</span>);\n<span class=\"macro\">assert_eq!</span>(x.map_err(stringify), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"error code: 13\"</span>.to_string()));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.inspect\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.76.0\">1.76.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#848\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.inspect\" class=\"fn\">inspect</a>&lt;F&gt;(self, f: F) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>),</div></h4></section></summary><div class=\"docblock\"><p>Calls a function with a reference to the contained value if <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>.</p>\n<p>Returns the original result.</p>\n<h5 id=\"examples-12\"><a class=\"doc-anchor\" href=\"#examples-12\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: u8 = <span class=\"string\">\"4\"\n    </span>.parse::&lt;u8&gt;()\n    .inspect(|x| <span class=\"macro\">println!</span>(<span class=\"string\">\"original: {x}\"</span>))\n    .map(|x| x.pow(<span class=\"number\">3</span>))\n    .expect(<span class=\"string\">\"failed to parse number\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.inspect_err\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.76.0\">1.76.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#872\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.inspect_err\" class=\"fn\">inspect_err</a>&lt;F&gt;(self, f: F) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;E</a>),</div></h4></section></summary><div class=\"docblock\"><p>Calls a function with a reference to the contained value if <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>.</p>\n<p>Returns the original result.</p>\n<h5 id=\"examples-13\"><a class=\"doc-anchor\" href=\"#examples-13\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::{fs, io};\n\n<span class=\"kw\">fn </span>read() -&gt; io::Result&lt;String&gt; {\n    fs::read_to_string(<span class=\"string\">\"address.txt\"</span>)\n        .inspect_err(|e| <span class=\"macro\">eprintln!</span>(<span class=\"string\">\"failed to read file: {e}\"</span>))\n}</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_deref\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.47.0\">1.47.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#898-900\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.as_deref\" class=\"fn\">as_deref</a>(&amp;self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;&amp;&lt;T as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a>&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target\" title=\"type core::ops::deref::Deref::Target\">Target</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;E</a>&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a>,</div></h4></section></summary><div class=\"docblock\"><p>Converts from <code>Result&lt;T, E&gt;</code> (or <code>&amp;Result&lt;T, E&gt;</code>) to <code>Result&lt;&amp;&lt;T as Deref&gt;::Target, &amp;E&gt;</code>.</p>\n<p>Coerces the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> variant of the original <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\"><code>Result</code></a> via <a href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\"><code>Deref</code></a>\nand returns the new <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\"><code>Result</code></a>.</p>\n<h5 id=\"examples-14\"><a class=\"doc-anchor\" href=\"#examples-14\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;String, u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>.to_string());\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw-2\">&amp;</span>u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.as_deref(), y);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;String, u32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"number\">42</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw-2\">&amp;</span>u32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"kw-2\">&amp;</span><span class=\"number\">42</span>);\n<span class=\"macro\">assert_eq!</span>(x.as_deref(), y);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_deref_mut\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.47.0\">1.47.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#925-927\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.as_deref_mut\" class=\"fn\">as_deref_mut</a>(&amp;mut self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;&amp;mut &lt;T as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a>&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target\" title=\"type core::ops::deref::Deref::Target\">Target</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut E</a>&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.DerefMut.html\" title=\"trait core::ops::deref::DerefMut\">DerefMut</a>,</div></h4></section></summary><div class=\"docblock\"><p>Converts from <code>Result&lt;T, E&gt;</code> (or <code>&amp;mut Result&lt;T, E&gt;</code>) to <code>Result&lt;&amp;mut &lt;T as DerefMut&gt;::Target, &amp;mut E&gt;</code>.</p>\n<p>Coerces the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> variant of the original <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\"><code>Result</code></a> via <a href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.DerefMut.html\" title=\"trait core::ops::deref::DerefMut\"><code>DerefMut</code></a>\nand returns the new <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\"><code>Result</code></a>.</p>\n<h5 id=\"examples-15\"><a class=\"doc-anchor\" href=\"#examples-15\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = <span class=\"string\">\"HELLO\"</span>.to_string();\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>x: <span class=\"prelude-ty\">Result</span>&lt;String, u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>.to_string());\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;mut </span>str, <span class=\"kw-2\">&amp;mut </span>u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;mut </span>s);\n<span class=\"macro\">assert_eq!</span>(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>i = <span class=\"number\">42</span>;\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>x: <span class=\"prelude-ty\">Result</span>&lt;String, u32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"number\">42</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;mut </span>str, <span class=\"kw-2\">&amp;mut </span>u32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"kw-2\">&amp;mut </span>i);\n<span class=\"macro\">assert_eq!</span>(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.iter\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#951\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.iter\" class=\"fn\">iter</a>(&amp;self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/result/struct.Iter.html\" title=\"struct core::result::Iter\">Iter</a>&lt;'_, T&gt;</h4></section></summary><div class=\"docblock\"><p>Returns an iterator over the possibly contained value.</p>\n<p>The iterator yields one value if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Result::Ok</code></a>, otherwise none.</p>\n<h5 id=\"examples-16\"><a class=\"doc-anchor\" href=\"#examples-16\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">7</span>);\n<span class=\"macro\">assert_eq!</span>(x.iter().next(), <span class=\"prelude-val\">Some</span>(<span class=\"kw-2\">&amp;</span><span class=\"number\">7</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"nothing!\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.iter().next(), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.iter_mut\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#974\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.iter_mut\" class=\"fn\">iter_mut</a>(&amp;mut self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/result/struct.IterMut.html\" title=\"struct core::result::IterMut\">IterMut</a>&lt;'_, T&gt;</h4></section></summary><div class=\"docblock\"><p>Returns a mutable iterator over the possibly contained value.</p>\n<p>The iterator yields one value if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Result::Ok</code></a>, otherwise none.</p>\n<h5 id=\"examples-17\"><a class=\"doc-anchor\" href=\"#examples-17\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">7</span>);\n<span class=\"kw\">match </span>x.iter_mut().next() {\n    <span class=\"prelude-val\">Some</span>(v) =&gt; <span class=\"kw-2\">*</span>v = <span class=\"number\">40</span>,\n    <span class=\"prelude-val\">None </span>=&gt; {},\n}\n<span class=\"macro\">assert_eq!</span>(x, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">40</span>));\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"nothing!\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.iter_mut().next(), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.expect\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.4.0\">1.4.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1028-1030\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.expect\" class=\"fn\">expect</a>(self, msg: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>) -&gt; T<div class=\"where\">where\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value, consuming the <code>self</code> value.</p>\n<p>Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>\ncase explicitly, or call <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or\" title=\"method core::result::Result::unwrap_or\"><code>unwrap_or</code></a>, <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or_else\" title=\"method core::result::Result::unwrap_or_else\"><code>unwrap_or_else</code></a>, or\n<a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or_default\" title=\"method core::result::Result::unwrap_or_default\"><code>unwrap_or_default</code></a>.</p>\n<h5 id=\"panics\"><a class=\"doc-anchor\" href=\"#panics\">§</a>Panics</h5>\n<p>Panics if the value is an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, with a panic message including the\npassed message, and the content of the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>.</p>\n<h5 id=\"examples-18\"><a class=\"doc-anchor\" href=\"#examples-18\">§</a>Examples</h5>\n<div class=\"example-wrap should_panic\"><a href=\"#\" class=\"tooltip\" title=\"This example panics\">ⓘ</a><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"emergency failure\"</span>);\nx.expect(<span class=\"string\">\"Testing expect\"</span>); <span class=\"comment\">// panics with `Testing expect: emergency failure`</span></code></pre></div>\n<h5 id=\"recommended-message-style\"><a class=\"doc-anchor\" href=\"#recommended-message-style\">§</a>Recommended Message Style</h5>\n<p>We recommend that <code>expect</code> messages are used to describe the reason you\n<em>expect</em> the <code>Result</code> should be <code>Ok</code>.</p>\n\n<div class=\"example-wrap should_panic\"><a href=\"#\" class=\"tooltip\" title=\"This example panics\">ⓘ</a><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>path = std::env::var(<span class=\"string\">\"IMPORTANT_PATH\"</span>)\n    .expect(<span class=\"string\">\"env variable `IMPORTANT_PATH` should be set by `wrapper_script.sh`\"</span>);</code></pre></div>\n<p><strong>Hint</strong>: If you’re having trouble remembering how to phrase expect\nerror messages remember to focus on the word “should” as in “env\nvariable should be set by blah” or “the given binary should be available\nand executable by the current user”.</p>\n<p>For more detail on expect message styles and the reasoning behind our recommendation please\nrefer to the section on <a href=\"../../std/error/index.html#common-message-styles\">“Common Message\nStyles”</a> in the\n<a href=\"../../std/error/index.html\"><code>std::error</code></a> module docs.</p>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1071-1073\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap\" class=\"fn\">unwrap</a>(self) -&gt; T<div class=\"where\">where\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value, consuming the <code>self</code> value.</p>\n<p>Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>\ncase explicitly, or call <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or\" title=\"method core::result::Result::unwrap_or\"><code>unwrap_or</code></a>, <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or_else\" title=\"method core::result::Result::unwrap_or_else\"><code>unwrap_or_else</code></a>, or\n<a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or_default\" title=\"method core::result::Result::unwrap_or_default\"><code>unwrap_or_default</code></a>.</p>\n<h5 id=\"panics-1\"><a class=\"doc-anchor\" href=\"#panics-1\">§</a>Panics</h5>\n<p>Panics if the value is an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, with a panic message provided by the\n<a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>’s value.</p>\n<h5 id=\"examples-19\"><a class=\"doc-anchor\" href=\"#examples-19\">§</a>Examples</h5>\n<p>Basic usage:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.unwrap(), <span class=\"number\">2</span>);</code></pre></div>\n\n<div class=\"example-wrap should_panic\"><a href=\"#\" class=\"tooltip\" title=\"This example panics\">ⓘ</a><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"emergency failure\"</span>);\nx.unwrap(); <span class=\"comment\">// panics with `emergency failure`</span></code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap_or_default\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.16.0\">1.16.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1108-1110\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap_or_default\" class=\"fn\">unwrap_or_default</a>(self) -&gt; T<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value or a default</p>\n<p>Consumes the <code>self</code> argument then, if <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>, returns the contained\nvalue, otherwise if <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, returns the default value for that\ntype.</p>\n<h5 id=\"examples-20\"><a class=\"doc-anchor\" href=\"#examples-20\">§</a>Examples</h5>\n<p>Converts a string to an integer, turning poorly-formed strings\ninto 0 (the default value for integers). <a href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html#method.parse\" title=\"method str::parse\"><code>parse</code></a> converts\na string to any other type that implements <a href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\"><code>FromStr</code></a>, returning an\n<a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> on error.</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>good_year_from_input = <span class=\"string\">\"1909\"</span>;\n<span class=\"kw\">let </span>bad_year_from_input = <span class=\"string\">\"190blarg\"</span>;\n<span class=\"kw\">let </span>good_year = good_year_from_input.parse().unwrap_or_default();\n<span class=\"kw\">let </span>bad_year = bad_year_from_input.parse().unwrap_or_default();\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"number\">1909</span>, good_year);\n<span class=\"macro\">assert_eq!</span>(<span class=\"number\">0</span>, bad_year);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.expect_err\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.17.0\">1.17.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1135-1137\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.expect_err\" class=\"fn\">expect_err</a>(self, msg: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>) -&gt; E<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value, consuming the <code>self</code> value.</p>\n<h5 id=\"panics-2\"><a class=\"doc-anchor\" href=\"#panics-2\">§</a>Panics</h5>\n<p>Panics if the value is an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>, with a panic message including the\npassed message, and the content of the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>.</p>\n<h5 id=\"examples-21\"><a class=\"doc-anchor\" href=\"#examples-21\">§</a>Examples</h5>\n<div class=\"example-wrap should_panic\"><a href=\"#\" class=\"tooltip\" title=\"This example panics\">ⓘ</a><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">10</span>);\nx.expect_err(<span class=\"string\">\"Testing expect_err\"</span>); <span class=\"comment\">// panics with `Testing expect_err: 10`</span></code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap_err\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1166-1168\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap_err\" class=\"fn\">unwrap_err</a>(self) -&gt; E<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value, consuming the <code>self</code> value.</p>\n<h5 id=\"panics-3\"><a class=\"doc-anchor\" href=\"#panics-3\">§</a>Panics</h5>\n<p>Panics if the value is an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>, with a custom panic message provided\nby the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>’s value.</p>\n<h5 id=\"examples-22\"><a class=\"doc-anchor\" href=\"#examples-22\">§</a>Examples</h5>\n<div class=\"example-wrap should_panic\"><a href=\"#\" class=\"tooltip\" title=\"This example panics\">ⓘ</a><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\nx.unwrap_err(); <span class=\"comment\">// panics with `2`</span></code></pre></div>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"emergency failure\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.unwrap_err(), <span class=\"string\">\"emergency failure\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_ok\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1201-1203\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.into_ok\" class=\"fn\">into_ok</a>(self) -&gt; T<div class=\"where\">where\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.Into.html\" title=\"trait core::convert::Into\">Into</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.never.html\">!</a>&gt;,</div></h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>unwrap_infallible</code>)</span></div></span></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value, but never panics.</p>\n<p>Unlike <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap\" title=\"method core::result::Result::unwrap\"><code>unwrap</code></a>, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of <code>unwrap</code> as a maintainability safeguard that will fail\nto compile if the error type of the <code>Result</code> is later changed\nto an error that can actually occur.</p>\n<h5 id=\"examples-23\"><a class=\"doc-anchor\" href=\"#examples-23\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code>\n<span class=\"kw\">fn </span>only_good_news() -&gt; <span class=\"prelude-ty\">Result</span>&lt;String, !&gt; {\n    <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"this is fine\"</span>.into())\n}\n\n<span class=\"kw\">let </span>s: String = only_good_news().into_ok();\n<span class=\"macro\">println!</span>(<span class=\"string\">\"{s}\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_err\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1236-1238\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.into_err\" class=\"fn\">into_err</a>(self) -&gt; E<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.Into.html\" title=\"trait core::convert::Into\">Into</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.never.html\">!</a>&gt;,</div></h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>unwrap_infallible</code>)</span></div></span></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value, but never panics.</p>\n<p>Unlike <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_err\" title=\"method core::result::Result::unwrap_err\"><code>unwrap_err</code></a>, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of <code>unwrap_err</code> as a maintainability safeguard that will fail\nto compile if the ok type of the <code>Result</code> is later changed\nto a type that can actually occur.</p>\n<h5 id=\"examples-24\"><a class=\"doc-anchor\" href=\"#examples-24\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code>\n<span class=\"kw\">fn </span>only_bad_news() -&gt; <span class=\"prelude-ty\">Result</span>&lt;!, String&gt; {\n    <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Oops, it failed\"</span>.into())\n}\n\n<span class=\"kw\">let </span>error: String = only_bad_news().into_err();\n<span class=\"macro\">println!</span>(<span class=\"string\">\"{error}\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.and\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1279\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.and\" class=\"fn\">and</a>&lt;U&gt;(self, res: <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;</h4></section></summary><div class=\"docblock\"><p>Returns <code>res</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>, otherwise returns the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value of <code>self</code>.</p>\n<p>Arguments passed to <code>and</code> are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.and_then\" title=\"method core::result::Result::and_then\"><code>and_then</code></a>, which is\nlazily evaluated.</p>\n<h5 id=\"examples-25\"><a class=\"doc-anchor\" href=\"#examples-25\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"late error\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.and(y), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"late error\"</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"early error\"</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"foo\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.and(y), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"early error\"</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"not a 2\"</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"late error\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.and(y), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"not a 2\"</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"different result type\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.and(y), <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"different result type\"</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.and_then\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1319\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.and_then\" class=\"fn\">and_then</a>&lt;U, F&gt;(self, op: F) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(T) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;,</div></h4></section></summary><div class=\"docblock\"><p>Calls <code>op</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>, otherwise returns the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value of <code>self</code>.</p>\n<p>This function can be used for control flow based on <code>Result</code> values.</p>\n<h5 id=\"examples-26\"><a class=\"doc-anchor\" href=\"#examples-26\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">fn </span>sq_then_to_string(x: u32) -&gt; <span class=\"prelude-ty\">Result</span>&lt;String, <span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str&gt; {\n    x.checked_mul(x).map(|sq| sq.to_string()).ok_or(<span class=\"string\">\"overflowed\"</span>)\n}\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>).and_then(sq_then_to_string), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">4</span>.to_string()));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"number\">1_000_000</span>).and_then(sq_then_to_string), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"overflowed\"</span>));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Err</span>(<span class=\"string\">\"not a number\"</span>).and_then(sq_then_to_string), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"not a number\"</span>));</code></pre></div>\n<p>Often used to chain fallible operations that may return <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>.</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::{io::ErrorKind, path::Path};\n\n<span class=\"comment\">// Note: on Windows \"/\" maps to \"C:\\\"\n</span><span class=\"kw\">let </span>root_modified_time = Path::new(<span class=\"string\">\"/\"</span>).metadata().and_then(|md| md.modified());\n<span class=\"macro\">assert!</span>(root_modified_time.is_ok());\n\n<span class=\"kw\">let </span>should_fail = Path::new(<span class=\"string\">\"/bad/path\"</span>).metadata().and_then(|md| md.modified());\n<span class=\"macro\">assert!</span>(should_fail.is_err());\n<span class=\"macro\">assert_eq!</span>(should_fail.unwrap_err().kind(), ErrorKind::NotFound);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.or\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1355\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.or\" class=\"fn\">or</a>&lt;F&gt;(self, res: <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;</h4></section></summary><div class=\"docblock\"><p>Returns <code>res</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, otherwise returns the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value of <code>self</code>.</p>\n<p>Arguments passed to <code>or</code> are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.or_else\" title=\"method core::result::Result::or_else\"><code>or_else</code></a>, which is\nlazily evaluated.</p>\n<h5 id=\"examples-27\"><a class=\"doc-anchor\" href=\"#examples-27\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"late error\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.or(y), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"early error\"</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.or(y), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"not a 2\"</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"late error\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.or(y), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"late error\"</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">100</span>);\n<span class=\"macro\">assert_eq!</span>(x.or(y), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.or_else\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1380\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.or_else\" class=\"fn\">or_else</a>&lt;F, O&gt;(self, op: O) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;<div class=\"where\">where\n    O: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(E) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;,</div></h4></section></summary><div class=\"docblock\"><p>Calls <code>op</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, otherwise returns the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value of <code>self</code>.</p>\n<p>This function can be used for control flow based on result values.</p>\n<h5 id=\"examples-28\"><a class=\"doc-anchor\" href=\"#examples-28\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">fn </span>sq(x: u32) -&gt; <span class=\"prelude-ty\">Result</span>&lt;u32, u32&gt; { <span class=\"prelude-val\">Ok</span>(x * x) }\n<span class=\"kw\">fn </span>err(x: u32) -&gt; <span class=\"prelude-ty\">Result</span>&lt;u32, u32&gt; { <span class=\"prelude-val\">Err</span>(x) }\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>).or_else(sq).or_else(sq), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>).or_else(err).or_else(sq), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Err</span>(<span class=\"number\">3</span>).or_else(sq).or_else(err), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">9</span>));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Err</span>(<span class=\"number\">3</span>).or_else(err).or_else(err), <span class=\"prelude-val\">Err</span>(<span class=\"number\">3</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap_or\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1407\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap_or\" class=\"fn\">unwrap_or</a>(self, default: T) -&gt; T</h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value or a provided default.</p>\n<p>Arguments passed to <code>unwrap_or</code> are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or_else\" title=\"method core::result::Result::unwrap_or_else\"><code>unwrap_or_else</code></a>,\nwhich is lazily evaluated.</p>\n<h5 id=\"examples-29\"><a class=\"doc-anchor\" href=\"#examples-29\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>default = <span class=\"number\">2</span>;\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">9</span>);\n<span class=\"macro\">assert_eq!</span>(x.unwrap_or(default), <span class=\"number\">9</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"error\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.unwrap_or(default), default);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap_or_else\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1428\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap_or_else\" class=\"fn\">unwrap_or_else</a>&lt;F&gt;(self, op: F) -&gt; T<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(E) -&gt; T,</div></h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value or computes it from a closure.</p>\n<h5 id=\"examples-30\"><a class=\"doc-anchor\" href=\"#examples-30\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">fn </span>count(x: <span class=\"kw-2\">&amp;</span>str) -&gt; usize { x.len() }\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>).unwrap_or_else(count), <span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Err</span>(<span class=\"string\">\"foo\"</span>).unwrap_or_else(count), <span class=\"number\">3</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap_unchecked\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.58.0\">1.58.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1458\">source</a></span><h4 class=\"code-header\">pub unsafe fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap_unchecked\" class=\"fn\">unwrap_unchecked</a>(self) -&gt; T</h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value, consuming the <code>self</code> value,\nwithout checking that the value is not an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>.</p>\n<h5 id=\"safety\"><a class=\"doc-anchor\" href=\"#safety\">§</a>Safety</h5>\n<p>Calling this method on an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> is <em><a href=\"https://doc.rust-lang.org/reference/behavior-considered-undefined.html\">undefined behavior</a></em>.</p>\n<h5 id=\"examples-31\"><a class=\"doc-anchor\" href=\"#examples-31\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(<span class=\"kw\">unsafe </span>{ x.unwrap_unchecked() }, <span class=\"number\">2</span>);</code></pre></div>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"emergency failure\"</span>);\n<span class=\"kw\">unsafe </span>{ x.unwrap_unchecked(); } <span class=\"comment\">// Undefined behavior!</span></code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap_err_unchecked\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.58.0\">1.58.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1490\">source</a></span><h4 class=\"code-header\">pub unsafe fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap_err_unchecked\" class=\"fn\">unwrap_err_unchecked</a>(self) -&gt; E</h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value, consuming the <code>self</code> value,\nwithout checking that the value is not an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>.</p>\n<h5 id=\"safety-1\"><a class=\"doc-anchor\" href=\"#safety-1\">§</a>Safety</h5>\n<p>Calling this method on an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> is <em><a href=\"https://doc.rust-lang.org/reference/behavior-considered-undefined.html\">undefined behavior</a></em>.</p>\n<h5 id=\"examples-32\"><a class=\"doc-anchor\" href=\"#examples-32\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"kw\">unsafe </span>{ x.unwrap_err_unchecked() }; <span class=\"comment\">// Undefined behavior!</span></code></pre></div>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"emergency failure\"</span>);\n<span class=\"macro\">assert_eq!</span>(<span class=\"kw\">unsafe </span>{ x.unwrap_err_unchecked() }, <span class=\"string\">\"emergency failure\"</span>);</code></pre></div>\n</div></details></div></details>",0,"qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Serialize-for-Result%3CT,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/ser/impls.rs.html#695-698\">source</a><a href=\"#impl-Serialize-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a>,\n    E: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.serialize\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/ser/impls.rs.html#700-702\">source</a><a href=\"#method.serialize\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize\" class=\"fn\">serialize</a>&lt;S&gt;(\n    &amp;self,\n    serializer: S\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;&lt;S as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok\" title=\"type serde::ser::Serializer::Ok\">Ok</a>, &lt;S as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error\" title=\"type serde::ser::Serializer::Error\">Error</a>&gt;<div class=\"where\">where\n    S: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize\">Read more</a></div></details></div></details>","Serialize","qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-SerializeAs%3CResult%3CT,+E%3E%3E-for-Result%3CTAs,+EAs%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde_with/3.7.0/src/serde_with/ser/impls.rs.html#275-278\">source</a><a href=\"#impl-SerializeAs%3CResult%3CT,+E%3E%3E-for-Result%3CTAs,+EAs%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, TAs, E, EAs&gt; <a class=\"trait\" href=\"https://docs.rs/serde_with/3.7.0/serde_with/ser/trait.SerializeAs.html\" title=\"trait serde_with::ser::SerializeAs\">SerializeAs</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;TAs, EAs&gt;<div class=\"where\">where\n    TAs: <a class=\"trait\" href=\"https://docs.rs/serde_with/3.7.0/serde_with/ser/trait.SerializeAs.html\" title=\"trait serde_with::ser::SerializeAs\">SerializeAs</a>&lt;T&gt;,\n    EAs: <a class=\"trait\" href=\"https://docs.rs/serde_with/3.7.0/serde_with/ser/trait.SerializeAs.html\" title=\"trait serde_with::ser::SerializeAs\">SerializeAs</a>&lt;E&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.serialize_as\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde_with/3.7.0/src/serde_with/ser/impls.rs.html#280-282\">source</a><a href=\"#method.serialize_as\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://docs.rs/serde_with/3.7.0/serde_with/ser/trait.SerializeAs.html#tymethod.serialize_as\" class=\"fn\">serialize_as</a>&lt;S&gt;(\n    source: &amp;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;,\n    serializer: S\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;&lt;S as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok\" title=\"type serde::ser::Serializer::Ok\">Ok</a>, &lt;S as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error\" title=\"type serde::ser::Serializer::Error\">Error</a>&gt;<div class=\"where\">where\n    S: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer.</div></details></div></details>","SerializeAs<Result<T, E>>","qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Sum%3CResult%3CU,+E%3E%3E-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.16.0\">1.16.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/iter/traits/accum.rs.html#153-155\">source</a></span><a href=\"#impl-Sum%3CResult%3CU,+E%3E%3E-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, U, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html\" title=\"trait core::iter::traits::accum::Sum\">Sum</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html\" title=\"trait core::iter::traits::accum::Sum\">Sum</a>&lt;U&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.sum\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/iter/traits/accum.rs.html#175-177\">source</a><a href=\"#method.sum\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html#tymethod.sum\" class=\"fn\">sum</a>&lt;I&gt;(iter: I) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a>&lt;Item = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;&gt;,</div></h4></section></summary><div class=\"docblock\"><p>Takes each element in the <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\"><code>Iterator</code></a>: if it is an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, no further\nelements are taken, and the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> is returned. Should no <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>\noccur, the sum of all elements is returned.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<p>This sums up every integer in a vector, rejecting the sum if a negative\nelement is encountered:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>f = |<span class=\"kw-2\">&amp;</span>x: <span class=\"kw-2\">&amp;</span>i32| <span class=\"kw\">if </span>x &lt; <span class=\"number\">0 </span>{ <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Negative element found\"</span>) } <span class=\"kw\">else </span>{ <span class=\"prelude-val\">Ok</span>(x) };\n<span class=\"kw\">let </span>v = <span class=\"macro\">vec!</span>[<span class=\"number\">1</span>, <span class=\"number\">2</span>];\n<span class=\"kw\">let </span>res: <span class=\"prelude-ty\">Result</span>&lt;i32, <span class=\"kw\">_</span>&gt; = v.iter().map(f).sum();\n<span class=\"macro\">assert_eq!</span>(res, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">3</span>));\n<span class=\"kw\">let </span>v = <span class=\"macro\">vec!</span>[<span class=\"number\">1</span>, -<span class=\"number\">2</span>];\n<span class=\"kw\">let </span>res: <span class=\"prelude-ty\">Result</span>&lt;i32, <span class=\"kw\">_</span>&gt; = v.iter().map(f).sum();\n<span class=\"macro\">assert_eq!</span>(res, <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Negative element found\"</span>));</code></pre></div>\n</div></details></div></details>","Sum<Result<U, E>>","qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Termination-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.61.0\">1.61.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/process.rs.html#2438\">source</a></span><a href=\"#impl-Termination-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/process/trait.Termination.html\" title=\"trait std::process::Termination\">Termination</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/process/trait.Termination.html\" title=\"trait std::process::Termination\">Termination</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.report\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/process.rs.html#2439\">source</a><a href=\"#method.report\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/std/process/trait.Termination.html#tymethod.report\" class=\"fn\">report</a>(self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/process/struct.ExitCode.html\" title=\"struct std::process::ExitCode\">ExitCode</a></h4></section></summary><div class='docblock'>Is called to get the representation of the value as status code.\nThis status code is returned to the operating system.</div></details></div></details>","Termination","qlog::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Try-for-Result%3CT,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1940\">source</a><a href=\"#impl-Try-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html\" title=\"trait core::ops::try_trait::Try\">Try</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle\" open><summary><section id=\"associatedtype.Output\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Output\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Output\" class=\"associatedtype\">Output</a> = T</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2</code>)</span></div></span><div class='docblock'>The type of the value produced by <code>?</code> when <em>not</em> short-circuiting.</div></details><details class=\"toggle\" open><summary><section id=\"associatedtype.Residual\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Residual\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual\" class=\"associatedtype\">Residual</a> = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html\" title=\"enum core::convert::Infallible\">Infallible</a>, E&gt;</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2</code>)</span></div></span><div class='docblock'>The type of the value passed to <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html#tymethod.from_residual\" title=\"associated function core::ops::try_trait::FromResidual::from_residual\"><code>FromResidual::from_residual</code></a>\nas part of <code>?</code> when short-circuiting. <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_output\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1945\">source</a><a href=\"#method.from_output\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#tymethod.from_output\" class=\"fn\">from_output</a>(output: &lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt; as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html\" title=\"trait core::ops::try_trait::Try\">Try</a>&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Output\" title=\"type core::ops::try_trait::Try::Output\">Output</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2</code>)</span></div></span><div class='docblock'>Constructs the type from its <code>Output</code> type. <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#tymethod.from_output\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.branch\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1950\">source</a><a href=\"#method.branch\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#tymethod.branch\" class=\"fn\">branch</a>(\n    self\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/ops/control_flow/enum.ControlFlow.html\" title=\"enum core::ops::control_flow::ControlFlow\">ControlFlow</a>&lt;&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt; as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html\" title=\"trait core::ops::try_trait::Try\">Try</a>&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual\" title=\"type core::ops::try_trait::Try::Residual\">Residual</a>, &lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt; as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html\" title=\"trait core::ops::try_trait::Try\">Try</a>&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Output\" title=\"type core::ops::try_trait::Try::Output\">Output</a>&gt;</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2</code>)</span></div></span><div class='docblock'>Used in <code>?</code> to decide whether the operator should produce a value\n(because this returned <a href=\"https://doc.rust-lang.org/nightly/core/ops/control_flow/enum.ControlFlow.html#variant.Continue\" title=\"variant core::ops::control_flow::ControlFlow::Continue\"><code>ControlFlow::Continue</code></a>)\nor propagate a value back to the caller\n(because this returned <a href=\"https://doc.rust-lang.org/nightly/core/ops/control_flow/enum.ControlFlow.html#variant.Break\" title=\"variant core::ops::control_flow::ControlFlow::Break\"><code>ControlFlow::Break</code></a>). <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#tymethod.branch\">Read more</a></div></details></div></details>","Try","qlog::Result"],["<section id=\"impl-Copy-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-Copy-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a>,</div></h3></section>","Copy","qlog::Result"],["<section id=\"impl-Eq-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-Eq-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a>,</div></h3></section>","Eq","qlog::Result"],["<section id=\"impl-StructuralPartialEq-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-StructuralPartialEq-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h3></section>","StructuralPartialEq","qlog::Result"]],
+"quiche":[["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Clone-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1674-1677\">source</a></span><a href=\"#impl-Clone-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.clone\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1680\">source</a><a href=\"#method.clone\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone\" class=\"fn\">clone</a>(&amp;self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h4></section></summary><div class='docblock'>Returns a copy of the value. <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.clone_from\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1688\">source</a><a href=\"#method.clone_from\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from\" class=\"fn\">clone_from</a>(&amp;mut self, source: &amp;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from\">Read more</a></div></details></div></details>","Clone","quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Debug-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-Debug-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.fmt\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a><a href=\"#method.fmt\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt\" class=\"fn\">fmt</a>(&amp;self, f: &amp;mut <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html\" title=\"struct core::fmt::Formatter\">Formatter</a>&lt;'_&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.unit.html\">()</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html\" title=\"struct core::fmt::Error\">Error</a>&gt;</h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt\">Read more</a></div></details></div></details>","Debug","quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Deserialize%3C'de%3E-for-Result%3CT,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/de/impls.rs.html#2880-2883\">source</a><a href=\"#impl-Deserialize%3C'de%3E-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'de, T, E&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt;,\n    E: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.deserialize\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/de/impls.rs.html#2885-2887\">source</a><a href=\"#method.deserialize\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize\" class=\"fn\">deserialize</a>&lt;D&gt;(\n    deserializer: D\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;, &lt;D as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html\" title=\"trait serde::de::Deserializer\">Deserializer</a>&lt;'de&gt;&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error\" title=\"type serde::de::Deserializer::Error\">Error</a>&gt;<div class=\"where\">where\n    D: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html\" title=\"trait serde::de::Deserializer\">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize\">Read more</a></div></details></div></details>","Deserialize<'de>","quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-DeserializeAs%3C'de,+Result%3CT,+E%3E%3E-for-Result%3CTAs,+EAs%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde_with/3.7.0/src/serde_with/de/impls.rs.html#311-314\">source</a><a href=\"#impl-DeserializeAs%3C'de,+Result%3CT,+E%3E%3E-for-Result%3CTAs,+EAs%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'de, T, TAs, E, EAs&gt; <a class=\"trait\" href=\"https://docs.rs/serde_with/3.7.0/serde_with/de/trait.DeserializeAs.html\" title=\"trait serde_with::de::DeserializeAs\">DeserializeAs</a>&lt;'de, <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;TAs, EAs&gt;<div class=\"where\">where\n    TAs: <a class=\"trait\" href=\"https://docs.rs/serde_with/3.7.0/serde_with/de/trait.DeserializeAs.html\" title=\"trait serde_with::de::DeserializeAs\">DeserializeAs</a>&lt;'de, T&gt;,\n    EAs: <a class=\"trait\" href=\"https://docs.rs/serde_with/3.7.0/serde_with/de/trait.DeserializeAs.html\" title=\"trait serde_with::de::DeserializeAs\">DeserializeAs</a>&lt;'de, E&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.deserialize_as\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde_with/3.7.0/src/serde_with/de/impls.rs.html#316-318\">source</a><a href=\"#method.deserialize_as\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://docs.rs/serde_with/3.7.0/serde_with/de/trait.DeserializeAs.html#tymethod.deserialize_as\" class=\"fn\">deserialize_as</a>&lt;D&gt;(\n    deserializer: D\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;, &lt;D as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html\" title=\"trait serde::de::Deserializer\">Deserializer</a>&lt;'de&gt;&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error\" title=\"type serde::de::Deserializer::Error\">Error</a>&gt;<div class=\"where\">where\n    D: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html\" title=\"trait serde::de::Deserializer\">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer.</div></details></div></details>","DeserializeAs<'de, Result<T, E>>","quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FromIterator%3CResult%3CA,+E%3E%3E-for-Result%3CV,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1890\">source</a></span><a href=\"#impl-FromIterator%3CResult%3CA,+E%3E%3E-for-Result%3CV,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;A, E, V&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html\" title=\"trait core::iter::traits::collect::FromIterator\">FromIterator</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;A, E&gt;&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;V, E&gt;<div class=\"where\">where\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html\" title=\"trait core::iter::traits::collect::FromIterator\">FromIterator</a>&lt;A&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_iter\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1934\">source</a><a href=\"#method.from_iter\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter\" class=\"fn\">from_iter</a>&lt;I&gt;(iter: I) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;V, E&gt;<div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;A, E&gt;&gt;,</div></h4></section></summary><div class=\"docblock\"><p>Takes each element in the <code>Iterator</code>: if it is an <code>Err</code>, no further\nelements are taken, and the <code>Err</code> is returned. Should no <code>Err</code> occur, a\ncontainer with the values of each <code>Result</code> is returned.</p>\n<p>Here is an example which increments every integer in a vector,\nchecking for overflow:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>v = <span class=\"macro\">vec!</span>[<span class=\"number\">1</span>, <span class=\"number\">2</span>];\n<span class=\"kw\">let </span>res: <span class=\"prelude-ty\">Result</span>&lt;Vec&lt;u32&gt;, <span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str&gt; = v.iter().map(|x: <span class=\"kw-2\">&amp;</span>u32|\n    x.checked_add(<span class=\"number\">1</span>).ok_or(<span class=\"string\">\"Overflow!\"</span>)\n).collect();\n<span class=\"macro\">assert_eq!</span>(res, <span class=\"prelude-val\">Ok</span>(<span class=\"macro\">vec!</span>[<span class=\"number\">2</span>, <span class=\"number\">3</span>]));</code></pre></div>\n<p>Here is another example that tries to subtract one from another list\nof integers, this time checking for underflow:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>v = <span class=\"macro\">vec!</span>[<span class=\"number\">1</span>, <span class=\"number\">2</span>, <span class=\"number\">0</span>];\n<span class=\"kw\">let </span>res: <span class=\"prelude-ty\">Result</span>&lt;Vec&lt;u32&gt;, <span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str&gt; = v.iter().map(|x: <span class=\"kw-2\">&amp;</span>u32|\n    x.checked_sub(<span class=\"number\">1</span>).ok_or(<span class=\"string\">\"Underflow!\"</span>)\n).collect();\n<span class=\"macro\">assert_eq!</span>(res, <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Underflow!\"</span>));</code></pre></div>\n<p>Here is a variation on the previous example, showing that no\nfurther elements are taken from <code>iter</code> after the first <code>Err</code>.</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>v = <span class=\"macro\">vec!</span>[<span class=\"number\">3</span>, <span class=\"number\">2</span>, <span class=\"number\">1</span>, <span class=\"number\">10</span>];\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>shared = <span class=\"number\">0</span>;\n<span class=\"kw\">let </span>res: <span class=\"prelude-ty\">Result</span>&lt;Vec&lt;u32&gt;, <span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str&gt; = v.iter().map(|x: <span class=\"kw-2\">&amp;</span>u32| {\n    shared += x;\n    x.checked_sub(<span class=\"number\">2</span>).ok_or(<span class=\"string\">\"Underflow!\"</span>)\n}).collect();\n<span class=\"macro\">assert_eq!</span>(res, <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Underflow!\"</span>));\n<span class=\"macro\">assert_eq!</span>(shared, <span class=\"number\">6</span>);</code></pre></div>\n<p>Since the third element caused an underflow, no further elements were taken,\nso the final value of <code>shared</code> is 6 (= <code>3 + 2 + 1</code>), not 16.</p>\n</div></details></div></details>","FromIterator<Result<A, E>>","quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FromResidual%3CResult%3CInfallible,+E%3E%3E-for-Result%3CT,+F%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1959\">source</a><a href=\"#impl-FromResidual%3CResult%3CInfallible,+E%3E%3E-for-Result%3CT,+F%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E, F&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html\" title=\"trait core::ops::try_trait::FromResidual\">FromResidual</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html\" title=\"enum core::convert::Infallible\">Infallible</a>, E&gt;&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;E&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_residual\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1962\">source</a><a href=\"#method.from_residual\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html#tymethod.from_residual\" class=\"fn\">from_residual</a>(residual: <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html\" title=\"enum core::convert::Infallible\">Infallible</a>, E&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2</code>)</span></div></span><div class='docblock'>Constructs the type from a compatible <code>Residual</code> type. <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html#tymethod.from_residual\">Read more</a></div></details></div></details>","FromResidual<Result<Infallible, E>>","quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FromResidual%3CYeet%3CE%3E%3E-for-Result%3CT,+F%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1970\">source</a><a href=\"#impl-FromResidual%3CYeet%3CE%3E%3E-for-Result%3CT,+F%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E, F&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html\" title=\"trait core::ops::try_trait::FromResidual\">FromResidual</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/struct.Yeet.html\" title=\"struct core::ops::try_trait::Yeet\">Yeet</a>&lt;E&gt;&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;E&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_residual\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1972\">source</a><a href=\"#method.from_residual\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html#tymethod.from_residual\" class=\"fn\">from_residual</a>(_: <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/struct.Yeet.html\" title=\"struct core::ops::try_trait::Yeet\">Yeet</a>&lt;E&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2</code>)</span></div></span><div class='docblock'>Constructs the type from a compatible <code>Residual</code> type. <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html#tymethod.from_residual\">Read more</a></div></details></div></details>","FromResidual<Yeet<E>>","quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Hash-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-Hash-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.hash\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a><a href=\"#method.hash\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash\" class=\"fn\">hash</a>&lt;__H&gt;(&amp;self, state: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut __H</a>)<div class=\"where\">where\n    __H: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\">Hasher</a>,</div></h4></section></summary><div class='docblock'>Feeds this value into the given <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\"><code>Hasher</code></a>. <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.hash_slice\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.3.0\">1.3.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#238-240\">source</a></span><a href=\"#method.hash_slice\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice\" class=\"fn\">hash_slice</a>&lt;H&gt;(data: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[Self]</a>, state: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut H</a>)<div class=\"where\">where\n    H: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\">Hasher</a>,\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html\" title=\"trait core::hash::Hasher\"><code>Hasher</code></a>. <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice\">Read more</a></div></details></div></details>","Hash","quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-IntoIterator-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1698\">source</a></span><a href=\"#impl-IntoIterator-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_iter\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1718\">source</a><a href=\"#method.into_iter\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter\" class=\"fn\">into_iter</a>(self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/result/struct.IntoIter.html\" title=\"struct core::result::IntoIter\">IntoIter</a>&lt;T&gt;</h4></section></summary><div class=\"docblock\"><p>Returns a consuming iterator over the possibly contained value.</p>\n<p>The iterator yields one value if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Result::Ok</code></a>, otherwise none.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">5</span>);\n<span class=\"kw\">let </span>v: Vec&lt;u32&gt; = x.into_iter().collect();\n<span class=\"macro\">assert_eq!</span>(v, [<span class=\"number\">5</span>]);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"nothing!\"</span>);\n<span class=\"kw\">let </span>v: Vec&lt;u32&gt; = x.into_iter().collect();\n<span class=\"macro\">assert_eq!</span>(v, []);</code></pre></div>\n</div></details><details class=\"toggle\" open><summary><section id=\"associatedtype.Item\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Item\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = T</h4></section></summary><div class='docblock'>The type of the elements being iterated over.</div></details><details class=\"toggle\" open><summary><section id=\"associatedtype.IntoIter\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.IntoIter\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter\" class=\"associatedtype\">IntoIter</a> = <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/result/struct.IntoIter.html\" title=\"struct core::result::IntoIter\">IntoIter</a>&lt;T&gt;</h4></section></summary><div class='docblock'>Which kind of iterator are we turning this into?</div></details></div></details>","IntoIterator","quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Ord-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-Ord-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.cmp\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a><a href=\"#method.cmp\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp\" class=\"fn\">cmp</a>(&amp;self, other: &amp;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html\" title=\"enum core::cmp::Ordering\">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href=\"https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html\" title=\"enum core::cmp::Ordering\"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.max\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.21.0\">1.21.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#856-858\">source</a></span><a href=\"#method.max\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max\" class=\"fn\">max</a>(self, other: Self) -&gt; Self<div class=\"where\">where\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.min\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.21.0\">1.21.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#877-879\">source</a></span><a href=\"#method.min\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min\" class=\"fn\">min</a>(self, other: Self) -&gt; Self<div class=\"where\">where\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.clamp\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.50.0\">1.50.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#902-905\">source</a></span><a href=\"#method.clamp\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp\" class=\"fn\">clamp</a>(self, min: Self, max: Self) -&gt; Self<div class=\"where\">where\n    Self: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>,</div></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp\">Read more</a></div></details></div></details>","Ord","quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-PartialEq-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-PartialEq-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.eq\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a><a href=\"#method.eq\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq\" class=\"fn\">eq</a>(&amp;self, other: &amp;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used\nby <code>==</code>.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.ne\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263\">source</a></span><a href=\"#method.ne\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne\" class=\"fn\">ne</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.</div></details></div></details>","PartialEq","quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-PartialOrd-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-PartialOrd-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.partial_cmp\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a><a href=\"#method.partial_cmp\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp\" class=\"fn\">partial_cmp</a>(&amp;self, other: &amp;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html\" title=\"enum core::cmp::Ordering\">Ordering</a>&gt;</h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.lt\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1179\">source</a></span><a href=\"#method.lt\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt\" class=\"fn\">lt</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code>&lt;</code> operator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.le\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1197\">source</a></span><a href=\"#method.le\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le\" class=\"fn\">le</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>&lt;=</code>\noperator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.gt\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1214\">source</a></span><a href=\"#method.gt\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt\" class=\"fn\">gt</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>&gt;</code> operator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.ge\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1232\">source</a></span><a href=\"#method.ge\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge\" class=\"fn\">ge</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>&gt;=</code>\noperator. <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge\">Read more</a></div></details></div></details>","PartialOrd","quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Product%3CResult%3CU,+E%3E%3E-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.16.0\">1.16.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/iter/traits/accum.rs.html#184-186\">source</a></span><a href=\"#impl-Product%3CResult%3CU,+E%3E%3E-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, U, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Product.html\" title=\"trait core::iter::traits::accum::Product\">Product</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Product.html\" title=\"trait core::iter::traits::accum::Product\">Product</a>&lt;U&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.product\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/iter/traits/accum.rs.html#205-207\">source</a><a href=\"#method.product\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Product.html#tymethod.product\" class=\"fn\">product</a>&lt;I&gt;(iter: I) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a>&lt;Item = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;&gt;,</div></h4></section></summary><div class=\"docblock\"><p>Takes each element in the <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\"><code>Iterator</code></a>: if it is an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, no further\nelements are taken, and the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> is returned. Should no <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>\noccur, the product of all elements is returned.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<p>This multiplies each number in a vector of strings,\nif a string could not be parsed the operation returns <code>Err</code>:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>nums = <span class=\"macro\">vec!</span>[<span class=\"string\">\"5\"</span>, <span class=\"string\">\"10\"</span>, <span class=\"string\">\"1\"</span>, <span class=\"string\">\"2\"</span>];\n<span class=\"kw\">let </span>total: <span class=\"prelude-ty\">Result</span>&lt;usize, <span class=\"kw\">_</span>&gt; = nums.iter().map(|w| w.parse::&lt;usize&gt;()).product();\n<span class=\"macro\">assert_eq!</span>(total, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">100</span>));\n<span class=\"kw\">let </span>nums = <span class=\"macro\">vec!</span>[<span class=\"string\">\"5\"</span>, <span class=\"string\">\"10\"</span>, <span class=\"string\">\"one\"</span>, <span class=\"string\">\"2\"</span>];\n<span class=\"kw\">let </span>total: <span class=\"prelude-ty\">Result</span>&lt;usize, <span class=\"kw\">_</span>&gt; = nums.iter().map(|w| w.parse::&lt;usize&gt;()).product();\n<span class=\"macro\">assert!</span>(total.is_err());</code></pre></div>\n</div></details></div></details>","Product<Result<U, E>>","quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Residual%3CT%3E-for-Result%3CInfallible,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1978\">source</a><a href=\"#impl-Residual%3CT%3E-for-Result%3CInfallible,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html\" title=\"trait core::ops::try_trait::Residual\">Residual</a>&lt;T&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html\" title=\"enum core::convert::Infallible\">Infallible</a>, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle\" open><summary><section id=\"associatedtype.TryType\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.TryType\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html#associatedtype.TryType\" class=\"associatedtype\">TryType</a> = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2_residual</code>)</span></div></span><div class='docblock'>The “return” type of this meta-function.</div></details></div></details>","Residual<T>","quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Result%3C%26T,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1500\">source</a><a href=\"#impl-Result%3C%26T,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.copied\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.59.0\">1.59.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1515-1517\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.copied\" class=\"fn\">copied</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a>,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;&amp;T, E&gt;</code> to a <code>Result&lt;T, E&gt;</code> by copying the contents of the\n<code>Ok</code> part.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>val = <span class=\"number\">12</span>;\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>i32, i32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;</span>val);\n<span class=\"macro\">assert_eq!</span>(x, <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;</span><span class=\"number\">12</span>));\n<span class=\"kw\">let </span>copied = x.copied();\n<span class=\"macro\">assert_eq!</span>(copied, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">12</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.cloned\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.59.0\">1.59.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1536-1538\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.cloned\" class=\"fn\">cloned</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;&amp;T, E&gt;</code> to a <code>Result&lt;T, E&gt;</code> by cloning the contents of the\n<code>Ok</code> part.</p>\n<h5 id=\"examples-1\"><a class=\"doc-anchor\" href=\"#examples-1\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>val = <span class=\"number\">12</span>;\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>i32, i32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;</span>val);\n<span class=\"macro\">assert_eq!</span>(x, <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;</span><span class=\"number\">12</span>));\n<span class=\"kw\">let </span>cloned = x.cloned();\n<span class=\"macro\">assert_eq!</span>(cloned, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">12</span>));</code></pre></div>\n</div></details></div></details>",0,"quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Result%3C%26mut+T,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1544\">source</a><a href=\"#impl-Result%3C%26mut+T,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut T</a>, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.copied\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.59.0\">1.59.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1559-1561\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.copied\" class=\"fn\">copied</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a>,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;&amp;mut T, E&gt;</code> to a <code>Result&lt;T, E&gt;</code> by copying the contents of the\n<code>Ok</code> part.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>val = <span class=\"number\">12</span>;\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;mut </span>i32, i32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;mut </span>val);\n<span class=\"macro\">assert_eq!</span>(x, <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;mut </span><span class=\"number\">12</span>));\n<span class=\"kw\">let </span>copied = x.copied();\n<span class=\"macro\">assert_eq!</span>(copied, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">12</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.cloned\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.59.0\">1.59.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1580-1582\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.cloned\" class=\"fn\">cloned</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;&amp;mut T, E&gt;</code> to a <code>Result&lt;T, E&gt;</code> by cloning the contents of the\n<code>Ok</code> part.</p>\n<h5 id=\"examples-1\"><a class=\"doc-anchor\" href=\"#examples-1\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>val = <span class=\"number\">12</span>;\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;mut </span>i32, i32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;mut </span>val);\n<span class=\"macro\">assert_eq!</span>(x, <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;mut </span><span class=\"number\">12</span>));\n<span class=\"kw\">let </span>cloned = x.cloned();\n<span class=\"macro\">assert_eq!</span>(cloned, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">12</span>));</code></pre></div>\n</div></details></div></details>",0,"quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Result%3COption%3CT%3E,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1588\">source</a><a href=\"#impl-Result%3COption%3CT%3E,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;T&gt;, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.transpose\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.33.0, const unstable\">1.33.0 (const: <a href=\"https://github.com/rust-lang/rust/issues/82814\" title=\"Tracking issue for const_result\">unstable</a>)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1607\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.transpose\" class=\"fn\">transpose</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;&gt;</h4></section></summary><div class=\"docblock\"><p>Transposes a <code>Result</code> of an <code>Option</code> into an <code>Option</code> of a <code>Result</code>.</p>\n<p><code>Ok(None)</code> will be mapped to <code>None</code>.\n<code>Ok(Some(_))</code> and <code>Err(_)</code> will be mapped to <code>Some(Ok(_))</code> and <code>Some(Err(_))</code>.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#[derive(Debug, Eq, PartialEq)]\n</span><span class=\"kw\">struct </span>SomeErr;\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"prelude-ty\">Option</span>&lt;i32&gt;, SomeErr&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"prelude-val\">Some</span>(<span class=\"number\">5</span>));\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Option</span>&lt;<span class=\"prelude-ty\">Result</span>&lt;i32, SomeErr&gt;&gt; = <span class=\"prelude-val\">Some</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"number\">5</span>));\n<span class=\"macro\">assert_eq!</span>(x.transpose(), y);</code></pre></div>\n</div></details></div></details>",0,"quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Result%3CResult%3CT,+E%3E,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1616\">source</a><a href=\"#impl-Result%3CResult%3CT,+E%3E,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.flatten\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1643\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.flatten\" class=\"fn\">flatten</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>result_flattening</code>)</span></div></span></summary><div class=\"docblock\"><p>Converts from <code>Result&lt;Result&lt;T, E&gt;, E&gt;</code> to <code>Result&lt;T, E&gt;</code></p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(result_flattening)]\n</span><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str, u32&gt;, u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>), x.flatten());\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str, u32&gt;, u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"prelude-val\">Err</span>(<span class=\"number\">6</span>));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Err</span>(<span class=\"number\">6</span>), x.flatten());\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str, u32&gt;, u32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"number\">6</span>);\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Err</span>(<span class=\"number\">6</span>), x.flatten());</code></pre></div>\n<p>Flattening only removes one level of nesting at a time:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(result_flattening)]\n</span><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"prelude-ty\">Result</span>&lt;<span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str, u32&gt;, u32&gt;, u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>)));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>)), x.flatten());\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>), x.flatten().flatten());</code></pre></div>\n</div></details></div></details>",0,"quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Result%3CT,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#518\">source</a><a href=\"#impl-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.is_ok\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0, const since 1.48.0\">1.0.0 (const: 1.48.0)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#538\">source</a></span><h4 class=\"code-header\">pub const fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.is_ok\" class=\"fn\">is_ok</a>(&amp;self) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class=\"docblock\"><p>Returns <code>true</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;i32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(-<span class=\"number\">3</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_ok(), <span class=\"bool-val\">true</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;i32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Some error message\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_ok(), <span class=\"bool-val\">false</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.is_ok_and\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.70.0\">1.70.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#559\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.is_ok_and\" class=\"fn\">is_ok_and</a>(self, f: impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(T) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class=\"docblock\"><p>Returns <code>true</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> and the value inside of it matches a predicate.</p>\n<h5 id=\"examples-1\"><a class=\"doc-anchor\" href=\"#examples-1\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_ok_and(|x| x &gt; <span class=\"number\">1</span>), <span class=\"bool-val\">true</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">0</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_ok_and(|x| x &gt; <span class=\"number\">1</span>), <span class=\"bool-val\">false</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"hey\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_ok_and(|x| x &gt; <span class=\"number\">1</span>), <span class=\"bool-val\">false</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.is_err\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0, const since 1.48.0\">1.0.0 (const: 1.48.0)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#581\">source</a></span><h4 class=\"code-header\">pub const fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.is_err\" class=\"fn\">is_err</a>(&amp;self) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class=\"docblock\"><p>Returns <code>true</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>.</p>\n<h5 id=\"examples-2\"><a class=\"doc-anchor\" href=\"#examples-2\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;i32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(-<span class=\"number\">3</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_err(), <span class=\"bool-val\">false</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;i32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Some error message\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_err(), <span class=\"bool-val\">true</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.is_err_and\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.70.0\">1.70.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#604\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.is_err_and\" class=\"fn\">is_err_and</a>(self, f: impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(E) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class=\"docblock\"><p>Returns <code>true</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> and the value inside of it matches a predicate.</p>\n<h5 id=\"examples-3\"><a class=\"doc-anchor\" href=\"#examples-3\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::io::{Error, ErrorKind};\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, Error&gt; = <span class=\"prelude-val\">Err</span>(Error::new(ErrorKind::NotFound, <span class=\"string\">\"!\"</span>));\n<span class=\"macro\">assert_eq!</span>(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), <span class=\"bool-val\">true</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, Error&gt; = <span class=\"prelude-val\">Err</span>(Error::new(ErrorKind::PermissionDenied, <span class=\"string\">\"!\"</span>));\n<span class=\"macro\">assert_eq!</span>(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), <span class=\"bool-val\">false</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, Error&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">123</span>);\n<span class=\"macro\">assert_eq!</span>(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), <span class=\"bool-val\">false</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.ok\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#631\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.ok\" class=\"fn\">ok</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;T&gt;</h4></section></summary><div class=\"docblock\"><p>Converts from <code>Result&lt;T, E&gt;</code> to <a href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\"><code>Option&lt;T&gt;</code></a>.</p>\n<p>Converts <code>self</code> into an <a href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\"><code>Option&lt;T&gt;</code></a>, consuming <code>self</code>,\nand discarding the error, if any.</p>\n<h5 id=\"examples-4\"><a class=\"doc-anchor\" href=\"#examples-4\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.ok(), <span class=\"prelude-val\">Some</span>(<span class=\"number\">2</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Nothing here\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.ok(), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.err\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#654\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.err\" class=\"fn\">err</a>(self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;E&gt;</h4></section></summary><div class=\"docblock\"><p>Converts from <code>Result&lt;T, E&gt;</code> to <a href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\"><code>Option&lt;E&gt;</code></a>.</p>\n<p>Converts <code>self</code> into an <a href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\"><code>Option&lt;E&gt;</code></a>, consuming <code>self</code>,\nand discarding the success value, if any.</p>\n<h5 id=\"examples-5\"><a class=\"doc-anchor\" href=\"#examples-5\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.err(), <span class=\"prelude-val\">None</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Nothing here\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.err(), <span class=\"prelude-val\">Some</span>(<span class=\"string\">\"Nothing here\"</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_ref\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0, const since 1.48.0\">1.0.0 (const: 1.48.0)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#682\">source</a></span><h4 class=\"code-header\">pub const fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.as_ref\" class=\"fn\">as_ref</a>(&amp;self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;E</a>&gt;</h4></section></summary><div class=\"docblock\"><p>Converts from <code>&amp;Result&lt;T, E&gt;</code> to <code>Result&lt;&amp;T, &amp;E&gt;</code>.</p>\n<p>Produces a new <code>Result</code>, containing a reference\ninto the original, leaving the original in place.</p>\n<h5 id=\"examples-6\"><a class=\"doc-anchor\" href=\"#examples-6\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.as_ref(), <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Error\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.as_ref(), <span class=\"prelude-val\">Err</span>(<span class=\"kw-2\">&amp;</span><span class=\"string\">\"Error\"</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_mut\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0, const unstable\">1.0.0 (const: <a href=\"https://github.com/rust-lang/rust/issues/82814\" title=\"Tracking issue for const_result\">unstable</a>)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#712\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.as_mut\" class=\"fn\">as_mut</a>(&amp;mut self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut T</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut E</a>&gt;</h4></section></summary><div class=\"docblock\"><p>Converts from <code>&amp;mut Result&lt;T, E&gt;</code> to <code>Result&lt;&amp;mut T, &amp;mut E&gt;</code>.</p>\n<h5 id=\"examples-7\"><a class=\"doc-anchor\" href=\"#examples-7\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">fn </span>mutate(r: <span class=\"kw-2\">&amp;mut </span><span class=\"prelude-ty\">Result</span>&lt;i32, i32&gt;) {\n    <span class=\"kw\">match </span>r.as_mut() {\n        <span class=\"prelude-val\">Ok</span>(v) =&gt; <span class=\"kw-2\">*</span>v = <span class=\"number\">42</span>,\n        <span class=\"prelude-val\">Err</span>(e) =&gt; <span class=\"kw-2\">*</span>e = <span class=\"number\">0</span>,\n    }\n}\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>x: <span class=\"prelude-ty\">Result</span>&lt;i32, i32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\nmutate(<span class=\"kw-2\">&amp;mut </span>x);\n<span class=\"macro\">assert_eq!</span>(x.unwrap(), <span class=\"number\">42</span>);\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>x: <span class=\"prelude-ty\">Result</span>&lt;i32, i32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"number\">13</span>);\nmutate(<span class=\"kw-2\">&amp;mut </span>x);\n<span class=\"macro\">assert_eq!</span>(x.unwrap_err(), <span class=\"number\">0</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.map\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#744\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.map\" class=\"fn\">map</a>&lt;U, F&gt;(self, op: F) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(T) -&gt; U,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;T, E&gt;</code> to <code>Result&lt;U, E&gt;</code> by applying a function to a\ncontained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value, leaving an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value untouched.</p>\n<p>This function can be used to compose the results of two functions.</p>\n<h5 id=\"examples-8\"><a class=\"doc-anchor\" href=\"#examples-8\">§</a>Examples</h5>\n<p>Print the numbers on each line of a string multiplied by two.</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>line = <span class=\"string\">\"1\\n2\\n3\\n4\\n\"</span>;\n\n<span class=\"kw\">for </span>num <span class=\"kw\">in </span>line.lines() {\n    <span class=\"kw\">match </span>num.parse::&lt;i32&gt;().map(|i| i * <span class=\"number\">2</span>) {\n        <span class=\"prelude-val\">Ok</span>(n) =&gt; <span class=\"macro\">println!</span>(<span class=\"string\">\"{n}\"</span>),\n        <span class=\"prelude-val\">Err</span>(..) =&gt; {}\n    }\n}</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.map_or\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.41.0\">1.41.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#772\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.map_or\" class=\"fn\">map_or</a>&lt;U, F&gt;(self, default: U, f: F) -&gt; U<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(T) -&gt; U,</div></h4></section></summary><div class=\"docblock\"><p>Returns the provided default (if <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>), or\napplies a function to the contained value (if <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>).</p>\n<p>Arguments passed to <code>map_or</code> are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.map_or_else\" title=\"method core::result::Result::map_or_else\"><code>map_or_else</code></a>,\nwhich is lazily evaluated.</p>\n<h5 id=\"examples-9\"><a class=\"doc-anchor\" href=\"#examples-9\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw\">_</span>, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"foo\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.map_or(<span class=\"number\">42</span>, |v| v.len()), <span class=\"number\">3</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw\">_</span>&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"bar\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.map_or(<span class=\"number\">42</span>, |v| v.len()), <span class=\"number\">42</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.map_or_else\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.41.0\">1.41.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#799\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.map_or_else\" class=\"fn\">map_or_else</a>&lt;U, D, F&gt;(self, default: D, f: F) -&gt; U<div class=\"where\">where\n    D: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(E) -&gt; U,\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(T) -&gt; U,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;T, E&gt;</code> to <code>U</code> by applying fallback function <code>default</code> to\na contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value, or function <code>f</code> to a contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value.</p>\n<p>This function can be used to unpack a successful result\nwhile handling an error.</p>\n<h5 id=\"examples-10\"><a class=\"doc-anchor\" href=\"#examples-10\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>k = <span class=\"number\">21</span>;\n\n<span class=\"kw\">let </span>x : <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw\">_</span>, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"foo\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.map_or_else(|e| k * <span class=\"number\">2</span>, |v| v.len()), <span class=\"number\">3</span>);\n\n<span class=\"kw\">let </span>x : <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw\">_</span>&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"bar\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.map_or_else(|e| k * <span class=\"number\">2</span>, |v| v.len()), <span class=\"number\">42</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.map_err\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#826\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.map_err\" class=\"fn\">map_err</a>&lt;F, O&gt;(self, op: O) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;<div class=\"where\">where\n    O: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(E) -&gt; F,</div></h4></section></summary><div class=\"docblock\"><p>Maps a <code>Result&lt;T, E&gt;</code> to <code>Result&lt;T, F&gt;</code> by applying a function to a\ncontained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value, leaving an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value untouched.</p>\n<p>This function can be used to pass through a successful result while handling\nan error.</p>\n<h5 id=\"examples-11\"><a class=\"doc-anchor\" href=\"#examples-11\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">fn </span>stringify(x: u32) -&gt; String { <span class=\"macro\">format!</span>(<span class=\"string\">\"error code: {x}\"</span>) }\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.map_err(stringify), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, u32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"number\">13</span>);\n<span class=\"macro\">assert_eq!</span>(x.map_err(stringify), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"error code: 13\"</span>.to_string()));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.inspect\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.76.0\">1.76.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#848\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.inspect\" class=\"fn\">inspect</a>&lt;F&gt;(self, f: F) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>),</div></h4></section></summary><div class=\"docblock\"><p>Calls a function with a reference to the contained value if <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>.</p>\n<p>Returns the original result.</p>\n<h5 id=\"examples-12\"><a class=\"doc-anchor\" href=\"#examples-12\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: u8 = <span class=\"string\">\"4\"\n    </span>.parse::&lt;u8&gt;()\n    .inspect(|x| <span class=\"macro\">println!</span>(<span class=\"string\">\"original: {x}\"</span>))\n    .map(|x| x.pow(<span class=\"number\">3</span>))\n    .expect(<span class=\"string\">\"failed to parse number\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.inspect_err\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.76.0\">1.76.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#872\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.inspect_err\" class=\"fn\">inspect_err</a>&lt;F&gt;(self, f: F) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;E</a>),</div></h4></section></summary><div class=\"docblock\"><p>Calls a function with a reference to the contained value if <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>.</p>\n<p>Returns the original result.</p>\n<h5 id=\"examples-13\"><a class=\"doc-anchor\" href=\"#examples-13\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::{fs, io};\n\n<span class=\"kw\">fn </span>read() -&gt; io::Result&lt;String&gt; {\n    fs::read_to_string(<span class=\"string\">\"address.txt\"</span>)\n        .inspect_err(|e| <span class=\"macro\">eprintln!</span>(<span class=\"string\">\"failed to read file: {e}\"</span>))\n}</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_deref\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.47.0\">1.47.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#898-900\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.as_deref\" class=\"fn\">as_deref</a>(&amp;self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;&amp;&lt;T as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a>&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target\" title=\"type core::ops::deref::Deref::Target\">Target</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;E</a>&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a>,</div></h4></section></summary><div class=\"docblock\"><p>Converts from <code>Result&lt;T, E&gt;</code> (or <code>&amp;Result&lt;T, E&gt;</code>) to <code>Result&lt;&amp;&lt;T as Deref&gt;::Target, &amp;E&gt;</code>.</p>\n<p>Coerces the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> variant of the original <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\"><code>Result</code></a> via <a href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\"><code>Deref</code></a>\nand returns the new <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\"><code>Result</code></a>.</p>\n<h5 id=\"examples-14\"><a class=\"doc-anchor\" href=\"#examples-14\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;String, u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>.to_string());\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw-2\">&amp;</span>u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.as_deref(), y);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;String, u32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"number\">42</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw-2\">&amp;</span>u32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"kw-2\">&amp;</span><span class=\"number\">42</span>);\n<span class=\"macro\">assert_eq!</span>(x.as_deref(), y);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.as_deref_mut\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.47.0\">1.47.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#925-927\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.as_deref_mut\" class=\"fn\">as_deref_mut</a>(&amp;mut self) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;&amp;mut &lt;T as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a>&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target\" title=\"type core::ops::deref::Deref::Target\">Target</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut E</a>&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.DerefMut.html\" title=\"trait core::ops::deref::DerefMut\">DerefMut</a>,</div></h4></section></summary><div class=\"docblock\"><p>Converts from <code>Result&lt;T, E&gt;</code> (or <code>&amp;mut Result&lt;T, E&gt;</code>) to <code>Result&lt;&amp;mut &lt;T as DerefMut&gt;::Target, &amp;mut E&gt;</code>.</p>\n<p>Coerces the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> variant of the original <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\"><code>Result</code></a> via <a href=\"https://doc.rust-lang.org/nightly/core/ops/deref/trait.DerefMut.html\" title=\"trait core::ops::deref::DerefMut\"><code>DerefMut</code></a>\nand returns the new <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\"><code>Result</code></a>.</p>\n<h5 id=\"examples-15\"><a class=\"doc-anchor\" href=\"#examples-15\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>s = <span class=\"string\">\"HELLO\"</span>.to_string();\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>x: <span class=\"prelude-ty\">Result</span>&lt;String, u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"hello\"</span>.to_string());\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;mut </span>str, <span class=\"kw-2\">&amp;mut </span>u32&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"kw-2\">&amp;mut </span>s);\n<span class=\"macro\">assert_eq!</span>(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>i = <span class=\"number\">42</span>;\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>x: <span class=\"prelude-ty\">Result</span>&lt;String, u32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"number\">42</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;mut </span>str, <span class=\"kw-2\">&amp;mut </span>u32&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"kw-2\">&amp;mut </span>i);\n<span class=\"macro\">assert_eq!</span>(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.iter\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#951\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.iter\" class=\"fn\">iter</a>(&amp;self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/result/struct.Iter.html\" title=\"struct core::result::Iter\">Iter</a>&lt;'_, T&gt;</h4></section></summary><div class=\"docblock\"><p>Returns an iterator over the possibly contained value.</p>\n<p>The iterator yields one value if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Result::Ok</code></a>, otherwise none.</p>\n<h5 id=\"examples-16\"><a class=\"doc-anchor\" href=\"#examples-16\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">7</span>);\n<span class=\"macro\">assert_eq!</span>(x.iter().next(), <span class=\"prelude-val\">Some</span>(<span class=\"kw-2\">&amp;</span><span class=\"number\">7</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"nothing!\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.iter().next(), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.iter_mut\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#974\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.iter_mut\" class=\"fn\">iter_mut</a>(&amp;mut self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/result/struct.IterMut.html\" title=\"struct core::result::IterMut\">IterMut</a>&lt;'_, T&gt;</h4></section></summary><div class=\"docblock\"><p>Returns a mutable iterator over the possibly contained value.</p>\n<p>The iterator yields one value if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Result::Ok</code></a>, otherwise none.</p>\n<h5 id=\"examples-17\"><a class=\"doc-anchor\" href=\"#examples-17\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span><span class=\"kw-2\">mut </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">7</span>);\n<span class=\"kw\">match </span>x.iter_mut().next() {\n    <span class=\"prelude-val\">Some</span>(v) =&gt; <span class=\"kw-2\">*</span>v = <span class=\"number\">40</span>,\n    <span class=\"prelude-val\">None </span>=&gt; {},\n}\n<span class=\"macro\">assert_eq!</span>(x, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">40</span>));\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"nothing!\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.iter_mut().next(), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.expect\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.4.0\">1.4.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1028-1030\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.expect\" class=\"fn\">expect</a>(self, msg: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>) -&gt; T<div class=\"where\">where\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value, consuming the <code>self</code> value.</p>\n<p>Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>\ncase explicitly, or call <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or\" title=\"method core::result::Result::unwrap_or\"><code>unwrap_or</code></a>, <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or_else\" title=\"method core::result::Result::unwrap_or_else\"><code>unwrap_or_else</code></a>, or\n<a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or_default\" title=\"method core::result::Result::unwrap_or_default\"><code>unwrap_or_default</code></a>.</p>\n<h5 id=\"panics\"><a class=\"doc-anchor\" href=\"#panics\">§</a>Panics</h5>\n<p>Panics if the value is an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, with a panic message including the\npassed message, and the content of the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>.</p>\n<h5 id=\"examples-18\"><a class=\"doc-anchor\" href=\"#examples-18\">§</a>Examples</h5>\n<div class=\"example-wrap should_panic\"><a href=\"#\" class=\"tooltip\" title=\"This example panics\">ⓘ</a><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"emergency failure\"</span>);\nx.expect(<span class=\"string\">\"Testing expect\"</span>); <span class=\"comment\">// panics with `Testing expect: emergency failure`</span></code></pre></div>\n<h5 id=\"recommended-message-style\"><a class=\"doc-anchor\" href=\"#recommended-message-style\">§</a>Recommended Message Style</h5>\n<p>We recommend that <code>expect</code> messages are used to describe the reason you\n<em>expect</em> the <code>Result</code> should be <code>Ok</code>.</p>\n\n<div class=\"example-wrap should_panic\"><a href=\"#\" class=\"tooltip\" title=\"This example panics\">ⓘ</a><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>path = std::env::var(<span class=\"string\">\"IMPORTANT_PATH\"</span>)\n    .expect(<span class=\"string\">\"env variable `IMPORTANT_PATH` should be set by `wrapper_script.sh`\"</span>);</code></pre></div>\n<p><strong>Hint</strong>: If you’re having trouble remembering how to phrase expect\nerror messages remember to focus on the word “should” as in “env\nvariable should be set by blah” or “the given binary should be available\nand executable by the current user”.</p>\n<p>For more detail on expect message styles and the reasoning behind our recommendation please\nrefer to the section on <a href=\"../../std/error/index.html#common-message-styles\">“Common Message\nStyles”</a> in the\n<a href=\"../../std/error/index.html\"><code>std::error</code></a> module docs.</p>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1071-1073\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap\" class=\"fn\">unwrap</a>(self) -&gt; T<div class=\"where\">where\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value, consuming the <code>self</code> value.</p>\n<p>Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>\ncase explicitly, or call <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or\" title=\"method core::result::Result::unwrap_or\"><code>unwrap_or</code></a>, <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or_else\" title=\"method core::result::Result::unwrap_or_else\"><code>unwrap_or_else</code></a>, or\n<a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or_default\" title=\"method core::result::Result::unwrap_or_default\"><code>unwrap_or_default</code></a>.</p>\n<h5 id=\"panics-1\"><a class=\"doc-anchor\" href=\"#panics-1\">§</a>Panics</h5>\n<p>Panics if the value is an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, with a panic message provided by the\n<a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>’s value.</p>\n<h5 id=\"examples-19\"><a class=\"doc-anchor\" href=\"#examples-19\">§</a>Examples</h5>\n<p>Basic usage:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.unwrap(), <span class=\"number\">2</span>);</code></pre></div>\n\n<div class=\"example-wrap should_panic\"><a href=\"#\" class=\"tooltip\" title=\"This example panics\">ⓘ</a><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"emergency failure\"</span>);\nx.unwrap(); <span class=\"comment\">// panics with `emergency failure`</span></code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap_or_default\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.16.0\">1.16.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1108-1110\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap_or_default\" class=\"fn\">unwrap_or_default</a>(self) -&gt; T<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value or a default</p>\n<p>Consumes the <code>self</code> argument then, if <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>, returns the contained\nvalue, otherwise if <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, returns the default value for that\ntype.</p>\n<h5 id=\"examples-20\"><a class=\"doc-anchor\" href=\"#examples-20\">§</a>Examples</h5>\n<p>Converts a string to an integer, turning poorly-formed strings\ninto 0 (the default value for integers). <a href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html#method.parse\" title=\"method str::parse\"><code>parse</code></a> converts\na string to any other type that implements <a href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\"><code>FromStr</code></a>, returning an\n<a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> on error.</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>good_year_from_input = <span class=\"string\">\"1909\"</span>;\n<span class=\"kw\">let </span>bad_year_from_input = <span class=\"string\">\"190blarg\"</span>;\n<span class=\"kw\">let </span>good_year = good_year_from_input.parse().unwrap_or_default();\n<span class=\"kw\">let </span>bad_year = bad_year_from_input.parse().unwrap_or_default();\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"number\">1909</span>, good_year);\n<span class=\"macro\">assert_eq!</span>(<span class=\"number\">0</span>, bad_year);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.expect_err\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.17.0\">1.17.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1135-1137\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.expect_err\" class=\"fn\">expect_err</a>(self, msg: &amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>) -&gt; E<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value, consuming the <code>self</code> value.</p>\n<h5 id=\"panics-2\"><a class=\"doc-anchor\" href=\"#panics-2\">§</a>Panics</h5>\n<p>Panics if the value is an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>, with a panic message including the\npassed message, and the content of the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>.</p>\n<h5 id=\"examples-21\"><a class=\"doc-anchor\" href=\"#examples-21\">§</a>Examples</h5>\n<div class=\"example-wrap should_panic\"><a href=\"#\" class=\"tooltip\" title=\"This example panics\">ⓘ</a><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">10</span>);\nx.expect_err(<span class=\"string\">\"Testing expect_err\"</span>); <span class=\"comment\">// panics with `Testing expect_err: 10`</span></code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap_err\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1166-1168\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap_err\" class=\"fn\">unwrap_err</a>(self) -&gt; E<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value, consuming the <code>self</code> value.</p>\n<h5 id=\"panics-3\"><a class=\"doc-anchor\" href=\"#panics-3\">§</a>Panics</h5>\n<p>Panics if the value is an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>, with a custom panic message provided\nby the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>’s value.</p>\n<h5 id=\"examples-22\"><a class=\"doc-anchor\" href=\"#examples-22\">§</a>Examples</h5>\n<div class=\"example-wrap should_panic\"><a href=\"#\" class=\"tooltip\" title=\"This example panics\">ⓘ</a><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\nx.unwrap_err(); <span class=\"comment\">// panics with `2`</span></code></pre></div>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"emergency failure\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.unwrap_err(), <span class=\"string\">\"emergency failure\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_ok\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1201-1203\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.into_ok\" class=\"fn\">into_ok</a>(self) -&gt; T<div class=\"where\">where\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.Into.html\" title=\"trait core::convert::Into\">Into</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.never.html\">!</a>&gt;,</div></h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>unwrap_infallible</code>)</span></div></span></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value, but never panics.</p>\n<p>Unlike <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap\" title=\"method core::result::Result::unwrap\"><code>unwrap</code></a>, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of <code>unwrap</code> as a maintainability safeguard that will fail\nto compile if the error type of the <code>Result</code> is later changed\nto an error that can actually occur.</p>\n<h5 id=\"examples-23\"><a class=\"doc-anchor\" href=\"#examples-23\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code>\n<span class=\"kw\">fn </span>only_good_news() -&gt; <span class=\"prelude-ty\">Result</span>&lt;String, !&gt; {\n    <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"this is fine\"</span>.into())\n}\n\n<span class=\"kw\">let </span>s: String = only_good_news().into_ok();\n<span class=\"macro\">println!</span>(<span class=\"string\">\"{s}\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_err\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1236-1238\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.into_err\" class=\"fn\">into_err</a>(self) -&gt; E<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.Into.html\" title=\"trait core::convert::Into\">Into</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.never.html\">!</a>&gt;,</div></h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>unwrap_infallible</code>)</span></div></span></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value, but never panics.</p>\n<p>Unlike <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_err\" title=\"method core::result::Result::unwrap_err\"><code>unwrap_err</code></a>, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of <code>unwrap_err</code> as a maintainability safeguard that will fail\nto compile if the ok type of the <code>Result</code> is later changed\nto a type that can actually occur.</p>\n<h5 id=\"examples-24\"><a class=\"doc-anchor\" href=\"#examples-24\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code>\n<span class=\"kw\">fn </span>only_bad_news() -&gt; <span class=\"prelude-ty\">Result</span>&lt;!, String&gt; {\n    <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Oops, it failed\"</span>.into())\n}\n\n<span class=\"kw\">let </span>error: String = only_bad_news().into_err();\n<span class=\"macro\">println!</span>(<span class=\"string\">\"{error}\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.and\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1279\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.and\" class=\"fn\">and</a>&lt;U&gt;(self, res: <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;</h4></section></summary><div class=\"docblock\"><p>Returns <code>res</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>, otherwise returns the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value of <code>self</code>.</p>\n<p>Arguments passed to <code>and</code> are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.and_then\" title=\"method core::result::Result::and_then\"><code>and_then</code></a>, which is\nlazily evaluated.</p>\n<h5 id=\"examples-25\"><a class=\"doc-anchor\" href=\"#examples-25\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"late error\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.and(y), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"late error\"</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"early error\"</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"foo\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.and(y), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"early error\"</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"not a 2\"</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"late error\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.and(y), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"not a 2\"</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;<span class=\"kw-2\">&amp;</span>str, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"different result type\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.and(y), <span class=\"prelude-val\">Ok</span>(<span class=\"string\">\"different result type\"</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.and_then\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1319\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.and_then\" class=\"fn\">and_then</a>&lt;U, F&gt;(self, op: F) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(T) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;,</div></h4></section></summary><div class=\"docblock\"><p>Calls <code>op</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>, otherwise returns the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value of <code>self</code>.</p>\n<p>This function can be used for control flow based on <code>Result</code> values.</p>\n<h5 id=\"examples-26\"><a class=\"doc-anchor\" href=\"#examples-26\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">fn </span>sq_then_to_string(x: u32) -&gt; <span class=\"prelude-ty\">Result</span>&lt;String, <span class=\"kw-2\">&amp;</span><span class=\"lifetime\">'static </span>str&gt; {\n    x.checked_mul(x).map(|sq| sq.to_string()).ok_or(<span class=\"string\">\"overflowed\"</span>)\n}\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>).and_then(sq_then_to_string), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">4</span>.to_string()));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"number\">1_000_000</span>).and_then(sq_then_to_string), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"overflowed\"</span>));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Err</span>(<span class=\"string\">\"not a number\"</span>).and_then(sq_then_to_string), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"not a number\"</span>));</code></pre></div>\n<p>Often used to chain fallible operations that may return <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>.</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::{io::ErrorKind, path::Path};\n\n<span class=\"comment\">// Note: on Windows \"/\" maps to \"C:\\\"\n</span><span class=\"kw\">let </span>root_modified_time = Path::new(<span class=\"string\">\"/\"</span>).metadata().and_then(|md| md.modified());\n<span class=\"macro\">assert!</span>(root_modified_time.is_ok());\n\n<span class=\"kw\">let </span>should_fail = Path::new(<span class=\"string\">\"/bad/path\"</span>).metadata().and_then(|md| md.modified());\n<span class=\"macro\">assert!</span>(should_fail.is_err());\n<span class=\"macro\">assert_eq!</span>(should_fail.unwrap_err().kind(), ErrorKind::NotFound);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.or\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1355\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.or\" class=\"fn\">or</a>&lt;F&gt;(self, res: <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;</h4></section></summary><div class=\"docblock\"><p>Returns <code>res</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, otherwise returns the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value of <code>self</code>.</p>\n<p>Arguments passed to <code>or</code> are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.or_else\" title=\"method core::result::Result::or_else\"><code>or_else</code></a>, which is\nlazily evaluated.</p>\n<h5 id=\"examples-27\"><a class=\"doc-anchor\" href=\"#examples-27\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"late error\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.or(y), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"early error\"</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(x.or(y), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"not a 2\"</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"late error\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.or(y), <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"late error\"</span>));\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"kw\">let </span>y: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">100</span>);\n<span class=\"macro\">assert_eq!</span>(x.or(y), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.or_else\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1380\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.or_else\" class=\"fn\">or_else</a>&lt;F, O&gt;(self, op: O) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;<div class=\"where\">where\n    O: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(E) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, F&gt;,</div></h4></section></summary><div class=\"docblock\"><p>Calls <code>op</code> if the result is <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, otherwise returns the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value of <code>self</code>.</p>\n<p>This function can be used for control flow based on result values.</p>\n<h5 id=\"examples-28\"><a class=\"doc-anchor\" href=\"#examples-28\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">fn </span>sq(x: u32) -&gt; <span class=\"prelude-ty\">Result</span>&lt;u32, u32&gt; { <span class=\"prelude-val\">Ok</span>(x * x) }\n<span class=\"kw\">fn </span>err(x: u32) -&gt; <span class=\"prelude-ty\">Result</span>&lt;u32, u32&gt; { <span class=\"prelude-val\">Err</span>(x) }\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>).or_else(sq).or_else(sq), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>).or_else(err).or_else(sq), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Err</span>(<span class=\"number\">3</span>).or_else(sq).or_else(err), <span class=\"prelude-val\">Ok</span>(<span class=\"number\">9</span>));\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Err</span>(<span class=\"number\">3</span>).or_else(err).or_else(err), <span class=\"prelude-val\">Err</span>(<span class=\"number\">3</span>));</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap_or\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1407\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap_or\" class=\"fn\">unwrap_or</a>(self, default: T) -&gt; T</h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value or a provided default.</p>\n<p>Arguments passed to <code>unwrap_or</code> are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#method.unwrap_or_else\" title=\"method core::result::Result::unwrap_or_else\"><code>unwrap_or_else</code></a>,\nwhich is lazily evaluated.</p>\n<h5 id=\"examples-29\"><a class=\"doc-anchor\" href=\"#examples-29\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>default = <span class=\"number\">2</span>;\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">9</span>);\n<span class=\"macro\">assert_eq!</span>(x.unwrap_or(default), <span class=\"number\">9</span>);\n\n<span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"error\"</span>);\n<span class=\"macro\">assert_eq!</span>(x.unwrap_or(default), default);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap_or_else\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1428\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap_or_else\" class=\"fn\">unwrap_or_else</a>&lt;F&gt;(self, op: F) -&gt; T<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html\" title=\"trait core::ops::function::FnOnce\">FnOnce</a>(E) -&gt; T,</div></h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value or computes it from a closure.</p>\n<h5 id=\"examples-30\"><a class=\"doc-anchor\" href=\"#examples-30\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">fn </span>count(x: <span class=\"kw-2\">&amp;</span>str) -&gt; usize { x.len() }\n\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>).unwrap_or_else(count), <span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(<span class=\"prelude-val\">Err</span>(<span class=\"string\">\"foo\"</span>).unwrap_or_else(count), <span class=\"number\">3</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap_unchecked\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.58.0\">1.58.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1458\">source</a></span><h4 class=\"code-header\">pub unsafe fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap_unchecked\" class=\"fn\">unwrap_unchecked</a>(self) -&gt; T</h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> value, consuming the <code>self</code> value,\nwithout checking that the value is not an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>.</p>\n<h5 id=\"safety\"><a class=\"doc-anchor\" href=\"#safety\">§</a>Safety</h5>\n<p>Calling this method on an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> is <em><a href=\"https://doc.rust-lang.org/reference/behavior-considered-undefined.html\">undefined behavior</a></em>.</p>\n<h5 id=\"examples-31\"><a class=\"doc-anchor\" href=\"#examples-31\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(<span class=\"kw\">unsafe </span>{ x.unwrap_unchecked() }, <span class=\"number\">2</span>);</code></pre></div>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"emergency failure\"</span>);\n<span class=\"kw\">unsafe </span>{ x.unwrap_unchecked(); } <span class=\"comment\">// Undefined behavior!</span></code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.unwrap_err_unchecked\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.58.0\">1.58.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1490\">source</a></span><h4 class=\"code-header\">pub unsafe fn <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#tymethod.unwrap_err_unchecked\" class=\"fn\">unwrap_err_unchecked</a>(self) -&gt; E</h4></section></summary><div class=\"docblock\"><p>Returns the contained <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> value, consuming the <code>self</code> value,\nwithout checking that the value is not an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a>.</p>\n<h5 id=\"safety-1\"><a class=\"doc-anchor\" href=\"#safety-1\">§</a>Safety</h5>\n<p>Calling this method on an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok\" title=\"variant core::result::Result::Ok\"><code>Ok</code></a> is <em><a href=\"https://doc.rust-lang.org/reference/behavior-considered-undefined.html\">undefined behavior</a></em>.</p>\n<h5 id=\"examples-32\"><a class=\"doc-anchor\" href=\"#examples-32\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Ok</span>(<span class=\"number\">2</span>);\n<span class=\"kw\">unsafe </span>{ x.unwrap_err_unchecked() }; <span class=\"comment\">// Undefined behavior!</span></code></pre></div>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>x: <span class=\"prelude-ty\">Result</span>&lt;u32, <span class=\"kw-2\">&amp;</span>str&gt; = <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"emergency failure\"</span>);\n<span class=\"macro\">assert_eq!</span>(<span class=\"kw\">unsafe </span>{ x.unwrap_err_unchecked() }, <span class=\"string\">\"emergency failure\"</span>);</code></pre></div>\n</div></details></div></details>",0,"quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Serialize-for-Result%3CT,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/ser/impls.rs.html#695-698\">source</a><a href=\"#impl-Serialize-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a>,\n    E: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.serialize\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/ser/impls.rs.html#700-702\">source</a><a href=\"#method.serialize\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize\" class=\"fn\">serialize</a>&lt;S&gt;(\n    &amp;self,\n    serializer: S\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;&lt;S as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok\" title=\"type serde::ser::Serializer::Ok\">Ok</a>, &lt;S as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error\" title=\"type serde::ser::Serializer::Error\">Error</a>&gt;<div class=\"where\">where\n    S: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize\">Read more</a></div></details></div></details>","Serialize","quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-SerializeAs%3CResult%3CT,+E%3E%3E-for-Result%3CTAs,+EAs%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde_with/3.7.0/src/serde_with/ser/impls.rs.html#275-278\">source</a><a href=\"#impl-SerializeAs%3CResult%3CT,+E%3E%3E-for-Result%3CTAs,+EAs%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, TAs, E, EAs&gt; <a class=\"trait\" href=\"https://docs.rs/serde_with/3.7.0/serde_with/ser/trait.SerializeAs.html\" title=\"trait serde_with::ser::SerializeAs\">SerializeAs</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;TAs, EAs&gt;<div class=\"where\">where\n    TAs: <a class=\"trait\" href=\"https://docs.rs/serde_with/3.7.0/serde_with/ser/trait.SerializeAs.html\" title=\"trait serde_with::ser::SerializeAs\">SerializeAs</a>&lt;T&gt;,\n    EAs: <a class=\"trait\" href=\"https://docs.rs/serde_with/3.7.0/serde_with/ser/trait.SerializeAs.html\" title=\"trait serde_with::ser::SerializeAs\">SerializeAs</a>&lt;E&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.serialize_as\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde_with/3.7.0/src/serde_with/ser/impls.rs.html#280-282\">source</a><a href=\"#method.serialize_as\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://docs.rs/serde_with/3.7.0/serde_with/ser/trait.SerializeAs.html#tymethod.serialize_as\" class=\"fn\">serialize_as</a>&lt;S&gt;(\n    source: &amp;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;,\n    serializer: S\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;&lt;S as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok\" title=\"type serde::ser::Serializer::Ok\">Ok</a>, &lt;S as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error\" title=\"type serde::ser::Serializer::Error\">Error</a>&gt;<div class=\"where\">where\n    S: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer.</div></details></div></details>","SerializeAs<Result<T, E>>","quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Sum%3CResult%3CU,+E%3E%3E-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.16.0\">1.16.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/iter/traits/accum.rs.html#153-155\">source</a></span><a href=\"#impl-Sum%3CResult%3CU,+E%3E%3E-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, U, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html\" title=\"trait core::iter::traits::accum::Sum\">Sum</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;&gt; for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html\" title=\"trait core::iter::traits::accum::Sum\">Sum</a>&lt;U&gt;,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.sum\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/iter/traits/accum.rs.html#175-177\">source</a><a href=\"#method.sum\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html#tymethod.sum\" class=\"fn\">sum</a>&lt;I&gt;(iter: I) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    I: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a>&lt;Item = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;U, E&gt;&gt;,</div></h4></section></summary><div class=\"docblock\"><p>Takes each element in the <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\"><code>Iterator</code></a>: if it is an <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>, no further\nelements are taken, and the <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a> is returned. Should no <a href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err\" title=\"variant core::result::Result::Err\"><code>Err</code></a>\noccur, the sum of all elements is returned.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<p>This sums up every integer in a vector, rejecting the sum if a negative\nelement is encountered:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">let </span>f = |<span class=\"kw-2\">&amp;</span>x: <span class=\"kw-2\">&amp;</span>i32| <span class=\"kw\">if </span>x &lt; <span class=\"number\">0 </span>{ <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Negative element found\"</span>) } <span class=\"kw\">else </span>{ <span class=\"prelude-val\">Ok</span>(x) };\n<span class=\"kw\">let </span>v = <span class=\"macro\">vec!</span>[<span class=\"number\">1</span>, <span class=\"number\">2</span>];\n<span class=\"kw\">let </span>res: <span class=\"prelude-ty\">Result</span>&lt;i32, <span class=\"kw\">_</span>&gt; = v.iter().map(f).sum();\n<span class=\"macro\">assert_eq!</span>(res, <span class=\"prelude-val\">Ok</span>(<span class=\"number\">3</span>));\n<span class=\"kw\">let </span>v = <span class=\"macro\">vec!</span>[<span class=\"number\">1</span>, -<span class=\"number\">2</span>];\n<span class=\"kw\">let </span>res: <span class=\"prelude-ty\">Result</span>&lt;i32, <span class=\"kw\">_</span>&gt; = v.iter().map(f).sum();\n<span class=\"macro\">assert_eq!</span>(res, <span class=\"prelude-val\">Err</span>(<span class=\"string\">\"Negative element found\"</span>));</code></pre></div>\n</div></details></div></details>","Sum<Result<U, E>>","quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Termination-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.61.0\">1.61.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/process.rs.html#2438\">source</a></span><a href=\"#impl-Termination-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/process/trait.Termination.html\" title=\"trait std::process::Termination\">Termination</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/process/trait.Termination.html\" title=\"trait std::process::Termination\">Termination</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.report\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/process.rs.html#2439\">source</a><a href=\"#method.report\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/std/process/trait.Termination.html#tymethod.report\" class=\"fn\">report</a>(self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/process/struct.ExitCode.html\" title=\"struct std::process::ExitCode\">ExitCode</a></h4></section></summary><div class='docblock'>Is called to get the representation of the value as status code.\nThis status code is returned to the operating system.</div></details></div></details>","Termination","quiche::h3::Result","quiche::Result"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Try-for-Result%3CT,+E%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1940\">source</a><a href=\"#impl-Try-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html\" title=\"trait core::ops::try_trait::Try\">Try</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle\" open><summary><section id=\"associatedtype.Output\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Output\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Output\" class=\"associatedtype\">Output</a> = T</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2</code>)</span></div></span><div class='docblock'>The type of the value produced by <code>?</code> when <em>not</em> short-circuiting.</div></details><details class=\"toggle\" open><summary><section id=\"associatedtype.Residual\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Residual\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual\" class=\"associatedtype\">Residual</a> = <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html\" title=\"enum core::convert::Infallible\">Infallible</a>, E&gt;</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2</code>)</span></div></span><div class='docblock'>The type of the value passed to <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.FromResidual.html#tymethod.from_residual\" title=\"associated function core::ops::try_trait::FromResidual::from_residual\"><code>FromResidual::from_residual</code></a>\nas part of <code>?</code> when short-circuiting. <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_output\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1945\">source</a><a href=\"#method.from_output\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#tymethod.from_output\" class=\"fn\">from_output</a>(output: &lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt; as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html\" title=\"trait core::ops::try_trait::Try\">Try</a>&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Output\" title=\"type core::ops::try_trait::Try::Output\">Output</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2</code>)</span></div></span><div class='docblock'>Constructs the type from its <code>Output</code> type. <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#tymethod.from_output\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.branch\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#1950\">source</a><a href=\"#method.branch\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#tymethod.branch\" class=\"fn\">branch</a>(\n    self\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/ops/control_flow/enum.ControlFlow.html\" title=\"enum core::ops::control_flow::ControlFlow\">ControlFlow</a>&lt;&lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt; as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html\" title=\"trait core::ops::try_trait::Try\">Try</a>&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual\" title=\"type core::ops::try_trait::Try::Residual\">Residual</a>, &lt;<a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt; as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html\" title=\"trait core::ops::try_trait::Try\">Try</a>&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Output\" title=\"type core::ops::try_trait::Try::Output\">Output</a>&gt;</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>try_trait_v2</code>)</span></div></span><div class='docblock'>Used in <code>?</code> to decide whether the operator should produce a value\n(because this returned <a href=\"https://doc.rust-lang.org/nightly/core/ops/control_flow/enum.ControlFlow.html#variant.Continue\" title=\"variant core::ops::control_flow::ControlFlow::Continue\"><code>ControlFlow::Continue</code></a>)\nor propagate a value back to the caller\n(because this returned <a href=\"https://doc.rust-lang.org/nightly/core/ops/control_flow/enum.ControlFlow.html#variant.Break\" title=\"variant core::ops::control_flow::ControlFlow::Break\"><code>ControlFlow::Break</code></a>). <a href=\"https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#tymethod.branch\">Read more</a></div></details></div></details>","Try","quiche::h3::Result","quiche::Result"],["<section id=\"impl-Copy-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-Copy-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a>,</div></h3></section>","Copy","quiche::h3::Result","quiche::Result"],["<section id=\"impl-Eq-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-Eq-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a>,\n    E: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a>,</div></h3></section>","Eq","quiche::h3::Result","quiche::Result"],["<section id=\"impl-StructuralPartialEq-for-Result%3CT,+E%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/result.rs.html#498\">source</a></span><a href=\"#impl-StructuralPartialEq-for-Result%3CT,+E%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T, E&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;T, E&gt;</h3></section>","StructuralPartialEq","quiche::h3::Result","quiche::Result"]]
+};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})()
\ No newline at end of file
diff --git a/type.impl/qlog/type.Bytes.js b/type.impl/qlog/type.Bytes.js
new file mode 100644
index 0000000..dd03b62
--- /dev/null
+++ b/type.impl/qlog/type.Bytes.js
@@ -0,0 +1,3 @@
+(function() {var type_impls = {
+"qlog":[]
+};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})()
\ No newline at end of file
diff --git a/type.impl/std/collections/hash/map/struct.HashMap.js b/type.impl/std/collections/hash/map/struct.HashMap.js
new file mode 100644
index 0000000..20429a9
--- /dev/null
+++ b/type.impl/std/collections/hash/map/struct.HashMap.js
@@ -0,0 +1,3 @@
+(function() {var type_impls = {
+"quiche_apps":[["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Clone-for-HashMap%3CK,+V,+S%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1262-1266\">source</a></span><a href=\"#impl-Clone-for-HashMap%3CK,+V,+S%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, S&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,\n    S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.clone\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1269\">source</a><a href=\"#method.clone\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone\" class=\"fn\">clone</a>(&amp;self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;</h4></section></summary><div class='docblock'>Returns a copy of the value. <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.clone_from\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1274\">source</a><a href=\"#method.clone_from\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from\" class=\"fn\">clone_from</a>(&amp;mut self, other: &amp;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from\">Read more</a></div></details></div></details>","Clone","quiche_apps::common::ClientIdMap","quiche_apps::common::ClientMap"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Debug-for-HashMap%3CK,+V,+S%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1305-1308\">source</a></span><a href=\"#impl-Debug-for-HashMap%3CK,+V,+S%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, S&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.fmt\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1310\">source</a><a href=\"#method.fmt\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt\" class=\"fn\">fmt</a>(&amp;self, f: &amp;mut <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html\" title=\"struct core::fmt::Formatter\">Formatter</a>&lt;'_&gt;) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.unit.html\">()</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html\" title=\"struct core::fmt::Error\">Error</a>&gt;</h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt\">Read more</a></div></details></div></details>","Debug","quiche_apps::common::ClientIdMap","quiche_apps::common::ClientMap"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Default-for-HashMap%3CK,+V,+S%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1316-1318\">source</a></span><a href=\"#impl-Default-for-HashMap%3CK,+V,+S%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, S&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;<div class=\"where\">where\n    S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.default\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1322\">source</a><a href=\"#method.default\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default\" class=\"fn\">default</a>() -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;</h4></section></summary><div class=\"docblock\"><p>Creates an empty <code>HashMap&lt;K, V, S&gt;</code>, with the <code>Default</code> value for the hasher.</p>\n</div></details></div></details>","Default","quiche_apps::common::ClientIdMap","quiche_apps::common::ClientMap"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Deserialize%3C'de%3E-for-HashMap%3CK,+V,+S%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/de/impls.rs.html#1451-1457\">source</a><a href=\"#impl-Deserialize%3C'de%3E-for-HashMap%3CK,+V,+S%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'de, K, V, S&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a>,\n    V: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt;,\n    S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html\" title=\"trait core::hash::BuildHasher\">BuildHasher</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.deserialize\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/de/impls.rs.html#1451-1457\">source</a><a href=\"#method.deserialize\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize\" class=\"fn\">deserialize</a>&lt;D&gt;(\n    deserializer: D\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;, &lt;D as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html\" title=\"trait serde::de::Deserializer\">Deserializer</a>&lt;'de&gt;&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html#associatedtype.Error\" title=\"type serde::de::Deserializer::Error\">Error</a>&gt;<div class=\"where\">where\n    D: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserializer.html\" title=\"trait serde::de::Deserializer\">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Deserialize.html#tymethod.deserialize\">Read more</a></div></details></div></details>","Deserialize<'de>","quiche_apps::common::ClientIdMap","quiche_apps::common::ClientMap"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Extend%3C(%26K,+%26V)%3E-for-HashMap%3CK,+V,+S%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.4.0\">1.4.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#3159-3163\">source</a></span><a href=\"#impl-Extend%3C(%26K,+%26V)%3E-for-HashMap%3CK,+V,+S%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'a, K, V, S&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html\" title=\"trait core::iter::traits::collect::Extend\">Extend</a>&lt;(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;'a K</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;'a V</a>)&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a>,\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a>,\n    S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html\" title=\"trait core::hash::BuildHasher\">BuildHasher</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#3166\">source</a><a href=\"#method.extend\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\" class=\"fn\">extend</a>&lt;T&gt;(&amp;mut self, iter: T)<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = (<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;'a K</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;'a V</a>)&gt;,</div></h4></section></summary><div class='docblock'>Extends a collection with the contents of an iterator. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_one\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#3171\">source</a><a href=\"#method.extend_one\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_one\" class=\"fn\">extend_one</a>(&amp;mut self, _: (<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;'a K</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;'a V</a>))</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Extends a collection with exactly one element.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_reserve\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#3176\">source</a><a href=\"#method.extend_reserve\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\" class=\"fn\">extend_reserve</a>(&amp;mut self, additional: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>)</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Reserves capacity in a collection for the given number of additional elements. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\">Read more</a></div></details></div></details>","Extend<(&'a K, &'a V)>","quiche_apps::common::ClientIdMap","quiche_apps::common::ClientMap"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Extend%3C(K,+V)%3E-for-HashMap%3CK,+V,+S%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#3137-3140\">source</a></span><a href=\"#impl-Extend%3C(K,+V)%3E-for-HashMap%3CK,+V,+S%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, S&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html\" title=\"trait core::iter::traits::collect::Extend\">Extend</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a>,\n    S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html\" title=\"trait core::hash::BuildHasher\">BuildHasher</a>,</div></h3></section></summary><div class=\"docblock\"><p>Inserts all new key-values from the iterator and replaces values with existing\nkeys with new values returned from the iterator.</p>\n</div><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#3143\">source</a><a href=\"#method.extend\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\" class=\"fn\">extend</a>&lt;T&gt;(&amp;mut self, iter: T)<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a>&gt;,</div></h4></section></summary><div class='docblock'>Extends a collection with the contents of an iterator. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend\">Read more</a></div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_one\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#3148\">source</a><a href=\"#method.extend_one\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_one\" class=\"fn\">extend_one</a>(&amp;mut self, _: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a>)</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Extends a collection with exactly one element.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extend_reserve\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#3153\">source</a><a href=\"#method.extend_reserve\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\" class=\"fn\">extend_reserve</a>(&amp;mut self, additional: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>)</h4></section></summary><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Reserves capacity in a collection for the given number of additional elements. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve\">Read more</a></div></details></div></details>","Extend<(K, V)>","quiche_apps::common::ClientIdMap","quiche_apps::common::ClientMap"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-From%3C%5B(K,+V);+N%5D%3E-for-HashMap%3CK,+V%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.56.0\">1.56.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1360-1362\">source</a></span><a href=\"#impl-From%3C%5B(K,+V);+N%5D%3E-for-HashMap%3CK,+V%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, const N: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a>; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.array.html\">N</a>]&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1373\">source</a><a href=\"#method.from\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from\" class=\"fn\">from</a>(arr: [<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a>; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.array.html\">N</a>]) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V&gt;</h4></section></summary><div class=\"docblock\"><h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span>map1 = HashMap::from([(<span class=\"number\">1</span>, <span class=\"number\">2</span>), (<span class=\"number\">3</span>, <span class=\"number\">4</span>)]);\n<span class=\"kw\">let </span>map2: HashMap&lt;<span class=\"kw\">_</span>, <span class=\"kw\">_</span>&gt; = [(<span class=\"number\">1</span>, <span class=\"number\">2</span>), (<span class=\"number\">3</span>, <span class=\"number\">4</span>)].into();\n<span class=\"macro\">assert_eq!</span>(map1, map2);</code></pre></div>\n</div></details></div></details>","From<[(K, V); N]>","quiche_apps::common::ClientIdMap","quiche_apps::common::ClientMap"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FromIterator%3C(K,+V)%3E-for-HashMap%3CK,+V,+S%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#3122-3125\">source</a></span><a href=\"#impl-FromIterator%3C(K,+V)%3E-for-HashMap%3CK,+V,+S%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, S&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html\" title=\"trait core::iter::traits::collect::FromIterator\">FromIterator</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a>,\n    S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html\" title=\"trait core::hash::BuildHasher\">BuildHasher</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.from_iter\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#3127\">source</a><a href=\"#method.from_iter\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter\" class=\"fn\">from_iter</a>&lt;T&gt;(iter: T) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;<div class=\"where\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&lt;Item = <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a>&gt;,</div></h4></section></summary><div class='docblock'>Creates a value from an iterator. <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter\">Read more</a></div></details></div></details>","FromIterator<(K, V)>","quiche_apps::common::ClientIdMap","quiche_apps::common::ClientMap"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-HashMap%3CK,+V%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#217\">source</a><a href=\"#impl-HashMap%3CK,+V%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.new\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#232\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.new\" class=\"fn\">new</a>() -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V&gt;</h4></section></summary><div class=\"docblock\"><p>Creates an empty <code>HashMap</code>.</p>\n<p>The hash map is initially created with a capacity of 0, so it will not allocate until it\nis first inserted into.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map: HashMap&lt;<span class=\"kw-2\">&amp;</span>str, i32&gt; = HashMap::new();</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.with_capacity\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#251\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.with_capacity\" class=\"fn\">with_capacity</a>(capacity: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V&gt;</h4></section></summary><div class=\"docblock\"><p>Creates an empty <code>HashMap</code> with at least the specified capacity.</p>\n<p>The hash map will be able to hold at least <code>capacity</code> elements without\nreallocating. This method is allowed to allocate for more elements than\n<code>capacity</code>. If <code>capacity</code> is 0, the hash map will not allocate.</p>\n<h5 id=\"examples-1\"><a class=\"doc-anchor\" href=\"#examples-1\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map: HashMap&lt;<span class=\"kw-2\">&amp;</span>str, i32&gt; = HashMap::with_capacity(<span class=\"number\">10</span>);</code></pre></div>\n</div></details></div></details>",0,"quiche_apps::common::ClientIdMap","quiche_apps::common::ClientMap"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-HashMap%3CK,+V,+S%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1198-1200\">source</a><a href=\"#impl-HashMap%3CK,+V,+S%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, S&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;<div class=\"where\">where\n    S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html\" title=\"trait core::hash::BuildHasher\">BuildHasher</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.raw_entry_mut\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1235\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.raw_entry_mut\" class=\"fn\">raw_entry_mut</a>(&amp;mut self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RawEntryBuilderMut.html\" title=\"struct std::collections::hash::map::RawEntryBuilderMut\">RawEntryBuilderMut</a>&lt;'_, K, V, S&gt;</h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>hash_raw_entry</code>)</span></div></span></summary><div class=\"docblock\"><p>Creates a raw entry builder for the HashMap.</p>\n<p>Raw entries provide the lowest level of control for searching and\nmanipulating a map. They must be manually initialized with a hash and\nthen manually searched. After this, insertions into a vacant entry\nstill require an owned key to be provided.</p>\n<p>Raw entries are useful for such exotic situations as:</p>\n<ul>\n<li>Hash memoization</li>\n<li>Deferring the creation of an owned key until it is known to be required</li>\n<li>Using a search key that doesn’t work with the Borrow trait</li>\n<li>Using custom comparison logic without newtype wrappers</li>\n</ul>\n<p>Because raw entries provide much more low-level control, it’s much easier\nto put the HashMap into an inconsistent state which, while memory-safe,\nwill cause the map to produce seemingly random results. Higher-level and\nmore foolproof APIs like <code>entry</code> should be preferred when possible.</p>\n<p>In particular, the hash used to initialized the raw entry must still be\nconsistent with the hash of the key that is ultimately stored in the entry.\nThis is because implementations of HashMap may need to recompute hashes\nwhen resizing, at which point only the keys are available.</p>\n<p>Raw entries give mutable access to the keys. This must not be used\nto modify how the key would compare or hash, as the map will not re-evaluate\nwhere the key should go, meaning the keys may become “lost” if their\nlocation does not reflect their state. For instance, if you change a key\nso that the map now contains keys which compare equal, search may start\nacting erratically, with two keys randomly masking each other. Implementations\nare free to assume this doesn’t happen (within the limits of memory-safety).</p>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.raw_entry\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1256\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.raw_entry\" class=\"fn\">raw_entry</a>(&amp;self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.RawEntryBuilder.html\" title=\"struct std::collections::hash::map::RawEntryBuilder\">RawEntryBuilder</a>&lt;'_, K, V, S&gt;</h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>hash_raw_entry</code>)</span></div></span></summary><div class=\"docblock\"><p>Creates a raw immutable entry builder for the HashMap.</p>\n<p>Raw entries provide the lowest level of control for searching and\nmanipulating a map. They must be manually initialized with a hash and\nthen manually searched.</p>\n<p>This is useful for</p>\n<ul>\n<li>Hash memoization</li>\n<li>Using a search key that doesn’t work with the Borrow trait</li>\n<li>Using custom comparison logic without newtype wrappers</li>\n</ul>\n<p>Unless you are in such a situation, higher-level and more foolproof APIs like\n<code>get</code> should be preferred.</p>\n<p>Immutable raw entries have very limited use; you might instead want <code>raw_entry_mut</code>.</p>\n</div></details></div></details>",0,"quiche_apps::common::ClientIdMap","quiche_apps::common::ClientMap"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-HashMap%3CK,+V,+S%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#256\">source</a><a href=\"#impl-HashMap%3CK,+V,+S%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, S&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.with_hasher\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.7.0, const unstable\">1.7.0 (const: <a href=\"https://github.com/rust-lang/rust/issues/102575\" title=\"Tracking issue for const_collections_with_hasher\">unstable</a>)</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#283\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.with_hasher\" class=\"fn\">with_hasher</a>(hash_builder: S) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;</h4></section></summary><div class=\"docblock\"><p>Creates an empty <code>HashMap</code> which will use the given hash builder to hash\nkeys.</p>\n<p>The created map has the default initial capacity.</p>\n<p>Warning: <code>hash_builder</code> is normally randomly generated, and\nis designed to allow HashMaps to be resistant to attacks that\ncause many collisions and very poor performance. Setting it\nmanually using this function can expose a DoS attack vector.</p>\n<p>The <code>hash_builder</code> passed should implement the <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html\" title=\"trait core::hash::BuildHasher\"><code>BuildHasher</code></a> trait for\nthe HashMap to be useful, see its documentation for details.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n<span class=\"kw\">use </span>std::hash::RandomState;\n\n<span class=\"kw\">let </span>s = RandomState::new();\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = HashMap::with_hasher(s);\nmap.insert(<span class=\"number\">1</span>, <span class=\"number\">2</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.with_capacity_and_hasher\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.7.0\">1.7.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#314\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.with_capacity_and_hasher\" class=\"fn\">with_capacity_and_hasher</a>(capacity: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>, hasher: S) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;</h4></section></summary><div class=\"docblock\"><p>Creates an empty <code>HashMap</code> with at least the specified capacity, using\n<code>hasher</code> to hash the keys.</p>\n<p>The hash map will be able to hold at least <code>capacity</code> elements without\nreallocating. This method is allowed to allocate for more elements than\n<code>capacity</code>. If <code>capacity</code> is 0, the hash map will not allocate.</p>\n<p>Warning: <code>hasher</code> is normally randomly generated, and\nis designed to allow HashMaps to be resistant to attacks that\ncause many collisions and very poor performance. Setting it\nmanually using this function can expose a DoS attack vector.</p>\n<p>The <code>hasher</code> passed should implement the <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html\" title=\"trait core::hash::BuildHasher\"><code>BuildHasher</code></a> trait for\nthe HashMap to be useful, see its documentation for details.</p>\n<h5 id=\"examples-1\"><a class=\"doc-anchor\" href=\"#examples-1\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n<span class=\"kw\">use </span>std::hash::RandomState;\n\n<span class=\"kw\">let </span>s = RandomState::new();\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = HashMap::with_capacity_and_hasher(<span class=\"number\">10</span>, s);\nmap.insert(<span class=\"number\">1</span>, <span class=\"number\">2</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.capacity\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#332\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.capacity\" class=\"fn\">capacity</a>(&amp;self) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a></h4></section></summary><div class=\"docblock\"><p>Returns the number of elements the map can hold without reallocating.</p>\n<p>This number is a lower bound; the <code>HashMap&lt;K, V&gt;</code> might be able to hold\nmore, but is guaranteed to be able to hold at least this many.</p>\n<h5 id=\"examples-2\"><a class=\"doc-anchor\" href=\"#examples-2\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n<span class=\"kw\">let </span>map: HashMap&lt;i32, i32&gt; = HashMap::with_capacity(<span class=\"number\">100</span>);\n<span class=\"macro\">assert!</span>(map.capacity() &gt;= <span class=\"number\">100</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.keys\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#361\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.keys\" class=\"fn\">keys</a>(&amp;self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.Keys.html\" title=\"struct std::collections::hash::map::Keys\">Keys</a>&lt;'_, K, V&gt;</h4></section></summary><div class=\"docblock\"><p>An iterator visiting all keys in arbitrary order.\nThe iterator element type is <code>&amp;'a K</code>.</p>\n<h5 id=\"examples-3\"><a class=\"doc-anchor\" href=\"#examples-3\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span>map = HashMap::from([\n    (<span class=\"string\">\"a\"</span>, <span class=\"number\">1</span>),\n    (<span class=\"string\">\"b\"</span>, <span class=\"number\">2</span>),\n    (<span class=\"string\">\"c\"</span>, <span class=\"number\">3</span>),\n]);\n\n<span class=\"kw\">for </span>key <span class=\"kw\">in </span>map.keys() {\n    <span class=\"macro\">println!</span>(<span class=\"string\">\"{key}\"</span>);\n}</code></pre></div>\n<h5 id=\"performance\"><a class=\"doc-anchor\" href=\"#performance\">§</a>Performance</h5>\n<p>In the current implementation, iterating over keys takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.</p>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_keys\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.54.0\">1.54.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#394\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.into_keys\" class=\"fn\">into_keys</a>(self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.IntoKeys.html\" title=\"struct std::collections::hash::map::IntoKeys\">IntoKeys</a>&lt;K, V&gt;</h4></section></summary><div class=\"docblock\"><p>Creates a consuming iterator visiting all the keys in arbitrary order.\nThe map cannot be used after calling this.\nThe iterator element type is <code>K</code>.</p>\n<h5 id=\"examples-4\"><a class=\"doc-anchor\" href=\"#examples-4\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span>map = HashMap::from([\n    (<span class=\"string\">\"a\"</span>, <span class=\"number\">1</span>),\n    (<span class=\"string\">\"b\"</span>, <span class=\"number\">2</span>),\n    (<span class=\"string\">\"c\"</span>, <span class=\"number\">3</span>),\n]);\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>vec: Vec&lt;<span class=\"kw-2\">&amp;</span>str&gt; = map.into_keys().collect();\n<span class=\"comment\">// The `IntoKeys` iterator produces keys in arbitrary order, so the\n// keys must be sorted to test them against a sorted array.\n</span>vec.sort_unstable();\n<span class=\"macro\">assert_eq!</span>(vec, [<span class=\"string\">\"a\"</span>, <span class=\"string\">\"b\"</span>, <span class=\"string\">\"c\"</span>]);</code></pre></div>\n<h5 id=\"performance-1\"><a class=\"doc-anchor\" href=\"#performance-1\">§</a>Performance</h5>\n<p>In the current implementation, iterating over keys takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.</p>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.values\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#423\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.values\" class=\"fn\">values</a>(&amp;self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.Values.html\" title=\"struct std::collections::hash::map::Values\">Values</a>&lt;'_, K, V&gt;</h4></section></summary><div class=\"docblock\"><p>An iterator visiting all values in arbitrary order.\nThe iterator element type is <code>&amp;'a V</code>.</p>\n<h5 id=\"examples-5\"><a class=\"doc-anchor\" href=\"#examples-5\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span>map = HashMap::from([\n    (<span class=\"string\">\"a\"</span>, <span class=\"number\">1</span>),\n    (<span class=\"string\">\"b\"</span>, <span class=\"number\">2</span>),\n    (<span class=\"string\">\"c\"</span>, <span class=\"number\">3</span>),\n]);\n\n<span class=\"kw\">for </span>val <span class=\"kw\">in </span>map.values() {\n    <span class=\"macro\">println!</span>(<span class=\"string\">\"{val}\"</span>);\n}</code></pre></div>\n<h5 id=\"performance-2\"><a class=\"doc-anchor\" href=\"#performance-2\">§</a>Performance</h5>\n<p>In the current implementation, iterating over values takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.</p>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.values_mut\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.10.0\">1.10.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#456\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.values_mut\" class=\"fn\">values_mut</a>(&amp;mut self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.ValuesMut.html\" title=\"struct std::collections::hash::map::ValuesMut\">ValuesMut</a>&lt;'_, K, V&gt;</h4></section></summary><div class=\"docblock\"><p>An iterator visiting all values mutably in arbitrary order.\nThe iterator element type is <code>&amp;'a mut V</code>.</p>\n<h5 id=\"examples-6\"><a class=\"doc-anchor\" href=\"#examples-6\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = HashMap::from([\n    (<span class=\"string\">\"a\"</span>, <span class=\"number\">1</span>),\n    (<span class=\"string\">\"b\"</span>, <span class=\"number\">2</span>),\n    (<span class=\"string\">\"c\"</span>, <span class=\"number\">3</span>),\n]);\n\n<span class=\"kw\">for </span>val <span class=\"kw\">in </span>map.values_mut() {\n    <span class=\"kw-2\">*</span>val = <span class=\"kw-2\">*</span>val + <span class=\"number\">10</span>;\n}\n\n<span class=\"kw\">for </span>val <span class=\"kw\">in </span>map.values() {\n    <span class=\"macro\">println!</span>(<span class=\"string\">\"{val}\"</span>);\n}</code></pre></div>\n<h5 id=\"performance-3\"><a class=\"doc-anchor\" href=\"#performance-3\">§</a>Performance</h5>\n<p>In the current implementation, iterating over values takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.</p>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_values\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.54.0\">1.54.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#489\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.into_values\" class=\"fn\">into_values</a>(self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.IntoValues.html\" title=\"struct std::collections::hash::map::IntoValues\">IntoValues</a>&lt;K, V&gt;</h4></section></summary><div class=\"docblock\"><p>Creates a consuming iterator visiting all the values in arbitrary order.\nThe map cannot be used after calling this.\nThe iterator element type is <code>V</code>.</p>\n<h5 id=\"examples-7\"><a class=\"doc-anchor\" href=\"#examples-7\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span>map = HashMap::from([\n    (<span class=\"string\">\"a\"</span>, <span class=\"number\">1</span>),\n    (<span class=\"string\">\"b\"</span>, <span class=\"number\">2</span>),\n    (<span class=\"string\">\"c\"</span>, <span class=\"number\">3</span>),\n]);\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>vec: Vec&lt;i32&gt; = map.into_values().collect();\n<span class=\"comment\">// The `IntoValues` iterator produces values in arbitrary order, so\n// the values must be sorted to test them against a sorted array.\n</span>vec.sort_unstable();\n<span class=\"macro\">assert_eq!</span>(vec, [<span class=\"number\">1</span>, <span class=\"number\">2</span>, <span class=\"number\">3</span>]);</code></pre></div>\n<h5 id=\"performance-4\"><a class=\"doc-anchor\" href=\"#performance-4\">§</a>Performance</h5>\n<p>In the current implementation, iterating over values takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.</p>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.iter\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#518\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.iter\" class=\"fn\">iter</a>(&amp;self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.Iter.html\" title=\"struct std::collections::hash::map::Iter\">Iter</a>&lt;'_, K, V&gt;</h4></section></summary><div class=\"docblock\"><p>An iterator visiting all key-value pairs in arbitrary order.\nThe iterator element type is <code>(&amp;'a K, &amp;'a V)</code>.</p>\n<h5 id=\"examples-8\"><a class=\"doc-anchor\" href=\"#examples-8\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span>map = HashMap::from([\n    (<span class=\"string\">\"a\"</span>, <span class=\"number\">1</span>),\n    (<span class=\"string\">\"b\"</span>, <span class=\"number\">2</span>),\n    (<span class=\"string\">\"c\"</span>, <span class=\"number\">3</span>),\n]);\n\n<span class=\"kw\">for </span>(key, val) <span class=\"kw\">in </span>map.iter() {\n    <span class=\"macro\">println!</span>(<span class=\"string\">\"key: {key} val: {val}\"</span>);\n}</code></pre></div>\n<h5 id=\"performance-5\"><a class=\"doc-anchor\" href=\"#performance-5\">§</a>Performance</h5>\n<p>In the current implementation, iterating over map takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.</p>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.iter_mut\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#553\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.iter_mut\" class=\"fn\">iter_mut</a>(&amp;mut self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.IterMut.html\" title=\"struct std::collections::hash::map::IterMut\">IterMut</a>&lt;'_, K, V&gt;</h4></section></summary><div class=\"docblock\"><p>An iterator visiting all key-value pairs in arbitrary order,\nwith mutable references to the values.\nThe iterator element type is <code>(&amp;'a K, &amp;'a mut V)</code>.</p>\n<h5 id=\"examples-9\"><a class=\"doc-anchor\" href=\"#examples-9\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = HashMap::from([\n    (<span class=\"string\">\"a\"</span>, <span class=\"number\">1</span>),\n    (<span class=\"string\">\"b\"</span>, <span class=\"number\">2</span>),\n    (<span class=\"string\">\"c\"</span>, <span class=\"number\">3</span>),\n]);\n\n<span class=\"comment\">// Update all values\n</span><span class=\"kw\">for </span>(<span class=\"kw\">_</span>, val) <span class=\"kw\">in </span>map.iter_mut() {\n    <span class=\"kw-2\">*</span>val <span class=\"kw-2\">*</span>= <span class=\"number\">2</span>;\n}\n\n<span class=\"kw\">for </span>(key, val) <span class=\"kw\">in </span><span class=\"kw-2\">&amp;</span>map {\n    <span class=\"macro\">println!</span>(<span class=\"string\">\"key: {key} val: {val}\"</span>);\n}</code></pre></div>\n<h5 id=\"performance-6\"><a class=\"doc-anchor\" href=\"#performance-6\">§</a>Performance</h5>\n<p>In the current implementation, iterating over map takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.</p>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.len\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#570\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.len\" class=\"fn\">len</a>(&amp;self) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a></h4></section></summary><div class=\"docblock\"><p>Returns the number of elements in the map.</p>\n<h5 id=\"examples-10\"><a class=\"doc-anchor\" href=\"#examples-10\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>a = HashMap::new();\n<span class=\"macro\">assert_eq!</span>(a.len(), <span class=\"number\">0</span>);\na.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert_eq!</span>(a.len(), <span class=\"number\">1</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.is_empty\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#588\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.is_empty\" class=\"fn\">is_empty</a>(&amp;self) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class=\"docblock\"><p>Returns <code>true</code> if the map contains no elements.</p>\n<h5 id=\"examples-11\"><a class=\"doc-anchor\" href=\"#examples-11\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>a = HashMap::new();\n<span class=\"macro\">assert!</span>(a.is_empty());\na.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert!</span>(!a.is_empty());</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.drain\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.6.0\">1.6.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#618\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.drain\" class=\"fn\">drain</a>(&amp;mut self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.Drain.html\" title=\"struct std::collections::hash::map::Drain\">Drain</a>&lt;'_, K, V&gt;</h4></section></summary><div class=\"docblock\"><p>Clears the map, returning all key-value pairs as an iterator. Keeps the\nallocated memory for reuse.</p>\n<p>If the returned iterator is dropped before being fully consumed, it\ndrops the remaining key-value pairs. The returned iterator keeps a\nmutable borrow on the map to optimize its implementation.</p>\n<h5 id=\"examples-12\"><a class=\"doc-anchor\" href=\"#examples-12\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>a = HashMap::new();\na.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\na.insert(<span class=\"number\">2</span>, <span class=\"string\">\"b\"</span>);\n\n<span class=\"kw\">for </span>(k, v) <span class=\"kw\">in </span>a.drain().take(<span class=\"number\">1</span>) {\n    <span class=\"macro\">assert!</span>(k == <span class=\"number\">1 </span>|| k == <span class=\"number\">2</span>);\n    <span class=\"macro\">assert!</span>(v == <span class=\"string\">\"a\" </span>|| v == <span class=\"string\">\"b\"</span>);\n}\n\n<span class=\"macro\">assert!</span>(a.is_empty());</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.extract_if\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#659-661\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.extract_if\" class=\"fn\">extract_if</a>&lt;F&gt;(&amp;mut self, pred: F) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.ExtractIf.html\" title=\"struct std::collections::hash::map::ExtractIf\">ExtractIf</a>&lt;'_, K, V, F&gt;<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html\" title=\"trait core::ops::function::FnMut\">FnMut</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;K</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut V</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>,</div></h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>hash_extract_if</code>)</span></div></span></summary><div class=\"docblock\"><p>Creates an iterator which uses a closure to determine if an element should be removed.</p>\n<p>If the closure returns true, the element is removed from the map and yielded.\nIf the closure returns false, or panics, the element remains in the map and will not be\nyielded.</p>\n<p>Note that <code>extract_if</code> lets you mutate every value in the filter closure, regardless of\nwhether you choose to keep or remove it.</p>\n<p>If the returned <code>ExtractIf</code> is not exhausted, e.g. because it is dropped without iterating\nor the iteration short-circuits, then the remaining elements will be retained.\nUse <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#method.retain\" title=\"method std::collections::hash::map::HashMap::retain\"><code>retain</code></a> with a negated predicate if you do not need the returned iterator.</p>\n<h5 id=\"examples-13\"><a class=\"doc-anchor\" href=\"#examples-13\">§</a>Examples</h5>\n<p>Splitting a map into even and odd keys, reusing the original map:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(hash_extract_if)]\n</span><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map: HashMap&lt;i32, i32&gt; = (<span class=\"number\">0</span>..<span class=\"number\">8</span>).map(|x| (x, x)).collect();\n<span class=\"kw\">let </span>extracted: HashMap&lt;i32, i32&gt; = map.extract_if(|k, _v| k % <span class=\"number\">2 </span>== <span class=\"number\">0</span>).collect();\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>evens = extracted.keys().copied().collect::&lt;Vec&lt;<span class=\"kw\">_</span>&gt;&gt;();\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>odds = map.keys().copied().collect::&lt;Vec&lt;<span class=\"kw\">_</span>&gt;&gt;();\nevens.sort();\nodds.sort();\n\n<span class=\"macro\">assert_eq!</span>(evens, <span class=\"macro\">vec!</span>[<span class=\"number\">0</span>, <span class=\"number\">2</span>, <span class=\"number\">4</span>, <span class=\"number\">6</span>]);\n<span class=\"macro\">assert_eq!</span>(odds, <span class=\"macro\">vec!</span>[<span class=\"number\">1</span>, <span class=\"number\">3</span>, <span class=\"number\">5</span>, <span class=\"number\">7</span>]);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.retain\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.18.0\">1.18.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#688-690\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.retain\" class=\"fn\">retain</a>&lt;F&gt;(&amp;mut self, f: F)<div class=\"where\">where\n    F: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html\" title=\"trait core::ops::function::FnMut\">FnMut</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;K</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut V</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>,</div></h4></section></summary><div class=\"docblock\"><p>Retains only the elements specified by the predicate.</p>\n<p>In other words, remove all pairs <code>(k, v)</code> for which <code>f(&amp;k, &amp;mut v)</code> returns <code>false</code>.\nThe elements are visited in unsorted (and unspecified) order.</p>\n<h5 id=\"examples-14\"><a class=\"doc-anchor\" href=\"#examples-14\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map: HashMap&lt;i32, i32&gt; = (<span class=\"number\">0</span>..<span class=\"number\">8</span>).map(|x| (x, x<span class=\"kw-2\">*</span><span class=\"number\">10</span>)).collect();\nmap.retain(|<span class=\"kw-2\">&amp;</span>k, <span class=\"kw\">_</span>| k % <span class=\"number\">2 </span>== <span class=\"number\">0</span>);\n<span class=\"macro\">assert_eq!</span>(map.len(), <span class=\"number\">4</span>);</code></pre></div>\n<h5 id=\"performance-7\"><a class=\"doc-anchor\" href=\"#performance-7\">§</a>Performance</h5>\n<p>In the current implementation, this operation takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.</p>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.clear\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#710\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.clear\" class=\"fn\">clear</a>(&amp;mut self)</h4></section></summary><div class=\"docblock\"><p>Clears the map, removing all key-value pairs. Keeps the allocated memory\nfor reuse.</p>\n<h5 id=\"examples-15\"><a class=\"doc-anchor\" href=\"#examples-15\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>a = HashMap::new();\na.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\na.clear();\n<span class=\"macro\">assert!</span>(a.is_empty());</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.hasher\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.9.0\">1.9.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#728\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.hasher\" class=\"fn\">hasher</a>(&amp;self) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;S</a></h4></section></summary><div class=\"docblock\"><p>Returns a reference to the map’s <a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html\" title=\"trait core::hash::BuildHasher\"><code>BuildHasher</code></a>.</p>\n<h5 id=\"examples-16\"><a class=\"doc-anchor\" href=\"#examples-16\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n<span class=\"kw\">use </span>std::hash::RandomState;\n\n<span class=\"kw\">let </span>hasher = RandomState::new();\n<span class=\"kw\">let </span>map: HashMap&lt;i32, i32&gt; = HashMap::with_hasher(hasher);\n<span class=\"kw\">let </span>hasher: <span class=\"kw-2\">&amp;</span>RandomState = map.hasher();</code></pre></div>\n</div></details></div></details>",0,"quiche_apps::common::ClientIdMap","quiche_apps::common::ClientMap"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-HashMap%3CK,+V,+S%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#733-736\">source</a><a href=\"#impl-HashMap%3CK,+V,+S%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, S&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a>,\n    S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html\" title=\"trait core::hash::BuildHasher\">BuildHasher</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.reserve\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#757\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.reserve\" class=\"fn\">reserve</a>(&amp;mut self, additional: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>)</h4></section></summary><div class=\"docblock\"><p>Reserves capacity for at least <code>additional</code> more elements to be inserted\nin the <code>HashMap</code>. The collection may reserve more space to speculatively\navoid frequent reallocations. After calling <code>reserve</code>,\ncapacity will be greater than or equal to <code>self.len() + additional</code>.\nDoes nothing if capacity is already sufficient.</p>\n<h5 id=\"panics\"><a class=\"doc-anchor\" href=\"#panics\">§</a>Panics</h5>\n<p>Panics if the new allocation size overflows <a href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\" title=\"primitive usize\"><code>usize</code></a>.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map: HashMap&lt;<span class=\"kw-2\">&amp;</span>str, i32&gt; = HashMap::new();\nmap.reserve(<span class=\"number\">10</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.try_reserve\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.57.0\">1.57.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#783\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.try_reserve\" class=\"fn\">try_reserve</a>(&amp;mut self, additional: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.unit.html\">()</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/collections/struct.TryReserveError.html\" title=\"struct alloc::collections::TryReserveError\">TryReserveError</a>&gt;</h4></section></summary><div class=\"docblock\"><p>Tries to reserve capacity for at least <code>additional</code> more elements to be inserted\nin the <code>HashMap</code>. The collection may reserve more space to speculatively\navoid frequent reallocations. After calling <code>try_reserve</code>,\ncapacity will be greater than or equal to <code>self.len() + additional</code> if\nit returns <code>Ok(())</code>.\nDoes nothing if capacity is already sufficient.</p>\n<h5 id=\"errors\"><a class=\"doc-anchor\" href=\"#errors\">§</a>Errors</h5>\n<p>If the capacity overflows, or the allocator reports a failure, then an error\nis returned.</p>\n<h5 id=\"examples-1\"><a class=\"doc-anchor\" href=\"#examples-1\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map: HashMap&lt;<span class=\"kw-2\">&amp;</span>str, isize&gt; = HashMap::new();\nmap.try_reserve(<span class=\"number\">10</span>).expect(<span class=\"string\">\"why is the test harness OOMing on a handful of bytes?\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.shrink_to_fit\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#805\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.shrink_to_fit\" class=\"fn\">shrink_to_fit</a>(&amp;mut self)</h4></section></summary><div class=\"docblock\"><p>Shrinks the capacity of the map as much as possible. It will drop\ndown as much as possible while maintaining the internal rules\nand possibly leaving some space in accordance with the resize policy.</p>\n<h5 id=\"examples-2\"><a class=\"doc-anchor\" href=\"#examples-2\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map: HashMap&lt;i32, i32&gt; = HashMap::with_capacity(<span class=\"number\">100</span>);\nmap.insert(<span class=\"number\">1</span>, <span class=\"number\">2</span>);\nmap.insert(<span class=\"number\">3</span>, <span class=\"number\">4</span>);\n<span class=\"macro\">assert!</span>(map.capacity() &gt;= <span class=\"number\">100</span>);\nmap.shrink_to_fit();\n<span class=\"macro\">assert!</span>(map.capacity() &gt;= <span class=\"number\">2</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.shrink_to\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.56.0\">1.56.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#831\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.shrink_to\" class=\"fn\">shrink_to</a>(&amp;mut self, min_capacity: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>)</h4></section></summary><div class=\"docblock\"><p>Shrinks the capacity of the map with a lower limit. It will drop\ndown no lower than the supplied limit while maintaining the internal rules\nand possibly leaving some space in accordance with the resize policy.</p>\n<p>If the current capacity is less than the lower limit, this is a no-op.</p>\n<h5 id=\"examples-3\"><a class=\"doc-anchor\" href=\"#examples-3\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map: HashMap&lt;i32, i32&gt; = HashMap::with_capacity(<span class=\"number\">100</span>);\nmap.insert(<span class=\"number\">1</span>, <span class=\"number\">2</span>);\nmap.insert(<span class=\"number\">3</span>, <span class=\"number\">4</span>);\n<span class=\"macro\">assert!</span>(map.capacity() &gt;= <span class=\"number\">100</span>);\nmap.shrink_to(<span class=\"number\">10</span>);\n<span class=\"macro\">assert!</span>(map.capacity() &gt;= <span class=\"number\">10</span>);\nmap.shrink_to(<span class=\"number\">0</span>);\n<span class=\"macro\">assert!</span>(map.capacity() &gt;= <span class=\"number\">2</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.entry\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#855\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.entry\" class=\"fn\">entry</a>(&amp;mut self, key: K) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/enum.Entry.html\" title=\"enum std::collections::hash::map::Entry\">Entry</a>&lt;'_, K, V&gt;</h4></section></summary><div class=\"docblock\"><p>Gets the given key’s corresponding entry in the map for in-place manipulation.</p>\n<h5 id=\"examples-4\"><a class=\"doc-anchor\" href=\"#examples-4\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>letters = HashMap::new();\n\n<span class=\"kw\">for </span>ch <span class=\"kw\">in </span><span class=\"string\">\"a short treatise on fungi\"</span>.chars() {\n    letters.entry(ch).and_modify(|counter| <span class=\"kw-2\">*</span>counter += <span class=\"number\">1</span>).or_insert(<span class=\"number\">1</span>);\n}\n\n<span class=\"macro\">assert_eq!</span>(letters[<span class=\"kw-2\">&amp;</span><span class=\"string\">'s'</span>], <span class=\"number\">2</span>);\n<span class=\"macro\">assert_eq!</span>(letters[<span class=\"kw-2\">&amp;</span><span class=\"string\">'t'</span>], <span class=\"number\">3</span>);\n<span class=\"macro\">assert_eq!</span>(letters[<span class=\"kw-2\">&amp;</span><span class=\"string\">'u'</span>], <span class=\"number\">1</span>);\n<span class=\"macro\">assert_eq!</span>(letters.get(<span class=\"kw-2\">&amp;</span><span class=\"string\">'y'</span>), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.get\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#877-880\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.get\" class=\"fn\">get</a>&lt;Q&gt;(&amp;self, k: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;V</a>&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt;,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns a reference to the value corresponding to the key.</p>\n<p>The key may be any borrowed form of the map’s key type, but\n<a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\"><code>Hash</code></a> and <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\"><code>Eq</code></a> on the borrowed form <em>must</em> match those for\nthe key type.</p>\n<h5 id=\"examples-5\"><a class=\"doc-anchor\" href=\"#examples-5\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = HashMap::new();\nmap.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert_eq!</span>(map.get(<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>), <span class=\"prelude-val\">Some</span>(<span class=\"kw-2\">&amp;</span><span class=\"string\">\"a\"</span>));\n<span class=\"macro\">assert_eq!</span>(map.get(<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.get_key_value\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.40.0\">1.40.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#903-906\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.get_key_value\" class=\"fn\">get_key_value</a>&lt;Q&gt;(&amp;self, k: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;K</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;V</a>)&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt;,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns the key-value pair corresponding to the supplied key.</p>\n<p>The supplied key may be any borrowed form of the map’s key type, but\n<a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\"><code>Hash</code></a> and <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\"><code>Eq</code></a> on the borrowed form <em>must</em> match those for\nthe key type.</p>\n<h5 id=\"examples-6\"><a class=\"doc-anchor\" href=\"#examples-6\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = HashMap::new();\nmap.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert_eq!</span>(map.get_key_value(<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>), <span class=\"prelude-val\">Some</span>((<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>, <span class=\"kw-2\">&amp;</span><span class=\"string\">\"a\"</span>)));\n<span class=\"macro\">assert_eq!</span>(map.get_key_value(<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.get_many_mut\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#957-960\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.get_many_mut\" class=\"fn\">get_many_mut</a>&lt;Q, const N: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>&gt;(\n    &amp;mut self,\n    ks: [<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.array.html\">N</a>]\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut V</a>; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.array.html\">N</a>]&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt;,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>map_many_mut</code>)</span></div></span></summary><div class=\"docblock\"><p>Attempts to get mutable references to <code>N</code> values in the map at once.</p>\n<p>Returns an array of length <code>N</code> with the results of each query. For soundness, at most one\nmutable reference will be returned to any value. <code>None</code> will be returned if any of the\nkeys are duplicates or missing.</p>\n<h5 id=\"examples-7\"><a class=\"doc-anchor\" href=\"#examples-7\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(map_many_mut)]\n</span><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>libraries = HashMap::new();\nlibraries.insert(<span class=\"string\">\"Bodleian Library\"</span>.to_string(), <span class=\"number\">1602</span>);\nlibraries.insert(<span class=\"string\">\"Athenæum\"</span>.to_string(), <span class=\"number\">1807</span>);\nlibraries.insert(<span class=\"string\">\"Herzogin-Anna-Amalia-Bibliothek\"</span>.to_string(), <span class=\"number\">1691</span>);\nlibraries.insert(<span class=\"string\">\"Library of Congress\"</span>.to_string(), <span class=\"number\">1800</span>);\n\n<span class=\"kw\">let </span>got = libraries.get_many_mut([\n    <span class=\"string\">\"Athenæum\"</span>,\n    <span class=\"string\">\"Library of Congress\"</span>,\n]);\n<span class=\"macro\">assert_eq!</span>(\n    got,\n    <span class=\"prelude-val\">Some</span>([\n        <span class=\"kw-2\">&amp;mut </span><span class=\"number\">1807</span>,\n        <span class=\"kw-2\">&amp;mut </span><span class=\"number\">1800</span>,\n    ]),\n);\n\n<span class=\"comment\">// Missing keys result in None\n</span><span class=\"kw\">let </span>got = libraries.get_many_mut([\n    <span class=\"string\">\"Athenæum\"</span>,\n    <span class=\"string\">\"New York Public Library\"</span>,\n]);\n<span class=\"macro\">assert_eq!</span>(got, <span class=\"prelude-val\">None</span>);\n\n<span class=\"comment\">// Duplicate keys result in None\n</span><span class=\"kw\">let </span>got = libraries.get_many_mut([\n    <span class=\"string\">\"Athenæum\"</span>,\n    <span class=\"string\">\"Athenæum\"</span>,\n]);\n<span class=\"macro\">assert_eq!</span>(got, <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.get_many_unchecked_mut\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1013-1019\">source</a><h4 class=\"code-header\">pub unsafe fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.get_many_unchecked_mut\" class=\"fn\">get_many_unchecked_mut</a>&lt;Q, const N: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>&gt;(\n    &amp;mut self,\n    ks: [<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.array.html\">N</a>]\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut V</a>; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.array.html\">N</a>]&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt;,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>map_many_mut</code>)</span></div></span></summary><div class=\"docblock\"><p>Attempts to get mutable references to <code>N</code> values in the map at once, without validating that\nthe values are unique.</p>\n<p>Returns an array of length <code>N</code> with the results of each query. <code>None</code> will be returned if\nany of the keys are missing.</p>\n<p>For a safe alternative see <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#method.get_many_mut\" title=\"method std::collections::hash::map::HashMap::get_many_mut\"><code>get_many_mut</code></a>.</p>\n<h5 id=\"safety\"><a class=\"doc-anchor\" href=\"#safety\">§</a>Safety</h5>\n<p>Calling this method with overlapping keys is <em><a href=\"https://doc.rust-lang.org/reference/behavior-considered-undefined.html\">undefined behavior</a></em> even if the resulting\nreferences are not used.</p>\n<h5 id=\"examples-8\"><a class=\"doc-anchor\" href=\"#examples-8\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(map_many_mut)]\n</span><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>libraries = HashMap::new();\nlibraries.insert(<span class=\"string\">\"Bodleian Library\"</span>.to_string(), <span class=\"number\">1602</span>);\nlibraries.insert(<span class=\"string\">\"Athenæum\"</span>.to_string(), <span class=\"number\">1807</span>);\nlibraries.insert(<span class=\"string\">\"Herzogin-Anna-Amalia-Bibliothek\"</span>.to_string(), <span class=\"number\">1691</span>);\nlibraries.insert(<span class=\"string\">\"Library of Congress\"</span>.to_string(), <span class=\"number\">1800</span>);\n\n<span class=\"kw\">let </span>got = libraries.get_many_mut([\n    <span class=\"string\">\"Athenæum\"</span>,\n    <span class=\"string\">\"Library of Congress\"</span>,\n]);\n<span class=\"macro\">assert_eq!</span>(\n    got,\n    <span class=\"prelude-val\">Some</span>([\n        <span class=\"kw-2\">&amp;mut </span><span class=\"number\">1807</span>,\n        <span class=\"kw-2\">&amp;mut </span><span class=\"number\">1800</span>,\n    ]),\n);\n\n<span class=\"comment\">// Missing keys result in None\n</span><span class=\"kw\">let </span>got = libraries.get_many_mut([\n    <span class=\"string\">\"Athenæum\"</span>,\n    <span class=\"string\">\"New York Public Library\"</span>,\n]);\n<span class=\"macro\">assert_eq!</span>(got, <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.contains_key\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1042-1045\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.contains_key\" class=\"fn\">contains_key</a>&lt;Q&gt;(&amp;self, k: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a><div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt;,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns <code>true</code> if the map contains a value for the specified key.</p>\n<p>The key may be any borrowed form of the map’s key type, but\n<a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\"><code>Hash</code></a> and <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\"><code>Eq</code></a> on the borrowed form <em>must</em> match those for\nthe key type.</p>\n<h5 id=\"examples-9\"><a class=\"doc-anchor\" href=\"#examples-9\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = HashMap::new();\nmap.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert_eq!</span>(map.contains_key(<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>), <span class=\"bool-val\">true</span>);\n<span class=\"macro\">assert_eq!</span>(map.contains_key(<span class=\"kw-2\">&amp;</span><span class=\"number\">2</span>), <span class=\"bool-val\">false</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.get_mut\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1070-1073\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.get_mut\" class=\"fn\">get_mut</a>&lt;Q&gt;(&amp;mut self, k: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut V</a>&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt;,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class=\"docblock\"><p>Returns a mutable reference to the value corresponding to the key.</p>\n<p>The key may be any borrowed form of the map’s key type, but\n<a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\"><code>Hash</code></a> and <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\"><code>Eq</code></a> on the borrowed form <em>must</em> match those for\nthe key type.</p>\n<h5 id=\"examples-10\"><a class=\"doc-anchor\" href=\"#examples-10\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = HashMap::new();\nmap.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\n<span class=\"kw\">if let </span><span class=\"prelude-val\">Some</span>(x) = map.get_mut(<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>) {\n    <span class=\"kw-2\">*</span>x = <span class=\"string\">\"b\"</span>;\n}\n<span class=\"macro\">assert_eq!</span>(map[<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>], <span class=\"string\">\"b\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.insert\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1105\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.insert\" class=\"fn\">insert</a>(&amp;mut self, k: K, v: V) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;V&gt;</h4></section></summary><div class=\"docblock\"><p>Inserts a key-value pair into the map.</p>\n<p>If the map did not have this key present, <a href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html#variant.None\" title=\"variant core::option::Option::None\"><code>None</code></a> is returned.</p>\n<p>If the map did have this key present, the value is updated, and the old\nvalue is returned. The key is not updated, though; this matters for\ntypes that can be <code>==</code> without being identical. See the <a href=\"https://doc.rust-lang.org/nightly/std/collections/index.html#insert-and-complex-keys\" title=\"mod std::collections\">module-level\ndocumentation</a> for more.</p>\n<h5 id=\"examples-11\"><a class=\"doc-anchor\" href=\"#examples-11\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = HashMap::new();\n<span class=\"macro\">assert_eq!</span>(map.insert(<span class=\"number\">37</span>, <span class=\"string\">\"a\"</span>), <span class=\"prelude-val\">None</span>);\n<span class=\"macro\">assert_eq!</span>(map.is_empty(), <span class=\"bool-val\">false</span>);\n\nmap.insert(<span class=\"number\">37</span>, <span class=\"string\">\"b\"</span>);\n<span class=\"macro\">assert_eq!</span>(map.insert(<span class=\"number\">37</span>, <span class=\"string\">\"c\"</span>), <span class=\"prelude-val\">Some</span>(<span class=\"string\">\"b\"</span>));\n<span class=\"macro\">assert_eq!</span>(map[<span class=\"kw-2\">&amp;</span><span class=\"number\">37</span>], <span class=\"string\">\"c\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.try_insert\" class=\"method\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1133\">source</a><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.try_insert\" class=\"fn\">try_insert</a>(\n    &amp;mut self,\n    key: K,\n    value: V\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;mut V</a>, <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.OccupiedError.html\" title=\"struct std::collections::hash::map::OccupiedError\">OccupiedError</a>&lt;'_, K, V&gt;&gt;</h4></section><span class=\"item-info\"><div class=\"stab unstable\"><span class=\"emoji\">🔬</span><span>This is a nightly-only experimental API. (<code>map_try_insert</code>)</span></div></span></summary><div class=\"docblock\"><p>Tries to insert a key-value pair into the map, and returns\na mutable reference to the value in the entry.</p>\n<p>If the map already had this key present, nothing is updated, and\nan error containing the occupied entry and the value is returned.</p>\n<h5 id=\"examples-12\"><a class=\"doc-anchor\" href=\"#examples-12\">§</a>Examples</h5>\n<p>Basic usage:</p>\n\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"attr\">#![feature(map_try_insert)]\n\n</span><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = HashMap::new();\n<span class=\"macro\">assert_eq!</span>(map.try_insert(<span class=\"number\">37</span>, <span class=\"string\">\"a\"</span>).unwrap(), <span class=\"kw-2\">&amp;</span><span class=\"string\">\"a\"</span>);\n\n<span class=\"kw\">let </span>err = map.try_insert(<span class=\"number\">37</span>, <span class=\"string\">\"b\"</span>).unwrap_err();\n<span class=\"macro\">assert_eq!</span>(err.entry.key(), <span class=\"kw-2\">&amp;</span><span class=\"number\">37</span>);\n<span class=\"macro\">assert_eq!</span>(err.entry.get(), <span class=\"kw-2\">&amp;</span><span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert_eq!</span>(err.value, <span class=\"string\">\"b\"</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.remove\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1160-1163\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.remove\" class=\"fn\">remove</a>&lt;Q&gt;(&amp;mut self, k: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;V&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt;,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class=\"docblock\"><p>Removes a key from the map, returning the value at the key if the key\nwas previously in the map.</p>\n<p>The key may be any borrowed form of the map’s key type, but\n<a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\"><code>Hash</code></a> and <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\"><code>Eq</code></a> on the borrowed form <em>must</em> match those for\nthe key type.</p>\n<h5 id=\"examples-13\"><a class=\"doc-anchor\" href=\"#examples-13\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = HashMap::new();\nmap.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert_eq!</span>(map.remove(<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>), <span class=\"prelude-val\">Some</span>(<span class=\"string\">\"a\"</span>));\n<span class=\"macro\">assert_eq!</span>(map.remove(<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.remove_entry\" class=\"method\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.27.0\">1.27.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1189-1192\">source</a></span><h4 class=\"code-header\">pub fn <a href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html#tymethod.remove_entry\" class=\"fn\">remove_entry</a>&lt;Q&gt;(&amp;mut self, k: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a>&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt;,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,</div></h4></section></summary><div class=\"docblock\"><p>Removes a key from the map, returning the stored key and value if the\nkey was previously in the map.</p>\n<p>The key may be any borrowed form of the map’s key type, but\n<a href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\"><code>Hash</code></a> and <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\"><code>Eq</code></a> on the borrowed form <em>must</em> match those for\nthe key type.</p>\n<h5 id=\"examples-14\"><a class=\"doc-anchor\" href=\"#examples-14\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span><span class=\"kw-2\">mut </span>map = HashMap::new();\nmap.insert(<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>);\n<span class=\"macro\">assert_eq!</span>(map.remove_entry(<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>), <span class=\"prelude-val\">Some</span>((<span class=\"number\">1</span>, <span class=\"string\">\"a\"</span>)));\n<span class=\"macro\">assert_eq!</span>(map.remove(<span class=\"kw-2\">&amp;</span><span class=\"number\">1</span>), <span class=\"prelude-val\">None</span>);</code></pre></div>\n</div></details></div></details>",0,"quiche_apps::common::ClientIdMap","quiche_apps::common::ClientMap"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Index%3C%26Q%3E-for-HashMap%3CK,+V,+S%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1328-1332\">source</a></span><a href=\"#impl-Index%3C%26Q%3E-for-HashMap%3CK,+V,+S%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, Q, V, S&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/index/trait.Index.html\" title=\"trait core::ops::index::Index\">Index</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html\" title=\"trait core::borrow::Borrow\">Borrow</a>&lt;Q&gt;,\n    Q: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a>,\n    S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html\" title=\"trait core::hash::BuildHasher\">BuildHasher</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.index\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1342\">source</a><a href=\"#method.index\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/ops/index/trait.Index.html#tymethod.index\" class=\"fn\">index</a>(&amp;self, key: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Q</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;V</a></h4></section></summary><div class=\"docblock\"><p>Returns a reference to the value corresponding to the supplied key.</p>\n<h5 id=\"panics\"><a class=\"doc-anchor\" href=\"#panics\">§</a>Panics</h5>\n<p>Panics if the key is not present in the <code>HashMap</code>.</p>\n</div></details><details class=\"toggle\" open><summary><section id=\"associatedtype.Output\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Output\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/ops/index/trait.Index.html#associatedtype.Output\" class=\"associatedtype\">Output</a> = V</h4></section></summary><div class='docblock'>The returned type after indexing.</div></details></div></details>","Index<&Q>","quiche_apps::common::ClientIdMap","quiche_apps::common::ClientMap"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-IntoDeserializer%3C'de,+E%3E-for-HashMap%3CK,+V,+S%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/de/value.rs.html#1440-1445\">source</a><a href=\"#impl-IntoDeserializer%3C'de,+E%3E-for-HashMap%3CK,+V,+S%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;'de, K, V, S, E&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.IntoDeserializer.html\" title=\"trait serde::de::IntoDeserializer\">IntoDeserializer</a>&lt;'de, E&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.IntoDeserializer.html\" title=\"trait serde::de::IntoDeserializer\">IntoDeserializer</a>&lt;'de, E&gt; + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a>,\n    V: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.IntoDeserializer.html\" title=\"trait serde::de::IntoDeserializer\">IntoDeserializer</a>&lt;'de, E&gt;,\n    S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html\" title=\"trait core::hash::BuildHasher\">BuildHasher</a>,\n    E: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.Error.html\" title=\"trait serde::de::Error\">Error</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle\" open><summary><section id=\"associatedtype.Deserializer\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Deserializer\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://docs.rs/serde/1.0.197/serde/de/trait.IntoDeserializer.html#associatedtype.Deserializer\" class=\"associatedtype\">Deserializer</a> = <a class=\"struct\" href=\"https://docs.rs/serde/1.0.197/serde/de/value/struct.MapDeserializer.html\" title=\"struct serde::de::value::MapDeserializer\">MapDeserializer</a>&lt;'de, &lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt; as <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a>&gt;::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter\" title=\"type core::iter::traits::collect::IntoIterator::IntoIter\">IntoIter</a>, E&gt;</h4></section></summary><div class='docblock'>The type of the deserializer being converted into.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_deserializer\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/de/value.rs.html#1449\">source</a><a href=\"#method.into_deserializer\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://docs.rs/serde/1.0.197/serde/de/trait.IntoDeserializer.html#tymethod.into_deserializer\" class=\"fn\">into_deserializer</a>(\n    self\n) -&gt; &lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt; as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.IntoDeserializer.html\" title=\"trait serde::de::IntoDeserializer\">IntoDeserializer</a>&lt;'de, E&gt;&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/de/trait.IntoDeserializer.html#associatedtype.Deserializer\" title=\"type serde::de::IntoDeserializer::Deserializer\">Deserializer</a></h4></section></summary><div class='docblock'>Convert this value into a deserializer.</div></details></div></details>","IntoDeserializer<'de, E>","quiche_apps::common::ClientIdMap","quiche_apps::common::ClientMap"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-IntoIterator-for-HashMap%3CK,+V,+S%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#2199\">source</a></span><a href=\"#impl-IntoIterator-for-HashMap%3CK,+V,+S%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, S&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;</h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.into_iter\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#2223\">source</a><a href=\"#method.into_iter\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter\" class=\"fn\">into_iter</a>(self) -&gt; <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.IntoIter.html\" title=\"struct std::collections::hash::map::IntoIter\">IntoIter</a>&lt;K, V&gt;</h4></section></summary><div class=\"docblock\"><p>Creates a consuming iterator, that is, one that moves each key-value\npair out of the map in arbitrary order. The map cannot be used after\ncalling this.</p>\n<h5 id=\"examples\"><a class=\"doc-anchor\" href=\"#examples\">§</a>Examples</h5>\n<div class=\"example-wrap\"><pre class=\"rust rust-example-rendered\"><code><span class=\"kw\">use </span>std::collections::HashMap;\n\n<span class=\"kw\">let </span>map = HashMap::from([\n    (<span class=\"string\">\"a\"</span>, <span class=\"number\">1</span>),\n    (<span class=\"string\">\"b\"</span>, <span class=\"number\">2</span>),\n    (<span class=\"string\">\"c\"</span>, <span class=\"number\">3</span>),\n]);\n\n<span class=\"comment\">// Not possible with .iter()\n</span><span class=\"kw\">let </span>vec: Vec&lt;(<span class=\"kw-2\">&amp;</span>str, i32)&gt; = map.into_iter().collect();</code></pre></div>\n</div></details><details class=\"toggle\" open><summary><section id=\"associatedtype.Item\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.Item\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.tuple.html\">(K, V)</a></h4></section></summary><div class='docblock'>The type of the elements being iterated over.</div></details><details class=\"toggle\" open><summary><section id=\"associatedtype.IntoIter\" class=\"associatedtype trait-impl\"><a href=\"#associatedtype.IntoIter\" class=\"anchor\">§</a><h4 class=\"code-header\">type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter\" class=\"associatedtype\">IntoIter</a> = <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.IntoIter.html\" title=\"struct std::collections::hash::map::IntoIter\">IntoIter</a>&lt;K, V&gt;</h4></section></summary><div class='docblock'>Which kind of iterator are we turning this into?</div></details></div></details>","IntoIterator","quiche_apps::common::ClientIdMap","quiche_apps::common::ClientMap"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-PartialEq-for-HashMap%3CK,+V,+S%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1280-1284\">source</a></span><a href=\"#impl-PartialEq-for-HashMap%3CK,+V,+S%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, S&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a>,\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>,\n    S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html\" title=\"trait core::hash::BuildHasher\">BuildHasher</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.eq\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1286\">source</a><a href=\"#method.eq\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq\" class=\"fn\">eq</a>(&amp;self, other: &amp;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used\nby <code>==</code>.</div></details><details class=\"toggle method-toggle\" open><summary><section id=\"method.ne\" class=\"method trait-impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263\">source</a></span><a href=\"#method.ne\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne\" class=\"fn\">ne</a>(&amp;self, other: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;Rhs</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.</div></details></div></details>","PartialEq","quiche_apps::common::ClientIdMap","quiche_apps::common::ClientMap"],["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-Serialize-for-HashMap%3CK,+V,+H%3E\" class=\"impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/ser/impls.rs.html#480-484\">source</a><a href=\"#impl-Serialize-for-HashMap%3CK,+V,+H%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, H&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, H&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a>,\n    V: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a>,</div></h3></section></summary><div class=\"impl-items\"><details class=\"toggle method-toggle\" open><summary><section id=\"method.serialize\" class=\"method trait-impl\"><a class=\"src rightside\" href=\"https://docs.rs/serde/1.0.197/src/serde/ser/impls.rs.html#480-484\">source</a><a href=\"#method.serialize\" class=\"anchor\">§</a><h4 class=\"code-header\">fn <a href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize\" class=\"fn\">serialize</a>&lt;S&gt;(\n    &amp;self,\n    serializer: S\n) -&gt; <a class=\"enum\" href=\"https://doc.rust-lang.org/nightly/core/result/enum.Result.html\" title=\"enum core::result::Result\">Result</a>&lt;&lt;S as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Ok\" title=\"type serde::ser::Serializer::Ok\">Ok</a>, &lt;S as <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>&gt;::<a class=\"associatedtype\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html#associatedtype.Error\" title=\"type serde::ser::Serializer::Error\">Error</a>&gt;<div class=\"where\">where\n    S: <a class=\"trait\" href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serializer.html\" title=\"trait serde::ser::Serializer\">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href=\"https://docs.rs/serde/1.0.197/serde/ser/trait.Serialize.html#tymethod.serialize\">Read more</a></div></details></div></details>","Serialize","quiche_apps::common::ClientIdMap","quiche_apps::common::ClientMap"],["<section id=\"impl-Eq-for-HashMap%3CK,+V,+S%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.0.0\">1.0.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/collections/hash/map.rs.html#1296-1300\">source</a></span><a href=\"#impl-Eq-for-HashMap%3CK,+V,+S%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, S&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a>,\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a>,\n    S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.BuildHasher.html\" title=\"trait core::hash::BuildHasher\">BuildHasher</a>,</div></h3></section>","Eq","quiche_apps::common::ClientIdMap","quiche_apps::common::ClientMap"],["<section id=\"impl-UnwindSafe-for-HashMap%3CK,+V,+S%3E\" class=\"impl\"><span class=\"rightside\"><span class=\"since\" title=\"Stable since Rust version 1.36.0\">1.36.0</span> · <a class=\"src\" href=\"https://doc.rust-lang.org/nightly/src/std/panic.rs.html#82-86\">source</a></span><a href=\"#impl-UnwindSafe-for-HashMap%3CK,+V,+S%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;K, V, S&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html\" title=\"struct std::collections::hash::map::HashMap\">HashMap</a>&lt;K, V, S&gt;<div class=\"where\">where\n    K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>,\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>,\n    S: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a>,</div></h3></section>","UnwindSafe","quiche_apps::common::ClientIdMap","quiche_apps::common::ClientMap"]]
+};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})()
\ No newline at end of file
diff --git a/type.impl/std/primitive.u64.js b/type.impl/std/primitive.u64.js
new file mode 100644
index 0000000..30bb94a
--- /dev/null
+++ b/type.impl/std/primitive.u64.js
@@ -0,0 +1,3 @@
+(function() {var type_impls = {
+"quiche_apps":[]
+};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})()
\ No newline at end of file